<?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>209540</bug_id>
          
          <creation_ts>2020-03-25 06:36:01 -0700</creation_ts>
          <short_desc>Bump opus to M82</short_desc>
          <delta_ts>2020-03-25 09:00:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1633840</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-25 06:36:01 -0700</bug_when>
    <thetext>Update opus to M82</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633844</commentid>
    <comment_count>1</comment_count>
      <attachid>394487</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-25 06:47:26 -0700</bug_when>
    <thetext>Created attachment 394487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633848</commentid>
    <comment_count>2</comment_count>
      <attachid>394489</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-25 06:57:43 -0700</bug_when>
    <thetext>Created attachment 394489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633890</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-25 08:59:20 -0700</bug_when>
    <thetext>Committed r258984: &lt;https://trac.webkit.org/changeset/258984&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394489.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633891</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-25 09:00:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/60874246&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394487</attachid>
            <date>2020-03-25 06:47:26 -0700</date>
            <delta_ts>2020-03-25 06:57:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209540-20200325144723.patch</filename>
            <type>text/plain</type>
            <size>824851</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1NjJkYjQ1ZDFlMTcxZjQ4OTVmZGRhOGIxNGQ4ZGNiMTI1NmZjZDIyLi5jNmQ1
Nzk1NWUxOTIwODgxYzk0ODgwYmM5Yjc1YzVhMTFlZDc0NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMy0yNSAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQnVtcCBvcHVzIHRvIE04MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvdGhp
cmRfcGFydHkvb3B1czogVXBkYXRlZC4KKwogMjAyMC0wMy0yNSAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVtcCBsaWJ5dXYgdG8gTTgyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvQlVJTEQuZ24KaW5kZXggYjU0Zjg1Njg4MjMwZTNiMTdjMWFkZmUwMTMwZTg1ZmFkNDllMGEy
YS4uYTNjOTg2MTgxZjYzY2JlNjBhNTNjYTljZTllMzc5MTdjYmQ1YmZiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL0JVSUxE
LmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9CVUlMRC5nbgpAQCAtMzUsNiArMzUsNyBAQCBjb25maWcoIm9wdXNfcHJpdmF0ZV9jb25m
aWciKSB7CiAgIGRlZmluZXMgPSBbCiAgICAgIk9QVVNfQlVJTEQiLAogICAgICJPUFVTX0VYUE9S
VD0iLAorICAgICJFTkFCTEVfSEFSREVOSU5HIiwKIAogICAgICMgUHJlZmVyIGFsbG9jYSgpIG92
ZXIgdmFyaWFibGUgbGVuZ3RoIGFycmF5cyB3aGljaCBhcmUgb2Z0ZW4gaW5lZmZpY2llbnQ7CiAg
ICAgIyB0aGUgb3B1cyBjb2RlIHdpbGwgYXV0b21hdGljYWxseSBoYW5kbGUgdGhpcyBjb3JyZWN0
bHkgcGVyLXBsYXRmb3JtLgpAQCAtNjQsNiArNjUsMTEgQEAgY29uZmlnKCJvcHVzX3ByaXZhdGVf
Y29uZmlnIikgewogICAgIF0KICAgfQogCisgIGlmIChpc19vZmZpY2lhbF9idWlsZCkgeworICAg
ICMgRGlzYWJsZSBhc3NlcnRpb24gbWVzc2FnZXMgZnJvbSBFTkFCTEVfSEFSREVOSU5HLCBzYXZp
bmcgMTYuNCBrYi4KKyAgICBkZWZpbmVzICs9IFsgIkNIUk9NSVVNX05PX0xPR0dJTkciIF0KKyAg
fQorCiAgIGlmIChpc19kZWJ1ZykgewogICAgICMgVHVybiBvZmYgYSB3YXJuaW5nIGluIG9wdXNf
ZGVjb2Rlci5jIHdoZW4gY29tcGlsaW5nIHdpdGhvdXQgb3B0aW1pemF0aW9uLgogICAgIGRlZmlu
ZXMgKz0gWyAiT1BVU19XSUxMX0JFX1NMT1ciIF0KQEAgLTE0OCwxMiArMTU0LDIzIEBAIGNvbmZp
Zygib3B1c190ZXN0X2NvbmZpZyIpIHsKICAgfQogfQogCisjIEdOIG9yZGVycyBmbGFncyBvbiBh
IHRhcmdldCBiZWZvcmUgZmxhZ3MgZnJvbSBjb25maWdzLiBUaGUgZGVmYXVsdCBjb25maWcKKyMg
YWRkcyAtV2FsbCwgYW5kIHRoaXMgZmxhZyBoYXMgdG8gYmUgYWZ0ZXIgLVdhbGwgLS0gc28gdGhl
eSBuZWVkIHRvCisjIGNvbWUgZnJvbSBhIGNvbmZpZyBhbmQgY2FuJ3QgYmUgb24gdGhlIHRhcmdl
dCBkaXJlY3RseS4KK2NvbmZpZygib3B1c190ZXN0X25vX25vbm51bGxfY29uZmlnIikgeworICAj
IHRlc3RzIG1heSBwYXNzIGEgbnVsbCBwb2ludGVyIHRvIGZ1bmN0aW9ucyBmb3IgYW4gYXJndW1l
bnQgbWFya2VkIGFzCisgICMgcmVxdWlyaW5nIGEgbm9uLW51bGwgdmFsdWUgYnkgdGhlIG5vbm51
bGwgZnVuY3Rpb24gYXR0cmlidXRlLCBhbmQgZXhwZWN0cworICAjIHRoZSBmdW5jdGlvbiBjYWxs
IHRvIGZhaWwuIERpc2FibGUgdGhlIC1Xbm9ubnVsbCBvcHRpb24gdG8gYXZvaWQgYQorICAjIGNv
bXBpbGF0aW9uIGVycm9yIGlmIC1XZXJyb3IgaXMgc3BlY2lmaWVkLgorICBpZiAoaXNfY2xhbmcp
IHsKKyAgICBjZmxhZ3MgPSBbICItV25vLW5vbm51bGwiIF0KKyAgfQorfQorCiBpZiAodXNlX29w
dXNfYXJtX3J0Y2QpIHsKICAgYWN0aW9uKCJjb252ZXJ0X3J0Y2RfYXNzZW1ibGVyIikgewogICAg
IHNjcmlwdCA9ICJjb252ZXJ0X3J0Y2RfYXNzZW1ibGVyLnB5IgotICAgIG91dHB1dHMgPSBbCi0g
ICAgICAiJHRhcmdldF9nZW5fZGlyL2NlbHRfcGl0Y2hfeGNvcnJfYXJtX2dudS5TIiwKLSAgICBd
CisgICAgb3V0cHV0cyA9IFsgIiR0YXJnZXRfZ2VuX2Rpci9jZWx0X3BpdGNoX3hjb3JyX2FybV9n
bnUuUyIgXQogICAgIGFyZ3MgPSBbCiAgICAgICByZWJhc2VfcGF0aCgiLy90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L2FybS9hcm0yZ251LnBsIiwgcm9vdF9idWlsZF9kaXIpLAogICAgICAgcmVi
YXNlX3BhdGgoIi8vdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9waXRjaF94Y29y
cl9hcm0ucyIsCkBAIC0xNjcsOSArMTg0LDEwIEBAIGlmICh1c2Vfb3B1c194ODZfb3B0aW1pemF0
aW9uKSB7CiAgIHNvdXJjZV9zZXQoIm9wdXNfc3NlNDEiKSB7CiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJzcmMvY2VsdC94ODYvcGl0Y2hfc3NlNF8xLmMiLAotICAgICAgInNyYy9zaWxrL3g4Ni9O
U1FfZGVsX2RlY19zc2UuYyIsCi0gICAgICAic3JjL3NpbGsveDg2L05TUV9zc2UuYyIsCi0gICAg
ICAic3JjL3NpbGsveDg2L1ZBRF9zc2UuYyIsCisgICAgICAic3JjL3NpbGsveDg2L05TUV9kZWxf
ZGVjX3NzZTRfMS5jIiwKKyAgICAgICJzcmMvc2lsay94ODYvTlNRX3NzZTRfMS5jIiwKKyAgICAg
ICJzcmMvc2lsay94ODYvVkFEX3NzZTRfMS5jIiwKKyAgICAgICJzcmMvc2lsay94ODYvVlFfV01h
dF9FQ19zc2U0XzEuYyIsCiAgICAgXQogCiAgICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCkBAIC0yNDAsNiArMjU4LDcgQEAgc3RhdGljX2xp
YnJhcnkoIm9wdXMiKSB7CiAgICAgInNyYy9pbmNsdWRlL29wdXNfY3VzdG9tLmgiLAogICAgICJz
cmMvaW5jbHVkZS9vcHVzX2RlZmluZXMuaCIsCiAgICAgInNyYy9pbmNsdWRlL29wdXNfbXVsdGlz
dHJlYW0uaCIsCisgICAgInNyYy9pbmNsdWRlL29wdXNfcHJvamVjdGlvbi5oIiwKICAgICAic3Jj
L2luY2x1ZGUvb3B1c190eXBlcy5oIiwKICAgICAic3JjL3NpbGsvQTJOTFNGLmMiLAogICAgICJz
cmMvc2lsay9BUEkuaCIsCkBAIC0zNDEsNiArMzYwLDggQEAgc3RhdGljX2xpYnJhcnkoIm9wdXMi
KSB7CiAgICAgInNyYy9zaWxrL3R5cGVkZWYuaCIsCiAgICAgInNyYy9zcmMvYW5hbHlzaXMuYyIs
CiAgICAgInNyYy9zcmMvYW5hbHlzaXMuaCIsCisgICAgInNyYy9zcmMvbWFwcGluZ19tYXRyaXgu
YyIsCisgICAgInNyYy9zcmMvbWFwcGluZ19tYXRyaXguaCIsCiAgICAgInNyYy9zcmMvbWxwLmMi
LAogICAgICJzcmMvc3JjL21scC5oIiwKICAgICAic3JjL3NyYy9tbHBfZGF0YS5jIiwKQEAgLTM1
MCw2ICszNzEsOSBAQCBzdGF0aWNfbGlicmFyeSgib3B1cyIpIHsKICAgICAic3JjL3NyYy9vcHVz
X211bHRpc3RyZWFtLmMiLAogICAgICJzcmMvc3JjL29wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlci5j
IiwKICAgICAic3JjL3NyYy9vcHVzX211bHRpc3RyZWFtX2VuY29kZXIuYyIsCisgICAgInNyYy9z
cmMvb3B1c19wcml2YXRlLmgiLAorICAgICJzcmMvc3JjL29wdXNfcHJvamVjdGlvbl9lbmNvZGVy
LmMiLAorICAgICJzcmMvc3JjL29wdXNfcHJvamVjdGlvbl9kZWNvZGVyLmMiLAogICAgICJzcmMv
c3JjL3JlcGFja2V0aXplci5jIiwKICAgICAic3JjL3NyYy90YW5zaWdfdGFibGUuaCIsCiAgIF0K
QEAgLTM3NCw2ICszOTgsNyBAQCBzdGF0aWNfbGlicmFyeSgib3B1cyIpIHsKICAgaWYgKHVzZV9v
cHVzX3g4Nl9vcHRpbWl6YXRpb24pIHsKICAgICBzb3VyY2VzICs9IFsKICAgICAgICJzcmMvY2Vs
dC94ODYvY2VsdF9scGNfc3NlLmgiLAorICAgICAgInNyYy9jZWx0L3g4Ni9jZWx0X2xwY19zc2U0
XzEuYyIsCiAgICAgICAic3JjL2NlbHQveDg2L3BpdGNoX3NzZS5jIiwKICAgICAgICJzcmMvY2Vs
dC94ODYvcGl0Y2hfc3NlLmgiLAogICAgICAgInNyYy9jZWx0L3g4Ni9waXRjaF9zc2UyLmMiLApA
QCAtNTAyLDkgKzUyNyw3IEBAIHN0YXRpY19saWJyYXJ5KCJvcHVzIikgewogfQogCiBleGVjdXRh
YmxlKCJvcHVzX2NvbXBhcmUiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgInNyYy9zcmMvb3B1c19j
b21wYXJlLmMiLAotICBdCisgIHNvdXJjZXMgPSBbICJzcmMvc3JjL29wdXNfY29tcGFyZS5jIiBd
CiAKICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCiAgIGNvbmZpZ3MgKz0gWwpAQCAtNTE5LDkgKzU0Miw3IEBAIGV4ZWN1dGFibGUoIm9wdXNf
Y29tcGFyZSIpIHsKIH0KIAogZXhlY3V0YWJsZSgib3B1c19kZW1vIikgewotICBzb3VyY2VzID0g
WwotICAgICJzcmMvc3JjL29wdXNfZGVtby5jIiwKLSAgXQorICBzb3VyY2VzID0gWyAic3JjL3Ny
Yy9vcHVzX2RlbW8uYyIgXQogCiAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdzICs9IFsKQEAgLTUzNiwxOSArNTU3LDE2IEBA
IGV4ZWN1dGFibGUoIm9wdXNfZGVtbyIpIHsKIH0KIAogdGVzdCgidGVzdF9vcHVzX2FwaSIpIHsK
LSAgc291cmNlcyA9IFsKLSAgICAic3JjL3Rlc3RzL3Rlc3Rfb3B1c19hcGkuYyIsCi0gIF0KKyAg
c291cmNlcyA9IFsgInNyYy90ZXN0cy90ZXN0X29wdXNfYXBpLmMiIF0KIAogICBjb25maWdzIC09
IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KICAgY29uZmlncyAr
PSBbCiAgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAogICAg
ICI6b3B1c190ZXN0X2NvbmZpZyIsCisgICAgIjpvcHVzX3Rlc3Rfbm9fbm9ubnVsbF9jb25maWci
LAogICBdCiAKLSAgZGVwcyA9IFsKLSAgICAiOm9wdXMiLAotICBdCisgIGRlcHMgPSBbICI6b3B1
cyIgXQogfQogCiB0ZXN0KCJ0ZXN0X29wdXNfZW5jb2RlIikgewpAQCAtNTYzLDQ1ICs1ODEsMjQg
QEAgdGVzdCgidGVzdF9vcHVzX2VuY29kZSIpIHsKICAgICAiOm9wdXNfdGVzdF9jb25maWciLAog
ICBdCiAKLSAgZGVwcyA9IFsKLSAgICAiOm9wdXMiLAotICBdCi19Ci0KLSMgR04gb3JkZXJzIGZs
YWdzIG9uIGEgdGFyZ2V0IGJlZm9yZSBmbGFncyBmcm9tIGNvbmZpZ3MuIFRoZSBkZWZhdWx0IGNv
bmZpZwotIyBhZGRzIC1XYWxsLCBhbmQgdGhpcyBmbGFnIGhhdmUgdG8gYmUgYWZ0ZXIgLVdhbGwg
LS0gc28gdGhleSBuZWVkIHRvCi0jIGNvbWUgZnJvbSBhIGNvbmZpZyBhbmQgY2FuJ3QgYmUgb24g
dGhlIHRhcmdldCBkaXJlY3RseS4KLWNvbmZpZygidGVzdF9vcHVzX2RlY29kZV9jb25maWciKSB7
Ci0gICMgdGVzdF9vcHVzX2RlY29kZSBwYXNzZXMgYSBudWxsIHBvaW50ZXIgdG8gb3B1c19kZWNv
ZGUoKSBmb3IgYW4gYXJndW1lbnQKLSAgIyBtYXJrZWQgYXMgcmVxdWlyaW5nIGEgbm9uLW51bGwg
dmFsdWUgYnkgdGhlIG5vbm51bGwgZnVuY3Rpb24gYXR0cmlidXRlLAotICAjIGFuZCBleHBlY3Rz
IG9wdXNfZGVjb2RlKCkgdG8gZmFpbC4gRGlzYWJsZSB0aGUgLVdub25udWxsIG9wdGlvbiB0byBh
dm9pZAotICAjIGEgY29tcGlsYXRpb24gZXJyb3IgaWYgLVdlcnJvciBpcyBzcGVjaWZpZWQuCi0g
IGlmIChpc19jbGFuZykgewotICAgIGNmbGFncyA9IFsgIi1Xbm8tbm9ubnVsbCIgXQotICB9Cisg
IGRlcHMgPSBbICI6b3B1cyIgXQogfQogCiB0ZXN0KCJ0ZXN0X29wdXNfZGVjb2RlIikgewotICBz
b3VyY2VzID0gWwotICAgICJzcmMvdGVzdHMvdGVzdF9vcHVzX2RlY29kZS5jIiwKLSAgXQorICBz
b3VyY2VzID0gWyAic3JjL3Rlc3RzL3Rlc3Rfb3B1c19kZWNvZGUuYyIgXQogCiAgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdz
ICs9IFsKICAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCiAg
ICAgIjpvcHVzX3Rlc3RfY29uZmlnIiwKLSAgICAiOnRlc3Rfb3B1c19kZWNvZGVfY29uZmlnIiwK
KyAgICAiOm9wdXNfdGVzdF9ub19ub25udWxsX2NvbmZpZyIsCiAgIF0KIAotICBkZXBzID0gWwot
ICAgICI6b3B1cyIsCi0gIF0KKyAgZGVwcyA9IFsgIjpvcHVzIiBdCiB9CiAKIHRlc3QoInRlc3Rf
b3B1c19wYWRkaW5nIikgewotICBzb3VyY2VzID0gWwotICAgICJzcmMvdGVzdHMvdGVzdF9vcHVz
X3BhZGRpbmcuYyIsCi0gIF0KKyAgc291cmNlcyA9IFsgInNyYy90ZXN0cy90ZXN0X29wdXNfcGFk
ZGluZy5jIiBdCiAKICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCiAgIGNvbmZpZ3MgKz0gWwpAQCAtNjA5LDcgKzYwNiwyMyBAQCB0ZXN0KCJ0
ZXN0X29wdXNfcGFkZGluZyIpIHsKICAgICAiOm9wdXNfdGVzdF9jb25maWciLAogICBdCiAKLSAg
ZGVwcyA9IFsKLSAgICAiOm9wdXMiLAotICBdCisgIGRlcHMgPSBbICI6b3B1cyIgXQorfQorCisj
IENvbXBpbGF0aW9uIGZhaWxzIG9uIHdpbmRvd3MgZHVlIHRvIHdzdHJpbmcvc3RyaW5nIG1pc3Rt
YXRjaC4KKyMgVGhpcyBpcyBub3Qgd29ydGggbG9va2luZyBhdCBpdCBzaW5jZSB0aGUgYmVuY2ht
YXJrIGlzIHRhaWxvcmVkIGZvciBhbmRyb2lkLgorIyBJdCBpcyBvayB0byBydW4gaXQgb24gbGlu
dXggdGhvdWdoLCBmb3IgZXhwZXJpbWVudGF0aW9uIHB1cnBvc2UuCitpZiAoIWlzX3dpbikgewor
ICB0ZXN0KCJvcHVzX3Rlc3RzIikgeworICAgIHNvdXJjZXMgPSBbICJ0ZXN0cy9vcHVzX2JlbmNo
bWFyay5jYyIgXQorCisgICAgZGF0YSA9IFsgInRlc3RzL3Jlc291cmNlcy9zcGVlY2hfbW9ub18z
Ml80OGtIei5wY20iIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiOm9wdXMiLAorICAgICAgIi8v
YmFzZSIsCisgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICIvL3Rlc3RpbmcvZ3Rlc3Q6
Z3Rlc3RfbWFpbiIsCisgICAgXQorICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvREVQUyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9ERVBTCmluZGV4IGZmZmNhYTVm
ZmMzNTI1ODI3ZDRjODdiMjJlYTcyMmNlOWMwMjNhOGYuLjMyYmFkNGUxYzY0MjQ4ZTVhNDE1M2Ix
MWIyYTJiMzRlYzQ4Y2ZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9ERVBTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9ERVBTCkBAIC01LDMgKzUsMTEgQEAgaW5j
bHVkZV9ydWxlcyA9IFsKICAgIittaXBzIiwKICAgIit4ODYiLAogXQorCisjIEZvciBvdXIgb3du
IHVuaXQgdGVzdHMuCitzcGVjaWZpY19pbmNsdWRlX3J1bGVzID0geworICAiLiooYmVuY2htYXJr
fHRlc3RzKVwuY2MiOiBbCisgICAgIitiYXNlIiwKKyAgICAiK3Rlc3RpbmciLAorICBdCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvUkVBRE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL1JFQURNRS5jaHJvbWl1bQppbmRleCBlYzk3Y2QyMjI0MzgyMTcz
YTMwODQ3YjExNmI2YmNmYjFlNjAyNGI2Li5iYTY0MDgyODI3OWExODNhOTZhZTllMGVmNDE4NjQ4
ODY5OTFjOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvUkVBRE1FLmNocm9taXVtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9SRUFETUUuY2hyb21pdW0KQEAgLTEs
NiArMSw2IEBACiBOYW1lOiBvcHVzCi1VUkw6IGh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPW9wdXMu
Z2l0O2E9c25hcHNob3Q7aD0zZmU3NDRlYTA0ZmRjYzQxOGZiODVjMmMxMzNkMTMzNzJlYmIwMTli
O3NmPXRnegotVmVyc2lvbjogM2ZlNzQ0ZWEwNGZkY2M0MThmYjg1YzJjMTMzZDEzMzcyZWJiMDE5
YgorVVJMOiBodHRwczovL2dpdC54aXBoLm9yZy8/cD1vcHVzLmdpdAorVmVyc2lvbjogNmQyOWY1
MWE0MGJlNjRlMDNhY2MyNjE5ZjM1YjQ5NzFiYTAwNjE3YwogTGljZW5zZTogQlNECiBMaWNlbnNl
IEZpbGU6IHNyYy9DT1BZSU5HCiBTZWN1cml0eSBDcml0aWNhbDogeWVzCkBAIC0xNCwxMiArMTQs
OCBAQCBlbmNvZGluZy9kZWNvZGluZy4KIExvY2FsIGNoYW5nZXM6CiAqIGNvcHkgLmdpdGlnbm9y
ZSBmcm9tIGh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPW9wdXMuZ2l0O2E9dHJlZQogKiBzZXQgJ3gn
IGZsYWdzOiAiY2htb2QgNzUwIHdpbjMyL2dlbnZlcnNpb24uYmF0IgotKiBBcHBseSBodHRwczov
L2dpdC54aXBoLm9yZy8/cD1vcHVzLmdpdDthPWNvbW1pdGRpZmY7aD00NjU2MDUzNGZjYjU3MTBh
ODk0YTM0MWMyZjk1MjZkYjU4ZmQ3MDg3I3BhdGNoMQotKiBBcHBseSBodHRwczovL2dpdGh1Yi5j
b20veGlwaC9vcHVzL3B1bGwvNzMKLSogQXBwbHkgaHR0cHM6Ly9naXRodWIuY29tL3hpcGgvb3B1
cy9wdWxsLzg3Ci0qIE1ha2Ugc3VyZSBIQl9nYWluIGlzIG5vdCBOYU4gaW4gYW4gYXR0ZW1wdCB0
byBmaXggY2hyb21pdW06ODI2OTE0Ci0qIFNhdHVyYXRlIGFkZCB0byBhdm9pZCBpbnQgb3ZlcmZs
b3cgdG8gZml4IGNocm9taXVtOjg0MjUyOC4gVGhpcyBzaG91bGQgYmUKLSAgcmV2ZXJ0ZWQgd2hl
biB1cGRhdGluZyB0byB2MS4zCi0qIEFwcGx5IGh0dHBzOi8vZ2l0aHViLmNvbS94aXBoL29wdXMv
Y29tbWl0LzRmNGIxMWMyMzk4ZTk2MTM0ZGM2MmVlNzk0YmZlMzNlY2Q2ZTliZDIKLSogQXBwbHkg
aHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9b3B1cy5naXQ7YT1jb21taXQ7aD04MTJhZTNmYjVjNTg5
YWFhZmU3NjFiOGViZjg2YmNiYmI4ZjBlZDc2Ci0qIEFwcGx5IGh0dHBzOi8vZ2l0LnhpcGgub3Jn
Lz9wPW9wdXMuZ2l0O2E9Y29tbWl0O2g9Y2Q1MjllZAorKiByZW1vdmUgYXNzZXJ0aW9uIG1lc3Nh
Z2VzIGluIHJlbGVhc2UgYnVpbGRzIChzZWUgY3JidWcvMTA1MzU3MikKKyogYXBwbHkgcGF0Y2gg
dG8gZml4IGludC1vdmVyZmxvdyBpbiBzaWxrIChodHRwczovL2dpdGxhYi54aXBoLm9yZy94aXBo
L29wdXMvLS9jb21taXQvOTIzYmViZGUpCisKK09wdXMnIG93biB1bml0IHRlc3RzIGFyZSBsb2Nh
dGVkIGluIC4vc3JjL3Rlc3RzCitBZGRpdGlvbmFsIGNocm9taXVtIHRlc3RzIGFyZSBsb2NhdGVk
IGluIC4vdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvLmdpdGlnbm9yZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvLmdpdGlnbm9yZQppbmRleCAzMzEy
N2M5ZmUwYTY2M2I2MDY2OTUzMGI3YmRiNjVhNjdkMWJlY2E1Li4zMWUyOTAxNDNjNjVhY2M0ZDU1
ZTgzZWU2YzJjNTEzODcwMTkxMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjLy5naXRpZ25vcmUKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy8uZ2l0aWdu
b3JlCkBAIC00OSw2ICs0OSw3IEBAIHRlc3RzL3Rlc3Rfb3B1c19hcGkKIHRlc3RzL3Rlc3Rfb3B1
c19kZWNvZGUKIHRlc3RzL3Rlc3Rfb3B1c19lbmNvZGUKIHRlc3RzL3Rlc3Rfb3B1c19wYWRkaW5n
Cit0ZXN0cy90ZXN0X29wdXNfcHJvamVjdGlvbgogY2VsdC9hcm0vYXJtb3B0cy5zCiBjZWx0L2R1
bXBfbW9kZXMvZHVtcF9tb2RlcwogY2VsdC90ZXN0cy90ZXN0X3VuaXRfY3dyczMyCkBAIC03OCw2
ICs3OSwxMSBAQCBzaWxrL2ZpeGVkL3g2NAogc2lsay9mbG9hdC9EZWJ1Zwogc2lsay9mbG9hdC9S
ZWxlYXNlCiBzaWxrL2Zsb2F0L3g2NAorc2lsay90ZXN0cy90ZXN0X3VuaXRfTFBDX2ludl9wcmVk
X2dhaW4KIHNyYy9EZWJ1Zwogc3JjL1JlbGVhc2UKIHNyYy94NjQKKy8qW0JiXXVpbGQqLworLnZz
LworLnZzY29kZS8KK0NNYWtlU2V0dGluZ3MuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4NjkzOWE5YzFhZDExNjQwZWM3MGJkNDdk
NDJjYWE0Mzg0YWRlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCAr
MSw0MjAgQEAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjEpCisKK2luY2x1ZGUo
b3B1c19mdW5jdGlvbnMuY21ha2UpCisKK2dldF9saWJyYXJ5X3ZlcnNpb24oT1BVU19MSUJSQVJZ
X1ZFUlNJT04gT1BVU19MSUJSQVJZX1ZFUlNJT05fTUFKT1IpCittZXNzYWdlKFNUQVRVUyAiT3B1
cyBsaWJyYXJ5IHZlcnNpb246ICR7T1BVU19MSUJSQVJZX1ZFUlNJT059IikKKworZ2V0X3BhY2th
Z2VfdmVyc2lvbihQQUNLQUdFX1ZFUlNJT04pCittZXNzYWdlKFNUQVRVUyAiT3B1cyBwYWNrYWdl
IHZlcnNpb246ICR7UEFDS0FHRV9WRVJTSU9OfSIpCisKK3N0cmluZyhSRUdFWAorICAgICAgIFJF
UExBQ0UgIl4oWzAtOV0rLlswLTldK1xcLj8oWzAtOV0rKT8pLioiCisgICAgICAgICAgICAgICAi
XFwxIgorICAgICAgICAgICAgICAgUFJPSkVDVF9WRVJTSU9OCisgICAgICAgICAgICAgICAke1BB
Q0tBR0VfVkVSU0lPTn0pCittZXNzYWdlKFNUQVRVUyAiT3B1cyBwcm9qZWN0IHZlcnNpb246ICR7
UFJPSkVDVF9WRVJTSU9OfSIpCisKK3Byb2plY3QoT3B1cyBMQU5HVUFHRVMgQyBWRVJTSU9OICR7
UFJPSkVDVF9WRVJTSU9OfSkKK2luY2x1ZGUob3B1c19idWlsZHR5cGUuY21ha2UpCisKK29wdGlv
bihPUFVTX0JVSUxEX1NIQVJFRF9MSUJSQVJZICJCdWlsZCBzaGFyZWQgbGlicmFyeSIgT0ZGKQor
b3B0aW9uKE9QVVNfU1RBQ0tfUFJPVEVDVE9SICJVc2Ugc3RhY2sgcHJvdGVjdGlvbiIgT04pCitv
cHRpb24oT1BVU19VU0VfQUxMT0NBICJVc2UgYWxsb2NhIGZvciBzdGFjayBhcnJheXMgKG9uIG5v
bi1DOTkgY29tcGlsZXJzKSIgT0ZGKQorb3B0aW9uKE9QVVNfQ1VTVE9NX01PREVTICJFbmFibGUg
bm9uLU9wdXMgbW9kZXMsIGUuZy4gNDQuMSBrSHogJiAyXm4gZnJhbWVzIgorICAgICAgIE9GRikK
K29wdGlvbihPUFVTX0JVSUxEX1BST0dSQU1TICJCdWlsZCBwcm9ncmFtcyIgT0ZGKQorb3B0aW9u
KE9QVVNfRklYRURfUE9JTlQKKyAgICAgICAiQ29tcGlsZSBhcyBmaXhlZC1wb2ludCAoZm9yIG1h
Y2hpbmVzIHdpdGhvdXQgYSBmYXN0IGVub3VnaCBGUFUpIiBPRkYpCitvcHRpb24oT1BVU19FTkFC
TEVfRkxPQVRfQVBJCisgICAgICAgIkNvbXBpbGUgd2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgQVBJ
IChmb3IgbWFjaGluZXMgd2l0aCBmbG9hdCBsaWJyYXJ5IgorICAgICAgIE9OKQorb3B0aW9uKE9Q
VVNfSU5TVEFMTF9QS0dfQ09ORklHX01PRFVMRSAiSW5zdGFsbCBQa2dDb25maWcgbW9kdWxlIiBP
TikKK29wdGlvbihPUFVTX0lOU1RBTExfQ01BS0VfQ09ORklHX01PRFVMRSAiSW5zdGFsbCBDTWFr
ZSBwYWNrYWdlIGNvbmZpZyBtb2R1bGUiCisgICAgICAgT04pCisKK2luY2x1ZGUob3B1c19jb25m
aWcuY21ha2UpCitpbmNsdWRlKG9wdXNfc291cmNlcy5jbWFrZSkKK2luY2x1ZGUoR05VSW5zdGFs
bERpcnMpCitpbmNsdWRlKENNYWtlRGVwZW5kZW50T3B0aW9uKQoraW5jbHVkZShGZWF0dXJlU3Vt
bWFyeSkKKworaWYoT1BVU19CVUlMRF9TSEFSRURfTElCUkFSWSBPUiBCVUlMRF9TSEFSRURfTElC
UykKKyAgIyBHbG9iYWwgZmxhZyB0byBjYXVzZSBhZGRfbGlicmFyeSgpIHRvIGNyZWF0ZSBzaGFy
ZWQgbGlicmFyaWVzIGlmIG9uLgorICBzZXQoQlVJTERfU0hBUkVEX0xJQlMgT04pCisgIHNldChP
UFVTX0JVSUxEX1NIQVJFRF9MSUJSQVJZIE9OKQorZW5kaWYoKQorCitpZihPUFVTX1NUQUNLX1BS
T1RFQ1RPUikKKyAgaWYoTk9UIE1TVkMpICMgR0Mgb24gYnkgZGVmYXVsdCBvbiBNU1ZDCisgICAg
Y2hlY2tfYW5kX3NldF9mbGFnKFNUQUNLX1BST1RFQ1RJT05fU1RST05HIC1mc3RhY2stcHJvdGVj
dG9yLXN0cm9uZykKKyAgZW5kaWYoKQorZWxzZSgpCisgIGlmKE1TVkMpCisgICAgY2hlY2tfYW5k
X3NldF9mbGFnKEJVRkZFUl9TRUNVUklUWV9DSEVDSyAvR1MtKQorICBlbmRpZigpCitlbmRpZigp
CisKK2lmKE9QVVNfQ1BVX1g4NiBPUiBPUFVTX0NQVV9YNjQpCisgIGNtYWtlX2RlcGVuZGVudF9v
cHRpb24oT1BVU19YODZfTUFZX0hBVkVfU1NFCisgICAgICAgICAgICAgICAgICAgICAgICAgIkRv
ZXMgcnVudGltZSBjaGVjayBmb3IgU1NFMSBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAg
ICAgIE9OCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNTRTFfU1VQUE9SVEVEIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIE9GRikKKyAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVTX1g4
Nl9NQVlfSEFWRV9TU0UyCisgICAgICAgICAgICAgICAgICAgICAgICAgIkRvZXMgcnVudGltZSBj
aGVjayBmb3IgU1NFMiBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgIE9OCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIlNTRTJfU1VQUE9SVEVEIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIE9GRikKKyAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVTX1g4Nl9NQVlfSEFWRV9T
U0U0XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRG9lcyBydW50aW1lIGNoZWNrIGZvciBT
U0U0LjEgc3VwcG9ydCIKKyAgICAgICAgICAgICAgICAgICAgICAgICBPTgorICAgICAgICAgICAg
ICAgICAgICAgICAgICJTU0U0XzFfU1VQUE9SVEVEIgorICAgICAgICAgICAgICAgICAgICAgICAg
IE9GRikKKyAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVTX1g4Nl9NQVlfSEFWRV9BVlgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAiRG9lcyBydW50aW1lIGNoZWNrIGZvciBBVlggc3VwcG9y
dCIKKyAgICAgICAgICAgICAgICAgICAgICAgICBPTgorICAgICAgICAgICAgICAgICAgICAgICAg
ICJBVlhfU1VQUE9SVEVEIgorICAgICAgICAgICAgICAgICAgICAgICAgIE9GRikKKworICBpZihP
UFVTX0NQVV9YNjQpICMgQXNzdW1lIDY0IGJpdCBoYXMgU1NFMiBzdXBwb3J0CisgICAgY21ha2Vf
ZGVwZW5kZW50X29wdGlvbihPUFVTX1g4Nl9QUkVTVU1FX1NTRQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkFzc3VtZSB0YXJnZXQgQ1BVIGhhcyBTU0UxIHN1cHBvcnQiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9QVVNfWDg2
X01BWV9IQVZFX1NTRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9GRikKKyAgICBjbWFr
ZV9kZXBlbmRlbnRfb3B0aW9uKE9QVVNfWDg2X1BSRVNVTUVfU1NFMgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkFzc3VtZSB0YXJnZXQgQ1BVIGhhcyBTU0UyIHN1cHBvcnQiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9QVVNf
WDg2X01BWV9IQVZFX1NTRTIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPRkYpCisgIGVs
c2UoKQorICAgIGNtYWtlX2RlcGVuZGVudF9vcHRpb24oT1BVU19YODZfUFJFU1VNRV9TU0UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJBc3N1bWUgdGFyZ2V0IENQVSBoYXMgU1NFMSBzdXBw
b3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiT1BVU19YODZfTUFZX0hBVkVfU1NFIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT0ZGKQorICAgIGNtYWtlX2RlcGVuZGVudF9vcHRpb24oT1BVU19YODZfUFJFU1VNRV9TU0Uy
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXNzdW1lIHRhcmdldCBDUFUgaGFzIFNTRTIg
c3VwcG9ydCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9GRgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk9QVVNfWDg2X01BWV9IQVZFX1NTRTIiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPRkYpCisgIGVuZGlmKCkKKyAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVTX1g4
Nl9QUkVTVU1FX1NTRTRfMQorICAgICAgICAgICAgICAgICAgICAgICAgICJBc3N1bWUgdGFyZ2V0
IENQVSBoYXMgU1NFNC4xIHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIk9QVVNfWDg2X01BWV9IQVZFX1NTRTRfMSIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBPRkYpCisgIGNtYWtlX2RlcGVuZGVudF9vcHRpb24oT1BVU19Y
ODZfUFJFU1VNRV9BVlgKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQXNzdW1lIHRhcmdldCBD
UFUgaGFzIEFWWCBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgIE9GRgorICAgICAg
ICAgICAgICAgICAgICAgICAgICJPUFVTX1g4Nl9NQVlfSEFWRV9BVlgiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgT0ZGKQorZW5kaWYoKQorCitzZXRfcGFja2FnZV9wcm9wZXJ0aWVzKEdpdAor
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgICAgICAgICAgICAgICAg
IFRZUEUKKyAgICAgICAgICAgICAgICAgICAgICAgUkVRVUlSRUQKKyAgICAgICAgICAgICAgICAg
ICAgICAgREVTQ1JJUFRJT04KKyAgICAgICAgICAgICAgICAgICAgICAgImZhc3QsIHNjYWxhYmxl
LCBkaXN0cmlidXRlZCByZXZpc2lvbiBjb250cm9sIHN5c3RlbSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgVVJMCisgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2dpdC1zY20uY29tLyIK
KyAgICAgICAgICAgICAgICAgICAgICAgUFVSUE9TRQorICAgICAgICAgICAgICAgICAgICAgICAi
cmVxdWlyZWQgdG8gc2V0IHVwIHBhY2thZ2UgdmVyc2lvbiIpCisKK2FkZF9mZWF0dXJlX2luZm8o
QlVJTERfU0hBUkVEX0xJQlJBUlkgT1BVU19CVUlMRF9TSEFSRURfTElCUkFSWSAiQnVpbGQgc2hh
cmVkIGxpYnJhcnkiKQorYWRkX2ZlYXR1cmVfaW5mbyhTVEFDS19QUk9URUNUT1IgT1BVU19TVEFD
S19QUk9URUNUT1IgIlVzZSBzdGFjayBwcm90ZWN0aW9uIikKK2FkZF9mZWF0dXJlX2luZm8oVVNF
X0FMTE9DQSBPUFVTX1VTRV9BTExPQ0EKKyAgICAgICAgICAgICAgICAgIlVzZSBhbGxvY2EgZm9y
IHN0YWNrIGFycmF5cyAob24gbm9uLUM5OSBjb21waWxlcnMpIikKK2FkZF9mZWF0dXJlX2luZm8o
Q1VTVE9NX01PREVTIE9QVVNfQ1VTVE9NX01PREVTCisgICAgICAgICAgICAgICAgICJFbmFibGUg
bm9uLU9wdXMgbW9kZXMsIGUuZy4gNDQuMSBrSHogJiAyXm4gZnJhbWVzIikKK2FkZF9mZWF0dXJl
X2luZm8oQlVJTERfUFJPR1JBTVMgT1BVU19CVUlMRF9QUk9HUkFNUyAiQnVpbGQgcHJvZ3JhbXMi
KQorYWRkX2ZlYXR1cmVfaW5mbygKKyAgRklYRURfUE9JTlQgT1BVU19GSVhFRF9QT0lOVAorICAi
Y29tcGlsZSBhcyBmaXhlZC1wb2ludCAoZm9yIG1hY2hpbmVzIHdpdGhvdXQgYSBmYXN0IGVub3Vn
aCBGUFUpIikKK2FkZF9mZWF0dXJlX2luZm8oCisgIEZMT0FUX0FQSSBPUFVTX0VOQUJMRV9GTE9B
VF9BUEkKKyAgImNvbXBpbGUgd2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgQVBJIChmb3IgbWFjaGlu
ZXMgd2l0aCBmbG9hdCBsaWJyYXJ5KSIpCisKK2FkZF9mZWF0dXJlX2luZm8oSU5TVEFMTF9QS0df
Q09ORklHX01PRFVMRSBPUFVTX0lOU1RBTExfUEtHX0NPTkZJR19NT0RVTEUKKyAgICAgICAgICAg
ICAgICAgImluc3RhbGwgUGtnQ29uZmlnIG1vZHVsZSIpCithZGRfZmVhdHVyZV9pbmZvKElOU1RB
TExfQ01BS0VfQ09ORklHX01PRFVMRSBPUFVTX0lOU1RBTExfQ01BS0VfQ09ORklHX01PRFVMRQor
ICAgICAgICAgICAgICAgICAiaW5zdGFsbCBDTWFrZSBwYWNrYWdlIGNvbmZpZyBtb2R1bGUiKQor
CitpZihPUFVTX0NQVV9YODYgT1IgT1BVU19DUFVfWDY0KQorICBhZGRfZmVhdHVyZV9pbmZvKFg4
Nl9NQVlfSEFWRV9TU0UgT1BVU19YODZfTUFZX0hBVkVfU1NFCisgICAgICAgICAgICAgICAgICAg
ImRvZXMgcnVudGltZSBjaGVjayBmb3IgU1NFMSBzdXBwb3J0IikKKyAgYWRkX2ZlYXR1cmVfaW5m
byhYODZfTUFZX0hBVkVfU1NFMiBPUFVTX1g4Nl9NQVlfSEFWRV9TU0UyCisgICAgICAgICAgICAg
ICAgICAgImRvZXMgcnVudGltZSBjaGVjayBmb3IgU1NFMiBzdXBwb3J0IikKKyAgYWRkX2ZlYXR1
cmVfaW5mbyhYODZfTUFZX0hBVkVfU1NFNF8xIE9QVVNfWDg2X01BWV9IQVZFX1NTRTRfMQorICAg
ICAgICAgICAgICAgICAgICJkb2VzIHJ1bnRpbWUgY2hlY2sgZm9yIFNTRTRfMSBzdXBwb3J0IikK
KyAgYWRkX2ZlYXR1cmVfaW5mbyhYODZfTUFZX0hBVkVfQVZYIE9QVVNfWDg2X01BWV9IQVZFX0FW
WAorICAgICAgICAgICAgICAgICAgICJkb2VzIHJ1bnRpbWUgY2hlY2sgZm9yIEFWWCBzdXBwb3J0
IikKKyAgYWRkX2ZlYXR1cmVfaW5mbyhYODZfUFJFU1VNRV9TU0UgT1BVU19YODZfUFJFU1VNRV9T
U0UKKyAgICAgICAgICAgICAgICAgICAiYXNzdW1lIHRhcmdldCBDUFUgaGFzIFNTRTEgc3VwcG9y
dCIpCisgIGFkZF9mZWF0dXJlX2luZm8oWDg2X1BSRVNVTUVfU1NFMiBPUFVTX1g4Nl9QUkVTVU1F
X1NTRTIKKyAgICAgICAgICAgICAgICAgICAiYXNzdW1lIHRhcmdldCBDUFUgaGFzIFNTRTIgc3Vw
cG9ydCIpCisgIGFkZF9mZWF0dXJlX2luZm8oWDg2X1BSRVNVTUVfU1NFNF8xIE9QVVNfWDg2X1BS
RVNVTUVfU1NFNF8xCisgICAgICAgICAgICAgICAgICAgImFzc3VtZSB0YXJnZXQgQ1BVIGhhcyBT
U0U0XzEgc3VwcG9ydCIpCisgIGFkZF9mZWF0dXJlX2luZm8oWDg2X1BSRVNVTUVfQVZYIE9QVVNf
WDg2X1BSRVNVTUVfQVZYCisgICAgICAgICAgICAgICAgICAgImFzc3VtZSB0YXJnZXQgQ1BVIGhh
cyBBVlggc3VwcG9ydCIpCitlbmRpZigpCisKK2ZlYXR1cmVfc3VtbWFyeShXSEFUIEFMTCkKKwor
YWRkX2xpYnJhcnkob3B1cyAke29wdXNfc291cmNlc30gJHtvcHVzX3NvdXJjZXNfZmxvYXR9KQor
CithZGRfbGlicmFyeShPcHVzOjpvcHVzIEFMSUFTIG9wdXMpCisKK3NldChPcHVzX1BVQkxJQ19I
RUFERVIKKyAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZS9vcHVzLmgKKyAg
ICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZS9vcHVzX2N1c3RvbS5oCisgICAg
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUvb3B1c19kZWZpbmVzLmgKKyAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZS9vcHVzX211bHRpc3RyZWFtLmgKKyAg
ICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZS9vcHVzX3Byb2plY3Rpb24uaAor
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlL29wdXNfdHlwZXMuaCkKKwor
c2V0X3RhcmdldF9wcm9wZXJ0aWVzKG9wdXMKKyAgICAgICAgICAgICAgICAgICAgICBQUk9QRVJU
SUVTIFNPVkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtPUFVTX0xJ
QlJBUllfVkVSU0lPTl9NQUpPUn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZF
UlNJT04KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7T1BVU19MSUJSQVJZX1ZF
UlNJT059CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVUJMSUNfSEVBREVSCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHtPcHVzX1BVQkxJQ19IRUFERVJ9IikK
KwordGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoCisgIG9wdXMKKyAgUFVCTElDICQ8QlVJTERf
SU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgorICAgICAgICAg
JDxJTlNUQUxMX0lOVEVSRkFDRToke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0+CisgIFBSSVZB
VEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9CisgICAgICAgICAgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9CisgICAgICAgICAgY2VsdAorICAgICAgICAgIHNpbGspCisKK3RhcmdldF9s
aW5rX2xpYnJhcmllcyhvcHVzIFBSSVZBVEUgJHtPUFVTX1JFUVVJUkVEX0xJQlJBUklFU30pCit0
YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUgT1BVU19CVUlMRCBFTkFCTEVf
SEFSREVOSU5HKQorCitpZihOT1QgTVNWQykKKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMo
b3B1cyBQUklWQVRFIF9GT1JUSUZZX1NPVVJDRT0yKQorZW5kaWYoKQorCisjIEl0IGlzIHN0cm9u
Z2x5IHJlY29tbWVuZGVkIHRvIHVuY29tbWVudCBvbmUgb2YgdGhlc2UgVkFSX0FSUkFZUzogVXNl
IEM5OQorIyB2YXJpYWJsZS1sZW5ndGggYXJyYXlzIGZvciBzdGFjayBhbGxvY2F0aW9uIFVTRV9B
TExPQ0E6IFVzZSBhbGxvY2EoKSBmb3Igc3RhY2sKKyMgYWxsb2NhdGlvbiBJZiBub25lIGlzIGRl
ZmluZWQsIHRoZW4gdGhlIGZhbGxiYWNrIGlzIGEgbm9uLXRocmVhZHNhZmUgZ2xvYmFsCisjIGFy
cmF5CitpZihPUFVTX1VTRV9BTExPQ0EgT1IgTVNWQykKKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5p
dGlvbnMob3B1cyBQUklWQVRFIFVTRV9BTExPQ0EpCitlbHNlKCkKKyAgdGFyZ2V0X2NvbXBpbGVf
ZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIFZBUl9BUlJBWVMpCitlbmRpZigpCisKK2lmKE9QVVNf
Q1VTVE9NX01PREVTKQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUg
Q1VTVE9NX01PREVTKQorZW5kaWYoKQorCitpZihCVUlMRF9TSEFSRURfTElCUykKKyAgaWYoV0lO
MzIpCisgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIERMTF9FWFBP
UlQpCisgIGVsc2UoKQorICAgIGluY2x1ZGUoQ2hlY2tDQ29tcGlsZXJGbGFnKQorICAgIGNoZWNr
X2NfY29tcGlsZXJfZmxhZygtZnZpc2liaWxpdHk9aGlkZGVuIENPTVBJTEVSX0hBU19ISURERU5f
VklTSUJJTElUWSkKKyAgICBpZihDT01QSUxFUl9IQVNfSElEREVOX1ZJU0lCSUxJVFkpCisgICAg
ICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob3B1cyBQUk9QRVJUSUVTIENfVklTSUJJTElUWV9QUkVT
RVQgaGlkZGVuKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kaWYoKQorCithZGRfc291cmNl
c19ncm91cChvcHVzIHNpbGsgJHtzaWxrX3NvdXJjZXN9KQorYWRkX3NvdXJjZXNfZ3JvdXAob3B1
cyBjZWx0ICR7Y2VsdF9zb3VyY2VzfSkKKworaWYoT1BVU19GSVhFRF9QT0lOVCkKKyAgYWRkX3Nv
dXJjZXNfZ3JvdXAob3B1cyBzaWxrICR7c2lsa19zb3VyY2VzX2ZpeGVkfSkKKyAgdGFyZ2V0X2lu
Y2x1ZGVfZGlyZWN0b3JpZXMob3B1cyBQUklWQVRFIHNpbGsvZml4ZWQpCisgIHRhcmdldF9jb21w
aWxlX2RlZmluaXRpb25zKG9wdXMgUFJJVkFURSBGSVhFRF9QT0lOVD0xKQorZWxzZSgpCisgIGFk
ZF9zb3VyY2VzX2dyb3VwKG9wdXMgc2lsayAke3NpbGtfc291cmNlc19mbG9hdH0pCisgIHRhcmdl
dF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9wdXMgUFJJVkFURSBzaWxrL2Zsb2F0KQorZW5kaWYoKQor
CitpZihOT1QgT1BVU19FTkFCTEVfRkxPQVRfQVBJKQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0
aW9ucyhvcHVzIFBSSVZBVEUgRElTQUJMRV9GTE9BVF9BUEkpCitlbmRpZigpCisKK2lmKE9QVVNf
WDg2X01BWV9IQVZFX1NTRQorICAgT1IgT1BVU19YODZfTUFZX0hBVkVfU1NFMgorICAgT1IgT1BV
U19YODZfTUFZX0hBVkVfU1NFNF8xCisgICBPUiBPUFVTX1g4Nl9NQVlfSEFWRV9BVlgpCisgIHRh
cmdldF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJVkFURSBPUFVTX0hBVkVfUlRDRCkKK2Vu
ZGlmKCkKKworaWYoT1BVU19YODZfTUFZX0hBVkVfU1NFKQorICBhZGRfc291cmNlc19ncm91cChv
cHVzIGNlbHQgJHtjZWx0X3NvdXJjZXNfc3NlfSkKKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlv
bnMob3B1cyBQUklWQVRFIE9QVVNfWDg2X01BWV9IQVZFX1NTRSkKK2VuZGlmKCkKK2lmKE9QVVNf
WDg2X1BSRVNVTUVfU1NFKQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZB
VEUgT1BVU19YODZfUFJFU1VNRV9TU0UpCitlbmRpZigpCisKK2lmKE9QVVNfWDg2X01BWV9IQVZF
X1NTRTIpCisgIGFkZF9zb3VyY2VzX2dyb3VwKG9wdXMgY2VsdCAke2NlbHRfc291cmNlc19zc2Uy
fSkKKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIE9QVVNfWDg2X01B
WV9IQVZFX1NTRTIpCitlbmRpZigpCitpZihPUFVTX1g4Nl9QUkVTVU1FX1NTRTIpCisgIHRhcmdl
dF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJVkFURSBPUFVTX1g4Nl9QUkVTVU1FX1NTRTIp
CitlbmRpZigpCisKK2lmKE9QVVNfWDg2X01BWV9IQVZFX1NTRSkKKyAgYWRkX3NvdXJjZXNfZ3Jv
dXAob3B1cyBjZWx0ICR7Y2VsdF9zb3VyY2VzX3NzZTRfMX0pCisgIGFkZF9zb3VyY2VzX2dyb3Vw
KG9wdXMgc2lsayAke3NpbGtfc291cmNlc19zc2U0XzF9KQorICBpZihPUFVTX0ZJWEVEX1BPSU5U
KQorICAgIGFkZF9zb3VyY2VzX2dyb3VwKG9wdXMgc2lsayAke3NpbGtfc291cmNlc19maXhlZF9z
c2U0XzF9KQorICBlbmRpZigpCisgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJ
VkFURSBPUFVTX1g4Nl9NQVlfSEFWRV9TU0U0XzEpCitlbmRpZigpCitpZihPUFVTX1g4Nl9QUkVT
VU1FX1NTRTRfMSkKKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIE9Q
VVNfWDg2X1BSRVNVTUVfU1NFNF8xKQorZW5kaWYoKQorCitpZihDTUFLRV9TWVNURU1fUFJPQ0VT
U09SIE1BVENIRVMgIihhcm12Ny1hKSIpCisgIGFkZF9zb3VyY2VzX2dyb3VwKG9wdXMgY2VsdCAk
e2NlbHRfc291cmNlc19hcm19KQorZW5kaWYoKQorCitpZihDT01QSUxFUl9TVVBQT1JUX05FT04g
QU5EIE9QVVNfVVNFX05FT04pCisKKyAgaWYoT1BVU19NQVlfSEFWRV9ORU9OKQorICAgIGlmKFJV
TlRJTUVfQ1BVX0NBUEFCSUxJVFlfREVURUNUSU9OKQorICAgICAgbWVzc2FnZShTVEFUVVMgIk9Q
VVNfTUFZX0hBVkVfTkVPTiBlbmFibGluZyBydW50aW1lIGRldGVjdGlvbiIpCisgICAgICB0YXJn
ZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUgT1BVU19IQVZFX1JUQ0QpCisgICAg
ZWxzZSgpCisgICAgICBtZXNzYWdlKEVSUk9SICJSdW50aW1lIGNwdSBjYXBhYmlsaXR5IGRldGVj
dGlvbiBuZWVkZWQgZm9yIE1BWV9IQVZFX05FT04iKQorICAgIGVuZGlmKCkKKyAgICAjIERvIHJ1
bnRpbWUgY2hlY2sgZm9yIE5FT04KKyAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVz
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJVkFURQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE9QVVNfQVJNX01BWV9IQVZFX05FT04KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPUFVTX0FSTV9NQVlfSEFWRV9ORU9OX0lOVFIpCisgIGVuZGlmKCkKKwor
ICBhZGRfc291cmNlc19ncm91cChvcHVzIGNlbHQgJHtjZWx0X3NvdXJjZXNfYXJtX25lb25faW50
cn0pCisgIGFkZF9zb3VyY2VzX2dyb3VwKG9wdXMgc2lsayAke3NpbGtfc291cmNlc19hcm1fbmVv
bl9pbnRyfSkKKworICAjIHNpbGsgYXJtIG5lb24gZGVwZW5kcyBvbiBtYWluX0ZpeC5oCisgIHRh
cmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9wdXMgUFJJVkFURSBzaWxrL2ZpeGVkKQorCisgIGlm
KE9QVVNfRklYRURfUE9JTlQpCisgICAgYWRkX3NvdXJjZXNfZ3JvdXAob3B1cyBzaWxrICR7c2ls
a19zb3VyY2VzX2ZpeGVkX2FybV9uZW9uX2ludHJ9KQorICBlbmRpZigpCisKKyAgaWYoT1BVU19Q
UkVTVU1FX05FT04pCisgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSSVZBVEUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPUFVTX0FSTV9QUkVTVU1FX05FT04KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPUFVTX0FSTV9QUkVTVU1FX05FT05fSU5UUikKKyAgZW5kaWYoKQorZW5kaWYoKQorCitp
bnN0YWxsKFRBUkdFVFMgb3B1cworICAgICAgICBFWFBPUlQgT3B1c1RhcmdldHMKKyAgICAgICAg
QVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICAgICAgICBMSUJS
QVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgICAgICAgIFJVTlRJTUUg
REVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgICAgICAgUFVCTElDX0hFQURF
UiBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vb3B1cykKKworaWYoT1BV
U19JTlNUQUxMX1BLR19DT05GSUdfTU9EVUxFKQorICBzZXQocHJlZml4ICR7Q01BS0VfSU5TVEFM
TF9QUkVGSVh9KQorICBzZXQoZXhlY19wcmVmaXggJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0pCisg
IHNldChsaWJkaXIgJHtDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSfSkKKyAgc2V0KGluY2x1ZGVk
aXIgJHtDTUFLRV9JTlNUQUxMX0ZVTExfSU5DTFVERURJUn0pCisgIHNldChWRVJTSU9OICR7UEFD
S0FHRV9WRVJTSU9OfSkKKyAgaWYoSEFWRV9MSUJNKQorICAgIHNldChMSUJNICItbG0iKQorICBl
bmRpZigpCisgIGNvbmZpZ3VyZV9maWxlKG9wdXMucGMuaW4gb3B1cy5wYykKKyAgaW5zdGFsbChG
SUxFUyAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vb3B1cy5wYworICAgICAgICAgIERFU1RJ
TkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZykKK2VuZGlmKCkKKworaWYo
T1BVU19JTlNUQUxMX0NNQUtFX0NPTkZJR19NT0RVTEUpCisgIHNldChDTUFLRV9JTlNUQUxMX1BB
Q0tBR0VESVIgJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvJHtQUk9KRUNUX05BTUV9KQor
ICBpbnN0YWxsKEVYUE9SVCBPcHVzVGFyZ2V0cworICAgICAgICAgIE5BTUVTUEFDRSBPcHVzOjoK
KyAgICAgICAgICBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfUEFDS0FHRURJUn0pCisKKyAg
aW5jbHVkZShDTWFrZVBhY2thZ2VDb25maWdIZWxwZXJzKQorCisgIHNldChJTkNMVURFX0lOU1RB
TExfRElSICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfSkKKyAgY29uZmlndXJlX3BhY2thZ2Vf
Y29uZmlnX2ZpbGUoT3B1c0NvbmZpZy5jbWFrZS5pbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPcHVzQ29uZmlnLmNtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElOU1RBTExfREVTVElOQVRJT04KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtD
TUFLRV9JTlNUQUxMX1BBQ0tBR0VESVJ9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBBVEhfVkFSUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNMVURFX0lOU1RB
TExfRElSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOU1RBTExfUFJFRklYCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9KQor
ICB3cml0ZV9iYXNpY19wYWNrYWdlX3ZlcnNpb25fZmlsZShPcHVzQ29uZmlnVmVyc2lvbi5jbWFr
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OICR7UFJPSkVDVF9W
RVJTSU9OfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT01QQVRJQklMSVRZ
IFNhbWVNYWpvclZlcnNpb24pCisgIGluc3RhbGwoRklMRVMgJHtDTUFLRV9DVVJSRU5UX0JJTkFS
WV9ESVJ9L09wdXNDb25maWcuY21ha2UKKyAgICAgICAgICAgICAgICAke0NNQUtFX0NVUlJFTlRf
QklOQVJZX0RJUn0vT3B1c0NvbmZpZ1ZlcnNpb24uY21ha2UKKyAgICAgICAgICBERVNUSU5BVElP
TiAke0NNQUtFX0lOU1RBTExfUEFDS0FHRURJUn0pCitlbmRpZigpCisKK2lmKE9QVVNfQlVJTERf
UFJPR1JBTVMpCisgICMgZGVtbworICBpZihPUFVTX0NVU1RPTV9NT0RFUykKKyAgICBhZGRfZXhl
Y3V0YWJsZShvcHVzX2N1c3RvbV9kZW1vICR7b3B1c19jdXN0b21fZGVtb19zb3VyY2VzfSkKKyAg
ICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhvcHVzX2N1c3RvbV9kZW1vCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0p
CisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKG9wdXNfY3VzdG9tX2RlbW8gUFJJVkFURSBvcHVz
KQorICBlbmRpZigpCisKKyAgYWRkX2V4ZWN1dGFibGUob3B1c19kZW1vICR7b3B1c19kZW1vX3Nv
dXJjZXN9KQorICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhvcHVzX2RlbW8gUFJJVkFURSAk
e0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0pCisgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVz
KG9wdXNfZGVtbyBQUklWQVRFIHNpbGspICMgZGVidWcuaAorICB0YXJnZXRfaW5jbHVkZV9kaXJl
Y3RvcmllcyhvcHVzX2RlbW8gUFJJVkFURSBjZWx0KSAjIGFyY2guaAorICB0YXJnZXRfbGlua19s
aWJyYXJpZXMob3B1c19kZW1vIFBSSVZBVEUgb3B1cykKKworICAjIGNvbXBhcmUKKyAgYWRkX2V4
ZWN1dGFibGUob3B1c19jb21wYXJlICR7b3B1c19jb21wYXJlX3NvdXJjZXN9KQorICB0YXJnZXRf
aW5jbHVkZV9kaXJlY3RvcmllcyhvcHVzX2NvbXBhcmUgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRf
QklOQVJZX0RJUn0pCisgIHRhcmdldF9saW5rX2xpYnJhcmllcyhvcHVzX2NvbXBhcmUgUFJJVkFU
RSBvcHVzKQorZW5kaWYoKQorCitpZihCVUlMRF9URVNUSU5HKQorICBlbmFibGVfdGVzdGluZygp
CisKKyAgIyB0ZXN0cworICBhZGRfZXhlY3V0YWJsZSh0ZXN0X29wdXNfZGVjb2RlICR7dGVzdF9v
cHVzX2RlY29kZV9zb3VyY2VzfSkKKyAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXModGVzdF9v
cHVzX2RlY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklWQVRFICR7Q01BS0Vf
Q1VSUkVOVF9CSU5BUllfRElSfSkKKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfb3B1c19k
ZWNvZGUgUFJJVkFURSBvcHVzKQorICBpZihPUFVTX0ZJWEVEX1BPSU5UKQorICAgIHRhcmdldF9j
b21waWxlX2RlZmluaXRpb25zKHRlc3Rfb3B1c19kZWNvZGUgUFJJVkFURSBESVNBQkxFX0ZMT0FU
X0FQSSkKKyAgZW5kaWYoKQorICBhZGRfdGVzdCh0ZXN0X29wdXNfZGVjb2RlIHRlc3Rfb3B1c19k
ZWNvZGUpCisKKyAgYWRkX2V4ZWN1dGFibGUodGVzdF9vcHVzX3BhZGRpbmcgJHt0ZXN0X29wdXNf
cGFkZGluZ19zb3VyY2VzfSkKKyAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXModGVzdF9vcHVz
X3BhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJVkFURSAke0NNQUtFX0NV
UlJFTlRfQklOQVJZX0RJUn0pCisgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0X29wdXNfcGFk
ZGluZyBQUklWQVRFIG9wdXMpCisgIGFkZF90ZXN0KHRlc3Rfb3B1c19wYWRkaW5nIHRlc3Rfb3B1
c19wYWRkaW5nKQorCisgIGlmKE5PVCBCVUlMRF9TSEFSRURfTElCUykKKyAgICAjIGRpc2FibGUg
dGVzdHMgdGhhdCBkZXBlbmRzIG9uIHByaXZhdGUgQVBJIHdoZW4gYnVpbGRpbmcgc2hhcmVkIGxp
YgorICAgIGFkZF9leGVjdXRhYmxlKHRlc3Rfb3B1c19hcGkgJHt0ZXN0X29wdXNfYXBpX3NvdXJj
ZXN9KQorICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKHRlc3Rfb3B1c19hcGkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllf
RElSfSBjZWx0KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0X29wdXNfYXBpIFBSSVZB
VEUgb3B1cykKKyAgICBpZihPUFVTX0ZJWEVEX1BPSU5UKQorICAgICAgdGFyZ2V0X2NvbXBpbGVf
ZGVmaW5pdGlvbnModGVzdF9vcHVzX2FwaSBQUklWQVRFIERJU0FCTEVfRkxPQVRfQVBJKQorICAg
IGVuZGlmKCkKKyAgICBhZGRfdGVzdCh0ZXN0X29wdXNfYXBpIHRlc3Rfb3B1c19hcGkpCisKKyAg
ICBhZGRfZXhlY3V0YWJsZSh0ZXN0X29wdXNfZW5jb2RlICR7dGVzdF9vcHVzX2VuY29kZV9zb3Vy
Y2VzfSkKKyAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcyh0ZXN0X29wdXNfZW5jb2RlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfQklO
QVJZX0RJUn0gY2VsdCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXModGVzdF9vcHVzX2VuY29k
ZSBQUklWQVRFIG9wdXMpCisgICAgYWRkX3Rlc3QodGVzdF9vcHVzX2VuY29kZSB0ZXN0X29wdXNf
ZW5jb2RlKQorICBlbmRpZigpCitlbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL01ha2VmaWxlLmFtIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9NYWtl
ZmlsZS5hbQppbmRleCA1YjU3YjMzNzJlNTZjY2E1OTljNGQ0NWFhYTAxZmUzZDM3MTg2MjMyLi43
ZjkwNWIwOTY5NzIyNzNjNTA5NDEwODI0MjExNzUxMjBhODRkZjllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL01ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvTWFrZWZpbGUuYW0KQEAgLTgyLDcgKzgyLDcgQEAgaWYgT1BVU19BUk1fRVhU
RVJOQUxfQVNNCiBsaWJvcHVzX2xhX0xJQkFERCArPSBsaWJhcm1hc20ubGEKIGVuZGlmCiAKLXBr
Z2luY2x1ZGVfSEVBREVSUyA9IGluY2x1ZGUvb3B1cy5oIGluY2x1ZGUvb3B1c19tdWx0aXN0cmVh
bS5oIGluY2x1ZGUvb3B1c190eXBlcy5oIGluY2x1ZGUvb3B1c19kZWZpbmVzLmgKK3BrZ2luY2x1
ZGVfSEVBREVSUyA9IGluY2x1ZGUvb3B1cy5oIGluY2x1ZGUvb3B1c19tdWx0aXN0cmVhbS5oIGlu
Y2x1ZGUvb3B1c190eXBlcy5oIGluY2x1ZGUvb3B1c19kZWZpbmVzLmggaW5jbHVkZS9vcHVzX3By
b2plY3Rpb24uaAogCiBub2luc3RfSEVBREVSUyA9ICQoT1BVU19IRUFEKSAkKFNJTEtfSEVBRCkg
JChDRUxUX0hFQUQpCiAKQEAgLTEwMiw3ICsxMDIsOCBAQCBub2luc3RfUFJPR1JBTVMgPSBjZWx0
L3Rlc3RzL3Rlc3RfdW5pdF9jd3JzMzIgXAogICAgICAgICAgICAgICAgICAgdGVzdHMvdGVzdF9v
cHVzX2FwaSBcCiAgICAgICAgICAgICAgICAgICB0ZXN0cy90ZXN0X29wdXNfZGVjb2RlIFwKICAg
ICAgICAgICAgICAgICAgIHRlc3RzL3Rlc3Rfb3B1c19lbmNvZGUgXAotICAgICAgICAgICAgICAg
ICAgdGVzdHMvdGVzdF9vcHVzX3BhZGRpbmcKKyAgICAgICAgICAgICAgICAgIHRlc3RzL3Rlc3Rf
b3B1c19wYWRkaW5nIFwKKyAgICAgICAgICAgICAgICAgIHRlc3RzL3Rlc3Rfb3B1c19wcm9qZWN0
aW9uCiAKIFRFU1RTID0gY2VsdC90ZXN0cy90ZXN0X3VuaXRfY3dyczMyIFwKICAgICAgICAgY2Vs
dC90ZXN0cy90ZXN0X3VuaXRfZGZ0IFwKQEAgLTExNiw3ICsxMTcsOCBAQCBURVNUUyA9IGNlbHQv
dGVzdHMvdGVzdF91bml0X2N3cnMzMiBcCiAgICAgICAgIHRlc3RzL3Rlc3Rfb3B1c19hcGkgXAog
ICAgICAgICB0ZXN0cy90ZXN0X29wdXNfZGVjb2RlIFwKICAgICAgICAgdGVzdHMvdGVzdF9vcHVz
X2VuY29kZSBcCi0gICAgICAgIHRlc3RzL3Rlc3Rfb3B1c19wYWRkaW5nCisgICAgICAgIHRlc3Rz
L3Rlc3Rfb3B1c19wYWRkaW5nIFwKKyAgICAgICAgdGVzdHMvdGVzdF9vcHVzX3Byb2plY3Rpb24K
IAogb3B1c19kZW1vX1NPVVJDRVMgPSBzcmMvb3B1c19kZW1vLmMKIApAQCAtMTQzLDYgKzE0NSwx
MyBAQCB0ZXN0c190ZXN0X29wdXNfcGFkZGluZ19MREFERCA9IGxpYm9wdXMubGEgJChORTEwX0xJ
QlMpICQoTElCTSkKIAogQ0VMVF9PQkogPSAkKENFTFRfU09VUkNFUzouYz0ubG8pCiBTSUxLX09C
SiA9ICQoU0lMS19TT1VSQ0VTOi5jPS5sbykKK09QVVNfT0JKID0gJChPUFVTX1NPVVJDRVM6LmM9
LmxvKQorCit0ZXN0c190ZXN0X29wdXNfcHJvamVjdGlvbl9TT1VSQ0VTID0gdGVzdHMvdGVzdF9v
cHVzX3Byb2plY3Rpb24uYyB0ZXN0cy90ZXN0X29wdXNfY29tbW9uLmgKK3Rlc3RzX3Rlc3Rfb3B1
c19wcm9qZWN0aW9uX0xEQUREID0gJChPUFVTX09CSikgJChTSUxLX09CSikgJChDRUxUX09CSikg
JChORTEwX0xJQlMpICQoTElCTSkKK2lmIE9QVVNfQVJNX0VYVEVSTkFMX0FTTQordGVzdHNfdGVz
dF9vcHVzX3Byb2plY3Rpb25fTERBREQgKz0gbGliYXJtYXNtLmxhCitlbmRpZgogCiBzaWxrX3Rl
c3RzX3Rlc3RfdW5pdF9MUENfaW52X3ByZWRfZ2Fpbl9TT1VSQ0VTID0gc2lsay90ZXN0cy90ZXN0
X3VuaXRfTFBDX2ludl9wcmVkX2dhaW4uYwogc2lsa190ZXN0c190ZXN0X3VuaXRfTFBDX2ludl9w
cmVkX2dhaW5fTERBREQgPSAkKFNJTEtfT0JKKSAkKENFTFRfT0JKKSAkKE5FMTBfTElCUykgJChM
SUJNKQpAQCAtMjAxLDYgKzIxMCwxMyBAQCBFWFRSQV9ESVNUID0gb3B1cy5wYy5pbiBcCiAgICAg
ICAgICAgICAgb3B1cy5tNCBcCiAgICAgICAgICAgICAgTWFrZWZpbGUubWlwcyBcCiAgICAgICAg
ICAgICAgTWFrZWZpbGUudW5peCBcCisgICAgICAgICAgICAgQ01ha2VMaXN0cy50eHQgXAorICAg
ICAgICAgICAgIGNvbmZpZy5oLmNtYWtlLmluIFwKKyAgICAgICAgICAgICBvcHVzX2J1aWxkdHlw
ZS5jbWFrZSBcCisgICAgICAgICAgICAgb3B1c19jb25maWcuY21ha2UgXAorICAgICAgICAgICAg
IG9wdXNfZnVuY3Rpb25zLmNtYWtlIFwKKyAgICAgICAgICAgICBvcHVzX3NvdXJjZXMuY21ha2Ug
XAorICAgICAgICAgICAgIE9wdXNDb25maWcuY21ha2UuaW4gXAogICAgICAgICAgICAgIHRlc3Rz
L3J1bl92ZWN0b3JzLnNoIFwKICAgICAgICAgICAgICBjZWx0L2FybS9hcm0yZ251LnBsIFwKICAg
ICAgICAgICAgICBjZWx0L2FybS9jZWx0X3BpdGNoX3hjb3JyX2FybS5zIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
TWFrZWZpbGUubWlwcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvTWFrZWZpbGUubWlwcwppbmRleCBkMjVhZjhjYmMyOGU1ZTY5ZjUzZmU4
N2IyNWYyNThiYTM4NWY1ZDI5Li5lOWJmYzIyZTg1YzFiZDI0NzQ5OGZlYjczMTJiNmY5Y2NkYzY5
YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL01ha2VmaWxlLm1pcHMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9NYWtlZmlsZS5taXBzCkBAIC0xMiw3
ICsxMiw3IEBAIENGTEFHUyA6PSAtRFVTRV9BTExPQ0EgJChDRkxBR1MpCiAKICMgVGhlc2Ugb3B0
aW9ucyBhZmZlY3QgcGVyZm9ybWFuY2UKICMgSEFWRV9MUklOVEY6IFVzZSBDOTkgaW50cmluc2lj
cyB0byBzcGVlZCB1cCBmbG9hdC10by1pbnQgY29udmVyc2lvbgotI0NGTEFHUyA6PSAtREhBVkVf
TFJJTlRGICQoQ0ZMQUdTKQorQ0ZMQUdTIDo9IC1ESEFWRV9MUklOVEYgJChDRkxBR1MpCiAKICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMgRU5EIE9GIE9QVElPTlMgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL09wdXNDb25maWcuY21ha2UuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL09wdXNDb25maWcuY21ha2UuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTU3NzE3NDNhZjgzMTVhNWMwYjQ4Zjk4ZDIyMGVmNWZlNzgwMjY2NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvT3B1c0NvbmZpZy5jbWFrZS5pbgpAQCAtMCwwICsxLDE5IEBACitzZXQo
T1BVU19WRVJTSU9OIEBQUk9KRUNUX1ZFUlNJT05AKQorc2V0KE9QVVNfVkVSU0lPTl9TVFJJTkcg
QFBST0pFQ1RfVkVSU0lPTkApCitzZXQoT1BVU19WRVJTSU9OX01BSk9SIEBQUk9KRUNUX1ZFUlNJ
T05fTUFKT1JAKQorc2V0KE9QVVNfVkVSU0lPTl9NSU5PUiBAUFJPSkVDVF9WRVJTSU9OX01JTk9S
QCkKK3NldChPUFVTX1ZFUlNJT05fUEFUQ0ggQFBST0pFQ1RfVkVSU0lPTl9QQVRDSEApCisKK0BQ
QUNLQUdFX0lOSVRACisKK3NldF9hbmRfY2hlY2soT1BVU19JTkNMVURFX0RJUiAiQFBBQ0tBR0Vf
SU5DTFVERV9JTlNUQUxMX0RJUkAiKQorc2V0X2FuZF9jaGVjayhPUFVTX0lOQ0xVREVfRElSUyAi
QFBBQ0tBR0VfSU5DTFVERV9JTlNUQUxMX0RJUkAiKQorCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVO
VF9MSVNUX0RJUn0vT3B1c1RhcmdldHMuY21ha2UpCisKK3NldChPUFVTX0xJQlJBUlkgT3B1czo6
b3B1cykKK3NldChPUFVTX0xJQlJBUklFUyBPcHVzOjpvcHVzKQorCitjaGVja19yZXF1aXJlZF9j
b21wb25lbnRzKE9wdXMpCisKK3NldChPUFVTX0ZPVU5EIDEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL1JFQURNRSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
UkVBRE1FCmluZGV4IDlhMDY4MTE2NTRiNWMyMzM4MjNhMDk3NDI2NjgzNTMxMzQxYTZkMjIuLjI3
ZmRkZjk2ZTkwMTNiODczYjJhMzljNzA3NjJlMzhkMzliMjI0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvUkVBRE1F
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvUkVBRE1FCkBAIC0yOSw3ICsyOSw3IEBAIGFkZGl0aW9uYWwgZGVidWdnaW5nIGRhdGEg
YW5kIGNhbm5vdCBzdXBwb3J0IHNlZWtpbmcuCiAKIE9wdXMgc3RvcmVkIGluIGZpbGVzIHNob3Vs
ZCB1c2UgdGhlIE9nZyBlbmNhcHN1bGF0aW9uIGZvciBPcHVzIHdoaWNoIGlzCiBkZXNjcmliZWQg
YXQ6Ci0gaHR0cHM6Ly93aWtpLnhpcGgub3JnL09nZ09wdXMKKyBodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNzg0NQogCiBBbiBvcHVzLXRvb2xzIHBhY2thZ2UgaXMgYXZhaWxhYmxlIHdo
aWNoIHByb3ZpZGVzIGVuY29kaW5nIGFuZCBkZWNvZGluZyBvZgogT2dnIGVuY2Fwc3VsYXRlZCBP
cHVzIGZpbGVzIGFuZCBpbmNsdWRlcyBhIG51bWJlciBvZiB1c2VmdWwgZmVhdHVyZXMuCkBAIC0x
MjUsMTMgKzEyNSwxMyBAQCBUbyBydW4gdGhlIGludGVncmF0ZWQgdGVzdHM6CiAKIFRoZXJlIGlz
IGFsc28gY29sbGVjdGlvbiBvZiBzdGFuZGFyZCB0ZXN0IHZlY3RvcnMgd2hpY2ggYXJlIG5vdAog
aW5jbHVkZWQgaW4gdGhpcyBwYWNrYWdlIGZvciBzaXplIHJlYXNvbnMgYnV0IGNhbiBiZSBvYnRh
aW5lZCBmcm9tOgotaHR0cHM6Ly9vcHVzLWNvZGVjLm9yZy90ZXN0dmVjdG9ycy9vcHVzX3Rlc3R2
ZWN0b3JzLnRhci5negoraHR0cHM6Ly9vcHVzLWNvZGVjLm9yZy9kb2NzL29wdXNfdGVzdHZlY3Rv
cnMtcmZjODI1MS50YXIuZ3oKIAogVG8gcnVuIGNvbXBhcmUgdGhlIGNvZGUgdG8gdGhlc2UgdGVz
dCB2ZWN0b3JzOgogCi0gICAgJSBjdXJsIC1PTCBodHRwczovL29wdXMtY29kZWMub3JnL3Rlc3R2
ZWN0b3JzL29wdXNfdGVzdHZlY3RvcnMudGFyLmd6Ci0gICAgJSB0YXIgLXp4ZiBvcHVzX3Rlc3R2
ZWN0b3JzLnRhci5negotICAgICUgLi90ZXN0cy9ydW5fdmVjdG9ycy5zaCAuLyBvcHVzX3Rlc3R2
ZWN0b3JzIDQ4MDAwCisgICAgJSBjdXJsIC1PTCBodHRwczovL29wdXMtY29kZWMub3JnL2RvY3Mv
b3B1c190ZXN0dmVjdG9ycy1yZmM4MjUxLnRhci5negorICAgICUgdGFyIC16eGYgb3B1c190ZXN0
dmVjdG9ycy1yZmM4MjUxLnRhci5negorICAgICUgLi90ZXN0cy9ydW5fdmVjdG9ycy5zaCAuLyBv
cHVzX25ld3ZlY3RvcnMgNDgwMDAKIAogPT0gUG9ydGFiaWxpdHkgbm90ZXMgPT0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L2FyY2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcmNoLmgKaW5kZXggZDFlNjQ1N2M1NGEwN2M2ZWM1YzNh
MDMwNTEwZGE4YWI0MjM1NTAwOC4uNWM0OTU3OWYwMThjY2ZiZTU2MDJkNTAxYmVmZTkxYzNmYjM4
Yjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FyY2guaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJjaC5oCkBAIC01NiwyMyAr
NTYsNDIgQEAKIAogI2RlZmluZSBDRUxUX1NJR19TQ0FMRSAzMjc2OC5mCiAKLSNkZWZpbmUgY2Vs
dF9mYXRhbChzdHIpIF9jZWx0X2ZhdGFsKHN0ciwgX19GSUxFX18sIF9fTElORV9fKTsKLSNpZmRl
ZiBFTkFCTEVfQVNTRVJUSU9OUworI2RlZmluZSBDRUxUX0ZBVEFMKHN0cikgY2VsdF9mYXRhbChz
dHIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9BU1NFUlRJT05T
KSB8fCBkZWZpbmVkKEVOQUJMRV9IQVJERU5JTkcpCisjaWZkZWYgX19HTlVDX18KK19fYXR0cmli
dXRlX18oKG5vcmV0dXJuKSkKKyNlbmRpZgordm9pZCBjZWx0X2ZhdGFsKGNvbnN0IGNoYXIgKnN0
ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpOworCisjaWYgZGVmaW5lZChDRUxUX0MpICYm
ICFkZWZpbmVkKE9WRVJSSURFX2NlbHRfZmF0YWwpCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KICNpZmRlZiBfX0dOVUNfXwogX19hdHRyaWJ1dGVfXygobm9yZXR1cm4p
KQogI2VuZGlmCi1zdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBfY2VsdF9mYXRhbChjb25zdCBjaGFy
ICpzdHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKQordm9pZCBjZWx0X2ZhdGFsKGNvbnN0
IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpCiB7CisjaWYgIWRlZmluZWQo
Q0hST01JVU1fTk9fTE9HR0lORykKICAgIGZwcmludGYgKHN0ZGVyciwgIkZhdGFsIChpbnRlcm5h
bCkgZXJyb3IgaW4gJXMsIGxpbmUgJWQ6ICVzXG4iLCBmaWxlLCBsaW5lLCBzdHIpOworI2VuZGlm
CiAgICBhYm9ydCgpOwogfQotI2RlZmluZSBjZWx0X2Fzc2VydChjb25kKSB7aWYgKCEoY29uZCkp
IHtjZWx0X2ZhdGFsKCJhc3NlcnRpb24gZmFpbGVkOiAiICNjb25kKTt9fQotI2RlZmluZSBjZWx0
X2Fzc2VydDIoY29uZCwgbWVzc2FnZSkge2lmICghKGNvbmQpKSB7Y2VsdF9mYXRhbCgiYXNzZXJ0
aW9uIGZhaWxlZDogIiAjY29uZCAiXG4iIG1lc3NhZ2UpO319CisjZW5kaWYKKworI2RlZmluZSBj
ZWx0X2Fzc2VydChjb25kKSB7aWYgKCEoY29uZCkpIHtDRUxUX0ZBVEFMKCJhc3NlcnRpb24gZmFp
bGVkOiAiICNjb25kKTt9fQorI2RlZmluZSBjZWx0X2Fzc2VydDIoY29uZCwgbWVzc2FnZSkge2lm
ICghKGNvbmQpKSB7Q0VMVF9GQVRBTCgiYXNzZXJ0aW9uIGZhaWxlZDogIiAjY29uZCAiXG4iIG1l
c3NhZ2UpO319CisjZGVmaW5lIE1VU1RfU1VDQ0VFRChjYWxsKSBjZWx0X2Fzc2VydCgoY2FsbCkg
PT0gT1BVU19PSykKICNlbHNlCiAjZGVmaW5lIGNlbHRfYXNzZXJ0KGNvbmQpCiAjZGVmaW5lIGNl
bHRfYXNzZXJ0Mihjb25kLCBtZXNzYWdlKQorI2RlZmluZSBNVVNUX1NVQ0NFRUQoY2FsbCkgZG8g
e2lmKChjYWxsKSAhPSBPUFVTX09LKSB7UkVTVE9SRV9TVEFDSzsgcmV0dXJuIE9QVVNfSU5URVJO
QUxfRVJST1I7fSB9IHdoaWxlICgwKQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9BU1NF
UlRJT05TKQorI2RlZmluZSBjZWx0X3NpZ19hc3NlcnQoY29uZCkge2lmICghKGNvbmQpKSB7Q0VM
VF9GQVRBTCgic2lnbmFsIGFzc2VydGlvbiBmYWlsZWQ6ICIgI2NvbmQpO319CisjZWxzZQorI2Rl
ZmluZSBjZWx0X3NpZ19hc3NlcnQoY29uZCkKICNlbmRpZgogCiAjZGVmaW5lIElNVUwzMihhLGIp
ICgoYSkqKGIpKQpAQCAtMTA3LDYgKzEyNiw4IEBAIHR5cGVkZWYgb3B1c192YWwzMiBjZWx0X3Np
ZzsKIHR5cGVkZWYgb3B1c192YWwxNiBjZWx0X25vcm07CiB0eXBlZGVmIG9wdXNfdmFsMzIgY2Vs
dF9lbmVyOwogCisjZGVmaW5lIGNlbHRfaXNuYW4oeCkgMAorCiAjZGVmaW5lIFExNU9ORSAzMjc2
NwogCiAjZGVmaW5lIFNJR19TSElGVCAxMgpAQCAtMTQxLDcgKzE2Miw3IEBAIHN0YXRpYyBPUFVT
X0lOTElORSBvcHVzX2ludDE2IFNBVDE2KG9wdXNfaW50MzIgeCkgewogCiAjaWZkZWYgT1BVU19B
Uk1fUFJFU1VNRV9BQVJDSDY0X05FT05fSU5UUgogI2luY2x1ZGUgImFybS9maXhlZF9hcm02NC5o
IgotI2VsaWYgT1BVU19BUk1fSU5MSU5FX0VEU1AKKyNlbGlmIGRlZmluZWQgKE9QVVNfQVJNX0lO
TElORV9FRFNQKQogI2luY2x1ZGUgImFybS9maXhlZF9hcm12NWUuaCIKICNlbGlmIGRlZmluZWQg
KE9QVVNfQVJNX0lOTElORV9BU00pCiAjaW5jbHVkZSAiYXJtL2ZpeGVkX2FybXY0LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvYXJtL2NlbHRfZmZ0X25lMTAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9mZnRfbmUxMC5j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVhNWZkNzgwOGIwODljOTY1ODQwZjYxZmI2MDkxOTM1OGY5YWYzYzkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRfZmZ0X25lMTAuYwpAQCAtMCwwICsxLDE3MyBA
QAorLyogQ29weXJpZ2h0IChjKSAyMDE1IFhpcGguT3JnIEZvdW5kYXRpb24KKyAgIFdyaXR0ZW4g
YnkgVmlzd2FuYXRoIFB1dHRhZ3VudGEgKi8KKy8qKgorICAgQGZpbGUgY2VsdF9mZnRfbmUxMC5j
CisgICBAYnJpZWYgQVJNIE5lb24gb3B0aW1pemF0aW9ucyBmb3IgZmZ0IHVzaW5nIE5FMTAgbGli
cmFyeQorICovCisKKy8qCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJlIG1ldDoK
KworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFTIElTJycgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAgIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICAgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAg
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFNLSVBfQ09ORklHX0gKKyNpZmRlZiBI
QVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKyNlbmRpZgorCisjaW5j
bHVkZSA8TkUxMF9kc3AuaD4KKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCisjaW5jbHVkZSAia2lz
c19mZnQuaCIKKyNpbmNsdWRlICJzdGFja19hbGxvYy5oIgorCisjaWYgIWRlZmluZWQoRklYRURf
UE9JTlQpCisjIGRlZmluZSBORTEwX0ZGVF9BTExPQ19DMkNfVFlQRV9ORU9OIG5lMTBfZmZ0X2Fs
bG9jX2MyY19mbG9hdDMyX25lb24KKyMgZGVmaW5lIE5FMTBfRkZUX0NGR19UWVBFX1QgbmUxMF9m
ZnRfY2ZnX2Zsb2F0MzJfdAorIyBkZWZpbmUgTkUxMF9GRlRfU1RBVEVfVFlQRV9UIG5lMTBfZmZ0
X3N0YXRlX2Zsb2F0MzJfdAorIyBkZWZpbmUgTkUxMF9GRlRfREVTVFJPWV9DMkNfVFlQRSBuZTEw
X2ZmdF9kZXN0cm95X2MyY19mbG9hdDMyCisjIGRlZmluZSBORTEwX0ZGVF9DUFhfVFlQRV9UIG5l
MTBfZmZ0X2NweF9mbG9hdDMyX3QKKyMgZGVmaW5lIE5FMTBfRkZUX0MyQ18xRF9UWVBFX05FT04g
bmUxMF9mZnRfYzJjXzFkX2Zsb2F0MzJfbmVvbgorI2Vsc2UKKyMgZGVmaW5lIE5FMTBfRkZUX0FM
TE9DX0MyQ19UWVBFX05FT04obmZmdCkgbmUxMF9mZnRfYWxsb2NfYzJjX2ludDMyX25lb24obmZm
dCkKKyMgZGVmaW5lIE5FMTBfRkZUX0NGR19UWVBFX1QgbmUxMF9mZnRfY2ZnX2ludDMyX3QKKyMg
ZGVmaW5lIE5FMTBfRkZUX1NUQVRFX1RZUEVfVCBuZTEwX2ZmdF9zdGF0ZV9pbnQzMl90CisjIGRl
ZmluZSBORTEwX0ZGVF9ERVNUUk9ZX0MyQ19UWVBFIG5lMTBfZmZ0X2Rlc3Ryb3lfYzJjX2ludDMy
CisjIGRlZmluZSBORTEwX0ZGVF9ERVNUUk9ZX0MyQ19UWVBFIG5lMTBfZmZ0X2Rlc3Ryb3lfYzJj
X2ludDMyCisjIGRlZmluZSBORTEwX0ZGVF9DUFhfVFlQRV9UIG5lMTBfZmZ0X2NweF9pbnQzMl90
CisjIGRlZmluZSBORTEwX0ZGVF9DMkNfMURfVFlQRV9ORU9OIG5lMTBfZmZ0X2MyY18xZF9pbnQz
Ml9uZW9uCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ1VTVE9NX01PREVTKQorCisvKiBuZmZ0IGxl
bmd0aHMgaW4gTkUxMCB0aGF0IHN1cHBvcnQgc2NhbGVkIGZmdCAqLworIyBkZWZpbmUgTkUxMF9G
RlRTQ0FMRURfU1VQUE9SVF9NQVggNAorc3RhdGljIGNvbnN0IGludCBuZTEwX2ZmdF9zY2FsZWRf
c3VwcG9ydFtORTEwX0ZGVFNDQUxFRF9TVVBQT1JUX01BWF0gPSB7CisgICA0ODAsIDI0MCwgMTIw
LCA2MAorfTsKKworaW50IG9wdXNfZmZ0X2FsbG9jX2FybV9uZW9uKGtpc3NfZmZ0X3N0YXRlICpz
dCkKK3sKKyAgIGludCBpOworICAgc2l6ZV90IG1lbW5lZWRlZCA9IHNpemVvZihzdHJ1Y3QgYXJj
aF9mZnRfc3RhdGUpOworCisgICBzdC0+YXJjaF9mZnQgPSAoYXJjaF9mZnRfc3RhdGUgKilvcHVz
X2FsbG9jKG1lbW5lZWRlZCk7CisgICBpZiAoIXN0LT5hcmNoX2ZmdCkKKyAgICAgIHJldHVybiAt
MTsKKworICAgZm9yIChpID0gMDsgaSA8IE5FMTBfRkZUU0NBTEVEX1NVUFBPUlRfTUFYOyBpKysp
IHsKKyAgICAgIGlmKHN0LT5uZmZ0ID09IG5lMTBfZmZ0X3NjYWxlZF9zdXBwb3J0W2ldKQorICAg
ICAgICAgYnJlYWs7CisgICB9CisgICBpZiAoaSA9PSBORTEwX0ZGVFNDQUxFRF9TVVBQT1JUX01B
WCkgeworICAgICAgLyogVGhpcyBuZmZ0IGxlbmd0aCAoc2NhbGVkIGZmdCkgaXMgbm90IHN1cHBv
cnRlZCBpbiBORTEwICovCisgICAgICBzdC0+YXJjaF9mZnQtPmlzX3N1cHBvcnRlZCA9IDA7Cisg
ICAgICBzdC0+YXJjaF9mZnQtPnByaXYgPSBOVUxMOworICAgfQorICAgZWxzZSB7CisgICAgICBz
dC0+YXJjaF9mZnQtPmlzX3N1cHBvcnRlZCA9IDE7CisgICAgICBzdC0+YXJjaF9mZnQtPnByaXYg
PSAodm9pZCAqKU5FMTBfRkZUX0FMTE9DX0MyQ19UWVBFX05FT04oc3QtPm5mZnQpOworICAgICAg
aWYgKHN0LT5hcmNoX2ZmdC0+cHJpdiA9PSBOVUxMKSB7CisgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICB9CisgICB9CisgICByZXR1cm4gMDsKK30KKwordm9pZCBvcHVzX2ZmdF9mcmVlX2FybV9u
ZW9uKGtpc3NfZmZ0X3N0YXRlICpzdCkKK3sKKyAgIE5FMTBfRkZUX0NGR19UWVBFX1QgY2ZnOwor
CisgICBpZiAoIXN0LT5hcmNoX2ZmdCkKKyAgICAgIHJldHVybjsKKworICAgY2ZnID0gKE5FMTBf
RkZUX0NGR19UWVBFX1Qpc3QtPmFyY2hfZmZ0LT5wcml2OworICAgaWYgKGNmZykKKyAgICAgIE5F
MTBfRkZUX0RFU1RST1lfQzJDX1RZUEUoY2ZnKTsKKyAgIG9wdXNfZnJlZShzdC0+YXJjaF9mZnQp
OworfQorI2VuZGlmCisKK3ZvaWQgb3B1c19mZnRfbmVvbihjb25zdCBraXNzX2ZmdF9zdGF0ZSAq
c3QsCisgICAgICAgICAgICAgICAgICAgY29uc3Qga2lzc19mZnRfY3B4ICpmaW4sCisgICAgICAg
ICAgICAgICAgICAga2lzc19mZnRfY3B4ICpmb3V0KQoreworICAgTkUxMF9GRlRfU1RBVEVfVFlQ
RV9UIHN0YXRlOworICAgTkUxMF9GRlRfQ0ZHX1RZUEVfVCBjZmcgPSAmc3RhdGU7CisgICBWQVJE
RUNMKE5FMTBfRkZUX0NQWF9UWVBFX1QsIGJ1ZmZlcik7CisgICBTQVZFX1NUQUNLOworICAgQUxM
T0MoYnVmZmVyLCBzdC0+bmZmdCwgTkUxMF9GRlRfQ1BYX1RZUEVfVCk7CisKKyAgIGlmICghc3Qt
PmFyY2hfZmZ0LT5pc19zdXBwb3J0ZWQpIHsKKyAgICAgIC8qIFRoaXMgbmZmdCBsZW5ndGggKHNj
YWxlZCBmZnQpIG5vdCBzdXBwb3J0ZWQgaW4gTkUxMCAqLworICAgICAgb3B1c19mZnRfYyhzdCwg
ZmluLCBmb3V0KTsKKyAgIH0KKyAgIGVsc2UgeworICAgICAgbWVtY3B5KCh2b2lkICopY2ZnLCBz
dC0+YXJjaF9mZnQtPnByaXYsIHNpemVvZihORTEwX0ZGVF9TVEFURV9UWVBFX1QpKTsKKyAgICAg
IHN0YXRlLmJ1ZmZlciA9IChORTEwX0ZGVF9DUFhfVFlQRV9UICopJmJ1ZmZlclswXTsKKyNpZiAh
ZGVmaW5lZChGSVhFRF9QT0lOVCkKKyAgICAgIHN0YXRlLmlzX2ZvcndhcmRfc2NhbGVkID0gMTsK
KworICAgICAgTkUxMF9GRlRfQzJDXzFEX1RZUEVfTkVPTigoTkUxMF9GRlRfQ1BYX1RZUEVfVCAq
KWZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChORTEwX0ZGVF9DUFhfVFlQ
RV9UICopZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmcsIDApOworI2Vs
c2UKKyAgICAgIE5FMTBfRkZUX0MyQ18xRF9UWVBFX05FT04oKE5FMTBfRkZUX0NQWF9UWVBFX1Qg
Kilmb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkUxMF9GRlRfQ1BYX1RZ
UEVfVCAqKWZpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLCAwLCAxKTsK
KyNlbmRpZgorICAgfQorICAgUkVTVE9SRV9TVEFDSzsKK30KKwordm9pZCBvcHVzX2lmZnRfbmVv
bihjb25zdCBraXNzX2ZmdF9zdGF0ZSAqc3QsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtp
c3NfZmZ0X2NweCAqZmluLAorICAgICAgICAgICAgICAgICAgICBraXNzX2ZmdF9jcHggKmZvdXQp
Cit7CisgICBORTEwX0ZGVF9TVEFURV9UWVBFX1Qgc3RhdGU7CisgICBORTEwX0ZGVF9DRkdfVFlQ
RV9UIGNmZyA9ICZzdGF0ZTsKKyAgIFZBUkRFQ0woTkUxMF9GRlRfQ1BYX1RZUEVfVCwgYnVmZmVy
KTsKKyAgIFNBVkVfU1RBQ0s7CisgICBBTExPQyhidWZmZXIsIHN0LT5uZmZ0LCBORTEwX0ZGVF9D
UFhfVFlQRV9UKTsKKworICAgaWYgKCFzdC0+YXJjaF9mZnQtPmlzX3N1cHBvcnRlZCkgeworICAg
ICAgLyogVGhpcyBuZmZ0IGxlbmd0aCAoc2NhbGVkIGZmdCkgbm90IHN1cHBvcnRlZCBpbiBORTEw
ICovCisgICAgICBvcHVzX2lmZnRfYyhzdCwgZmluLCBmb3V0KTsKKyAgIH0KKyAgIGVsc2Ugewor
ICAgICAgbWVtY3B5KCh2b2lkICopY2ZnLCBzdC0+YXJjaF9mZnQtPnByaXYsIHNpemVvZihORTEw
X0ZGVF9TVEFURV9UWVBFX1QpKTsKKyAgICAgIHN0YXRlLmJ1ZmZlciA9IChORTEwX0ZGVF9DUFhf
VFlQRV9UICopJmJ1ZmZlclswXTsKKyNpZiAhZGVmaW5lZChGSVhFRF9QT0lOVCkKKyAgICAgIHN0
YXRlLmlzX2JhY2t3YXJkX3NjYWxlZCA9IDA7CisKKyAgICAgIE5FMTBfRkZUX0MyQ18xRF9UWVBF
X05FT04oKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmb3V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2ZnLCAxKTsKKyNlbHNlCisgICAgICBORTEwX0ZGVF9DMkNfMURfVFlQ
RV9ORU9OKChORTEwX0ZGVF9DUFhfVFlQRV9UICopZm91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNmZywgMSwgMCk7CisjZW5kaWYKKyAgIH0KKyAgIFJFU1RPUkVfU1RB
Q0s7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRfbWRjdF9uZTEwLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2Nl
bHRfbWRjdF9uZTEwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUzMWQwMmQxMDA2NjQyOGU2ZmU2YjlhMjBlZDEx
ZjA1MTBjYTVhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9tZGN0X25lMTAuYwpA
QCAtMCwwICsxLDI1OCBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE1IFhpcGguT3JnIEZvdW5kYXRp
b24KKyAgIFdyaXR0ZW4gYnkgVmlzd2FuYXRoIFB1dHRhZ3VudGEgKi8KKy8qKgorICAgQGZpbGUg
Y2VsdF9tZGN0X25lMTAuYworICAgQGJyaWVmIEFSTSBOZW9uIG9wdGltaXphdGlvbnMgZm9yIG1k
Y3QgdXNpbmcgTkUxMCBsaWJyYXJ5CisgKi8KKworLyoKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgICBhcmUgbWV0OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMg
SVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisg
ICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgU0tJUF9D
T05GSUdfSAorI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRp
ZgorI2VuZGlmCisKKyNpbmNsdWRlICJraXNzX2ZmdC5oIgorI2luY2x1ZGUgIl9raXNzX2ZmdF9n
dXRzLmgiCisjaW5jbHVkZSAibWRjdC5oIgorI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgiCisKK3Zv
aWQgY2x0X21kY3RfZm9yd2FyZF9uZW9uKGNvbnN0IG1kY3RfbG9va3VwICpsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2lzc19mZnRfc2NhbGFyICppbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVTVFJJQ1Qgb3V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgb3B1c192YWwxNiAqd2luZG93LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG92ZXJsYXAsIGludCBzaGlmdCwgaW50IHN0cmlkZSwgaW50IGFy
Y2gpCit7CisgICBpbnQgaTsKKyAgIGludCBOLCBOMiwgTjQ7CisgICBWQVJERUNMKGtpc3NfZmZ0
X3NjYWxhciwgZik7CisgICBWQVJERUNMKGtpc3NfZmZ0X2NweCwgZjIpOworICAgY29uc3Qga2lz
c19mZnRfc3RhdGUgKnN0ID0gbC0+a2ZmdFtzaGlmdF07CisgICBjb25zdCBraXNzX3R3aWRkbGVf
c2NhbGFyICp0cmlnOworCisgICBTQVZFX1NUQUNLOworCisgICBOID0gbC0+bjsKKyAgIHRyaWcg
PSBsLT50cmlnOworICAgZm9yIChpPTA7aTxzaGlmdDtpKyspCisgICB7CisgICAgICBOID4+PSAx
OworICAgICAgdHJpZyArPSBOOworICAgfQorICAgTjIgPSBOPj4xOworICAgTjQgPSBOPj4yOwor
CisgICBBTExPQyhmLCBOMiwga2lzc19mZnRfc2NhbGFyKTsKKyAgIEFMTE9DKGYyLCBONCwga2lz
c19mZnRfY3B4KTsKKworICAgLyogQ29uc2lkZXIgdGhlIGlucHV0IHRvIGJlIGNvbXBvc2VkIG9m
IGZvdXIgYmxvY2tzOiBbYSwgYiwgYywgZF0gKi8KKyAgIC8qIFdpbmRvdywgc2h1ZmZsZSwgZm9s
ZCAqLworICAgeworICAgICAgLyogVGVtcCBwb2ludGVycyB0byBtYWtlIGl0IHJlYWxseSBjbGVh
ciB0byB0aGUgY29tcGlsZXIgd2hhdCB3ZSdyZSBkb2luZyAqLworICAgICAgY29uc3Qga2lzc19m
ZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB4cDEgPSBpbisob3ZlcmxhcD4+MSk7CisgICAgICBj
b25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHhwMiA9IGluK04yLTErKG92ZXJs
YXA+PjEpOworICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB5cCA9IGY7Cisg
ICAgICBjb25zdCBvcHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB3cDEgPSB3aW5kb3crKG92ZXJs
YXA+PjEpOworICAgICAgY29uc3Qgb3B1c192YWwxNiAqIE9QVVNfUkVTVFJJQ1Qgd3AyID0gd2lu
ZG93KyhvdmVybGFwPj4xKS0xOworICAgICAgZm9yKGk9MDtpPCgob3ZlcmxhcCszKT4+Mik7aSsr
KQorICAgICAgeworICAgICAgICAgLyogUmVhbCBwYXJ0IGFycmFuZ2VkIGFzIC1kLWNSLCBJbWFn
IHBhcnQgYXJyYW5nZWQgYXMgLWIrYVIqLworICAgICAgICAgKnlwKysgPSBNVUxUMTZfMzJfUTE1
KCp3cDIsIHhwMVtOMl0pICsgTVVMVDE2XzMyX1ExNSgqd3AxLCp4cDIpOworICAgICAgICAgKnlw
KysgPSBNVUxUMTZfMzJfUTE1KCp3cDEsICp4cDEpICAgIC0gTVVMVDE2XzMyX1ExNSgqd3AyLCB4
cDJbLU4yXSk7CisgICAgICAgICB4cDErPTI7CisgICAgICAgICB4cDItPTI7CisgICAgICAgICB3
cDErPTI7CisgICAgICAgICB3cDItPTI7CisgICAgICB9CisgICAgICB3cDEgPSB3aW5kb3c7Cisg
ICAgICB3cDIgPSB3aW5kb3crb3ZlcmxhcC0xOworICAgICAgZm9yKDtpPE40LSgob3ZlcmxhcCsz
KT4+Mik7aSsrKQorICAgICAgeworICAgICAgICAgLyogUmVhbCBwYXJ0IGFycmFuZ2VkIGFzIGEt
YlIsIEltYWcgcGFydCBhcnJhbmdlZCBhcyAtYy1kUiAqLworICAgICAgICAgKnlwKysgPSAqeHAy
OworICAgICAgICAgKnlwKysgPSAqeHAxOworICAgICAgICAgeHAxKz0yOworICAgICAgICAgeHAy
LT0yOworICAgICAgfQorICAgICAgZm9yKDtpPE40O2krKykKKyAgICAgIHsKKyAgICAgICAgIC8q
IFJlYWwgcGFydCBhcnJhbmdlZCBhcyBhLWJSLCBJbWFnIHBhcnQgYXJyYW5nZWQgYXMgLWMtZFIg
Ki8KKyAgICAgICAgICp5cCsrID0gIC1NVUxUMTZfMzJfUTE1KCp3cDEsIHhwMVstTjJdKSArIE1V
TFQxNl8zMl9RMTUoKndwMiwgKnhwMik7CisgICAgICAgICAqeXArKyA9IE1VTFQxNl8zMl9RMTUo
KndwMiwgKnhwMSkgICAgICsgTVVMVDE2XzMyX1ExNSgqd3AxLCB4cDJbTjJdKTsKKyAgICAgICAg
IHhwMSs9MjsKKyAgICAgICAgIHhwMi09MjsKKyAgICAgICAgIHdwMSs9MjsKKyAgICAgICAgIHdw
Mi09MjsKKyAgICAgIH0KKyAgIH0KKyAgIC8qIFByZS1yb3RhdGlvbiAqLworICAgeworICAgICAg
a2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB5cCA9IGY7CisgICAgICBjb25zdCBraXNz
X3R3aWRkbGVfc2NhbGFyICp0ID0gJnRyaWdbMF07CisgICAgICBmb3IoaT0wO2k8TjQ7aSsrKQor
ICAgICAgeworICAgICAgICAga2lzc19mZnRfY3B4IHljOworICAgICAgICAga2lzc190d2lkZGxl
X3NjYWxhciB0MCwgdDE7CisgICAgICAgICBraXNzX2ZmdF9zY2FsYXIgcmUsIGltLCB5ciwgeWk7
CisgICAgICAgICB0MCA9IHRbaV07CisgICAgICAgICB0MSA9IHRbTjQraV07CisgICAgICAgICBy
ZSA9ICp5cCsrOworICAgICAgICAgaW0gPSAqeXArKzsKKyAgICAgICAgIHlyID0gU19NVUwocmUs
dDApICAtICBTX01VTChpbSx0MSk7CisgICAgICAgICB5aSA9IFNfTVVMKGltLHQwKSAgKyAgU19N
VUwocmUsdDEpOworICAgICAgICAgeWMuciA9IHlyOworICAgICAgICAgeWMuaSA9IHlpOworICAg
ICAgICAgZjJbaV0gPSB5YzsKKyAgICAgIH0KKyAgIH0KKworICAgb3B1c19mZnQoc3QsIGYyLCAo
a2lzc19mZnRfY3B4ICopZiwgYXJjaCk7CisKKyAgIC8qIFBvc3Qtcm90YXRlICovCisgICB7Cisg
ICAgICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2UgaXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21w
aWxlciB3aGF0IHdlJ3JlIGRvaW5nICovCisgICAgICBjb25zdCBraXNzX2ZmdF9jcHggKiBPUFVT
X1JFU1RSSUNUIGZwID0gKGtpc3NfZmZ0X2NweCAqKWY7CisgICAgICBraXNzX2ZmdF9zY2FsYXIg
KiBPUFVTX1JFU1RSSUNUIHlwMSA9IG91dDsKKyAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNf
UkVTVFJJQ1QgeXAyID0gb3V0K3N0cmlkZSooTjItMSk7CisgICAgICBjb25zdCBraXNzX3R3aWRk
bGVfc2NhbGFyICp0ID0gJnRyaWdbMF07CisgICAgICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2Ug
aXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21waWxlciB3aGF0IHdlJ3JlIGRvaW5nICovCisgICAg
ICBmb3IoaT0wO2k8TjQ7aSsrKQorICAgICAgeworICAgICAgICAga2lzc19mZnRfc2NhbGFyIHly
LCB5aTsKKyAgICAgICAgIHlyID0gU19NVUwoZnAtPmksdFtONCtpXSkgLSBTX01VTChmcC0+cix0
W2ldKTsKKyAgICAgICAgIHlpID0gU19NVUwoZnAtPnIsdFtONCtpXSkgKyBTX01VTChmcC0+aSx0
W2ldKTsKKyAgICAgICAgICp5cDEgPSB5cjsKKyAgICAgICAgICp5cDIgPSB5aTsKKyAgICAgICAg
IGZwKys7CisgICAgICAgICB5cDEgKz0gMipzdHJpZGU7CisgICAgICAgICB5cDIgLT0gMipzdHJp
ZGU7CisgICAgICB9CisgICB9CisgICBSRVNUT1JFX1NUQUNLOworfQorCit2b2lkIGNsdF9tZGN0
X2JhY2t3YXJkX25lb24oY29uc3QgbWRjdF9sb29rdXAgKmwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2lzc19mZnRfc2NhbGFyICppbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIG91dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBvcHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB3aW5kb3csCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJsYXAsIGludCBzaGlmdCwgaW50IHN0cmlk
ZSwgaW50IGFyY2gpCit7CisgICBpbnQgaTsKKyAgIGludCBOLCBOMiwgTjQ7CisgICBWQVJERUNM
KGtpc3NfZmZ0X3NjYWxhciwgZik7CisgICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICp0cmln
OworICAgY29uc3Qga2lzc19mZnRfc3RhdGUgKnN0ID0gbC0+a2ZmdFtzaGlmdF07CisKKyAgIE4g
PSBsLT5uOworICAgdHJpZyA9IGwtPnRyaWc7CisgICBmb3IgKGk9MDtpPHNoaWZ0O2krKykKKyAg
IHsKKyAgICAgIE4gPj49IDE7CisgICAgICB0cmlnICs9IE47CisgICB9CisgICBOMiA9IE4+PjE7
CisgICBONCA9IE4+PjI7CisKKyAgIEFMTE9DKGYsIE4yLCBraXNzX2ZmdF9zY2FsYXIpOworCisg
ICAvKiBQcmUtcm90YXRlICovCisgICB7CisgICAgICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2Ug
aXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21waWxlciB3aGF0IHdlJ3JlIGRvaW5nICovCisgICAg
ICBjb25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHhwMSA9IGluOworICAgICAg
Y29uc3Qga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB4cDIgPSBpbitzdHJpZGUqKE4y
LTEpOworICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB5cCA9IGY7CisgICAg
ICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICogT1BVU19SRVNUUklDVCB0ID0gJnRyaWdbMF07
CisgICAgICBmb3IoaT0wO2k8TjQ7aSsrKQorICAgICAgeworICAgICAgICAga2lzc19mZnRfc2Nh
bGFyIHlyLCB5aTsKKyAgICAgICAgIHlyID0gU19NVUwoKnhwMiwgdFtpXSkgKyBTX01VTCgqeHAx
LCB0W040K2ldKTsKKyAgICAgICAgIHlpID0gU19NVUwoKnhwMSwgdFtpXSkgLSBTX01VTCgqeHAy
LCB0W040K2ldKTsKKyAgICAgICAgIHlwWzIqaV0gPSB5cjsKKyAgICAgICAgIHlwWzIqaSsxXSA9
IHlpOworICAgICAgICAgeHAxKz0yKnN0cmlkZTsKKyAgICAgICAgIHhwMi09MipzdHJpZGU7Cisg
ICAgICB9CisgICB9CisKKyAgIG9wdXNfaWZmdChzdCwgKGtpc3NfZmZ0X2NweCAqKWYsIChraXNz
X2ZmdF9jcHgqKShvdXQrKG92ZXJsYXA+PjEpKSwgYXJjaCk7CisKKyAgIC8qIFBvc3Qtcm90YXRl
IGFuZCBkZS1zaHVmZmxlIGZyb20gYm90aCBlbmRzIG9mIHRoZSBidWZmZXIgYXQgb25jZSB0byBt
YWtlCisgICAgICBpdCBpbi1wbGFjZS4gKi8KKyAgIHsKKyAgICAgIGtpc3NfZmZ0X3NjYWxhciAq
IHlwMCA9IG91dCsob3ZlcmxhcD4+MSk7CisgICAgICBraXNzX2ZmdF9zY2FsYXIgKiB5cDEgPSBv
dXQrKG92ZXJsYXA+PjEpK04yLTI7CisgICAgICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICp0
ID0gJnRyaWdbMF07CisgICAgICAvKiBMb29wIHRvIChONCsxKT4+MSB0byBoYW5kbGUgb2RkIE40
LiBXaGVuIE40IGlzIG9kZCwgdGhlCisgICAgICAgICBtaWRkbGUgcGFpciB3aWxsIGJlIGNvbXB1
dGVkIHR3aWNlLiAqLworICAgICAgZm9yKGk9MDtpPChONCsxKT4+MTtpKyspCisgICAgICB7Cisg
ICAgICAgICBraXNzX2ZmdF9zY2FsYXIgcmUsIGltLCB5ciwgeWk7CisgICAgICAgICBraXNzX3R3
aWRkbGVfc2NhbGFyIHQwLCB0MTsKKyAgICAgICAgIHJlID0geXAwWzBdOworICAgICAgICAgaW0g
PSB5cDBbMV07CisgICAgICAgICB0MCA9IHRbaV07CisgICAgICAgICB0MSA9IHRbTjQraV07Cisg
ICAgICAgICAvKiBXZSdkIHNjYWxlIHVwIGJ5IDIgaGVyZSwgYnV0IGluc3RlYWQgaXQncyBkb25l
IHdoZW4gbWl4aW5nIHRoZSB3aW5kb3dzICovCisgICAgICAgICB5ciA9IFNfTVVMKHJlLHQwKSAr
IFNfTVVMKGltLHQxKTsKKyAgICAgICAgIHlpID0gU19NVUwocmUsdDEpIC0gU19NVUwoaW0sdDAp
OworICAgICAgICAgcmUgPSB5cDFbMF07CisgICAgICAgICBpbSA9IHlwMVsxXTsKKyAgICAgICAg
IHlwMFswXSA9IHlyOworICAgICAgICAgeXAxWzFdID0geWk7CisKKyAgICAgICAgIHQwID0gdFso
TjQtaS0xKV07CisgICAgICAgICB0MSA9IHRbKE4yLWktMSldOworICAgICAgICAgLyogV2UnZCBz
Y2FsZSB1cCBieSAyIGhlcmUsIGJ1dCBpbnN0ZWFkIGl0J3MgZG9uZSB3aGVuIG1peGluZyB0aGUg
d2luZG93cyAqLworICAgICAgICAgeXIgPSBTX01VTChyZSx0MCkgKyBTX01VTChpbSx0MSk7Cisg
ICAgICAgICB5aSA9IFNfTVVMKHJlLHQxKSAtIFNfTVVMKGltLHQwKTsKKyAgICAgICAgIHlwMVsw
XSA9IHlyOworICAgICAgICAgeXAwWzFdID0geWk7CisgICAgICAgICB5cDAgKz0gMjsKKyAgICAg
ICAgIHlwMSAtPSAyOworICAgICAgfQorICAgfQorCisgICAvKiBNaXJyb3Igb24gYm90aCBzaWRl
cyBmb3IgVERBQyAqLworICAgeworICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklD
VCB4cDEgPSBvdXQrb3ZlcmxhcC0xOworICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNU
UklDVCB5cDEgPSBvdXQ7CisgICAgICBjb25zdCBvcHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB3
cDEgPSB3aW5kb3c7CisgICAgICBjb25zdCBvcHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB3cDIg
PSB3aW5kb3crb3ZlcmxhcC0xOworCisgICAgICBmb3IoaSA9IDA7IGkgPCBvdmVybGFwLzI7IGkr
KykKKyAgICAgIHsKKyAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciB4MSwgeDI7CisgICAgICAgICB4
MSA9ICp4cDE7CisgICAgICAgICB4MiA9ICp5cDE7CisgICAgICAgICAqeXAxKysgPSBNVUxUMTZf
MzJfUTE1KCp3cDIsIHgyKSAtIE1VTFQxNl8zMl9RMTUoKndwMSwgeDEpOworICAgICAgICAgKnhw
MS0tID0gTVVMVDE2XzMyX1ExNSgqd3AxLCB4MikgKyBNVUxUMTZfMzJfUTE1KCp3cDIsIHgxKTsK
KyAgICAgICAgIHdwMSsrOworICAgICAgICAgd3AyLS07CisgICAgICB9CisgICB9CisgICBSRVNU
T1JFX1NUQUNLOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X25lMTBfZmZ0LmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQv
YXJtL2NlbHRfbmUxMF9mZnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjNjBh
YmU5OGI4MzU3MWEwYmM4NTg1MDgxYTU3ZmFjYjVhNTZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRfbmUxMF9mZnQuYworKysgL2Rl
di9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTUgWGlwaC5Pcmcg
Rm91bmRhdGlvbgotICAgV3JpdHRlbiBieSBWaXN3YW5hdGggUHV0dGFndW50YSAqLwotLyoqCi0g
ICBAZmlsZSBjZWx0X25lMTBfZmZ0LmMKLSAgIEBicmllZiBBUk0gTmVvbiBvcHRpbWl6YXRpb25z
IGZvciBmZnQgdXNpbmcgTkUxMCBsaWJyYXJ5Ci0gKi8KLQotLyoKLSAgIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSAgIC0gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSAgIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAg
IGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKLSAgIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gICBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GCi0gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORwotICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gICBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZm5kZWYg
U0tJUF9DT05GSUdfSAotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIK
LSNlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxORTEwX2RzcC5oPgotI2luY2x1ZGUgIm9zX3N1
cHBvcnQuaCIKLSNpbmNsdWRlICJraXNzX2ZmdC5oIgotI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgi
Ci0KLSNpZiAhZGVmaW5lZChGSVhFRF9QT0lOVCkKLSMgZGVmaW5lIE5FMTBfRkZUX0FMTE9DX0My
Q19UWVBFX05FT04gbmUxMF9mZnRfYWxsb2NfYzJjX2Zsb2F0MzJfbmVvbgotIyBkZWZpbmUgTkUx
MF9GRlRfQ0ZHX1RZUEVfVCBuZTEwX2ZmdF9jZmdfZmxvYXQzMl90Ci0jIGRlZmluZSBORTEwX0ZG
VF9TVEFURV9UWVBFX1QgbmUxMF9mZnRfc3RhdGVfZmxvYXQzMl90Ci0jIGRlZmluZSBORTEwX0ZG
VF9ERVNUUk9ZX0MyQ19UWVBFIG5lMTBfZmZ0X2Rlc3Ryb3lfYzJjX2Zsb2F0MzIKLSMgZGVmaW5l
IE5FMTBfRkZUX0NQWF9UWVBFX1QgbmUxMF9mZnRfY3B4X2Zsb2F0MzJfdAotIyBkZWZpbmUgTkUx
MF9GRlRfQzJDXzFEX1RZUEVfTkVPTiBuZTEwX2ZmdF9jMmNfMWRfZmxvYXQzMl9uZW9uCi0jZWxz
ZQotIyBkZWZpbmUgTkUxMF9GRlRfQUxMT0NfQzJDX1RZUEVfTkVPTihuZmZ0KSBuZTEwX2ZmdF9h
bGxvY19jMmNfaW50MzJfbmVvbihuZmZ0KQotIyBkZWZpbmUgTkUxMF9GRlRfQ0ZHX1RZUEVfVCBu
ZTEwX2ZmdF9jZmdfaW50MzJfdAotIyBkZWZpbmUgTkUxMF9GRlRfU1RBVEVfVFlQRV9UIG5lMTBf
ZmZ0X3N0YXRlX2ludDMyX3QKLSMgZGVmaW5lIE5FMTBfRkZUX0RFU1RST1lfQzJDX1RZUEUgbmUx
MF9mZnRfZGVzdHJveV9jMmNfaW50MzIKLSMgZGVmaW5lIE5FMTBfRkZUX0RFU1RST1lfQzJDX1RZ
UEUgbmUxMF9mZnRfZGVzdHJveV9jMmNfaW50MzIKLSMgZGVmaW5lIE5FMTBfRkZUX0NQWF9UWVBF
X1QgbmUxMF9mZnRfY3B4X2ludDMyX3QKLSMgZGVmaW5lIE5FMTBfRkZUX0MyQ18xRF9UWVBFX05F
T04gbmUxMF9mZnRfYzJjXzFkX2ludDMyX25lb24KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChDVVNU
T01fTU9ERVMpCi0KLS8qIG5mZnQgbGVuZ3RocyBpbiBORTEwIHRoYXQgc3VwcG9ydCBzY2FsZWQg
ZmZ0ICovCi0jIGRlZmluZSBORTEwX0ZGVFNDQUxFRF9TVVBQT1JUX01BWCA0Ci1zdGF0aWMgY29u
c3QgaW50IG5lMTBfZmZ0X3NjYWxlZF9zdXBwb3J0W05FMTBfRkZUU0NBTEVEX1NVUFBPUlRfTUFY
XSA9IHsKLSAgIDQ4MCwgMjQwLCAxMjAsIDYwCi19OwotCi1pbnQgb3B1c19mZnRfYWxsb2NfYXJt
X25lb24oa2lzc19mZnRfc3RhdGUgKnN0KQotewotICAgaW50IGk7Ci0gICBzaXplX3QgbWVtbmVl
ZGVkID0gc2l6ZW9mKHN0cnVjdCBhcmNoX2ZmdF9zdGF0ZSk7Ci0KLSAgIHN0LT5hcmNoX2ZmdCA9
IChhcmNoX2ZmdF9zdGF0ZSAqKW9wdXNfYWxsb2MobWVtbmVlZGVkKTsKLSAgIGlmICghc3QtPmFy
Y2hfZmZ0KQotICAgICAgcmV0dXJuIC0xOwotCi0gICBmb3IgKGkgPSAwOyBpIDwgTkUxMF9GRlRT
Q0FMRURfU1VQUE9SVF9NQVg7IGkrKykgewotICAgICAgaWYoc3QtPm5mZnQgPT0gbmUxMF9mZnRf
c2NhbGVkX3N1cHBvcnRbaV0pCi0gICAgICAgICBicmVhazsKLSAgIH0KLSAgIGlmIChpID09IE5F
MTBfRkZUU0NBTEVEX1NVUFBPUlRfTUFYKSB7Ci0gICAgICAvKiBUaGlzIG5mZnQgbGVuZ3RoIChz
Y2FsZWQgZmZ0KSBpcyBub3Qgc3VwcG9ydGVkIGluIE5FMTAgKi8KLSAgICAgIHN0LT5hcmNoX2Zm
dC0+aXNfc3VwcG9ydGVkID0gMDsKLSAgICAgIHN0LT5hcmNoX2ZmdC0+cHJpdiA9IE5VTEw7Ci0g
ICB9Ci0gICBlbHNlIHsKLSAgICAgIHN0LT5hcmNoX2ZmdC0+aXNfc3VwcG9ydGVkID0gMTsKLSAg
ICAgIHN0LT5hcmNoX2ZmdC0+cHJpdiA9ICh2b2lkICopTkUxMF9GRlRfQUxMT0NfQzJDX1RZUEVf
TkVPTihzdC0+bmZmdCk7Ci0gICAgICBpZiAoc3QtPmFyY2hfZmZ0LT5wcml2ID09IE5VTEwpIHsK
LSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiAwOwotfQotCi12
b2lkIG9wdXNfZmZ0X2ZyZWVfYXJtX25lb24oa2lzc19mZnRfc3RhdGUgKnN0KQotewotICAgTkUx
MF9GRlRfQ0ZHX1RZUEVfVCBjZmc7Ci0KLSAgIGlmICghc3QtPmFyY2hfZmZ0KQotICAgICAgcmV0
dXJuOwotCi0gICBjZmcgPSAoTkUxMF9GRlRfQ0ZHX1RZUEVfVClzdC0+YXJjaF9mZnQtPnByaXY7
Ci0gICBpZiAoY2ZnKQotICAgICAgTkUxMF9GRlRfREVTVFJPWV9DMkNfVFlQRShjZmcpOwotICAg
b3B1c19mcmVlKHN0LT5hcmNoX2ZmdCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBvcHVzX2ZmdF9uZW9u
KGNvbnN0IGtpc3NfZmZ0X3N0YXRlICpzdCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBraXNz
X2ZmdF9jcHggKmZpbiwKLSAgICAgICAgICAgICAgICAgICBraXNzX2ZmdF9jcHggKmZvdXQpCi17
Ci0gICBORTEwX0ZGVF9TVEFURV9UWVBFX1Qgc3RhdGU7Ci0gICBORTEwX0ZGVF9DRkdfVFlQRV9U
IGNmZyA9ICZzdGF0ZTsKLSAgIFZBUkRFQ0woTkUxMF9GRlRfQ1BYX1RZUEVfVCwgYnVmZmVyKTsK
LSAgIFNBVkVfU1RBQ0s7Ci0gICBBTExPQyhidWZmZXIsIHN0LT5uZmZ0LCBORTEwX0ZGVF9DUFhf
VFlQRV9UKTsKLQotICAgaWYgKCFzdC0+YXJjaF9mZnQtPmlzX3N1cHBvcnRlZCkgewotICAgICAg
LyogVGhpcyBuZmZ0IGxlbmd0aCAoc2NhbGVkIGZmdCkgbm90IHN1cHBvcnRlZCBpbiBORTEwICov
Ci0gICAgICBvcHVzX2ZmdF9jKHN0LCBmaW4sIGZvdXQpOwotICAgfQotICAgZWxzZSB7Ci0gICAg
ICBtZW1jcHkoKHZvaWQgKiljZmcsIHN0LT5hcmNoX2ZmdC0+cHJpdiwgc2l6ZW9mKE5FMTBfRkZU
X1NUQVRFX1RZUEVfVCkpOwotICAgICAgc3RhdGUuYnVmZmVyID0gKE5FMTBfRkZUX0NQWF9UWVBF
X1QgKikmYnVmZmVyWzBdOwotI2lmICFkZWZpbmVkKEZJWEVEX1BPSU5UKQotICAgICAgc3RhdGUu
aXNfZm9yd2FyZF9zY2FsZWQgPSAxOwotCi0gICAgICBORTEwX0ZGVF9DMkNfMURfVFlQRV9ORU9O
KChORTEwX0ZGVF9DUFhfVFlQRV9UICopZm91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmaW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNmZywgMCk7Ci0jZWxzZQotICAgICAgTkUxMF9GRlRfQzJDXzFEX1RZUEVfTkVP
TigoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChORTEwX0ZGVF9DUFhfVFlQRV9UICopZmluLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjZmcsIDAsIDEpOwotI2VuZGlmCi0gICB9Ci0gICBSRVNUT1JFX1NUQUNLOwot
fQotCi12b2lkIG9wdXNfaWZmdF9uZW9uKGNvbnN0IGtpc3NfZmZ0X3N0YXRlICpzdCwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3Qga2lzc19mZnRfY3B4ICpmaW4sCi0gICAgICAgICAgICAgICAg
ICAgIGtpc3NfZmZ0X2NweCAqZm91dCkKLXsKLSAgIE5FMTBfRkZUX1NUQVRFX1RZUEVfVCBzdGF0
ZTsKLSAgIE5FMTBfRkZUX0NGR19UWVBFX1QgY2ZnID0gJnN0YXRlOwotICAgVkFSREVDTChORTEw
X0ZGVF9DUFhfVFlQRV9ULCBidWZmZXIpOwotICAgU0FWRV9TVEFDSzsKLSAgIEFMTE9DKGJ1ZmZl
ciwgc3QtPm5mZnQsIE5FMTBfRkZUX0NQWF9UWVBFX1QpOwotCi0gICBpZiAoIXN0LT5hcmNoX2Zm
dC0+aXNfc3VwcG9ydGVkKSB7Ci0gICAgICAvKiBUaGlzIG5mZnQgbGVuZ3RoIChzY2FsZWQgZmZ0
KSBub3Qgc3VwcG9ydGVkIGluIE5FMTAgKi8KLSAgICAgIG9wdXNfaWZmdF9jKHN0LCBmaW4sIGZv
dXQpOwotICAgfQotICAgZWxzZSB7Ci0gICAgICBtZW1jcHkoKHZvaWQgKiljZmcsIHN0LT5hcmNo
X2ZmdC0+cHJpdiwgc2l6ZW9mKE5FMTBfRkZUX1NUQVRFX1RZUEVfVCkpOwotICAgICAgc3RhdGUu
YnVmZmVyID0gKE5FMTBfRkZUX0NQWF9UWVBFX1QgKikmYnVmZmVyWzBdOwotI2lmICFkZWZpbmVk
KEZJWEVEX1BPSU5UKQotICAgICAgc3RhdGUuaXNfYmFja3dhcmRfc2NhbGVkID0gMDsKLQotICAg
ICAgTkUxMF9GRlRfQzJDXzFEX1RZUEVfTkVPTigoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZvdXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChORTEwX0ZGVF9DUFhfVFlQRV9UICop
ZmluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmcsIDEpOwotI2Vsc2UKLSAg
ICAgIE5FMTBfRkZUX0MyQ18xRF9UWVBFX05FT04oKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmb3V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkUxMF9GRlRfQ1BYX1RZUEVfVCAq
KWZpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLCAxLCAwKTsKLSNlbmRp
ZgotICAgfQotICAgUkVTVE9SRV9TVEFDSzsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9u
ZTEwX21kY3QuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9uZTEwX21kY3QuYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjkzYzNlZmQ3YTI0MmEzNWRmMmFlMjZmZDg5MGNlOGMyNjc2MTkzMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRf
bmUxMF9tZGN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotLyogQ29weXJpZ2h0
IChjKSAyMDE1IFhpcGguT3JnIEZvdW5kYXRpb24KLSAgIFdyaXR0ZW4gYnkgVmlzd2FuYXRoIFB1
dHRhZ3VudGEgKi8KLS8qKgotICAgQGZpbGUgY2VsdF9uZTEwX21kY3QuYwotICAgQGJyaWVmIEFS
TSBOZW9uIG9wdGltaXphdGlvbnMgZm9yIG1kY3QgdXNpbmcgTkUxMCBsaWJyYXJ5Ci0gKi8KLQot
LyoKLSAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAtIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0KLSAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0KLSAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAgIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIKLSAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICAgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICAgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCi0gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotICAgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0g
ICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSovCi0KLSNpZm5kZWYgU0tJUF9DT05GSUdfSAotI2lmZGVmIEhBVkVfQ09ORklHX0gK
LSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlICJraXNzX2Zm
dC5oIgotI2luY2x1ZGUgIl9raXNzX2ZmdF9ndXRzLmgiCi0jaW5jbHVkZSAibWRjdC5oIgotI2lu
Y2x1ZGUgInN0YWNrX2FsbG9jLmgiCi0KLXZvaWQgY2x0X21kY3RfZm9yd2FyZF9uZW9uKGNvbnN0
IG1kY3RfbG9va3VwICpsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAga2lzc19mZnRfc2Nh
bGFyICppbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9Q
VVNfUkVTVFJJQ1Qgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B1c192
YWwxNiAqd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJsYXAsIGlu
dCBzaGlmdCwgaW50IHN0cmlkZSwgaW50IGFyY2gpCi17Ci0gICBpbnQgaTsKLSAgIGludCBOLCBO
MiwgTjQ7Ci0gICBWQVJERUNMKGtpc3NfZmZ0X3NjYWxhciwgZik7Ci0gICBWQVJERUNMKGtpc3Nf
ZmZ0X2NweCwgZjIpOwotICAgY29uc3Qga2lzc19mZnRfc3RhdGUgKnN0ID0gbC0+a2ZmdFtzaGlm
dF07Ci0gICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICp0cmlnOwotCi0gICBTQVZFX1NUQUNL
OwotCi0gICBOID0gbC0+bjsKLSAgIHRyaWcgPSBsLT50cmlnOwotICAgZm9yIChpPTA7aTxzaGlm
dDtpKyspCi0gICB7Ci0gICAgICBOID4+PSAxOwotICAgICAgdHJpZyArPSBOOwotICAgfQotICAg
TjIgPSBOPj4xOwotICAgTjQgPSBOPj4yOwotCi0gICBBTExPQyhmLCBOMiwga2lzc19mZnRfc2Nh
bGFyKTsKLSAgIEFMTE9DKGYyLCBONCwga2lzc19mZnRfY3B4KTsKLQotICAgLyogQ29uc2lkZXIg
dGhlIGlucHV0IHRvIGJlIGNvbXBvc2VkIG9mIGZvdXIgYmxvY2tzOiBbYSwgYiwgYywgZF0gKi8K
LSAgIC8qIFdpbmRvdywgc2h1ZmZsZSwgZm9sZCAqLwotICAgewotICAgICAgLyogVGVtcCBwb2lu
dGVycyB0byBtYWtlIGl0IHJlYWxseSBjbGVhciB0byB0aGUgY29tcGlsZXIgd2hhdCB3ZSdyZSBk
b2luZyAqLwotICAgICAgY29uc3Qga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB4cDEg
PSBpbisob3ZlcmxhcD4+MSk7Ci0gICAgICBjb25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JF
U1RSSUNUIHhwMiA9IGluK04yLTErKG92ZXJsYXA+PjEpOwotICAgICAga2lzc19mZnRfc2NhbGFy
ICogT1BVU19SRVNUUklDVCB5cCA9IGY7Ci0gICAgICBjb25zdCBvcHVzX3ZhbDE2ICogT1BVU19S
RVNUUklDVCB3cDEgPSB3aW5kb3crKG92ZXJsYXA+PjEpOwotICAgICAgY29uc3Qgb3B1c192YWwx
NiAqIE9QVVNfUkVTVFJJQ1Qgd3AyID0gd2luZG93KyhvdmVybGFwPj4xKS0xOwotICAgICAgZm9y
KGk9MDtpPCgob3ZlcmxhcCszKT4+Mik7aSsrKQotICAgICAgewotICAgICAgICAgLyogUmVhbCBw
YXJ0IGFycmFuZ2VkIGFzIC1kLWNSLCBJbWFnIHBhcnQgYXJyYW5nZWQgYXMgLWIrYVIqLwotICAg
ICAgICAgKnlwKysgPSBNVUxUMTZfMzJfUTE1KCp3cDIsIHhwMVtOMl0pICsgTVVMVDE2XzMyX1Ex
NSgqd3AxLCp4cDIpOwotICAgICAgICAgKnlwKysgPSBNVUxUMTZfMzJfUTE1KCp3cDEsICp4cDEp
ICAgIC0gTVVMVDE2XzMyX1ExNSgqd3AyLCB4cDJbLU4yXSk7Ci0gICAgICAgICB4cDErPTI7Ci0g
ICAgICAgICB4cDItPTI7Ci0gICAgICAgICB3cDErPTI7Ci0gICAgICAgICB3cDItPTI7Ci0gICAg
ICB9Ci0gICAgICB3cDEgPSB3aW5kb3c7Ci0gICAgICB3cDIgPSB3aW5kb3crb3ZlcmxhcC0xOwot
ICAgICAgZm9yKDtpPE40LSgob3ZlcmxhcCszKT4+Mik7aSsrKQotICAgICAgewotICAgICAgICAg
LyogUmVhbCBwYXJ0IGFycmFuZ2VkIGFzIGEtYlIsIEltYWcgcGFydCBhcnJhbmdlZCBhcyAtYy1k
UiAqLwotICAgICAgICAgKnlwKysgPSAqeHAyOwotICAgICAgICAgKnlwKysgPSAqeHAxOwotICAg
ICAgICAgeHAxKz0yOwotICAgICAgICAgeHAyLT0yOwotICAgICAgfQotICAgICAgZm9yKDtpPE40
O2krKykKLSAgICAgIHsKLSAgICAgICAgIC8qIFJlYWwgcGFydCBhcnJhbmdlZCBhcyBhLWJSLCBJ
bWFnIHBhcnQgYXJyYW5nZWQgYXMgLWMtZFIgKi8KLSAgICAgICAgICp5cCsrID0gIC1NVUxUMTZf
MzJfUTE1KCp3cDEsIHhwMVstTjJdKSArIE1VTFQxNl8zMl9RMTUoKndwMiwgKnhwMik7Ci0gICAg
ICAgICAqeXArKyA9IE1VTFQxNl8zMl9RMTUoKndwMiwgKnhwMSkgICAgICsgTVVMVDE2XzMyX1Ex
NSgqd3AxLCB4cDJbTjJdKTsKLSAgICAgICAgIHhwMSs9MjsKLSAgICAgICAgIHhwMi09MjsKLSAg
ICAgICAgIHdwMSs9MjsKLSAgICAgICAgIHdwMi09MjsKLSAgICAgIH0KLSAgIH0KLSAgIC8qIFBy
ZS1yb3RhdGlvbiAqLwotICAgewotICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklD
VCB5cCA9IGY7Ci0gICAgICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICp0ID0gJnRyaWdbMF07
Ci0gICAgICBmb3IoaT0wO2k8TjQ7aSsrKQotICAgICAgewotICAgICAgICAga2lzc19mZnRfY3B4
IHljOwotICAgICAgICAga2lzc190d2lkZGxlX3NjYWxhciB0MCwgdDE7Ci0gICAgICAgICBraXNz
X2ZmdF9zY2FsYXIgcmUsIGltLCB5ciwgeWk7Ci0gICAgICAgICB0MCA9IHRbaV07Ci0gICAgICAg
ICB0MSA9IHRbTjQraV07Ci0gICAgICAgICByZSA9ICp5cCsrOwotICAgICAgICAgaW0gPSAqeXAr
KzsKLSAgICAgICAgIHlyID0gU19NVUwocmUsdDApICAtICBTX01VTChpbSx0MSk7Ci0gICAgICAg
ICB5aSA9IFNfTVVMKGltLHQwKSAgKyAgU19NVUwocmUsdDEpOwotICAgICAgICAgeWMuciA9IHly
OwotICAgICAgICAgeWMuaSA9IHlpOwotICAgICAgICAgZjJbaV0gPSB5YzsKLSAgICAgIH0KLSAg
IH0KLQotICAgb3B1c19mZnQoc3QsIGYyLCAoa2lzc19mZnRfY3B4ICopZiwgYXJjaCk7Ci0KLSAg
IC8qIFBvc3Qtcm90YXRlICovCi0gICB7Ci0gICAgICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2Ug
aXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21waWxlciB3aGF0IHdlJ3JlIGRvaW5nICovCi0gICAg
ICBjb25zdCBraXNzX2ZmdF9jcHggKiBPUFVTX1JFU1RSSUNUIGZwID0gKGtpc3NfZmZ0X2NweCAq
KWY7Ci0gICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHlwMSA9IG91dDsKLSAg
ICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVTVFJJQ1QgeXAyID0gb3V0K3N0cmlkZSooTjIt
MSk7Ci0gICAgICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICp0ID0gJnRyaWdbMF07Ci0gICAg
ICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2UgaXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21waWxl
ciB3aGF0IHdlJ3JlIGRvaW5nICovCi0gICAgICBmb3IoaT0wO2k8TjQ7aSsrKQotICAgICAgewot
ICAgICAgICAga2lzc19mZnRfc2NhbGFyIHlyLCB5aTsKLSAgICAgICAgIHlyID0gU19NVUwoZnAt
PmksdFtONCtpXSkgLSBTX01VTChmcC0+cix0W2ldKTsKLSAgICAgICAgIHlpID0gU19NVUwoZnAt
PnIsdFtONCtpXSkgKyBTX01VTChmcC0+aSx0W2ldKTsKLSAgICAgICAgICp5cDEgPSB5cjsKLSAg
ICAgICAgICp5cDIgPSB5aTsKLSAgICAgICAgIGZwKys7Ci0gICAgICAgICB5cDEgKz0gMipzdHJp
ZGU7Ci0gICAgICAgICB5cDIgLT0gMipzdHJpZGU7Ci0gICAgICB9Ci0gICB9Ci0gICBSRVNUT1JF
X1NUQUNLOwotfQotCi12b2lkIGNsdF9tZGN0X2JhY2t3YXJkX25lb24oY29uc3QgbWRjdF9sb29r
dXAgKmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAga2lzc19mZnRfc2NhbGFyICppbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RS
SUNUIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHVzX3ZhbDE2ICog
T1BVU19SRVNUUklDVCB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92
ZXJsYXAsIGludCBzaGlmdCwgaW50IHN0cmlkZSwgaW50IGFyY2gpCi17Ci0gICBpbnQgaTsKLSAg
IGludCBOLCBOMiwgTjQ7Ci0gICBWQVJERUNMKGtpc3NfZmZ0X3NjYWxhciwgZik7Ci0gICBjb25z
dCBraXNzX3R3aWRkbGVfc2NhbGFyICp0cmlnOwotICAgY29uc3Qga2lzc19mZnRfc3RhdGUgKnN0
ID0gbC0+a2ZmdFtzaGlmdF07Ci0KLSAgIE4gPSBsLT5uOwotICAgdHJpZyA9IGwtPnRyaWc7Ci0g
ICBmb3IgKGk9MDtpPHNoaWZ0O2krKykKLSAgIHsKLSAgICAgIE4gPj49IDE7Ci0gICAgICB0cmln
ICs9IE47Ci0gICB9Ci0gICBOMiA9IE4+PjE7Ci0gICBONCA9IE4+PjI7Ci0KLSAgIEFMTE9DKGYs
IE4yLCBraXNzX2ZmdF9zY2FsYXIpOwotCi0gICAvKiBQcmUtcm90YXRlICovCi0gICB7Ci0gICAg
ICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2UgaXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21waWxl
ciB3aGF0IHdlJ3JlIGRvaW5nICovCi0gICAgICBjb25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVT
X1JFU1RSSUNUIHhwMSA9IGluOwotICAgICAgY29uc3Qga2lzc19mZnRfc2NhbGFyICogT1BVU19S
RVNUUklDVCB4cDIgPSBpbitzdHJpZGUqKE4yLTEpOwotICAgICAga2lzc19mZnRfc2NhbGFyICog
T1BVU19SRVNUUklDVCB5cCA9IGY7Ci0gICAgICBjb25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICog
T1BVU19SRVNUUklDVCB0ID0gJnRyaWdbMF07Ci0gICAgICBmb3IoaT0wO2k8TjQ7aSsrKQotICAg
ICAgewotICAgICAgICAga2lzc19mZnRfc2NhbGFyIHlyLCB5aTsKLSAgICAgICAgIHlyID0gU19N
VUwoKnhwMiwgdFtpXSkgKyBTX01VTCgqeHAxLCB0W040K2ldKTsKLSAgICAgICAgIHlpID0gU19N
VUwoKnhwMSwgdFtpXSkgLSBTX01VTCgqeHAyLCB0W040K2ldKTsKLSAgICAgICAgIHlwWzIqaV0g
PSB5cjsKLSAgICAgICAgIHlwWzIqaSsxXSA9IHlpOwotICAgICAgICAgeHAxKz0yKnN0cmlkZTsK
LSAgICAgICAgIHhwMi09MipzdHJpZGU7Ci0gICAgICB9Ci0gICB9Ci0KLSAgIG9wdXNfaWZmdChz
dCwgKGtpc3NfZmZ0X2NweCAqKWYsIChraXNzX2ZmdF9jcHgqKShvdXQrKG92ZXJsYXA+PjEpKSwg
YXJjaCk7Ci0KLSAgIC8qIFBvc3Qtcm90YXRlIGFuZCBkZS1zaHVmZmxlIGZyb20gYm90aCBlbmRz
IG9mIHRoZSBidWZmZXIgYXQgb25jZSB0byBtYWtlCi0gICAgICBpdCBpbi1wbGFjZS4gKi8KLSAg
IHsKLSAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIHlwMCA9IG91dCsob3ZlcmxhcD4+MSk7Ci0gICAg
ICBraXNzX2ZmdF9zY2FsYXIgKiB5cDEgPSBvdXQrKG92ZXJsYXA+PjEpK04yLTI7Ci0gICAgICBj
b25zdCBraXNzX3R3aWRkbGVfc2NhbGFyICp0ID0gJnRyaWdbMF07Ci0gICAgICAvKiBMb29wIHRv
IChONCsxKT4+MSB0byBoYW5kbGUgb2RkIE40LiBXaGVuIE40IGlzIG9kZCwgdGhlCi0gICAgICAg
ICBtaWRkbGUgcGFpciB3aWxsIGJlIGNvbXB1dGVkIHR3aWNlLiAqLwotICAgICAgZm9yKGk9MDtp
PChONCsxKT4+MTtpKyspCi0gICAgICB7Ci0gICAgICAgICBraXNzX2ZmdF9zY2FsYXIgcmUsIGlt
LCB5ciwgeWk7Ci0gICAgICAgICBraXNzX3R3aWRkbGVfc2NhbGFyIHQwLCB0MTsKLSAgICAgICAg
IHJlID0geXAwWzBdOwotICAgICAgICAgaW0gPSB5cDBbMV07Ci0gICAgICAgICB0MCA9IHRbaV07
Ci0gICAgICAgICB0MSA9IHRbTjQraV07Ci0gICAgICAgICAvKiBXZSdkIHNjYWxlIHVwIGJ5IDIg
aGVyZSwgYnV0IGluc3RlYWQgaXQncyBkb25lIHdoZW4gbWl4aW5nIHRoZSB3aW5kb3dzICovCi0g
ICAgICAgICB5ciA9IFNfTVVMKHJlLHQwKSArIFNfTVVMKGltLHQxKTsKLSAgICAgICAgIHlpID0g
U19NVUwocmUsdDEpIC0gU19NVUwoaW0sdDApOwotICAgICAgICAgcmUgPSB5cDFbMF07Ci0gICAg
ICAgICBpbSA9IHlwMVsxXTsKLSAgICAgICAgIHlwMFswXSA9IHlyOwotICAgICAgICAgeXAxWzFd
ID0geWk7Ci0KLSAgICAgICAgIHQwID0gdFsoTjQtaS0xKV07Ci0gICAgICAgICB0MSA9IHRbKE4y
LWktMSldOwotICAgICAgICAgLyogV2UnZCBzY2FsZSB1cCBieSAyIGhlcmUsIGJ1dCBpbnN0ZWFk
IGl0J3MgZG9uZSB3aGVuIG1peGluZyB0aGUgd2luZG93cyAqLwotICAgICAgICAgeXIgPSBTX01V
TChyZSx0MCkgKyBTX01VTChpbSx0MSk7Ci0gICAgICAgICB5aSA9IFNfTVVMKHJlLHQxKSAtIFNf
TVVMKGltLHQwKTsKLSAgICAgICAgIHlwMVswXSA9IHlyOwotICAgICAgICAgeXAwWzFdID0geWk7
Ci0gICAgICAgICB5cDAgKz0gMjsKLSAgICAgICAgIHlwMSAtPSAyOwotICAgICAgfQotICAgfQot
Ci0gICAvKiBNaXJyb3Igb24gYm90aCBzaWRlcyBmb3IgVERBQyAqLwotICAgewotICAgICAga2lz
c19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB4cDEgPSBvdXQrb3ZlcmxhcC0xOwotICAgICAg
a2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB5cDEgPSBvdXQ7Ci0gICAgICBjb25zdCBv
cHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB3cDEgPSB3aW5kb3c7Ci0gICAgICBjb25zdCBvcHVz
X3ZhbDE2ICogT1BVU19SRVNUUklDVCB3cDIgPSB3aW5kb3crb3ZlcmxhcC0xOwotCi0gICAgICBm
b3IoaSA9IDA7IGkgPCBvdmVybGFwLzI7IGkrKykKLSAgICAgIHsKLSAgICAgICAgIGtpc3NfZmZ0
X3NjYWxhciB4MSwgeDI7Ci0gICAgICAgICB4MSA9ICp4cDE7Ci0gICAgICAgICB4MiA9ICp5cDE7
Ci0gICAgICAgICAqeXAxKysgPSBNVUxUMTZfMzJfUTE1KCp3cDIsIHgyKSAtIE1VTFQxNl8zMl9R
MTUoKndwMSwgeDEpOwotICAgICAgICAgKnhwMS0tID0gTVVMVDE2XzMyX1ExNSgqd3AxLCB4Mikg
KyBNVUxUMTZfMzJfUTE1KCp3cDIsIHgxKTsKLSAgICAgICAgIHdwMSsrOwotICAgICAgICAgd3Ay
LS07Ci0gICAgICB9Ci0gICB9Ci0gICBSRVNUT1JFX1NUQUNLOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0
L2FybS9jZWx0X25lb25faW50ci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X25lb25faW50ci5jCmluZGV4IGNm
NDQzOTg4Y2U1ZmU1MzIzYjg0NDVjYjY1NmE5OTFhOThkYTUxNGYuLmVmZmRhNzY5ZDA3Y2YxZDhi
MDgzMmZmZDBmN2FlMmQ0ZTgxOGU5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9uZW9uX2lu
dHIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRfbmVvbl9pbnRyLmMKQEAgLTE5Niw3ICsxOTYsNyBAQCB2
b2lkIGNlbHRfcGl0Y2hfeGNvcnJfZmxvYXRfbmVvbihjb25zdCBvcHVzX3ZhbDE2ICpfeCwgY29u
c3Qgb3B1c192YWwxNiAqX3ksCiAgICBpbnQgaTsKICAgICh2b2lkKWFyY2g7CiAgICBjZWx0X2Fz
c2VydChtYXhfcGl0Y2ggPiAwKTsKLSAgIGNlbHRfYXNzZXJ0KCgoKHVuc2lnbmVkIGNoYXIgKilf
eC0odW5zaWduZWQgY2hhciAqKU5VTEwpJjMpPT0wKTsKKyAgIGNlbHRfc2lnX2Fzc2VydCgoKCh1
bnNpZ25lZCBjaGFyICopX3gtKHVuc2lnbmVkIGNoYXIgKilOVUxMKSYzKT09MCk7CiAKICAgIGZv
ciAoaSA9IDA7IGkgPCAobWF4X3BpdGNoLTMpOyBpICs9IDQpIHsKICAgICAgIHhjb3JyX2tlcm5l
bF9uZW9uX2Zsb2F0KChjb25zdCBmbG9hdDMyX3QgKilfeCwgKGNvbnN0IGZsb2F0MzJfdCAqKV95
K2ksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQvYmFuZHMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9iYW5kcy5jCmluZGV4IDNiMWY1Y2Zi
YmU4YTgxYzdmNDdiNzAwYWM4Nzg5OWQ4MDk5MDYyODUuLjI3MDI5NjNjMzdhZmUxNzNkMDQyMmYw
ZTM2ZTgxM2U1Nzc2NjdkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9iYW5kcy5jCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9iYW5k
cy5jCkBAIC03MCwxMCArNzAsMTAgQEAgb3B1c19pbnQxNiBiaXRleGFjdF9jb3Mob3B1c19pbnQx
NiB4KQogICAgb3B1c19pbnQzMiB0bXA7CiAgICBvcHVzX2ludDE2IHgyOwogICAgdG1wID0gKDQw
OTYrKChvcHVzX2ludDMyKSh4KSooeCkpKT4+MTM7Ci0gICBjZWx0X2Fzc2VydCh0bXA8PTMyNzY3
KTsKKyAgIGNlbHRfc2lnX2Fzc2VydCh0bXA8PTMyNzY3KTsKICAgIHgyID0gdG1wOwogICAgeDIg
PSAoMzI3NjcteDIpICsgRlJBQ19NVUwxNih4MiwgKC03NjUxICsgRlJBQ19NVUwxNih4MiwgKDgy
NzcgKyBGUkFDX01VTDE2KC02MjYsIHgyKSkpKSk7Ci0gICBjZWx0X2Fzc2VydCh4Mjw9MzI3NjYp
OworICAgY2VsdF9zaWdfYXNzZXJ0KHgyPD0zMjc2Nik7CiAgICByZXR1cm4gMSt4MjsKIH0KIApA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgYW50aV9jb2xsYXBzZShjb25zdCBDRUxUTW9kZSAqbSwg
Y2VsdF9ub3JtICpYXywgdW5zaWduZWQgY2hhciAqY29sbGFwc2VfbWFzCiAKICAgICAgIE4wID0g
bS0+ZUJhbmRzW2krMV0tbS0+ZUJhbmRzW2ldOwogICAgICAgLyogZGVwdGggaW4gMS84IGJpdHMg
Ki8KLSAgICAgIGNlbHRfYXNzZXJ0KHB1bHNlc1tpXT49MCk7CisgICAgICBjZWx0X3NpZ19hc3Nl
cnQocHVsc2VzW2ldPj0wKTsKICAgICAgIGRlcHRoID0gY2VsdF91ZGl2KDErcHVsc2VzW2ldLCAo
bS0+ZUJhbmRzW2krMV0tbS0+ZUJhbmRzW2ldKSk+PkxNOwogCiAjaWZkZWYgRklYRURfUE9JTlQK
QEAgLTM3MSwxNCArMzcxLDE0IEBAIHZvaWQgYW50aV9jb2xsYXBzZShjb25zdCBDRUxUTW9kZSAq
bSwgY2VsdF9ub3JtICpYXywgdW5zaWduZWQgY2hhciAqY29sbGFwc2VfbWFzCiBzdGF0aWMgdm9p
ZCBjb21wdXRlX2NoYW5uZWxfd2VpZ2h0cyhjZWx0X2VuZXIgRXgsIGNlbHRfZW5lciBFeSwgb3B1
c192YWwxNiB3WzJdKQogewogICAgY2VsdF9lbmVyIG1pbkU7Ci0jaWYgRklYRURfUE9JTlQKKyNp
ZmRlZiBGSVhFRF9QT0lOVAogICAgaW50IHNoaWZ0OwogI2VuZGlmCiAgICBtaW5FID0gTUlOMzIo
RXgsIEV5KTsKICAgIC8qIEFkanVzdG1lbnQgdG8gbWFrZSB0aGUgd2VpZ2h0cyBhIGJpdCBtb3Jl
IGNvbnNlcnZhdGl2ZS4gKi8KICAgIEV4ID0gQUREMzIoRXgsIG1pbkUvMyk7CiAgICBFeSA9IEFE
RDMyKEV5LCBtaW5FLzMpOwotI2lmIEZJWEVEX1BPSU5UCisjaWZkZWYgRklYRURfUE9JTlQKICAg
IHNoaWZ0ID0gY2VsdF9pbG9nMihFUFNJTE9OK01BWDMyKEV4LCBFeSkpLTE0OwogI2VuZGlmCiAg
ICB3WzBdID0gVlNIUjMyKEV4LCBzaGlmdCk7CkBAIC00NzgsNyArNDc4LDcgQEAgc3RhdGljIHZv
aWQgc3RlcmVvX21lcmdlKGNlbHRfbm9ybSAqIE9QVVNfUkVTVFJJQ1QgWCwgY2VsdF9ub3JtICog
T1BVU19SRVNUUklDVAogLyogRGVjaWRlIHdoZXRoZXIgd2Ugc2hvdWxkIHNwcmVhZCB0aGUgcHVs
c2VzIGluIHRoZSBjdXJyZW50IGZyYW1lICovCiBpbnQgc3ByZWFkaW5nX2RlY2lzaW9uKGNvbnN0
IENFTFRNb2RlICptLCBjb25zdCBjZWx0X25vcm0gKlgsIGludCAqYXZlcmFnZSwKICAgICAgIGlu
dCBsYXN0X2RlY2lzaW9uLCBpbnQgKmhmX2F2ZXJhZ2UsIGludCAqdGFwc2V0X2RlY2lzaW9uLCBp
bnQgdXBkYXRlX2hmLAotICAgICAgaW50IGVuZCwgaW50IEMsIGludCBNKQorICAgICAgaW50IGVu
ZCwgaW50IEMsIGludCBNLCBjb25zdCBpbnQgKnNwcmVhZF93ZWlnaHQpCiB7CiAgICBpbnQgaSwg
YywgTjA7CiAgICBpbnQgc3VtID0gMCwgbmJCYW5kcz0wOwpAQCAtNTE5LDggKzUxOSw4IEBAIGlu
dCBzcHJlYWRpbmdfZGVjaXNpb24oY29uc3QgQ0VMVE1vZGUgKm0sIGNvbnN0IGNlbHRfbm9ybSAq
WCwgaW50ICphdmVyYWdlLAogICAgICAgICAgaWYgKGk+bS0+bmJFQmFuZHMtNCkKICAgICAgICAg
ICAgIGhmX3N1bSArPSBjZWx0X3VkaXYoMzIqKHRjb3VudFsxXSt0Y291bnRbMF0pLCBOKTsKICAg
ICAgICAgIHRtcCA9ICgyKnRjb3VudFsyXSA+PSBOKSArICgyKnRjb3VudFsxXSA+PSBOKSArICgy
KnRjb3VudFswXSA+PSBOKTsKLSAgICAgICAgIHN1bSArPSB0bXAqMjU2OwotICAgICAgICAgbmJC
YW5kcysrOworICAgICAgICAgc3VtICs9IHRtcCpzcHJlYWRfd2VpZ2h0W2ldOworICAgICAgICAg
bmJCYW5kcys9c3ByZWFkX3dlaWdodFtpXTsKICAgICAgIH0KICAgIH0gd2hpbGUgKCsrYzxDKTsK
IApAQCAtNTQ0LDcgKzU0NCw3IEBAIGludCBzcHJlYWRpbmdfZGVjaXNpb24oY29uc3QgQ0VMVE1v
ZGUgKm0sIGNvbnN0IGNlbHRfbm9ybSAqWCwgaW50ICphdmVyYWdlLAogICAgLypwcmludGYoIiVk
ICVkICVkXG4iLCBoZl9zdW0sICpoZl9hdmVyYWdlLCAqdGFwc2V0X2RlY2lzaW9uKTsqLwogICAg
Y2VsdF9hc3NlcnQobmJCYW5kcz4wKTsgLyogZW5kIGhhcyB0byBiZSBub24temVybyAqLwogICAg
Y2VsdF9hc3NlcnQoc3VtPj0wKTsKLSAgIHN1bSA9IGNlbHRfdWRpdihzdW0sIG5iQmFuZHMpOwor
ICAgc3VtID0gY2VsdF91ZGl2KChvcHVzX2ludDMyKXN1bTw8OCwgbmJCYW5kcyk7CiAgICAvKiBS
ZWN1cnNpdmUgYXZlcmFnaW5nICovCiAgICBzdW0gPSAoc3VtKyphdmVyYWdlKT4+MTsKICAgICph
dmVyYWdlID0gc3VtOwpAQCAtMTQ5Miw2ICsxNDkyLDcgQEAgdm9pZCBxdWFudF9hbGxfYmFuZHMo
aW50IGVuY29kZSwgY29uc3QgQ0VMVE1vZGUgKm0sIGludCBzdGFydCwgaW50IGVuZCwKICAgICAg
IGVsc2UKICAgICAgICAgIFkgPSBOVUxMOwogICAgICAgTiA9IE0qZUJhbmRzW2krMV0tTSplQmFu
ZHNbaV07CisgICAgICBjZWx0X2Fzc2VydChOID4gMCk7CiAgICAgICB0ZWxsID0gZWNfdGVsbF9m
cmFjKGVjKTsKIAogICAgICAgLyogQ29tcHV0ZSBob3cgbWFueSBiaXRzIHdlIHdhbnQgdG8gYWxs
b2NhdGUgdG8gdGhpcyBiYW5kICovCkBAIC0xNTA3LDcgKzE1MDgsNyBAQCB2b2lkIHF1YW50X2Fs
bF9iYW5kcyhpbnQgZW5jb2RlLCBjb25zdCBDRUxUTW9kZSAqbSwgaW50IHN0YXJ0LCBpbnQgZW5k
LAogICAgICAgICAgYiA9IDA7CiAgICAgICB9CiAKLSNpZmRlZiBFTkFCTEVfVVBEQVRFX0RSQUZU
CisjaWZuZGVmIERJU0FCTEVfVVBEQVRFX0RSQUZUCiAgICAgICBpZiAocmVzeW50aCAmJiAoTSpl
QmFuZHNbaV0tTiA+PSBNKmVCYW5kc1tzdGFydF0gfHwgaT09c3RhcnQrMSkgJiYgKHVwZGF0ZV9s
b3diYW5kIHx8IGxvd2JhbmRfb2Zmc2V0PT0wKSkKICAgICAgICAgICAgIGxvd2JhbmRfb2Zmc2V0
ID0gaTsKICAgICAgIGlmIChpID09IHN0YXJ0KzEpCkBAIC0xNTQxLDcgKzE1NDIsNyBAQCB2b2lk
IHF1YW50X2FsbF9iYW5kcyhpbnQgZW5jb2RlLCBjb25zdCBDRUxUTW9kZSAqbSwgaW50IHN0YXJ0
LCBpbnQgZW5kLAogICAgICAgICAgZm9sZF9zdGFydCA9IGxvd2JhbmRfb2Zmc2V0OwogICAgICAg
ICAgd2hpbGUoTSplQmFuZHNbLS1mb2xkX3N0YXJ0XSA+IGVmZmVjdGl2ZV9sb3diYW5kK25vcm1f
b2Zmc2V0KTsKICAgICAgICAgIGZvbGRfZW5kID0gbG93YmFuZF9vZmZzZXQtMTsKLSNpZmRlZiBF
TkFCTEVfVVBEQVRFX0RSQUZUCisjaWZuZGVmIERJU0FCTEVfVVBEQVRFX0RSQUZUCiAgICAgICAg
ICB3aGlsZSgrK2ZvbGRfZW5kIDwgaSAmJiBNKmVCYW5kc1tmb2xkX2VuZF0gPCBlZmZlY3RpdmVf
bG93YmFuZCtub3JtX29mZnNldCtOKTsKICNlbHNlCiAgICAgICAgICB3aGlsZShNKmVCYW5kc1sr
K2ZvbGRfZW5kXSA8IGVmZmVjdGl2ZV9sb3diYW5kK25vcm1fb2Zmc2V0K04pOwpAQCAtMTYyMSw4
ICsxNjIyLDEwIEBAIHZvaWQgcXVhbnRfYWxsX2JhbmRzKGludCBlbmNvZGUsIGNvbnN0IENFTFRN
b2RlICptLCBpbnQgc3RhcnQsIGludCBlbmQsCiAgICAgICAgICAgICAgICBjdHggPSBjdHhfc2F2
ZTsKICAgICAgICAgICAgICAgIE9QVVNfQ09QWShYLCBYX3NhdmUsIE4pOwogICAgICAgICAgICAg
ICAgT1BVU19DT1BZKFksIFlfc2F2ZSwgTik7CisjaWZuZGVmIERJU0FCTEVfVVBEQVRFX0RSQUZU
CiAgICAgICAgICAgICAgICBpZiAoaSA9PSBzdGFydCsxKQogICAgICAgICAgICAgICAgICAgc3Bl
Y2lhbF9oeWJyaWRfZm9sZGluZyhtLCBub3JtLCBub3JtMiwgc3RhcnQsIE0sIGR1YWxfc3RlcmVv
KTsKKyNlbmRpZgogICAgICAgICAgICAgICAgLyogRW5jb2RlIGFuZCByb3VuZCB1cC4gKi8KICAg
ICAgICAgICAgICAgIGN0eC50aGV0YV9yb3VuZCA9IDE7CiAgICAgICAgICAgICAgICB4X2NtID0g
cXVhbnRfYmFuZF9zdGVyZW8oJmN0eCwgWCwgWSwgTiwgYiwgQiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9i
YW5kcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L2JhbmRzLmgKaW5kZXggMjQ4OGMxODUyMTMwZDY1YzFlNzYwYmY1N2VlODVm
NjVlYzFiYjNiMC4uNDIyYjMyY2Y3NTM4OTJjYjJjMzQwNDM1YTAwMTBiZjM5NjI2YmYwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L2JhbmRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2JhbmRzLmgKQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBkZW5vcm1hbGlzZV9iYW5kcyhjb25zdCBDRUxUTW9kZSAqbSwgY29uc3QgY2VsdF9ub3Jt
ICogT1BVU19SRVNUUklDVCBYLAogCiBpbnQgc3ByZWFkaW5nX2RlY2lzaW9uKGNvbnN0IENFTFRN
b2RlICptLCBjb25zdCBjZWx0X25vcm0gKlgsIGludCAqYXZlcmFnZSwKICAgICAgIGludCBsYXN0
X2RlY2lzaW9uLCBpbnQgKmhmX2F2ZXJhZ2UsIGludCAqdGFwc2V0X2RlY2lzaW9uLCBpbnQgdXBk
YXRlX2hmLAotICAgICAgaW50IGVuZCwgaW50IEMsIGludCBNKTsKKyAgICAgIGludCBlbmQsIGlu
dCBDLCBpbnQgTSwgY29uc3QgaW50ICpzcHJlYWRfd2VpZ2h0KTsKIAogI2lmZGVmIE1FQVNVUkVf
Tk9STV9NU0UKIHZvaWQgbWVhc3VyZV9ub3JtX21zZShjb25zdCBDRUxUTW9kZSAqbSwgZmxvYXQg
KlgsIGZsb2F0ICpYMCwgZmxvYXQgKmJhbmRFLCBmbG9hdCAqYmFuZEUwLCBpbnQgTSwgaW50IE4s
IGludCBDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY2VsdC5oCmluZGV4IDcwMTc1
MzAxMDBhM2Q5MDQ1NmI3NjZhNTU4NDQ1ZGI5YWU0MzA4NmQuLjI0YjZiMmI1MjBkMTRjOTgyYTQ3
Y2RkOTFmZmNiYWZhMzIzNDM5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2Nl
bHQuaApAQCAtNTksOSArNTksMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgZmxvYXQgbm9pc2lu
ZXNzOwogICAgZmxvYXQgYWN0aXZpdHk7CiAgICBmbG9hdCBtdXNpY19wcm9iOwotICAgZmxvYXQg
dmFkX3Byb2I7CisgICBmbG9hdCBtdXNpY19wcm9iX21pbjsKKyAgIGZsb2F0IG11c2ljX3Byb2Jf
bWF4OwogICAgaW50ICAgYmFuZHdpZHRoOwogICAgZmxvYXQgYWN0aXZpdHlfcHJvYmFiaWxpdHk7
CisgICBmbG9hdCBtYXhfcGl0Y2hfcmF0aW87CiAgICAvKiBTdG9yZSBhcyBRNiBjaGFyIHRvIHNh
dmUgc3BhY2UuICovCiAgICB1bnNpZ25lZCBjaGFyIGxlYWtfYm9vc3RbTEVBS19CQU5EU107CiB9
IEFuYWx5c2lzSW5mbzsKQEAgLTIwNyw2ICsyMDksMTMgQEAgc3RhdGljIE9QVVNfSU5MSU5FIGlu
dCBmcm9tT3B1cyh1bnNpZ25lZCBjaGFyIGMpCiAKIGV4dGVybiBjb25zdCBzaWduZWQgY2hhciB0
Zl9zZWxlY3RfdGFibGVbNF1bOF07CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9IQVJERU5JTkcpIHx8
IGRlZmluZWQoRU5BQkxFX0FTU0VSVElPTlMpCit2b2lkIHZhbGlkYXRlX2NlbHRfZGVjb2RlcihD
RUxURGVjb2RlciAqc3QpOworI2RlZmluZSBWQUxJREFURV9DRUxUX0RFQ09ERVIoc3QpIHZhbGlk
YXRlX2NlbHRfZGVjb2RlcihzdCkKKyNlbHNlCisjZGVmaW5lIFZBTElEQVRFX0NFTFRfREVDT0RF
UihzdCkKKyNlbmRpZgorCiBpbnQgcmVzYW1wbGluZ19mYWN0b3Iob3B1c19pbnQzMiByYXRlKTsK
IAogdm9pZCBjZWx0X3ByZWVtcGhhc2lzKGNvbnN0IG9wdXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNU
IHBjbXAsIGNlbHRfc2lnICogT1BVU19SRVNUUklDVCBpbnAsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY2Vs
dF9kZWNvZGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL2NlbHQvY2VsdF9kZWNvZGVyLmMKaW5kZXggNTY3ZDc0NTY0OWI5OGFkOWM2
NjFmYmY1M2Y3M2QwYTdkYTBhNzhiMC4uZTZlZmNlOTM1ODUxZjc3ODAyZTIxNzE3YTE3YTg3ZTUw
ODdiMTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHRfZGVjb2Rlci5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0X2Rl
Y29kZXIuYwpAQCAtNTEsNiArNTEsMTQgQEAKICNpbmNsdWRlICJjZWx0X2xwYy5oIgogI2luY2x1
ZGUgInZxLmgiCiAKKy8qIFRoZSBtYXhpbXVtIHBpdGNoIGxhZyB0byBhbGxvdyBpbiB0aGUgcGl0
Y2gtYmFzZWQgUExDLiBJdCdzIHBvc3NpYmxlIHRvIHNhdmUKKyAgIENQVSB0aW1lIGluIHRoZSBQ
TEMgcGl0Y2ggc2VhcmNoIGJ5IG1ha2luZyB0aGlzIHNtYWxsZXIgdGhhbiBNQVhfUEVSSU9ELiBU
aGUKKyAgIGN1cnJlbnQgdmFsdWUgY29ycmVzcG9uZHMgdG8gYSBwaXRjaCBvZiA2Ni42NyBIei4g
Ki8KKyNkZWZpbmUgUExDX1BJVENIX0xBR19NQVggKDcyMCkKKy8qIFRoZSBtaW5pbXVtIHBpdGNo
IGxhZyB0byBhbGxvdyBpbiB0aGUgcGl0Y2gtYmFzZWQgUExDLiBUaGlzIGNvcnJlc3BvbmRzIHRv
IGEKKyAgIHBpdGNoIG9mIDQ4MCBIei4gKi8KKyNkZWZpbmUgUExDX1BJVENIX0xBR19NSU4gKDEw
MCkKKwogI2lmIGRlZmluZWQoU01BTExfRk9PVFBSSU5UKSAmJiBkZWZpbmVkKEZJWEVEX1BPSU5U
KQogI2RlZmluZSBOT1JNX0FMSUFTSU5HX0hBQ0sKICNlbmRpZgpAQCAtMTAxLDYgKzEwOSwzOCBA
QCBzdHJ1Y3QgT3B1c0N1c3RvbURlY29kZXIgewogICAgLyogb3B1c192YWwxNiBiYWNrZ3JvdW5k
TG9nRVtdLCBTaXplID0gMiptb2RlLT5uYkVCYW5kcyAqLwogfTsKIAorI2lmIGRlZmluZWQoRU5B
QkxFX0hBUkRFTklORykgfHwgZGVmaW5lZChFTkFCTEVfQVNTRVJUSU9OUykKKy8qIE1ha2UgYmFz
aWMgY2hlY2tzIG9uIHRoZSBDRUxUIHN0YXRlIHRvIGVuc3VyZSB3ZSBkb24ndCBlbmQKKyAgIHVw
IHdyaXRpbmcgYWxsIG92ZXIgbWVtb3J5LiAqLwordm9pZCB2YWxpZGF0ZV9jZWx0X2RlY29kZXIo
Q0VMVERlY29kZXIgKnN0KQoreworI2lmbmRlZiBDVVNUT01fTU9ERVMKKyAgIGNlbHRfYXNzZXJ0
KHN0LT5tb2RlID09IG9wdXNfY3VzdG9tX21vZGVfY3JlYXRlKDQ4MDAwLCA5NjAsIE5VTEwpKTsK
KyAgIGNlbHRfYXNzZXJ0KHN0LT5vdmVybGFwID09IDEyMCk7CisjZW5kaWYKKyAgIGNlbHRfYXNz
ZXJ0KHN0LT5jaGFubmVscyA9PSAxIHx8IHN0LT5jaGFubmVscyA9PSAyKTsKKyAgIGNlbHRfYXNz
ZXJ0KHN0LT5zdHJlYW1fY2hhbm5lbHMgPT0gMSB8fCBzdC0+c3RyZWFtX2NoYW5uZWxzID09IDIp
OworICAgY2VsdF9hc3NlcnQoc3QtPmRvd25zYW1wbGUgPiAwKTsKKyAgIGNlbHRfYXNzZXJ0KHN0
LT5zdGFydCA9PSAwIHx8IHN0LT5zdGFydCA9PSAxNyk7CisgICBjZWx0X2Fzc2VydChzdC0+c3Rh
cnQgPCBzdC0+ZW5kKTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5lbmQgPD0gMjEpOworI2lmZGVmIE9Q
VVNfQVJDSE1BU0sKKyAgIGNlbHRfYXNzZXJ0KHN0LT5hcmNoID49IDApOworICAgY2VsdF9hc3Nl
cnQoc3QtPmFyY2ggPD0gT1BVU19BUkNITUFTSyk7CisjZW5kaWYKKyAgIGNlbHRfYXNzZXJ0KHN0
LT5sYXN0X3BpdGNoX2luZGV4IDw9IFBMQ19QSVRDSF9MQUdfTUFYKTsKKyAgIGNlbHRfYXNzZXJ0
KHN0LT5sYXN0X3BpdGNoX2luZGV4ID49IFBMQ19QSVRDSF9MQUdfTUlOIHx8IHN0LT5sYXN0X3Bp
dGNoX2luZGV4ID09IDApOworICAgY2VsdF9hc3NlcnQoc3QtPnBvc3RmaWx0ZXJfcGVyaW9kIDwg
TUFYX1BFUklPRCk7CisgICBjZWx0X2Fzc2VydChzdC0+cG9zdGZpbHRlcl9wZXJpb2QgPj0gQ09N
QkZJTFRFUl9NSU5QRVJJT0QgfHwgc3QtPnBvc3RmaWx0ZXJfcGVyaW9kID09IDApOworICAgY2Vs
dF9hc3NlcnQoc3QtPnBvc3RmaWx0ZXJfcGVyaW9kX29sZCA8IE1BWF9QRVJJT0QpOworICAgY2Vs
dF9hc3NlcnQoc3QtPnBvc3RmaWx0ZXJfcGVyaW9kX29sZCA+PSBDT01CRklMVEVSX01JTlBFUklP
RCB8fCBzdC0+cG9zdGZpbHRlcl9wZXJpb2Rfb2xkID09IDApOworICAgY2VsdF9hc3NlcnQoc3Qt
PnBvc3RmaWx0ZXJfdGFwc2V0IDw9IDIpOworICAgY2VsdF9hc3NlcnQoc3QtPnBvc3RmaWx0ZXJf
dGFwc2V0ID49IDApOworICAgY2VsdF9hc3NlcnQoc3QtPnBvc3RmaWx0ZXJfdGFwc2V0X29sZCA8
PSAyKTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5wb3N0ZmlsdGVyX3RhcHNldF9vbGQgPj0gMCk7Cit9
CisjZW5kaWYKKwogaW50IGNlbHRfZGVjb2Rlcl9nZXRfc2l6ZShpbnQgY2hhbm5lbHMpCiB7CiAg
ICBjb25zdCBDRUxUTW9kZSAqbW9kZSA9IG9wdXNfY3VzdG9tX21vZGVfY3JlYXRlKDQ4MDAwLCA5
NjAsIE5VTEwpOwpAQCAtMTY0LDcgKzIwNCw3IEBAIE9QVVNfQ1VTVE9NX05PU1RBVElDIGludCBv
cHVzX2N1c3RvbV9kZWNvZGVyX2luaXQoQ0VMVERlY29kZXIgKnN0LCBjb25zdCBDRUxUTW9kCiAg
ICBzdC0+c3RhcnQgPSAwOwogICAgc3QtPmVuZCA9IHN0LT5tb2RlLT5lZmZFQmFuZHM7CiAgICBz
dC0+c2lnbmFsbGluZyA9IDE7Ci0jaWZkZWYgRU5BQkxFX1VQREFURV9EUkFGVAorI2lmbmRlZiBE
SVNBQkxFX1VQREFURV9EUkFGVAogICAgc3QtPmRpc2FibGVfaW52ID0gY2hhbm5lbHMgPT0gMTsK
ICNlbHNlCiAgICBzdC0+ZGlzYWJsZV9pbnYgPSAwOwpAQCAtNDM3LDE0ICs0NzcsNiBAQCBzdGF0
aWMgdm9pZCB0Zl9kZWNvZGUoaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgaXNUcmFuc2llbnQsIGlu
dCAqdGZfcmVzLCBpbnQgTE0sCiAgICB9CiB9CiAKLS8qIFRoZSBtYXhpbXVtIHBpdGNoIGxhZyB0
byBhbGxvdyBpbiB0aGUgcGl0Y2gtYmFzZWQgUExDLiBJdCdzIHBvc3NpYmxlIHRvIHNhdmUKLSAg
IENQVSB0aW1lIGluIHRoZSBQTEMgcGl0Y2ggc2VhcmNoIGJ5IG1ha2luZyB0aGlzIHNtYWxsZXIg
dGhhbiBNQVhfUEVSSU9ELiBUaGUKLSAgIGN1cnJlbnQgdmFsdWUgY29ycmVzcG9uZHMgdG8gYSBw
aXRjaCBvZiA2Ni42NyBIei4gKi8KLSNkZWZpbmUgUExDX1BJVENIX0xBR19NQVggKDcyMCkKLS8q
IFRoZSBtaW5pbXVtIHBpdGNoIGxhZyB0byBhbGxvdyBpbiB0aGUgcGl0Y2gtYmFzZWQgUExDLiBU
aGlzIGNvcnJlc3BvbmRzIHRvIGEKLSAgIHBpdGNoIG9mIDQ4MCBIei4gKi8KLSNkZWZpbmUgUExD
X1BJVENIX0xBR19NSU4gKDEwMCkKLQogc3RhdGljIGludCBjZWx0X3BsY19waXRjaF9zZWFyY2go
Y2VsdF9zaWcgKmRlY29kZV9tZW1bMl0sIGludCBDLCBpbnQgYXJjaCkKIHsKICAgIGludCBwaXRj
aF9pbmRleDsKQEAgLTU1NCw2ICs1ODYsNyBAQCBzdGF0aWMgdm9pZCBjZWx0X2RlY29kZV9sb3N0
KENFTFREZWNvZGVyICogT1BVU19SRVNUUklDVCBzdCwgaW50IE4sIGludCBMTSkKIAogICAgICAg
Y2VsdF9zeW50aGVzaXMobW9kZSwgWCwgb3V0X3N5biwgb2xkQmFuZEUsIHN0YXJ0LCBlZmZFbmQs
IEMsIEMsIDAsIExNLCBzdC0+ZG93bnNhbXBsZSwgMCwgc3QtPmFyY2gpOwogICAgfSBlbHNlIHsK
KyAgICAgIGludCBleGNfbGVuZ3RoOwogICAgICAgLyogUGl0Y2gtYmFzZWQgUExDICovCiAgICAg
ICBjb25zdCBvcHVzX3ZhbDE2ICp3aW5kb3c7CiAgICAgICBvcHVzX3ZhbDE2ICpleGM7CkBAIC01
NjEsNiArNTk0LDcgQEAgc3RhdGljIHZvaWQgY2VsdF9kZWNvZGVfbG9zdChDRUxURGVjb2RlciAq
IE9QVVNfUkVTVFJJQ1Qgc3QsIGludCBOLCBpbnQgTE0pCiAgICAgICBpbnQgcGl0Y2hfaW5kZXg7
CiAgICAgICBWQVJERUNMKG9wdXNfdmFsMzIsIGV0bXApOwogICAgICAgVkFSREVDTChvcHVzX3Zh
bDE2LCBfZXhjKTsKKyAgICAgIFZBUkRFQ0wob3B1c192YWwxNiwgZmlyX3RtcCk7CiAKICAgICAg
IGlmIChsb3NzX2NvdW50ID09IDApCiAgICAgICB7CkBAIC01NzAsOCArNjA0LDEzIEBAIHN0YXRp
YyB2b2lkIGNlbHRfZGVjb2RlX2xvc3QoQ0VMVERlY29kZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBp
bnQgTiwgaW50IExNKQogICAgICAgICAgZmFkZSA9IFFDT05TVDE2KC44ZiwxNSk7CiAgICAgICB9
CiAKKyAgICAgIC8qIFdlIHdhbnQgdGhlIGV4Y2l0YXRpb24gZm9yIDIgcGl0Y2ggcGVyaW9kcyBp
biBvcmRlciB0byBsb29rIGZvciBhCisgICAgICAgICBkZWNheWluZyBzaWduYWwsIGJ1dCB3ZSBj
YW4ndCBnZXQgbW9yZSB0aGFuIE1BWF9QRVJJT0QuICovCisgICAgICBleGNfbGVuZ3RoID0gSU1J
TigyKnBpdGNoX2luZGV4LCBNQVhfUEVSSU9EKTsKKwogICAgICAgQUxMT0MoZXRtcCwgb3Zlcmxh
cCwgb3B1c192YWwzMik7CiAgICAgICBBTExPQyhfZXhjLCBNQVhfUEVSSU9EK0xQQ19PUkRFUiwg
b3B1c192YWwxNik7CisgICAgICBBTExPQyhmaXJfdG1wLCBleGNfbGVuZ3RoLCBvcHVzX3ZhbDE2
KTsKICAgICAgIGV4YyA9IF9leGMrTFBDX09SREVSOwogICAgICAgd2luZG93ID0gbW9kZS0+d2lu
ZG93OwogICAgICAgYz0wOyBkbyB7CkBAIC01ODEsMTMgKzYyMCwxMSBAQCBzdGF0aWMgdm9pZCBj
ZWx0X2RlY29kZV9sb3N0KENFTFREZWNvZGVyICogT1BVU19SRVNUUklDVCBzdCwgaW50IE4sIGlu
dCBMTSkKICAgICAgICAgIGNlbHRfc2lnICpidWY7CiAgICAgICAgICBpbnQgZXh0cmFwb2xhdGlv
bl9vZmZzZXQ7CiAgICAgICAgICBpbnQgZXh0cmFwb2xhdGlvbl9sZW47Ci0gICAgICAgICBpbnQg
ZXhjX2xlbmd0aDsKICAgICAgICAgIGludCBqOwogCiAgICAgICAgICBidWYgPSBkZWNvZGVfbWVt
W2NdOwotICAgICAgICAgZm9yIChpPTA7aTxNQVhfUEVSSU9EO2krKykgewotICAgICAgICAgICAg
ZXhjW2ldID0gUk9VTkQxNihidWZbREVDT0RFX0JVRkZFUl9TSVpFLU1BWF9QRVJJT0QraV0sIFNJ
R19TSElGVCk7Ci0gICAgICAgICB9CisgICAgICAgICBmb3IgKGk9MDtpPE1BWF9QRVJJT0QrTFBD
X09SREVSO2krKykKKyAgICAgICAgICAgIGV4Y1tpLUxQQ19PUkRFUl0gPSBST1VORDE2KGJ1ZltE
RUNPREVfQlVGRkVSX1NJWkUtTUFYX1BFUklPRC1MUENfT1JERVIraV0sIFNJR19TSElGVCk7CiAK
ICAgICAgICAgIGlmIChsb3NzX2NvdW50ID09IDApCiAgICAgICAgICB7CkBAIC02MzEsMjAgKzY2
OCwxNCBAQCBzdGF0aWMgdm9pZCBjZWx0X2RlY29kZV9sb3N0KENFTFREZWNvZGVyICogT1BVU19S
RVNUUklDVCBzdCwgaW50IE4sIGludCBMTSkKICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAg
fQotICAgICAgICAgLyogV2Ugd2FudCB0aGUgZXhjaXRhdGlvbiBmb3IgMiBwaXRjaCBwZXJpb2Rz
IGluIG9yZGVyIHRvIGxvb2sgZm9yIGEKLSAgICAgICAgICAgIGRlY2F5aW5nIHNpZ25hbCwgYnV0
IHdlIGNhbid0IGdldCBtb3JlIHRoYW4gTUFYX1BFUklPRC4gKi8KLSAgICAgICAgIGV4Y19sZW5n
dGggPSBJTUlOKDIqcGl0Y2hfaW5kZXgsIE1BWF9QRVJJT0QpOwogICAgICAgICAgLyogSW5pdGlh
bGl6ZSB0aGUgTFBDIGhpc3Rvcnkgd2l0aCB0aGUgc2FtcGxlcyBqdXN0IGJlZm9yZSB0aGUgc3Rh
cnQKICAgICAgICAgICAgIG9mIHRoZSByZWdpb24gZm9yIHdoaWNoIHdlJ3JlIGNvbXB1dGluZyB0
aGUgZXhjaXRhdGlvbi4gKi8KICAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaT0wO2k8TFBD
X09SREVSO2krKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGV4Y1tNQVhfUEVSSU9E
LWV4Y19sZW5ndGgtTFBDX09SREVSK2ldID0KLSAgICAgICAgICAgICAgICAgICAgIFJPVU5EMTYo
YnVmW0RFQ09ERV9CVUZGRVJfU0laRS1leGNfbGVuZ3RoLUxQQ19PUkRFUitpXSwgU0lHX1NISUZU
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIGV4Y2l0YXRpb24g
Zm9yIGV4Y19sZW5ndGggc2FtcGxlcyBiZWZvcmUgdGhlIGxvc3MuICovCisgICAgICAgICAgICAv
KiBDb21wdXRlIHRoZSBleGNpdGF0aW9uIGZvciBleGNfbGVuZ3RoIHNhbXBsZXMgYmVmb3JlIHRo
ZSBsb3NzLiBXZSBuZWVkIHRoZSBjb3B5CisgICAgICAgICAgICAgICBiZWNhdXNlIGNlbHRfZmly
KCkgY2Fubm90IGZpbHRlciBpbi1wbGFjZS4gKi8KICAgICAgICAgICAgIGNlbHRfZmlyKGV4YytN
QVhfUEVSSU9ELWV4Y19sZW5ndGgsIGxwYytjKkxQQ19PUkRFUiwKLSAgICAgICAgICAgICAgICAg
IGV4YytNQVhfUEVSSU9ELWV4Y19sZW5ndGgsIGV4Y19sZW5ndGgsIExQQ19PUkRFUiwgc3QtPmFy
Y2gpOworICAgICAgICAgICAgICAgICAgZmlyX3RtcCwgZXhjX2xlbmd0aCwgTFBDX09SREVSLCBz
dC0+YXJjaCk7CisgICAgICAgICAgICBPUFVTX0NPUFkoZXhjK01BWF9QRVJJT0QtZXhjX2xlbmd0
aCwgZmlyX3RtcCwgZXhjX2xlbmd0aCk7CiAgICAgICAgICB9CiAKICAgICAgICAgIC8qIENoZWNr
IGlmIHRoZSB3YXZlZm9ybSBpcyBkZWNheWluZywgYW5kIGlmIHNvIGhvdyBmYXN0LgpAQCAtODMz
LDYgKzg2NCw3IEBAIGludCBjZWx0X2RlY29kZV93aXRoX2VjKENFTFREZWNvZGVyICogT1BVU19S
RVNUUklDVCBzdCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0CiAgICBjb25zdCBvcHVzX2ludDE2
ICplQmFuZHM7CiAgICBBTExPQ19TVEFDSzsKIAorICAgVkFMSURBVEVfQ0VMVF9ERUNPREVSKHN0
KTsKICAgIG1vZGUgPSBzdC0+bW9kZTsKICAgIG5iRUJhbmRzID0gbW9kZS0+bmJFQmFuZHM7CiAg
ICBvdmVybGFwID0gbW9kZS0+b3ZlcmxhcDsKQEAgLTEwMjcsNyArMTA1OSw3IEBAIGludCBjZWx0
X2RlY29kZV93aXRoX2VjKENFTFREZWNvZGVyICogT1BVU19SRVNUUklDVCBzdCwgY29uc3QgdW5z
aWduZWQgY2hhciAqZGF0CiAgICBBTExPQyhwdWxzZXMsIG5iRUJhbmRzLCBpbnQpOwogICAgQUxM
T0MoZmluZV9wcmlvcml0eSwgbmJFQmFuZHMsIGludCk7CiAKLSAgIGNvZGVkQmFuZHMgPSBjb21w
dXRlX2FsbG9jYXRpb24obW9kZSwgc3RhcnQsIGVuZCwgb2Zmc2V0cywgY2FwLAorICAgY29kZWRC
YW5kcyA9IGNsdF9jb21wdXRlX2FsbG9jYXRpb24obW9kZSwgc3RhcnQsIGVuZCwgb2Zmc2V0cywg
Y2FwLAogICAgICAgICAgYWxsb2NfdHJpbSwgJmludGVuc2l0eSwgJmR1YWxfc3RlcmVvLCBiaXRz
LCAmYmFsYW5jZSwgcHVsc2VzLAogICAgICAgICAgZmluZV9xdWFudCwgZmluZV9wcmlvcml0eSwg
QywgTE0sIGRlYywgMCwgMCwgMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0X2VuY29kZXIuYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
Y2VsdC9jZWx0X2VuY29kZXIuYwppbmRleCAwNTNlNWEzYjI5MDBjMTZmMjkwN2ZiMDNiZTUzN2Nl
M2I1YjEwOTJiLi40NGNiMDg1MGFiZDFhMjIzN2ExNWQwZWQxOTRkODk4MjQ3ZWQyMTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvY2VsdF9lbmNvZGVyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHRfZW5jb2Rlci5jCkBAIC0z
NjIsNiArMzYyLDEyIEBAIHN0YXRpYyBpbnQgdHJhbnNpZW50X2FuYWx5c2lzKGNvbnN0IG9wdXNf
dmFsMzIgKiBPUFVTX1JFU1RSSUNUIGluLCBpbnQgbGVuLCBpbnQKICAgICAgIC8qIENvbXB1dGUg
aGFybW9uaWMgbWVhbiBkaXNjYXJkaW5nIHRoZSB1bnJlbGlhYmxlIGJvdW5kYXJpZXMKICAgICAg
ICAgIFRoZSBkYXRhIGlzIHNtb290aCwgc28gd2Ugb25seSB0YWtlIDEvNHRoIG9mIHRoZSBzYW1w
bGVzICovCiAgICAgICB1bm1hc2s9MDsKKyAgICAgIC8qIFdlIHNob3VsZCBuZXZlciBzZWUgTmFO
cyBoZXJlLiBJZiB3ZSBmaW5kIGFueSwgdGhlbiBzb21ldGhpbmcgcmVhbGx5IGJhZCBoYXBwZW5l
ZCBhbmQgd2UgYmV0dGVyIGFib3J0CisgICAgICAgICBiZWZvcmUgaXQgZG9lcyBhbnkgZGFtYWdl
IGxhdGVyIG9uLiBJZiB0aGVzZSBhc3NlcnRzIGFyZSBkaXNhYmxlZCAobm8gaGFyZGVuaW5nKSwg
dGhlbiB0aGUgdGFibGUKKyAgICAgICAgIGxvb2t1cCBhIGZldyBsaW5lcyBiZWxvdyAoaWQgPSAu
Li4pIGlzIGxpa2VseSB0byBjcmFzaCBkdXIgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBETyBO
T1QgRklYCisgICAgICAgICB0aGF0IGNyYXNoIG9uIE5hTiBzaW5jZSBpdCBjb3VsZCByZXN1bHQg
aW4gYSB3b3JzZSBpc3N1ZSBsYXRlciBvbi4gKi8KKyAgICAgIGNlbHRfYXNzZXJ0KCFjZWx0X2lz
bmFuKHRtcFswXSkpOworICAgICAgY2VsdF9hc3NlcnQoIWNlbHRfaXNuYW4obm9ybSkpOwogICAg
ICAgZm9yIChpPTEyO2k8bGVuMi01O2krPTQpCiAgICAgICB7CiAgICAgICAgICBpbnQgaWQ7CkBA
IC01NzcsNyArNTgzLDcgQEAgc3RhdGljIG9wdXNfdmFsMzIgbDFfbWV0cmljKGNvbnN0IGNlbHRf
bm9ybSAqdG1wLCBpbnQgTiwgaW50IExNLCBvcHVzX3ZhbDE2IGJpYXMKIAogc3RhdGljIGludCB0
Zl9hbmFseXNpcyhjb25zdCBDRUxUTW9kZSAqbSwgaW50IGxlbiwgaW50IGlzVHJhbnNpZW50LAog
ICAgICAgaW50ICp0Zl9yZXMsIGludCBsYW1iZGEsIGNlbHRfbm9ybSAqWCwgaW50IE4wLCBpbnQg
TE0sCi0gICAgICBvcHVzX3ZhbDE2IHRmX2VzdGltYXRlLCBpbnQgdGZfY2hhbikKKyAgICAgIG9w
dXNfdmFsMTYgdGZfZXN0aW1hdGUsIGludCB0Zl9jaGFuLCBpbnQgKmltcG9ydGFuY2UpCiB7CiAg
ICBpbnQgaTsKICAgIFZBUkRFQ0woaW50LCBtZXRyaWMpOwpAQCAtNjYwLDIyICs2NjYsMjIgQEAg
c3RhdGljIGludCB0Zl9hbmFseXNpcyhjb25zdCBDRUxUTW9kZSAqbSwgaW50IGxlbiwgaW50IGlz
VHJhbnNpZW50LAogICAgICAgICAgYmlhc2luZyB0aGUgZGVjaXNpb24gKi8KICAgICAgIGlmIChu
YXJyb3cgJiYgKG1ldHJpY1tpXT09MCB8fCBtZXRyaWNbaV09PS0yKkxNKSkKICAgICAgICAgIG1l
dHJpY1tpXS09MTsKLSAgICAgIC8qcHJpbnRmKCIlZCAiLCBtZXRyaWNbaV0pOyovCisgICAgICAv
KnByaW50ZigiJWQgIiwgbWV0cmljW2ldLzIgKyAoIWlzVHJhbnNpZW50KSpMTSk7Ki8KICAgIH0K
ICAgIC8qcHJpbnRmKCJcbiIpOyovCiAgICAvKiBTZWFyY2ggZm9yIHRoZSBvcHRpbWFsIHRmIHJl
c29sdXRpb24sIGluY2x1ZGluZyB0Zl9zZWxlY3QgKi8KICAgIHRmX3NlbGVjdCA9IDA7CiAgICBm
b3IgKHNlbD0wO3NlbDwyO3NlbCsrKQogICAgewotICAgICAgY29zdDAgPSAwOwotICAgICAgY29z
dDEgPSBpc1RyYW5zaWVudCA/IDAgOiBsYW1iZGE7CisgICAgICBjb3N0MCA9IGltcG9ydGFuY2Vb
MF0qYWJzKG1ldHJpY1swXS0yKnRmX3NlbGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnNl
bCswXSk7CisgICAgICBjb3N0MSA9IGltcG9ydGFuY2VbMF0qYWJzKG1ldHJpY1swXS0yKnRmX3Nl
bGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnNlbCsxXSkgKyAoaXNUcmFuc2llbnQgPyAw
IDogbGFtYmRhKTsKICAgICAgIGZvciAoaT0xO2k8bGVuO2krKykKICAgICAgIHsKICAgICAgICAg
IGludCBjdXJyMCwgY3VycjE7CiAgICAgICAgICBjdXJyMCA9IElNSU4oY29zdDAsIGNvc3QxICsg
bGFtYmRhKTsKICAgICAgICAgIGN1cnIxID0gSU1JTihjb3N0MCArIGxhbWJkYSwgY29zdDEpOwot
ICAgICAgICAgY29zdDAgPSBjdXJyMCArIGFicyhtZXRyaWNbaV0tMip0Zl9zZWxlY3RfdGFibGVb
TE1dWzQqaXNUcmFuc2llbnQrMipzZWwrMF0pOwotICAgICAgICAgY29zdDEgPSBjdXJyMSArIGFi
cyhtZXRyaWNbaV0tMip0Zl9zZWxlY3RfdGFibGVbTE1dWzQqaXNUcmFuc2llbnQrMipzZWwrMV0p
OworICAgICAgICAgY29zdDAgPSBjdXJyMCArIGltcG9ydGFuY2VbaV0qYWJzKG1ldHJpY1tpXS0y
KnRmX3NlbGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnNlbCswXSk7CisgICAgICAgICBj
b3N0MSA9IGN1cnIxICsgaW1wb3J0YW5jZVtpXSphYnMobWV0cmljW2ldLTIqdGZfc2VsZWN0X3Rh
YmxlW0xNXVs0KmlzVHJhbnNpZW50KzIqc2VsKzFdKTsKICAgICAgIH0KICAgICAgIGNvc3QwID0g
SU1JTihjb3N0MCwgY29zdDEpOwogICAgICAgc2VsY29zdFtzZWxdPWNvc3QwOwpAQCAtNjg0LDgg
KzY5MCw4IEBAIHN0YXRpYyBpbnQgdGZfYW5hbHlzaXMoY29uc3QgQ0VMVE1vZGUgKm0sIGludCBs
ZW4sIGludCBpc1RyYW5zaWVudCwKICAgICAqIElmIHRlc3RzIGNvbmZpcm0gaXQncyB1c2VmdWwg
Zm9yIG5vbi10cmFuc2llbnRzLCB3ZSBjb3VsZCBhbGxvdyBpdC4gKi8KICAgIGlmIChzZWxjb3N0
WzFdPHNlbGNvc3RbMF0gJiYgaXNUcmFuc2llbnQpCiAgICAgICB0Zl9zZWxlY3Q9MTsKLSAgIGNv
c3QwID0gMDsKLSAgIGNvc3QxID0gaXNUcmFuc2llbnQgPyAwIDogbGFtYmRhOworICAgY29zdDAg
PSBpbXBvcnRhbmNlWzBdKmFicyhtZXRyaWNbMF0tMip0Zl9zZWxlY3RfdGFibGVbTE1dWzQqaXNU
cmFuc2llbnQrMip0Zl9zZWxlY3QrMF0pOworICAgY29zdDEgPSBpbXBvcnRhbmNlWzBdKmFicyht
ZXRyaWNbMF0tMip0Zl9zZWxlY3RfdGFibGVbTE1dWzQqaXNUcmFuc2llbnQrMip0Zl9zZWxlY3Qr
MV0pICsgKGlzVHJhbnNpZW50ID8gMCA6IGxhbWJkYSk7CiAgICAvKiBWaXRlcmJpIGZvcndhcmQg
cGFzcyAqLwogICAgZm9yIChpPTE7aTxsZW47aSsrKQogICAgewpAQCAtNzEzLDggKzcxOSw4IEBA
IHN0YXRpYyBpbnQgdGZfYW5hbHlzaXMoY29uc3QgQ0VMVE1vZGUgKm0sIGludCBsZW4sIGludCBp
c1RyYW5zaWVudCwKICAgICAgICAgIGN1cnIxID0gZnJvbTE7CiAgICAgICAgICBwYXRoMVtpXT0g
MTsKICAgICAgIH0KLSAgICAgIGNvc3QwID0gY3VycjAgKyBhYnMobWV0cmljW2ldLTIqdGZfc2Vs
ZWN0X3RhYmxlW0xNXVs0KmlzVHJhbnNpZW50KzIqdGZfc2VsZWN0KzBdKTsKLSAgICAgIGNvc3Qx
ID0gY3VycjEgKyBhYnMobWV0cmljW2ldLTIqdGZfc2VsZWN0X3RhYmxlW0xNXVs0KmlzVHJhbnNp
ZW50KzIqdGZfc2VsZWN0KzFdKTsKKyAgICAgIGNvc3QwID0gY3VycjAgKyBpbXBvcnRhbmNlW2ld
KmFicyhtZXRyaWNbaV0tMip0Zl9zZWxlY3RfdGFibGVbTE1dWzQqaXNUcmFuc2llbnQrMip0Zl9z
ZWxlY3QrMF0pOworICAgICAgY29zdDEgPSBjdXJyMSArIGltcG9ydGFuY2VbaV0qYWJzKG1ldHJp
Y1tpXS0yKnRmX3NlbGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnRmX3NlbGVjdCsxXSk7
CiAgICB9CiAgICB0Zl9yZXNbbGVuLTFdID0gY29zdDAgPCBjb3N0MSA/IDAgOiAxOwogICAgLyog
Vml0ZXJiaSBiYWNrd2FyZCBwYXNzIHRvIGNoZWNrIHRoZSBkZWNpc2lvbnMgKi8KQEAgLTk2NCw3
ICs5NzAsOCBAQCBzdGF0aWMgb3B1c192YWwxNiBtZWRpYW5fb2ZfMyhjb25zdCBvcHVzX3ZhbDE2
ICp4KQogc3RhdGljIG9wdXNfdmFsMTYgZHluYWxsb2NfYW5hbHlzaXMoY29uc3Qgb3B1c192YWwx
NiAqYmFuZExvZ0UsIGNvbnN0IG9wdXNfdmFsMTYgKmJhbmRMb2dFMiwKICAgICAgIGludCBuYkVC
YW5kcywgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgQywgaW50ICpvZmZzZXRzLCBpbnQgbHNiX2Rl
cHRoLCBjb25zdCBvcHVzX2ludDE2ICpsb2dOLAogICAgICAgaW50IGlzVHJhbnNpZW50LCBpbnQg
dmJyLCBpbnQgY29uc3RyYWluZWRfdmJyLCBjb25zdCBvcHVzX2ludDE2ICplQmFuZHMsIGludCBM
TSwKLSAgICAgIGludCBlZmZlY3RpdmVCeXRlcywgb3B1c19pbnQzMiAqdG90X2Jvb3N0XywgaW50
IGxmZSwgb3B1c192YWwxNiAqc3Vycm91bmRfZHluYWxsb2MsIEFuYWx5c2lzSW5mbyAqYW5hbHlz
aXMpCisgICAgICBpbnQgZWZmZWN0aXZlQnl0ZXMsIG9wdXNfaW50MzIgKnRvdF9ib29zdF8sIGlu
dCBsZmUsIG9wdXNfdmFsMTYgKnN1cnJvdW5kX2R5bmFsbG9jLAorICAgICAgQW5hbHlzaXNJbmZv
ICphbmFseXNpcywgaW50ICppbXBvcnRhbmNlLCBpbnQgKnNwcmVhZF93ZWlnaHQpCiB7CiAgICBp
bnQgaSwgYzsKICAgIG9wdXNfaW50MzIgdG90X2Jvb3N0PTA7CkBAIC05OTAsNiArOTk3LDQyIEBA
IHN0YXRpYyBvcHVzX3ZhbDE2IGR5bmFsbG9jX2FuYWx5c2lzKGNvbnN0IG9wdXNfdmFsMTYgKmJh
bmRMb2dFLCBjb25zdCBvcHVzX3ZhbDE2CiAgICAgICBmb3IgKGk9MDtpPGVuZDtpKyspCiAgICAg
ICAgICBtYXhEZXB0aCA9IE1BWDE2KG1heERlcHRoLCBiYW5kTG9nRVtjKm5iRUJhbmRzK2ldLW5v
aXNlX2Zsb29yW2ldKTsKICAgIH0gd2hpbGUgKCsrYzxDKTsKKyAgIHsKKyAgICAgIC8qIENvbXB1
dGUgYSByZWFsbHkgc2ltcGxlIG1hc2tpbmcgbW9kZWwgdG8gYXZvaWQgdGFraW5nIGludG8gYWNj
b3VudCBjb21wbGV0ZWx5IG1hc2tlZAorICAgICAgICAgYmFuZHMgd2hlbiBjb21wdXRpbmcgdGhl
IHNwcmVhZGluZyBkZWNpc2lvbi4gKi8KKyAgICAgIFZBUkRFQ0wob3B1c192YWwxNiwgbWFzayk7
CisgICAgICBWQVJERUNMKG9wdXNfdmFsMTYsIHNpZyk7CisgICAgICBBTExPQyhtYXNrLCBuYkVC
YW5kcywgb3B1c192YWwxNik7CisgICAgICBBTExPQyhzaWcsIG5iRUJhbmRzLCBvcHVzX3ZhbDE2
KTsKKyAgICAgIGZvciAoaT0wO2k8ZW5kO2krKykKKyAgICAgICAgIG1hc2tbaV0gPSBiYW5kTG9n
RVtpXS1ub2lzZV9mbG9vcltpXTsKKyAgICAgIGlmIChDPT0yKQorICAgICAgeworICAgICAgICAg
Zm9yIChpPTA7aTxlbmQ7aSsrKQorICAgICAgICAgICAgbWFza1tpXSA9IE1BWDE2KG1hc2tbaV0s
IGJhbmRMb2dFW25iRUJhbmRzK2ldLW5vaXNlX2Zsb29yW2ldKTsKKyAgICAgIH0KKyAgICAgIE9Q
VVNfQ09QWShzaWcsIG1hc2ssIGVuZCk7CisgICAgICBmb3IgKGk9MTtpPGVuZDtpKyspCisgICAg
ICAgICBtYXNrW2ldID0gTUFYMTYobWFza1tpXSwgbWFza1tpLTFdIC0gUUNPTlNUMTYoMi5mLCBE
Ql9TSElGVCkpOworICAgICAgZm9yIChpPWVuZC0yO2k+PTA7aS0tKQorICAgICAgICAgbWFza1tp
XSA9IE1BWDE2KG1hc2tbaV0sIG1hc2tbaSsxXSAtIFFDT05TVDE2KDMuZiwgREJfU0hJRlQpKTsK
KyAgICAgIGZvciAoaT0wO2k8ZW5kO2krKykKKyAgICAgIHsKKyAgICAgICAgIC8qIENvbXB1dGUg
U01SOiBNYXNrIGlzIG5ldmVyIG1vcmUgdGhhbiA3MiBkQiBiZWxvdyB0aGUgcGVhayBhbmQgbmV2
ZXIgYmVsb3cgdGhlIG5vaXNlIGZsb29yLiovCisgICAgICAgICBvcHVzX3ZhbDE2IHNtciA9IHNp
Z1tpXS1NQVgxNihNQVgxNigwLCBtYXhEZXB0aC1RQ09OU1QxNigxMi5mLCBEQl9TSElGVCkpLCBt
YXNrW2ldKTsKKyAgICAgICAgIC8qIENsYW1wIFNNUiB0byBtYWtlIHN1cmUgd2UncmUgbm90IHNo
aWZ0aW5nIGJ5IHNvbWV0aGluZyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UuICovCisjaWZkZWYgRklY
RURfUE9JTlQKKyAgICAgICAgIC8qIEZJWE1FOiBVc2UgUFNIUjE2KCkgaW5zdGVhZCAqLworICAg
ICAgICAgaW50IHNoaWZ0ID0gLVBTSFIzMihNQVgxNigtUUNPTlNUMTYoNS5mLCBEQl9TSElGVCks
IE1JTjE2KDAsIHNtcikpLCBEQl9TSElGVCk7CisjZWxzZQorICAgICAgICAgaW50IHNoaWZ0ID0g
SU1JTig1LCBJTUFYKDAsIC0oaW50KWZsb29yKC41ZiArIHNtcikpKTsKKyNlbmRpZgorICAgICAg
ICAgc3ByZWFkX3dlaWdodFtpXSA9IDMyID4+IHNoaWZ0OworICAgICAgfQorICAgICAgLypmb3Ig
KGk9MDtpPGVuZDtpKyspCisgICAgICAgICBwcmludGYoIiVkICIsIHNwcmVhZF93ZWlnaHRbaV0p
OworICAgICAgcHJpbnRmKCJcbiIpOyovCisgICB9CiAgICAvKiBNYWtlIHN1cmUgdGhhdCBkeW5h
bWljIGFsbG9jYXRpb24gY2FuJ3QgbWFrZSB1cyBidXN0IHRoZSBidWRnZXQgKi8KICAgIGlmIChl
ZmZlY3RpdmVCeXRlcyA+IDUwICYmIExNPj0xICYmICFsZmUpCiAgICB7CkBAIC0xMDQ2LDYgKzEw
ODksMTQgQEAgc3RhdGljIG9wdXNfdmFsMTYgZHluYWxsb2NfYW5hbHlzaXMoY29uc3Qgb3B1c192
YWwxNiAqYmFuZExvZ0UsIGNvbnN0IG9wdXNfdmFsMTYKICAgICAgIH0KICAgICAgIGZvciAoaT1z
dGFydDtpPGVuZDtpKyspCiAgICAgICAgICBmb2xsb3dlcltpXSA9IE1BWDE2KGZvbGxvd2VyW2ld
LCBzdXJyb3VuZF9keW5hbGxvY1tpXSk7CisgICAgICBmb3IgKGk9c3RhcnQ7aTxlbmQ7aSsrKQor
ICAgICAgeworI2lmZGVmIEZJWEVEX1BPSU5UCisgICAgICAgICBpbXBvcnRhbmNlW2ldID0gUFNI
UjMyKDEzKmNlbHRfZXhwMihNSU4xNihmb2xsb3dlcltpXSwgUUNPTlNUMTYoNC5mLCBEQl9TSElG
VCkpKSwgMTYpOworI2Vsc2UKKyAgICAgICAgIGltcG9ydGFuY2VbaV0gPSAoaW50KWZsb29yKC41
ZisxMypjZWx0X2V4cDIoTUlOMTYoZm9sbG93ZXJbaV0sIFFDT05TVDE2KDQuZiwgREJfU0hJRlQp
KSkpOworI2VuZGlmCisgICAgICB9CiAgICAgICAvKiBGb3Igbm9uLXRyYW5zaWVudCBDQlIvQ1ZC
UiBmcmFtZXMsIGhhbHZlIHRoZSBkeW5hbGxvYyBjb250cmlidXRpb24gKi8KICAgICAgIGlmICgo
IXZiciB8fCBjb25zdHJhaW5lZF92YnIpJiYhaXNUcmFuc2llbnQpCiAgICAgICB7CkBAIC0xMTAx
LDYgKzExNTIsOSBAQCBzdGF0aWMgb3B1c192YWwxNiBkeW5hbGxvY19hbmFseXNpcyhjb25zdCBv
cHVzX3ZhbDE2ICpiYW5kTG9nRSwgY29uc3Qgb3B1c192YWwxNgogICAgICAgICAgICAgdG90X2Jv
b3N0ICs9IGJvb3N0X2JpdHM7CiAgICAgICAgICB9CiAgICAgICB9CisgICB9IGVsc2UgeworICAg
ICAgZm9yIChpPXN0YXJ0O2k8ZW5kO2krKykKKyAgICAgICAgIGltcG9ydGFuY2VbaV0gPSAxMzsK
ICAgIH0KICAgICp0b3RfYm9vc3RfID0gdG90X2Jvb3N0OwogICAgUkVTVE9SRV9TVEFDSzsKQEAg
LTExMDksNyArMTE2Myw3IEBAIHN0YXRpYyBvcHVzX3ZhbDE2IGR5bmFsbG9jX2FuYWx5c2lzKGNv
bnN0IG9wdXNfdmFsMTYgKmJhbmRMb2dFLCBjb25zdCBvcHVzX3ZhbDE2CiAKIAogc3RhdGljIGlu
dCBydW5fcHJlZmlsdGVyKENFTFRFbmNvZGVyICpzdCwgY2VsdF9zaWcgKmluLCBjZWx0X3NpZyAq
cHJlZmlsdGVyX21lbSwgaW50IENDLCBpbnQgTiwKLSAgICAgIGludCBwcmVmaWx0ZXJfdGFwc2V0
LCBpbnQgKnBpdGNoLCBvcHVzX3ZhbDE2ICpnYWluLCBpbnQgKnFnYWluLCBpbnQgZW5hYmxlZCwg
aW50IG5iQXZhaWxhYmxlQnl0ZXMpCisgICAgICBpbnQgcHJlZmlsdGVyX3RhcHNldCwgaW50ICpw
aXRjaCwgb3B1c192YWwxNiAqZ2FpbiwgaW50ICpxZ2FpbiwgaW50IGVuYWJsZWQsIGludCBuYkF2
YWlsYWJsZUJ5dGVzLCBBbmFseXNpc0luZm8gKmFuYWx5c2lzKQogewogICAgaW50IGM7CiAgICBW
QVJERUNMKGNlbHRfc2lnLCBfcHJlKTsKQEAgLTExNjUsNyArMTIxOSwxMiBAQCBzdGF0aWMgaW50
IHJ1bl9wcmVmaWx0ZXIoQ0VMVEVuY29kZXIgKnN0LCBjZWx0X3NpZyAqaW4sIGNlbHRfc2lnICpw
cmVmaWx0ZXJfbWVtLAogICAgICAgZ2FpbjEgPSAwOwogICAgICAgcGl0Y2hfaW5kZXggPSBDT01C
RklMVEVSX01JTlBFUklPRDsKICAgIH0KLQorI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQorICAg
aWYgKGFuYWx5c2lzLT52YWxpZCkKKyAgICAgIGdhaW4xID0gKG9wdXNfdmFsMTYpKGdhaW4xICog
YW5hbHlzaXMtPm1heF9waXRjaF9yYXRpbyk7CisjZWxzZQorICAgKHZvaWQpYW5hbHlzaXM7Cisj
ZW5kaWYKICAgIC8qIEdhaW4gdGhyZXNob2xkIGZvciBlbmFibGluZyB0aGUgcHJlZmlsdGVyL3Bv
c3RmaWx0ZXIgKi8KICAgIHBmX3RocmVzaG9sZCA9IFFDT05TVDE2KC4yZiwxNSk7CiAKQEAgLTEz
NjIsNiArMTQyMSw4IEBAIGludCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVyICogT1BV
U19SRVNUUklDVCBzdCwgY29uc3Qgb3B1c192YWwxNiAqIHBjbSwKICAgIFZBUkRFQ0woaW50LCBw
dWxzZXMpOwogICAgVkFSREVDTChpbnQsIGNhcCk7CiAgICBWQVJERUNMKGludCwgb2Zmc2V0cyk7
CisgICBWQVJERUNMKGludCwgaW1wb3J0YW5jZSk7CisgICBWQVJERUNMKGludCwgc3ByZWFkX3dl
aWdodCk7CiAgICBWQVJERUNMKGludCwgZmluZV9wcmlvcml0eSk7CiAgICBWQVJERUNMKGludCwg
dGZfcmVzKTsKICAgIFZBUkRFQ0wodW5zaWduZWQgY2hhciwgY29sbGFwc2VfbWFza3MpOwpAQCAt
MTQxNCw2ICsxNDc1LDcgQEAgaW50IGNlbHRfZW5jb2RlX3dpdGhfZWMoQ0VMVEVuY29kZXIgKiBP
UFVTX1JFU1RSSUNUIHN0LCBjb25zdCBvcHVzX3ZhbDE2ICogcGNtLAogICAgb3B1c19pbnQzMiBl
cXVpdl9yYXRlOwogICAgaW50IGh5YnJpZDsKICAgIGludCB3ZWFrX3RyYW5zaWVudCA9IDA7Cisg
ICBpbnQgZW5hYmxlX3RmX2FuYWx5c2lzOwogICAgVkFSREVDTChvcHVzX3ZhbDE2LCBzdXJyb3Vu
ZF9keW5hbGxvYyk7CiAgICBBTExPQ19TVEFDSzsKIApAQCAtMTQ1NCw3ICsxNTE2LDcgQEAgaW50
IGNlbHRfZW5jb2RlX3dpdGhfZWMoQ0VMVEVuY29kZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBjb25z
dCBvcHVzX3ZhbDE2ICogcGNtLAogICAgICAgdGVsbDBfZnJhYz10ZWxsPTE7CiAgICAgICBuYkZp
bGxlZEJ5dGVzPTA7CiAgICB9IGVsc2UgewotICAgICAgdGVsbDBfZnJhYz10ZWxsPWVjX3RlbGxf
ZnJhYyhlbmMpOworICAgICAgdGVsbDBfZnJhYz1lY190ZWxsX2ZyYWMoZW5jKTsKICAgICAgIHRl
bGw9ZWNfdGVsbChlbmMpOwogICAgICAgbmJGaWxsZWRCeXRlcz0odGVsbCs0KT4+MzsKICAgIH0K
QEAgLTE2MDMsNyArMTY2NSw3IEBAIGludCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVy
ICogT1BVU19SRVNUUklDVCBzdCwgY29uc3Qgb3B1c192YWwxNiAqIHBjbSwKICAgICAgICAgICAg
ICYmIHN0LT5jb21wbGV4aXR5ID49IDU7CiAKICAgICAgIHByZWZpbHRlcl90YXBzZXQgPSBzdC0+
dGFwc2V0X2RlY2lzaW9uOwotICAgICAgcGZfb24gPSBydW5fcHJlZmlsdGVyKHN0LCBpbiwgcHJl
ZmlsdGVyX21lbSwgQ0MsIE4sIHByZWZpbHRlcl90YXBzZXQsICZwaXRjaF9pbmRleCwgJmdhaW4x
LCAmcWcsIGVuYWJsZWQsIG5iQXZhaWxhYmxlQnl0ZXMpOworICAgICAgcGZfb24gPSBydW5fcHJl
ZmlsdGVyKHN0LCBpbiwgcHJlZmlsdGVyX21lbSwgQ0MsIE4sIHByZWZpbHRlcl90YXBzZXQsICZw
aXRjaF9pbmRleCwgJmdhaW4xLCAmcWcsIGVuYWJsZWQsIG5iQXZhaWxhYmxlQnl0ZXMsICZzdC0+
YW5hbHlzaXMpOwogICAgICAgaWYgKChnYWluMSA+IFFDT05TVDE2KC40ZiwxNSkgfHwgc3QtPnBy
ZWZpbHRlcl9nYWluID4gUUNPTlNUMTYoLjRmLDE1KSkgJiYgKCFzdC0+YW5hbHlzaXMudmFsaWQg
fHwgc3QtPmFuYWx5c2lzLnRvbmFsaXR5ID4gLjMpCiAgICAgICAgICAgICAmJiAocGl0Y2hfaW5k
ZXggPiAxLjI2KnN0LT5wcmVmaWx0ZXJfcGVyaW9kIHx8IHBpdGNoX2luZGV4IDwgLjc5KnN0LT5w
cmVmaWx0ZXJfcGVyaW9kKSkKICAgICAgICAgIHBpdGNoX2NoYW5nZSA9IDE7CkBAIC0xNjMzLDcg
KzE2OTUsNyBAQCBpbnQgY2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAqIE9QVVNfUkVT
VFJJQ1Qgc3QsIGNvbnN0IG9wdXNfdmFsMTYgKiBwY20sCiAgICAgICAvKiBSZWR1Y2VzIHRoZSBs
aWtlbGlob29kIG9mIGVuZXJneSBpbnN0YWJpbGl0eSBvbiBmcmljYXRpdmVzIGF0IGxvdyBiaXRy
YXRlCiAgICAgICAgICBpbiBoeWJyaWQgbW9kZS4gSXQgc2VlbXMgbGlrZSB3ZSBzdGlsbCB3YW50
IHRvIGhhdmUgcmVhbCB0cmFuc2llbnRzIG9uIHZvd2VscwogICAgICAgICAgdGhvdWdoIChzbWFs
bCBTSUxLIHF1YW50aXphdGlvbiBvZmZzZXQgdmFsdWUpLiAqLwotICAgICAgaW50IGFsbG93X3dl
YWtfdHJhbnNpZW50cyA9IGh5YnJpZCAmJiBlZmZlY3RpdmVCeXRlczwxNSAmJiBzdC0+c2lsa19p
bmZvLm9mZnNldCA+PSAxMDA7CisgICAgICBpbnQgYWxsb3dfd2Vha190cmFuc2llbnRzID0gaHli
cmlkICYmIGVmZmVjdGl2ZUJ5dGVzPDE1ICYmIHN0LT5zaWxrX2luZm8uc2lnbmFsVHlwZSAhPSAy
OwogICAgICAgaXNUcmFuc2llbnQgPSB0cmFuc2llbnRfYW5hbHlzaXMoaW4sIE4rb3ZlcmxhcCwg
Q0MsCiAgICAgICAgICAgICAmdGZfZXN0aW1hdGUsICZ0Zl9jaGFuLCBhbGxvd193ZWFrX3RyYW5z
aWVudHMsICZ3ZWFrX3RyYW5zaWVudCk7CiAgICB9CkBAIC0xNjYyLDYgKzE3MjQsOSBAQCBpbnQg
Y2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAqIE9QVVNfUkVTVFJJQ1Qgc3QsIGNvbnN0
IG9wdXNfdmFsMTYgKiBwY20sCiAgICB9CiAKICAgIGNvbXB1dGVfbWRjdHMobW9kZSwgc2hvcnRC
bG9ja3MsIGluLCBmcmVxLCBDLCBDQywgTE0sIHN0LT51cHNhbXBsZSwgc3QtPmFyY2gpOworICAg
LyogVGhpcyBzaG91bGQgY2F0Y2ggYW55IE5hTiBpbiB0aGUgQ0VMVCBpbnB1dC4gU2luY2Ugd2Un
cmUgbm90IHN1cHBvc2VkIHRvIHNlZSBhbnkgKHRoZXkncmUgZmlsdGVyZWQKKyAgICAgIGF0IHRo
ZSBPcHVzIGxheWVyKSwganVzdCBhYm9ydC4gKi8KKyAgIGNlbHRfYXNzZXJ0KCFjZWx0X2lzbmFu
KGZyZXFbMF0pICYmIChDPT0xIHx8ICFjZWx0X2lzbmFuKGZyZXFbTl0pKSk7CiAgICBpZiAoQ0M9
PTImJkM9PTEpCiAgICAgICB0Zl9jaGFuID0gMDsKICAgIGNvbXB1dGVfYmFuZF9lbmVyZ2llcyht
b2RlLCBmcmVxLCBiYW5kRSwgZWZmRW5kLCBDLCBMTSwgc3QtPmFyY2gpOwpAQCAtMTgwNSwxMyAr
MTg3MCwyMyBAQCBpbnQgY2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAqIE9QVVNfUkVT
VFJJQ1Qgc3QsIGNvbnN0IG9wdXNfdmFsMTYgKiBwY20sCiAgICAvKiBCYW5kIG5vcm1hbGlzYXRp
b24gKi8KICAgIG5vcm1hbGlzZV9iYW5kcyhtb2RlLCBmcmVxLCBYLCBiYW5kRSwgZWZmRW5kLCBD
LCBNKTsKIAorICAgZW5hYmxlX3RmX2FuYWx5c2lzID0gZWZmZWN0aXZlQnl0ZXM+PTE1KkMgJiYg
IWh5YnJpZCAmJiBzdC0+Y29tcGxleGl0eT49MiAmJiAhc3QtPmxmZTsKKworICAgQUxMT0Mob2Zm
c2V0cywgbmJFQmFuZHMsIGludCk7CisgICBBTExPQyhpbXBvcnRhbmNlLCBuYkVCYW5kcywgaW50
KTsKKyAgIEFMTE9DKHNwcmVhZF93ZWlnaHQsIG5iRUJhbmRzLCBpbnQpOworCisgICBtYXhEZXB0
aCA9IGR5bmFsbG9jX2FuYWx5c2lzKGJhbmRMb2dFLCBiYW5kTG9nRTIsIG5iRUJhbmRzLCBzdGFy
dCwgZW5kLCBDLCBvZmZzZXRzLAorICAgICAgICAgc3QtPmxzYl9kZXB0aCwgbW9kZS0+bG9nTiwg
aXNUcmFuc2llbnQsIHN0LT52YnIsIHN0LT5jb25zdHJhaW5lZF92YnIsCisgICAgICAgICBlQmFu
ZHMsIExNLCBlZmZlY3RpdmVCeXRlcywgJnRvdF9ib29zdCwgc3QtPmxmZSwgc3Vycm91bmRfZHlu
YWxsb2MsICZzdC0+YW5hbHlzaXMsIGltcG9ydGFuY2UsIHNwcmVhZF93ZWlnaHQpOworCiAgICBB
TExPQyh0Zl9yZXMsIG5iRUJhbmRzLCBpbnQpOwogICAgLyogRGlzYWJsZSB2YXJpYWJsZSB0ZiBy
ZXNvbHV0aW9uIGZvciBoeWJyaWQgYW5kIGF0IHZlcnkgbG93IGJpdHJhdGUgKi8KLSAgIGlmIChl
ZmZlY3RpdmVCeXRlcz49MTUqQyAmJiAhaHlicmlkICYmIHN0LT5jb21wbGV4aXR5Pj0yICYmICFz
dC0+bGZlKQorICAgaWYgKGVuYWJsZV90Zl9hbmFseXNpcykKICAgIHsKICAgICAgIGludCBsYW1i
ZGE7Ci0gICAgICBsYW1iZGEgPSBJTUFYKDUsIDEyODAvZWZmZWN0aXZlQnl0ZXMgKyAyKTsKLSAg
ICAgIHRmX3NlbGVjdCA9IHRmX2FuYWx5c2lzKG1vZGUsIGVmZkVuZCwgaXNUcmFuc2llbnQsIHRm
X3JlcywgbGFtYmRhLCBYLCBOLCBMTSwgdGZfZXN0aW1hdGUsIHRmX2NoYW4pOworICAgICAgbGFt
YmRhID0gSU1BWCg4MCwgMjA0ODAvZWZmZWN0aXZlQnl0ZXMgKyAyKTsKKyAgICAgIHRmX3NlbGVj
dCA9IHRmX2FuYWx5c2lzKG1vZGUsIGVmZkVuZCwgaXNUcmFuc2llbnQsIHRmX3JlcywgbGFtYmRh
LCBYLCBOLCBMTSwgdGZfZXN0aW1hdGUsIHRmX2NoYW4sIGltcG9ydGFuY2UpOwogICAgICAgZm9y
IChpPWVmZkVuZDtpPGVuZDtpKyspCiAgICAgICAgICB0Zl9yZXNbaV0gPSB0Zl9yZXNbZWZmRW5k
LTFdOwogICAgfSBlbHNlIGlmIChoeWJyaWQgJiYgd2Vha190cmFuc2llbnQpCkBAIC0xODIyLDcg
KzE4OTcsNyBAQCBpbnQgY2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAqIE9QVVNfUkVT
VFJJQ1Qgc3QsIGNvbnN0IG9wdXNfdmFsMTYgKiBwY20sCiAgICAgICBmb3IgKGk9MDtpPGVuZDtp
KyspCiAgICAgICAgICB0Zl9yZXNbaV0gPSAxOwogICAgICAgdGZfc2VsZWN0PTA7Ci0gICB9IGVs
c2UgaWYgKGh5YnJpZCAmJiBlZmZlY3RpdmVCeXRlczwxNSkKKyAgIH0gZWxzZSBpZiAoaHlicmlk
ICYmIGVmZmVjdGl2ZUJ5dGVzPDE1ICYmIHN0LT5zaWxrX2luZm8uc2lnbmFsVHlwZSAhPSAyKQog
ICAgewogICAgICAgLyogRm9yIGxvdyBiaXRyYXRlIGh5YnJpZCwgd2UgZm9yY2UgdGVtcG9yYWwg
cmVzb2x1dGlvbiB0byA1IG1zIHJhdGhlciB0aGFuIDIuNSBtcy4gKi8KICAgICAgIGZvciAoaT0w
O2k8ZW5kO2krKykKQEAgLTE4OTMsNyArMTk2OCw3IEBAIGludCBjZWx0X2VuY29kZV93aXRoX2Vj
KENFTFRFbmNvZGVyICogT1BVU19SRVNUUklDVCBzdCwgY29uc3Qgb3B1c192YWwxNiAqIHBjbSwK
ICAgICAgICAgIHsKICAgICAgICAgICAgIHN0LT5zcHJlYWRfZGVjaXNpb24gPSBzcHJlYWRpbmdf
ZGVjaXNpb24obW9kZSwgWCwKICAgICAgICAgICAgICAgICAgICZzdC0+dG9uYWxfYXZlcmFnZSwg
c3QtPnNwcmVhZF9kZWNpc2lvbiwgJnN0LT5oZl9hdmVyYWdlLAotICAgICAgICAgICAgICAgICAg
JnN0LT50YXBzZXRfZGVjaXNpb24sIHBmX29uJiYhc2hvcnRCbG9ja3MsIGVmZkVuZCwgQywgTSk7
CisgICAgICAgICAgICAgICAgICAmc3QtPnRhcHNldF9kZWNpc2lvbiwgcGZfb24mJiFzaG9ydEJs
b2NrcywgZWZmRW5kLCBDLCBNLCBzcHJlYWRfd2VpZ2h0KTsKICAgICAgICAgIH0KICAgICAgICAg
IC8qcHJpbnRmKCIlZCAlZFxuIiwgc3QtPnRhcHNldF9kZWNpc2lvbiwgc3QtPnNwcmVhZF9kZWNp
c2lvbik7Ki8KICAgICAgICAgIC8qcHJpbnRmKCIlZiAlZCAlZiAlZFxuXG4iLCBzdC0+YW5hbHlz
aXMudG9uYWxpdHksIHN0LT5zcHJlYWRfZGVjaXNpb24sIHN0LT5hbmFseXNpcy50b25hbGl0eV9z
bG9wZSwgc3QtPnRhcHNldF9kZWNpc2lvbik7Ki8KQEAgLTE5MDEsMTEgKzE5NzYsNiBAQCBpbnQg
Y2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAqIE9QVVNfUkVTVFJJQ1Qgc3QsIGNvbnN0
IG9wdXNfdmFsMTYgKiBwY20sCiAgICAgICBlY19lbmNfaWNkZihlbmMsIHN0LT5zcHJlYWRfZGVj
aXNpb24sIHNwcmVhZF9pY2RmLCA1KTsKICAgIH0KIAotICAgQUxMT0Mob2Zmc2V0cywgbmJFQmFu
ZHMsIGludCk7Ci0KLSAgIG1heERlcHRoID0gZHluYWxsb2NfYW5hbHlzaXMoYmFuZExvZ0UsIGJh
bmRMb2dFMiwgbmJFQmFuZHMsIHN0YXJ0LCBlbmQsIEMsIG9mZnNldHMsCi0gICAgICAgICBzdC0+
bHNiX2RlcHRoLCBtb2RlLT5sb2dOLCBpc1RyYW5zaWVudCwgc3QtPnZiciwgc3QtPmNvbnN0cmFp
bmVkX3ZiciwKLSAgICAgICAgIGVCYW5kcywgTE0sIGVmZmVjdGl2ZUJ5dGVzLCAmdG90X2Jvb3N0
LCBzdC0+bGZlLCBzdXJyb3VuZF9keW5hbGxvYywgJnN0LT5hbmFseXNpcyk7CiAgICAvKiBGb3Ig
TEZFLCBldmVyeXRoaW5nIGludGVyZXN0aW5nIGlzIGluIHRoZSBmaXJzdCBiYW5kICovCiAgICBp
ZiAoc3QtPmxmZSkKICAgICAgIG9mZnNldHNbMF0gPSBJTUlOKDgsIGVmZmVjdGl2ZUJ5dGVzLzMp
OwpAQCAtMjEyMSw3ICsyMTkxLDcgQEAgaW50IGNlbHRfZW5jb2RlX3dpdGhfZWMoQ0VMVEVuY29k
ZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBjb25zdCBvcHVzX3ZhbDE2ICogcGNtLAogI2VuZGlmCiAg
ICBpZiAoc3QtPmxmZSkKICAgICAgIHNpZ25hbEJhbmR3aWR0aCA9IDE7Ci0gICBjb2RlZEJhbmRz
ID0gY29tcHV0ZV9hbGxvY2F0aW9uKG1vZGUsIHN0YXJ0LCBlbmQsIG9mZnNldHMsIGNhcCwKKyAg
IGNvZGVkQmFuZHMgPSBjbHRfY29tcHV0ZV9hbGxvY2F0aW9uKG1vZGUsIHN0YXJ0LCBlbmQsIG9m
ZnNldHMsIGNhcCwKICAgICAgICAgIGFsbG9jX3RyaW0sICZzdC0+aW50ZW5zaXR5LCAmZHVhbF9z
dGVyZW8sIGJpdHMsICZiYWxhbmNlLCBwdWxzZXMsCiAgICAgICAgICBmaW5lX3F1YW50LCBmaW5l
X3ByaW9yaXR5LCBDLCBMTSwgZW5jLCAxLCBzdC0+bGFzdENvZGVkQmFuZHMsIHNpZ25hbEJhbmR3
aWR0aCk7CiAgICBpZiAoc3QtPmxhc3RDb2RlZEJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHRf
bHBjLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvY2VsdF9scGMuYwppbmRleCA1N2JjNWYzZGQzZmQ4ODYxNjJmZTRjM2E3ZmRi
ODcxOTdmYzUzZWJkLi44ZWNiNjkzZWU5ODRkYjk0ZDg3ZDA0NTkyMjJkMTkxNDM5ZWJlZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NlbHQvY2VsdF9scGMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY2VsdF9scGMuYwpAQCAtOTksNyAr
OTksNyBAQCB2b2lkIGNlbHRfZmlyX2MoCiAgICBpbnQgaSxqOwogICAgVkFSREVDTChvcHVzX3Zh
bDE2LCBybnVtKTsKICAgIFNBVkVfU1RBQ0s7Ci0KKyAgIGNlbHRfYXNzZXJ0KHggIT0geSk7CiAg
ICBBTExPQyhybnVtLCBvcmQsIG9wdXNfdmFsMTYpOwogICAgZm9yKGk9MDtpPG9yZDtpKyspCiAg
ICAgICBybnVtW2ldID0gbnVtW29yZC1pLTFdOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgY2Vs
dF9maXJfYygKICAgIHsKICAgICAgIG9wdXNfdmFsMzIgc3VtWzRdOwogICAgICAgc3VtWzBdID0g
U0hMMzIoRVhURU5EMzIoeFtpICBdKSwgU0lHX1NISUZUKTsKLSAgICAgIHN1bVsxXSA9IFNITDMy
KEVYVEVORDMyKHhbaSsxXSksIFNJR19TSElGVCksCisgICAgICBzdW1bMV0gPSBTSEwzMihFWFRF
TkQzMih4W2krMV0pLCBTSUdfU0hJRlQpOwogICAgICAgc3VtWzJdID0gU0hMMzIoRVhURU5EMzIo
eFtpKzJdKSwgU0lHX1NISUZUKTsKICAgICAgIHN1bVszXSA9IFNITDMyKEVYVEVORDMyKHhbaSsz
XSksIFNJR19TSElGVCk7CiAgICAgICB4Y29ycl9rZXJuZWwocm51bSwgeCtpLW9yZCwgc3VtLCBv
cmQsIGFyY2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2N3cnMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jd3JzLmMKaW5kZXggOTcy
MmYwYWM4NmM5NTNiMTk0YjQ1ZWFkNTk0ZmQ2NWFkMjdmNGE2Yi4uYTU1MmU0ZjBmYjgxZDRmNmU5
ZDE1ZDg2ZmU0MDliY2RlZTNiMjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2N3cnMuYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQv
Y3dycy5jCkBAIC00ODIsNyArNDgyLDcgQEAgc3RhdGljIG9wdXNfdmFsMzIgY3dyc2koaW50IF9u
LGludCBfayxvcHVzX3VpbnQzMiBfaSxpbnQgKl95KXsKICAgICAgIGswPV9rOwogICAgICAgcT1y
b3dbX25dOwogICAgICAgaWYocT5faSl7Ci0gICAgICAgIGNlbHRfYXNzZXJ0KHA+cSk7CisgICAg
ICAgIGNlbHRfc2lnX2Fzc2VydChwPnEpOwogICAgICAgICBfaz1fbjsKICAgICAgICAgZG8gcD1D
RUxUX1BWUV9VX1JPV1stLV9rXVtfbl07CiAgICAgICAgIHdoaWxlKHA+X2kpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L2VudGNvZGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9lbnRjb2RlLmgKaW5kZXggMTNkNmM4NGVmMGZhMzkyMDUx
NjZkM2U3NzYxMzRiOWJjMjMyNzVjNS4uMzc2M2UzZjI4NDJkYjNkMzBhNTY3ZjAwMDExYjhlZTYy
NjJhOWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2VudGNvZGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZW50Y29kZS5oCkBA
IC0xMjIsNyArMTIyLDcgQEAgb3B1c191aW50MzIgZWNfdGVsbF9mcmFjKGVjX2N0eCAqX3RoaXMp
OwogCiAvKiBUZXN0ZWQgZXhoYXVzdGl2ZWx5IGZvciBhbGwgbiBhbmQgZm9yIDE8PWQ8PTI1NiAq
Lwogc3RhdGljIE9QVVNfSU5MSU5FIG9wdXNfdWludDMyIGNlbHRfdWRpdihvcHVzX3VpbnQzMiBu
LCBvcHVzX3VpbnQzMiBkKSB7Ci0gICBjZWx0X2Fzc2VydChkPjApOworICAgY2VsdF9zaWdfYXNz
ZXJ0KGQ+MCk7CiAjaWZkZWYgVVNFX1NNQUxMX0RJVl9UQUJMRQogICAgaWYgKGQ+MjU2KQogICAg
ICAgcmV0dXJuIG4vZDsKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgb3B1
c191aW50MzIgY2VsdF91ZGl2KG9wdXNfdWludDMyIG4sIG9wdXNfdWludDMyIGQpIHsKIH0KIAog
c3RhdGljIE9QVVNfSU5MSU5FIG9wdXNfaW50MzIgY2VsdF9zdWRpdihvcHVzX2ludDMyIG4sIG9w
dXNfaW50MzIgZCkgewotICAgY2VsdF9hc3NlcnQoZD4wKTsKKyAgIGNlbHRfc2lnX2Fzc2VydChk
PjApOwogI2lmZGVmIFVTRV9TTUFMTF9ESVZfVEFCTEUKICAgIGlmIChuPDApCiAgICAgICByZXR1
cm4gLShvcHVzX2ludDMyKWNlbHRfdWRpdigtbiwgZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZW50ZGVj
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL2NlbHQvZW50ZGVjLmgKaW5kZXggZDhhYjMxODczMDg4MjhmYjY1Yzg1MDNmNzg3YmI3ZmQ0
NTUyMjhlNS4uMDI1ZmMxODcwZDY5YzQxOTg4Y2YyZmU1M2I2ZmYyODMxZDdkOGQ2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L2VudGRlYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9lbnRkZWMuaApAQCAtODUsNyArODUsNyBAQCBp
bnQgZWNfZGVjX2ljZGYoZWNfZGVjICpfdGhpcyxjb25zdCB1bnNpZ25lZCBjaGFyICpfaWNkZix1
bnNpZ25lZCBfZnRiKTsKICAgVGhlIGJpdHMgbXVzdCBoYXZlIGJlZW4gZW5jb2RlZCB3aXRoIGVj
X2VuY191aW50KCkuCiAgIE5vIGNhbGwgdG8gZWNfZGVjX3VwZGF0ZSgpIGlzIG5lY2Vzc2FyeSBh
ZnRlciB0aGlzIGNhbGwuCiAgIF9mdDogVGhlIG51bWJlciBvZiBpbnRlZ2VycyB0aGF0IGNhbiBi
ZSBkZWNvZGVkIChvbmUgbW9yZSB0aGFuIHRoZSBtYXgpLgotICAgICAgIFRoaXMgbXVzdCBiZSBh
dCBsZWFzdCBvbmUsIGFuZCBubyBtb3JlIHRoYW4gMioqMzItMS4KKyAgICAgICBUaGlzIG11c3Qg
YmUgYXQgbGVhc3QgMiwgYW5kIG5vIG1vcmUgdGhhbiAyKiozMi0xLgogICBSZXR1cm46IFRoZSBk
ZWNvZGVkIGJpdHMuKi8KIG9wdXNfdWludDMyIGVjX2RlY191aW50KGVjX2RlYyAqX3RoaXMsb3B1
c191aW50MzIgX2Z0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2VudGVuYy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2VudGVuYy5o
CmluZGV4IDc5NmJjNGQ1NzI3ZjViZjUyNmRhZjJiZWYzMTU3MDAzYTk5NTNkNTUuLmY1MDJlYWY2
NjI0NjllMTI3ZmJjMGFlODczNWVlYzViZDZhZWY2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9lbnRlbmMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvZW50ZW5jLmgKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBlY19lbmNfaWNkZihl
Y19lbmMgKl90aGlzLGludCBfcyxjb25zdCB1bnNpZ25lZCBjaGFyICpfaWNkZix1bnNpZ25lZCBf
ZnRiKTsKIC8qRW5jb2RlcyBhIHJhdyB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSBzdHJlYW0uCiAg
IF9mbDogVGhlIGludGVnZXIgdG8gZW5jb2RlLgogICBfZnQ6IFRoZSBudW1iZXIgb2YgaW50ZWdl
cnMgdGhhdCBjYW4gYmUgZW5jb2RlZCAob25lIG1vcmUgdGhhbiB0aGUgbWF4KS4KLSAgICAgICBU
aGlzIG11c3QgYmUgYXQgbGVhc3Qgb25lLCBhbmQgbm8gbW9yZSB0aGFuIDIqKjMyLTEuKi8KKyAg
ICAgICBUaGlzIG11c3QgYmUgYXQgbGVhc3QgMiwgYW5kIG5vIG1vcmUgdGhhbiAyKiozMi0xLiov
CiB2b2lkIGVjX2VuY191aW50KGVjX2VuYyAqX3RoaXMsb3B1c191aW50MzIgX2ZsLG9wdXNfdWlu
dDMyIF9mdCk7CiAKIC8qRW5jb2RlcyBhIHNlcXVlbmNlIG9mIHJhdyBiaXRzIGluIHRoZSBzdHJl
YW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQvZmxvYXRfY2FzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2Zsb2F0X2Nhc3QuaAppbmRl
eCA5OGI0MGFiY2Y2NWY1ZGY3YTUxZDNkOWQ2N2Q2MTg2OWE1NTM1ZmU5Li44ODlkYWU5NjVmYWQ0
ZmQzYTdiNzlhMjY0MmQ3NzczZjkwNWIyMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZmxvYXRfY2FzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY2VsdC9mbG9hdF9jYXN0LmgKQEAgLTk2LDEwICs5NiwxMCBAQCBzdGF0aWMgT1BVU19J
TkxJTkUgb3B1c19pbnQzMiBmbG9hdDJpbnQoZmxvYXQgeCkge3JldHVybiBfbW1fY3Z0X3NzMnNp
KF9tbV9zZXRfcwogI2luY2x1ZGUgPG1hdGguaD4KICNkZWZpbmUgZmxvYXQyaW50KHgpIGxyaW50
KHgpCiAKLSNlbGlmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNDAwKSAmJiBk
ZWZpbmVkIChfTV9YNjQpCisjZWxpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0g
MTQwMCkgJiYgKGRlZmluZWQoX01fWDY0KSB8fCAoZGVmaW5lZChfTV9JWDg2X0ZQKSAmJiBfTV9J
WDg2X0ZQID49IDEpKQogICAgICAgICAjaW5jbHVkZSA8eG1taW50cmluLmg+CiAKLSAgICAgICAg
X19pbmxpbmUgbG9uZyBpbnQgZmxvYXQyaW50KGZsb2F0IHZhbHVlKQorICAgICAgICBzdGF0aWMg
X19pbmxpbmUgbG9uZyBpbnQgZmxvYXQyaW50KGZsb2F0IHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIF9tbV9jdnRzc19zaTMyKF9tbV9sb2FkX3NzKCZ2YWx1ZSkpOwog
ICAgICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIG9wdXNfaW50
MzIgZmxvYXQyaW50KGZsb2F0IHgpIHtyZXR1cm4gX21tX2N2dF9zczJzaShfbW1fc2V0X3MKICAg
ICAgICAgKiogICAgICBUaGVyZWZvcmUgaW1wbGVtZW50IE9QVVNfSU5MSU5FIHZlcnNpb25zIG9m
IHRoZXNlIGZ1bmN0aW9ucyBoZXJlLgogICAgICAgICAqLwogCi0gICAgICAgIF9faW5saW5lIGxv
bmcgaW50CisgICAgICAgIHN0YXRpYyBfX2lubGluZSBsb25nIGludAogICAgICAgICBmbG9hdDJp
bnQgKGZsb2F0IGZsdCkKICAgICAgICAgeyAgICAgICBpbnQgaW50Z3I7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
Y2VsdC9tYXRob3BzLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQvbWF0aG9wcy5jCmluZGV4IDIxYTAxZjUyZTQzMjFlMGZmMjBh
ZWY5YjQ0MGY2NzI2OTg4OWYxODguLjZlZTliOWUxMDE2MTg3MjQxNzBlMzg0NTIxODU2MzhhZDdk
YzhlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9tYXRob3BzLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21hdGhvcHMuYwpAQCAt
MzgsNyArMzgsOCBAQAogI2luY2x1ZGUgIm1hdGhvcHMuaCIKIAogLypDb21wdXRlIGZsb29yKHNx
cnQoX3ZhbCkpIHdpdGggZXhhY3QgYXJpdGhtZXRpYy4KLSAgVGhpcyBoYXMgYmVlbiB0ZXN0ZWQg
b24gYWxsIHBvc3NpYmxlIDMyLWJpdCBpbnB1dHMuKi8KKyAgX3ZhbCBtdXN0IGJlIGdyZWF0ZXIg
dGhhbiAwLgorICBUaGlzIGhhcyBiZWVuIHRlc3RlZCBvbiBhbGwgcG9zc2libGUgMzItYml0IGlu
cHV0cyBncmVhdGVyIHRoYW4gMC4qLwogdW5zaWduZWQgaXNxcnQzMihvcHVzX3VpbnQzMiBfdmFs
KXsKICAgdW5zaWduZWQgYjsKICAgdW5zaWduZWQgZzsKQEAgLTE4Miw3ICsxODMsNyBAQCBvcHVz
X3ZhbDMyIGNlbHRfcmNwKG9wdXNfdmFsMzIgeCkKICAgIGludCBpOwogICAgb3B1c192YWwxNiBu
OwogICAgb3B1c192YWwxNiByOwotICAgY2VsdF9hc3NlcnQyKHg+MCwgImNlbHRfcmNwKCkgb25s
eSBkZWZpbmVkIGZvciBwb3NpdGl2ZSB2YWx1ZXMiKTsKKyAgIGNlbHRfc2lnX2Fzc2VydCh4PjAp
OwogICAgaSA9IGNlbHRfaWxvZzIoeCk7CiAgICAvKiBuIGlzIFExNSB3aXRoIHJhbmdlIFswLDEp
LiAqLwogICAgbiA9IFZTSFIzMih4LGktMTUpLTMyNzY4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21hdGhv
cHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY2VsdC9tYXRob3BzLmgKaW5kZXggMWY4YTIwY2I0NTQwMjU1ZmZjNGVhMGE1ZjY3MTZh
MzE3OThjNmE2Zi4uNWU4NmZmMGRkMjU3OWJhN2I0YjdhYTU3Yjg1OTNlYzA3MjIzM2E5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L21hdGhvcHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvbWF0aG9wcy5oCkBAIC03Miw3ICs3Miw3
IEBAIHN0YXRpYyBPUFVTX0lOTElORSBmbG9hdCBmYXN0X2F0YW4yZihmbG9hdCB5LCBmbG9hdCB4
KSB7CiAjdW5kZWYgY0EKICN1bmRlZiBjQgogI3VuZGVmIGNDCi0jdW5kZWYgY0QKKyN1bmRlZiBj
RQogI2VuZGlmCiAKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSBmbG9h
dCBjZWx0X2V4cDIoZmxvYXQgeCkKIC8qKiBJbnRlZ2VyIGxvZyBpbiBiYXNlMi4gVW5kZWZpbmVk
IGZvciB6ZXJvIGFuZCBuZWdhdGl2ZSBudW1iZXJzICovCiBzdGF0aWMgT1BVU19JTkxJTkUgb3B1
c19pbnQxNiBjZWx0X2lsb2cyKG9wdXNfaW50MzIgeCkKIHsKLSAgIGNlbHRfYXNzZXJ0Mih4PjAs
ICJjZWx0X2lsb2cyKCkgb25seSBkZWZpbmVkIGZvciBzdHJpY3RseSBwb3NpdGl2ZSBudW1iZXJz
Iik7CisgICBjZWx0X3NpZ19hc3NlcnQoeD4wKTsKICAgIHJldHVybiBFQ19JTE9HKHgpLTE7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9taXBzL2NlbHRfbWlwc3IxLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvbWlwcy9j
ZWx0X21pcHNyMS5oCmluZGV4IGU4NTY2MWE2NjE4Y2UwNzUwMmQ0YWNlMDY2ZWNlNTlkNTljZTIy
NGEuLmMzMzJmZTA0NzFlMzFhZjk0MzA2OGRlNWVkNDBlZTY0MDY5MzhiODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
Y2VsdC9taXBzL2NlbHRfbWlwc3IxLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21pcHMvY2VsdF9taXBzcjEuaApAQCAt
NTMsNiArNTMsNyBAQAogI2luY2x1ZGUgImNlbHRfbHBjLmgiCiAjaW5jbHVkZSAidnEuaCIKIAor
I2RlZmluZSBPVkVSUklERV9DT01CX0ZJTFRFUl9DT05TVAogI2RlZmluZSBPVkVSUklERV9jb21i
X2ZpbHRlcgogdm9pZCBjb21iX2ZpbHRlcihvcHVzX3ZhbDMyICp5LCBvcHVzX3ZhbDMyICp4LCBp
bnQgVDAsIGludCBUMSwgaW50IE4sCiAgICAgICBvcHVzX3ZhbDE2IGcwLCBvcHVzX3ZhbDE2IGcx
LCBpbnQgdGFwc2V0MCwgaW50IHRhcHNldDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvbWlwcy92cV9taXBz
cjEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY2VsdC9taXBzL3ZxX21pcHNyMS5oCmluZGV4IGZkMThlYWI3YTk2NjA0NjUzOWE2MGI4
YTIyZGRlZWQyZjFhMGE1YjYuLmYyNmEzM2U3NTVlODM1ODFkZDQ3NzY5YWRiYzhkY2NkMWFlM2Zi
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvY2VsdC9taXBzL3ZxX21pcHNyMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9taXBzL3ZxX21p
cHNyMS5oCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAibWF0aG9wcy5oIgogI2luY2x1ZGUg
ImFyY2guaCIKIAotc3RhdGljIHZvaWQgcmVub3JtYWxpc2VfdmVjdG9yX21pcHMoY2VsdF9ub3Jt
ICpYLCBpbnQgTiwgb3B1c192YWwxNiBnYWluLCBpbnQgYXJjaCk7Ci0KICNkZWZpbmUgT1ZFUlJJ
REVfdnFfZXhwX3JvdGF0aW9uMQogc3RhdGljIHZvaWQgZXhwX3JvdGF0aW9uMShjZWx0X25vcm0g
KlgsIGludCBsZW4sIGludCBzdHJpZGUsIG9wdXNfdmFsMTYgYywgb3B1c192YWwxNiBzKQogewpA
QCAtNjYsMTEgKzY0LDcgQEAgc3RhdGljIHZvaWQgZXhwX3JvdGF0aW9uMShjZWx0X25vcm0gKlgs
IGludCBsZW4sIGludCBzdHJpZGUsIG9wdXNfdmFsMTYgYywgb3B1c18KIH0KIAogI2RlZmluZSBP
VkVSUklERV9yZW5vcm1hbGlzZV92ZWN0b3IKLQotI2RlZmluZSByZW5vcm1hbGlzZV92ZWN0b3Io
WCwgTiwgZ2FpbiwgYXJjaCkgXAotIChyZW5vcm1hbGlzZV92ZWN0b3JfbWlwcyhYLCBOLCBnYWlu
LCBhcmNoKSkKLQotdm9pZCByZW5vcm1hbGlzZV92ZWN0b3JfbWlwcyhjZWx0X25vcm0gKlgsIGlu
dCBOLCBvcHVzX3ZhbDE2IGdhaW4sIGludCBhcmNoKQordm9pZCByZW5vcm1hbGlzZV92ZWN0b3Io
Y2VsdF9ub3JtICpYLCBpbnQgTiwgb3B1c192YWwxNiBnYWluLCBpbnQgYXJjaCkKIHsKICAgIGlu
dCBpOwogI2lmZGVmIEZJWEVEX1BPSU5UCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvcGl0Y2guYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9w
aXRjaC5jCmluZGV4IDViMDYxZDg2MGY0NTJiOGMzNTM5ZjUwYjg2ZGZkMTIzMGI3ZWM1MjEuLjg3
MjU4MmE0OGE1NTU4YWFkNzVmYzcxM2E2MzVkYmY2OWFhYjZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9w
aXRjaC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvY2VsdC9waXRjaC5jCkBAIC0xMDIsMTEgKzEwMiw5IEBAIHN0YXRpYyB2b2lk
IGZpbmRfYmVzdF9waXRjaChvcHVzX3ZhbDMyICp4Y29yciwgb3B1c192YWwxNiAqeSwgaW50IGxl
biwKICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY2VsdF9maXI1KGNvbnN0IG9wdXNfdmFsMTYgKngs
CitzdGF0aWMgdm9pZCBjZWx0X2ZpcjUob3B1c192YWwxNiAqeCwKICAgICAgICAgIGNvbnN0IG9w
dXNfdmFsMTYgKm51bSwKLSAgICAgICAgIG9wdXNfdmFsMTYgKnksCi0gICAgICAgICBpbnQgTiwK
LSAgICAgICAgIG9wdXNfdmFsMTYgKm1lbSkKKyAgICAgICAgIGludCBOKQogewogICAgaW50IGk7
CiAgICBvcHVzX3ZhbDE2IG51bTAsIG51bTEsIG51bTIsIG51bTMsIG51bTQ7CkBAIC0xMTYsMTEg
KzExNCwxMSBAQCBzdGF0aWMgdm9pZCBjZWx0X2ZpcjUoY29uc3Qgb3B1c192YWwxNiAqeCwKICAg
IG51bTI9bnVtWzJdOwogICAgbnVtMz1udW1bM107CiAgICBudW00PW51bVs0XTsKLSAgIG1lbTA9
bWVtWzBdOwotICAgbWVtMT1tZW1bMV07Ci0gICBtZW0yPW1lbVsyXTsKLSAgIG1lbTM9bWVtWzNd
OwotICAgbWVtND1tZW1bNF07CisgICBtZW0wPTA7CisgICBtZW0xPTA7CisgICBtZW0yPTA7Cisg
ICBtZW0zPTA7CisgICBtZW00PTA7CiAgICBmb3IgKGk9MDtpPE47aSsrKQogICAgewogICAgICAg
b3B1c192YWwzMiBzdW0gPSBTSEwzMihFWFRFTkQzMih4W2ldKSwgU0lHX1NISUZUKTsKQEAgLTEz
NCwxMyArMTMyLDggQEAgc3RhdGljIHZvaWQgY2VsdF9maXI1KGNvbnN0IG9wdXNfdmFsMTYgKngs
CiAgICAgICBtZW0yID0gbWVtMTsKICAgICAgIG1lbTEgPSBtZW0wOwogICAgICAgbWVtMCA9IHhb
aV07Ci0gICAgICB5W2ldID0gUk9VTkQxNihzdW0sIFNJR19TSElGVCk7CisgICAgICB4W2ldID0g
Uk9VTkQxNihzdW0sIFNJR19TSElGVCk7CiAgICB9Ci0gICBtZW1bMF09bWVtMDsKLSAgIG1lbVsx
XT1tZW0xOwotICAgbWVtWzJdPW1lbTI7Ci0gICBtZW1bM109bWVtMzsKLSAgIG1lbVs0XT1tZW00
OwogfQogCiAKQEAgLTE1MCw3ICsxNDMsNyBAQCB2b2lkIHBpdGNoX2Rvd25zYW1wbGUoY2VsdF9z
aWcgKiBPUFVTX1JFU1RSSUNUIHhbXSwgb3B1c192YWwxNiAqIE9QVVNfUkVTVFJJQ1QgeAogICAg
aW50IGk7CiAgICBvcHVzX3ZhbDMyIGFjWzVdOwogICAgb3B1c192YWwxNiB0bXA9UTE1T05FOwot
ICAgb3B1c192YWwxNiBscGNbNF0sIG1lbVs1XT17MCwwLDAsMCwwfTsKKyAgIG9wdXNfdmFsMTYg
bHBjWzRdOwogICAgb3B1c192YWwxNiBscGMyWzVdOwogICAgb3B1c192YWwxNiBjMSA9IFFDT05T
VDE2KC44ZiwxNSk7CiAjaWZkZWYgRklYRURfUE9JTlQKQEAgLTIxMSw3ICsyMDQsNyBAQCB2b2lk
IHBpdGNoX2Rvd25zYW1wbGUoY2VsdF9zaWcgKiBPUFVTX1JFU1RSSUNUIHhbXSwgb3B1c192YWwx
NiAqIE9QVVNfUkVTVFJJQ1QgeAogICAgbHBjMlsyXSA9IGxwY1syXSArIE1VTFQxNl8xNl9RMTUo
YzEsbHBjWzFdKTsKICAgIGxwYzJbM10gPSBscGNbM10gKyBNVUxUMTZfMTZfUTE1KGMxLGxwY1sy
XSk7CiAgICBscGMyWzRdID0gTVVMVDE2XzE2X1ExNShjMSxscGNbM10pOwotICAgY2VsdF9maXI1
KHhfbHAsIGxwYzIsIHhfbHAsIGxlbj4+MSwgbWVtKTsKKyAgIGNlbHRfZmlyNSh4X2xwLCBscGMy
LCBsZW4+PjEpOwogfQogCiAvKiBQdXJlIEMgaW1wbGVtZW50YXRpb24uICovCkBAIC0yNTYsNyAr
MjQ5LDcgQEAgY2VsdF9waXRjaF94Y29ycl9jKGNvbnN0IG9wdXNfdmFsMTYgKl94LCBjb25zdCBv
cHVzX3ZhbDE2ICpfeSwKICAgIG9wdXNfdmFsMzIgbWF4Y29ycj0xOwogI2VuZGlmCiAgICBjZWx0
X2Fzc2VydChtYXhfcGl0Y2g+MCk7Ci0gICBjZWx0X2Fzc2VydCgoKCh1bnNpZ25lZCBjaGFyICop
X3gtKHVuc2lnbmVkIGNoYXIgKilOVUxMKSYzKT09MCk7CisgICBjZWx0X3NpZ19hc3NlcnQoKCgo
dW5zaWduZWQgY2hhciAqKV94LSh1bnNpZ25lZCBjaGFyICopTlVMTCkmMyk9PTApOwogICAgZm9y
IChpPTA7aTxtYXhfcGl0Y2gtMztpKz00KQogICAgewogICAgICAgb3B1c192YWwzMiBzdW1bNF09
ezAsMCwwLDB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3F1YW50X2JhbmRzLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvcXVhbnRfYmFu
ZHMuYwppbmRleCA1NjEwMWIxY2ZlY2I4ZjU4MTFjMDc2MTg4MzBkN2VlMzg0MmFlYjQ4Li4zOWEy
MjFlZGE1Zjg2ZDc1MjEyOTE3NjM5MWUxZWQ1OTc2OWI3OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvcXVh
bnRfYmFuZHMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQvcXVhbnRfYmFuZHMuYwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZv
aWQgdW5xdWFudF9jb2Fyc2VfZW5lcmd5KGNvbnN0IENFTFRNb2RlICptLCBpbnQgc3RhcnQsIGlu
dCBlbmQsIG9wdXNfdmFsMTYgKm9sCiAgICAgICAgICAvKiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8g
ZXhwcmVzcyB0aGlzIGludmFyaWFudCBhcyBhCiAgICAgICAgICAgICB0ZXN0IG9uIEMgYXQgZnVu
Y3Rpb24gZW50cnksIGJ1dCB0aGF0IGlzbid0IGVub3VnaAogICAgICAgICAgICAgdG8gbWFrZSB0
aGUgc3RhdGljIGFuYWx5emVyIGhhcHB5LiAqLwotICAgICAgICAgY2VsdF9hc3NlcnQoYzwyKTsK
KyAgICAgICAgIGNlbHRfc2lnX2Fzc2VydChjPDIpOwogICAgICAgICAgdGVsbCA9IGVjX3RlbGwo
ZGVjKTsKICAgICAgICAgIGlmKGJ1ZGdldC10ZWxsPj0xNSkKICAgICAgICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvY2VsdC9yYXRlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQvcmF0ZS5jCmluZGV4IGNhNGNjODcwZWFhNDEyZjUyYTQ1ZjQx
YTkzODI4MmI1YTBjN2Q0ZTkuLjQ2NWUxYmEyNmNiNGUwMDlmYmVmZGZiN2IyZDhjZjZlOGVlODQ3
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvY2VsdC9yYXRlLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3JhdGUuYwpAQCAtNTI5LDcgKzUy
OSw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSBpbnQgaW50ZXJwX2JpdHMycHVsc2VzKGNvbnN0IENF
TFRNb2RlICptLCBpbnQgc3RhcnQsIGludCBlbmQsCiAgICByZXR1cm4gY29kZWRCYW5kczsKIH0K
IAotaW50IGNvbXB1dGVfYWxsb2NhdGlvbihjb25zdCBDRUxUTW9kZSAqbSwgaW50IHN0YXJ0LCBp
bnQgZW5kLCBjb25zdCBpbnQgKm9mZnNldHMsIGNvbnN0IGludCAqY2FwLCBpbnQgYWxsb2NfdHJp
bSwgaW50ICppbnRlbnNpdHksIGludCAqZHVhbF9zdGVyZW8sCitpbnQgY2x0X2NvbXB1dGVfYWxs
b2NhdGlvbihjb25zdCBDRUxUTW9kZSAqbSwgaW50IHN0YXJ0LCBpbnQgZW5kLCBjb25zdCBpbnQg
Km9mZnNldHMsIGNvbnN0IGludCAqY2FwLCBpbnQgYWxsb2NfdHJpbSwgaW50ICppbnRlbnNpdHks
IGludCAqZHVhbF9zdGVyZW8sCiAgICAgICBvcHVzX2ludDMyIHRvdGFsLCBvcHVzX2ludDMyICpi
YWxhbmNlLCBpbnQgKnB1bHNlcywgaW50ICplYml0cywgaW50ICpmaW5lX3ByaW9yaXR5LCBpbnQg
QywgaW50IExNLCBlY19jdHggKmVjLCBpbnQgZW5jb2RlLCBpbnQgcHJldiwgaW50IHNpZ25hbEJh
bmR3aWR0aCkKIHsKICAgIGludCBsbywgaGksIGxlbiwgajsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9yYXRl
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL2NlbHQvcmF0ZS5oCmluZGV4IDUxNWY3Njg3Y2VjNmY2ZjA2OGMzZmNkYzY3NDVmMjc1Mjc1
MTRlNjkuLmZhZDVlNDEyZGFmYWM5NzE0ODAyYzNmZDBmOTJkOTc0NmE2NjQ2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvY2VsdC9yYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3JhdGUuaApAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMg
T1BVU19JTkxJTkUgaW50IHB1bHNlczJiaXRzKGNvbnN0IENFTFRNb2RlICptLCBpbnQgYmFuZCwg
aW50IExNLCBpbnQgcHVscwogIEBwYXJhbSBwdWxzZXMgTnVtYmVyIG9mIHB1bHNlcyBwZXIgYmFu
ZCAocmV0dXJuZWQpCiAgQHJldHVybiBUb3RhbCBudW1iZXIgb2YgYml0cyBhbGxvY2F0ZWQKICov
Ci1pbnQgY29tcHV0ZV9hbGxvY2F0aW9uKGNvbnN0IENFTFRNb2RlICptLCBpbnQgc3RhcnQsIGlu
dCBlbmQsIGNvbnN0IGludCAqb2Zmc2V0cywgY29uc3QgaW50ICpjYXAsIGludCBhbGxvY190cmlt
LCBpbnQgKmludGVuc2l0eSwgaW50ICpkdWFsX3N0ZXJvLAoraW50IGNsdF9jb21wdXRlX2FsbG9j
YXRpb24oY29uc3QgQ0VMVE1vZGUgKm0sIGludCBzdGFydCwgaW50IGVuZCwgY29uc3QgaW50ICpv
ZmZzZXRzLCBjb25zdCBpbnQgKmNhcCwgaW50IGFsbG9jX3RyaW0sIGludCAqaW50ZW5zaXR5LCBp
bnQgKmR1YWxfc3RlcmVvLAogICAgICAgb3B1c19pbnQzMiB0b3RhbCwgb3B1c19pbnQzMiAqYmFs
YW5jZSwgaW50ICpwdWxzZXMsIGludCAqZWJpdHMsIGludCAqZmluZV9wcmlvcml0eSwgaW50IEMs
IGludCBMTSwgZWNfY3R4ICplYywgaW50IGVuY29kZSwgaW50IHByZXYsIGludCBzaWduYWxCYW5k
d2lkdGgpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC90ZXN0cy90ZXN0X3VuaXRfZW50cm9w
eS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9lbnRyb3B5LmMKaW5kZXggZmY5MjY1ODY0YzE3MjNj
NGJmYjU3Y2Q4NTYzNWJjODM2NGFiZTk4Mi4uN2Y2NzQ1MjlkZmQ2M2JmZjA2MDRlMDJiOTVhNjE1
YzRhOGY0YTZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9lbnRyb3B5LmMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9lbnRyb3B5LmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx0aW1lLmg+CisjZGVm
aW5lIENFTFRfQwogI2luY2x1ZGUgImVudGNvZGUuaCIKICNpbmNsdWRlICJlbnRlbmMuaCIKICNp
bmNsdWRlICJlbnRkZWMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC90ZXN0cy90ZXN0X3VuaXRfbGFwbGFj
ZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9sYXBsYWNlLmMKaW5kZXggMjI5NTFlMjllZWUyMjQ3
ZmIyOWQwN2ZmNTk3YzI4MjI1NjNiNDlmZS4uNzI3YmYwMTJlZmRmZjkwMDFlNjYxYWEzNWZjZDE0
ZTFmMjY2OGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9sYXBsYWNlLmMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9sYXBsYWNlLmMKQEAgLTMxLDggKzMxLDggQEAKIAogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSAibGFwbGFjZS5o
IgogI2RlZmluZSBDRUxUX0MKKyNpbmNsdWRlICJsYXBsYWNlLmgiCiAjaW5jbHVkZSAic3RhY2tf
YWxsb2MuaCIKIAogI2luY2x1ZGUgImVudGVuYy5jIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rl
c3RfdW5pdF9yb3RhdGlvbi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9yb3RhdGlvbi5jCmluZGV4
IDI2N2I5ODMwMWFjODM4Y2NjYzNmNTgyYjViMjI5MzNhNjZkNmMxZTcuLjhhMzFiM2YyYjFhMDg4
ZTg1OTc0NDgzY2MwNjBlZDM5OTRlOTE4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC90ZXN0cy90ZXN0X3Vu
aXRfcm90YXRpb24uYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X3JvdGF0aW9uLmMKQEAgLTMz
LDggKzMzLDYgQEAKICNkZWZpbmUgQ1VTVE9NX01PREVTCiAjZW5kaWYKIAotI2RlZmluZSBDRUxU
X0MKLQogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSAi
dnEuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC92cS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3ZxLmMKaW5kZXggOGVmODBlNTA3ZjI2
MmRhZDU1ZTVlYjZkYmJmNWFlMmIxNDNhZDEwNy4uODAxMWUyMjU0OGJkYTg4YmY3NDE0NzhmOGVl
ZTg5MDBlYzMzMzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3ZxLmMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3ZxLmMKQEAgLTM5
LDYgKzM5LDEwIEBACiAjaW5jbHVkZSAicmF0ZS5oIgogI2luY2x1ZGUgInBpdGNoLmgiCiAKKyNp
ZiBkZWZpbmVkKE1JUFNyMV9BU00pCisjaW5jbHVkZSAibWlwcy92cV9taXBzcjEuaCIKKyNlbmRp
ZgorCiAjaWZuZGVmIE9WRVJSSURFX3ZxX2V4cF9yb3RhdGlvbjEKIHN0YXRpYyB2b2lkIGV4cF9y
b3RhdGlvbjEoY2VsdF9ub3JtICpYLCBpbnQgbGVuLCBpbnQgc3RyaWRlLCBvcHVzX3ZhbDE2IGMs
IG9wdXNfdmFsMTYgcykKIHsKQEAgLTIzMCwxMiArMjM0LDEyIEBAIG9wdXNfdmFsMTYgb3BfcHZx
X3NlYXJjaF9jKGNlbHRfbm9ybSAqWCwgaW50ICppeSwgaW50IEssIGludCBOLCBpbnQgYXJjaCkK
ICAgICAgICAgIHB1bHNlc0xlZnQgLT0gaXlbal07CiAgICAgICB9ICB3aGlsZSAoKytqPE4pOwog
ICAgfQotICAgY2VsdF9hc3NlcnQyKHB1bHNlc0xlZnQ+PTAsICJBbGxvY2F0ZWQgdG9vIG1hbnkg
cHVsc2VzIGluIHRoZSBxdWljayBwYXNzIik7CisgICBjZWx0X3NpZ19hc3NlcnQocHVsc2VzTGVm
dD49MCk7CiAKICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IGp1c3QgaW4gY2Fz
ZSBpdCBkb2VzIChlLmcuIG9uIHNpbGVuY2UpCiAgICAgICB3ZSBmaWxsIHRoZSBmaXJzdCBiaW4g
d2l0aCBwdWxzZXMuICovCiAjaWZkZWYgRklYRURfUE9JTlRfREVCVUcKLSAgIGNlbHRfYXNzZXJ0
MihwdWxzZXNMZWZ0PD1OKzMsICJOb3QgZW5vdWdoIHB1bHNlcyBpbiB0aGUgcXVpY2sgcGFzcyIp
OworICAgY2VsdF9zaWdfYXNzZXJ0KHB1bHNlc0xlZnQ8PU4rMyk7CiAjZW5kaWYKICAgIGlmIChw
dWxzZXNMZWZ0ID4gTiszKQogICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3ZxLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdnEuaApp
bmRleCAwZGZlNmFmMDU4MjM5ODZjYWQyN2YxMWVhZDYwMTI1MmEzMDQ4NTYzLi40NWVjNTU5MThl
MzIyY2FjOWFjZmRjYzVhY2UyYTgwNWUxODg5MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdnEuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L2NlbHQvdnEuaApAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRlICJ4ODYvdnFfc3NlLmgiCiAj
ZW5kaWYKIAotI2lmIGRlZmluZWQoTUlQU3IxX0FTTSkKLSNpbmNsdWRlICJtaXBzL3ZxX21pcHNy
MS5oIgotI2VuZGlmCi0KIHZvaWQgZXhwX3JvdGF0aW9uKGNlbHRfbm9ybSAqWCwgaW50IGxlbiwg
aW50IGRpciwgaW50IHN0cmlkZSwgaW50IEssIGludCBzcHJlYWQpOwogCiBvcHVzX3ZhbDE2IG9w
X3B2cV9zZWFyY2hfYyhjZWx0X25vcm0gKlgsIGludCAqaXksIGludCBLLCBpbnQgTiwgaW50IGFy
Y2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3g4Ni9jZWx0X2xwY19zc2UuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC94ODYvY2VsdF9s
cGNfc3NlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0Nzg1Njg4NDlhYTQyZWE3
OGRiNmRiMjY4MmFiZjdlZDE1MGZmYTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9jZWx0L3g4Ni9jZWx0X2xwY19zc2UuYworKysgL2Rldi9udWxsCkBAIC0x
LDg5ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5DCi0g
ICBXcml0dGVuIGJ5IFhpYW5nTWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZwotCi0gICBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICAgYXJlIG1ldDoKLQotICAgLSBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gICBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAgIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSCi0gICBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAgIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRgotICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICAgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0q
LwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0K
LSNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KLSNpbmNsdWRl
IDxzbW1pbnRyaW4uaD4KLSNpbmNsdWRlICJjZWx0X2xwYy5oIgotI2luY2x1ZGUgInN0YWNrX2Fs
bG9jLmgiCi0jaW5jbHVkZSAibWF0aG9wcy5oIgotI2luY2x1ZGUgInBpdGNoLmgiCi0jaW5jbHVk
ZSAieDg2Y3B1LmgiCi0KLSNpZiBkZWZpbmVkKEZJWEVEX1BPSU5UKQotCi12b2lkIGNlbHRfZmly
X3NzZTRfMShjb25zdCBvcHVzX3ZhbDE2ICp4LAotICAgICAgICAgY29uc3Qgb3B1c192YWwxNiAq
bnVtLAotICAgICAgICAgb3B1c192YWwxNiAqeSwKLSAgICAgICAgIGludCBOLAotICAgICAgICAg
aW50IG9yZCwKLSAgICAgICAgIGludCBhcmNoKQotewotICAgIGludCBpLGo7Ci0gICAgVkFSREVD
TChvcHVzX3ZhbDE2LCBybnVtKTsKLQotICAgIF9fbTEyOGkgdmVjTm9BOwotICAgIG9wdXNfaW50
MzIgbm9BIDsKLSAgICBTQVZFX1NUQUNLOwotCi0gICBBTExPQyhybnVtLCBvcmQsIG9wdXNfdmFs
MTYpOwotICAgZm9yKGk9MDtpPG9yZDtpKyspCi0gICAgICBybnVtW2ldID0gbnVtW29yZC1pLTFd
OwotICAgbm9BID0gRVhURU5EMzIoMSkgPDwgU0lHX1NISUZUID4+IDE7Ci0gICB2ZWNOb0EgPSBf
bW1fc2V0X2VwaTMyKG5vQSwgbm9BLCBub0EsIG5vQSk7Ci0KLSAgIGZvciAoaT0wO2k8Ti0zO2kr
PTQpCi0gICB7Ci0gICAgICBvcHVzX3ZhbDMyIHN1bXNbNF0gPSB7MH07Ci0gICAgICBfX20xMjhp
IHZlY1N1bSwgdmVjWDsKLQotICAgICAgeGNvcnJfa2VybmVsKHJudW0sIHgraS1vcmQsIHN1bXMs
IG9yZCwgYXJjaCk7Ci0KLSAgICAgIHZlY1N1bSA9IF9tbV9sb2FkdV9zaTEyOCgoX19tMTI4aSAq
KXN1bXMpOwotICAgICAgdmVjU3VtID0gX21tX2FkZF9lcGkzMih2ZWNTdW0sIHZlY05vQSk7Ci0g
ICAgICB2ZWNTdW0gPSBfbW1fc3JhaV9lcGkzMih2ZWNTdW0sIFNJR19TSElGVCk7Ci0gICAgICB2
ZWNYID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KHggKyBpKTsKLSAgICAgIHZlY1N1bSA9IF9tbV9h
ZGRfZXBpMzIodmVjU3VtLCB2ZWNYKTsKLSAgICAgIHZlY1N1bSA9IF9tbV9wYWNrc19lcGkzMih2
ZWNTdW0sIHZlY1N1bSk7Ci0gICAgICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpICopKHkgKyBp
KSwgdmVjU3VtKTsKLSAgIH0KLSAgIGZvciAoO2k8TjtpKyspCi0gICB7Ci0gICAgICBvcHVzX3Zh
bDMyIHN1bSA9IDA7Ci0gICAgICBmb3IgKGo9MDtqPG9yZDtqKyspCi0gICAgICAgICBzdW0gPSBN
QUMxNl8xNihzdW0sIHJudW1bal0sIHhbaStqLW9yZF0pOwotICAgICAgeVtpXSA9IFNBVFVSQVRF
MTYoQUREMzIoRVhURU5EMzIoeFtpXSksIFBTSFIzMihzdW0sIFNJR19TSElGVCkpKTsKLSAgIH0K
LQotICAgUkVTVE9SRV9TVEFDSzsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L2Nl
bHRfbHBjX3NzZTRfMS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3g4Ni9jZWx0X2xwY19zc2U0XzEuYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NDc4NTY4ODQ5YWE0MmVhNzhkYjZkYjI2ODJhYmY3ZWQxNTBmZmE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L3g4Ni9jZWx0X2xwY19zc2U0XzEuYwpAQCAtMCwwICsxLDg5IEBACisvKiBDb3B5cmln
aHQgKGMpIDIwMTQsIENpc2NvIFN5c3RlbXMsIElOQworICAgV3JpdHRlbiBieSBYaWFuZ01pbmda
aHUgV2VpWmhvdSBNaW5QZW5nIFlhbldhbmcKKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAgIGFyZSBtZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycn
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09ORklH
X0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8eG1taW50cmluLmg+
CisjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjaW5jbHVkZSA8c21taW50cmluLmg+CisjaW5jbHVk
ZSAiY2VsdF9scGMuaCIKKyNpbmNsdWRlICJzdGFja19hbGxvYy5oIgorI2luY2x1ZGUgIm1hdGhv
cHMuaCIKKyNpbmNsdWRlICJwaXRjaC5oIgorI2luY2x1ZGUgIng4NmNwdS5oIgorCisjaWYgZGVm
aW5lZChGSVhFRF9QT0lOVCkKKwordm9pZCBjZWx0X2Zpcl9zc2U0XzEoY29uc3Qgb3B1c192YWwx
NiAqeCwKKyAgICAgICAgIGNvbnN0IG9wdXNfdmFsMTYgKm51bSwKKyAgICAgICAgIG9wdXNfdmFs
MTYgKnksCisgICAgICAgICBpbnQgTiwKKyAgICAgICAgIGludCBvcmQsCisgICAgICAgICBpbnQg
YXJjaCkKK3sKKyAgICBpbnQgaSxqOworICAgIFZBUkRFQ0wob3B1c192YWwxNiwgcm51bSk7CisK
KyAgICBfX20xMjhpIHZlY05vQTsKKyAgICBvcHVzX2ludDMyIG5vQSA7CisgICAgU0FWRV9TVEFD
SzsKKworICAgQUxMT0Mocm51bSwgb3JkLCBvcHVzX3ZhbDE2KTsKKyAgIGZvcihpPTA7aTxvcmQ7
aSsrKQorICAgICAgcm51bVtpXSA9IG51bVtvcmQtaS0xXTsKKyAgIG5vQSA9IEVYVEVORDMyKDEp
IDw8IFNJR19TSElGVCA+PiAxOworICAgdmVjTm9BID0gX21tX3NldF9lcGkzMihub0EsIG5vQSwg
bm9BLCBub0EpOworCisgICBmb3IgKGk9MDtpPE4tMztpKz00KQorICAgeworICAgICAgb3B1c192
YWwzMiBzdW1zWzRdID0gezB9OworICAgICAgX19tMTI4aSB2ZWNTdW0sIHZlY1g7CisKKyAgICAg
IHhjb3JyX2tlcm5lbChybnVtLCB4K2ktb3JkLCBzdW1zLCBvcmQsIGFyY2gpOworCisgICAgICB2
ZWNTdW0gPSBfbW1fbG9hZHVfc2kxMjgoKF9fbTEyOGkgKilzdW1zKTsKKyAgICAgIHZlY1N1bSA9
IF9tbV9hZGRfZXBpMzIodmVjU3VtLCB2ZWNOb0EpOworICAgICAgdmVjU3VtID0gX21tX3NyYWlf
ZXBpMzIodmVjU3VtLCBTSUdfU0hJRlQpOworICAgICAgdmVjWCA9IE9QX0NWVEVQSTE2X0VQSTMy
X002NCh4ICsgaSk7CisgICAgICB2ZWNTdW0gPSBfbW1fYWRkX2VwaTMyKHZlY1N1bSwgdmVjWCk7
CisgICAgICB2ZWNTdW0gPSBfbW1fcGFja3NfZXBpMzIodmVjU3VtLCB2ZWNTdW0pOworICAgICAg
X21tX3N0b3JlbF9lcGk2NCgoX19tMTI4aSAqKSh5ICsgaSksIHZlY1N1bSk7CisgICB9CisgICBm
b3IgKDtpPE47aSsrKQorICAgeworICAgICAgb3B1c192YWwzMiBzdW0gPSAwOworICAgICAgZm9y
IChqPTA7ajxvcmQ7aisrKQorICAgICAgICAgc3VtID0gTUFDMTZfMTYoc3VtLCBybnVtW2pdLCB4
W2krai1vcmRdKTsKKyAgICAgIHlbaV0gPSBTQVRVUkFURTE2KEFERDMyKEVYVEVORDMyKHhbaV0p
LCBQU0hSMzIoc3VtLCBTSUdfU0hJRlQpKSk7CisgICB9CisKKyAgIFJFU1RPUkVfU1RBQ0s7Cit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3g4Ni92cV9zc2UyLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L3ZxX3Nz
ZTIuYwppbmRleCA2YTMxNzcwMzU4YjdkNDE2NDcxZTE1NzZkZDg1MmM4YjIwODc4YmU3Li43NzUw
NDI4NjBkNDNjMzFjYjc2YTlmNDgzOWQxMDA4YmNiZTc5OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2
L3ZxX3NzZTIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L3ZxX3NzZTIuYwpAQCAtMTM1LDcgKzEzNSw3IEBAIG9w
dXNfdmFsMTYgb3BfcHZxX3NlYXJjaF9zc2UyKGNlbHRfbm9ybSAqX1gsIGludCAqaXksIGludCBL
LCBpbnQgTiwgaW50IGFyY2gpCiAgICB9CiAgICBYW05dID0gWFtOKzFdID0gWFtOKzJdID0gLTEw
MDsKICAgIHlbTl0gPSB5W04rMV0gPSB5W04rMl0gPSAxMDA7Ci0gICBjZWx0X2Fzc2VydDIocHVs
c2VzTGVmdD49MCwgIkFsbG9jYXRlZCB0b28gbWFueSBwdWxzZXMgaW4gdGhlIHF1aWNrIHBhc3Mi
KTsKKyAgIGNlbHRfc2lnX2Fzc2VydChwdWxzZXNMZWZ0Pj0wKTsKIAogICAgLyogVGhpcyBzaG91
bGQgbmV2ZXIgaGFwcGVuLCBidXQganVzdCBpbiBjYXNlIGl0IGRvZXMgKGUuZy4gb24gc2lsZW5j
ZSkKICAgICAgIHdlIGZpbGwgdGhlIGZpcnN0IGJpbiB3aXRoIHB1bHNlcy4gKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvY2VsdC94ODYveDg2Y3B1LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L3g4NmNwdS5oCmluZGV4IDA0ZmQ0OGFhYzRi
ZjRkNmEzZWUxM2E3YTliZTJmYjA2OTk3YTg1NzMuLjFlMmJmMTdiOWI4NGVlZjI0Y2E5N2Q5OWE0
YTZjM2EzNmIwOTNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC94ODYveDg2Y3B1LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3g4
Ni94ODZjcHUuaApAQCAtODIsNyArODIsOSBAQCBpbnQgb3B1c19zZWxlY3RfYXJjaCh2b2lkKTsK
ICAoX21tX2N2dGVwaThfZXBpMzIoKihfX20xMjhpICopKHgpKSkKICNlbmRpZgogCi0jIGlmICFk
ZWZpbmVkKF9fT1BUSU1JWkVfXykKKy8qIHNpbWlsYXIgcmVhc29uaW5nIGFib3V0IHRoZSBpbnN0
cnVjdGlvbiBzZXF1ZW5jZSBhcyBpbiB0aGUgMzItYml0IG1hY3JvIGFib3ZlLAorICovCisjIGlm
IGRlZmluZWQoX19jbGFuZ19fKSB8fCAhZGVmaW5lZChfX09QVElNSVpFX18pCiAjICBkZWZpbmUg
T1BfQ1ZURVBJMTZfRVBJMzJfTTY0KHgpIFwKICAoX21tX2N2dGVwaTE2X2VwaTMyKF9tbV9sb2Fk
bF9lcGk2NCgoX19tMTI4aSAqKSh4KSkpKQogIyBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NvbmZpZy5oLmNt
YWtlLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jb25maWcuaC5jbWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTUwODQyYzVlMWMxNDE3OTQ3
YjljZjY0MDQ4NTBiNmY5OTNiMGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jb25maWcuaC5jbWFrZS5p
bgpAQCAtMCwwICsxIEBACisjY21ha2VkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJAUEFDS0FHRV9W
RVJTSU9OQCIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NvbmZpZ3Vy
ZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY29uZmlndXJlLmFjCmluZGV4IDVmZmEyZDM4ZTcwY2U2NWMzOTBkOTAyMGI0MTEzNGI5
ZjU3ZDIwOTIuLjE4ZWNlMjkxMzI1NTliMWYwMjNlYjdmYjJlNTMxNTk4YjRhY2U3YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY29uZmlndXJlLmFjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY29uZmlndXJlLmFjCkBAIC0yMiw5ICsyMiw5IEBAIG00
X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCiAKICMg
Rm9yIGxpYnRvb2wuCiBkbmwgUGxlYXNlIHVwZGF0ZSB0aGVzZSBmb3IgcmVsZWFzZXMuCi1PUFVT
X0xUX0NVUlJFTlQ9NgotT1BVU19MVF9SRVZJU0lPTj0xCi1PUFVTX0xUX0FHRT02CitPUFVTX0xU
X0NVUlJFTlQ9OAorT1BVU19MVF9SRVZJU0lPTj0wCitPUFVTX0xUX0FHRT04CiAKIEFDX1NVQlNU
KE9QVVNfTFRfQ1VSUkVOVCkKIEFDX1NVQlNUKE9QVVNfTFRfUkVWSVNJT04pCkBAIC00MTQsNyAr
NDE0LDcgQEAgQUNfREVGVU4oW09QVVNfUEFUSF9ORTEwXSwKICAgICAgICAgIE5FMTBfQ0ZMQUdT
PSItSSRORTEwX2luY2x1ZGVzIgogICAgICAgZWxpZiB0ZXN0ICJ4JE5FMTBfcHJlZml4IiA9ICJ4
bm8iIHx8IHRlc3QgIngkTkUxMF9wcmVmaXgiID0gInh5ZXMiIDsgdGhlbgogICAgICAgICAgTkUx
MF9DRkxBR1M9IiIKLSAgICAgIGVsaWYgdGVzdCAieCRvZ2dfcHJlZml4IiAhPSAieCIgOyB0aGVu
CisgICAgICBlbGlmIHRlc3QgIngkTkUxMF9wcmVmaXgiICE9ICJ4IiA7IHRoZW4KICAgICAgICAg
IE5FMTBfQ0ZMQUdTPSItSSRORTEwX3ByZWZpeC9pbmNsdWRlIgogICAgICAgZWxpZiB0ZXN0ICJ4
JHByZWZpeCIgIT0gInhOT05FIjsgdGhlbgogICAgICAgICAgTkUxMF9DRkxBR1M9Ii1JJHByZWZp
eC9pbmNsdWRlIgpAQCAtNzU5LDggKzc1OSwxNiBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9hc3Nl
cnRpb25zIiA9ICJ5ZXMiXSwgWwogICBBQ19ERUZJTkUoW0VOQUJMRV9BU1NFUlRJT05TXSwgWzFd
LCBbQXNzZXJ0aW9uc10pCiBdKQogCitBQ19BUkdfRU5BQkxFKFtoYXJkZW5pbmddLAorICAgIFtB
U19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWhhcmRlbmluZ10sW2Rpc2FibGUgcnVuLXRpbWUgY2hl
Y2tzIHRoYXQgYXJlIGNoZWFwIGFuZCBzYWZlIGZvciB1c2UgaW4gcHJvZHVjdGlvbl0pXSwsCisg
ICAgW2VuYWJsZV9oYXJkZW5pbmc9eWVzXSkKKworQVNfSUYoW3Rlc3QgIiRlbmFibGVfaGFyZGVu
aW5nIiA9ICJ5ZXMiXSwgWworICBBQ19ERUZJTkUoW0VOQUJMRV9IQVJERU5JTkddLCBbMV0sIFtI
YXJkZW5pbmddKQorXSkKKwogQUNfQVJHX0VOQUJMRShbZnV6emluZ10sCi0gICAgW0FTX0hFTFBf
U1RSSU5HKFstLWVuYWJsZS1mdXp6aW5nXSxbY2F1c2VzIHRoZSBlbmNvZGVyIHRvIG1ha2UgcmFu
ZG9tIGRlY2lzaW9uc10pXSwsCisJICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1mdXp6
aW5nXSxbY2F1c2VzIHRoZSBlbmNvZGVyIHRvIG1ha2UgcmFuZG9tIGRlY2lzaW9ucyAoZG8gbm90
IHVzZSBpbiBwcm9kdWN0aW9uKV0pXSwsCiAgICAgW2VuYWJsZV9mdXp6aW5nPW5vXSkKIAogQVNf
SUYoW3Rlc3QgIiRlbmFibGVfZnV6emluZyIgPSAieWVzIl0sIFsKQEAgLTc3NiwxNCArNzg0LDYg
QEAgQVNfSUYoW3Rlc3QgIiRlbmFibGVfY2hlY2tfYXNtIiA9ICJ5ZXMiXSwgWwogICBBQ19ERUZJ
TkUoW09QVVNfQ0hFQ0tfQVNNXSwgWzFdLCBbUnVuIGJpdC1leGFjdG5lc3MgY2hlY2tzIGJldHdl
ZW4gb3B0aW1pemVkIGFuZCBjIGltcGxlbWVudGF0aW9uc10pCiBdKQogCi1BQ19BUkdfRU5BQkxF
KFthbWJpc29uaWNzXSwKLSAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWFtYmlzb25pY3Nd
LFtlbmFibGUgZXhwZXJpbWVudGFsIGFtYmlzb25pYyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgc3Vw
cG9ydF0pXSwsCi0gICAgW2VuYWJsZV9hbWJpc29uaWNzPW5vXSkKLQotQVNfSUYoW3Rlc3QgIiRl
bmFibGVfYW1iaXNvbmljcyIgPSAieWVzIl0sIFsKLSAgQUNfREVGSU5FKFtFTkFCTEVfRVhQRVJJ
TUVOVEFMX0FNQklTT05JQ1NdLCBbMV0sIFtBbWJpc29uaWNzIFN1cHBvcnRdKQotXSkKLQogQUNf
QVJHX0VOQUJMRShbZG9jXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1kb2NdLCBb
RG8gbm90IGJ1aWxkIEFQSSBkb2N1bWVudGF0aW9uXSldLCwKICAgICBbZW5hYmxlX2RvYz15ZXNd
KQpAQCAtODA0LDEyICs4MDQsMTIgQEAgQUNfQVJHX0VOQUJMRShbZXh0cmEtcHJvZ3JhbXNdLAog
QU1fQ09ORElUSU9OQUwoW0VYVFJBX1BST0dSQU1TXSwgW3Rlc3QgIiRlbmFibGVfZXh0cmFfcHJv
Z3JhbXMiID0gInllcyJdKQogCiAKLUFDX0FSR19FTkFCTEUoW3VwZGF0ZS1kcmFmdF0sCi0gIEFT
X0hFTFBfU1RSSU5HKFstLWVuYWJsZS11cGRhdGUtZHJhZnRdLCBbRW5hYmxlIGJpdHN0cmVhbSBj
aGFuZ2VzIGZyb20gZHJhZnQtaWV0Zi1jb2RlYy1vcHVzLXVwZGF0ZV0pLCwKLSAgW2VuYWJsZV91
cGRhdGVfZHJhZnQ9bm9dKQorQUNfQVJHX0VOQUJMRShbcmZjODI1MV0sCisJICAgICAgQVNfSEVM
UF9TVFJJTkcoWy0tZGlzYWJsZS1yZmM4MjUxXSwgW0Rpc2FibGUgYml0c3RyZWFtIGZpeGVzIGZy
b20gUkZDIDgyNTFdKSwsCisgIFtlbmFibGVfcmZjODI1MT15ZXNdKQogCi1BU19JRihbdGVzdCAi
JGVuYWJsZV91cGRhdGVfZHJhZnQiID0gInllcyJdLCBbCi0gIEFDX0RFRklORShbRU5BQkxFX1VQ
REFURV9EUkFGVF0sIFsxXSwgW0VuYWJsZSBiaXRzdHJlYW0gY2hhbmdlcyBmcm9tIGRyYWZ0LWll
dGYtY29kZWMtb3B1cy11cGRhdGVdKQorQVNfSUYoW3Rlc3QgIiRlbmFibGVfcmZjODI1MSIgPSAi
bm8iXSwgWworICAgICAgIEFDX0RFRklORShbRElTQUJMRV9VUERBVEVfRFJBRlRdLCBbMV0sIFtE
aXNhYmxlIGJpdHN0cmVhbSBmaXhlcyBmcm9tIFJGQyA4MjUxXSkKIF0pCiAKIApAQCAtODIyLDYg
KzgyMiw0OCBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tjaGFyIGZvbztd
XSldLAogICAgICAgQ0ZMQUdTPSIkc2F2ZWRfQ0ZMQUdTIgogICAgIF0pCiAKK29uX3g4Nj1ubwor
Y2FzZSAiJGhvc3RfY3B1IiBpbgoraVtbMzQ1Nl1dODYgfCB4ODZfNjQpCisgIG9uX3g4Nj15ZXMK
KyAgOzsKK2VzYWMKKworb25fd2luZG93cz1ubworY2FzZSAkaG9zdCBpbgorKmN5Z3dpbip8Km1p
bmd3KikKKyAgb25fd2luZG93cz15ZXMKKyAgOzsKK2VzYWMKKworZG5sIEVuYWJsZSBzdGFjay1w
cm90ZWN0b3ItYWxsIG9ubHkgb24geDg2IHdoZXJlIGl0J3Mgd2VsbCBzdXBwb3J0ZWQuCitkbmwg
b24gc29tZSBwbGF0Zm9ybXMgaXQgY2F1c2VzIGNyYXNoZXMuIEhvcGVmdWxseSB0aGUgT1MncyBk
ZWZhdWx0J3MKK2RubCBpbmNsdWRlIHRoaXMgb24gcGxhdGZvcm1zIHRoYXQgd29yayBidXQgaGF2
ZSBiZWVuIG1pc3NlZCBoZXJlLgorQUNfQVJHX0VOQUJMRShbc3RhY2stcHJvdGVjdG9yXSwKKyAg
ICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1zdGFjay1wcm90ZWN0b3JdLFtEaXNhYmxlIGNv
bXBpbGVyIHN0YWNrIGhhcmRlbmluZ10pXSwsCisgICAgWworICAgICAgQVNfSUYoW3Rlc3QgIiRh
Y19jdl9jX2NvbXBpbGVyX2dudSIgPSAieWVzIiAmJiB0ZXN0ICIkb25feDg2IiA9ICJ5ZXMiICYm
IHRlc3QgIiRvbl93aW5kb3dzIiA9ICJubyJdLAorICAgICAgICAgICAgW2VuYWJsZV9zdGFja19w
cm90ZWN0b3I9eWVzXSxbZW5hYmxlX3N0YWNrX3Byb3RlY3Rvcj1ub10pCisgICAgXSkKKworQVNf
SUYoW3Rlc3QgIiRlbmFibGVfc3RhY2tfcHJvdGVjdG9yIiA9ICJ5ZXMiXSwKKyBbCisgIHNhdmVk
X0NGTEFHUz0iJENGTEFHUyIKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mc3RhY2stcHJvdGVjdG9yLXN0
cm9uZyIKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiAke0NDfSBzdXBwb3J0cyAtZnN0YWNrLXByb3Rl
Y3Rvci1zdHJvbmddKQorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtbY2hh
ciBmb287XV0pXSwKKyAgICBbIEFDX01TR19SRVNVTFQoW3llc10pIF0sCisgICAgWworICAgICAg
QUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAgZW5hYmxlX3N0YWNrX3Byb3RlY3Rvcj1ubworICAg
ICAgQ0ZMQUdTPSIkc2F2ZWRfQ0ZMQUdTIgorICAgIF0pCisgXSkKKworQVNfSUYoW3Rlc3QgeCRh
Y19jdl9jX2NvbXBpbGVyX2dudSA9IHh5ZXNdLAorICAgIFtBWF9BRERfRk9SVElGWV9TT1VSQ0Vd
CispCisKIENGTEFHUz0iJENGTEFHUyAtVyIKIAogd2Fybl9DRkxBR1M9Ii1XYWxsIC1XZXh0cmEg
LVdjYXN0LWFsaWduIC1XbmVzdGVkLWV4dGVybnMgLVdzaGFkb3cgLVdzdHJpY3QtcHJvdG90eXBl
cyIKQEAgLTg3MywxMyArOTE1LDEzIEBAIEFDX01TR19OT1RJQ0UoWwogICAgICAgRml4ZWQgcG9p
bnQgZGVidWdnaW5nOiAuLi4uLi4uLi4gJHtlbmFibGVfZml4ZWRfcG9pbnRfZGVidWd9CiAgICAg
ICBJbmxpbmUgQXNzZW1ibHkgT3B0aW1pemF0aW9uczogLiAke2lubGluZV9vcHRpbWl6YXRpb259
CiAgICAgICBFeHRlcm5hbCBBc3NlbWJseSBPcHRpbWl6YXRpb25zOiAke2FzbV9vcHRpbWl6YXRp
b259Ci0gICAgICBJbnRyaW5zaWNzIE9wdGltaXphdGlvbnMuLi4uLi4uOiAke2ludHJpbnNpY3Nf
c3VwcG9ydH0KKyAgICAgIEludHJpbnNpY3MgT3B0aW1pemF0aW9uczogLi4uLi4uICR7aW50cmlu
c2ljc19zdXBwb3J0fQogICAgICAgUnVuLXRpbWUgQ1BVIGRldGVjdGlvbjogLi4uLi4uLi4gJHty
dGNkX3N1cHBvcnR9CiAgICAgICBDdXN0b20gbW9kZXM6IC4uLi4uLi4uLi4uLi4uLi4uLiAke2Vu
YWJsZV9jdXN0b21fbW9kZXN9CiAgICAgICBBc3NlcnRpb24gY2hlY2tpbmc6IC4uLi4uLi4uLi4u
LiAke2VuYWJsZV9hc3NlcnRpb25zfQorICAgICAgSGFyZGVuaW5nOiAuLi4uLi4uLi4uLi4uLi4u
Li4uLi4gJHtlbmFibGVfaGFyZGVuaW5nfQogICAgICAgRnV6emluZzogLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4gJHtlbmFibGVfZnV6emluZ30KICAgICAgIENoZWNrIEFTTTogLi4uLi4uLi4uLi4u
Li4uLi4uLi4uICR7ZW5hYmxlX2NoZWNrX2FzbX0KLSAgICAgIEFtYmlzb25pY3Mgc3VwcG9ydDog
Li4uLi4uLi4uLi4uICR7ZW5hYmxlX2FtYmlzb25pY3N9CiAKICAgICAgIEFQSSBkb2N1bWVudGF0
aW9uOiAuLi4uLi4uLi4uLi4uICR7ZW5hYmxlX2RvY30KICAgICAgIEV4dHJhIHByb2dyYW1zOiAu
Li4uLi4uLi4uLi4uLi4uICR7ZW5hYmxlX2V4dHJhX3Byb2dyYW1zfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9kb2Mv
ZHJhZnQtaWV0Zi1jb2RlYy1vcHVzLXVwZGF0ZS54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2RvYy9kcmFmdC1pZXRmLWNvZGVjLW9w
dXMtdXBkYXRlLnhtbAppbmRleCA2ZTUyYTE2NjhkOTA1OTc4MTVmY2E3YTlkYmVmMzhiODg5NmM1
MzYyLi4zMTI0ZTIyYzA4MDZhZTIxMzIwNTQyN2UxN2I1YTBlOTU2NDI0YjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L2RvYy9kcmFmdC1pZXRmLWNvZGVjLW9wdXMtdXBkYXRlLnhtbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2RvYy9kcmFmdC1pZXRm
LWNvZGVjLW9wdXMtdXBkYXRlLnhtbApAQCAtMTAsNyArMTAsNyBAQAogPD9yZmMgaW5saW5lPSJ5
ZXMiPz4KIDw/cmZjIGNvbXBhY3Q9InllcyI/PgogPD9yZmMgc3ViY29tcGFjdD0ibm8iPz4KLTxy
ZmMgY2F0ZWdvcnk9InN0ZCIgZG9jTmFtZT0iZHJhZnQtaWV0Zi1jb2RlYy1vcHVzLXVwZGF0ZS0w
OCIKKzxyZmMgY2F0ZWdvcnk9InN0ZCIgZG9jTmFtZT0iZHJhZnQtaWV0Zi1jb2RlYy1vcHVzLXVw
ZGF0ZS0xMCIKICAgICAgaXByPSJ0cnVzdDIwMDkwMiIgdXBkYXRlcz0iNjcxNiI+CiAgIDxmcm9u
dD4KICAgICA8dGl0bGUgYWJicmV2PSJPcHVzIFVwZGF0ZSI+VXBkYXRlcyB0byB0aGUgT3B1cyBB
dWRpbyBDb2RlYzwvdGl0bGU+CkBAIC00NywxMSArNDcsMTMgQEAKIAogCiAKLSAgICA8ZGF0ZSBk
YXk9IjI2IiBtb250aD0iSnVseSIgeWVhcj0iMjAxNyIgLz4KKyAgICA8ZGF0ZSBkYXk9IjI0IiBt
b250aD0iQXVndXN0IiB5ZWFyPSIyMDE3IiAvPgogCiAgICAgPGFic3RyYWN0PgogICAgICAgPHQ+
VGhpcyBkb2N1bWVudCBhZGRyZXNzZXMgbWlub3IgaXNzdWVzIHRoYXQgd2VyZSBmb3VuZCBpbiB0
aGUgc3BlY2lmaWNhdGlvbgotICAgICAgb2YgdGhlIE9wdXMgYXVkaW8gY29kZWMgaW4gUkZDIDY3
MTYuPC90PgorICAgICAgb2YgdGhlIE9wdXMgYXVkaW8gY29kZWMgaW4gUkZDIDY3MTYuIEl0IHVw
ZGF0ZXMgdGhlIG5vcm1hdGl2ZSBkZWNvZGVyIGltcGxlbWVudGF0aW9uCisgICAgICBpbmNsdWRl
ZCBpbiB0aGUgYXBwZW5kaXggb2YgUkZDIDY3MTYuIFRoZSBjaGFuZ2VzIGZpeGVzIHJlYWwgYW5k
IHBvdGVudGlhbCBzZWN1cml0eS1yZWxhdGVkCisgICAgICBpc3N1ZXMsIGFzIHdlbGwgbWlub3Ig
cXVhbGl0eS1yZWxhdGVkIGlzc3Vlcy48L3Q+CiAgICAgPC9hYnN0cmFjdD4KICAgPC9mcm9udD4K
IApAQCAtNzksNyArODEsNyBAQAogICAgIG9mIHRoZSBmb2xsb3dpbmcgbGluZSBhcmUgbm90IHBh
cnQgb2YgdGhlIHBhdGNoLiBBIHByb3Blcmx5IGZvcm1hdHRlZCBwYXRjaAogICAgIGluY2x1ZGlu
ZyBhbGwgY2hhbmdlcyBpcyBhdmFpbGFibGUgYXQKICAgICA8ZXJlZiB0YXJnZXQ9Imh0dHBzOi8v
d3d3LmlldGYub3JnL3Byb2NlZWRpbmdzLzk4L3NsaWRlcy9tYXRlcmlhbHMtOTgtY29kZWMtb3B1
cy11cGRhdGUtMDAucGF0Y2giLz4KLSAgICBhbmQgaGFzIGEgU0hBMSAwMjllM2FhODhmYzM0MmM5
MWU2N2EyMWU3YmZiYzk0NTg2NjFjZDVmLgorICAgIGFuZCBoYXMgYSBTSEEtMSBoYXNoIG9mIDAy
OWUzYWE4OGZjMzQyYzkxZTY3YTIxZTdiZmJjOTQ1ODY2MWNkNWYuCiAgICAgPC90PgogCiAgICAg
PC9zZWN0aW9uPgpAQCAtMTIzLDggKzEyNSw5IEBACiAgICAgICA8dD5JdCB3YXMgZGlzY292ZXJl
ZCB0aGF0IHNvbWUgaW52YWxpZCBwYWNrZXRzIG9mIHZlcnkgbGFyZ2Ugc2l6ZSBjb3VsZCB0cmln
Z2VyCiAgICAgICBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIE9wdXMgcGFja2V0IHBhcnNp
bmcgY29kZSByZXNwb25zaWJsZSBmb3IgcGFkZGluZy4KICAgICAgIFRoaXMgaXMgZHVlIHRvIGFu
IGludGVnZXIgb3ZlcmZsb3cgaWYgdGhlIHNpZ25hbGVkIHBhZGRpbmcgZXhjZWVkcyAyXjMxLTEg
Ynl0ZXMKLSAgICAgICh0aGUgYWN0dWFsIHBhY2tldCBtYXkgYmUgc21hbGxlcikuIFRoZSBjb2Rl
IGNhbiBiZSBmaXhlZCBieSBhcHBseWluZyB0aGUgZm9sbG93aW5nCi0gICAgICBjaGFuZ2VzIGF0
IGxpbmUgNTk2IG9mIHNyYy9vcHVzX2RlY29kZXIuYzoKKyAgICAgICh0aGUgYWN0dWFsIHBhY2tl
dCBtYXkgYmUgc21hbGxlcikuIFRoZSBjb2RlIGNhbiBiZSBmaXhlZCBieSBkZWNyZW1lbnRpbmcg
dGhlCisgICAgICAoc2lnbmVkKSBsZW4gdmFsdWUsIGluc3RlYWQgb2YgaW5jcmVtZW50aW5nIGEg
c2VwYXJhdGUgcGFkZGluZyBjb3VudGVyLgorICAgICAgVGhpcyBpcyBkb25lIGJ5IGFwcGx5aW5n
IHRoZSBmb2xsb3dpbmcgY2hhbmdlcyBhdCBsaW5lIDU5NiBvZiBzcmMvb3B1c19kZWNvZGVyLmM6
CiAgICAgPC90PgogPGZpZ3VyZT4KIDxhcnR3b3JrPjwhW0NEQVRBWwpAQCAtMTYyLDcgKzE2NSw3
IEBACiAgICAgPHQ+VGhlIGNhbGxzIHRvIG1lbWNweSgpIHdlcmUgdXNpbmcgc2l6ZW9mKG9wdXNf
aW50MzIpLCBidXQgdGhlIHR5cGUgb2YgdGhlCiAgICAgICAgIGxvY2FsIGJ1ZmZlciB3YXMgb3B1
c19pbnQxNi48L3Q+CiAgICAgPHQ+QmVjYXVzZSB0aGUgc2l6ZSB3YXMgd3JvbmcsIHRoaXMgcG90
ZW50aWFsbHkgYWxsb3dlZCB0aGUgc291cmNlCi0gICAgICAgIGFuZCBkZXN0aW5hdGlvbiByZWdp
b25zIG9mIHRoZSBtZW1jcHkoKSB0byBvdmVybGFwLgorICAgICAgICBhbmQgZGVzdGluYXRpb24g
cmVnaW9ucyBvZiB0aGUgbWVtY3B5KCkgdG8gb3ZlcmxhcCBvbiB0aGUgY29weSBmcm9tICJidWYi
IHRvICJidWYiLgogICAgICAgICAgIFdlIGJlbGlldmUgdGhhdCBuU2FtcGxlc0luIChudW1iZXIg
b2YgaW5wdXQgc2FtcGxlcykgaXMgYXQgbGVhc3QgZnNfaW5fa2haIChzYW1wbGluZyByYXRlIGlu
IGtIeiksCiAgICAgICAgICAgd2hpY2ggaXMgYXQgbGVhc3QgOC4KICAgICAgICBTaW5jZSBSRVNB
TVBMRVJfT1JERVJfRklSXzEyIGlzIG9ubHkgOCwgdGhhdCBzaG91bGQgbm90IGJlIGEgcHJvYmxl
bSBvbmNlCkBAIC0xNzEsMTIgKzE3NCw2IEBACiAgICAgICAgIGRhdGEgc3RvcmVkIGluIGl0IHdh
cyBhY3R1YWxseSB0d2ljZSB0aGUgaW5wdXQgYmF0Y2ggc2l6ZQogICAgICAgICAoblNhbXBsZXNJ
biZsdDsmbHQ7MSkuPC90PgogICAgICAgPC9saXN0PjwvdD4KLSAgICAgIDx0PgotICAgICAgVGhl
IGZhY3QgdGhhdCB0aGUgY29kZSBuZXZlciBwcm9kdWNlZCBhbnkgZXJyb3IgaW4gdGVzdGluZyAo
aW5jbHVkaW5nIHdoZW4gcnVuIHVuZGVyIHRoZQotICAgICAgVmFsZ3JpbmQgbWVtb3J5IGRlYnVn
Z2VyKSwgc3VnZ2VzdHMgdGhhdCBpbiBwcmFjdGljZQotICAgICB0aGUgYmF0Y2ggc2l6ZXMgYXJl
IHJlYXNvbmFibGUgZW5vdWdoIHRoYXQgbm9uZSBvZiB0aGUgaXNzdWVzIGFib3ZlCi0gICAgIHdh
cyBldmVyIGEgcHJvYmxlbS4gSG93ZXZlciwgdGhlIGF1dGhvcnMga25vdyBvZiBubyBvYnZpb3Vz
IGFwcHJvYWNoIHRvIHByb3ZpbmcgdGhhdC4KLSAgICA8L3Q+CiAgICAgPHQ+VGhlIGNvZGUgY2Fu
IGJlIGZpeGVkIGJ5IGFwcGx5aW5nIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0byBsaW5lIDc4IG9m
IHNpbGsvcmVzYW1wbGVyX3ByaXZhdGVfSUlSX0ZJUi5jOgogICAgIDwvdD4KIDxmaWd1cmU+CkBA
IC0yNDMsOCArMjQwLDggQEAgUkVTQU1QTEVSX09SREVSX0ZJUl8xMiAqIHNpemVvZiggb3B1c19p
bnQxNiApICk7CiAgICAgICA8dD4KICAgICAgICAgSXQgd2FzIGRpc2NvdmVyZWQgdGhyb3VnaCBk
ZWNvZGVyIGZ1enppbmcgdGhhdCBzb21lIGJpdHN0cmVhbXMgY291bGQgcHJvZHVjZQogICAgICAg
ICBpbnRlZ2VyIHZhbHVlcyBleGNlZWRpbmcgMzItYml0cyBpbiBMUENfaW52ZXJzZV9wcmVkX2dh
aW5fUUEoKSwgY2F1c2luZwotICAgICAgICBhIHdyYXAtYXJvdW5kLiBBbHRob3VnaCB0aGUgZXJy
b3IgaXMgaGFybWxlc3MgaW4gcHJhY3RpY2UsIHRoZSBDIHN0YW5kYXJkIGNvbnNpZGVycwotICAg
ICAgICB0aGUgYmVoYXZpb3IgYXMgdW5kZWZpbmVkLCBzbyB0aGUgZm9sbG93aW5nIHBhdGNoIHRv
IGxpbmUgODcgb2Ygc2lsay9MUENfaW52X3ByZWRfZ2Fpbi5jCisgICAgICAgIGEgd3JhcC1hcm91
bmQuIFRoZSBDIHN0YW5kYXJkIGNvbnNpZGVycworICAgICAgICB0aGlzIGJlaGF2aW9yIGFzIHVu
ZGVmaW5lZC4gVGhlIGZvbGxvd2luZyBwYXRjaCB0byBsaW5lIDg3IG9mIHNpbGsvTFBDX2ludl9w
cmVkX2dhaW4uYwogICAgICAgICBkZXRlY3RzIHZhbHVlcyB0aGF0IGRvIG5vdCBmaXQgaW4gYSAz
Mi1iaXQgaW50ZWdlciBhbmQgY29uc2lkZXJzIHRoZSBjb3JyZXNwb25kaW5nIGZpbHRlcnMgdW5z
dGFibGU6CiAgICAgICA8L3Q+CiA8ZmlndXJlPgpAQCAtMjczLDcgKzI3MCw3IEBAIHJjX211bHQy
ICksIG11bHQyUSk7CiAgICAgPHNlY3Rpb24gdGl0bGU9IkludGVnZXIgd3JhcC1hcm91bmQgaW4g
TFNGIGRlY29kaW5nIiBhbmNob3I9ImxzZl9vdmVyZmxvdyI+CiAgICAgICA8dD4KICAgICAgICAg
SXQgd2FzIGRpc2NvdmVyZWQgLS0gYWxzbyBmcm9tIGRlY29kZXIgZnV6emluZyAtLSB0aGF0IGFu
IGludGVnZXIgd3JhcC1hcm91bmQgY291bGQKLSAgICAgICAgb2NjdXIgd2hlbiBkZWNvZGluZyBs
aW5lIHNwZWN0cmFsIGZyZXF1ZW5jeSBjb2VmZmljaWVudHMgZnJvbSBleHRyZW1lIGJpdHN0cmVh
bXMuCisgICAgICAgIG9jY3VyIHdoZW4gZGVjb2RpbmcgYml0c3RyZWFtcyB3aXRoIGV4dHJlbWVs
eSBsYXJnZSB2YWx1ZXMgZm9yIHRoZSBoaWdoIExTRiBwYXJhbWV0ZXJzLgogICAgICAgICBUaGUg
ZW5kIHJlc3VsdCBvZiB0aGUgd3JhcC1hcm91bmQgaXMgYW4gaWxsZWdhbCByZWFkIGFjY2VzcyBv
biB0aGUgc3RhY2ssIHdoaWNoCiAgICAgICAgIHRoZSBhdXRob3JzIGRvIG5vdCBiZWxpZXZlIGlz
IGV4cGxvaXRhYmxlIGJ1dCBzaG91bGQgbm9uZXRoZWxlc3MgYmUgZml4ZWQuIFRoZSBmb2xsb3dp
bmcKICAgICAgICAgcGF0Y2ggdG8gbGluZSAxMzcgb2Ygc2lsay9OTFNGX3N0YWJpbGl6ZS5jIHBy
ZXZlbnRzIHRoZSBwcm9ibGVtOgpAQCAtNDAyLDExICszOTksMTEgQEAgZWZmZWN0aXZlX2xvd2Jh
bmQrTik7CiAgICAgICBvcHRpb25hbGx5IGNvZGluZyB0aGUgdHdvIGNoYW5uZWxzIDE4MC1kZWdy
ZWVzIG91dCBvZiBwaGFzZSBvbiBhIHBlci1iYW5kIGJhc2lzLgogICAgICAgVGhpcyBwcm92aWRl
cyBiZXR0ZXIgc3RlcmVvIHF1YWxpdHkgdGhhbiBmb3JjaW5nIHRoZSB0d28gY2hhbm5lbHMgdG8g
YmUgaW4gcGhhc2UsCiAgICAgICBidXQgd2hlbiB0aGUgb3V0cHV0IGlzIGRvd25taXhlZCB0byBt
b25vLCB0aGUgZW5lcmd5IGluIHRoZSBhZmZlY3RlZCBiYW5kcyBpcyBjYW5jZWxsZWQKLSAgICAg
IHNvbWV0aW1lcyByZXN1bHRpbmcgaW4gYXVkaWJsZSBhcnRlZmFjdHMuCisgICAgICBzb21ldGlt
ZXMgcmVzdWx0aW5nIGluIGF1ZGlibGUgYXJ0aWZhY3RzLgogICAgICAgPC90PgogICAgICAgPHQ+
QXMgYSB3b3JrLWFyb3VuZCBmb3IgdGhpcyBpc3N1ZSwgdGhlIGRlY29kZXIgTUFZIGNob29zZSBu
b3QgdG8gYXBwbHkgdGhlIDE4MC1kZWdyZWUKLSAgICAgIHBoYXNlIHNoaWZ0IHdoZW4gdGhlIG91
dHB1dCBpcyBtZWFudCB0byBiZSBkb3dubWl4ZWQgKGluc2lkZSBvcgotICAgICAgb3V0c2lkZSBv
ZiB0aGUgZGVjb2RlcikuCisgICAgICBwaGFzZSBzaGlmdC4gVGhpcyBjYW4gYmUgdXNlZnVsIHdo
ZW4gZG93bm1peGluZyB0byBtb25vIGluc2lkZSBvcgorICAgICAgb3V0c2lkZSBvZiB0aGUgZGVj
b2RlciAoZS5nLiB1c2VyLWNvbnRyb2xsYWJsZSkuCiAgICAgICA8L3Q+CiAgICAgPC9zZWN0aW9u
PgogCkBAIC00MjEsMTQgKzQxOCwxNCBAQCBlZmZlY3RpdmVfbG93YmFuZCtOKTsKICAgICAgICAg
aW1wbGVtZW50YXRpb24gaXMgY29tcGxpYW50IGFzIGxvbmcgYXMgaXQgcGFzc2VzIGVpdGhlciBz
ZXQgb2YgdmVjdG9ycy4KICAgICAgIDwvdD4KICAgICAgIDx0PgotICAgICAgICBJbiBhZGRpdGlv
biwgYW55IE9wdXMgaW1wbGVtZW50YXRpb24KLSAgICAgICAgdGhhdCBwYXNzZXMgdGhlIG9yaWdp
bmFsIHRlc3QgdmVjdG9ycyBmcm9tIDx4cmVmIHRhcmdldD0iUkZDNjcxNiI+UkZDIDY3MTY8L3hy
ZWY+Ci0gICAgICAgIGlzIHN0aWxsIGNvbXBsaWFudCB3aXRoIHRoZSBPcHVzIHNwZWNpZmljYXRp
b24uIEhvd2V2ZXIsIG5ld2VyIGltcGxlbWVudGF0aW9ucworICAgICAgICBBbnkgT3B1cyBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICB0aGF0IHBhc3NlcyBlaXRoZXIgdGhlIG9yaWdpbmFsIHRlc3Qg
dmVjdG9ycyBmcm9tIDx4cmVmIHRhcmdldD0iUkZDNjcxNiI+UkZDIDY3MTY8L3hyZWY+CisgICAg
ICAgIG9yIG9uZSBvZiB0aGUgbmV3IHNldHMgb2YgdGVzdCB2ZWN0b3JzIGlzIGNvbXBsaWFudCB3
aXRoIHRoZSBPcHVzIHNwZWNpZmljYXRpb24uIEhvd2V2ZXIsIG5ld2VyIGltcGxlbWVudGF0aW9u
cwogICAgICAgICBTSE9VTEQgYmUgYmFzZWQgb24gdGhlIG5ldyB0ZXN0IHZlY3RvcnMgcmF0aGVy
IHRoYW4gdGhlIG9sZCBvbmVzLgogICAgICAgPC90PgogICAgICAgPHQ+VGhlIG5ldyB0ZXN0IHZl
Y3RvcnMgYXJlIGxvY2F0ZWQgYXQKICAgICAgICAgPGVyZWYgdGFyZ2V0PSJodHRwczovL3d3dy5p
ZXRmLm9yZy9wcm9jZWVkaW5ncy85OC9zbGlkZXMvbWF0ZXJpYWxzLTk4LWNvZGVjLW9wdXMtbmV3
dmVjdG9ycy0wMC50YXIuZ3oiLz4uCi0gICAgICAgIFRoZSBTSEExIGhhc2ggb2YgdGhlIHRlc3Qg
dmVjdG9ycyBhcmU6CisgICAgICAgIFRoZSBTSEEtMSBoYXNoZXMgb2YgdGhlIHRlc3QgdmVjdG9y
cyBhcmU6CiA8ZmlndXJlPgogPGFydHdvcms+CiA8IVtDREFUQVsKQEAgLTQ4MCwxNCArNDc3LDEx
IEBAIGZkM2QzYTdiMGRmYmRhYjk4ZDM3ZWQ5YWEwNGI2NTliOWZlZmJkMTggIHRlc3R2ZWN0b3Ix
MW0uZGVjCiAgICAgICAgIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiA8eHJlZiB0YXJnZXQ9
IlJGQzY3MTYiPlJGQyA2NzE2PC94cmVmPjogQ1ZFLTIwMTMtMDg5OQogICAgICAgICA8ZXJlZiB0
YXJnZXQ9Imh0dHBzOi8vbnZkLm5pc3QuZ292L3Z1bG4vZGV0YWlsL0NWRS0yMDEzLTA4OTkiLz4K
ICAgICAgICAgYW5kIENWRS0yMDE3LTAzODEgPGVyZWYgdGFyZ2V0PSJodHRwczovL252ZC5uaXN0
Lmdvdi92dWxuL2RldGFpbC9DVkUtMjAxNy0wMzgxIi8+LgotICAgICAgICBDVkUtMjAxMy0wODk5
IGlzIGZpeGVkIGJ5IDx4cmVmIHRhcmdldD0icGFkZGluZyIvPiBhbmQKLSAgICAgICAgY291bGQg
dGhlb3JldGljYWxseSBjYXVzZSBpbmZvcm1hdGlvbiBsZWFrLCBidXQgdGhlCi0gICAgICAgIGxl
YWtlZCBpbmZvcm1hdGlvbiB3b3VsZCBhdCB0aGUgdmVyeSBsZWFzdCBnbyB0aHJvdWdoIHRoZSBk
ZWNvZGVyIHByb2Nlc3MgYmVmb3JlCi0gICAgICAgIGJlaW5nIGFjY2Vzc2libGUgdG8gdGhlIGF0
dGFja2VyLiBBbHNvLCB0aGUgYnVnIGNhbiBvbmx5IGJlIHRyaWdnZXJlZCBieSBPcHVzIHBhY2tl
dHMKLSAgICAgICAgYXQgbGVhc3QgMjQgTUIgaW4gc2l6ZS4gQ1ZFLTIwMTctMDM4MSBpcyBmaXhl
ZCBieSA8eHJlZiB0YXJnZXQ9ImxzZl9vdmVyZmxvdyIvPiBhbmQsIGFzIGZhcgotICAgICAgICBh
cyB0aGUgYXV0aG9ycyBhcmUgYXdhcmUsIGNvdWxkIG5vdCBiZSBleHBsb2l0ZWQgaW4gYW55IHdh
eSAoZGVzcGl0ZSB0aGUgY2xhaW1zIGluCi0gICAgICAgIHRoZSBDVkUpIHVubGVzcyB0aGUgcmVh
ZC1vbmx5IHRhYmxlCi0gICAgICAgIHdhcyBzb21laG93IHBsYWNlZCB2ZXJ5IGNsb3NlIHRvIHNl
bnNpdGl2ZSBkYXRhLCB3aGljaCBpcyBoaWdobHkgdW5saWtlbHkuCisgICAgICAgIENWRS0gMjAx
My0wODk5IHRoZW9yZXRpY2FsbHkgY291bGQgaGF2ZSBjYXVzZWQgYW4gaW5mb3JtYXRpb24gbGVh
ay4gVGhlIGxlYWtlZAorICAgICAgICBpbmZvcm1hdGlvbiB3b3VsZCBoYXZlIGdvbmUgdGhyb3Vn
aCB0aGUgZGVjb2RlciBwcm9jZXNzIGJlZm9yZSBiZWluZyBhY2Nlc3NpYmxlCisgICAgICAgIHRv
IHRoZSBhdHRhY2tlci4gSXQgaXMgZml4ZWQgYnkgPHhyZWYgdGFyZ2V0PSJwYWRkaW5nIi8+Lgor
ICAgICAgICBDVkUtMjAxNy0wMzgxIGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gYSAxNi1iaXQgb3V0
LW9mLWJvdW5kcyByZWFkIGZyb20gYSBmaXhlZAorICAgICAgICBsb2NhdGlvbi4gIEl0IGlzIGZp
eGVkIGluIDx4cmVmIHRhcmdldD0ibHNmX292ZXJmbG93Ii8+LgogICAgICAgICBCZXlvbmQgdGhl
IHR3byBmaXhlZCBDVkVzLCB0aGlzIGRvY3VtZW50IGFkZHMgbm8gbmV3IHNlY3VyaXR5IGNvbnNp
ZGVyYXRpb25zIG9uIHRvcCBvZgogICAgICAgICA8eHJlZiB0YXJnZXQ9IlJGQzY3MTYiPlJGQyA2
NzE2PC94cmVmPi4KICAgICAgIDwvdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvZG9jL29wdXNfaW5faXNvYm1mZi5o
dG1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9kb2Mvb3B1c19pbl9pc29ibWZmLmh0bWwKaW5kZXggYTExNzVkYmZkZGUyNWU4MzcyZWQ2
ZmM0ZDA0MDFmY2E5MjJjNTk5ZS4uMzhhZWZiZjJhYmIzZDM1YmRkZTE1OGYwNTk3NzZhYTJlOTUz
N2FiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9kb2Mvb3B1c19pbl9pc29ibWZmLmh0bWwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9kb2Mvb3B1c19p
bl9pc29ibWZmLmh0bWwKQEAgLTcsMTIgKzcsMTIgQEAKICAgICA8L2hlYWQ+CiAgICAgPGJvZHkg
Ymdjb2xvcj0iMHgzMzMzMzMiIHRleHQ9IiM2MEIwQzAiPgogICAgICAgICA8Yj48dT5FbmNhcHN1
bGF0aW9uIG9mIE9wdXMgaW4gSVNPIEJhc2UgTWVkaWEgRmlsZSBGb3JtYXQ8L3U+PC9iPjxicj4K
LSAgICAgICAgPGZvbnQgc2l6ZT0iMiI+bGFzdCB1cGRhdGVkOiBBcHJpbCAyOCwgMjAxNjwvZm9u
dD48YnI+CisgICAgICAgIDxmb250IHNpemU9IjIiPmxhc3QgdXBkYXRlZDogQXVndXN0IDI4LCAy
MDE4PC9mb250Pjxicj4KICAgICAgICAgPGJyPgogICAgICAgICA8ZGl2IGNsYXNzPSJub3JtYWxf
bGluayBwcmUgZnJhbWVfYm94Ij4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
bmNhcHN1bGF0aW9uIG9mIE9wdXMgaW4gSVNPIEJhc2UgTWVkaWEgRmlsZSBGb3JtYXQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDAuNi44IChpbmNvbXBs
ZXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMC44
LjEgKGluY29tcGxldGUpCiAKIAogVGFibGUgb2YgQ29udGVudHMKQEAgLTIwLDcgKzIwLDcgQEAg
VGFibGUgb2YgQ29udGVudHMKIDxhIGhyZWY9IiMyIj4yPC9hPiBOb3JtYXRpdmUgUmVmZXJlbmNl
cwogPGEgaHJlZj0iIzMiPjM8L2E+IFRlcm1zIGFuZCBEZWZpbml0aW9ucwogPGEgaHJlZj0iIzQi
PjQ8L2E+IERlc2lnbiBSdWxlcyBvZiBFbmNhcHN1bGF0aW9uCi0gICAgPGEgaHJlZj0iIzQuMSI+
NC4xPC9hPiBGaWxlIFR5cGUgSW5kZW50aWZpY2F0aW9uCisgICAgPGEgaHJlZj0iIzQuMSI+NC4x
PC9hPiBGaWxlIFR5cGUgSWRlbnRpZmljYXRpb24KICAgICA8YSBocmVmPSIjNC4yIj40LjI8L2E+
IE92ZXJ2aWV3IG9mIFRyYWNrIFN0cnVjdHVyZQogICAgIDxhIGhyZWY9IiM0LjMiPjQuMzwvYT4g
RGVmaW5pdGlvbnMgb2YgT3B1cyBzYW1wbGUKICAgICAgICAgPGEgaHJlZj0iIzQuMy4xIj40LjMu
MTwvYT4gU2FtcGxlIGVudHJ5IGZvcm1hdApAQCAtMzIsNyArMzIsOSBAQCBUYWJsZSBvZiBDb250
ZW50cwogICAgICAgICAgICAgPGEgaHJlZj0iIzQuMy42LjEiPjQuMy42LjE8L2E+IFJhbmRvbSBB
Y2Nlc3MgUG9pbnQKICAgICAgICAgICAgIDxhIGhyZWY9IiM0LjMuNi4yIj40LjMuNi4yPC9hPiBQ
cmUtcm9sbAogICAgIDxhIGhyZWY9IiM0LjQiPjQuNDwvYT4gVHJpbW1pbmcgb2YgQWN0dWFsIER1
cmF0aW9uCi0gICAgPGEgaHJlZj0iIzQuNSI+NC41PC9hPiBDaGFubmVsIExheW91dCAoaW5mb3Jt
YXRpdmUpCisgICAgPGEgaHJlZj0iIzQuNSI+NC41PC9hPiBDaGFubmVsIE1hcHBpbmcKKyAgICAg
ICAgPGEgaHJlZj0iIzQuNS4xIj40LjUuMTwvYT4gSVNPIEJhc2UgTWVkaWEgbmF0aXZlIENoYW5u
ZWwgTWFwcGluZworICAgICAgICA8YSBocmVmPSIjNC41LjIiPjQuNS4yPC9hPiBDb21wb3NpdGlv
biBvbiBhbGwgYWN0aXZlIHRyYWNrcyAoaW5mb3JtYXRpdmUpCiAgICAgPGEgaHJlZj0iIzQuNiI+
NC42PC9hPiBCYXNpYyBTdHJ1Y3R1cmUgKGluZm9ybWF0aXZlKQogICAgICAgICA8YSBocmVmPSIj
NC42LjEiPjQuNi4yPC9hPiBJbml0aWFsIE1vdmllCiAgICAgICAgIDxhIGhyZWY9IiM0LjYuMiI+
NC42LjM8L2E+IE1vdmllIEZyYWdtZW50cwpAQCAtNTMsNyArNTUsNyBAQCBUYWJsZSBvZiBDb250
ZW50cwogICAgIFsyXSBSRkMgNjcxNgogICAgICAgICBEZWZpbml0aW9uIG9mIHRoZSBPcHVzIEF1
ZGlvIENvZGVjCiAKLSAgICBbM10gZHJhZnQtaWV0Zi1jb2RlYy1vZ2dvcHVzLTA2CisgICAgWzNd
IFJGQyA3ODQ1CiAgICAgICAgIE9nZyBFbmNhcHN1bGF0aW9uIGZvciB0aGUgT3B1cyBBdWRpbyBD
b2RlYwogCiA8YSBuYW1lPSIzIj48L2E+CkBAIC04Myw4ICs4NSw4IEBAIFRhYmxlIG9mIENvbnRl
bnRzCiAKIDxhIG5hbWU9IjQiPjwvYT4KIDQgRGVzaWduIFJ1bGVzIG9mIEVuY2Fwc3VsYXRpb24K
LSAgICA0LjEgRmlsZSBUeXBlIEluZGVudGlmaWNhdGlvbjxhIG5hbWU9IjQuMSI+PC9hPgotICAg
ICAgICBUaGlzIHNwZWNpZmljYXRpb24gZG9lcyBub3QgZGVmaW5lIGFueSBicmFuZCB0byBkZWNs
YXJlIGZpbGVzIGFyZSBjb25mb3JtYW50IHRvIHRoaXMgc3BlY2lmaWNhdGlvbi4gSG93ZXZlciwK
KyAgICA0LjEgRmlsZSBUeXBlIElkZW50aWZpY2F0aW9uPGEgbmFtZT0iNC4xIj48L2E+CisgICAg
ICAgIFRoaXMgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHRoZSBicmFuZCAnT3B1cycgdG8gZGVjbGFy
ZSBmaWxlcyBhcmUgY29uZm9ybWFudCB0byB0aGlzIHNwZWNpZmljYXRpb24uIEFkZGl0aW9uYWxs
eSwKICAgICAgICAgZmlsZXMgY29uZm9ybWFudCB0byB0aGlzIHNwZWNpZmljYXRpb24gc2hhbGwg
Y29udGFpbiBhdCBsZWFzdCBvbmUgYnJhbmQsIHdoaWNoIHN1cHBvcnRzIHRoZSByZXF1aXJlbWVu
dHMgYW5kIHRoZQogICAgICAgICByZXF1aXJlbWVudHMgZGVzY3JpYmVkIGluIHRoaXMgY2xhdXNl
IHdpdGhvdXQgY29udHJhZGljdGlvbiwgaW4gdGhlIGNvbXBhdGlibGUgYnJhbmRzIGxpc3Qgb2Yg
dGhlIEZpbGUgVHlwZSBCb3guCiAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHRoZSBtaW5pbWFsIHN1
cHBvcnQgb2YgdGhlIGVuY2Fwc3VsYXRpb24gb2YgT3B1cyBiaXRzdHJlYW1zIGluIElTTyBCYXNl
IE1lZGlhIGZpbGUgZm9ybWF0IHJlcXVpcmVzCkBAIC0xMTcsMTUgKzExOSwxNCBAQCBUYWJsZSBv
ZiBDb250ZW50cwogCiAgICAgICAgICAgICBUaGUgc3ludGF4IGFuZCBzZW1hbnRpY3Mgb2YgdGhl
IE9wdXNTYW1wbGVFbnRyeSBpcyBzaG93biBhcyBmb2xsb3dzLgogCi0gICAgICAgICAgICBjbGFz
cyBPcHVzU2FtcGxlRW50cnkoKSBleHRlbmRzIEF1ZGlvU2FtcGxlRW50cnkgKCdPcHVzJyl7Cisg
ICAgICAgICAgICBjbGFzcyBPcHVzU2FtcGxlRW50cnkoKSBleHRlbmRzIEF1ZGlvU2FtcGxlRW50
cnkgKCdPcHVzJykgewogICAgICAgICAgICAgICAgIE9wdXNTcGVjaWZpY0JveCgpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICArIGNoYW5uZWxjb3VudDoKLSAgICAgICAgICAgICAgICBU
aGUgY2hhbm5lbGNvdW50IGZpZWxkIHNoYWxsIGJlIHNldCB0byB0aGUgc3VtIG9mIHRoZSB0b3Rh
bCBudW1iZXIgb2YgT3B1cyBiaXRzdHJlYW1zIGFuZCB0aGUgbnVtYmVyCi0gICAgICAgICAgICAg
ICAgb2YgT3B1cyBiaXRzdHJlYW1zIHByb2R1Y2luZyB0d28gY2hhbm5lbHMuIFRoaXMgdmFsdWUg
aXMgaW5kZW50aWNhbCB3aXRoIChNK04pLCB3aGVyZSBNIGlzIHRoZSB2YWx1ZSBvZgotICAgICAg
ICAgICAgICAgIHRoZSAqQ291cGxlZCBTdHJlYW0gQ291bnQqIGZpZWxkIGFuZCBOIGlzIHRoZSB2
YWx1ZSBvZiB0aGUgKlN0cmVhbSBDb3VudCogZmllbGQgaW4gdGhlICpDaGFubmVsIE1hcHBpbmcK
LSAgICAgICAgICAgICAgICBUYWJsZSogaW4gdGhlIGlkZW50aWZpY2F0aW9uIGhlYWRlciBkZWZp
bmVkIGluIE9nZyBPcHVzIFszXS4KKyAgICAgICAgICAgICAgICBUaGUgY2hhbm5lbGNvdW50IGZp
ZWxkIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyBhbmQgc2hhbGwgYmUg
c2V0IHRvIHRoZSBzYW1lIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgdGhlIE91dHB1dENoYW5u
ZWxDb3VudCBpbiB0aGUgT3B1c0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkLiBUaGUgdmFsdWUg
b2YgdGhpcyBmaWVsZCBtYXkgYmUgdXNlZCBpbgorICAgICAgICAgICAgICAgIHRoZSBDaGFubmVs
TGF5b3V0IGlmIGFueSBhcyBkZXNjcmliZWQgaW4gNC41LjEuCiAgICAgICAgICAgICArIHNhbXBs
ZXNpemU6CiAgICAgICAgICAgICAgICAgVGhlIHNhbXBsZXNpemUgZmllbGQgc2hhbGwgYmUgc2V0
IHRvIDE2LgogICAgICAgICAgICAgKyBzYW1wbGVyYXRlOgpAQCAtMTM1LDIwICsxMzYsMjEgQEAg
VGFibGUgb2YgQ29udGVudHMKIAogICAgICAgICA0LjMuMiBPcHVzIFNwZWNpZmljIEJveDxhIG5h
bWU9IjQuMy4yIj48L2E+CiAgICAgICAgICAgICBFeGFjdGx5IG9uZSBPcHVzIFNwZWNpZmljIEJv
eCBzaGFsbCBiZSBwcmVzZW50IGluIGVhY2ggT3B1c1NhbXBsZUVudHJ5LgotICAgICAgICAgICAg
VGhlIE9wdXMgU3BlY2lmaWMgQm94IGNvbnRhaW5zIHRoZSBWZXJzaW9uIGZpZWxkIGFuZCB0aGlz
IHNwZWNpZmljYXRpb24gZGVmaW5lcyB2ZXJzaW9uIDAgb2YgdGhpcyBib3guCi0gICAgICAgICAg
ICBJZiBpbmNvbXBhdGlibGUgY2hhbmdlcyBvY2N1cmVkIGluIHRoZSBmaWVsZHMgYWZ0ZXIgdGhl
IFZlcnNpb24gZmllbGQgd2l0aGluIHRoZSBPcHVzU3BlY2lmaWNCb3ggaW4gdGhlCi0gICAgICAg
ICAgICBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLCBhbm90aGVyIHZlcnNp
b24gd2lsbCBiZSBkZWZpbmVkLgorICAgICAgICAgICAgVGhlIE9wdXMgU3BlY2lmaWMgQm94IGNv
bnRhaW5zIGFuIE9wdXNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCB3aGljaCBjb250YWlucyB0
aGUgVmVyc2lvbiBmaWVsZCBhbmQKKyAgICAgICAgICAgIHRoaXMgc3BlY2lmaWNhdGlvbiBkZWZp
bmVzIHZlcnNpb24gMCBvZiB0aGlzIHJlY29yZC4gSWYgaW5jb21wYXRpYmxlIGNoYW5nZXMgb2Nj
dXJlZCBpbiB0aGUgZmllbGRzIGFmdGVyCisgICAgICAgICAgICB0aGUgVmVyc2lvbiBmaWVsZCB3
aXRoaW4gdGhlIE9wdXNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCBpbiB0aGUgZnV0dXJlIHZl
cnNpb25zIG9mIHRoaXMgc3BlY2lmaWNhdGlvbiwKKyAgICAgICAgICAgIGFub3RoZXIgdmVyc2lv
biB3aWxsIGJlIGRlZmluZWQuCiAgICAgICAgICAgICBUaGlzIGJveCByZWZlcnMgdG8gT2dnIE9w
dXMgWzNdIGF0IG1hbnkgcGFydHMgYnV0IGFsbCB0aGUgZGF0YSBhcmUgc3RvcmVkIGFzIGJpZy1l
bmRpYW4gZm9ybWF0LgogCiAgICAgICAgICAgICBUaGUgc3ludGF4IGFuZCBzZW1hbnRpY3Mgb2Yg
dGhlIE9wdXMgU3BlY2lmaWMgQm94IGlzIHNob3duIGFzIGZvbGxvd3MuCiAKLSAgICAgICAgICAg
IGNsYXNzIENoYW5uZWxNYXBwaW5nVGFibGUgKHVuc2lnbmVkIGludCg4KSBPdXRwdXRDaGFubmVs
Q291bnQpeworICAgICAgICAgICAgY2xhc3MgQ2hhbm5lbE1hcHBpbmdUYWJsZSAodW5zaWduZWQg
aW50KDgpIE91dHB1dENoYW5uZWxDb3VudCkgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCg4KSBTdHJlYW1Db3VudDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQoOCkgQ291cGxl
ZENvdW50OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCg4ICogT3V0cHV0Q2hhbm5lbENv
dW50KSBDaGFubmVsTWFwcGluZzsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYWxpZ25l
ZCg4KSBjbGFzcyBPcHVzU3BlY2lmaWNCb3ggZXh0ZW5kcyBCb3goJ2RPcHMnKXsKKyAgICAgICAg
ICAgIGFsaWduZWQoOCkgY2xhc3MgT3B1c0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIHsKICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQoOCkgVmVyc2lvbjsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQoOCkgT3V0cHV0Q2hhbm5lbENvdW50OwogICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCgxNikgUHJlU2tpcDsKQEAgLTE2MCw2ICsxNjIsMTAgQEAgVGFibGUgb2YgQ29udGVu
dHMKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNsYXNz
IE9wdXNTcGVjaWZpY0JveCBleHRlbmRzIEJveCgnZE9wcycpIHsKKyAgICAgICAgICAgICAgICBP
cHVzRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoKSBPcHVzQ29uZmlnOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICArIFZlcnNpb246CiAgICAgICAgICAgICAgICAgVGhlIFZlcnNpb24g
ZmllbGQgc2hhbGwgYmUgc2V0IHRvIDAuCiAgICAgICAgICAgICAgICAgSW4gdGhlIGZ1dHVyZSB2
ZXJzaW9ucyBvZiB0aGlzIHNwZWNpZmljYXRpb24sIHRoaXMgZmllbGQgbWF5IGJlIHNldCB0byBv
dGhlciB2YWx1ZXMuIEFuZCB3aXRob3V0IHN1cHBvcnQKQEAgLTE4MSw3ICsxODcsOCBAQCBUYWJs
ZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgIGhlYWRlciBkZWZpbmUgaW4gT2dnIE9wdXMg
WzNdLiBOb3RlIHRoYXQgdGhlIHZhbHVlIGlzIHN0b3JlZCBhcyA4LjggZml4ZWQtcG9pbnQuCiAg
ICAgICAgICAgICArIENoYW5uZWxNYXBwaW5nRmFtaWx5OgogICAgICAgICAgICAgICAgIFRoZSBD
aGFubmVsTWFwcGluZ0ZhbWlseSBmaWVsZCBzaGFsbCBiZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUg
YXMgdGhlICpDaGFubmVsIE1hcHBpbmcgRmFtaWx5KiBmaWVsZCBpbgotICAgICAgICAgICAgICAg
IHRoZSBpZGVudGlmaWNhdGlvbiBoZWFkZXIgZGVmaW5lZCBpbiBPZ2cgT3B1cyBbM10uCisgICAg
ICAgICAgICAgICAgdGhlIGlkZW50aWZpY2F0aW9uIGhlYWRlciBkZWZpbmVkIGluIE9nZyBPcHVz
IFszXS4gTm90ZSB0aGF0IHRoZSB2YWx1ZSAyNTUgbWF5IGJlIHVzZWQgZm9yIGFuIGFsdGVybmF0
aXZlCisgICAgICAgICAgICAgICAgdG8gbWFwIGNoYW5uZWxzIGJ5IElTTyBCYXNlIE1lZGlhIG5h
dGl2ZSBtYXBwaW5nLiBUaGUgZGV0YWlscyBhcmUgZGVzY3JpYmVkIGluIDQuNS4xLgogICAgICAg
ICAgICAgKyBTdHJlYW1Db3VudDoKICAgICAgICAgICAgICAgICBUaGUgU3RyZWFtQ291bnQgZmll
bGQgc2hhbGwgYmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSAqU3RyZWFtIENvdW50KiBm
aWVsZCBpbiB0aGUgaWRlbnRpZmljYXRpb24KICAgICAgICAgICAgICAgICBoZWFkZXIgZGVmaW5l
ZCBpbiBPZ2cgT3B1cyBbM10uCkBAIC0yNzAsNDIgKzI3Nyw2MiBAQCBUYWJsZSBvZiBDb250ZW50
cwogICAgICAgICB0aGUgZHVyYXRpb24gb2YgdGhlIGxhc3QgT3B1cyBzYW1wbGUgbWF5IGJlIGhl
bHBmdWwgYnkgc2V0dGluZyB6ZXJvIHRvIHRoZSBzZWdtZW50X2R1cmF0aW9uIGZpZWxkIHNpbmNl
IHRoZQogICAgICAgICB2YWx1ZSAwIHJlcHJlc2VudHMgaW1wbGljaXQgZHVyYXRpb24gZXF1YWwg
dG8gdGhlIHN1bSBvZiB0aGUgZHVyYXRpb24gb2YgYWxsIHNhbXBsZXMuCiA8YSBuYW1lPSI0LjUi
PjwvYT4KLSAgICA0LjUgQ2hhbm5lbCBMYXlvdXQgKGluZm9ybWF0aXZlKQotICAgICAgICBCeSB0
aGUgYXBwbGljYXRpb24gb2YgYWx0ZXJuYXRlX2dyb3VwIGluIHRoZSBUcmFjayBIZWFkZXIgQm94
LCB3aG9sZSBhdWRpbyBjaGFubmVscyBpbiBhbGwgYWN0aXZlIHRyYWNrcyBmcm9tCi0gICAgICAg
IG5vbi1hbHRlcm5hdGUgZ3JvdXAgYW5kL29yIGRpZmZlcmVudCBhbHRlcm5hdGUgZ3JvdXAgZnJv
bSBlYWNoIG90aGVyIGFyZSBjb21wb3NpdGVkIGludG8gdGhlIHByZXNlbnRhdGlvbi4gSWYKLSAg
ICAgICAgYW4gT3B1cyBzYW1wbGUgY29uc2lzdHMgb2YgbXVsdGlwbGUgT3B1cyBiaXRzdHJlYW1z
LCBpdCBjYW4gYmUgc3BsaXR0ZWQgaW50byBpbmRpdmlkdWFsIE9wdXMgYml0c3RyZWFtcyBhbmQK
LSAgICAgICAgcmVjb25zdHJ1Y3RlZCBpbnRvIG5ldyBPcHVzIHNhbXBsZXMgYXMgbG9uZyBhcyBl
dmVyeSBPcHVzIGJpdHN0cmVhbSBoYXMgdGhlIHNhbWUgdG90YWwgZHVyYXRpb24gaW4gZWFjaCBP
cHVzCi0gICAgICAgIHNhbXBsZS4gVGhpcyBuYXR1cmUgY2FuIGJlIHV0aWxpemVkIHRvIGVuY2Fw
c3VsYXRlIGEgc2luZ2xlIE9wdXMgYml0c3RyZWFtIGluIGVhY2ggdHJhY2sgd2l0aG91dCBicmVh
a2luZyB0aGUKLSAgICAgICAgb3JpZ2luYWwgY2hhbm5lbCBsYXlvdXQuCi0KLSAgICAgICAgQXMg
YW4gZXhhbXBsZSwgbGV0J3Mgc2F5IHRoZXJlIGlzIGEgZm9sbG93aW5nIHRyYWNrOgotICAgICAg
ICAgICAgT3V0cHV0Q2hhbm5lbENvdW50ID0gNjsKLSAgICAgICAgICAgIFN0cmVhbUNvdW50ICAg
ICAgICA9IDQ7Ci0gICAgICAgICAgICBDb3VwbGVkQ291bnQgICAgICAgPSAyOwotICAgICAgICAg
ICAgQ2hhbm5lbE1hcHBpbmcgICAgID0gezAsIDQsIDEsIDIsIDMsIDV9OyAvLyBmcm9udCBsZWZ0
LCBmcm9udCBjZW50ZXIsIGZyb250IHJpZ2h0LCByZWFyIGxlZnQsIHJlYXIgcmlnaHQsIExGRQot
ICAgICAgICBIZXJlLCB0byBjb3VwbGUgZnJvbnQgbGVmdCB0byBmcm9udCByaWdodCBjaGFubmVs
cyBpbnRvIHRoZSBmaXJzdCBzdHJlYW0sIGFuZCBjb3VwbGUgcmVhciBsZWZ0IHRvIHJlYXIgcmln
aHQKLSAgICAgICAgY2hhbm5lbHMgaW50byB0aGUgc2Vjb25kIHN0cmVhbSwgcmVvcmRlcmluZyBp
cyBuZWVkZWQgc2luY2UgY291cGxlZCBzdHJlYW1zIG11c3QgcHJlY2VkZSBhbnkgbm9uLWNvdXBs
ZWQgc3RyZWFtLgotICAgICAgICBZb3UgZXh0cmFjdCB0aGUgZm91ciBPcHVzIGJpdHN0cmVhbXMg
ZnJvbSB0aGlzIHRyYWNrIGFuZCB5b3UgZW5jYXBzdWxhdGUgdHdvIG9mIHRoZSBmb3VyIGludG8g
YSB0cmFjayBhbmQgdGhlCi0gICAgICAgIG90aGVycyBpbnRvIGFub3RoZXIgdHJhY2suIFRoZSBm
b3JtZXIgdHJhY2sgaXMgYXMgZm9sbG93cy4KLSAgICAgICAgICAgIE91dHB1dENoYW5uZWxDb3Vu
dCA9IDY7Ci0gICAgICAgICAgICBTdHJlYW1Db3VudCAgICAgICAgPSAyOwotICAgICAgICAgICAg
Q291cGxlZENvdW50ICAgICAgID0gMjsKLSAgICAgICAgICAgIENoYW5uZWxNYXBwaW5nICAgICA9
IHswLCAyNTUsIDEsIDIsIDMsIDI1NX07IC8vIGZyb250IGxlZnQsIGZyb250IGNlbnRlciwgZnJv
bnQgcmlnaHQsIHJlYXIgbGVmdCwgcmVhciByaWdodCwgTEZFCi0gICAgICAgIEFuZCB0aGUgbGF0
dGVyIHRyYWNrIGlzIGFzIGZvbGxvd3MuCi0gICAgICAgICAgICBPdXRwdXRDaGFubmVsQ291bnQg
PSA2OwotICAgICAgICAgICAgU3RyZWFtQ291bnQgICAgICAgID0gMjsKLSAgICAgICAgICAgIENv
dXBsZWRDb3VudCAgICAgICA9IDA7Ci0gICAgICAgICAgICBDaGFubmVsTWFwcGluZyAgICAgPSB7
MjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAxfTsgLy8gZnJvbnQgbGVmdCwgZnJvbnQgY2VudGVyLCBm
cm9udCByaWdodCwgcmVhciBsZWZ0LCByZWFyIHJpZ2h0LCBMRkUKLSAgICAgICAgSW4gYWRkaXRp
b24sIHRoZSB2YWx1ZSBvZiB0aGUgYWx0ZXJuYXRlX2dyb3VwIGZpZWxkIGluIHRoZSBib3RoIHRy
YWNrcyBpcyBzZXQgdG8gMC4gQXMgdGhlIHJlc3VsdCwgdGhlIHBsYXllcgotICAgICAgICBtYXkg
cGxheSBhcyBpZiBjaGFubmVscyB3aXRoIDI1NSBhcmUgbm90IHByZXNlbnQsIGFuZCBwbGF5IHRo
ZSBwcmVzZW50YXRpb24gY29uc3RydWN0ZWQgZnJvbSB0aGUgYm90aCB0cmFja3MKLSAgICAgICAg
aW4gdGhlIHNhbWUgY2hhbm5lbCBsYXlvdXQgYXMgdGhlIG9uZSBvZiB0aGUgb3JpZ2luYWwgdHJh
Y2suIEtlZXAgaW4gbWluZCB0aGF0IHRoZSB3YXkgb2YgdGhlIGNvbXBvc2l0aW9uLCBpLmUuCi0g
ICAgICAgIHRoZSBtaXhpbmcgZm9yIHBsYXliYWNrLCBpcyBub3QgZGVmaW5lZCBoZXJlLCBhbmQg
bWF5YmUgZGlmZmVyZW50IHJlc3VsdHMgY291bGQgb2NjdXIgZXhjZXB0IGZvciB0aGUgY2hhbm5l
bAotICAgICAgICBsYXlvdXQgb2YgdGhlIG9yaWdpbmFsLCBkZXBlbmRpbmcgb24gYW4gaW1wbGVt
ZW50YXRpb24gb3IgdGhlIGRlZmluaXRpb24gb2YgYSBkZXJpdmVkIGZpbGUgZm9ybWF0LgotCi0g
ICAgICAgIE5vdGUgdGhhdCBzb21lIGRlcml2ZWQgZmlsZSBmb3JtYXRzIG1heSBzcGVjaWZ5IHRo
ZSByZXN0cmljdGlvbiB0byBpZ25vcmUgYWx0ZXJuYXRlIGdyb3VwaW5nLiBJbiB0aGUgY29udGV4
dCBvZgotICAgICAgICBzdWNoIGZpbGUgZm9ybWF0cywgdGhpcyBhcHBsaWNhdGlvbiBpcyBub3Qg
YXZhaWxhYmxlLiBUaGlzIHVuYXZhaWxhYmlsaXR5IGRvZXMgbm90IG1lYW4gaW5jb21wYXRpYmls
aXRpZXMgYW1vbmcKLSAgICAgICAgZmlsZSBmb3JtYXRzIHVubGVzcyB0aGUgcmVzdHJpY3Rpb24g
dG8gdGhlIHZhbHVlIG9mIHRoZSBhbHRlcm5hdGVfZ3JvdXAgZmllbGQgaXMgc3BlY2lmaWVkIGFu
ZCBicmluZ3MgYWJvdXQKLSAgICAgICAgYW55IGNvbmZsaWN0IGFtb25nIHRoZWlyIGRlZmluaXRp
b25zLgorICAgIDQuNSBDaGFubmVsIE1hcHBpbmcKKyAgICAgICAgNC41LjEgSVNPIEJhc2UgTWVk
aWEgbmF0aXZlIENoYW5uZWwgTWFwcGluZzxhIG5hbWU9IjQuNS4xIj48L2E+CisgICAgICAgICAg
ICBJU08gQmFzZSBNZWRpYSBGaWxlIEZvcm1hdCwgdGhhdCBpcyBJU08vSUVDIDE0NDk2LTEyIFsx
XSwgZGVmaW5lcyBhbiBleHRlbnNpb24gQ2hhbm5lbExheW91dCB0byB0aGUKKyAgICAgICAgICAg
IEF1ZGlvU2FtcGxlRW50cnksIHdoaWNoIGNvbnZleXMgaW5mb3JtYXRpb24gb2YgbWFwcGluZyBj
aGFubmVscyB0byBsb3Vkc3BlYWtlciBwb3NpdGlvbnMuIFRoZSBDaGFubmVsTGF5b3V0CisgICAg
ICAgICAgICBlbmFibGVzIHRvIHNwZWNpZnkgdGhlIGNoYW5uZWwgbGF5b3V0IG1vcmUgZmxleGli
bHkgdGhhbiB0aGUgcHJlZGVmaW5lZCBsYXlvdXRzIG9mIHRoZSBDaGFubmVsTWFwcGluZ0ZhbWls
eS4KKworICAgICAgICAgICAgVG8gdXRpbGl6ZSB0aGUgQ2hhbm5lbExheW91dCBmb3IgT3B1c1Nh
bXBsZUVudHJ5LCB0aGUgQ2hhbm5lbE1hcHBpbmdGYW1pbHkgZmllbGQgc2hvdWxkIGJlIHNldCB0
byAyNTUuCisgICAgICAgICAgICBFdmVuIHdoZW4gdGhlIENoYW5uZWxNYXBwaW5nRmFtaWx5IGZp
ZWxkIGlzIHNldCB0byBhbm90aGVyIHZhbHVlLCB0aGUgYXNzaWdubWVudCBvZiBlYWNoIG91dHB1
dCBjaGFubmVsIHRvCisgICAgICAgICAgICBsb3Vkc3BlYWtlciBwb3NpdGlvbiBzcGVjaWZpZWQg
YnkgdGhlIENoYW5uZWxNYXBwaW5nRmFtaWx5IHdvdWxkIGJlIGNoYW5nZWQgYXMgc3BlY2lmaWVk
IGJ5IHRoZSBDaGFubmVsTGF5b3V0LgorICAgICAgICAgICAgVGhlIHByb2NlZHVyZSBvZiB0aGUg
YXNzaWdubWVudCBpcyB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgICAgICAgMS4gRGVjb2Rl
ZCBjaGFubmVscyBhcmUgbWFwcGVkIHRvIG91dHB1dCBjaGFubmVscyBhY2NvcmRpbmcgdG8gdGhl
IENoYW5uZWxNYXBwaW5nVGFibGUuCisgICAgICAgICAgICAgICAgMi4gT3V0cHV0IGNoYW5uZWxz
IGFyZSBtYXBwZWQgdG8gbG91ZHNwZWFrZXIgcG9zaXRpb25zIGFjY29yZGluZyB0byB0aGUgQ2hh
bm5lbExheW91dC4KKworICAgICAgICAgICAgSW4gdGhpcyB3YXksIHRoZSBwYXJhbWV0ZXJzIG9m
IHRoZSBPcHVzIFNwZWNpZmljIEJveCBhcmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUgQ2hhbm5lbExh
eW91dCwgYW5kIHRoZQorICAgICAgICAgICAgQ2hhbm5lbExheW91dCBzaGFsbCBmb2xsb3cgdGhl
IE9wdXMgU3BlY2lmaWMgQm94LgorCisgICAgICAgIDQuNS4yIENvbXBvc2l0aW9uIG9uIGFsbCBh
Y3RpdmUgdHJhY2tzIChpbmZvcm1hdGl2ZSk8YSBuYW1lPSI0LjUuMiI+PC9hPgorICAgICAgICAg
ICAgQnkgdGhlIGFwcGxpY2F0aW9uIG9mIGFsdGVybmF0ZV9ncm91cCBpbiB0aGUgVHJhY2sgSGVh
ZGVyIEJveCwgd2hvbGUgYXVkaW8gY2hhbm5lbHMgaW4gYWxsIGFjdGl2ZSB0cmFja3MgZnJvbQor
ICAgICAgICAgICAgbm9uLWFsdGVybmF0ZSBncm91cCBhbmQvb3IgZGlmZmVyZW50IGFsdGVybmF0
ZSBncm91cCBmcm9tIGVhY2ggb3RoZXIgYXJlIGNvbXBvc2l0ZWQgaW50byB0aGUgcHJlc2VudGF0
aW9uLiBJZgorICAgICAgICAgICAgYW4gT3B1cyBzYW1wbGUgY29uc2lzdHMgb2YgbXVsdGlwbGUg
T3B1cyBiaXRzdHJlYW1zLCBpdCBjYW4gYmUgc3BsaXR0ZWQgaW50byBpbmRpdmlkdWFsIE9wdXMg
Yml0c3RyZWFtcyBhbmQKKyAgICAgICAgICAgIHJlY29uc3RydWN0ZWQgaW50byBuZXcgT3B1cyBz
YW1wbGVzIGFzIGxvbmcgYXMgZXZlcnkgT3B1cyBiaXRzdHJlYW0gaGFzIHRoZSBzYW1lIHRvdGFs
IGR1cmF0aW9uIGluIGVhY2ggT3B1cworICAgICAgICAgICAgc2FtcGxlLiBUaGlzIG5hdHVyZSBj
YW4gYmUgdXRpbGl6ZWQgdG8gZW5jYXBzdWxhdGUgYSBzaW5nbGUgT3B1cyBiaXRzdHJlYW0gaW4g
ZWFjaCB0cmFjayB3aXRob3V0IGJyZWFraW5nIHRoZQorICAgICAgICAgICAgb3JpZ2luYWwgY2hh
bm5lbCBsYXlvdXQuCisKKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGxldCdzIHNheSB0aGVy
ZSBpcyBhIGZvbGxvd2luZyB0cmFjazoKKyAgICAgICAgICAgICAgICBPdXRwdXRDaGFubmVsQ291
bnQgPSA2OworICAgICAgICAgICAgICAgIFN0cmVhbUNvdW50ICAgICAgICA9IDQ7CisgICAgICAg
ICAgICAgICAgQ291cGxlZENvdW50ICAgICAgID0gMjsKKyAgICAgICAgICAgICAgICBDaGFubmVs
TWFwcGluZyAgICAgPSB7MCwgNCwgMSwgMiwgMywgNX07IC8vIGZyb250IGxlZnQsIGZyb250IGNl
bnRlciwgZnJvbnQgcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZWFyIGxlZnQsIHJlYXIgcmlnaHQsIExGRQorICAgICAg
ICAgICAgSGVyZSwgdG8gY291cGxlIGZyb250IGxlZnQgdG8gZnJvbnQgcmlnaHQgY2hhbm5lbHMg
aW50byB0aGUgZmlyc3Qgc3RyZWFtLCBhbmQgY291cGxlIHJlYXIgbGVmdCB0byByZWFyIHJpZ2h0
CisgICAgICAgICAgICBjaGFubmVscyBpbnRvIHRoZSBzZWNvbmQgc3RyZWFtLCByZW9yZGVyaW5n
IGlzIG5lZWRlZCBzaW5jZSBjb3VwbGVkIHN0cmVhbXMgbXVzdCBwcmVjZWRlIGFueSBub24tY291
cGxlZAorICAgICAgICAgICAgc3RyZWFtLiBZb3UgZXh0cmFjdCB0aGUgZm91ciBPcHVzIGJpdHN0
cmVhbXMgZnJvbSB0aGlzIHRyYWNrIGFuZCB5b3UgZW5jYXBzdWxhdGUgdHdvIG9mIHRoZSBmb3Vy
IGludG8gYSB0cmFjaworICAgICAgICAgICAgYW5kIHRoZSBvdGhlcnMgaW50byBhbm90aGVyIHRy
YWNrLiBUaGUgZm9ybWVyIHRyYWNrIGlzIGFzIGZvbGxvd3MuCisgICAgICAgICAgICAgICAgT3V0
cHV0Q2hhbm5lbENvdW50ID0gNjsKKyAgICAgICAgICAgICAgICBTdHJlYW1Db3VudCAgICAgICAg
PSAyOworICAgICAgICAgICAgICAgIENvdXBsZWRDb3VudCAgICAgICA9IDI7CisgICAgICAgICAg
ICAgICAgQ2hhbm5lbE1hcHBpbmcgICAgID0gezAsIDI1NSwgMSwgMiwgMywgMjU1fTsgLy8gZnJv
bnQgbGVmdCwgZnJvbnQgY2VudGVyLCBmcm9udCByaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFyIGxlZnQsIHJl
YXIgcmlnaHQsIExGRQorICAgICAgICAgICAgQW5kIHRoZSBsYXR0ZXIgdHJhY2sgaXMgYXMgZm9s
bG93cy4KKyAgICAgICAgICAgICAgICBPdXRwdXRDaGFubmVsQ291bnQgPSA2OworICAgICAgICAg
ICAgICAgIFN0cmVhbUNvdW50ICAgICAgICA9IDI7CisgICAgICAgICAgICAgICAgQ291cGxlZENv
dW50ICAgICAgID0gMDsKKyAgICAgICAgICAgICAgICBDaGFubmVsTWFwcGluZyAgICAgPSB7MjU1
LCAwLCAyNTUsIDI1NSwgMjU1LCAxfTsgLy8gZnJvbnQgbGVmdCwgZnJvbnQgY2VudGVyLCBmcm9u
dCByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcmVhciBsZWZ0LCByZWFyIHJpZ2h0LCBMRkUKKyAgICAgICAg
ICAgIEluIGFkZGl0aW9uLCB0aGUgdmFsdWUgb2YgdGhlIGFsdGVybmF0ZV9ncm91cCBmaWVsZCBp
biB0aGUgYm90aCB0cmFja3MgaXMgc2V0IHRvIDAuIEFzIHRoZSByZXN1bHQsIHRoZSBwbGF5ZXIK
KyAgICAgICAgICAgIG1heSBwbGF5IGFzIGlmIGNoYW5uZWxzIHdpdGggMjU1IGFyZSBub3QgcHJl
c2VudCwgYW5kIHBsYXkgdGhlIHByZXNlbnRhdGlvbiBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBib3Ro
IHRyYWNrcworICAgICAgICAgICAgaW4gdGhlIHNhbWUgY2hhbm5lbCBsYXlvdXQgYXMgdGhlIG9u
ZSBvZiB0aGUgb3JpZ2luYWwgdHJhY2suIEtlZXAgaW4gbWluZCB0aGF0IHRoZSB3YXkgb2YgdGhl
IGNvbXBvc2l0aW9uLCBpLmUuCisgICAgICAgICAgICB0aGUgbWl4aW5nIGZvciBwbGF5YmFjaywg
aXMgbm90IGRlZmluZWQgaGVyZSwgYW5kIG1heWJlIGRpZmZlcmVudCByZXN1bHRzIGNvdWxkIG9j
Y3VyIGV4Y2VwdCBmb3IgdGhlIGNoYW5uZWwKKyAgICAgICAgICAgIGxheW91dCBvZiB0aGUgb3Jp
Z2luYWwsIGRlcGVuZGluZyBvbiBhbiBpbXBsZW1lbnRhdGlvbiBvciB0aGUgZGVmaW5pdGlvbiBv
ZiBhIGRlcml2ZWQgZmlsZSBmb3JtYXQuCisKKyAgICAgICAgICAgIE5vdGUgdGhhdCBzb21lIGRl
cml2ZWQgZmlsZSBmb3JtYXRzIG1heSBzcGVjaWZ5IHRoZSByZXN0cmljdGlvbiB0byBpZ25vcmUg
YWx0ZXJuYXRlIGdyb3VwaW5nLiBJbiB0aGUgY29udGV4dAorICAgICAgICAgICAgb2Ygc3VjaCBm
aWxlIGZvcm1hdHMsIHRoaXMgYXBwbGljYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gVGhpcyB1bmF2
YWlsYWJpbGl0eSBkb2VzIG5vdCBtZWFuIGluY29tcGF0aWJpbGl0aWVzCisgICAgICAgICAgICBh
bW9uZyBmaWxlIGZvcm1hdHMgdW5sZXNzIHRoZSByZXN0cmljdGlvbiB0byB0aGUgdmFsdWUgb2Yg
dGhlIGFsdGVybmF0ZV9ncm91cCBmaWVsZCBpcyBzcGVjaWZpZWQgYW5kIGJyaW5ncworICAgICAg
ICAgICAgYWJvdXQgYW55IGNvbmZsaWN0IGFtb25nIHRoZWlyIGRlZmluaXRpb25zLgogPGEgbmFt
ZT0iNC42Ij48L2E+CiAgICAgNC42IEJhc2ljIFN0cnVjdHVyZSAoaW5mb3JtYXRpdmUpCiAgICAg
ICAgIDQuNi4xIEluaXRpYWwgTW92aWU8YSBuYW1lPSI0LjYuMSI+PC9hPgpAQCAtMzk1LDcgKzQy
Miw3IEBAIFRhYmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICArLS0tLSstLS0tKy0tLS0rLS0t
LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAg
ICAgICAgICAgIHwgICAgfCAgICB8c2dwZHwqICAgfCAgICB8ICAgIHwgICAgfCAgICB8IFNhbXBs
ZSBHcm91cCBEZXNjcmlwdGlvbiBCb3ggfAogICAgICAgICAgICAgKy0tLS0rLS0tLSstLS0tKy0t
LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0g
ICAgICAgICAgICB8ICAgIHwgICAgfHNiZ3B8KiAgIHwgICAgfCAgICB8ICAgIHwgICAgfCBTYW1w
bGUgdG8gR3JvdXAgQm94ICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgfCAgICB8c2JncHwg
ICAgfCAgICB8ICAgIHwgICAgfCAgICB8IFNhbXBsZSB0byBHcm91cCBCb3ggICAgICAgICAgfAog
ICAgICAgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgICAgICAgICAgICAgICAgICAgRmlndXJl
IDMgLSBCYXNpYyBzdHJ1Y3R1cmUgb2YgTW92aWUgRnJhZ21lbnQgQm94CkBAIC00MDcsMTQgKzQz
NCwxNCBAQCBUYWJsZSBvZiBDb250ZW50cwogPGEgbmFtZT0iNC43Ij48L2E+CiAgICAgNC43IEV4
YW1wbGUgb2YgRW5jYXBzdWxhdGlvbiAoaW5mb3JtYXRpdmUpCiAgICAgICAgIFtGaWxlXQotICAg
ICAgICAgICAgc2l6ZSA9IDE3NzkwCisgICAgICAgICAgICBzaXplID0gMTc3NTcKICAgICAgICAg
ICAgIFtmdHlwOiBGaWxlIFR5cGUgQm94XQogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMAog
ICAgICAgICAgICAgICAgIHNpemUgPSAyNAotICAgICAgICAgICAgICAgIG1ham9yX2JyYW5kID0g
bXA0MiA6IE1QNCB2ZXJzaW9uIDIKKyAgICAgICAgICAgICAgICBtYWpvcl9icmFuZCA9IE9wdXMg
OiBPcHVzIGF1ZGlvIGNvZGluZwogICAgICAgICAgICAgICAgIG1pbm9yX3ZlcnNpb24gPSAwCiAg
ICAgICAgICAgICAgICAgY29tcGF0aWJsZV9icmFuZHMKLSAgICAgICAgICAgICAgICAgICAgYnJh
bmRbMF0gPSBtcDQyIDogTVA0IHZlcnNpb24gMgorICAgICAgICAgICAgICAgICAgICBicmFuZFsw
XSA9IE9wdXMgOiBPcHVzIGF1ZGlvIGNvZGluZwogICAgICAgICAgICAgICAgICAgICBicmFuZFsx
XSA9IGlzbzIgOiBJU08gQmFzZSBNZWRpYSBmaWxlIGZvcm1hdCB2ZXJzaW9uIDIKICAgICAgICAg
ICAgIFttb292OiBNb3ZpZSBCb3hdCiAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAyNApAQCAt
NDQ0LDMwICs0NzEsMTEgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAgICAg
cHJlX2RlZmluZWQgPSAweDAwMDAwMDAwCiAgICAgICAgICAgICAgICAgICAgIHByZV9kZWZpbmVk
ID0gMHgwMDAwMDAwMAogICAgICAgICAgICAgICAgICAgICBuZXh0X3RyYWNrX0lEID0gMgotICAg
ICAgICAgICAgICAgIFtpb2RzOiBPYmplY3QgRGVzY3JpcHRvciBCb3hdCi0gICAgICAgICAgICAg
ICAgICAgIHBvc2l0aW9uID0gMTQwCi0gICAgICAgICAgICAgICAgICAgIHNpemUgPSAzMwotICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAotICAgICAgICAgICAgICAgICAgICBmbGFncyA9
IDB4MDAwMDAwCi0gICAgICAgICAgICAgICAgICAgIFt0YWcgPSAweDEwOiBNUDRfSU9EXQotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZUNsYXNzU2l6ZSA9IDE2Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBPYmplY3REZXNjcmlwdG9ySUQgPSAxCi0gICAgICAgICAgICAgICAgICAg
ICAgICBVUkxfRmxhZyA9IDAKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVJbmxpbmVQ
cm9maWxlTGV2ZWxGbGFnID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgPSAw
eGYKLSAgICAgICAgICAgICAgICAgICAgICAgIE9EUHJvZmlsZUxldmVsSW5kaWNhdGlvbiA9IDB4
ZmYKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lUHJvZmlsZUxldmVsSW5kaWNhdGlvbiA9
IDB4ZmYKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvZmlsZUxldmVsSW5kaWNhdGlv
biA9IDB4ZmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc3VhbFByb2ZpbGVMZXZlbEluZGlj
YXRpb24gPSAweGZmCi0gICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc1Byb2ZpbGVMZXZl
bEluZGljYXRpb24gPSAweGZmCi0gICAgICAgICAgICAgICAgICAgICAgICBbdGFnID0gMHgwZTog
RVNfSURfSW5jXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGVDbGFzc1Np
emUgPSA0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2tfSUQgPSAxCiAgICAgICAg
ICAgICAgICAgW3RyYWs6IFRyYWNrIEJveF0KLSAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24g
PSAxNzMKKyAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAxNDAKICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA9IDYwOAogICAgICAgICAgICAgICAgICAgICBbdGtoZDogVHJhY2sgSGVhZGVy
IEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMTgxCisgICAgICAgICAg
ICAgICAgICAgICAgICBwb3NpdGlvbiA9IDE0OAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZSA9IDkyCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwNwpAQCAtNDkyLDcgKzUwMCw3IEBAIFRhYmxlIG9m
IENvbnRlbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDAuMDAwMDAwCiAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAwLjAwMDAwMAogICAgICAgICAgICAgICAgICAg
ICBbZWR0czogRWRpdCBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDI3
MworICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAyNDAKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUgPSAzNgogICAgICAgICAgICAgICAgICAgICAgICAgW2Vsc3Q6IEVkaXQg
TGlzdCBCb3hdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAyODEKQEAg
LTUwNSwxMCArNTEzLDEwIEBAIFRhYmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lZGlhX3RpbWUgPSAzMTIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWFfcmF0ZSA9IDEuMDAwMDAwCiAgICAgICAgICAgICAgICAgICAgIFttZGlhOiBN
ZWRpYSBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDMwOQorICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAyNzYKICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemUgPSA0NzIKICAgICAgICAgICAgICAgICAgICAgICAgIFttZGhkOiBNZWRpYSBIZWFkZXIg
Qm94XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMzE3CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAyODQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplID0gMzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0g
MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDAKQEAgLTUxOSw3
ICs1MjcsNyBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxhbmd1YWdlID0gdW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX2RlZmluZWQg
PSAweDAwMDAKICAgICAgICAgICAgICAgICAgICAgICAgIFtoZGxyOiBIYW5kbGVyIFJlZmVyZW5j
ZSBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAzNDkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDMxNgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUgPSA1MQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24g
PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwMApAQCAtNTMw
LDQxICs1MzgsNDEgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNlcnZlZCA9IDB4MDAwMDAwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lID0gWGlwaCBBdWRpbyBIYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICBbbWluZjog
TWVkaWEgSW5mb3JtYXRpb24gQm94XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0
aW9uID0gNDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAzNjcKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMzgxCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3NtaGQ6IFNvdW5kIE1lZGlhIEhlYWRlciBCb3hdCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNDA4CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvc2l0aW9uID0gMzc1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emUgPSAxNgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IDB4MDAwMDAwCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhbGFuY2UgPSAwLjAwMDAwMAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNlcnZlZCA9IDB4MDAwMAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtkaW5mOiBEYXRhIEluZm9ybWF0aW9uIEJveF0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9zaXRpb24gPSA0MjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zaXRpb24gPSAzOTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9
IDM2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcmVmOiBEYXRhIFJlZmVyZW5j
ZSBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDQz
MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAzOTkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAyOAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IDAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVudHJ5X2NvdW50ID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3VybCA6IERhdGEgRW50cnkgVXJsIEJveF0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDQ0OAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNDE1CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbiA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyA9IDB4MDAwMDAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb24gPSBpbiB0aGUgc2FtZSBmaWxlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3N0Ymw6IFNhbXBsZSBUYWJsZSBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBvc2l0aW9uID0gNDYwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvc2l0aW9uID0gNDI3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAz
MjEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0c2Q6IFNhbXBsZSBEZXNjcmlw
dGlvbiBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9
IDQ2OAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA0MzUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSA3OQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IDAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudHJ5X2NvdW50ID0gMQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW09wdXM6IEF1ZGlvIERlc2NyaXB0aW9uXQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNDg0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA0NTEKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplID0gNjMKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNlcnZlZCA9IDB4MDAwMDAwMDAwMDAwCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWZlcmVuY2VfaW5kZXggPSAxCkBAIC01Nzcs
NyArNTg1LDcgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNlcnZlZCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzYW1wbGVyYXRlID0gNDgwMDAuMDAwMDAwCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW2RPcHM6IE9wdXMgU3BlY2lmaWMgQm94XQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDUyMAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDQ4NwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMjcKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9IDAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0Q2hhbm5lbENvdW50
ID0gNgpAQCAtNTk1LDcgKzYwMyw3IEBAIFRhYmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IC0+IDM6IHNpZGUgcmlnaHQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgLT4gNTogcmVh
ciBjZW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0dHM6IERlY29kaW5n
IFRpbWUgdG8gU2FtcGxlIEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvc2l0aW9uID0gNTQ3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Np
dGlvbiA9IDUxNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDI0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwMApAQCAtNjA0LDcg
KzYxMiw3IEBAIFRhYmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlX2NvdW50ID0gMTgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVfZGVsdGEgPSAxOTIwCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtzdHNjOiBTYW1wbGUgVG8gQ2h1bmsgQm94XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA1NzEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvc2l0aW9uID0gNTM4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplID0gNDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb24gPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IDB4
MDAwMDAwCkBAIC02MTgsNyArNjI2LDcgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzX3Blcl9jaHVuayA9IDUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGVzY3JpcHRpb25faW5k
ZXggPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHN6OiBTYW1wbGUgU2l6
ZSBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDYx
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA1NzgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSA5MgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IDAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDAKQEAgLTY0Myw3ICs2NTEsNyBAQCBUYWJs
ZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlf
c2l6ZVsxNl0gPSA5NjIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5
X3NpemVbMTddID0gODQ4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGNvOiBD
aHVuayBPZmZzZXQgQm94XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z
aXRpb24gPSA3MDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9u
ID0gNjcwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMjQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSAwCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IDB4MDAwMDAwCkBAIC02NTEsNyArNjU5
LDcgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNodW5rX29mZnNldFswXSA9IDc5NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2h1bmtfb2Zmc2V0WzFdID0gMTMwOTYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW3NncGQ6IFNhbXBsZSBHcm91cCBEZXNjcmlwdGlvbiBCb3hdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDcyNworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA2OTQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemUgPSAyNgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVyc2lvbiA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
ID0gMHgwMDAwMDAKQEAgLTY2MCw3ICs2NjgsNyBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlfY291bnQgPSAxCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByb2xsX2Rpc3RhbmNlWzBdID0gLTIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW3NiZ3A6IFNhbXBsZSB0byBHcm91cCBCb3hdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDc1MworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA3MjAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAyOAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbiA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzID0gMHgwMDAwMDAKQEAgLTY3MCwxMCArNjc4LDEwIEBAIFRhYmxlIG9mIENvbnRl
bnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2NvdW50
ID0gMTgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9kZXNj
cmlwdGlvbl9pbmRleCA9IDEKICAgICAgICAgICAgIFtmcmVlOiBGcmVlIFNwYWNlIEJveF0KLSAg
ICAgICAgICAgICAgICBwb3NpdGlvbiA9IDc4MQorICAgICAgICAgICAgICAgIHBvc2l0aW9uID0g
NzQ4CiAgICAgICAgICAgICAgICAgc2l6ZSA9IDgKICAgICAgICAgICAgIFttZGF0OiBNZWRpYSBE
YXRhIEJveF0KLSAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDc4OQorICAgICAgICAgICAgICAg
IHBvc2l0aW9uID0gNzU2CiAgICAgICAgICAgICAgICAgc2l6ZSA9IDE3MDAxCiA8YSBuYW1lPSI1
Ij48L2E+CiA1IEF1dGhvcnMnIEFkZHJlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvaW5jbHVkZS9vcHVzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2lu
Y2x1ZGUvb3B1cy5oCmluZGV4IDViZTczZGRmNGU1ZGQyZTBjZGNmMDZmNmY2ZTlkNTA3ZGQwZGJi
Y2IuLmQyODJmMjFkMjVhNzE5ZmYwZTQ0M2NkMzMyZjNjMzg4ZjQ2NDdkZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
aW5jbHVkZS9vcHVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9pbmNsdWRlL29wdXMuaApAQCAtNTMxLDcgKzUzMSw3IEBAIE9Q
VVNfRVhQT1JUIGludCBvcHVzX3BhY2tldF9wYXJzZSgKICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmZyYW1lc1s0OF0sCiAgICBvcHVzX2ludDE2IHNpemVbNDhdLAogICAgaW50ICpwYXlsb2FkX29m
ZnNldAotKSBPUFVTX0FSR19OT05OVUxMKDEpIE9QVVNfQVJHX05PTk5VTEwoNCk7CispIE9QVVNf
QVJHX05PTk5VTEwoMSkgT1BVU19BUkdfTk9OTlVMTCg1KTsKIAogLyoqIEdldHMgdGhlIGJhbmR3
aWR0aCBvZiBhbiBPcHVzIHBhY2tldC4KICAgKiBAcGFyYW0gW2luXSBkYXRhIDx0dD5jaGFyKjwv
dHQ+OiBPcHVzIHBhY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9pbmNsdWRlL29wdXNfZGVmaW5lcy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9pbmNs
dWRlL29wdXNfZGVmaW5lcy5oCmluZGV4IDY1M2Q5MTY4MmZiMzM4ZTM4YmY0MzJhNTRjZDg2MmQ0
NGZhNjEwMzguLmQxNDE0MThiMjE0NmNjOWJjZGMzZDQyMzBkYmEwOTJjZDNiMGFiMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvaW5jbHVkZS9vcHVzX2RlZmluZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2luY2x1ZGUvb3B1c19kZWZpbmVzLmgK
QEAgLTE3MCw2ICsxNzAsOSBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgT1BVU19HRVRfUEhBU0Vf
SU5WRVJTSU9OX0RJU0FCTEVEX1JFUVVFU1QgNDA0NwogI2RlZmluZSBPUFVTX0dFVF9JTl9EVFhf
UkVRVUVTVCAgICAgICAgICAgICAgNDA0OQogCisvKiogRGVmaW5lcyBmb3IgdGhlIHByZXNlbmNl
IG9mIGV4dGVuZGVkIEFQSXMuICovCisjZGVmaW5lIE9QVVNfSEFWRV9PUFVTX1BST0pFQ1RJT05f
SAorCiAvKiBNYWNyb3MgdG8gdHJpZ2dlciBjb21waWxhdGlvbiBlcnJvcnMgd2hlbiB0aGUgd3Jv
bmcgdHlwZXMgYXJlIHByb3ZpZGVkIHRvIGEgQ1RMICovCiAjZGVmaW5lIF9fb3B1c19jaGVja19p
bnQoeCkgKCgodm9pZCkoKHgpID09IChvcHVzX2ludDMyKTApKSwgKG9wdXNfaW50MzIpKHgpKQog
I2RlZmluZSBfX29wdXNfY2hlY2tfaW50X3B0cihwdHIpICgocHRyKSArICgocHRyKSAtIChvcHVz
X2ludDMyKikocHRyKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2luY2x1ZGUvb3B1c19wcm9qZWN0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2lu
Y2x1ZGUvb3B1c19wcm9qZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRhYmY0ZTg1Y2YwYmU2OThmMzIx
NTMyNWJlYzQwYzU2NDNiNTI0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvaW5jbHVkZS9vcHVzX3Byb2pl
Y3Rpb24uaApAQCAtMCwwICsxLDU2OCBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE3IEdvb2dsZSBJ
bmMuCisgICBXcml0dGVuIGJ5IEFuZHJldyBBbGxlbiAqLworLyoKKyAgIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgICBhcmUgbWV0OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAg
IGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GCisgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKy8qKgorICog
QGZpbGUgb3B1c19wcm9qZWN0aW9uLmgKKyAqIEBicmllZiBPcHVzIHByb2plY3Rpb24gcmVmZXJl
bmNlIEFQSQorICovCisKKyNpZm5kZWYgT1BVU19QUk9KRUNUSU9OX0gKKyNkZWZpbmUgT1BVU19Q
Uk9KRUNUSU9OX0gKKworI2luY2x1ZGUgIm9wdXNfbXVsdGlzdHJlYW0uaCIKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQGNvbmQgT1BVU19JTlRFUk5B
TF9ET0MgKi8KKworLyoqIFRoZXNlIGFyZSB0aGUgYWN0dWFsIGVuY29kZXIgYW5kIGRlY29kZXIg
Q1RMIElEIG51bWJlcnMuCisgICogVGhleSBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkgYnkg
YXBwbGljYXRpb25zLmMKKyAgKiBJbiBnZW5lcmFsLCBTRVRzIHNob3VsZCBiZSBldmVuIGFuZCBH
RVRzIHNob3VsZCBiZSBvZGQuKi8KKy8qKkB7Ki8KKyNkZWZpbmUgT1BVU19QUk9KRUNUSU9OX0dF
VF9ERU1JWElOR19NQVRSSVhfR0FJTl9SRVFVRVNUICAgIDYwMDEKKyNkZWZpbmUgT1BVU19QUk9K
RUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfU0laRV9SRVFVRVNUICAgIDYwMDMKKyNkZWZpbmUg
T1BVU19QUk9KRUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfUkVRVUVTVCAgICAgICAgIDYwMDUK
Ky8qKkB9Ki8KKworCisvKiogQGVuZGNvbmQgKi8KKworLyoqIEBkZWZncm91cCBvcHVzX3Byb2pl
Y3Rpb25fY3RscyBQcm9qZWN0aW9uIHNwZWNpZmljIGVuY29kZXIgYW5kIGRlY29kZXIgQ1RMcwor
ICAqCisgICogVGhlc2UgYXJlIGNvbnZlbmllbmNlIG1hY3JvcyB0aGF0IGFyZSBzcGVjaWZpYyB0
byB0aGUKKyAgKiBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9jdGwoKSBhbmQgb3B1c19wcm9qZWN0
aW9uX2RlY29kZXJfY3RsKCkKKyAgKiBpbnRlcmZhY2UuCisgICogVGhlIENUTHMgZnJvbSBAcmVm
IG9wdXNfZ2VuZXJpY2N0bHMsIEByZWYgb3B1c19lbmNvZGVyY3RscywKKyAgKiBAcmVmIG9wdXNf
ZGVjb2RlcmN0bHMsIGFuZCBAcmVmIG9wdXNfbXVsdGlzdHJlYW1fY3RscyBtYXkgYmUgYXBwbGll
ZCB0byBhCisgICogcHJvamVjdGlvbiBlbmNvZGVyIG9yIGRlY29kZXIgYXMgd2VsbC4KKyAgKi8K
Ky8qKkB7Ki8KKworLyoqIEdldHMgdGhlIGdhaW4gKGluIGRCLiBTNy44LWZvcm1hdCkgb2YgdGhl
IGRlbWl4aW5nIG1hdHJpeCBmcm9tIHRoZSBlbmNvZGVyLgorICAqIEBwYXJhbVtvdXRdIHggPHR0
Pm9wdXNfaW50MzIgKjwvdHQ+OiBSZXR1cm5zIHRoZSBnYWluIChpbiBkQi4gUzcuOC1mb3JtYXQp
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBkZW1peGlu
ZyBtYXRyaXguCisgICogQGhpZGVpbml0aWFsaXplcgorICAqLworI2RlZmluZSBPUFVTX1BST0pF
Q1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9HQUlOKHgpIE9QVVNfUFJPSkVDVElPTl9HRVRfREVN
SVhJTkdfTUFUUklYX0dBSU5fUkVRVUVTVCwgX19vcHVzX2NoZWNrX2ludF9wdHIoeCkKKworCisv
KiogR2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGVtaXhpbmcgbWF0cml4IGZyb20gdGhl
IGVuY29kZXIuCisgICogQHBhcmFtW291dF0geCA8dHQ+b3B1c19pbnQzMiAqPC90dD46IFJldHVy
bnMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlCisgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlbWl4aW5nIG1hdHJpeC4KKyAgKiBAaGlkZWluaXRpYWxpemVyCisgICov
CisjZGVmaW5lIE9QVVNfUFJPSkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX1NJWkUoeCkgT1BV
U19QUk9KRUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfU0laRV9SRVFVRVNULCBfX29wdXNfY2hl
Y2tfaW50X3B0cih4KQorCisKKy8qKiBDb3BpZXMgdGhlIGRlbWl4aW5nIG1hdHJpeCB0byB0aGUg
c3VwcGxpZWQgcG9pbnRlciBsb2NhdGlvbi4KKyAgKiBAcGFyYW1bb3V0XSB4IDx0dD51bnNpZ25l
ZCBjaGFyICo8L3R0PjogUmV0dXJucyB0aGUgZGVtaXhpbmcgbWF0cml4IHRvIHRoZQorICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZCBwb2ludGVyIGxv
Y2F0aW9uLgorICAqIEBwYXJhbSB5IDx0dD5vcHVzX2ludDMyPC90dD46IFRoZSBzaXplIGluIGJ5
dGVzIG9mIHRoZSByZXNlcnZlZCBtZW1vcnkgYXQgdGhlCisgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb2ludGVyIGxvY2F0aW9uLgorICAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAgKi8K
KyNkZWZpbmUgT1BVU19QUk9KRUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVgoeCx5KSBPUFVTX1BS
T0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9SRVFVRVNULCB4LCBfX29wdXNfY2hlY2tfaW50
KHkpCisKKworLyoqQH0qLworCisvKiogT3B1cyBwcm9qZWN0aW9uIGVuY29kZXIgc3RhdGUuCisg
KiBUaGlzIGNvbnRhaW5zIHRoZSBjb21wbGV0ZSBzdGF0ZSBvZiBhIHByb2plY3Rpb24gT3B1cyBl
bmNvZGVyLgorICogSXQgaXMgcG9zaXRpb24gaW5kZXBlbmRlbnQgYW5kIGNhbiBiZSBmcmVlbHkg
Y29waWVkLgorICogQHNlZSBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2NyZWF0
ZQorICovCit0eXBlZGVmIHN0cnVjdCBPcHVzUHJvamVjdGlvbkVuY29kZXIgT3B1c1Byb2plY3Rp
b25FbmNvZGVyOworCisKKy8qKiBPcHVzIHByb2plY3Rpb24gZGVjb2RlciBzdGF0ZS4KKyAgKiBU
aGlzIGNvbnRhaW5zIHRoZSBjb21wbGV0ZSBzdGF0ZSBvZiBhIHByb2plY3Rpb24gT3B1cyBkZWNv
ZGVyLgorICAqIEl0IGlzIHBvc2l0aW9uIGluZGVwZW5kZW50IGFuZCBjYW4gYmUgZnJlZWx5IGNv
cGllZC4KKyAgKiBAc2VlIG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2NyZWF0ZQorICAqIEBzZWUg
b3B1c19wcm9qZWN0aW9uX2RlY29kZXJfaW5pdAorICAqLwordHlwZWRlZiBzdHJ1Y3QgT3B1c1By
b2plY3Rpb25EZWNvZGVyIE9wdXNQcm9qZWN0aW9uRGVjb2RlcjsKKworCisvKipcbmFtZSBQcm9q
ZWN0aW9uIGVuY29kZXIgZnVuY3Rpb25zICovCisvKipAeyovCisKKy8qKiBHZXRzIHRoZSBzaXpl
IG9mIGFuIE9wdXNQcm9qZWN0aW9uRW5jb2RlciBzdHJ1Y3R1cmUuCisgICogQHBhcmFtIGNoYW5u
ZWxzIDx0dD5pbnQ8L3R0PjogVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBjaGFubmVscyB0byBl
bmNvZGUuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5v
IG1vcmUgdGhhbiAyNTUuCisgICogQHBhcmFtIG1hcHBpbmdfZmFtaWx5IDx0dD5pbnQ8L3R0Pjog
VGhlIG1hcHBpbmcgZmFtaWx5IHRvIHVzZSBmb3Igc2VsZWN0aW5nCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFwcHJvcHJpYXRlIHByb2plY3Rpb24uCisgICog
QHJldHVybnMgVGhlIHNpemUgaW4gYnl0ZXMgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJv
ciBjb2RlCisgICogICAgICAgICAgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rlcykgb24gZXJyb3Iu
CisgICovCitPUFVTX0VYUE9SVCBPUFVTX1dBUk5fVU5VU0VEX1JFU1VMVCBvcHVzX2ludDMyIG9w
dXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfZ2V0X3NpemUoCisgICAgaW50IGNoYW5u
ZWxzLAorICAgIGludCBtYXBwaW5nX2ZhbWlseQorKTsKKworCisvKiogQWxsb2NhdGVzIGFuZCBp
bml0aWFsaXplcyBhIHByb2plY3Rpb24gZW5jb2RlciBzdGF0ZS4KKyAgKiBDYWxsIG9wdXNfcHJv
amVjdGlvbl9lbmNvZGVyX2Rlc3Ryb3koKSB0byByZWxlYXNlCisgICogdGhpcyBvYmplY3Qgd2hl
biBmaW5pc2hlZC4KKyAgKiBAcGFyYW0gRnMgPHR0Pm9wdXNfaW50MzI8L3R0PjogU2FtcGxpbmcg
cmF0ZSBvZiB0aGUgaW5wdXQgc2lnbmFsIChpbiBIeikuCisgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBvbmUgb2YgODAwMCwgMTIwMDAsIDE2MDAwLAorICAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDAwMCwgb3IgNDgwMDAuCisgICogQHBh
cmFtIGNoYW5uZWxzIDx0dD5pbnQ8L3R0PjogTnVtYmVyIG9mIGNoYW5uZWxzIGluIHRoZSBpbnB1
dCBzaWduYWwuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJl
IGF0IG1vc3QgMjU1LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG1heSBi
ZSBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvZGVkIGNoYW5uZWxzICg8Y29kZT5zdHJlYW1zICsKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbXM8L2NvZGU+KS4KKyAgKiBAcGFyYW0gbWFw
cGluZ19mYW1pbHkgPHR0PmludDwvdHQ+OiBUaGUgbWFwcGluZyBmYW1pbHkgdG8gdXNlIGZvciBz
ZWxlY3RpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBw
cm9wcmlhdGUgcHJvamVjdGlvbi4KKyAgKiBAcGFyYW1bb3V0XSBzdHJlYW1zIDx0dD5pbnQgKjwv
dHQ+OiBUaGUgdG90YWwgbnVtYmVyIG9mIHN0cmVhbXMgdGhhdCB3aWxsCisgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgZW5jb2RlZCBmcm9tIHRoZSBpbnB1dC4KKyAg
KiBAcGFyYW1bb3V0XSBjb3VwbGVkX3N0cmVhbXMgPHR0PmludCAqPC90dD46IE51bWJlciBvZiBj
b3VwbGVkICgyIGNoYW5uZWwpCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJlYW1zIHRoYXQgd2lsbCBiZSBlbmNvZGVkIGZyb20gdGhlIGlucHV0LgorICAqIEBwYXJhbSBh
cHBsaWNhdGlvbiA8dHQ+aW50PC90dD46IFRoZSB0YXJnZXQgZW5jb2RlciBhcHBsaWNhdGlvbi4K
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgb25lIG9m
IHRoZSBmb2xsb3dpbmc6CisgICogPGRsPgorICAqIDxkdD4jT1BVU19BUFBMSUNBVElPTl9WT0lQ
PC9kdD4KKyAgKiA8ZGQ+UHJvY2VzcyBzaWduYWwgZm9yIGltcHJvdmVkIHNwZWVjaCBpbnRlbGxp
Z2liaWxpdHkuPC9kZD4KKyAgKiA8ZHQ+I09QVVNfQVBQTElDQVRJT05fQVVESU88L2R0PgorICAq
IDxkZD5GYXZvciBmYWl0aGZ1bG5lc3MgdG8gdGhlIG9yaWdpbmFsIGlucHV0LjwvZGQ+CisgICog
PGR0PiNPUFVTX0FQUExJQ0FUSU9OX1JFU1RSSUNURURfTE9XREVMQVk8L2R0PgorICAqIDxkZD5D
b25maWd1cmUgdGhlIG1pbmltdW0gcG9zc2libGUgY29kaW5nIGRlbGF5IGJ5IGRpc2FibGluZyBj
ZXJ0YWluIG1vZGVzCisgICogb2Ygb3BlcmF0aW9uLjwvZGQ+CisgICogPC9kbD4KKyAgKiBAcGFy
YW1bb3V0XSBlcnJvciA8dHQ+aW50ICo8L3R0PjogUmV0dXJucyAjT1BVU19PSyBvbiBzdWNjZXNz
LCBvciBhbiBlcnJvcgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2Rl
IChzZWUgQHJlZiBvcHVzX2Vycm9yY29kZXMpIG9uCisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZhaWx1cmUuCisgICovCitPUFVTX0VYUE9SVCBPUFVTX1dBUk5fVU5VU0VE
X1JFU1VMVCBPcHVzUHJvamVjdGlvbkVuY29kZXIgKm9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNz
X2VuY29kZXJfY3JlYXRlKAorICAgIG9wdXNfaW50MzIgRnMsCisgICAgaW50IGNoYW5uZWxzLAor
ICAgIGludCBtYXBwaW5nX2ZhbWlseSwKKyAgICBpbnQgKnN0cmVhbXMsCisgICAgaW50ICpjb3Vw
bGVkX3N0cmVhbXMsCisgICAgaW50IGFwcGxpY2F0aW9uLAorICAgIGludCAqZXJyb3IKKykgT1BV
U19BUkdfTk9OTlVMTCg0KSBPUFVTX0FSR19OT05OVUxMKDUpOworCisKKy8qKiBJbml0aWFsaXpl
IGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgcHJvamVjdGlvbiBlbmNvZGVyIHN0YXRlLgorICAqIFRo
ZSBtZW1vcnkgcG9pbnRlZCB0byBieSBcYSBzdCBtdXN0IGJlIGF0IGxlYXN0IHRoZSBzaXplIHJl
dHVybmVkIGJ5CisgICogb3B1c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9nZXRfc2l6
ZSgpLgorICAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UgdGhl
aXIgb3duIGFsbG9jYXRvciBpbnN0ZWFkIG9mCisgICogbWFsbG9jLgorICAqIFRvIHJlc2V0IGEg
cHJldmlvdXNseSBpbml0aWFsaXplZCBzdGF0ZSwgdXNlIHRoZSAjT1BVU19SRVNFVF9TVEFURSBD
VEwuCisgICogQHNlZSBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2NyZWF0ZQor
ICAqIEBzZWUgb3B1c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9nZXRfc2l6ZQorICAq
IEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25FbmNvZGVyKjwvdHQ+OiBQcm9qZWN0aW9uIGVu
Y29kZXIgc3RhdGUgdG8gaW5pdGlhbGl6ZS4KKyAgKiBAcGFyYW0gRnMgPHR0Pm9wdXNfaW50MzI8
L3R0PjogU2FtcGxpbmcgcmF0ZSBvZiB0aGUgaW5wdXQgc2lnbmFsIChpbiBIeikuCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBvbmUgb2YgODAwMCwgMTIw
MDAsIDE2MDAwLAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDAwMCwgb3Ig
NDgwMDAuCisgICogQHBhcmFtIGNoYW5uZWxzIDx0dD5pbnQ8L3R0PjogTnVtYmVyIG9mIGNoYW5u
ZWxzIGluIHRoZSBpbnB1dCBzaWduYWwuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGhpcyBtdXN0IGJlIGF0IG1vc3QgMjU1LgorICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0IG1heSBiZSBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZgorICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvZGVkIGNoYW5uZWxzICg8Y29kZT5zdHJlYW1zICsKKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbXM8L2NvZGU+KS4K
KyAgKiBAcGFyYW0gc3RyZWFtcyA8dHQ+aW50PC90dD46IFRoZSB0b3RhbCBudW1iZXIgb2Ygc3Ry
ZWFtcyB0byBlbmNvZGUgZnJvbSB0aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucHV0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5v
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzLgorICAqIEBwYXJhbSBjb3VwbGVkX3N0
cmVhbXMgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2YgY291cGxlZCAoMiBjaGFubmVsKSBzdHJlYW1z
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVuY29kZS4KKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5vIGxh
cmdlciB0aGFuIHRoZSB0b3RhbAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudW1iZXIgb2Ygc3RyZWFtcy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWRkaXRpb25hbGx5LCBUaGUgdG90YWwgbnVtYmVyIG9mCisgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgY2hhbm5lbHMgKDxjb2RlPnN0cmVh
bXMgKworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0
cmVhbXM8L2NvZGU+KSBtdXN0IGJlIG5vCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGlucHV0IGNoYW5uZWxzLgorICAqIEBw
YXJhbSBhcHBsaWNhdGlvbiA8dHQ+aW50PC90dD46IFRoZSB0YXJnZXQgZW5jb2RlciBhcHBsaWNh
dGlvbi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUg
b25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICogPGRsPgorICAqIDxkdD4jT1BVU19BUFBMSUNBVElP
Tl9WT0lQPC9kdD4KKyAgKiA8ZGQ+UHJvY2VzcyBzaWduYWwgZm9yIGltcHJvdmVkIHNwZWVjaCBp
bnRlbGxpZ2liaWxpdHkuPC9kZD4KKyAgKiA8ZHQ+I09QVVNfQVBQTElDQVRJT05fQVVESU88L2R0
PgorICAqIDxkZD5GYXZvciBmYWl0aGZ1bG5lc3MgdG8gdGhlIG9yaWdpbmFsIGlucHV0LjwvZGQ+
CisgICogPGR0PiNPUFVTX0FQUExJQ0FUSU9OX1JFU1RSSUNURURfTE9XREVMQVk8L2R0PgorICAq
IDxkZD5Db25maWd1cmUgdGhlIG1pbmltdW0gcG9zc2libGUgY29kaW5nIGRlbGF5IGJ5IGRpc2Fi
bGluZyBjZXJ0YWluIG1vZGVzCisgICogb2Ygb3BlcmF0aW9uLjwvZGQ+CisgICogPC9kbD4KKyAg
KiBAcmV0dXJucyAjT1BVU19PSyBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBjb2RlIChzZWUgQHJl
ZiBvcHVzX2Vycm9yY29kZXMpCisgICogICAgICAgICAgb24gZmFpbHVyZS4KKyAgKi8KK09QVVNf
RVhQT1JUIGludCBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2luaXQoCisgICAg
T3B1c1Byb2plY3Rpb25FbmNvZGVyICpzdCwKKyAgICBvcHVzX2ludDMyIEZzLAorICAgIGludCBj
aGFubmVscywKKyAgICBpbnQgbWFwcGluZ19mYW1pbHksCisgICAgaW50ICpzdHJlYW1zLAorICAg
IGludCAqY291cGxlZF9zdHJlYW1zLAorICAgIGludCBhcHBsaWNhdGlvbgorKSBPUFVTX0FSR19O
T05OVUxMKDEpIE9QVVNfQVJHX05PTk5VTEwoNSkgT1BVU19BUkdfTk9OTlVMTCg2KTsKKworCisv
KiogRW5jb2RlcyBhIHByb2plY3Rpb24gT3B1cyBmcmFtZS4KKyAgKiBAcGFyYW0gc3QgPHR0Pk9w
dXNQcm9qZWN0aW9uRW5jb2Rlcio8L3R0PjogUHJvamVjdGlvbiBlbmNvZGVyIHN0YXRlLgorICAq
IEBwYXJhbVtpbl0gcGNtIDx0dD5jb25zdCBvcHVzX2ludDE2KjwvdHQ+OiBUaGUgaW5wdXQgc2ln
bmFsIGFzIGludGVybGVhdmVkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZXMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRoaXMgbXVzdCBjb250YWluCisgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxjb2RlPmZyYW1lX3NpemUqY2hhbm5lbHM8L2NvZGU+CisgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMuCisgICog
QHBhcmFtIGZyYW1lX3NpemUgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2Ygc2FtcGxlcyBwZXIgY2hh
bm5lbCBpbiB0aGUgaW5wdXQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
Z25hbC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBh
biBPcHVzIGZyYW1lIHNpemUgZm9yIHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5jb2RlcidzIHNhbXBsaW5nIHJhdGUuCisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXQgNDgga0h6IHRoZSBwZXJtaXR0ZWQgdmFsdWVzCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgMTIwLCAyNDAsIDQ4MCwgOTYw
LCAxOTIwLCBhbmQgMjg4MC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NpbmcgaW4gYSBkdXJhdGlvbiBvZiBsZXNzIHRoYW4gMTAgbXMKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICg0ODAgc2FtcGxlcyBhdCA0OCBrSHopIHdpbGwgcHJldmVudCB0
aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXIgZnJvbSB1c2lu
ZyB0aGUgTFBDIG9yIGh5YnJpZCBtb2Rlcy4KKyAgKiBAcGFyYW1bb3V0XSBkYXRhIDx0dD51bnNp
Z25lZCBjaGFyKjwvdHQ+OiBPdXRwdXQgcGF5bG9hZC4KKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgY29udGFpbiBzdG9yYWdlIGZvciBhdAor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXN0IFxhIG1h
eF9kYXRhX2J5dGVzLgorICAqIEBwYXJhbSBbaW5dIG1heF9kYXRhX2J5dGVzIDx0dD5vcHVzX2lu
dDMyPC90dD46IFNpemUgb2YgdGhlIGFsbG9jYXRlZAorICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBmb3IgdGhlIG91dHB1dAorICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuIFRo
aXMgbWF5IGJlCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlZCB0byBpbXBvc2UgYW4gdXBwZXIgbGltaXQgb24KKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFudCBiaXRyYXRlLCBi
dXQgc2hvdWxkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm90IGJlIHVzZWQgYXMgdGhlIG9ubHkgYml0cmF0ZQorICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuIFVzZSAjT1BVU19TRVRf
QklUUkFURSB0bworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRyb2wgdGhlIGJpdHJhdGUuCisgICogQHJldHVybnMgVGhlIGxlbmd0aCBvZiB0
aGUgZW5jb2RlZCBwYWNrZXQgKGluIGJ5dGVzKSBvbiBzdWNjZXNzIG9yIGEKKyAgKiAgICAgICAg
ICBuZWdhdGl2ZSBlcnJvciBjb2RlIChzZWUgQHJlZiBvcHVzX2Vycm9yY29kZXMpIG9uIGZhaWx1
cmUuCisgICovCitPUFVTX0VYUE9SVCBPUFVTX1dBUk5fVU5VU0VEX1JFU1VMVCBpbnQgb3B1c19w
cm9qZWN0aW9uX2VuY29kZSgKKyAgICBPcHVzUHJvamVjdGlvbkVuY29kZXIgKnN0LAorICAgIGNv
bnN0IG9wdXNfaW50MTYgKnBjbSwKKyAgICBpbnQgZnJhbWVfc2l6ZSwKKyAgICB1bnNpZ25lZCBj
aGFyICpkYXRhLAorICAgIG9wdXNfaW50MzIgbWF4X2RhdGFfYnl0ZXMKKykgT1BVU19BUkdfTk9O
TlVMTCgxKSBPUFVTX0FSR19OT05OVUxMKDIpIE9QVVNfQVJHX05PTk5VTEwoNCk7CisKKworLyoq
IEVuY29kZXMgYSBwcm9qZWN0aW9uIE9wdXMgZnJhbWUgZnJvbSBmbG9hdGluZyBwb2ludCBpbnB1
dC4KKyAgKiBAcGFyYW0gc3QgPHR0Pk9wdXNQcm9qZWN0aW9uRW5jb2Rlcio8L3R0PjogUHJvamVj
dGlvbiBlbmNvZGVyIHN0YXRlLgorICAqIEBwYXJhbVtpbl0gcGNtIDx0dD5jb25zdCBmbG9hdCo8
L3R0PjogVGhlIGlucHV0IHNpZ25hbCBhcyBpbnRlcmxlYXZlZAorICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcyB3aXRoIGEgbm9ybWFsIHJhbmdlIG9mCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLy0xLjAuCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVzIHdpdGggYSByYW5nZSBi
ZXlvbmQgKy8tMS4wCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmUgc3VwcG9ydGVkIGJ1dCB3aWxsIGJlIGNsaXBwZWQgYnkKKyAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXJzIHVzaW5nIHRoZSBpbnRlZ2VyIEFQSSBhbmQK
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBvbmx5IGJl
IHVzZWQgaWYgaXQgaXMga25vd24KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoYXQgdGhlIGZhciBlbmQgc3VwcG9ydHMgZXh0ZW5kZWQKKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWMgcmFuZ2UuCisgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgY29udGFpbgorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+ZnJhbWVfc2l6ZSpjaGFubmVs
czwvY29kZT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZXMuCisgICogQHBhcmFtIGZyYW1lX3NpemUgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2Ygc2FtcGxl
cyBwZXIgY2hhbm5lbCBpbiB0aGUgaW5wdXQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZ25hbC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMg
bXVzdCBiZSBhbiBPcHVzIGZyYW1lIHNpemUgZm9yIHRoZQorICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5jb2RlcidzIHNhbXBsaW5nIHJhdGUuCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXQgNDgga0h6IHRoZSBwZXJtaXR0ZWQg
dmFsdWVzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgMTIwLCAyNDAs
IDQ4MCwgOTYwLCAxOTIwLCBhbmQgMjg4MC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NpbmcgaW4gYSBkdXJhdGlvbiBvZiBsZXNzIHRoYW4gMTAgbXMKKyAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0ODAgc2FtcGxlcyBhdCA0OCBrSHopIHdpbGwg
cHJldmVudCB0aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXIg
ZnJvbSB1c2luZyB0aGUgTFBDIG9yIGh5YnJpZCBtb2Rlcy4KKyAgKiBAcGFyYW1bb3V0XSBkYXRh
IDx0dD51bnNpZ25lZCBjaGFyKjwvdHQ+OiBPdXRwdXQgcGF5bG9hZC4KKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgY29udGFpbiBzdG9yYWdl
IGZvciBhdAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
YXN0IFxhIG1heF9kYXRhX2J5dGVzLgorICAqIEBwYXJhbSBbaW5dIG1heF9kYXRhX2J5dGVzIDx0
dD5vcHVzX2ludDMyPC90dD46IFNpemUgb2YgdGhlIGFsbG9jYXRlZAorICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBmb3IgdGhlIG91dHB1
dAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
eWxvYWQuIFRoaXMgbWF5IGJlCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlZCB0byBpbXBvc2UgYW4gdXBwZXIgbGltaXQgb24KKyAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFudCBi
aXRyYXRlLCBidXQgc2hvdWxkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm90IGJlIHVzZWQgYXMgdGhlIG9ubHkgYml0cmF0ZQorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuIFVzZSAj
T1BVU19TRVRfQklUUkFURSB0bworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRyb2wgdGhlIGJpdHJhdGUuCisgICogQHJldHVybnMgVGhlIGxl
bmd0aCBvZiB0aGUgZW5jb2RlZCBwYWNrZXQgKGluIGJ5dGVzKSBvbiBzdWNjZXNzIG9yIGEKKyAg
KiAgICAgICAgICBuZWdhdGl2ZSBlcnJvciBjb2RlIChzZWUgQHJlZiBvcHVzX2Vycm9yY29kZXMp
IG9uIGZhaWx1cmUuCisgICovCitPUFVTX0VYUE9SVCBPUFVTX1dBUk5fVU5VU0VEX1JFU1VMVCBp
bnQgb3B1c19wcm9qZWN0aW9uX2VuY29kZV9mbG9hdCgKKyAgICBPcHVzUHJvamVjdGlvbkVuY29k
ZXIgKnN0LAorICAgIGNvbnN0IGZsb2F0ICpwY20sCisgICAgaW50IGZyYW1lX3NpemUsCisgICAg
dW5zaWduZWQgY2hhciAqZGF0YSwKKyAgICBvcHVzX2ludDMyIG1heF9kYXRhX2J5dGVzCispIE9Q
VVNfQVJHX05PTk5VTEwoMSkgT1BVU19BUkdfTk9OTlVMTCgyKSBPUFVTX0FSR19OT05OVUxMKDQp
OworCisKKy8qKiBGcmVlcyBhbiA8Y29kZT5PcHVzUHJvamVjdGlvbkVuY29kZXI8L2NvZGU+IGFs
bG9jYXRlZCBieQorICAqIG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfY3JlYXRl
KCkuCisgICogQHBhcmFtIHN0IDx0dD5PcHVzUHJvamVjdGlvbkVuY29kZXIqPC90dD46IFByb2pl
Y3Rpb24gZW5jb2RlciBzdGF0ZSB0byBiZSBmcmVlZC4KKyAgKi8KK09QVVNfRVhQT1JUIHZvaWQg
b3B1c19wcm9qZWN0aW9uX2VuY29kZXJfZGVzdHJveShPcHVzUHJvamVjdGlvbkVuY29kZXIgKnN0
KTsKKworCisvKiogUGVyZm9ybSBhIENUTCBmdW5jdGlvbiBvbiBhIHByb2plY3Rpb24gT3B1cyBl
bmNvZGVyLgorICAqCisgICogR2VuZXJhbGx5IHRoZSByZXF1ZXN0IGFuZCBzdWJzZXF1ZW50IGFy
Z3VtZW50cyBhcmUgZ2VuZXJhdGVkIGJ5IGEKKyAgKiBjb252ZW5pZW5jZSBtYWNyby4KKyAgKiBA
cGFyYW0gc3QgPHR0Pk9wdXNQcm9qZWN0aW9uRW5jb2Rlcio8L3R0PjogUHJvamVjdGlvbiBlbmNv
ZGVyIHN0YXRlLgorICAqIEBwYXJhbSByZXF1ZXN0IFRoaXMgYW5kIGFsbCByZW1haW5pbmcgcGFy
YW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQgYnkgb25lCisgICogICAgICAgICAgICAgICAgb2Yg
dGhlIGNvbnZlbmllbmNlIG1hY3JvcyBpbiBAcmVmIG9wdXNfZ2VuZXJpY2N0bHMsCisgICogICAg
ICAgICAgICAgICAgQHJlZiBvcHVzX2VuY29kZXJjdGxzLCBAcmVmIG9wdXNfbXVsdGlzdHJlYW1f
Y3Rscywgb3IKKyAgKiAgICAgICAgICAgICAgICBAcmVmIG9wdXNfcHJvamVjdGlvbl9jdGxzCisg
ICogQHNlZSBvcHVzX2dlbmVyaWNjdGxzCisgICogQHNlZSBvcHVzX2VuY29kZXJjdGxzCisgICog
QHNlZSBvcHVzX211bHRpc3RyZWFtX2N0bHMKKyAgKiBAc2VlIG9wdXNfcHJvamVjdGlvbl9jdGxz
CisgICovCitPUFVTX0VYUE9SVCBpbnQgb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfY3RsKE9wdXNQ
cm9qZWN0aW9uRW5jb2RlciAqc3QsIGludCByZXF1ZXN0LCAuLi4pIE9QVVNfQVJHX05PTk5VTEwo
MSk7CisKKworLyoqQH0qLworCisvKipcbmFtZSBQcm9qZWN0aW9uIGRlY29kZXIgZnVuY3Rpb25z
ICovCisvKipAeyovCisKKy8qKiBHZXRzIHRoZSBzaXplIG9mIGFuIDxjb2RlPk9wdXNQcm9qZWN0
aW9uRGVjb2RlcjwvY29kZT4gc3RydWN0dXJlLgorICAqIEBwYXJhbSBjaGFubmVscyA8dHQ+aW50
PC90dD46IFRoZSB0b3RhbCBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgorICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBubyBtb3JlIHRoYW4gMjU1LgorICAq
IEBwYXJhbSBzdHJlYW1zIDx0dD5pbnQ8L3R0PjogVGhlIHRvdGFsIG51bWJlciBvZiBzdHJlYW1z
IGNvZGVkIGluIHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgbm8gbW9yZSB0aGFu
IDI1NS4KKyAgKiBAcGFyYW0gY291cGxlZF9zdHJlYW1zIDx0dD5pbnQ8L3R0PjogTnVtYmVyIHN0
cmVhbXMgdG8gZGVjb2RlIGFzIGNvdXBsZWQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDIgY2hhbm5lbCkgc3RyZWFtcy4KKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5vIGxhcmdlciB0aGFuIHRoZSB0b3RhbAor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc3RyZWFt
cy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5
LCBUaGUgdG90YWwgbnVtYmVyIG9mCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvZGVkIGNoYW5uZWxzICg8Y29kZT5zdHJlYW1zICsKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY291cGxlZF9zdHJlYW1zPC9jb2RlPikgbXVzdCBiZSBu
bworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gMjU1
LgorICAqIEByZXR1cm5zIFRoZSBzaXplIGluIGJ5dGVzIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRp
dmUgZXJyb3IgY29kZQorICAqICAgICAgICAgIChzZWUgQHJlZiBvcHVzX2Vycm9yY29kZXMpIG9u
IGVycm9yLgorICAqLworT1BVU19FWFBPUlQgT1BVU19XQVJOX1VOVVNFRF9SRVNVTFQgb3B1c19p
bnQzMiBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9nZXRfc2l6ZSgKKyAgICBpbnQgY2hhbm5lbHMs
CisgICAgaW50IHN0cmVhbXMsCisgICAgaW50IGNvdXBsZWRfc3RyZWFtcworKTsKKworCisvKiog
QWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBhIHByb2plY3Rpb24gZGVjb2RlciBzdGF0ZS4KKyAg
KiBDYWxsIG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2Rlc3Ryb3koKSB0byByZWxlYXNlCisgICog
dGhpcyBvYmplY3Qgd2hlbiBmaW5pc2hlZC4KKyAgKiBAcGFyYW0gRnMgPHR0Pm9wdXNfaW50MzI8
L3R0PjogU2FtcGxpbmcgcmF0ZSB0byBkZWNvZGUgYXQgKGluIEh6KS4KKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG9uZSBvZiA4MDAwLCAxMjAwMCwgMTYw
MDAsCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MDAwLCBvciA0ODAwMC4K
KyAgKiBAcGFyYW0gY2hhbm5lbHMgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2YgY2hhbm5lbHMgdG8g
b3V0cHV0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBh
dCBtb3N0IDI1NS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBtYXkgYmUg
ZGlmZmVyZW50IGZyb20gdGhlIG51bWJlciBvZiBjb2RlZAorICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5uZWxzICg8Y29kZT5zdHJlYW1zICsKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbXM8L2NvZGU+KS4KKyAgKiBAcGFyYW0gc3Ry
ZWFtcyA8dHQ+aW50PC90dD46IFRoZSB0b3RhbCBudW1iZXIgb2Ygc3RyZWFtcyBjb2RlZCBpbiB0
aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LgorICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5vIG1vcmUgdGhhbiAyNTUuCisgICog
QHBhcmFtIGNvdXBsZWRfc3RyZWFtcyA8dHQ+aW50PC90dD46IE51bWJlciBvZiBzdHJlYW1zIHRv
IGRlY29kZSBhcyBjb3VwbGVkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgyIGNoYW5uZWwpIHN0cmVhbXMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRoaXMgbXVzdCBiZSBubyBsYXJnZXIgdGhhbiB0aGUgdG90YWwKKyAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHN0cmVhbXMuCisgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgVGhlIHRv
dGFsIG51bWJlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlZCBjaGFubmVscyAoPGNvZGU+c3RyZWFtcyArCisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvdXBsZWRfc3RyZWFtczwvY29kZT4pIG11c3QgYmUgbm8KKyAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZSB0aGFuIDI1NS4KKyAgKiBA
cGFyYW1baW5dIGRlbWl4aW5nX21hdHJpeCA8dHQ+Y29uc3QgdW5zaWduZWQgY2hhcltkZW1peGlu
Z19tYXRyaXhfc2l6ZV08L3R0PjogRGVtaXhpbmcgbWF0cml4CisgICogICAgICAgICAgICAgICAg
ICAgICAgICAgdGhhdCBtYXBwaW5nIGZyb20gY29kZWQgY2hhbm5lbHMgdG8gb3V0cHV0IGNoYW5u
ZWxzLAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiBAcmVmIG9w
dXNfcHJvamVjdGlvbiBhbmQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIG9wdXNf
cHJvamVjdGlvbl9jdGxzLgorICAqIEBwYXJhbSBkZW1peGluZ19tYXRyaXhfc2l6ZSA8dHQ+b3B1
c19pbnQzMjwvdHQ+OiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVtaXhpbmcgbWF0cml4LCBhcwor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNj
cmliZWQgaW4gQHJlZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcHVzX3Byb2plY3Rpb25fY3Rscy4KKyAgKiBAcGFyYW1bb3V0XSBlcnJvciA8
dHQ+aW50ICo8L3R0PjogUmV0dXJucyAjT1BVU19PSyBvbiBzdWNjZXNzLCBvciBhbiBlcnJvcgor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIChzZWUgQHJlZiBvcHVz
X2Vycm9yY29kZXMpIG9uCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
aWx1cmUuCisgICovCitPUFVTX0VYUE9SVCBPUFVTX1dBUk5fVU5VU0VEX1JFU1VMVCBPcHVzUHJv
amVjdGlvbkRlY29kZXIgKm9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2NyZWF0ZSgKKyAgICBvcHVz
X2ludDMyIEZzLAorICAgIGludCBjaGFubmVscywKKyAgICBpbnQgc3RyZWFtcywKKyAgICBpbnQg
Y291cGxlZF9zdHJlYW1zLAorICAgIHVuc2lnbmVkIGNoYXIgKmRlbWl4aW5nX21hdHJpeCwKKyAg
ICBvcHVzX2ludDMyIGRlbWl4aW5nX21hdHJpeF9zaXplLAorICAgIGludCAqZXJyb3IKKykgT1BV
U19BUkdfTk9OTlVMTCg1KTsKKworCisvKiogSW50aWFsaXplIGEgcHJldmlvdXNseSBhbGxvY2F0
ZWQgcHJvamVjdGlvbiBkZWNvZGVyIHN0YXRlIG9iamVjdC4KKyAgKiBUaGUgbWVtb3J5IHBvaW50
ZWQgdG8gYnkgXGEgc3QgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSByZXR1cm5lZCBieQorICAq
IG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2dldF9zaXplKCkuCisgICogVGhpcyBpcyBpbnRlbmRl
ZCBmb3IgYXBwbGljYXRpb25zIHdoaWNoIHVzZSB0aGVpciBvd24gYWxsb2NhdG9yIGluc3RlYWQg
b2YKKyAgKiBtYWxsb2MuCisgICogVG8gcmVzZXQgYSBwcmV2aW91c2x5IGluaXRpYWxpemVkIHN0
YXRlLCB1c2UgdGhlICNPUFVTX1JFU0VUX1NUQVRFIENUTC4KKyAgKiBAc2VlIG9wdXNfcHJvamVj
dGlvbl9kZWNvZGVyX2NyZWF0ZQorICAqIEBzZWUgb3B1c19wcm9qZWN0aW9uX2Rlb2NkZXJfZ2V0
X3NpemUKKyAgKiBAcGFyYW0gc3QgPHR0Pk9wdXNQcm9qZWN0aW9uRGVjb2Rlcio8L3R0PjogUHJv
amVjdGlvbiBlbmNvZGVyIHN0YXRlIHRvIGluaXRpYWxpemUuCisgICogQHBhcmFtIEZzIDx0dD5v
cHVzX2ludDMyPC90dD46IFNhbXBsaW5nIHJhdGUgdG8gZGVjb2RlIGF0IChpbiBIeikuCisgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBvbmUgb2YgODAwMCwg
MTIwMDAsIDE2MDAwLAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDAwMCwg
b3IgNDgwMDAuCisgICogQHBhcmFtIGNoYW5uZWxzIDx0dD5pbnQ8L3R0PjogTnVtYmVyIG9mIGNo
YW5uZWxzIHRvIG91dHB1dC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlz
IG11c3QgYmUgYXQgbW9zdCAyNTUuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXQgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBudW1iZXIgb2YgY29kZWQKKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscyAoPGNvZGU+c3RyZWFtcyArCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY291cGxlZF9zdHJlYW1zPC9jb2RlPikuCisgICog
QHBhcmFtIHN0cmVhbXMgPHR0PmludDwvdHQ+OiBUaGUgdG90YWwgbnVtYmVyIG9mIHN0cmVhbXMg
Y29kZWQgaW4gdGhlCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC4KKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBubyBtb3JlIHRoYW4g
MjU1LgorICAqIEBwYXJhbSBjb3VwbGVkX3N0cmVhbXMgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2Yg
c3RyZWFtcyB0byBkZWNvZGUgYXMgY291cGxlZAorICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoMiBjaGFubmVsKSBzdHJlYW1zLgorICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgbm8gbGFyZ2VyIHRoYW4gdGhlIHRvdGFs
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBzdHJl
YW1zLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFs
bHksIFRoZSB0b3RhbCBudW1iZXIgb2YKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29kZWQgY2hhbm5lbHMgKDxjb2RlPnN0cmVhbXMgKworICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbXM8L2NvZGU+KSBtdXN0IGJl
IG5vCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiAy
NTUuCisgICogQHBhcmFtW2luXSBkZW1peGluZ19tYXRyaXggPHR0PmNvbnN0IHVuc2lnbmVkIGNo
YXJbZGVtaXhpbmdfbWF0cml4X3NpemVdPC90dD46IERlbWl4aW5nIG1hdHJpeAorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoYXQgbWFwcGluZyBmcm9tIGNvZGVkIGNoYW5uZWxzIHRvIG91
dHB1dCBjaGFubmVscywKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQg
aW4gQHJlZiBvcHVzX3Byb2plY3Rpb24gYW5kCisgICogICAgICAgICAgICAgICAgICAgICAgICAg
QHJlZiBvcHVzX3Byb2plY3Rpb25fY3Rscy4KKyAgKiBAcGFyYW0gZGVtaXhpbmdfbWF0cml4X3Np
emUgPHR0Pm9wdXNfaW50MzI8L3R0PjogVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbWl4aW5nIG1h
dHJpeCwgYXMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzY3JpYmVkIGluIEByZWYKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B1c19wcm9qZWN0aW9uX2N0bHMuCisgICogQHJldHVybnMg
I09QVVNfT0sgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgY29kZSAoc2VlIEByZWYgb3B1c19lcnJv
cmNvZGVzKQorICAqICAgICAgICAgIG9uIGZhaWx1cmUuCisgICovCitPUFVTX0VYUE9SVCBpbnQg
b3B1c19wcm9qZWN0aW9uX2RlY29kZXJfaW5pdCgKKyAgICBPcHVzUHJvamVjdGlvbkRlY29kZXIg
KnN0LAorICAgIG9wdXNfaW50MzIgRnMsCisgICAgaW50IGNoYW5uZWxzLAorICAgIGludCBzdHJl
YW1zLAorICAgIGludCBjb3VwbGVkX3N0cmVhbXMsCisgICAgdW5zaWduZWQgY2hhciAqZGVtaXhp
bmdfbWF0cml4LAorICAgIG9wdXNfaW50MzIgZGVtaXhpbmdfbWF0cml4X3NpemUKKykgT1BVU19B
UkdfTk9OTlVMTCgxKSBPUFVTX0FSR19OT05OVUxMKDYpOworCisKKy8qKiBEZWNvZGUgYSBwcm9q
ZWN0aW9uIE9wdXMgcGFja2V0LgorICAqIEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25EZWNv
ZGVyKjwvdHQ+OiBQcm9qZWN0aW9uIGRlY29kZXIgc3RhdGUuCisgICogQHBhcmFtW2luXSBkYXRh
IDx0dD5jb25zdCB1bnNpZ25lZCBjaGFyKjwvdHQ+OiBJbnB1dCBwYXlsb2FkLgorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGEgPGNvZGU+TlVM
TDwvY29kZT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvaW50ZXIgdG8gaW5kaWNhdGUgcGFja2V0CisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb3NzLgorICAqIEBwYXJhbSBsZW4gPHR0Pm9wdXNf
aW50MzI8L3R0PjogTnVtYmVyIG9mIGJ5dGVzIGluIHBheWxvYWQuCisgICogQHBhcmFtW291dF0g
cGNtIDx0dD5vcHVzX2ludDE2KjwvdHQ+OiBPdXRwdXQgc2lnbmFsLCB3aXRoIGludGVybGVhdmVk
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzLgorICAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGNvbnRhaW4g
cm9vbSBmb3IKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2Rl
PmZyYW1lX3NpemUqY2hhbm5lbHM8L2NvZGU+CisgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVzLgorICAqIEBwYXJhbSBmcmFtZV9zaXplIDx0dD5pbnQ8L3R0
PjogVGhlIG51bWJlciBvZiBzYW1wbGVzIHBlciBjaGFubmVsIG9mCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgc3BhY2UgaW4gXGEgcGNtLgorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyBsZXNzIHRoYW4gdGhlIG1heGlt
dW0gcGFja2V0IGR1cmF0aW9uCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
MTIwIG1zOyA1NzYwIGZvciA0OGtIeiksIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgY2FwYWJs
ZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgZGVjb2Rpbmcgc29tZSBw
YWNrZXRzLiBJbiB0aGUgY2FzZSBvZiBQTEMgKGRhdGE9PU5VTEwpCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvciBGRUMgKGRlY29kZV9mZWM9MSksIHRoZW4gZnJhbWVfc2l6
ZSBuZWVkcyB0byBiZSBleGFjdGx5CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGUgZHVyYXRpb24gb2YgYXVkaW8gdGhhdCBpcyBtaXNzaW5nLCBvdGhlcndpc2UgdGhlCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyIHdpbGwgbm90IGJlIGlu
IHRoZSBvcHRpbWFsIHN0YXRlIHRvIGRlY29kZSB0aGUKKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5leHQgaW5jb21pbmcgcGFja2V0LiBGb3IgdGhlIFBMQyBhbmQgRkVDIGNh
c2VzLCBmcmFtZV9zaXplCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5t
dXN0PC9iPiBiZSBhIG11bHRpcGxlIG9mIDIuNSBtcy4KKyAgKiBAcGFyYW0gZGVjb2RlX2ZlYyA8
dHQ+aW50PC90dD46IEZsYWcgKDAgb3IgMSkgdG8gcmVxdWVzdCB0aGF0IGFueSBpbi1iYW5kCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkIGVycm9yIGNvcnJlY3Rp
b24gZGF0YSBiZSBkZWNvZGVkLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SWYgbm8gc3VjaCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhlIGZyYW1lIGlzCisgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkIGFzIGlmIGl0IHdlcmUgbG9zdC4KKyAgKiBA
cmV0dXJucyBOdW1iZXIgb2Ygc2FtcGxlcyBkZWNvZGVkIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2
ZSBlcnJvciBjb2RlCisgICogICAgICAgICAgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rlcykgb24g
ZmFpbHVyZS4KKyAgKi8KK09QVVNfRVhQT1JUIE9QVVNfV0FSTl9VTlVTRURfUkVTVUxUIGludCBv
cHVzX3Byb2plY3Rpb25fZGVjb2RlKAorICAgIE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QsCisg
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgICBvcHVzX2ludDMyIGxlbiwKKyAgICBv
cHVzX2ludDE2ICpwY20sCisgICAgaW50IGZyYW1lX3NpemUsCisgICAgaW50IGRlY29kZV9mZWMK
KykgT1BVU19BUkdfTk9OTlVMTCgxKSBPUFVTX0FSR19OT05OVUxMKDQpOworCisKKy8qKiBEZWNv
ZGUgYSBwcm9qZWN0aW9uIE9wdXMgcGFja2V0IHdpdGggZmxvYXRpbmcgcG9pbnQgb3V0cHV0Lgor
ICAqIEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25EZWNvZGVyKjwvdHQ+OiBQcm9qZWN0aW9u
IGRlY29kZXIgc3RhdGUuCisgICogQHBhcmFtW2luXSBkYXRhIDx0dD5jb25zdCB1bnNpZ25lZCBj
aGFyKjwvdHQ+OiBJbnB1dCBwYXlsb2FkLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVXNlIGEgPGNvZGU+TlVMTDwvY29kZT4KKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gaW5kaWNh
dGUgcGFja2V0CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsb3NzLgorICAqIEBwYXJhbSBsZW4gPHR0Pm9wdXNfaW50MzI8L3R0PjogTnVtYmVyIG9m
IGJ5dGVzIGluIHBheWxvYWQuCisgICogQHBhcmFtW291dF0gcGNtIDx0dD5vcHVzX2ludDE2Kjwv
dHQ+OiBPdXRwdXQgc2lnbmFsLCB3aXRoIGludGVybGVhdmVkCisgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzLgorICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGNvbnRhaW4gcm9vbSBmb3IKKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPmZyYW1lX3NpemUqY2hhbm5lbHM8
L2NvZGU+CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVz
LgorICAqIEBwYXJhbSBmcmFtZV9zaXplIDx0dD5pbnQ8L3R0PjogVGhlIG51bWJlciBvZiBzYW1w
bGVzIHBlciBjaGFubmVsIG9mCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dmFpbGFibGUgc3BhY2UgaW4gXGEgcGNtLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSWYgdGhpcyBpcyBsZXNzIHRoYW4gdGhlIG1heGltdW0gcGFja2V0IGR1cmF0aW9uCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTIwIG1zOyA1NzYwIGZvciA0OGtI
eiksIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgY2FwYWJsZQorICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2YgZGVjb2Rpbmcgc29tZSBwYWNrZXRzLiBJbiB0aGUgY2FzZSBv
ZiBQTEMgKGRhdGE9PU5VTEwpCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
ciBGRUMgKGRlY29kZV9mZWM9MSksIHRoZW4gZnJhbWVfc2l6ZSBuZWVkcyB0byBiZSBleGFjdGx5
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHVyYXRpb24gb2YgYXVk
aW8gdGhhdCBpcyBtaXNzaW5nLCBvdGhlcndpc2UgdGhlCisgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvZGVyIHdpbGwgbm90IGJlIGluIHRoZSBvcHRpbWFsIHN0YXRlIHRv
IGRlY29kZSB0aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgaW5j
b21pbmcgcGFja2V0LiBGb3IgdGhlIFBMQyBhbmQgRkVDIGNhc2VzLCBmcmFtZV9zaXplCisgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5tdXN0PC9iPiBiZSBhIG11bHRpcGxl
IG9mIDIuNSBtcy4KKyAgKiBAcGFyYW0gZGVjb2RlX2ZlYyA8dHQ+aW50PC90dD46IEZsYWcgKDAg
b3IgMSkgdG8gcmVxdWVzdCB0aGF0IGFueSBpbi1iYW5kCisgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gZGF0YSBiZSBkZWNvZGVkLgor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm8gc3VjaCBkYXRhIGlzIGF2
YWlsYWJsZSwgdGhlIGZyYW1lIGlzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWNvZGVkIGFzIGlmIGl0IHdlcmUgbG9zdC4KKyAgKiBAcmV0dXJucyBOdW1iZXIgb2Ygc2Ft
cGxlcyBkZWNvZGVkIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlCisgICogICAg
ICAgICAgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rlcykgb24gZmFpbHVyZS4KKyAgKi8KK09QVVNf
RVhQT1JUIE9QVVNfV0FSTl9VTlVTRURfUkVTVUxUIGludCBvcHVzX3Byb2plY3Rpb25fZGVjb2Rl
X2Zsb2F0KAorICAgIE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QsCisgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqZGF0YSwKKyAgICBvcHVzX2ludDMyIGxlbiwKKyAgICBmbG9hdCAqcGNtLAorICAg
IGludCBmcmFtZV9zaXplLAorICAgIGludCBkZWNvZGVfZmVjCispIE9QVVNfQVJHX05PTk5VTEwo
MSkgT1BVU19BUkdfTk9OTlVMTCg0KTsKKworCisvKiogUGVyZm9ybSBhIENUTCBmdW5jdGlvbiBv
biBhIHByb2plY3Rpb24gT3B1cyBkZWNvZGVyLgorICAqCisgICogR2VuZXJhbGx5IHRoZSByZXF1
ZXN0IGFuZCBzdWJzZXF1ZW50IGFyZ3VtZW50cyBhcmUgZ2VuZXJhdGVkIGJ5IGEKKyAgKiBjb252
ZW5pZW5jZSBtYWNyby4KKyAgKiBAcGFyYW0gc3QgPHR0Pk9wdXNQcm9qZWN0aW9uRGVjb2Rlcio8
L3R0PjogUHJvamVjdGlvbiBkZWNvZGVyIHN0YXRlLgorICAqIEBwYXJhbSByZXF1ZXN0IFRoaXMg
YW5kIGFsbCByZW1haW5pbmcgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQgYnkgb25lCisg
ICogICAgICAgICAgICAgICAgb2YgdGhlIGNvbnZlbmllbmNlIG1hY3JvcyBpbiBAcmVmIG9wdXNf
Z2VuZXJpY2N0bHMsCisgICogICAgICAgICAgICAgICAgQHJlZiBvcHVzX2RlY29kZXJjdGxzLCBA
cmVmIG9wdXNfbXVsdGlzdHJlYW1fY3Rscywgb3IKKyAgKiAgICAgICAgICAgICAgICBAcmVmIG9w
dXNfcHJvamVjdGlvbl9jdGxzLgorICAqIEBzZWUgb3B1c19nZW5lcmljY3RscworICAqIEBzZWUg
b3B1c19kZWNvZGVyY3RscworICAqIEBzZWUgb3B1c19tdWx0aXN0cmVhbV9jdGxzCisgICogQHNl
ZSBvcHVzX3Byb2plY3Rpb25fY3RscworICAqLworT1BVU19FWFBPUlQgaW50IG9wdXNfcHJvamVj
dGlvbl9kZWNvZGVyX2N0bChPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwg
Li4uKSBPUFVTX0FSR19OT05OVUxMKDEpOworCisKKy8qKiBGcmVlcyBhbiA8Y29kZT5PcHVzUHJv
amVjdGlvbkRlY29kZXI8L2NvZGU+IGFsbG9jYXRlZCBieQorICAqIG9wdXNfcHJvamVjdGlvbl9k
ZWNvZGVyX2NyZWF0ZSgpLgorICAqIEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25EZWNvZGVy
PC90dD46IFByb2plY3Rpb24gZGVjb2RlciBzdGF0ZSB0byBiZSBmcmVlZC4KKyAgKi8KK09QVVNf
RVhQT1JUIHZvaWQgb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfZGVzdHJveShPcHVzUHJvamVjdGlv
bkRlY29kZXIgKnN0KTsKKworCisvKipAfSovCisKKy8qKkB9Ki8KKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIE9QVVNfUFJPSkVDVElPTl9IICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL200L2F4X2FkZF9mb3J0aWZ5X3NvdXJjZS5tNCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvbTQvYXhfYWRkX2ZvcnRpZnlfc291cmNl
Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFjODllNDEwODU2MjNmYzhiMmVlYWU2NTQ3ZDc3MTc4OTVkNjlmZjcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL200L2F4X2FkZF9mb3J0aWZ5X3NvdXJjZS5tNApAQCAtMCwwICsx
LDUzIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgIE1vZGlmaWVkIGZyb20gaHR0cHM6Ly93
d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2FkZF9mb3J0aWZ5X3NvdXJj
ZS5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0FE
RF9GT1JUSUZZX1NPVVJDRQorIworIyBERVNDUklQVElPTgorIworIyAgIENoZWNrIHdoZXRoZXIg
LURfRk9SVElGWV9TT1VSQ0U9MiBjYW4gYmUgYWRkZWQgdG8gQ0ZMQUdTIHdpdGhvdXQgbWFjcm8K
KyMgICByZWRlZmluaXRpb24gd2FybmluZ3MuIFNvbWUgZGlzdHJpYnV0aW9ucyAoc3VjaCBhcyBH
ZW50b28gTGludXgpIGVuYWJsZQorIyAgIF9GT1JUSUZZX1NPVVJDRSBnbG9iYWxseSBpbiB0aGVp
ciBjb21waWxlcnMsIGxlYWRpbmcgdG8gdW5uZWNlc3NhcnkKKyMgICB3YXJuaW5ncyBpbiB0aGUg
Zm9ybSBvZgorIworIyAgICAgPGNvbW1hbmQtbGluZT46MDowOiBlcnJvcjogIl9GT1JUSUZZX1NP
VVJDRSIgcmVkZWZpbmVkIFstV2Vycm9yXQorIyAgICAgPGJ1aWx0LWluPjogbm90ZTogdGhpcyBp
cyB0aGUgbG9jYXRpb24gb2YgdGhlIHByZXZpb3VzIGRlZmluaXRpb24KKyMKKyMgICB3aGljaCBp
cyBhIHByb2JsZW0gaWYgLVdlcnJvciBpcyBlbmFibGVkLiBUaGlzIG1hY3JvIGNoZWNrcyB3aGV0
aGVyCisjICAgX0ZPUlRJRllfU09VUkNFIGlzIGFscmVhZHkgZGVmaW5lZCwgYW5kIGlmIG5vdCwg
YWRkcyAtRF9GT1JUSUZZX1NPVVJDRT0yCisjICAgdG8gQ0ZMQUdTLgorIworIyBMSUNFTlNFCisj
CisjICAgQ29weXJpZ2h0IChjKSAyMDE3IERhdmlkIFNlaWZlcnQgPHNvYXBAZ2VudG9vLm9yZz4K
KyMKKyMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdp
dGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRo
b3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKKyMgICBhbmQgdGhpcyBu
b3RpY2UgYXJlIHByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0
IGFueQorIyAgIHdhcnJhbnR5LgorCisjc2VyaWFsIDEKKworQUNfREVGVU4oW0FYX0FERF9GT1JU
SUZZX1NPVVJDRV0sWworICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBhZGQgLURfRk9S
VElGWV9TT1VSQ0U9MiB0byBDRkxBR1NdKQorICAgIEFDX0xJTktfSUZFTFNFKFsKKyAgICAgICAg
QUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICBbWworICAgICAgICAgICAgICAgIGludCBtYWlu
KCkgeworICAgICAgICAgICAgICAgICNpZm5kZWYgX0ZPUlRJRllfU09VUkNFCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHRoaXNfaXNfYW5fZXJyb3I7CisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgXV0KKyAgICAgICAgKV0sIFsKKyAgICAgICAgICAgIEFD
X01TR19SRVNVTFQoW3llc10pCisgICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgLURfRk9SVElG
WV9TT1VSQ0U9MiIKKyAgICAgICAgXSwgWworICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9d
KQorICAgIF0pCitdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzLXVuaW5zdGFsbGVkLnBjLmluIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzLXVu
aW5zdGFsbGVkLnBjLmluCmluZGV4IDNmMmQ2NzQ0ZGE4YmQ3NDI5NWI0NGIxMjc5OGIxYWMzMGRi
ZDVkZTAuLjE5ZjVjOTMzZGRkZGE1OTA1ODkzMWM0ZDIzZjBhZTBhMmNjMmY5NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvb3B1cy11bmluc3RhbGxlZC5wYy5pbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXMtdW5pbnN0YWxsZWQucGMuaW4KQEAg
LTgsNSArOCw1IEBAIERlc2NyaXB0aW9uOiBPcHVzIElFVEYgYXVkaW8gY29kZWMgKG5vdCBpbnN0
YWxsZWQsIEBQQ19CVUlMREApCiBWZXJzaW9uOiBAVkVSU0lPTkAKIFJlcXVpcmVzOgogQ29uZmxp
Y3RzOgotTGliczogJHtsaWJkaXJ9L2xpYm9wdXMuYSBATElCTUAKK0xpYnM6ICR7bGliZGlyfS9s
aWJvcHVzLmxhIEBMSUJNQAogQ2ZsYWdzOiAtSSR7cGNmaWxlZGlyfS9AdG9wX3NyY2RpckAvaW5j
bHVkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2J1aWxkdHlwZS5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvb3B1c19idWlsZHR5cGUuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWFlZTllZmZhYWViYWFkYmQ2ODEwNjMyODk5ZjNlOWNhOWM1ODY4YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvb3B1c19idWlsZHR5cGUuY21ha2UKQEAgLTAsMCArMSwyMyBAQAor
IyBTZXQgYSBkZWZhdWx0IGJ1aWxkIHR5cGUgaWYgbm9uZSB3YXMgc3BlY2lmaWVkCisKK2lmKE5P
VCBDTUFLRV9CVUlMRF9UWVBFIEFORCBOT1QgQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKyAg
aWYoQ01BS0VfQ19GTEFHUykKKyAgICBtZXNzYWdlKFNUQVRVUyAiQ01BS0VfQ19GTEFHUzogIiAk
e0NNQUtFX0NfRkxBR1N9KQorICBlbHNlKCkKKyAgICBzZXQoZGVmYXVsdF9idWlsZF90eXBlICJS
ZWxlYXNlIikKKyAgICBtZXNzYWdlKAorICAgICAgU1RBVFVTCisgICAgICAgICJTZXR0aW5nIGJ1
aWxkIHR5cGUgdG8gJyR7ZGVmYXVsdF9idWlsZF90eXBlfScgYXMgbm9uZSB3YXMgc3BlY2lmaWVk
IGFuZCBubyBDRkxBR1Mgd2FzIGV4cG9ydGVkLiIKKyAgICAgICkKKyAgICBzZXQoQ01BS0VfQlVJ
TERfVFlQRSAiJHtkZWZhdWx0X2J1aWxkX3R5cGV9IgorICAgICAgICBDQUNIRSBTVFJJTkcgIkNo
b29zZSB0aGUgdHlwZSBvZiBidWlsZC4iCisgICAgICAgIEZPUkNFKQorICAgICMgU2V0IHRoZSBw
b3NzaWJsZSB2YWx1ZXMgb2YgYnVpbGQgdHlwZSBmb3IgY21ha2UtZ3VpCisgICAgc2V0X3Byb3Bl
cnR5KENBQ0hFIENNQUtFX0JVSUxEX1RZUEUKKyAgICAgICAgICAgICAgICAgUFJPUEVSVFkgU1RS
SU5HUworICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVidWciCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJSZWxlYXNlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiTWluU2l6ZVJl
bCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlbFdpdGhEZWJJbmZvIikKKyAgZW5kaWYo
KQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2NvbmZpZy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvb3B1c19jb25maWcuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTBiZmQ1ODM5YzhiYmExYmQ0NDdlYjM0ZTNhMjMwNDkxMjllYjRiZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvb3B1c19jb25maWcuY21ha2UKQEAgLTAsMCArMSw0MyBAQAoraW5j
bHVkZShvcHVzX2Z1bmN0aW9ucy5jbWFrZSkKKworY29uZmlndXJlX2ZpbGUoY29uZmlnLmguY21h
a2UuaW4gY29uZmlnLmggQE9OTFkpCithZGRfZGVmaW5pdGlvbnMoLURIQVZFX0NPTkZJR19IKQor
CitzZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIFVTRV9GT0xERVJTIE9OKQorc2V0X3Byb3Bl
cnR5KEdMT0JBTCBQUk9QRVJUWSBDX1NUQU5EQVJEIDk5KQorCitpZihNU1ZDKQorICBhZGRfZGVm
aW5pdGlvbnMoLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUykKK2VuZGlmKCkKKworaW5jbHVkZShD
aGVja0xpYnJhcnlFeGlzdHMpCitjaGVja19saWJyYXJ5X2V4aXN0cyhtIGZsb29yICIiIEhBVkVf
TElCTSkKK2lmKEhBVkVfTElCTSkKKyAgbGlzdChBUFBFTkQgT1BVU19SRVFVSVJFRF9MSUJSQVJJ
RVMgbSkKK2VuZGlmKCkKKworaWYoQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICIoaVsw
LTldODZ8eDg2fFg4NnxhbWQ2NHxBTUQ2NHx4ODZfNjQpIikKKyAgaWYoQ01BS0VfU0laRU9GX1ZP
SURfUCBFUVVBTCA4KQorICAgIHNldChPUFVTX0NQVV9YNjQgMSkKKyAgZWxzZSgpCisgICAgc2V0
KE9QVVNfQ1BVX1g4NiAxKQorICBlbmRpZigpCitlbHNlaWYoQ01BS0VfU1lTVEVNX1BST0NFU1NP
UiBNQVRDSEVTICJhcm0iKQorICBzZXQoT1BVU19DUFVfQVJNIDEpCitlbmRpZigpCisKK29wdXNf
c3VwcG9ydHNfY3B1X2RldGVjdGlvbihSVU5USU1FX0NQVV9DQVBBQklMSVRZX0RFVEVDVElPTikK
KworaWYoT1BVU19DUFVfWDg2IE9SIE9QVVNfQ1BVX1g2NCkKKyAgb3B1c19kZXRlY3Rfc3NlKENP
TVBJTEVSX1NVUFBPUlRfU0lNRCkKK2Vsc2VpZihPUFVTX0NQVV9BUk0pCisgIG9wdXNfZGV0ZWN0
X25lb24oQ09NUElMRVJfU1VQUE9SVF9ORU9OKQorICBpZihDT01QSUxFUl9TVVBQT1JUX05FT04p
CisgICAgb3B0aW9uKE9QVVNfVVNFX05FT04gIk9wdGlvbiB0byB0dXJuIG9mZiBTU0UiIE9OKQor
ICAgIG9wdGlvbihPUFVTX01BWV9TVVBQT1JUX05FT04gIkRvZXMgcnVudGltZSBjaGVjayBmb3Ig
bmVvbiBzdXBwb3J0IiBPTikKKyAgICBvcHRpb24oT1BVU19QUkVTVU1FX05FT04gIkFzc3VtZSB0
YXJnZXQgQ1BVIGhhcyBORU9OIHN1cHBvcnQiIE9GRikKKyAgICBpZihDTUFLRV9TWVNURU1fUFJP
Q0VTU09SIE1BVENIRVMgImFhcmNoNjQiKQorICAgICAgc2V0KE9QVVNfUFJFU1VNRV9ORU9OIE9O
KQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2Z1bmN0
aW9ucy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvb3B1c19mdW5jdGlvbnMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUzMDljMmM0OTBk
OWE2YzliNWY5OGE4MTMzMGRiZGY2ODQ1ZjMzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvb3B1c19mdW5j
dGlvbnMuY21ha2UKQEAgLTAsMCArMSwyNjIgQEAKKyNbW0NtYWtlIGhlbHBlciBmdW5jdGlvbiB0
byBwYXJzZSBzb3VyY2UgZmlsZXMgZnJvbSBtYWtlIGZpbGVzCit0aGlzIGlzIHRvIGF2b2lkIGJy
ZWFraW5nIGV4aXN0aW5nIG1ha2UgYW5kIGF1dG8gbWFrZSBzdXBwb3J0CitidXQgc3RpbGwgaGF2
ZSB0aGUgb3B0aW9uIHRvIHVzZSBDTWFrZSB3aXRoIG9ubHkgbGlzdHMgYXQgb25lIHBsYWNlXV0K
KworY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMSkKKworZnVuY3Rpb24oZ2V0X2xp
YnJhcnlfdmVyc2lvbiBPUFVTX0xJQlJBUllfVkVSU0lPTiBPUFVTX0xJQlJBUllfVkVSU0lPTl9N
QUpPUikKKyAgZmlsZShTVFJJTkdTIGNvbmZpZ3VyZS5hYyBvcHVzX2x0X2N1cnJlbnRfc3RyaW5n
CisgICAgICAgTElNSVRfQ09VTlQgMQorICAgICAgIFJFR0VYICJPUFVTX0xUX0NVUlJFTlQ9IikK
KyAgc3RyaW5nKFJFR0VYIE1BVENICisgICAgICAgICAgICAgICAiT1BVU19MVF9DVVJSRU5UPShb
MC05XSopIgorICAgICAgICAgICAgICAgXworICAgICAgICAgICAgICAgJHtvcHVzX2x0X2N1cnJl
bnRfc3RyaW5nfSkKKyAgc2V0KE9QVVNfTFRfQ1VSUkVOVCAke0NNQUtFX01BVENIXzF9KQorCisg
IGZpbGUoU1RSSU5HUyBjb25maWd1cmUuYWMgb3B1c19sdF9yZXZpc2lvbl9zdHJpbmcKKyAgICAg
ICBMSU1JVF9DT1VOVCAxCisgICAgICAgUkVHRVggIk9QVVNfTFRfUkVWSVNJT049IikKKyAgc3Ry
aW5nKFJFR0VYIE1BVENICisgICAgICAgICAgICAgICAiT1BVU19MVF9SRVZJU0lPTj0oWzAtOV0q
KSIKKyAgICAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICR7b3B1c19sdF9yZXZpc2lvbl9z
dHJpbmd9KQorICBzZXQoT1BVU19MVF9SRVZJU0lPTiAke0NNQUtFX01BVENIXzF9KQorCisgIGZp
bGUoU1RSSU5HUyBjb25maWd1cmUuYWMgb3B1c19sdF9hZ2Vfc3RyaW5nCisgICAgICAgTElNSVRf
Q09VTlQgMQorICAgICAgIFJFR0VYICJPUFVTX0xUX0FHRT0iKQorICBzdHJpbmcoUkVHRVggTUFU
Q0gKKyAgICAgICAgICAgICAgICJPUFVTX0xUX0FHRT0oWzAtOV0qKSIKKyAgICAgICAgICAgICAg
IF8KKyAgICAgICAgICAgICAgICR7b3B1c19sdF9hZ2Vfc3RyaW5nfSkKKyAgc2V0KE9QVVNfTFRf
QUdFICR7Q01BS0VfTUFUQ0hfMX0pCisKKyAgbWF0aChFWFBSIE9QVVNfTElCUkFSWV9WRVJTSU9O
X01BSk9SICIke09QVVNfTFRfQ1VSUkVOVH0gLSAke09QVVNfTFRfQUdFfSIpCisgIHNldChPUFVT
X0xJQlJBUllfVkVSU0lPTl9NSU5PUiAke09QVVNfTFRfQUdFfSkKKyAgc2V0KE9QVVNfTElCUkFS
WV9WRVJTSU9OX1BBVENIICR7T1BVU19MVF9SRVZJU0lPTn0pCisgIHNldCgKKyAgICBPUFVTX0xJ
QlJBUllfVkVSU0lPTgorICAgICIke09QVVNfTElCUkFSWV9WRVJTSU9OX01BSk9SfS4ke09QVVNf
TElCUkFSWV9WRVJTSU9OX01JTk9SfS4ke09QVVNfTElCUkFSWV9WRVJTSU9OX1BBVENIfSIKKyAg
ICBQQVJFTlRfU0NPUEUpCisgIHNldChPUFVTX0xJQlJBUllfVkVSU0lPTl9NQUpPUiAke09QVVNf
TElCUkFSWV9WRVJTSU9OX01BSk9SfSBQQVJFTlRfU0NPUEUpCitlbmRmdW5jdGlvbigpCisKK2Z1
bmN0aW9uKGdldF9wYWNrYWdlX3ZlcnNpb24gUEFDS0FHRV9WRVJTSU9OKQorICBmaW5kX3BhY2th
Z2UoR2l0KQorICBpZihHSVRfRk9VTkQpCisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtH
SVRfRVhFQ1VUQUJMRX0gZGVzY3JpYmUgLS10YWdzIC0tbWF0Y2ggInYqIgorICAgICAgICAgICAg
ICAgICAgICBPVVRQVVRfVkFSSUFCTEUgT1BVU19QQUNLQUdFX1ZFUlNJT04pCisgICAgaWYoT1BV
U19QQUNLQUdFX1ZFUlNJT04pCisgICAgICBzdHJpbmcoU1RSSVAgJHtPUFVTX1BBQ0tBR0VfVkVS
U0lPTn0sIE9QVVNfUEFDS0FHRV9WRVJTSU9OKQorICAgICAgc3RyaW5nKFJFUExBQ0UgXG4KKyAg
ICAgICAgICAgICAgICAgICAgICIiCisgICAgICAgICAgICAgICAgICAgICBPUFVTX1BBQ0tBR0Vf
VkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAgJHtPUFVTX1BBQ0tBR0VfVkVSU0lPTn0pCisg
ICAgICBzdHJpbmcoUkVQTEFDRSAsCisgICAgICAgICAgICAgICAgICAgICAiIgorICAgICAgICAg
ICAgICAgICAgICAgT1BVU19QQUNLQUdFX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAgICR7
T1BVU19QQUNLQUdFX1ZFUlNJT059KQorCisgICAgICBzdHJpbmcoU1VCU1RSSU5HICR7T1BVU19Q
QUNLQUdFX1ZFUlNJT059CisgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAg
ICAgICAgICAgLTEKKyAgICAgICAgICAgICAgICAgICAgICAgT1BVU19QQUNLQUdFX1ZFUlNJT04p
CisgICAgICBzZXQoUEFDS0FHRV9WRVJTSU9OICR7T1BVU19QQUNLQUdFX1ZFUlNJT059IFBBUkVO
VF9TQ09QRSkKKyAgICAgIHJldHVybigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCisKKyAgaWYo
RVhJU1RTICIke0NNQUtFX1NPVVJDRV9ESVJ9L3BhY2thZ2VfdmVyc2lvbiIpCisgICAgIyBOb3Qg
YSBnaXQgcmVwbywgbGV0cycgdHJ5IHRvIHBhcnNlIGl0IGZyb20gcGFja2FnZV92ZXJzaW9uIGZp
bGUgaWYgZXhpc3RzCisgICAgZmlsZShTVFJJTkdTIHBhY2thZ2VfdmVyc2lvbiBvcHVzX3BhY2th
Z2VfdmVyc2lvbl9zdHJpbmcKKyAgICAgICAgIExJTUlUX0NPVU5UIDEKKyAgICAgICAgIFJFR0VY
ICJQQUNLQUdFX1ZFUlNJT049IikKKyAgICBzdHJpbmcoUkVQTEFDRSAiUEFDS0FHRV9WRVJTSU9O
PSIKKyAgICAgICAgICAgICAgICAgICAiIgorICAgICAgICAgICAgICAgICAgIG9wdXNfcGFja2Fn
ZV92ZXJzaW9uX3N0cmluZworICAgICAgICAgICAgICAgICAgICR7b3B1c19wYWNrYWdlX3ZlcnNp
b25fc3RyaW5nfSkKKyAgICBzdHJpbmcoUkVQTEFDRSAiXCIiCisgICAgICAgICAgICAgICAgICAg
IiIKKyAgICAgICAgICAgICAgICAgICBvcHVzX3BhY2thZ2VfdmVyc2lvbl9zdHJpbmcKKyAgICAg
ICAgICAgICAgICAgICAke29wdXNfcGFja2FnZV92ZXJzaW9uX3N0cmluZ30pCisgICAgc2V0KFBB
Q0tBR0VfVkVSU0lPTiAke29wdXNfcGFja2FnZV92ZXJzaW9uX3N0cmluZ30gUEFSRU5UX1NDT1BF
KQorICAgIHJldHVybigpCisgIGVuZGlmKCkKKworICAjIGlmIGFsbCBlbHNlIGZhaWxzIHNldCB0
byAwCisgIHNldChQQUNLQUdFX1ZFUlNJT04gMCBQQVJFTlRfU0NPUEUpCitlbmRmdW5jdGlvbigp
CisKK2Z1bmN0aW9uKGNoZWNrX2FuZF9zZXRfZmxhZyBOQU1FIEZMQUcpCisgIGluY2x1ZGUoQ2hl
Y2tDQ29tcGlsZXJGbGFnKQorICBjaGVja19jX2NvbXBpbGVyX2ZsYWcoJHtGTEFHfSAke05BTUV9
X1NVUFBPUlRFRCkKKyAgaWYoJHtOQU1FfV9TVVBQT1JURUQpCisgICAgYWRkX2RlZmluaXRpb25z
KCR7RkxBR30pCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKKworZnVuY3Rpb24oY2hlY2tfZmxh
ZyBOQU1FIEZMQUcpCisgIGluY2x1ZGUoQ2hlY2tDQ29tcGlsZXJGbGFnKQorICBjaGVja19jX2Nv
bXBpbGVyX2ZsYWcoJHtGTEFHfSAke05BTUV9X1NVUFBPUlRFRCkKK2VuZGZ1bmN0aW9uKCkKKwor
aW5jbHVkZShDaGVja0luY2x1ZGVGaWxlKQorIyBmdW5jdGlvbiB0byBjaGVjayBpZiBjb21waWxl
ciBzdXBwb3J0cyBTU0UsIFNTRTIsIFNTRTQuMSBhbmQgQVZYIGlmIHRhcmdldAorIyBzeXN0ZW1z
IG1heSBub3QgaGF2ZSBTU0Ugc3VwcG9ydCB0aGVuIHVzZSBPUFVTX01BWV9IQVZFX1NTRSBvcHRp
b24gaWYgdGFyZ2V0CisjIHN5c3RlbSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgU1NFIHN1cHBvcnQg
dGhlbiBPUFVTX1BSRVNVTUVfU1NFIGNhbiBiZSB1c2VkIHRvCisjIHNraXAgU1NFIHJ1bnRpbWUg
Y2hlY2sKK2Z1bmN0aW9uKG9wdXNfZGV0ZWN0X3NzZSBDT01QSUxFUl9TVVBQT1JUX1NJTUQpCisg
IG1lc3NhZ2UoU1RBVFVTICJDaGVjayBTSU1EIHN1cHBvcnQgYnkgY29tcGlsZXIiKQorICBjaGVj
a19pbmNsdWRlX2ZpbGUoeG1taW50cmluLmggSEFWRV9YTU1JTlRSSU5fSCkgIyBTU0UxCisgIGlm
KEhBVkVfWE1NSU5UUklOX0gpCisgICAgaWYoTVNWQykKKyAgICAgICMgZGlmZmVyZW50IGFyY2gg
b3B0aW9ucyBmb3IgMzIgYW5kIDY0IGJpdCB0YXJnZXQgZm9yIE1TVkMKKyAgICAgIGlmKENNQUtF
X1NJWkVPRl9WT0lEX1AgRVFVQUwgNCkKKyAgICAgICAgY2hlY2tfZmxhZyhTU0UxIC9hcmNoOlNT
RSkKKyAgICAgIGVsc2UoKQorICAgICAgICBzZXQoU1NFMV9TVVBQT1JURUQgMSBQQVJFTlRfU0NP
UEUpCisgICAgICBlbmRpZigpCisgICAgZWxzZSgpCisgICAgICBjaGVja19hbmRfc2V0X2ZsYWco
U1NFMSAtbXNzZSkKKyAgICBlbmRpZigpCisgIGVsc2UoKQorICAgIHNldChTU0UxX1NVUFBPUlRF
RCAwIFBBUkVOVF9TQ09QRSkKKyAgZW5kaWYoKQorCisgIGNoZWNrX2luY2x1ZGVfZmlsZShlbW1p
bnRyaW4uaCBIQVZFX0VNTUlOVFJJTl9IKSAjIFNTRTIKKyAgaWYoSEFWRV9FTU1JTlRSSU5fSCkK
KyAgICBpZihNU1ZDKQorICAgICAgaWYoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQorICAg
ICAgICBjaGVja19mbGFnKFNTRTIgL2FyY2g6U1NFMikKKyAgICAgIGVsc2UoKQorICAgICAgICBz
ZXQoU1NFMl9TVVBQT1JURUQgMSBQQVJFTlRfU0NPUEUpCisgICAgICBlbmRpZigpCisgICAgZWxz
ZSgpCisgICAgICBjaGVja19hbmRfc2V0X2ZsYWcoU1NFMiAtbXNzZTIpCisgICAgZW5kaWYoKQor
ICBlbHNlKCkKKyAgICBzZXQoU1NFMl9TVVBQT1JURUQgMCBQQVJFTlRfU0NPUEUpCisgIGVuZGlm
KCkKKworICBjaGVja19pbmNsdWRlX2ZpbGUoc21taW50cmluLmggSEFWRV9TTU1JTlRSSU5fSCkg
IyBTU0U0LjEKKyAgaWYoSEFWRV9TTU1JTlRSSU5fSCkKKyAgICBpZihNU1ZDKQorICAgICAgaWYo
Q01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQorICAgICAgICBjaGVja19mbGFnKFNTRTRfMSAv
YXJjaDpTU0UyKSAjIFNTRTIgYW5kIGFib3ZlCisgICAgICBlbHNlKCkKKyAgICAgICAgc2V0KFNT
RTRfMV9TVVBQT1JURUQgMSBQQVJFTlRfU0NPUEUpCisgICAgICBlbmRpZigpCisgICAgZWxzZSgp
CisgICAgICBjaGVja19hbmRfc2V0X2ZsYWcoU1NFNF8xIC1tc3NlNC4xKQorICAgIGVuZGlmKCkK
KyAgZWxzZSgpCisgICAgc2V0KFNTRTRfMV9TVVBQT1JURUQgMCBQQVJFTlRfU0NPUEUpCisgIGVu
ZGlmKCkKKworICBjaGVja19pbmNsdWRlX2ZpbGUoaW1taW50cmluLmggSEFWRV9JTU1JTlRSSU5f
SCkgIyBBVlgKKyAgaWYoSEFWRV9JTU1JTlRSSU5fSCkKKyAgICBpZihNU1ZDKQorICAgICAgY2hl
Y2tfZmxhZyhBVlggL2FyY2g6QVZYKQorICAgIGVsc2UoKQorICAgICAgY2hlY2tfYW5kX3NldF9m
bGFnKEFWWCAtbWF2eCkKKyAgICBlbmRpZigpCisgIGVsc2UoKQorICAgIHNldChBVlhfU1VQUE9S
VEVEIDAgUEFSRU5UX1NDT1BFKQorICBlbmRpZigpCisKKyAgaWYoTVNWQykgIyBUbyBhdm9pZCB3
YXJuaW5nIEQ5MDI1IG9mIG92ZXJyaWRpbmcgY29tcGlsZXIgb3B0aW9ucworICAgIGlmKEFWWF9T
VVBQT1JURUQpICMgb24gNjQgYml0IGFuZCAzMiBiaXRzCisgICAgICBhZGRfZGVmaW5pdGlvbnMo
L2FyY2g6QVZYKQorICAgIGVsc2VpZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpICMgaWYg
QVZYIG5vdCBzdXBwb3J0ZWQgdGhlbiBzZXQgU1NFIGZsYWcKKyAgICAgIGlmKFNTRTRfMV9TVVBQ
T1JURUQgT1IgU1NFMl9TVVBQT1JURUQpCisgICAgICAgIGFkZF9kZWZpbml0aW9ucygvYXJjaDpT
U0UyKQorICAgICAgZWxzZWlmKFNTRTFfU1VQUE9SVEVEKQorICAgICAgICBhZGRfZGVmaW5pdGlv
bnMoL2FyY2g6U1NFKQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorCisg
IGlmKFNTRTFfU1VQUE9SVEVEIE9SIFNTRTJfU1VQUE9SVEVEIE9SIFNTRTRfMV9TVVBQT1JURUQg
T1IgQVZYX1NVUFBPUlRFRCkKKyAgICBzZXQoQ09NUElMRVJfU1VQUE9SVF9TSU1EIDEgUEFSRU5U
X1NDT1BFKQorICBlbHNlKCkKKyAgICBtZXNzYWdlKFNUQVRVUyAiTm8gU0lNRCBzdXBwb3J0IGlu
IGNvbXBpbGVyIikKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihvcHVzX2Rl
dGVjdF9uZW9uIENPTVBJTEVSX1NVUFBPUlRfTkVPTikKKyAgaWYoQ01BS0VfU1lTVEVNX1BST0NF
U1NPUiBNQVRDSEVTICIoYXJtdjctYXxhYXJjaDY0KSIpCisgICAgbWVzc2FnZShTVEFUVVMgIkNo
ZWNrIE5FT04gc3VwcG9ydCBieSBjb21waWxlciIpCisgICAgY2hlY2tfaW5jbHVkZV9maWxlKGFy
bV9uZW9uLmggSEFWRV9BUk1fTkVPTl9IKQorICAgIGlmKEhBVkVfQVJNX05FT05fSCkKKyAgICAg
IHNldChDT01QSUxFUl9TVVBQT1JUX05FT04gJHtIQVZFX0FSTV9ORU9OX0h9IFBBUkVOVF9TQ09Q
RSkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKKworZnVuY3Rpb24ob3B1
c19zdXBwb3J0c19jcHVfZGV0ZWN0aW9uIFJVTlRJTUVfQ1BVX0NBUEFCSUxJVFlfREVURUNUSU9O
KQorICBpZihNU1ZDKQorICAgIGNoZWNrX2luY2x1ZGVfZmlsZShpbnRyaW4uaCBIQVZFX0lOVFJJ
Tl9IKQorICBlbHNlKCkKKyAgICBjaGVja19pbmNsdWRlX2ZpbGUoY3B1aWQuaCBIQVZFX0NQVUlE
X0gpCisgIGVuZGlmKCkKKyAgaWYoSEFWRV9JTlRSSU5fSCBPUiBIQVZFX0NQVUlEX0gpCisgICAg
c2V0KFJVTlRJTUVfQ1BVX0NBUEFCSUxJVFlfREVURUNUSU9OIDEgUEFSRU5UX1NDT1BFKQorICBl
bHNlKCkKKyAgICBzZXQoUlVOVElNRV9DUFVfQ0FQQUJJTElUWV9ERVRFQ1RJT04gMCBQQVJFTlRf
U0NPUEUpCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKKworZnVuY3Rpb24oYWRkX3NvdXJjZXNf
Z3JvdXAgdGFyZ2V0IGdyb3VwKQorICB0YXJnZXRfc291cmNlcygke3RhcmdldH0gUFJJVkFURSAk
e0FSR059KQorICBzb3VyY2VfZ3JvdXAoJHtncm91cH0gRklMRVMgJHtBUkdOfSkKK2VuZGZ1bmN0
aW9uKCkKKworZnVuY3Rpb24oZ2V0X29wdXNfc291cmNlcyBTT1VSQ0VfR1JPVVAgTUFLRV9GSUxF
IFNPVVJDRVMpCisgICMgcmVhZCBmaWxlLCBlYWNoIGl0ZW0gaW4gbGlzdCBpcyBvbmUgZ3JvdXAK
KyAgZmlsZShTVFJJTkdTICR7TUFLRV9GSUxFfSBvcHVzX3NvdXJjZXMpCisKKyAgIyBhZGQgd2ls
ZGNhcmQgZm9yIHJlZ2V4IG1hdGNoCisgIHN0cmluZyhDT05DQVQgU09VUkNFX0dST1VQICR7U09V
UkNFX0dST1VQfSAiLiokIikKKworICAjIGZpbmQgZ3JvdXAKKyAgZm9yZWFjaCh2YWwgSU4gTElT
VFMgb3B1c19zb3VyY2VzKQorICAgIGlmKHZhbCBNQVRDSEVTICR7U09VUkNFX0dST1VQfSkKKyAg
ICAgIGxpc3QoTEVOR1RIIHZhbCBsaXN0X2xlbmd0aCkKKyAgICAgIGlmKCR7bGlzdF9sZW5ndGh9
IEVRVUFMIDEpCisgICAgICAgICMgZm9yIHRlc3RzIHNwbGl0IGJ5ICc9JyBhbmQgY2xlYW4gdXAg
dGhlIHJlc3QgaW50byBhIGxpc3QKKyAgICAgICAgc3RyaW5nKEZJTkQgJHt2YWx9ICI9IiBpbmRl
eCkKKyAgICAgICAgbWF0aChFWFBSIGluZGV4ICIke2luZGV4fSArIDEiKQorICAgICAgICBzdHJp
bmcoU1VCU1RSSU5HICR7dmFsfQorICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5kZXh9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgLTEKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VzKQorICAgICAgICBzdHJpbmcoUkVQTEFDRSAiICIKKyAgICAgICAgICAgICAgICAgICAgICAg
IjsiCisgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMKKyAgICAgICAgICAgICAgICAgICAg
ICAgJHtzb3VyY2VzfSkKKyAgICAgIGVsc2UoKQorICAgICAgICAjIGRpc2NhcmQgdGhlIGdyb3Vw
CisgICAgICAgIGxpc3QoUkVNT1ZFX0FUIHZhbCAwKQorICAgICAgICBzZXQoc291cmNlcyAke3Zh
bH0pCisgICAgICBlbmRpZigpCisgICAgICBicmVhaygpCisgICAgZW5kaWYoKQorICBlbmRmb3Jl
YWNoKCkKKworICBsaXN0KExFTkdUSCBzb3VyY2VzIGxpc3RfbGVuZ3RoKQorICBpZigke2xpc3Rf
bGVuZ3RofSBMRVNTIDEpCisgICAgbWVzc2FnZSgKKyAgICAgIEZBVEFMX0VSUk9SCisgICAgICAg
ICJObyBmaWxlcyBwYXJzZWQgc3VjY2VzZnVsbHkgZnJvbSAke1NPVVJDRV9HUk9VUH0gaW4gJHtN
QUtFX0ZJTEV9IikKKyAgZW5kaWYoKQorCisgICMgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2Vz
CisgIHNldChsaXN0X3ZhciAiIikKKyAgZm9yZWFjaChzb3VyY2UgJHtzb3VyY2VzfSkKKyAgICBz
dHJpbmcoU1RSSVAgIiR7c291cmNlfSIgc291cmNlKQorICAgIGxpc3QoQVBQRU5EIGxpc3RfdmFy
ICIke3NvdXJjZX0iKQorICBlbmRmb3JlYWNoKCkKKworICBzZXQoJHtTT1VSQ0VTfSAke2xpc3Rf
dmFyfSBQQVJFTlRfU0NPUEUpCitlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXNfc291cmNl
cy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvb3B1c19zb3VyY2VzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNTU0M2FmMzY0MWRiMDBm
MDEwNDM5ZDU1MzI0YTdhYjM3ODI0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXNfc291cmNlcy5j
bWFrZQpAQCAtMCwwICsxLDM4IEBACitpbmNsdWRlKG9wdXNfZnVuY3Rpb25zLmNtYWtlKQorCitn
ZXRfb3B1c19zb3VyY2VzKFNJTEtfU09VUkNFUyBzaWxrX3NvdXJjZXMubWsgc2lsa19zb3VyY2Vz
KQorZ2V0X29wdXNfc291cmNlcyhTSUxLX1NPVVJDRVNfRkxPQVQgc2lsa19zb3VyY2VzLm1rIHNp
bGtfc291cmNlc19mbG9hdCkKK2dldF9vcHVzX3NvdXJjZXMoU0lMS19TT1VSQ0VTX0ZJWEVEIHNp
bGtfc291cmNlcy5tayBzaWxrX3NvdXJjZXNfZml4ZWQpCitnZXRfb3B1c19zb3VyY2VzKFNJTEtf
U09VUkNFU19TU0U0XzEgc2lsa19zb3VyY2VzLm1rIHNpbGtfc291cmNlc19zc2U0XzEpCitnZXRf
b3B1c19zb3VyY2VzKFNJTEtfU09VUkNFU19GSVhFRF9TU0U0XzEgc2lsa19zb3VyY2VzLm1rCisg
ICAgICAgICAgICAgICAgIHNpbGtfc291cmNlc19maXhlZF9zc2U0XzEpCitnZXRfb3B1c19zb3Vy
Y2VzKFNJTEtfU09VUkNFU19BUk1fTkVPTl9JTlRSIHNpbGtfc291cmNlcy5taworICAgICAgICAg
ICAgICAgICBzaWxrX3NvdXJjZXNfYXJtX25lb25faW50cikKK2dldF9vcHVzX3NvdXJjZXMoU0lM
S19TT1VSQ0VTX0ZJWEVEX0FSTV9ORU9OX0lOVFIgc2lsa19zb3VyY2VzLm1rCisgICAgICAgICAg
ICAgICAgIHNpbGtfc291cmNlc19maXhlZF9hcm1fbmVvbl9pbnRyKQorCitnZXRfb3B1c19zb3Vy
Y2VzKE9QVVNfU09VUkNFUyBvcHVzX3NvdXJjZXMubWsgb3B1c19zb3VyY2VzKQorZ2V0X29wdXNf
c291cmNlcyhPUFVTX1NPVVJDRVNfRkxPQVQgb3B1c19zb3VyY2VzLm1rIG9wdXNfc291cmNlc19m
bG9hdCkKKworZ2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVMgY2VsdF9zb3VyY2VzLm1rIGNl
bHRfc291cmNlcykKK2dldF9vcHVzX3NvdXJjZXMoQ0VMVF9TT1VSQ0VTX1NTRSBjZWx0X3NvdXJj
ZXMubWsgY2VsdF9zb3VyY2VzX3NzZSkKK2dldF9vcHVzX3NvdXJjZXMoQ0VMVF9TT1VSQ0VTX1NT
RTIgY2VsdF9zb3VyY2VzLm1rIGNlbHRfc291cmNlc19zc2UyKQorZ2V0X29wdXNfc291cmNlcyhD
RUxUX1NPVVJDRVNfU1NFNF8xIGNlbHRfc291cmNlcy5tayBjZWx0X3NvdXJjZXNfc3NlNF8xKQor
Z2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVNfQVJNIGNlbHRfc291cmNlcy5tayBjZWx0X3Nv
dXJjZXNfYXJtKQorZ2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVNfQVJNX0FTTSBjZWx0X3Nv
dXJjZXMubWsgY2VsdF9zb3VyY2VzX2FybV9hc20pCitnZXRfb3B1c19zb3VyY2VzKENFTFRfQU1f
U09VUkNFU19BUk1fQVNNIGNlbHRfc291cmNlcy5taworICAgICAgICAgICAgICAgICBjZWx0X2Ft
X3NvdXJjZXNfYXJtX2FzbSkKK2dldF9vcHVzX3NvdXJjZXMoQ0VMVF9TT1VSQ0VTX0FSTV9ORU9O
X0lOVFIgY2VsdF9zb3VyY2VzLm1rCisgICAgICAgICAgICAgICAgIGNlbHRfc291cmNlc19hcm1f
bmVvbl9pbnRyKQorZ2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVNfQVJNX05FMTAgY2VsdF9z
b3VyY2VzLm1rIGNlbHRfc291cmNlc19hcm1fbmUxMCkKKworZ2V0X29wdXNfc291cmNlcyhvcHVz
X2RlbW9fU09VUkNFUyBNYWtlZmlsZS5hbSBvcHVzX2RlbW9fc291cmNlcykKK2dldF9vcHVzX3Nv
dXJjZXMob3B1c19jdXN0b21fZGVtb19TT1VSQ0VTIE1ha2VmaWxlLmFtIG9wdXNfY3VzdG9tX2Rl
bW9fc291cmNlcykKK2dldF9vcHVzX3NvdXJjZXMob3B1c19jb21wYXJlX1NPVVJDRVMgTWFrZWZp
bGUuYW0gb3B1c19jb21wYXJlX3NvdXJjZXMpCitnZXRfb3B1c19zb3VyY2VzKHRlc3RzX3Rlc3Rf
b3B1c19hcGlfU09VUkNFUyBNYWtlZmlsZS5hbSB0ZXN0X29wdXNfYXBpX3NvdXJjZXMpCitnZXRf
b3B1c19zb3VyY2VzKHRlc3RzX3Rlc3Rfb3B1c19lbmNvZGVfU09VUkNFUyBNYWtlZmlsZS5hbQor
ICAgICAgICAgICAgICAgICB0ZXN0X29wdXNfZW5jb2RlX3NvdXJjZXMpCitnZXRfb3B1c19zb3Vy
Y2VzKHRlc3RzX3Rlc3Rfb3B1c19kZWNvZGVfU09VUkNFUyBNYWtlZmlsZS5hbQorICAgICAgICAg
ICAgICAgICB0ZXN0X29wdXNfZGVjb2RlX3NvdXJjZXMpCitnZXRfb3B1c19zb3VyY2VzKHRlc3Rz
X3Rlc3Rfb3B1c19wYWRkaW5nX1NPVVJDRVMgTWFrZWZpbGUuYW0KKyAgICAgICAgICAgICAgICAg
dGVzdF9vcHVzX3BhZGRpbmdfc291cmNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvcmVsZWFzZXMuc2hhMiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvcmVs
ZWFzZXMuc2hhMgppbmRleCBiMWIzMmMwMDU1MThmZmQ0NGFkNTA1OTcyMjVmNzhkMzliNTU2ZWI5
Li4zMzQ5NzZiMTQ1NTUzNzNmMGQxNWI3YTBmNTc4MmVhOGZiN2E2YWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Jl
bGVhc2VzLnNoYTIKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9yZWxlYXNlcy5zaGEyCkBAIC0zNiw4ICszNiwxNCBAQCBjMGU5MDUw
NzI1OWNmMjFjZTdiMmM4MmZiOWFjNTUzNjdkODU0M2RhZTkxY2MzZDRkMmM1OWFmZDM3ZjQ0MDIz
ICBvcHVzLTEuMi1hbHBoYQogODUzNDNmZGFlZDk2NTI5ZDk0YzFlMWYzYTIxMGZhNTEyNDBkMDRj
YTYyZmEwMWU5N2VmMDJmODgwMjBjMmNlOSAgb3B1cy0xLjItcmMxLnRhci5negogNzdkYjQ1YTg3
YjUxNTc4ZmJjNDk1NTVlZjFiMTA5MjYxNzk4NjFkODU0ZWIyNjEzMjA3ZGM3OWQ5ZWMwYTlhOSAg
b3B1cy0xLjIudGFyLmd6CiBjZmFmZDMzOWNjZDljNWVmOGQ2YWIxNWQ3ZTFhNDEyYzA1NGJmNGNi
NGVjYmJiY2M3OGMxMmVmMmRlZjcwNzMyICBvcHVzLTEuMi4xLnRhci5negorN2Y1NmUwNThjOTU0
OWQwM2FlMzU1MTFhZDllMTZlZjZkMWViMjU3ODM2ODMwZDU0YWJmZjBmNDk1ZjE3ZTE4NyAgb3B1
cy0xLjMtYmV0YS50YXIuZ3oKKzk2ZmEyODU5OGU4Y2NkNTU4YjI5NzI3N2FkNTlhMDQ1YzU1MWJh
MGUwNmQ2NWE5Njc1OTM4ZTA4NGY4Mzc2NjkgIG9wdXMtMS4zLXJjLnRhci5negorZjZiYWIzMjFm
YjgxZGI5ODQ3NjZmMWU0ZDM0MGE5ZTcxYTVjYTJjNWQ0ZDUzZjRlZTA3MmU4NGFmZGEyNzFjYSAg
b3B1cy0xLjMtcmMyLnRhci5negorNGYzZDY5YWVmZGYyZGJhZjk4MjU0MDhlNDUyYThhNDE0ZmZj
NjA0OTRjNzA2MzM1NjA3MDAzOTg4MjBkYzU1MCAgb3B1cy0xLjMudGFyLmd6Cis2NWI1OGUxZTI1
YjJhMTE0MTU3MDE0NzM2YTNkOWRmZWFhZDhkNDFiZTFjODE3OTg2NmYxNDRhMmZiNDRmZjlkICBv
cHVzLTEuMy4xLnRhci5negogOTRhYzc4Y2E0Zjc0YzRlNDNiYzlmZTRlYzFhZDBhYTM2ZjM4YWI5
MGY0NWIwNzI3YzQwZGQxZTk2MDk2ZTc2NyAgb3B1c190ZXN0dmVjdG9ycy1kcmFmdDExLnRhci5n
egogOTRhYzc4Y2E0Zjc0YzRlNDNiYzlmZTRlYzFhZDBhYTM2ZjM4YWI5MGY0NWIwNzI3YzQwZGQx
ZTk2MDk2ZTc2NyAgb3B1c190ZXN0dmVjdG9ycy50YXIuZ3oKKzZiMjZhMjJmOWJhODdiMmI4MzY5
MDZhOWJiN2FmZWM1ZjhlNTRkNDk1NTNiMTIwMDM4MjUyMGVlNmZlZGZhNTUgIG9wdXNfdGVzdHZl
Y3RvcnMtcmZjODI1MS50YXIuZ3oKIDVkMmI5OTc1N2JjYjYyOGJhYjI2MTFmM2VkMjdhZjZmMzUy
NzZjZTNhYmM5NmMwZWQ0Mzk5ZDZjNjQ2M2RkYTUgIG9wdXMtdG9vbHMtMC4xLjIudGFyLmd6CiAw
MDgzMTcyOTdkNmNlODRmODQ5OTJhYmY4Y2M5NDhhMDQ4YTRmYTEzNWUxZDFjYWY0MjlmYWZkZTg5
NjVhNzkyICBvcHVzLXRvb2xzLTAuMS4zLnRhci5negogZGU4MDQ4NWM1YWZhMWZkODNjMGUxNmEw
ZGQ0ODYwNDcwYzg3Mjk5N2E3ZGQwYTU4ZTk5YjJlZThhOTNlNTE2OCAgb3B1cy10b29scy0wLjEu
NC50YXIuZ3oKQEAgLTQ3LDcgKzUzLDExIEBAIGUwZjA4ZDMwMTU1NWRmZmM0MTc2MDQyNjliNWE4
NWQyYmQxOTdmMjU5YzdkNmM5NTdmMzcwZmZkMzNkNmQ5Y2QgIG9wdXMtdG9vbHMtMC4xCiBlNGUx
ODg1NzllYTFjNGU0ZDUwNjY0NjBkNGE3MjE0YTdlYWZlMzUzOWU5YTQ0NjZmZGM5OGFmNDFiYTRh
MmY2ICBvcHVzLXRvb2xzLTAuMS44LnRhci5negogYjE4NzNkZDc4YzdmYmM5OGNmNjVkNmUxMGNm
ZGRiNWMyYzAzYjNhZjkzZjkyMjEzOWEyMTA0YmFlZGI0NjQzYSAgb3B1cy10b29scy0wLjEuOS50
YXIuZ3oKIGEyMzU3NTMyZDE5NDcxYjcwNjY2ZTBlMGVjMTdkNTE0MjQ2ZDhiM2NiMmViMTY4ZjY4
YmIwZjZmZDM3MmIyOGMgIG9wdXMtdG9vbHMtMC4xLjEwLnRhci5negorYjRlNTZjYjAwZDNlNTA5
YWNmYmE5YTliNjI3ZmZkODI3M2I4NzZiNGUyNDA4NjQyMjU5ZjZkYTI4ZmEwZmY4NiAgb3B1cy10
b29scy0wLjIudGFyLmd6CiBiZDZkMTRlODg5N2EyZjgwMDY1ZWYzNGE1MTZjNzBlNzRmOGUwMDA2
MGFiZGJjMjM4ZTc5ZTVmOTliY2EzZTk2ICBsaWJvcHVzZW5jLTAuMS50YXIuZ3oKKzAyZTZlMGIx
NGNiYmUwNTY5ZDk0OGE0NjQyMGY5YzlhODFkOTNiYmEzMmRjNTc2YTQwMDdjYmY5NmRhNjhlZjMg
IGxpYm9wdXNlbmMtMC4xLjEudGFyLmd6CitjNzllOTVlZWVlNDNhMGI5NjVlOWIyYzU5YTI0Mzc2
M2E4ZjhiMGE3ZTcxNDQxZGYyYWE5MDg0ZjYxNzFjNzNhICBsaWJvcHVzZW5jLTAuMi50YXIuZ3oK
KzgyOThkYjYxYThkM2Q2M2U0MWMxYTgwNzA1YmFhOGNlOWZmM2Y1MDQ1MmVhN2VjMWMxOWE1NjRm
ZTEwNmNiYjkgIGxpYm9wdXNlbmMtMC4yLjEudGFyLmd6CiA4MDcxYjk2ODQ3NWMxYTE3ZjU0YjY4
NDBkNmRlOWQ5ZWUyMGY5MzBlODI3YjA0MDFhYmUzYzRjZjRmM2JmMzBhICBvcHVzZmlsZS0wLjEu
dGFyLmd6CiBiNGE2NzhiM2I2YzRhZGZiNmFmZjFmNjdlZjY1OGJlY2ZlMTQ2ZWE3YzdmZjIyOGU5
OTU0Mzc2MjE3MTU1N2Y5ICBvcHVzZmlsZS0wLjIudGFyLmd6CiA0MjQ4OTI3ZjJjNGUzMTZlYTVi
ODRmYjAyYmQxMDBiZmVjOGZhNDYyNGE2OTEwZDc3ZjBhZjdmMGM2Y2I4YmFhICBvcHVzZmlsZS0w
LjMudGFyLmd6CkBAIC02MSwzICs3MSw5IEBAIGI5NDBkNjJiZWIxNWI1OTc0NzY0NTc0YjlmMjY1
NDgxZmU1YjZlZTE2OTAyZmI3MDU3Mjc1NDZjYWY5NTYyNjEgIG9wdXNmaWxlLTAuNS56CiAzNDY5
NjdkNzk4OWJiODNiMDU5NDk0ODNiNzZiZDBmNjlhMTJjNTliZDhiNDQ1N2U4NjQ5MDJiNTJiYjBh
YzM0ICBvcHVzZmlsZS0wLjcuemlwCiAyYzIzMWVkM2NmYWExYjMxNzNmNTJkNzQwZTViYmQ3N2Q1
MWI5ZGZlY2I4NzAxNGI0MDQ5MTdmYmE0Yjg1NWE0ICBvcHVzZmlsZS0wLjgudGFyLmd6CiA4OWRm
ZjQzNDJjM2I3ODk1NzRjYmVhNWM1N2YxMWI5NmQ0ZWJlNGQyOGFiOTAyNDhjMTc4M2VhNTY5YjFl
OWUzICBvcHVzZmlsZS0wLjguemlwCitmNzVmYjUwMGU0MGIxMjI3NzVhYzFhNzFhZDgwYzQ0Nzc2
OTg4NDJhOGZlOWRhNGExYjRhMWE5ZjE2ZTRlOTc5ICBvcHVzZmlsZS0wLjkudGFyLmd6CitlOTU5
MWRhNGQ0YzllODU3NDM2YzJkNDZhMjhhOWU0NzBmYTUzNTVlYTVhNzZkNGQ1ODJmMTM3ZDE4NzU1
ZDM2ICBvcHVzZmlsZS0wLjkuemlwCis0OGUwMzUyNmJhODdlZjljZjVmMWM0N2I1ZWJlM2FhMTk1
YmQ4OWI5MTJhNTcwNjBjMzYxODRhNmNkMTk0MTJmICBvcHVzZmlsZS0wLjEwLnRhci5negorOWQ5
ZTk1ZDAxODE3ZWNmNDhiZjZkYWFlYThmMDcxZjliNDViZDE3NTFjYTFmYzhjZTUwZTUwNzVlYjJi
YzNjOCAgb3B1c2ZpbGUtMC4xMC56aXAKKzc0Y2U5YjZjZjRkYTEwMzEzM2U3YjVjOTVkZjgxMGNl
YjcxOTU0NzFlMTE2MmVkNTdhZjQxNWZhYmY1NjAzYmYgIG9wdXNmaWxlLTAuMTEudGFyLmd6Cisy
M2M1MTY4MDI2YzRmMWZjMzQ4NDM2NTAxMzViNDA5ZDBmYzhjZjQ1MjUwODE2M2I0ZWNlODA3NzI1
NmFjNmZmICBvcHVzZmlsZS0wLjExLnppcApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zY3JpcHRzL2R1bXBfcm5uLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zY3JpcHRzL2R1bXBfcm5uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNjY0MDNiNTJlODg3Yzg0MzMwM2I1
NDk3N2Y1NGQwMWJiNDIzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NjcmlwdHMvZHVtcF9ybm4ucHkK
QEAgLTAsMCArMSw1NyBAQAorIyEvdXNyL2Jpbi9weXRob24KKworZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgorCitmcm9tIGtlcmFzLm1vZGVscyBpbXBvcnQgU2VxdWVudGlh
bAorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0IERlbnNlCitmcm9tIGtlcmFzLmxheWVycyBpbXBv
cnQgTFNUTQorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0IEdSVQorZnJvbSBrZXJhcy5tb2RlbHMg
aW1wb3J0IGxvYWRfbW9kZWwKK2Zyb20ga2VyYXMgaW1wb3J0IGJhY2tlbmQgYXMgSworCitpbXBv
cnQgbnVtcHkgYXMgbnAKKworZGVmIHByaW50VmVjdG9yKGYsIHZlY3RvciwgbmFtZSk6CisgICAg
diA9IG5wLnJlc2hhcGUodmVjdG9yLCAoLTEpKTsKKyAgICAjcHJpbnQoJ3N0YXRpYyBjb25zdCBm
bG9hdCAnLCBuYW1lLCAnWycsIGxlbih2KSwgJ10gPSBcbicsIGZpbGU9ZikKKyAgICBmLndyaXRl
KCdzdGF0aWMgY29uc3Qgb3B1c19pbnQxNiB7fVt7fV0gPSB7e1xuICAgJy5mb3JtYXQobmFtZSwg
bGVuKHYpKSkKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4odikpOgorICAgICAgICBmLndyaXRl
KCd7fScuZm9ybWF0KGludChyb3VuZCg4MTkyKnZbaV0pKSkpCisgICAgICAgIGlmIChpIT1sZW4o
diktMSk6CisgICAgICAgICAgICBmLndyaXRlKCcsJykKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAoaSU4PT03KToKKyAgICAgICAgICAgIGYud3JpdGUoIlxu
ICAgIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGYud3JpdGUoIiAiKQorICAgICNwcmlu
dCh2LCBmaWxlPWYpCisgICAgZi53cml0ZSgnXG59O1xuXG4nKQorICAgIHJldHVybjsKKworZGVm
IGJpbmFyeV9jcm9zc2VudHJvcDIoeV90cnVlLCB5X3ByZWQpOgorICAgICAgICByZXR1cm4gSy5t
ZWFuKDIqSy5hYnMoeV90cnVlLTAuNSkgKiBLLmJpbmFyeV9jcm9zc2VudHJvcHkoeV9wcmVkLCB5
X3RydWUpLCBheGlzPS0xKQorCisKK21vZGVsID0gbG9hZF9tb2RlbCgid2VpZ2h0cy5oZGY1Iiwg
Y3VzdG9tX29iamVjdHM9eydiaW5hcnlfY3Jvc3NlbnRyb3AyJzogYmluYXJ5X2Nyb3NzZW50cm9w
Mn0pCisKK3dlaWdodHMgPSBtb2RlbC5nZXRfd2VpZ2h0cygpCisKK2YgPSBvcGVuKCdybm5fd2Vp
Z2h0cy5jJywgJ3cnKQorCitmLndyaXRlKCcvKlRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIGEgS2VyYXMgbW9kZWwqL1xuXG4nKQorZi53cml0ZSgnI2lmZGVmIEhBVkVf
Q09ORklHX0hcbiNpbmNsdWRlICJjb25maWcuaCJcbiNlbmRpZlxuXG4jaW5jbHVkZSAibWxwLmgi
XG5cbicpCisKK3ByaW50VmVjdG9yKGYsIHdlaWdodHNbMF0sICdsYXllcjBfd2VpZ2h0cycpCitw
cmludFZlY3RvcihmLCB3ZWlnaHRzWzFdLCAnbGF5ZXIwX2JpYXMnKQorcHJpbnRWZWN0b3IoZiwg
d2VpZ2h0c1syXSwgJ2xheWVyMV93ZWlnaHRzJykKK3ByaW50VmVjdG9yKGYsIHdlaWdodHNbM10s
ICdsYXllcjFfcmVjdXJfd2VpZ2h0cycpCitwcmludFZlY3RvcihmLCB3ZWlnaHRzWzRdLCAnbGF5
ZXIxX2JpYXMnKQorcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1s1XSwgJ2xheWVyMl93ZWlnaHRzJykK
K3ByaW50VmVjdG9yKGYsIHdlaWdodHNbNl0sICdsYXllcjJfYmlhcycpCisKK2Yud3JpdGUoJ2Nv
bnN0IERlbnNlTGF5ZXIgbGF5ZXIwID0ge1xuICAgbGF5ZXIwX2JpYXMsXG4gICBsYXllcjBfd2Vp
Z2h0cyxcbiAgIDI1LCAxNiwgMFxufTtcblxuJykKK2Yud3JpdGUoJ2NvbnN0IEdSVUxheWVyIGxh
eWVyMSA9IHtcbiAgIGxheWVyMV9iaWFzLFxuICAgbGF5ZXIxX3dlaWdodHMsXG4gICBsYXllcjFf
cmVjdXJfd2VpZ2h0cyxcbiAgIDE2LCAxMlxufTtcblxuJykKK2Yud3JpdGUoJ2NvbnN0IERlbnNl
TGF5ZXIgbGF5ZXIyID0ge1xuICAgbGF5ZXIyX2JpYXMsXG4gICBsYXllcjJfd2VpZ2h0cyxcbiAg
IDEyLCAyLCAxXG59O1xuXG4nKQorCitmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2NyaXB0cy9ybm5f
dHJhaW4ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NjcmlwdHMvcm5uX3RyYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZGFhMWU3ZDAzOTA4
NDcyOWM0YTAwMjFmMzE3NmNlZjRkYTIwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NjcmlwdHMvcm5u
X3RyYWluLnB5CkBAIC0wLDAgKzEsNjcgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKK2Zyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworZnJvbSBrZXJhcy5tb2RlbHMgaW1wb3J0
IFNlcXVlbnRpYWwKK2Zyb20ga2VyYXMubW9kZWxzIGltcG9ydCBNb2RlbAorZnJvbSBrZXJhcy5s
YXllcnMgaW1wb3J0IElucHV0Citmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgRGVuc2UKK2Zyb20g
a2VyYXMubGF5ZXJzIGltcG9ydCBMU1RNCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgR1JVCitm
cm9tIGtlcmFzLmxheWVycyBpbXBvcnQgU2ltcGxlUk5OCitmcm9tIGtlcmFzLmxheWVycyBpbXBv
cnQgRHJvcG91dAorZnJvbSBrZXJhcyBpbXBvcnQgbG9zc2VzCitpbXBvcnQgaDVweQorCitmcm9t
IGtlcmFzIGltcG9ydCBiYWNrZW5kIGFzIEsKK2ltcG9ydCBudW1weSBhcyBucAorCitkZWYgYmlu
YXJ5X2Nyb3NzZW50cm9wMih5X3RydWUsIHlfcHJlZCk6CisgICAgcmV0dXJuIEsubWVhbigyKksu
YWJzKHlfdHJ1ZS0wLjUpICogSy5iaW5hcnlfY3Jvc3NlbnRyb3B5KHlfcHJlZCwgeV90cnVlKSwg
YXhpcz0tMSkKKworcHJpbnQoJ0J1aWxkIG1vZGVsLi4uJykKKyNtb2RlbCA9IFNlcXVlbnRpYWwo
KQorI21vZGVsLmFkZChEZW5zZSgxNiwgYWN0aXZhdGlvbj0ndGFuaCcsIGlucHV0X3NoYXBlPShO
b25lLCAyNSkpKQorI21vZGVsLmFkZChHUlUoMTIsIGRyb3BvdXQ9MC4wLCByZWN1cnJlbnRfZHJv
cG91dD0wLjAsIGFjdGl2YXRpb249J3RhbmgnLCByZWN1cnJlbnRfYWN0aXZhdGlvbj0nc2lnbW9p
ZCcsIHJldHVybl9zZXF1ZW5jZXM9VHJ1ZSkpCisjbW9kZWwuYWRkKERlbnNlKDIsIGFjdGl2YXRp
b249J3NpZ21vaWQnKSkKKworbWFpbl9pbnB1dCA9IElucHV0KHNoYXBlPShOb25lLCAyNSksIG5h
bWU9J21haW5faW5wdXQnKQoreCA9IERlbnNlKDE2LCBhY3RpdmF0aW9uPSd0YW5oJykobWFpbl9p
bnB1dCkKK3ggPSBHUlUoMTIsIGRyb3BvdXQ9MC4xLCByZWN1cnJlbnRfZHJvcG91dD0wLjEsIGFj
dGl2YXRpb249J3RhbmgnLCByZWN1cnJlbnRfYWN0aXZhdGlvbj0nc2lnbW9pZCcsIHJldHVybl9z
ZXF1ZW5jZXM9VHJ1ZSkoeCkKK3ggPSBEZW5zZSgyLCBhY3RpdmF0aW9uPSdzaWdtb2lkJykoeCkK
K21vZGVsID0gTW9kZWwoaW5wdXRzPW1haW5faW5wdXQsIG91dHB1dHM9eCkKKworYmF0Y2hfc2l6
ZSA9IDY0CisKK3ByaW50KCdMb2FkaW5nIGRhdGEuLi4nKQord2l0aCBoNXB5LkZpbGUoJ2ZlYXR1
cmVzLmg1JywgJ3InKSBhcyBoZjoKKyAgICBhbGxfZGF0YSA9IGhmWydmZWF0dXJlcyddWzpdCitw
cmludCgnZG9uZS4nKQorCit3aW5kb3dfc2l6ZSA9IDE1MDAKKworbmJfc2VxdWVuY2VzID0gbGVu
KGFsbF9kYXRhKS93aW5kb3dfc2l6ZQorcHJpbnQobmJfc2VxdWVuY2VzLCAnIHNlcXVlbmNlcycp
Cit4X3RyYWluID0gYWxsX2RhdGFbOm5iX3NlcXVlbmNlcyp3aW5kb3dfc2l6ZSwgOi0yXQoreF90
cmFpbiA9IG5wLnJlc2hhcGUoeF90cmFpbiwgKG5iX3NlcXVlbmNlcywgd2luZG93X3NpemUsIDI1
KSkKKworeV90cmFpbiA9IG5wLmNvcHkoYWxsX2RhdGFbOm5iX3NlcXVlbmNlcyp3aW5kb3dfc2l6
ZSwgLTI6XSkKK3lfdHJhaW4gPSBucC5yZXNoYXBlKHlfdHJhaW4sIChuYl9zZXF1ZW5jZXMsIHdp
bmRvd19zaXplLCAyKSkKKworYWxsX2RhdGEgPSAwOworeF90cmFpbiA9IHhfdHJhaW4uYXN0eXBl
KCdmbG9hdDMyJykKK3lfdHJhaW4gPSB5X3RyYWluLmFzdHlwZSgnZmxvYXQzMicpCisKK3ByaW50
KGxlbih4X3RyYWluKSwgJ3RyYWluIHNlcXVlbmNlcy4geCBzaGFwZSA9JywgeF90cmFpbi5zaGFw
ZSwgJ3kgc2hhcGUgPSAnLCB5X3RyYWluLnNoYXBlKQorCisjIHRyeSB1c2luZyBkaWZmZXJlbnQg
b3B0aW1pemVycyBhbmQgZGlmZmVyZW50IG9wdGltaXplciBjb25maWdzCittb2RlbC5jb21waWxl
KGxvc3M9YmluYXJ5X2Nyb3NzZW50cm9wMiwKKyAgICAgICAgICAgICAgb3B0aW1pemVyPSdhZGFt
JywKKyAgICAgICAgICAgICAgbWV0cmljcz1bJ2JpbmFyeV9hY2N1cmFjeSddKQorCitwcmludCgn
VHJhaW4uLi4nKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisgICAgICAgICAgYmF0Y2hf
c2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0yMDAsCisgICAgICAgICAgdmFsaWRh
dGlvbl9kYXRhPSh4X3RyYWluLCB5X3RyYWluKSkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMuaGRm
NSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvQ05HLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvQ05HLmMKaW5kZXggZTZkOWI4NjFlOTVl
NzQzZjFkMDg1N2NlNDhhZWRmM2NlYmZiZjFlNC4uMmE5MTAwOTllZDM2ZTNhYTAyZGViODE0ZDRk
ZGJlODM4NzdkOWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL0NORy5jCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9DTkcuYwpAQCAt
MTE4LDYgKzExOCwxMCBAQCB2b2lkIHNpbGtfQ05HKAogICAgICAgICAvKiBTbW9vdGggZ2FpbnMg
Ki8KICAgICAgICAgZm9yKCBpID0gMDsgaSA8IHBzRGVjLT5uYl9zdWJmcjsgaSsrICkgewogICAg
ICAgICAgICAgcHNDTkctPkNOR19zbXRoX0dhaW5fUTE2ICs9IHNpbGtfU01VTFdCKCBwc0RlY0N0
cmwtPkdhaW5zX1ExNlsgaSBdIC0gcHNDTkctPkNOR19zbXRoX0dhaW5fUTE2LCBDTkdfR0FJTl9T
TVRIX1ExNiApOworICAgICAgICAgICAgLyogSWYgdGhlIHNtb290aGVkIGdhaW4gaXMgMyBkQiBn
cmVhdGVyIHRoYW4gdGhpcyBzdWJmcmFtZSdzIGdhaW4sIHVzZSB0aGlzIHN1YmZyYW1lJ3MgZ2Fp
biB0byBhZGFwdCBmYXN0ZXIuICovCisgICAgICAgICAgICBpZiggc2lsa19TTVVMV1coIHBzQ05H
LT5DTkdfc210aF9HYWluX1ExNiwgQ05HX0dBSU5fU01USF9USFJFU0hPTERfUTE2ICkgPiBwc0Rl
Y0N0cmwtPkdhaW5zX1ExNlsgaSBdICkgeworICAgICAgICAgICAgICAgIHBzQ05HLT5DTkdfc210
aF9HYWluX1ExNiA9IHBzRGVjQ3RybC0+R2FpbnNfUTE2WyBpIF07CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTE0Niw4ICsxNTAsOCBAQCB2b2lkIHNpbGtfQ05HKAogCiAg
ICAgICAgIC8qIEdlbmVyYXRlIENORyBzaWduYWwsIGJ5IHN5bnRoZXNpcyBmaWx0ZXJpbmcgKi8K
ICAgICAgICAgc2lsa19tZW1jcHkoIENOR19zaWdfUTE0LCBwc0NORy0+Q05HX3N5bnRoX3N0YXRl
LCBNQVhfTFBDX09SREVSICogc2l6ZW9mKCBvcHVzX2ludDMyICkgKTsKKyAgICAgICAgY2VsdF9h
c3NlcnQoIHBzRGVjLT5MUENfb3JkZXIgPT0gMTAgfHwgcHNEZWMtPkxQQ19vcmRlciA9PSAxNiAp
OwogICAgICAgICBmb3IoIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgICAgICBz
aWxrX2Fzc2VydCggcHNEZWMtPkxQQ19vcmRlciA9PSAxMCB8fCBwc0RlYy0+TFBDX29yZGVyID09
IDE2ICk7CiAgICAgICAgICAgICAvKiBBdm9pZHMgaW50cm9kdWNpbmcgYSBiaWFzIGJlY2F1c2Ug
c2lsa19TTUxBV0IoKSBhbHdheXMgcm91bmRzIHRvIC1pbmYgKi8KICAgICAgICAgICAgIExQQ19w
cmVkX1ExMCA9IHNpbGtfUlNISUZUKCBwc0RlYy0+TFBDX29yZGVyLCAxICk7CiAgICAgICAgICAg
ICBMUENfcHJlZF9RMTAgPSBzaWxrX1NNTEFXQiggTFBDX3ByZWRfUTEwLCBDTkdfc2lnX1ExNFsg
TUFYX0xQQ19PUkRFUiArIGkgLSAgMSBdLCBBX1ExMlsgMCBdICk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
TFBDX2FuYWx5c2lzX2ZpbHRlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL0xQQ19hbmFseXNpc19maWx0ZXIuYwppbmRleCA3
NzE1ZjcwZjhkNjc2Mzc1N2IwZWYxOTRiZTRjZDAxNGZmZDBjMjIzLi5kMzRiNWViNzA5YWE3MmVh
YjM4ZmU2NGM3M2IwYTE4OTI2ODYwMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTFBDX2FuYWx5c2lzX2Zp
bHRlci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9MUENfYW5hbHlzaXNfZmlsdGVyLmMKQEAgLTY0LDEyICs2NCwxMiBA
QCB2b2lkIHNpbGtfTFBDX2FuYWx5c2lzX2ZpbHRlcigKICAgICBjb25zdCBvcHVzX2ludDE2ICpp
bl9wdHI7CiAjZW5kaWYKIAotICAgIHNpbGtfYXNzZXJ0KCBkID49IDYgKTsKLSAgICBzaWxrX2Fz
c2VydCggKGQgJiAxKSA9PSAwICk7Ci0gICAgc2lsa19hc3NlcnQoIGQgPD0gbGVuICk7CisgICAg
Y2VsdF9hc3NlcnQoIGQgPj0gNiApOworICAgIGNlbHRfYXNzZXJ0KCAoZCAmIDEpID09IDAgKTsK
KyAgICBjZWx0X2Fzc2VydCggZCA8PSBsZW4gKTsKIAogI2lmIGRlZmluZWQoRklYRURfUE9JTlQp
ICYmIFVTRV9DRUxUX0ZJUgotICAgIHNpbGtfYXNzZXJ0KCBkIDw9IFNJTEtfTUFYX09SREVSX0xQ
QyApOworICAgIGNlbHRfYXNzZXJ0KCBkIDw9IFNJTEtfTUFYX09SREVSX0xQQyApOwogICAgIGZv
ciAoIGogPSAwOyBqIDwgZDsgaisrICkgewogICAgICAgICBudW1bIGogXSA9IC1CWyBqIF07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0YyQS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0YyQS5jCmluZGV4IDExNmI0
NjViMWRiOGM2NzgxNzdhZGVkYmM2ZDI1ZmY5ZWQzODc1MTAuLmQ1Yjc3MzA2MzgzZWU0MjIyNmEz
MDE4MWQ0NzU5NWQ1ODdmNjdiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNGMkEuYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
TkxTRjJBLmMKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBzaWxrX05MU0YyQSgKICAgICBvcHVzX2lu
dDMyIGEzMl9RQTFbIFNJTEtfTUFYX09SREVSX0xQQyBdOwogCiAgICAgc2lsa19hc3NlcnQoIExT
Rl9DT1NfVEFCX1NaX0ZJWCA9PSAxMjggKTsKLSAgICBzaWxrX2Fzc2VydCggZD09MTAgfHwgZD09
MTYgKTsKKyAgICBjZWx0X2Fzc2VydCggZD09MTAgfHwgZD09MTYgKTsKIAogICAgIC8qIGNvbnZl
cnQgTFNGcyB0byAyKmNvcyhMU0YpLCB1c2luZyBwaWVjZXdpc2UgbGluZWFyIGN1cnZlIGZyb20g
dGFibGUgKi8KICAgICBvcmRlcmluZyA9IGQgPT0gMTYgPyBvcmRlcmluZzE2IDogb3JkZXJpbmcx
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9OTFNGX1ZRLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9WUS5jCmluZGV4IDQ1MmYz
ZGNiN2RkZDhhNzg4YTAwZjNjMjdjMTM5ZTk1ZWEyMGJiZmEuLmI4MzE4MmE3OWNjMGUxMTZjNDU2
YmFhZDBlN2FlOTNiYzAxN2UwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNGX1ZRLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L05MU0ZfVlEuYwpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIHNpbGtfTkxTRl9WUSgKICAgICBjb25z
dCBvcHVzX2ludDE2ICp3X1E5X3B0cjsKICAgICBjb25zdCBvcHVzX3VpbnQ4ICpjYl9ROF9wdHI7
CiAKLSAgICBzaWxrX2Fzc2VydCggKCBMUENfb3JkZXIgJiAxICkgPT0gMCApOworICAgIGNlbHRf
YXNzZXJ0KCAoIExQQ19vcmRlciAmIDEgKSA9PSAwICk7CiAKICAgICAvKiBMb29wIG92ZXIgY29k
ZWJvb2sgKi8KICAgICBjYl9ROF9wdHIgPSBwQ0JfUTg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9W
UV93ZWlnaHRzX2xhcm9pYS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0ZfVlFfd2VpZ2h0c19sYXJvaWEuYwppbmRleCAw
NDg5NGM1OWFiN2ViZDQ0ZmRlNTZmN2E0MDI5YzE1Y2YxMTVmNjViLi45ODczYmNkZTEwODczNmY4
N2I4OGVhZWNiOGIxN2E1MGIyMTM0ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9WUV93ZWlnaHRz
X2xhcm9pYS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9OTFNGX1ZRX3dlaWdodHNfbGFyb2lhLmMKQEAgLTQ4LDggKzQ4
LDggQEAgdm9pZCBzaWxrX05MU0ZfVlFfd2VpZ2h0c19sYXJvaWEoCiAgICAgb3B1c19pbnQgICBr
OwogICAgIG9wdXNfaW50MzIgdG1wMV9pbnQsIHRtcDJfaW50OwogCi0gICAgc2lsa19hc3NlcnQo
IEQgPiAwICk7Ci0gICAgc2lsa19hc3NlcnQoICggRCAmIDEgKSA9PSAwICk7CisgICAgY2VsdF9h
c3NlcnQoIEQgPiAwICk7CisgICAgY2VsdF9hc3NlcnQoICggRCAmIDEgKSA9PSAwICk7CiAKICAg
ICAvKiBGaXJzdCB2YWx1ZSAqLwogICAgIHRtcDFfaW50ID0gc2lsa19tYXhfaW50KCBwTkxTRl9R
MTVbIDAgXSwgMSApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0ZfZW5jb2RlLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9l
bmNvZGUuYwppbmRleCAyNjhiOWExOTViNTA4NTY1MzY3ODEyYmEyNzQ3YTdiYTZhMWY0YWEwLi4w
MWFjN2RiNzhjMDFiODkwZWYxMTBjYzA4NDkwN2Q4YThlOTU2MzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
TkxTRl9lbmNvZGUuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9lbmNvZGUuYwpAQCAtNjAsNyArNjAsNyBAQCBv
cHVzX2ludDMyIHNpbGtfTkxTRl9lbmNvZGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogTyAgICBSZXR1cm5zCiAgICAgY29uc3Qgb3B1c19pbnQxNiAqcENCX1dnaHRfUTk7
CiAgICAgU0FWRV9TVEFDSzsKIAotICAgIHNpbGtfYXNzZXJ0KCBzaWduYWxUeXBlID49IDAgJiYg
c2lnbmFsVHlwZSA8PSAyICk7CisgICAgY2VsdF9hc3NlcnQoIHNpZ25hbFR5cGUgPj0gMCAmJiBz
aWduYWxUeXBlIDw9IDIgKTsKICAgICBzaWxrX2Fzc2VydCggTkxTRl9tdV9RMjAgPD0gMzI3Njcg
JiYgTkxTRl9tdV9RMjAgPj0gMCApOwogCiAgICAgLyogTkxTRiBzdGFiaWxpemF0aW9uICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvTlNRLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTlNRLmMKaW5kZXggNjE3YTE5ZmVhZGVmOGQ1NTdi
MDg2YzM0NTU4ZDMxNzUwMjc2YTFjNS4uMWQ2NGQ4ZTI1N2I4NWRhMWE3Mzg1NzdjYjU3MTNlN2Uw
NGUzZTBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05TUS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OU1EuYwpAQCAtMTQzLDcg
KzE0Myw3IEBAIHZvaWQgc2lsa19OU1FfYwogICAgICAgICAgICAgaWYoICggayAmICggMyAtIHNp
bGtfTFNISUZUKCBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFnLCAxICkgKSApID09IDAgKSB7CiAgICAg
ICAgICAgICAgICAgLyogUmV3aGl0ZW4gd2l0aCBuZXcgQSBjb2VmcyAqLwogICAgICAgICAgICAg
ICAgIHN0YXJ0X2lkeCA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGggLSBsYWcgLSBwc0VuY0MtPnBy
ZWRpY3RMUENPcmRlciAtIExUUF9PUkRFUiAvIDI7Ci0gICAgICAgICAgICAgICAgc2lsa19hc3Nl
cnQoIHN0YXJ0X2lkeCA+IDAgKTsKKyAgICAgICAgICAgICAgICBjZWx0X2Fzc2VydCggc3RhcnRf
aWR4ID4gMCApOwogCiAgICAgICAgICAgICAgICAgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKCAm
c0xUUFsgc3RhcnRfaWR4IF0sICZOU1EtPnhxWyBzdGFydF9pZHggKyBrICogcHNFbmNDLT5zdWJm
cl9sZW5ndGggXSwKICAgICAgICAgICAgICAgICAgICAgQV9RMTIsIHBzRW5jQy0+bHRwX21lbV9s
ZW5ndGggLSBzdGFydF9pZHgsIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyLCBwc0VuY0MtPmFyY2gg
KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyKAog
ICAgICAgICB9CiAKICAgICAgICAgLyogTm9pc2Ugc2hhcGUgZmVlZGJhY2sgKi8KLSAgICAgICAg
c2lsa19hc3NlcnQoICggc2hhcGluZ0xQQ09yZGVyICYgMSApID09IDAgKTsgICAvKiBjaGVjayB0
aGF0IG9yZGVyIGlzIGV2ZW4gKi8KKyAgICAgICAgY2VsdF9hc3NlcnQoICggc2hhcGluZ0xQQ09y
ZGVyICYgMSApID09IDAgKTsgICAvKiBjaGVjayB0aGF0IG9yZGVyIGlzIGV2ZW4gKi8KICAgICAg
ICAgbl9BUl9RMTIgPSBzaWxrX05TUV9ub2lzZV9zaGFwZV9mZWVkYmFja19sb29wKCZOU1EtPnNE
aWZmX3NocF9RMTQsIE5TUS0+c0FSMl9RMTQsIEFSX3NocF9RMTMsIHNoYXBpbmdMUENPcmRlciwg
YXJjaCk7CiAKICAgICAgICAgbl9BUl9RMTIgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTIsIE5TUS0+
c0xGX0FSX3NocF9RMTQsIFRpbHRfUTE0ICk7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBzaWxr
X25vaXNlX3NoYXBlX3F1YW50aXplcigKICAgICAgICAgbl9MRl9RMTIgPSBzaWxrX1NNVUxXQigg
TlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIDEgXSwgTEZfc2hwX1Ex
NCApOwogICAgICAgICBuX0xGX1ExMiA9IHNpbGtfU01MQVdUKCBuX0xGX1ExMiwgTlNRLT5zTEZf
QVJfc2hwX1ExNCwgTEZfc2hwX1ExNCApOwogCi0gICAgICAgIHNpbGtfYXNzZXJ0KCBsYWcgPiAw
IHx8IHNpZ25hbFR5cGUgIT0gVFlQRV9WT0lDRUQgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIGxh
ZyA+IDAgfHwgc2lnbmFsVHlwZSAhPSBUWVBFX1ZPSUNFRCApOwogCiAgICAgICAgIC8qIENvbWJp
bmUgcHJlZGljdGlvbiBhbmQgbm9pc2Ugc2hhcGluZyBzaWduYWxzICovCiAgICAgICAgIHRtcDEg
PSBzaWxrX1NVQjMyKCBzaWxrX0xTSElGVDMyKCBMUENfcHJlZF9RMTAsIDIgKSwgbl9BUl9RMTIg
KTsgICAgICAgIC8qIFExMiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05TUV9kZWxfZGVjLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
TlNRX2RlbF9kZWMuYwppbmRleCA1OTllMjVmMWM4YmJmM2NiYTk4OGY2NjBhNjEwNjRhODY2NWU2
YjY3Li5iYWYxN2Y0MmM1NTVhY2ZjZTEzY2RjNWU4MzlkNWI2ZGIxM2VhMTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvTlNRX2RlbF9kZWMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTlNRX2RlbF9kZWMuYwpAQCAtMjUwLDcgKzI1
MCw3IEBAIHZvaWQgc2lsa19OU1FfZGVsX2RlY19jKAogCiAgICAgICAgICAgICAgICAgLyogUmV3
aGl0ZW4gd2l0aCBuZXcgQSBjb2VmcyAqLwogICAgICAgICAgICAgICAgIHN0YXJ0X2lkeCA9IHBz
RW5jQy0+bHRwX21lbV9sZW5ndGggLSBsYWcgLSBwc0VuY0MtPnByZWRpY3RMUENPcmRlciAtIExU
UF9PUkRFUiAvIDI7Ci0gICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHN0YXJ0X2lkeCA+IDAg
KTsKKyAgICAgICAgICAgICAgICBjZWx0X2Fzc2VydCggc3RhcnRfaWR4ID4gMCApOwogCiAgICAg
ICAgICAgICAgICAgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKCAmc0xUUFsgc3RhcnRfaWR4IF0s
ICZOU1EtPnhxWyBzdGFydF9pZHggKyBrICogcHNFbmNDLT5zdWJmcl9sZW5ndGggXSwKICAgICAg
ICAgICAgICAgICAgICAgQV9RMTIsIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggLSBzdGFydF9pZHgs
IHBzRW5jQy0+cHJlZGljdExQQ09yZGVyLCBwc0VuY0MtPmFyY2ggKTsKQEAgLTM2MSw3ICszNjEs
NyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXplcl9k
ZWxfZGVjKAogICAgIE5TUV9zYW1wbGVfc3RydWN0ICAqcHNTUzsKICAgICBTQVZFX1NUQUNLOwog
Ci0gICAgc2lsa19hc3NlcnQoIG5TdGF0ZXNEZWxheWVkRGVjaXNpb24gPiAwICk7CisgICAgY2Vs
dF9hc3NlcnQoIG5TdGF0ZXNEZWxheWVkRGVjaXNpb24gPiAwICk7CiAgICAgQUxMT0MoIHBzU2Ft
cGxlU3RhdGUsIG5TdGF0ZXNEZWxheWVkRGVjaXNpb24sIE5TUV9zYW1wbGVfcGFpciApOwogCiAg
ICAgc2hwX2xhZ19wdHIgID0gJk5TUS0+c0xUUF9zaHBfUTE0WyBOU1EtPnNMVFBfc2hwX2J1Zl9p
ZHggLSBsYWcgKyBIQVJNX1NIQVBFX0ZJUl9UQVBTIC8gMiBdOwpAQCAtMzk1LDcgKzM5NSw3IEBA
IHN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyX2RlbF9k
ZWMoCiAgICAgICAgIGlmKCBsYWcgPiAwICkgewogICAgICAgICAgICAgLyogU3ltbWV0cmljLCBw
YWNrZWQgRklSIGNvZWZmaWNpZW50cyAqLwogICAgICAgICAgICAgbl9MVFBfUTE0ID0gc2lsa19T
TVVMV0IoIHNpbGtfQUREX1NBVDMyKCBzaHBfbGFnX3B0clsgMCBdLCBzaHBfbGFnX3B0clsgLTIg
XSApLCBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICk7Ci0gICAgICAgICAgICBuX0xUUF9RMTQgPSBz
aWxrX1NNTEFXVCggbl9MVFBfUTE0LCBzaHBfbGFnX3B0clsgLTEgXSwgICAgICAgICAgICAgICAg
ICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCApOworICAgICAgICAgICAgbl9MVFBfUTE0ID0g
c2lsa19TTUxBV1QoIG5fTFRQX1ExNCwgc2hwX2xhZ19wdHJbIC0xIF0sIEhhcm1TaGFwZUZJUlBh
Y2tlZF9RMTQgKTsKICAgICAgICAgICAgIG5fTFRQX1ExNCA9IHNpbGtfU1VCX0xTSElGVDMyKCBM
VFBfcHJlZF9RMTQsIG5fTFRQX1ExNCwgMiApOyAgICAgICAgICAgIC8qIFExMiAtPiBRMTQgKi8K
ICAgICAgICAgICAgIHNocF9sYWdfcHRyKys7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00MTksNyAr
NDE5LDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6
ZXJfZGVsX2RlYygKICAgICAgICAgICAgIExQQ19wcmVkX1ExNCA9IHNpbGtfTFNISUZUKCBMUENf
cHJlZF9RMTQsIDQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTAgLT4gUTE0
ICovCiAKICAgICAgICAgICAgIC8qIE5vaXNlIHNoYXBlIGZlZWRiYWNrICovCi0gICAgICAgICAg
ICBzaWxrX2Fzc2VydCggKCBzaGFwaW5nTFBDT3JkZXIgJiAxICkgPT0gMCApOyAgIC8qIGNoZWNr
IHRoYXQgb3JkZXIgaXMgZXZlbiAqLworICAgICAgICAgICAgY2VsdF9hc3NlcnQoICggc2hhcGlu
Z0xQQ09yZGVyICYgMSApID09IDAgKTsgICAvKiBjaGVjayB0aGF0IG9yZGVyIGlzIGV2ZW4gKi8K
ICAgICAgICAgICAgIC8qIE91dHB1dCBvZiBsb3dwYXNzIHNlY3Rpb24gKi8KICAgICAgICAgICAg
IHRtcDIgPSBzaWxrX1NNTEFXQiggcHNERC0+RGlmZl9RMTQsIHBzREQtPnNBUjJfUTE0WyAwIF0s
IHdhcnBpbmdfUTE2ICk7CiAgICAgICAgICAgICAvKiBPdXRwdXQgb2YgYWxscGFzcyBzZWN0aW9u
ICovCkBAIC00NTMsNyArNDUzLDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19ub2lz
ZV9zaGFwZV9xdWFudGl6ZXJfZGVsX2RlYygKICAgICAgICAgICAgIC8qIHIgPSB4WyBpIF0gLSBM
VFBfcHJlZCAtIExQQ19wcmVkICsgbl9BUiArIG5fVGlsdCArIG5fTEYgKyBuX0xUUCAgKi8KICAg
ICAgICAgICAgIHRtcDEgPSBzaWxrX0FERDMyKCBuX0FSX1ExNCwgbl9MRl9RMTQgKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTQgKi8KICAgICAgICAgICAgIHRtcDIg
PSBzaWxrX0FERDMyKCBuX0xUUF9RMTQsIExQQ19wcmVkX1ExNCApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBRMTMgKi8KLSAgICAgICAgICAgIHRtcDEgPSBzaWxrX1NVQjMyKCB0
bXAyLCB0bXAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBRMTMgKi8KKyAgICAgICAgICAgIHRtcDEgPSBzaWxrX1NVQl9TQVQzMiggdG1wMiwgdG1wMSAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTMgKi8KICAgICAg
ICAgICAgIHRtcDEgPSBzaWxrX1JTSElGVF9ST1VORCggdG1wMSwgNCApOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTAgKi8KIAogICAgICAgICAgICAgcl9RMTAg
PSBzaWxrX1NVQjMyKCB4X1ExMFsgaSBdLCB0bXAxICk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHJlc2lkdWFsIGVycm9yIFExMCAqLwpAQCAtNTM1LDcgKzUzNSw3IEBA
IHN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyX2RlbF9k
ZWMoCiAgICAgICAgICAgICAvKiBVcGRhdGUgc3RhdGVzICovCiAgICAgICAgICAgICBwc1NTWyAw
IF0uRGlmZl9RMTQgICAgID0gc2lsa19TVUJfTFNISUZUMzIoIHhxX1ExNCwgeF9RMTBbIGkgXSwg
NCApOwogICAgICAgICAgICAgc0xGX0FSX3NocF9RMTQgICAgICAgICA9IHNpbGtfU1VCMzIoIHBz
U1NbIDAgXS5EaWZmX1ExNCwgbl9BUl9RMTQgKTsKLSAgICAgICAgICAgIHBzU1NbIDAgXS5zTFRQ
X3NocF9RMTQgPSBzaWxrX1NVQjMyKCBzTEZfQVJfc2hwX1ExNCwgbl9MRl9RMTQgKTsKKyAgICAg
ICAgICAgIHBzU1NbIDAgXS5zTFRQX3NocF9RMTQgPSBzaWxrX1NVQl9TQVQzMiggc0xGX0FSX3No
cF9RMTQsIG5fTEZfUTE0ICk7CiAgICAgICAgICAgICBwc1NTWyAwIF0uTEZfQVJfUTE0ICAgID0g
c0xGX0FSX3NocF9RMTQ7CiAgICAgICAgICAgICBwc1NTWyAwIF0uTFBDX2V4Y19RMTQgID0gTFBD
X2V4Y19RMTQ7CiAgICAgICAgICAgICBwc1NTWyAwIF0ueHFfUTE0ICAgICAgID0geHFfUTE0OwpA
QCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hh
cGVfcXVhbnRpemVyX2RlbF9kZWMoCiAgICAgICAgICAgICAvKiBVcGRhdGUgc3RhdGVzICovCiAg
ICAgICAgICAgICBwc1NTWyAxIF0uRGlmZl9RMTQgICAgID0gc2lsa19TVUJfTFNISUZUMzIoIHhx
X1ExNCwgeF9RMTBbIGkgXSwgNCApOwogICAgICAgICAgICAgc0xGX0FSX3NocF9RMTQgICAgICAg
ICA9IHNpbGtfU1VCMzIoIHBzU1NbIDEgXS5EaWZmX1ExNCwgbl9BUl9RMTQgKTsKLSAgICAgICAg
ICAgIHBzU1NbIDEgXS5zTFRQX3NocF9RMTQgPSBzaWxrX1NVQjMyKCBzTEZfQVJfc2hwX1ExNCwg
bl9MRl9RMTQgKTsKKyAgICAgICAgICAgIHBzU1NbIDEgXS5zTFRQX3NocF9RMTQgPSBzaWxrX1NV
Ql9TQVQzMiggc0xGX0FSX3NocF9RMTQsIG5fTEZfUTE0ICk7CiAgICAgICAgICAgICBwc1NTWyAx
IF0uTEZfQVJfUTE0ICAgID0gc0xGX0FSX3NocF9RMTQ7CiAgICAgICAgICAgICBwc1NTWyAxIF0u
TFBDX2V4Y19RMTQgID0gTFBDX2V4Y19RMTQ7CiAgICAgICAgICAgICBwc1NTWyAxIF0ueHFfUTE0
ICAgICAgID0geHFfUTE0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL1BMQy5jIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL1BMQy5jCmluZGV4
IGEzZTU1ZWE3NjVlZjRmNGIwNzE5MDE1NTVkMzNkMDNjMDYzM2VhZTIuLmY4OTM5MTY1MWNkZjk3
NThjOGQ1ZThmZWZjMGRjYzRkYWNhMDIxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9QTEMuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvUExDLmMKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxr
X1BMQ19jb25jZWFsKAogCiAgICAgLyogUmV3aGl0ZW4gTFRQIHN0YXRlICovCiAgICAgaWR4ID0g
cHNEZWMtPmx0cF9tZW1fbGVuZ3RoIC0gbGFnIC0gcHNEZWMtPkxQQ19vcmRlciAtIExUUF9PUkRF
UiAvIDI7Ci0gICAgc2lsa19hc3NlcnQoIGlkeCA+IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggaWR4
ID4gMCApOwogICAgIHNpbGtfTFBDX2FuYWx5c2lzX2ZpbHRlciggJnNMVFBbIGlkeCBdLCAmcHNE
ZWMtPm91dEJ1ZlsgaWR4IF0sIEFfUTEyLCBwc0RlYy0+bHRwX21lbV9sZW5ndGggLSBpZHgsIHBz
RGVjLT5MUENfb3JkZXIsIGFyY2ggKTsKICAgICAvKiBTY2FsZSBMVFAgc3RhdGUgKi8KICAgICBp
bnZfZ2Fpbl9RMzAgPSBzaWxrX0lOVkVSU0UzMl92YXJRKCBwc1BMQy0+cHJldkdhaW5fUTE2WyAx
IF0sIDQ2ICk7CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2ls
a19QTENfY29uY2VhbCgKICAgICAvKiBDb3B5IExQQyBzdGF0ZSAqLwogICAgIHNpbGtfbWVtY3B5
KCBzTFBDX1ExNF9wdHIsIHBzRGVjLT5zTFBDX1ExNF9idWYsIE1BWF9MUENfT1JERVIgKiBzaXpl
b2YoIG9wdXNfaW50MzIgKSApOwogCi0gICAgc2lsa19hc3NlcnQoIHBzRGVjLT5MUENfb3JkZXIg
Pj0gMTAgKTsgLyogY2hlY2sgdGhhdCB1bnJvbGxpbmcgd29ya3MgKi8KKyAgICBjZWx0X2Fzc2Vy
dCggcHNEZWMtPkxQQ19vcmRlciA+PSAxMCApOyAvKiBjaGVjayB0aGF0IHVucm9sbGluZyB3b3Jr
cyAqLwogICAgIGZvciggaSA9IDA7IGkgPCBwc0RlYy0+ZnJhbWVfbGVuZ3RoOyBpKysgKSB7CiAg
ICAgICAgIC8qIHBhcnRseSB1bnJvbGxlZCAqLwogICAgICAgICAvKiBBdm9pZHMgaW50cm9kdWNp
bmcgYSBiaWFzIGJlY2F1c2Ugc2lsa19TTUxBV0IoKSBhbHdheXMgcm91bmRzIHRvIC1pbmYgKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9WQUQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9WQUQuYwppbmRleCAwYTc4MmFmMmYxMzIzNzQ0
Y2EyZDUwOTU5NTAxNWJiNGJlNmE5ODRjLi5kMGNkYTUyMTYyYzFjNGM3YmI1MjdmMTI1Yjk1M2M4
MzZiZjM2NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvVkFELmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL1ZBRC5jCkBAIC0xMDEs
OSArMTAxLDkgQEAgb3B1c19pbnQgc2lsa19WQURfR2V0U0FfUThfYyggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJuIHYKIAogICAgIC8qIFNhZmV0eSBjaGVj
a3MgKi8KICAgICBzaWxrX2Fzc2VydCggVkFEX05fQkFORFMgPT0gNCApOwotICAgIHNpbGtfYXNz
ZXJ0KCBNQVhfRlJBTUVfTEVOR1RIID49IHBzRW5jQy0+ZnJhbWVfbGVuZ3RoICk7Ci0gICAgc2ls
a19hc3NlcnQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoIDw9IDUxMiApOwotICAgIHNpbGtfYXNzZXJ0
KCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSA4ICogc2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVf
bGVuZ3RoLCAzICkgKTsKKyAgICBjZWx0X2Fzc2VydCggTUFYX0ZSQU1FX0xFTkdUSCA+PSBwc0Vu
Y0MtPmZyYW1lX2xlbmd0aCApOworICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPmZyYW1lX2xlbmd0
aCA8PSA1MTIgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNFbmNDLT5mcmFtZV9sZW5ndGggPT0gOCAq
IHNpbGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMyApICk7CiAKICAgICAvKioqKioq
KioqKioqKioqKioqKioqKiovCiAgICAgLyogRmlsdGVyIGFuZCBEZWNpbWF0ZSAqLwpAQCAtMjUy
LDE1ICsyNTIsMTQgQEAgb3B1c19pbnQgc2lsa19WQURfR2V0U0FfUThfYyggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJuIHYKICAgICAgICAgc3BlZWNoX25y
ZyArPSAoIGIgKyAxICkgKiBzaWxrX1JTSElGVCggWG5yZ1sgYiBdIC0gcHNTaWxrX1ZBRC0+Tkxb
IGIgXSwgNCApOwogICAgIH0KIAorICAgIGlmKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSAyMCAq
IHBzRW5jQy0+ZnNfa0h6ICkgeworICAgICAgICBzcGVlY2hfbnJnID0gc2lsa19SU0hJRlQzMigg
c3BlZWNoX25yZywgMSApOworICAgIH0KICAgICAvKiBQb3dlciBzY2FsaW5nICovCiAgICAgaWYo
IHNwZWVjaF9ucmcgPD0gMCApIHsKICAgICAgICAgU0FfUTE1ID0gc2lsa19SU0hJRlQoIFNBX1Ex
NSwgMSApOwotICAgIH0gZWxzZSBpZiggc3BlZWNoX25yZyA8IDMyNzY4ICkgewotICAgICAgICBp
ZiggcHNFbmNDLT5mcmFtZV9sZW5ndGggPT0gMTAgKiBwc0VuY0MtPmZzX2tIeiApIHsKLSAgICAg
ICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX0xTSElGVF9TQVQzMiggc3BlZWNoX25yZywgMTYgKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX0xTSElGVF9T
QVQzMiggc3BlZWNoX25yZywgMTUgKTsKLSAgICAgICAgfQorICAgIH0gZWxzZSBpZiggc3BlZWNo
X25yZyA8IDE2Mzg0ICkgeworICAgICAgICBzcGVlY2hfbnJnID0gc2lsa19MU0hJRlQzMiggc3Bl
ZWNoX25yZywgMTYgKTsKIAogICAgICAgICAvKiBzcXVhcmUtcm9vdCAqLwogICAgICAgICBzcGVl
Y2hfbnJnID0gc2lsa19TUVJUX0FQUFJPWCggc3BlZWNoX25yZyApOwpAQCAtMzEzLDYgKzMxMiw4
IEBAIHZvaWQgc2lsa19WQURfR2V0Tm9pc2VMZXZlbHMoCiAgICAgLyogSW5pdGlhbGx5IGZhc3Rl
ciBzbW9vdGhpbmcgKi8KICAgICBpZiggcHNTaWxrX1ZBRC0+Y291bnRlciA8IDEwMDAgKSB7IC8q
IDEwMDAgPSAyMCBzZWMgKi8KICAgICAgICAgbWluX2NvZWYgPSBzaWxrX0RJVjMyXzE2KCBzaWxr
X2ludDE2X01BWCwgc2lsa19SU0hJRlQoIHBzU2lsa19WQUQtPmNvdW50ZXIsIDQgKSArIDEgKTsK
KyAgICAgICAgLyogSW5jcmVtZW50IGZyYW1lIGNvdW50ZXIgKi8KKyAgICAgICAgcHNTaWxrX1ZB
RC0+Y291bnRlcisrOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1pbl9jb2VmID0gMDsKICAgICB9
CkBAIC0zNTYsNyArMzU3LDQgQEAgdm9pZCBzaWxrX1ZBRF9HZXROb2lzZUxldmVscygKICAgICAg
ICAgLyogU3RvcmUgYXMgcGFydCBvZiBzdGF0ZSAqLwogICAgICAgICBwc1NpbGtfVkFELT5OTFsg
ayBdID0gbmw7CiAgICAgfQotCi0gICAgLyogSW5jcmVtZW50IGZyYW1lIGNvdW50ZXIgKi8KLSAg
ICBwc1NpbGtfVkFELT5jb3VudGVyKys7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvY2hlY2tfY29udHJv
bF9pbnB1dC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2NoZWNrX2NvbnRyb2xfaW5wdXQuYwppbmRleCBiNWRlOWNlNDhkNjk5
M2Q1ZTM2OGJkZDQ2M2JkZDU1OWMxZDZiZDlmLi43MzlmYjAxZjFlMjk4NTA1ZTY3ZWZiNWJjYjI3
NGVjMTllNzcyNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvY2hlY2tfY29udHJvbF9pbnB1dC5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9jaGVja19jb250cm9sX2lucHV0LmMKQEAgLTM4LDcgKzM4LDcgQEAgb3B1c19pbnQgY2hl
Y2tfY29udHJvbF9pbnB1dCgKICAgICBzaWxrX0VuY0NvbnRyb2xTdHJ1Y3QgICAgICAgICplbmND
b250cm9sICAgICAgICAgICAgICAgICAgICAvKiBJICAgIENvbnRyb2wgc3RydWN0dXJlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KICkKIHsKLSAgICBzaWxrX2Fzc2VydCggZW5jQ29udHJv
bCAhPSBOVUxMICk7CisgICAgY2VsdF9hc3NlcnQoIGVuY0NvbnRyb2wgIT0gTlVMTCApOwogCiAg
ICAgaWYoICggKCBlbmNDb250cm9sLT5BUElfc2FtcGxlUmF0ZSAgICAgICAgICAgICE9ICA4MDAw
ICkgJiYKICAgICAgICAgICAoIGVuY0NvbnRyb2wtPkFQSV9zYW1wbGVSYXRlICAgICAgICAgICAg
IT0gMTIwMDAgKSAmJgpAQCAtNTksNDYgKzU5LDQ2IEBAIG9wdXNfaW50IGNoZWNrX2NvbnRyb2xf
aW5wdXQoCiAgICAgICAgICAgKCBlbmNDb250cm9sLT5taW5JbnRlcm5hbFNhbXBsZVJhdGUgPiBl
bmNDb250cm9sLT5kZXNpcmVkSW50ZXJuYWxTYW1wbGVSYXRlICkgfHwKICAgICAgICAgICAoIGVu
Y0NvbnRyb2wtPm1heEludGVybmFsU2FtcGxlUmF0ZSA8IGVuY0NvbnRyb2wtPmRlc2lyZWRJbnRl
cm5hbFNhbXBsZVJhdGUgKSB8fAogICAgICAgICAgICggZW5jQ29udHJvbC0+bWluSW50ZXJuYWxT
YW1wbGVSYXRlID4gZW5jQ29udHJvbC0+bWF4SW50ZXJuYWxTYW1wbGVSYXRlICkgKSB7Ci0gICAg
ICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAg
IHJldHVybiBTSUxLX0VOQ19GU19OT1RfU1VQUE9SVEVEOwogICAgIH0KICAgICBpZiggZW5jQ29u
dHJvbC0+cGF5bG9hZFNpemVfbXMgIT0gMTAgJiYKICAgICAgICAgZW5jQ29udHJvbC0+cGF5bG9h
ZFNpemVfbXMgIT0gMjAgJiYKICAgICAgICAgZW5jQ29udHJvbC0+cGF5bG9hZFNpemVfbXMgIT0g
NDAgJiYKICAgICAgICAgZW5jQ29udHJvbC0+cGF5bG9hZFNpemVfbXMgIT0gNjAgKSB7Ci0gICAg
ICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAg
IHJldHVybiBTSUxLX0VOQ19QQUNLRVRfU0laRV9OT1RfU1VQUE9SVEVEOwogICAgIH0KICAgICBp
ZiggZW5jQ29udHJvbC0+cGFja2V0TG9zc1BlcmNlbnRhZ2UgPCAwIHx8IGVuY0NvbnRyb2wtPnBh
Y2tldExvc3NQZXJjZW50YWdlID4gMTAwICkgewotICAgICAgICBzaWxrX2Fzc2VydCggMCApOwor
ICAgICAgICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICByZXR1cm4gU0lMS19FTkNfSU5WQUxJ
RF9MT1NTX1JBVEU7CiAgICAgfQogICAgIGlmKCBlbmNDb250cm9sLT51c2VEVFggPCAwIHx8IGVu
Y0NvbnRyb2wtPnVzZURUWCA+IDEgKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAg
ICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgIHJldHVybiBTSUxLX0VOQ19JTlZBTElEX0RU
WF9TRVRUSU5HOwogICAgIH0KICAgICBpZiggZW5jQ29udHJvbC0+dXNlQ0JSIDwgMCB8fCBlbmND
b250cm9sLT51c2VDQlIgPiAxICkgewotICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAg
ICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICByZXR1cm4gU0lMS19FTkNfSU5WQUxJRF9DQlJf
U0VUVElORzsKICAgICB9CiAgICAgaWYoIGVuY0NvbnRyb2wtPnVzZUluQmFuZEZFQyA8IDAgfHwg
ZW5jQ29udHJvbC0+dXNlSW5CYW5kRkVDID4gMSApIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIDAg
KTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgcmV0dXJuIFNJTEtfRU5DX0lO
VkFMSURfSU5CQU5EX0ZFQ19TRVRUSU5HOwogICAgIH0KICAgICBpZiggZW5jQ29udHJvbC0+bkNo
YW5uZWxzQVBJIDwgMSB8fCBlbmNDb250cm9sLT5uQ2hhbm5lbHNBUEkgPiBFTkNPREVSX05VTV9D
SEFOTkVMUyApIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgY2VsdF9hc3Nl
cnQoIDAgKTsKICAgICAgICAgcmV0dXJuIFNJTEtfRU5DX0lOVkFMSURfTlVNQkVSX09GX0NIQU5O
RUxTX0VSUk9SOwogICAgIH0KICAgICBpZiggZW5jQ29udHJvbC0+bkNoYW5uZWxzSW50ZXJuYWwg
PCAxIHx8IGVuY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFsID4gRU5DT0RFUl9OVU1fQ0hBTk5F
TFMgKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCAw
ICk7CiAgICAgICAgIHJldHVybiBTSUxLX0VOQ19JTlZBTElEX05VTUJFUl9PRl9DSEFOTkVMU19F
UlJPUjsKICAgICB9CiAgICAgaWYoIGVuY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFsID4gZW5j
Q29udHJvbC0+bkNoYW5uZWxzQVBJICkgewotICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAg
ICAgICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICByZXR1cm4gU0lMS19FTkNfSU5WQUxJRF9O
VU1CRVJfT0ZfQ0hBTk5FTFNfRVJST1I7CiAgICAgfQogICAgIGlmKCBlbmNDb250cm9sLT5jb21w
bGV4aXR5IDwgMCB8fCBlbmNDb250cm9sLT5jb21wbGV4aXR5ID4gMTAgKSB7Ci0gICAgICAgIHNp
bGtfYXNzZXJ0KCAwICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgIHJldHVy
biBTSUxLX0VOQ19JTlZBTElEX0NPTVBMRVhJVFlfU0VUVElORzsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9jb250cm9sX1NOUi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2NvbnRyb2xfU05SLmMKaW5kZXggNDY0YzFhY2Zl
ODg0NTFhYmY2YTNlZDQ1ZGIyNmIyNWNkMGM2NTNmMC4uOWE2ZGIyNzU0M2Q3NDIyMzNiNTY1YTY5
NzNiMzdmY2FiYzIyOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2NvbnRyb2xfU05SLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2NvbnRyb2xfU05SLmMKQEAgLTMyLDQ0ICszMiw4MiBAQCBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICNpbmNsdWRlICJtYWluLmgiCiAjaW5jbHVkZSAidHVuaW5nX3BhcmFtZXRlcnMuaCIK
IAorLyogVGhlc2UgdGFibGVzIGhvbGQgU05SIHZhbHVlcyBkaXZpZGVkIGJ5IDIxIChzbyB0aGV5
IGZpdCBpbiA4IGJpdHMpCisgICBmb3IgZGlmZmVyZW50IHRhcmdldCBiaXRyYXRlcyBzcGFjZWQg
YXQgNDAwIGJwcyBpbnRlcnZhbC4gVGhlIGZpcnN0CisgICAxMCB2YWx1ZXMgYXJlIG9taXR0ZWQg
KDAtNCBrYi9zKSBiZWNhdXNlIHRoZXkncmUgYWxsIHplcm9zLgorICAgVGhlc2UgdGFibGVzIHdl
cmUgb2J0YWluZWQgYnkgcnVubmluZyBkaWZmZXJlbnQgU05ScyB0aHJvdWdoIHRoZQorICAgZW5j
b2RlciBhbmQgbWVhc3VyaW5nIHRoZSBhY3RpdmUgYml0cmF0ZS4gKi8KK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIHNpbGtfVGFyZ2V0UmF0ZV9OQl8yMVsxMTcgLSAxMF0gPSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMTUsIDM5LCA1MiwgNjEs
IDY4LAorICAgICA3NCwgNzksIDg0LCA4OCwgOTIsIDk1LCA5OSwxMDIsMTA1LDEwOCwxMTEsMTE0
LDExNywxMTksMTIyLDEyNCwKKyAgICAxMjYsMTI5LDEzMSwxMzMsMTM1LDEzNywxMzksMTQyLDE0
MywxNDUsMTQ3LDE0OSwxNTEsMTUzLDE1NSwxNTcsCisgICAgMTU4LDE2MCwxNjIsMTYzLDE2NSwx
NjcsMTY4LDE3MCwxNzEsMTczLDE3NCwxNzYsMTc3LDE3OSwxODAsMTgyLAorICAgIDE4MywxODUs
MTg2LDE4NywxODksMTkwLDE5MiwxOTMsMTk0LDE5NiwxOTcsMTk5LDIwMCwyMDEsMjAzLDIwNCwK
KyAgICAyMDUsMjA3LDIwOCwyMDksMjExLDIxMiwyMTMsMjE1LDIxNiwyMTcsMjE5LDIyMCwyMjEs
MjIzLDIyNCwyMjUsCisgICAgMjI3LDIyOCwyMzAsMjMxLDIzMiwyMzQsMjM1LDIzNiwyMzgsMjM5
LDI0MSwyNDIsMjQzLDI0NSwyNDYsMjQ4LAorICAgIDI0OSwyNTAsMjUyLDI1MywyNTUKK307CisK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNpbGtfVGFyZ2V0UmF0ZV9NQl8yMVsxNjUgLSAx
MF0gPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
IDAsIDI4LCA0MywgNTIsIDU5LAorICAgICA2NSwgNzAsIDc0LCA3OCwgODEsIDg1LCA4NywgOTAs
IDkzLCA5NSwgOTgsMTAwLDEwMiwxMDUsMTA3LDEwOSwKKyAgICAxMTEsMTEzLDExNSwxMTYsMTE4
LDEyMCwxMjIsMTIzLDEyNSwxMjcsMTI4LDEzMCwxMzEsMTMzLDEzNCwxMzYsCisgICAgMTM3LDEz
OCwxNDAsMTQxLDE0MywxNDQsMTQ1LDE0NywxNDgsMTQ5LDE1MSwxNTIsMTUzLDE1NCwxNTYsMTU3
LAorICAgIDE1OCwxNTksMTYwLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcxLDE3
MiwxNzMsMTc0LDE3NSwKKyAgICAxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwx
ODUsMTg2LDE4NywxODgsMTg4LDE4OSwxOTAsCisgICAgMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYs
MTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwMywyMDQsMjA1LAorICAgIDIwNiwyMDcsMjA4
LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwKKyAg
ICAyMjEsMjIyLDIyMywyMjQsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMz
LDIzNCwyMzUsCisgICAgMjM2LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0
NSwyNDYsMjQ3LDI0OCwyNDksMjUwLAorICAgIDI1MSwyNTIsMjUzLDI1NCwyNTUKK307CisKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNpbGtfVGFyZ2V0UmF0ZV9XQl8yMVsyMDEgLSAxMF0g
PSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIDAs
ICAwLCAgOCwgMjksIDQxLAorICAgICA0OSwgNTYsIDYyLCA2NiwgNzAsIDc0LCA3NywgODAsIDgz
LCA4NiwgODgsIDkxLCA5MywgOTUsIDk3LCA5OSwKKyAgICAxMDEsMTAzLDEwNSwxMDcsMTA4LDEx
MCwxMTIsMTEzLDExNSwxMTYsMTE4LDExOSwxMjEsMTIyLDEyMywxMjUsCisgICAgMTI2LDEyNywx
MjksMTMwLDEzMSwxMzIsMTM0LDEzNSwxMzYsMTM3LDEzOCwxNDAsMTQxLDE0MiwxNDMsMTQ0LAor
ICAgIDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTYsMTU3LDE1OCwx
NTksMTU5LDE2MCwKKyAgICAxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAs
MTcxLDE3MSwxNzIsMTczLDE3NCwxNzUsCisgICAgMTc2LDE3NywxNzcsMTc4LDE3OSwxODAsMTgx
LDE4MSwxODIsMTgzLDE4NCwxODUsMTg1LDE4NiwxODcsMTg4LAorICAgIDE4OSwxODksMTkwLDE5
MSwxOTIsMTkyLDE5MywxOTQsMTk1LDE5NSwxOTYsMTk3LDE5OCwxOTgsMTk5LDIwMCwKKyAgICAy
MDAsMjAxLDIwMiwyMDMsMjAzLDIwNCwyMDUsMjA2LDIwNiwyMDcsMjA4LDIwOSwyMDksMjEwLDIx
MSwyMTEsCisgICAgMjEyLDIxMywyMTQsMjE0LDIxNSwyMTYsMjE2LDIxNywyMTgsMjE5LDIxOSwy
MjAsMjIxLDIyMSwyMjIsMjIzLAorICAgIDIyNCwyMjQsMjI1LDIyNiwyMjYsMjI3LDIyOCwyMjks
MjI5LDIzMCwyMzEsMjMyLDIzMiwyMzMsMjM0LDIzNCwKKyAgICAyMzUsMjM2LDIzNywyMzcsMjM4
LDIzOSwyNDAsMjQwLDI0MSwyNDIsMjQzLDI0MywyNDQsMjQ1LDI0NiwyNDYsCisgICAgMjQ3LDI0
OCwyNDksMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTUKK307CisKIC8qIENvbnRyb2wgU05SIG9mIHJl
ZGlkdWFsIHF1YW50aXplciAqLwogb3B1c19pbnQgc2lsa19jb250cm9sX1NOUigKICAgICBzaWxr
X2VuY29kZXJfc3RhdGUgICAgICAgICAgKnBzRW5jQywgICAgICAgICAgICAgICAgICAgICAgICAv
KiBJL08gIFBvaW50ZXIgdG8gU2lsayBlbmNvZGVyIHN0YXRlICAgICAgICAgICAgICAgKi8KICAg
ICBvcHVzX2ludDMyICAgICAgICAgICAgICAgICAgVGFyZ2V0UmF0ZV9icHMgICAgICAgICAgICAg
ICAgICAvKiBJICAgIFRhcmdldCBtYXggYml0cmF0ZSAoYnBzKSAgICAgICAgICAgICAgICAgICAg
Ki8KICkKIHsKLSAgICBvcHVzX2ludCBrLCByZXQgPSBTSUxLX05PX0VSUk9SOwotICAgIG9wdXNf
aW50MzIgZnJhY19RNjsKLSAgICBjb25zdCBvcHVzX2ludDMyICpyYXRlVGFibGU7Ci0KLSAgICAv
KiBTZXQgYml0cmF0ZS9jb2RpbmcgcXVhbGl0eSAqLwotICAgIFRhcmdldFJhdGVfYnBzID0gc2ls
a19MSU1JVCggVGFyZ2V0UmF0ZV9icHMsIE1JTl9UQVJHRVRfUkFURV9CUFMsIE1BWF9UQVJHRVRf
UkFURV9CUFMgKTsKLSAgICBpZiggVGFyZ2V0UmF0ZV9icHMgIT0gcHNFbmNDLT5UYXJnZXRSYXRl
X2JwcyApIHsKLSAgICAgICAgcHNFbmNDLT5UYXJnZXRSYXRlX2JwcyA9IFRhcmdldFJhdGVfYnBz
OwotCi0gICAgICAgIC8qIElmIG5ldyBUYXJnZXRSYXRlX2JwcywgdHJhbnNsYXRlIHRvIFNOUl9k
QiB2YWx1ZSAqLwotICAgICAgICBpZiggcHNFbmNDLT5mc19rSHogPT0gOCApIHsKLSAgICAgICAg
ICAgIHJhdGVUYWJsZSA9IHNpbGtfVGFyZ2V0UmF0ZV90YWJsZV9OQjsKLSAgICAgICAgfSBlbHNl
IGlmKCBwc0VuY0MtPmZzX2tIeiA9PSAxMiApIHsKLSAgICAgICAgICAgIHJhdGVUYWJsZSA9IHNp
bGtfVGFyZ2V0UmF0ZV90YWJsZV9NQjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJh
dGVUYWJsZSA9IHNpbGtfVGFyZ2V0UmF0ZV90YWJsZV9XQjsKLSAgICAgICAgfQorICAgIGludCBp
ZDsKKyAgICBpbnQgYm91bmQ7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc25yX3RhYmxlOwog
Ci0gICAgICAgIC8qIFJlZHVjZSBiaXRyYXRlIGZvciAxMCBtcyBtb2RlcyBpbiB0aGVzZSBjYWxj
dWxhdGlvbnMgKi8KLSAgICAgICAgaWYoIHBzRW5jQy0+bmJfc3ViZnIgPT0gMiApIHsKLSAgICAg
ICAgICAgIFRhcmdldFJhdGVfYnBzIC09IFJFRFVDRV9CSVRSQVRFXzEwX01TX0JQUzsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8qIEZpbmQgYml0cmF0ZSBpbnRlcnZhbCBpbiB0YWJsZSBhbmQgaW50
ZXJwb2xhdGUgKi8KLSAgICAgICAgZm9yKCBrID0gMTsgayA8IFRBUkdFVF9SQVRFX1RBQl9TWjsg
aysrICkgewotICAgICAgICAgICAgaWYoIFRhcmdldFJhdGVfYnBzIDw9IHJhdGVUYWJsZVsgayBd
ICkgewotICAgICAgICAgICAgICAgIGZyYWNfUTYgPSBzaWxrX0RJVjMyKCBzaWxrX0xTSElGVCgg
VGFyZ2V0UmF0ZV9icHMgLSByYXRlVGFibGVbIGsgLSAxIF0sIDYgKSwgcmF0ZVRhYmxlWyBrIF0g
LSByYXRlVGFibGVbIGsgLSAxIF0gKTsKLSAgICAgICAgICAgICAgICBwc0VuY0MtPlNOUl9kQl9R
NyA9IHNpbGtfTFNISUZUKCBzaWxrX1NOUl90YWJsZV9RMVsgayAtIDEgXSwgNiApICsgc2lsa19N
VUwoIGZyYWNfUTYsIHNpbGtfU05SX3RhYmxlX1ExWyBrIF0gLSBzaWxrX1NOUl90YWJsZV9RMVsg
ayAtIDEgXSApOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgcHNFbmNDLT5UYXJnZXRSYXRlX2JwcyA9IFRhcmdldFJhdGVfYnBzOworICAgIGlm
KCBwc0VuY0MtPm5iX3N1YmZyID09IDIgKSB7CisgICAgICAgIFRhcmdldFJhdGVfYnBzIC09IDIw
MDAgKyBwc0VuY0MtPmZzX2tIei8xNjsKICAgICB9Ci0KLSAgICByZXR1cm4gcmV0OworICAgIGlm
KCBwc0VuY0MtPmZzX2tIeiA9PSA4ICkgeworICAgICAgICBib3VuZCA9IHNpemVvZihzaWxrX1Rh
cmdldFJhdGVfTkJfMjEpOworICAgICAgICBzbnJfdGFibGUgPSBzaWxrX1RhcmdldFJhdGVfTkJf
MjE7CisgICAgfSBlbHNlIGlmKCBwc0VuY0MtPmZzX2tIeiA9PSAxMiApIHsKKyAgICAgICAgYm91
bmQgPSBzaXplb2Yoc2lsa19UYXJnZXRSYXRlX01CXzIxKTsKKyAgICAgICAgc25yX3RhYmxlID0g
c2lsa19UYXJnZXRSYXRlX01CXzIxOworICAgIH0gZWxzZSB7CisgICAgICAgIGJvdW5kID0gc2l6
ZW9mKHNpbGtfVGFyZ2V0UmF0ZV9XQl8yMSk7CisgICAgICAgIHNucl90YWJsZSA9IHNpbGtfVGFy
Z2V0UmF0ZV9XQl8yMTsKKyAgICB9CisgICAgaWQgPSAoVGFyZ2V0UmF0ZV9icHMrMjAwKS80MDA7
CisgICAgaWQgPSBzaWxrX21pbihpZCAtIDEwLCBib3VuZC0xKTsKKyAgICBpZiggaWQgPD0gMCAp
IHsKKyAgICAgICAgcHNFbmNDLT5TTlJfZEJfUTcgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAg
IHBzRW5jQy0+U05SX2RCX1E3ID0gc25yX3RhYmxlW2lkXSoyMTsKKyAgICB9CisgICAgcmV0dXJu
IFNJTEtfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvY29udHJvbF9hdWRpb19iYW5kd2lk
dGguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay9jb250cm9sX2F1ZGlvX2JhbmR3aWR0aC5jCmluZGV4IDRmOWJjNWNiZGFhOTIz
MDU2ZTdhZjBlZDRjMmY3YTkwZTM3NjU3YzYuLmY2ZDIyZDgzOTUzMGQwOGQ4MjAzY2JkZTQxMjJk
MTA5MTcxMzQ3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9jb250cm9sX2F1ZGlvX2JhbmR3aWR0aC5jCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9jb250cm9sX2F1ZGlvX2JhbmR3aWR0aC5jCkBAIC0zOSw5ICszOSwxNSBAQCBvcHVz
X2ludCBzaWxrX2NvbnRyb2xfYXVkaW9fYmFuZHdpZHRoKAogKQogewogICAgIG9wdXNfaW50ICAg
ZnNfa0h6OworICAgIG9wdXNfaW50ICAgb3JpZ19rSHo7CiAgICAgb3B1c19pbnQzMiBmc19IejsK
IAotICAgIGZzX2tIeiA9IHBzRW5jQy0+ZnNfa0h6OworICAgIG9yaWdfa0h6ID0gcHNFbmNDLT5m
c19rSHo7CisgICAgLyogSGFuZGxlIGEgYmFuZHdpZHRoLXN3aXRjaGluZyByZXNldCB3aGVyZSB3
ZSBuZWVkIHRvIGJlIGF3YXJlIHdoYXQgdGhlIGxhc3Qgc2FtcGxpbmcgcmF0ZSB3YXMuICovCisg
ICAgaWYoIG9yaWdfa0h6ID09IDAgKSB7CisgICAgICAgIG9yaWdfa0h6ID0gcHNFbmNDLT5zTFAu
c2F2ZWRfZnNfa0h6OworICAgIH0KKyAgICBmc19rSHogPSBvcmlnX2tIejsKICAgICBmc19IeiA9
IHNpbGtfU01VTEJCKCBmc19rSHosIDEwMDAgKTsKICAgICBpZiggZnNfSHogPT0gMCApIHsKICAg
ICAgICAgLyogRW5jb2RlciBoYXMganVzdCBiZWVuIGluaXRpYWxpemVkICovCkBAIC02MSw3ICs2
Nyw3IEBAIG9wdXNfaW50IHNpbGtfY29udHJvbF9hdWRpb19iYW5kd2lkdGgoCiAgICAgICAgIH0K
ICAgICAgICAgaWYoIHBzRW5jQy0+YWxsb3dfYmFuZHdpZHRoX3N3aXRjaCB8fCBlbmNDb250cm9s
LT5vcHVzQ2FuU3dpdGNoICkgewogICAgICAgICAgICAgLyogQ2hlY2sgaWYgd2Ugc2hvdWxkIHN3
aXRjaCBkb3duICovCi0gICAgICAgICAgICBpZiggc2lsa19TTVVMQkIoIHBzRW5jQy0+ZnNfa0h6
LCAxMDAwICkgPiBwc0VuY0MtPmRlc2lyZWRJbnRlcm5hbF9mc19IeiApCisgICAgICAgICAgICBp
Ziggc2lsa19TTVVMQkIoIG9yaWdfa0h6LCAxMDAwICkgPiBwc0VuY0MtPmRlc2lyZWRJbnRlcm5h
bF9mc19IeiApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogU3dpdGNoIGRvd24g
Ki8KICAgICAgICAgICAgICAgICBpZiggcHNFbmNDLT5zTFAubW9kZSA9PSAwICkgewpAQCAtNzYs
NyArODIsNyBAQCBvcHVzX2ludCBzaWxrX2NvbnRyb2xfYXVkaW9fYmFuZHdpZHRoKAogICAgICAg
ICAgICAgICAgICAgICBwc0VuY0MtPnNMUC5tb2RlID0gMDsKIAogICAgICAgICAgICAgICAgICAg
ICAvKiBTd2l0Y2ggdG8gYSBsb3dlciBzYW1wbGUgZnJlcXVlbmN5ICovCi0gICAgICAgICAgICAg
ICAgICAgIGZzX2tIeiA9IHBzRW5jQy0+ZnNfa0h6ID09IDE2ID8gMTIgOiA4OworICAgICAgICAg
ICAgICAgICAgICBmc19rSHogPSBvcmlnX2tIeiA9PSAxNiA/IDEyIDogODsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmKCBwc0VuY0MtPnNMUC50cmFuc2l0
aW9uX2ZyYW1lX25vIDw9IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuY0NvbnRyb2wt
PnN3aXRjaFJlYWR5ID0gMTsKQEAgLTkwLDEyICs5NiwxMiBAQCBvcHVzX2ludCBzaWxrX2NvbnRy
b2xfYXVkaW9fYmFuZHdpZHRoKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgLyogQ2hlY2sgaWYgd2Ugc2hvdWxkIHN3aXRjaCB1cCAqLwotICAgICAgICAgICAg
aWYoIHNpbGtfU01VTEJCKCBwc0VuY0MtPmZzX2tIeiwgMTAwMCApIDwgcHNFbmNDLT5kZXNpcmVk
SW50ZXJuYWxfZnNfSHogKQorICAgICAgICAgICAgaWYoIHNpbGtfU01VTEJCKCBvcmlnX2tIeiwg
MTAwMCApIDwgcHNFbmNDLT5kZXNpcmVkSW50ZXJuYWxfZnNfSHogKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIC8qIFN3aXRjaCB1cCAqLwogICAgICAgICAgICAgICAgIGlmKCBlbmND
b250cm9sLT5vcHVzQ2FuU3dpdGNoICkgewogICAgICAgICAgICAgICAgICAgICAvKiBTd2l0Y2gg
dG8gYSBoaWdoZXIgc2FtcGxlIGZyZXF1ZW5jeSAqLwotICAgICAgICAgICAgICAgICAgICBmc19r
SHogPSBwc0VuY0MtPmZzX2tIeiA9PSA4ID8gMTIgOiAxNjsKKyAgICAgICAgICAgICAgICAgICAg
ZnNfa0h6ID0gb3JpZ19rSHogPT0gOCA/IDEyIDogMTY7CiAKICAgICAgICAgICAgICAgICAgICAg
LyogTmV3IHRyYW5zaXRpb24gKi8KICAgICAgICAgICAgICAgICAgICAgcHNFbmNDLT5zTFAudHJh
bnNpdGlvbl9mcmFtZV9ubyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvY29udHJvbF9jb2RlYy5jIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
aWxrL2NvbnRyb2xfY29kZWMuYwppbmRleCA5MzUwZmQ0YjJiNGNjOWI1ODg5MWQ4M2I3YjdiNzc0
ZjI3NGIxODFmLi41MmFhOGZkZWQzNTU2YTk2N2IyMTliN2I3MDEzNjFlYWNkYWFmMGExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvY29udHJvbF9jb2RlYy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9jb250cm9sX2NvZGVjLmMKQEAg
LTIzOCw4ICsyMzgsOCBAQCBzdGF0aWMgb3B1c19pbnQgc2lsa19zZXR1cF9mcygKICAgICB9CiAK
ICAgICAvKiBTZXQgaW50ZXJuYWwgc2FtcGxpbmcgZnJlcXVlbmN5ICovCi0gICAgc2lsa19hc3Nl
cnQoIGZzX2tIeiA9PSA4IHx8IGZzX2tIeiA9PSAxMiB8fCBmc19rSHogPT0gMTYgKTsKLSAgICBz
aWxrX2Fzc2VydCggcHNFbmMtPnNDbW4ubmJfc3ViZnIgPT0gMiB8fCBwc0VuYy0+c0Ntbi5uYl9z
dWJmciA9PSA0ICk7CisgICAgY2VsdF9hc3NlcnQoIGZzX2tIeiA9PSA4IHx8IGZzX2tIeiA9PSAx
MiB8fCBmc19rSHogPT0gMTYgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNFbmMtPnNDbW4ubmJfc3Vi
ZnIgPT0gMiB8fCBwc0VuYy0+c0Ntbi5uYl9zdWJmciA9PSA0ICk7CiAgICAgaWYoIHBzRW5jLT5z
Q21uLmZzX2tIeiAhPSBmc19rSHogKSB7CiAgICAgICAgIC8qIHJlc2V0IHBhcnQgb2YgdGhlIHN0
YXRlICovCiAgICAgICAgIHNpbGtfbWVtc2V0KCAmcHNFbmMtPnNTaGFwZSwgICAgICAgICAgICAg
ICAwLCBzaXplb2YoIHBzRW5jLT5zU2hhcGUgKSApOwpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRp
YyBvcHVzX2ludCBzaWxrX3NldHVwX2ZzKAogICAgIH0KIAogICAgIC8qIENoZWNrIHRoYXQgc2V0
dGluZ3MgYXJlIHZhbGlkICovCi0gICAgc2lsa19hc3NlcnQoICggcHNFbmMtPnNDbW4uc3ViZnJf
bGVuZ3RoICogcHNFbmMtPnNDbW4ubmJfc3ViZnIgKSA9PSBwc0VuYy0+c0Ntbi5mcmFtZV9sZW5n
dGggKTsKKyAgICBjZWx0X2Fzc2VydCggKCBwc0VuYy0+c0Ntbi5zdWJmcl9sZW5ndGggKiBwc0Vu
Yy0+c0Ntbi5uYl9zdWJmciApID09IHBzRW5jLT5zQ21uLmZyYW1lX2xlbmd0aCApOwogCiAgICAg
cmV0dXJuIHJldDsKIH0KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgb3B1c19pbnQgc2lsa19z
ZXR1cF9jb21wbGV4aXR5KAogICAgIG9wdXNfaW50IHJldCA9IDA7CiAKICAgICAvKiBTZXQgZW5j
b2RpbmcgY29tcGxleGl0eSAqLwotICAgIHNpbGtfYXNzZXJ0KCBDb21wbGV4aXR5ID49IDAgJiYg
Q29tcGxleGl0eSA8PSAxMCApOworICAgIGNlbHRfYXNzZXJ0KCBDb21wbGV4aXR5ID49IDAgJiYg
Q29tcGxleGl0eSA8PSAxMCApOwogICAgIGlmKCBDb21wbGV4aXR5IDwgMSApIHsKICAgICAgICAg
cHNFbmNDLT5waXRjaEVzdGltYXRpb25Db21wbGV4aXR5ICAgICAgID0gU0lMS19QRV9NSU5fQ09N
UExFWDsKICAgICAgICAgcHNFbmNDLT5waXRjaEVzdGltYXRpb25UaHJlc2hvbGRfUTE2ICAgID0g
U0lMS19GSVhfQ09OU1QoIDAuOCwgMTYgKTsKQEAgLTM5MCwxMiArMzkwLDEyIEBAIHN0YXRpYyBv
cHVzX2ludCBzaWxrX3NldHVwX2NvbXBsZXhpdHkoCiAgICAgcHNFbmNDLT5zaGFwZVdpbkxlbmd0
aCAgICAgICAgICA9IFNVQl9GUkFNRV9MRU5HVEhfTVMgKiBwc0VuY0MtPmZzX2tIeiArIDIgKiBw
c0VuY0MtPmxhX3NoYXBlOwogICAgIHBzRW5jQy0+Q29tcGxleGl0eSAgICAgICAgICAgICAgPSBD
b21wbGV4aXR5OwogCi0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+cGl0Y2hFc3RpbWF0aW9uTFBD
T3JkZXIgPD0gTUFYX0ZJTkRfUElUQ0hfTFBDX09SREVSICk7Ci0gICAgc2lsa19hc3NlcnQoIHBz
RW5jQy0+c2hhcGluZ0xQQ09yZGVyICAgICAgICAgPD0gTUFYX1NIQVBFX0xQQ19PUkRFUiAgICAg
ICk7Ci0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbiAgPD0g
TUFYX0RFTF9ERUNfU1RBVEVTICAgICAgICk7Ci0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+d2Fy
cGluZ19RMTYgICAgICAgICAgICAgPD0gMzI3NjcgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
c2lsa19hc3NlcnQoIHBzRW5jQy0+bGFfc2hhcGUgICAgICAgICAgICAgICAgPD0gTEFfU0hBUEVf
TUFYICAgICAgICAgICAgICk7Ci0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+c2hhcGVXaW5MZW5n
dGggICAgICAgICAgPD0gU0hBUEVfTFBDX1dJTl9NQVggICAgICAgICk7CisgICAgY2VsdF9hc3Nl
cnQoIHBzRW5jQy0+cGl0Y2hFc3RpbWF0aW9uTFBDT3JkZXIgPD0gTUFYX0ZJTkRfUElUQ0hfTFBD
X09SREVSICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+c2hhcGluZ0xQQ09yZGVyICAgICAg
ICAgPD0gTUFYX1NIQVBFX0xQQ19PUkRFUiAgICAgICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRW5j
Qy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbiAgPD0gTUFYX0RFTF9ERUNfU1RBVEVTICAgICAgICk7
CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+d2FycGluZ19RMTYgICAgICAgICAgICAgPD0gMzI3
NjcgICAgICAgICAgICAgICAgICAgICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+bGFfc2hh
cGUgICAgICAgICAgICAgICAgPD0gTEFfU0hBUEVfTUFYICAgICAgICAgICAgICk7CisgICAgY2Vs
dF9hc3NlcnQoIHBzRW5jQy0+c2hhcGVXaW5MZW5ndGggICAgICAgICAgPD0gU0hBUEVfTFBDX1dJ
Tl9NQVggICAgICAgICk7CiAKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Rl
Y19BUEkuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9kZWNfQVBJLmMKaW5kZXggYjdkOGVkNDhkODhmNTE5Mjg2MDQ0NWNlOTJj
MzUzMWI5ZjU1MmNkNi4uN2Q1Y2E3ZmI5ZjdiZjBiNmQ4OWEyYWZkZTcxMTY2YWE0NGNjMTE3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2RlY19BUEkuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjX0FQSS5jCkBAIC0xMDQsNyAr
MTA0LDcgQEAgb3B1c19pbnQgc2lsa19EZWNvZGUoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBPICAgIFJldHVybnMgZXJyb3IgY28KICAgICBpbnQgZGVsYXlfc3RhY2tfYWxs
b2M7CiAgICAgU0FWRV9TVEFDSzsKIAotICAgIHNpbGtfYXNzZXJ0KCBkZWNDb250cm9sLT5uQ2hh
bm5lbHNJbnRlcm5hbCA9PSAxIHx8IGRlY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFsID09IDIg
KTsKKyAgICBjZWx0X2Fzc2VydCggZGVjQ29udHJvbC0+bkNoYW5uZWxzSW50ZXJuYWwgPT0gMSB8
fCBkZWNDb250cm9sLT5uQ2hhbm5lbHNJbnRlcm5hbCA9PSAyICk7CiAKICAgICAvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAvKiBUZXN0IGlmIGZpcnN0IGZyYW1lIGlu
IHBheWxvYWQgKi8KQEAgLTE0MywxMyArMTQzLDEzIEBAIG9wdXNfaW50IHNpbGtfRGVjb2RlKCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm5zIGVycm9yIGNv
CiAgICAgICAgICAgICAgICAgY2hhbm5lbF9zdGF0ZVsgbiBdLm5GcmFtZXNQZXJQYWNrZXQgPSAz
OwogICAgICAgICAgICAgICAgIGNoYW5uZWxfc3RhdGVbIG4gXS5uYl9zdWJmciA9IDQ7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAg
ICAgICAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgICAgICAgICBSRVNUT1JFX1NU
QUNLOwogICAgICAgICAgICAgICAgIHJldHVybiBTSUxLX0RFQ19JTlZBTElEX0ZSQU1FX1NJWkU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmc19rSHpfZGVjID0gKCBkZWNDb250cm9sLT5p
bnRlcm5hbFNhbXBsZVJhdGUgPj4gMTAgKSArIDE7CiAgICAgICAgICAgICBpZiggZnNfa0h6X2Rl
YyAhPSA4ICYmIGZzX2tIel9kZWMgIT0gMTIgJiYgZnNfa0h6X2RlYyAhPSAxNiApIHsKLSAgICAg
ICAgICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0
KCAwICk7CiAgICAgICAgICAgICAgICAgUkVTVE9SRV9TVEFDSzsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU0lMS19ERUNfSU5WQUxJRF9TQU1QTElOR19GUkVRVUVOQ1k7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX2NvcmUuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfY29yZS5jCmluZGV4
IGZkNGU4NTdhZmE4YWNjYzZkN2ZhZDIwM2JiOTYwMTg4OWFkMDFkOTUuLjFjMzUyYTY1MjI0M2Rj
ZTEzMmZlZmU1OWYwZDIxYjljZWYyMmE1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfY29yZS5j
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay9kZWNvZGVfY29yZS5jCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBzaWxrX2Rl
Y29kZV9jb3JlKAogICAgICAgICAgICAgaWYoIGsgPT0gMCB8fCAoIGsgPT0gMiAmJiBOTFNGX2lu
dGVycG9sYXRpb25fZmxhZyApICkgewogICAgICAgICAgICAgICAgIC8qIFJld2hpdGVuIHdpdGgg
bmV3IEEgY29lZnMgKi8KICAgICAgICAgICAgICAgICBzdGFydF9pZHggPSBwc0RlYy0+bHRwX21l
bV9sZW5ndGggLSBsYWcgLSBwc0RlYy0+TFBDX29yZGVyIC0gTFRQX09SREVSIC8gMjsKLSAgICAg
ICAgICAgICAgICBzaWxrX2Fzc2VydCggc3RhcnRfaWR4ID4gMCApOworICAgICAgICAgICAgICAg
IGNlbHRfYXNzZXJ0KCBzdGFydF9pZHggPiAwICk7CiAKICAgICAgICAgICAgICAgICBpZiggayA9
PSAyICkgewogICAgICAgICAgICAgICAgICAgICBzaWxrX21lbWNweSggJnBzRGVjLT5vdXRCdWZb
IHBzRGVjLT5sdHBfbWVtX2xlbmd0aCBdLCB4cSwgMiAqIHBzRGVjLT5zdWJmcl9sZW5ndGggKiBz
aXplb2YoIG9wdXNfaW50MTYgKSApOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgc2lsa19kZWNv
ZGVfY29yZSgKIAogICAgICAgICBmb3IoIGkgPSAwOyBpIDwgcHNEZWMtPnN1YmZyX2xlbmd0aDsg
aSsrICkgewogICAgICAgICAgICAgLyogU2hvcnQtdGVybSBwcmVkaWN0aW9uICovCi0gICAgICAg
ICAgICBzaWxrX2Fzc2VydCggcHNEZWMtPkxQQ19vcmRlciA9PSAxMCB8fCBwc0RlYy0+TFBDX29y
ZGVyID09IDE2ICk7CisgICAgICAgICAgICBjZWx0X2Fzc2VydCggcHNEZWMtPkxQQ19vcmRlciA9
PSAxMCB8fCBwc0RlYy0+TFBDX29yZGVyID09IDE2ICk7CiAgICAgICAgICAgICAvKiBBdm9pZHMg
aW50cm9kdWNpbmcgYSBiaWFzIGJlY2F1c2Ugc2lsa19TTUxBV0IoKSBhbHdheXMgcm91bmRzIHRv
IC1pbmYgKi8KICAgICAgICAgICAgIExQQ19wcmVkX1ExMCA9IHNpbGtfUlNISUZUKCBwc0RlYy0+
TFBDX29yZGVyLCAxICk7CiAgICAgICAgICAgICBMUENfcHJlZF9RMTAgPSBzaWxrX1NNTEFXQigg
TFBDX3ByZWRfUTEwLCBzTFBDX1ExNFsgTUFYX0xQQ19PUkRFUiArIGkgLSAgMSBdLCBBX1ExMl90
bXBbIDAgXSApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9mcmFtZS5jIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9m
cmFtZS5jCmluZGV4IGRmYTczYzRhMjk2NzA2MzRhZWI3MDA2MTI1MmFkYTcxMzZlYzJkYzIuLmU3
MzgyNWIyNjc2Zjk2MDZiNTFhYTZkOWU5ZmMwNzFmY2Q1Mjk0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9k
ZWNvZGVfZnJhbWUuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX2ZyYW1lLmMKQEAgLTU1LDcgKzU1LDcgQEAg
b3B1c19pbnQgc2lsa19kZWNvZGVfZnJhbWUoCiAgICAgcHNEZWNDdHJsLT5MVFBfc2NhbGVfUTE0
ID0gMDsKIAogICAgIC8qIFNhZmV0eSBjaGVja3MgKi8KLSAgICBzaWxrX2Fzc2VydCggTCA+IDAg
JiYgTCA8PSBNQVhfRlJBTUVfTEVOR1RIICk7CisgICAgY2VsdF9hc3NlcnQoIEwgPiAwICYmIEwg
PD0gTUFYX0ZSQU1FX0xFTkdUSCApOwogCiAgICAgaWYoICAgbG9zdEZsYWcgPT0gRkxBR19ERUNP
REVfTk9STUFMIHx8CiAgICAgICAgICggbG9zdEZsYWcgPT0gRkxBR19ERUNPREVfTEJSUiAmJiBw
c0RlYy0+TEJSUl9mbGFnc1sgcHNEZWMtPm5GcmFtZXNEZWNvZGVkIF0gPT0gMSApICkKQEAgLTkx
LDcgKzkxLDcgQEAgb3B1c19pbnQgc2lsa19kZWNvZGVfZnJhbWUoCiAKICAgICAgICAgcHNEZWMt
Pmxvc3NDbnQgPSAwOwogICAgICAgICBwc0RlYy0+cHJldlNpZ25hbFR5cGUgPSBwc0RlYy0+aW5k
aWNlcy5zaWduYWxUeXBlOwotICAgICAgICBzaWxrX2Fzc2VydCggcHNEZWMtPnByZXZTaWduYWxU
eXBlID49IDAgJiYgcHNEZWMtPnByZXZTaWduYWxUeXBlIDw9IDIgKTsKKyAgICAgICAgY2VsdF9h
c3NlcnQoIHBzRGVjLT5wcmV2U2lnbmFsVHlwZSA+PSAwICYmIHBzRGVjLT5wcmV2U2lnbmFsVHlw
ZSA8PSAyICk7CiAKICAgICAgICAgLyogQSBmcmFtZSBoYXMgYmVlbiBkZWNvZGVkIHdpdGhvdXQg
ZXJyb3JzICovCiAgICAgICAgIHBzRGVjLT5maXJzdF9mcmFtZV9hZnRlcl9yZXNldCA9IDA7CkBA
IC0xMDQsNyArMTA0LDcgQEAgb3B1c19pbnQgc2lsa19kZWNvZGVfZnJhbWUoCiAgICAgLyoqKioq
KioqKioqKioqKioqKioqKioqKiovCiAgICAgLyogVXBkYXRlIG91dHB1dCBidWZmZXIuICovCiAg
ICAgLyoqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgc2lsa19hc3NlcnQoIHBzRGVjLT5s
dHBfbWVtX2xlbmd0aCA+PSBwc0RlYy0+ZnJhbWVfbGVuZ3RoICk7CisgICAgY2VsdF9hc3NlcnQo
IHBzRGVjLT5sdHBfbWVtX2xlbmd0aCA+PSBwc0RlYy0+ZnJhbWVfbGVuZ3RoICk7CiAgICAgbXZf
bGVuID0gcHNEZWMtPmx0cF9tZW1fbGVuZ3RoIC0gcHNEZWMtPmZyYW1lX2xlbmd0aDsKICAgICBz
aWxrX21lbW1vdmUoIHBzRGVjLT5vdXRCdWYsICZwc0RlYy0+b3V0QnVmWyBwc0RlYy0+ZnJhbWVf
bGVuZ3RoIF0sIG12X2xlbiAqIHNpemVvZihvcHVzX2ludDE2KSApOwogICAgIHNpbGtfbWVtY3B5
KCAmcHNEZWMtPm91dEJ1ZlsgbXZfbGVuIF0sIHBPdXQsIHBzRGVjLT5mcmFtZV9sZW5ndGggKiBz
aXplb2YoIG9wdXNfaW50MTYgKSApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9pbmRpY2VzLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvZGVjb2RlX2luZGljZXMuYwppbmRleCA3YWZlNWMyNmMxOTJhZDE5M2ZmMzVjYjZmNTg5
NTRjYjdkM2U2NDIxLi4wYmI0YTk5N2E1M2IwODFlZjVjZmQxMDVjODY1ZjY0ZGQ3Yjc1ZWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvZGVjb2RlX2luZGljZXMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX2luZGljZXMu
YwpAQCAtNzksNyArNzksNyBAQCB2b2lkIHNpbGtfZGVjb2RlX2luZGljZXMoCiAgICAgLyoqKioq
KioqKioqKioqKioqKioqKiovCiAgICAgcHNEZWMtPmluZGljZXMuTkxTRkluZGljZXNbIDAgXSA9
IChvcHVzX2ludDgpZWNfZGVjX2ljZGYoIHBzUmFuZ2VEZWMsICZwc0RlYy0+cHNOTFNGX0NCLT5D
QjFfaUNERlsgKCBwc0RlYy0+aW5kaWNlcy5zaWduYWxUeXBlID4+IDEgKSAqIHBzRGVjLT5wc05M
U0ZfQ0ItPm5WZWN0b3JzIF0sIDggKTsKICAgICBzaWxrX05MU0ZfdW5wYWNrKCBlY19peCwgcHJl
ZF9ROCwgcHNEZWMtPnBzTkxTRl9DQiwgcHNEZWMtPmluZGljZXMuTkxTRkluZGljZXNbIDAgXSAp
OwotICAgIHNpbGtfYXNzZXJ0KCBwc0RlYy0+cHNOTFNGX0NCLT5vcmRlciA9PSBwc0RlYy0+TFBD
X29yZGVyICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRGVjLT5wc05MU0ZfQ0ItPm9yZGVyID09IHBz
RGVjLT5MUENfb3JkZXIgKTsKICAgICBmb3IoIGkgPSAwOyBpIDwgcHNEZWMtPnBzTkxTRl9DQi0+
b3JkZXI7IGkrKyApIHsKICAgICAgICAgSXggPSBlY19kZWNfaWNkZiggcHNSYW5nZURlYywgJnBz
RGVjLT5wc05MU0ZfQ0ItPmVjX2lDREZbIGVjX2l4WyBpIF0gXSwgOCApOwogICAgICAgICBpZigg
SXggPT0gMCApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfcGl0Y2guYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVf
cGl0Y2guYwppbmRleCBmZWRiYzZhNTI1NTc1NjI4MTc1M2RkMmQ4YWJjZDBjNWU1YWI5MDQxLi5m
ZDFiNmJmNTUxNzkyNTI1YTVhMGE3YjkwMjgzNjI5ZjZiNDdkMDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
ZGVjb2RlX3BpdGNoLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9waXRjaC5jCkBAIC01MSw3ICs1MSw3IEBA
IHZvaWQgc2lsa19kZWNvZGVfcGl0Y2goCiAgICAgICAgICAgICBMYWdfQ0JfcHRyID0gJnNpbGtf
Q0JfbGFnc19zdGFnZTJbIDAgXVsgMCBdOwogICAgICAgICAgICAgY2JrX3NpemUgICA9IFBFX05C
X0NCS1NfU1RBR0UyX0VYVDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNpbGtfYXNz
ZXJ0KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIgPj4gMSApOworICAgICAgICAgICAgY2Vs
dF9hc3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJGUiA+PiAxICk7CiAgICAgICAgICAg
ICBMYWdfQ0JfcHRyID0gJnNpbGtfQ0JfbGFnc19zdGFnZTJfMTBfbXNbIDAgXVsgMCBdOwogICAg
ICAgICAgICAgY2JrX3NpemUgICA9IFBFX05CX0NCS1NfU1RBR0UyXzEwTVM7CiAgICAgICAgIH0K
QEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBzaWxrX2RlY29kZV9waXRjaCgKICAgICAgICAgICAgIExh
Z19DQl9wdHIgPSAmc2lsa19DQl9sYWdzX3N0YWdlM1sgMCBdWyAwIF07CiAgICAgICAgICAgICBj
Ymtfc2l6ZSAgID0gUEVfTkJfQ0JLU19TVEFHRTNfTUFYOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgc2lsa19hc3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJGUiA+PiAxICk7
CisgICAgICAgICAgICBjZWx0X2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSID4+
IDEgKTsKICAgICAgICAgICAgIExhZ19DQl9wdHIgPSAmc2lsa19DQl9sYWdzX3N0YWdlM18xMF9t
c1sgMCBdWyAwIF07CiAgICAgICAgICAgICBjYmtfc2l6ZSAgID0gUEVfTkJfQ0JLU19TVEFHRTNf
MTBNUzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9wdWxzZXMuYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9k
ZWNvZGVfcHVsc2VzLmMKaW5kZXggZDZiYmVjOTIyNTIwM2RkZjIxYjgzMzRiZThhZjEyZmMzZDNl
YWNkMi4uYTU2ZDJkMzA3NGE3MDZhOGIzYWQ0YzNlZmFkYjMwMjE5YTNmZjE4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL2RlY29kZV9wdWxzZXMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX3B1bHNlcy5jCkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgc2lsa19kZWNvZGVfcHVsc2VzKAogICAgIHNpbGtfYXNzZXJ0KCAxIDw8
IExPRzJfU0hFTExfQ09ERUNfRlJBTUVfTEVOR1RIID09IFNIRUxMX0NPREVDX0ZSQU1FX0xFTkdU
SCApOwogICAgIGl0ZXIgPSBzaWxrX1JTSElGVCggZnJhbWVfbGVuZ3RoLCBMT0cyX1NIRUxMX0NP
REVDX0ZSQU1FX0xFTkdUSCApOwogICAgIGlmKCBpdGVyICogU0hFTExfQ09ERUNfRlJBTUVfTEVO
R1RIIDwgZnJhbWVfbGVuZ3RoICkgewotICAgICAgICBzaWxrX2Fzc2VydCggZnJhbWVfbGVuZ3Ro
ID09IDEyICogMTAgKTsgLyogTWFrZSBzdXJlIG9ubHkgaGFwcGVucyBmb3IgMTAgbXMgQCAxMiBr
SHogKi8KKyAgICAgICAgY2VsdF9hc3NlcnQoIGZyYW1lX2xlbmd0aCA9PSAxMiAqIDEwICk7IC8q
IE1ha2Ugc3VyZSBvbmx5IGhhcHBlbnMgZm9yIDEwIG1zIEAgMTIga0h6ICovCiAgICAgICAgIGl0
ZXIrKzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVyX3NldF9mcy5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Rl
Y29kZXJfc2V0X2ZzLmMKaW5kZXggZWVmMGZkMjVlMTgzNjkyYmRkNmQ4MTY5NTY0ZTQ1NzU0NGRm
NmQxMi4uZDlhMTNkMGYwY2FkZTk2ZWZiMjg4MjBmMDhiNzE4ZmU5NjhhN2Q5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL2RlY29kZXJfc2V0X2ZzLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZXJfc2V0X2ZzLmMKQEAgLTQw
LDggKzQwLDggQEAgb3B1c19pbnQgc2lsa19kZWNvZGVyX3NldF9mcygKIHsKICAgICBvcHVzX2lu
dCBmcmFtZV9sZW5ndGgsIHJldCA9IDA7CiAKLSAgICBzaWxrX2Fzc2VydCggZnNfa0h6ID09IDgg
fHwgZnNfa0h6ID09IDEyIHx8IGZzX2tIeiA9PSAxNiApOwotICAgIHNpbGtfYXNzZXJ0KCBwc0Rl
Yy0+bmJfc3ViZnIgPT0gTUFYX05CX1NVQkZSIHx8IHBzRGVjLT5uYl9zdWJmciA9PSBNQVhfTkJf
U1VCRlIvMiApOworICAgIGNlbHRfYXNzZXJ0KCBmc19rSHogPT0gOCB8fCBmc19rSHogPT0gMTIg
fHwgZnNfa0h6ID09IDE2ICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRGVjLT5uYl9zdWJmciA9PSBN
QVhfTkJfU1VCRlIgfHwgcHNEZWMtPm5iX3N1YmZyID09IE1BWF9OQl9TVUJGUi8yICk7CiAKICAg
ICAvKiBOZXcgKHN1YilmcmFtZSBsZW5ndGggKi8KICAgICBwc0RlYy0+c3ViZnJfbGVuZ3RoID0g
c2lsa19TTVVMQkIoIFNVQl9GUkFNRV9MRU5HVEhfTVMsIGZzX2tIeiApOwpAQCAtODYsNyArODYs
NyBAQCBvcHVzX2ludCBzaWxrX2RlY29kZXJfc2V0X2ZzKAogICAgICAgICAgICAgICAgIHBzRGVj
LT5waXRjaF9sYWdfbG93X2JpdHNfaUNERiA9IHNpbGtfdW5pZm9ybTRfaUNERjsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogdW5zdXBwb3J0ZWQgc2FtcGxpbmcgcmF0
ZSAqLwotICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgICAgICAgICAg
Y2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBzRGVjLT5maXJz
dF9mcmFtZV9hZnRlcl9yZXNldCA9IDE7CiAgICAgICAgICAgICBwc0RlYy0+bGFnUHJldiAgICAg
ICAgICAgICAgICAgPSAxMDA7CkBAIC0xMDEsNyArMTAxLDcgQEAgb3B1c19pbnQgc2lsa19kZWNv
ZGVyX3NldF9mcygKICAgICB9CiAKICAgICAvKiBDaGVjayB0aGF0IHNldHRpbmdzIGFyZSB2YWxp
ZCAqLwotICAgIHNpbGtfYXNzZXJ0KCBwc0RlYy0+ZnJhbWVfbGVuZ3RoID4gMCAmJiBwc0RlYy0+
ZnJhbWVfbGVuZ3RoIDw9IE1BWF9GUkFNRV9MRU5HVEggKTsKKyAgICBjZWx0X2Fzc2VydCggcHNE
ZWMtPmZyYW1lX2xlbmd0aCA+IDAgJiYgcHNEZWMtPmZyYW1lX2xlbmd0aCA8PSBNQVhfRlJBTUVf
TEVOR1RIICk7CiAKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlZmluZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL2RlZmluZS5oCmluZGV4IDIyZmQ3MjBiOTc2YWYyMzNlYzJkYWZjODNkNmQ5NWJlMjc5
M2VkNmIuLjQ5MWM4NmYzM2U5ZjUxMGNhOWNhOTQ1NDdhODBjNjg2Nzk5NmVhMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9kZWZpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVmaW5lLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgZXh0
ZXJuICJDIgogLyogTGltaXRzIG9uIGJpdHJhdGUgKi8KICNkZWZpbmUgTUlOX1RBUkdFVF9SQVRF
X0JQUyAgICAgICAgICAgICAgICAgICAgIDUwMDAKICNkZWZpbmUgTUFYX1RBUkdFVF9SQVRFX0JQ
UyAgICAgICAgICAgICAgICAgICAgIDgwMDAwCi0jZGVmaW5lIFRBUkdFVF9SQVRFX1RBQl9TWiAg
ICAgICAgICAgICAgICAgICAgICA4CiAKIC8qIExCUlIgdGhyZXNob2xkcyAqLwogI2RlZmluZSBM
QlJSX05CX01JTl9SQVRFX0JQUyAgICAgICAgICAgICAgICAgICAgMTIwMDAKQEAgLTIyNiw2ICsy
MjUsNyBAQCBleHRlcm4gIkMiCiAvKiBEZWZpbmVzIGZvciBDTiBnZW5lcmF0aW9uICovCiAjZGVm
aW5lIENOR19CVUZfTUFTS19NQVggICAgICAgICAgICAgICAgICAgICAgICAyNTUgICAgIC8qIDJe
Zmxvb3IobG9nMihNQVhfRlJBTUVfTEVOR1RIKSktMSAgICAqLwogI2RlZmluZSBDTkdfR0FJTl9T
TVRIX1ExNiAgICAgICAgICAgICAgICAgICAgICAgNDYzNCAgICAvKiAwLjI1XigxLzQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ05HX0dBSU5fU01USF9USFJFU0hPTERf
UTE2ICAgICAgICAgICAgIDQ2Mzk2ICAgLyogLTMgZEIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCiAjZGVmaW5lIENOR19OTFNGX1NNVEhfUTE2ICAgICAgICAgICAgICAgICAgICAg
ICAxNjM0OCAgIC8qIDAuMjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiAj
aWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9lbmNfQVBJLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZW5jX0FQ
SS5jCmluZGV4IDBhNjJhM2MxZDcyYWZkMGE2MjEyOGU0MmRjYWE4MDNhZDBmNDQzMTguLjU1YTMz
ZjM3ZTk4MDI3YTA5MWY0OTEyZmMzMjZhNzI4ZGY5ZjZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9lbmNf
QVBJLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2VuY19BUEkuYwpAQCAtODIsNyArODIsNyBAQCBvcHVzX2ludCBzaWxr
X0luaXRFbmNvZGVyKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJu
cyBlcnJvciBjbwogICAgIHNpbGtfbWVtc2V0KCBwc0VuYywgMCwgc2l6ZW9mKCBzaWxrX2VuY29k
ZXIgKSApOwogICAgIGZvciggbiA9IDA7IG4gPCBFTkNPREVSX05VTV9DSEFOTkVMUzsgbisrICkg
ewogICAgICAgICBpZiggcmV0ICs9IHNpbGtfaW5pdF9lbmNvZGVyKCAmcHNFbmMtPnN0YXRlX0Z4
eFsgbiBdLCBhcmNoICkgKSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAg
ICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTEsNyArOTEs
NyBAQCBvcHVzX2ludCBzaWxrX0luaXRFbmNvZGVyKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIE8gICAgUmV0dXJucyBlcnJvciBjbwogCiAgICAgLyogUmVhZCBjb250cm9sIHN0cnVj
dHVyZSAqLwogICAgIGlmKCByZXQgKz0gc2lsa19RdWVyeUVuY29kZXIoIGVuY1N0YXRlLCBlbmNT
dGF0dXMgKSApIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgY2VsdF9hc3Nl
cnQoIDAgKTsKICAgICB9CiAKICAgICByZXR1cm4gcmV0OwpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9w
dXNfaW50IHNpbGtfRW5jb2RlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
TyAgICBSZXR1cm5zIGVycm9yIGNvCiAKICAgICAvKiBDaGVjayB2YWx1ZXMgaW4gZW5jb2RlciBj
b250cm9sIHN0cnVjdHVyZSAqLwogICAgIGlmKCAoIHJldCA9IGNoZWNrX2NvbnRyb2xfaW5wdXQo
IGVuY0NvbnRyb2wgKSApICE9IDAgKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAg
ICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgIFJFU1RPUkVfU1RBQ0s7CiAgICAgICAgIHJl
dHVybiByZXQ7CiAgICAgfQpAQCAtMjAwLDE2ICsyMDAsMjYgQEAgb3B1c19pbnQgc2lsa19FbmNv
ZGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAgIFJldHVybnMgZXJy
b3IgY28KICAgICB0b3RfYmxvY2tzID0gKCBuQmxvY2tzT2YxMG1zID4gMSApID8gbkJsb2Nrc09m
MTBtcyA+PiAxIDogMTsKICAgICBjdXJyX2Jsb2NrID0gMDsKICAgICBpZiggcHJlZmlsbEZsYWcg
KSB7CisgICAgICAgIHNpbGtfTFBfc3RhdGUgc2F2ZV9MUDsKICAgICAgICAgLyogT25seSBhY2Nl
cHQgaW5wdXQgbGVuZ3RoIG9mIDEwIG1zICovCiAgICAgICAgIGlmKCBuQmxvY2tzT2YxMG1zICE9
IDEgKSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICAgICAgY2VsdF9h
c3NlcnQoIDAgKTsKICAgICAgICAgICAgIFJFU1RPUkVfU1RBQ0s7CiAgICAgICAgICAgICByZXR1
cm4gU0lMS19FTkNfSU5QVVRfSU5WQUxJRF9OT19PRl9TQU1QTEVTOwogICAgICAgICB9CisgICAg
ICAgIGlmICggcHJlZmlsbEZsYWcgPT0gMiApIHsKKyAgICAgICAgICAgIHNhdmVfTFAgPSBwc0Vu
Yy0+c3RhdGVfRnh4WyAwIF0uc0Ntbi5zTFA7CisgICAgICAgICAgICAvKiBTYXZlIHRoZSBzYW1w
bGluZyByYXRlIHNvIHRoZSBiYW5kd2lkdGggc3dpdGNoaW5nIGNvZGUgY2FuIGtlZXAgaGFuZGxp
bmcgdHJhbnNpdGlvbnMuICovCisgICAgICAgICAgICBzYXZlX0xQLnNhdmVkX2ZzX2tIeiA9IHBz
RW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLmZzX2tIejsKKyAgICAgICAgfQogICAgICAgICAvKiBS
ZXNldCBFbmNvZGVyICovCiAgICAgICAgIGZvciggbiA9IDA7IG4gPCBlbmNDb250cm9sLT5uQ2hh
bm5lbHNJbnRlcm5hbDsgbisrICkgewogICAgICAgICAgICAgcmV0ID0gc2lsa19pbml0X2VuY29k
ZXIoICZwc0VuYy0+c3RhdGVfRnh4WyBuIF0sIHBzRW5jLT5zdGF0ZV9GeHhbIG4gXS5zQ21uLmFy
Y2ggKTsKLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAhcmV0ICk7CisgICAgICAgICAgICAvKiBS
ZXN0b3JlIHRoZSB2YXJpYWJsZSBMUCBzdGF0ZS4gKi8KKyAgICAgICAgICAgIGlmICggcHJlZmls
bEZsYWcgPT0gMiApIHsKKyAgICAgICAgICAgICAgICBwc0VuYy0+c3RhdGVfRnh4WyBuIF0uc0Nt
bi5zTFAgPSBzYXZlX0xQOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2VsdF9hc3NlcnQo
ICFyZXQgKTsKICAgICAgICAgfQogICAgICAgICB0bXBfcGF5bG9hZFNpemVfbXMgPSBlbmNDb250
cm9sLT5wYXlsb2FkU2l6ZV9tczsKICAgICAgICAgZW5jQ29udHJvbC0+cGF5bG9hZFNpemVfbXMg
PSAxMDsKQEAgLTIyMiwxMyArMjMyLDEzIEBAIG9wdXNfaW50IHNpbGtfRW5jb2RlKCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm5zIGVycm9yIGNvCiAgICAg
fSBlbHNlIHsKICAgICAgICAgLyogT25seSBhY2NlcHQgaW5wdXQgbGVuZ3RocyB0aGF0IGFyZSBh
IG11bHRpcGxlIG9mIDEwIG1zICovCiAgICAgICAgIGlmKCBuQmxvY2tzT2YxMG1zICogZW5jQ29u
dHJvbC0+QVBJX3NhbXBsZVJhdGUgIT0gMTAwICogblNhbXBsZXNJbiB8fCBuU2FtcGxlc0luIDwg
MCApIHsKLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgICAgICBjZWx0X2Fz
c2VydCggMCApOwogICAgICAgICAgICAgUkVTVE9SRV9TVEFDSzsKICAgICAgICAgICAgIHJldHVy
biBTSUxLX0VOQ19JTlBVVF9JTlZBTElEX05PX09GX1NBTVBMRVM7CiAgICAgICAgIH0KICAgICAg
ICAgLyogTWFrZSBzdXJlIG5vIG1vcmUgdGhhbiBvbmUgcGFja2V0IGNhbiBiZSBwcm9kdWNlZCAq
LwogICAgICAgICBpZiggMTAwMCAqIChvcHVzX2ludDMyKW5TYW1wbGVzSW4gPiBlbmNDb250cm9s
LT5wYXlsb2FkU2l6ZV9tcyAqIGVuY0NvbnRyb2wtPkFQSV9zYW1wbGVSYXRlICkgewotICAgICAg
ICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAg
ICAgICAgICAgICBSRVNUT1JFX1NUQUNLOwogICAgICAgICAgICAgcmV0dXJuIFNJTEtfRU5DX0lO
UFVUX0lOVkFMSURfTk9fT0ZfU0FNUExFUzsKICAgICAgICAgfQpAQCAtMjQ5LDcgKzI1OSw3IEBA
IG9wdXNfaW50IHNpbGtfRW5jb2RlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTyAgICBSZXR1cm5zIGVycm9yIGNvCiAgICAgICAgIH0KICAgICAgICAgcHNFbmMtPnN0YXRl
X0Z4eFsgbiBdLnNDbW4uaW5EVFggPSBwc0VuYy0+c3RhdGVfRnh4WyBuIF0uc0Ntbi51c2VEVFg7
CiAgICAgfQotICAgIHNpbGtfYXNzZXJ0KCBlbmNDb250cm9sLT5uQ2hhbm5lbHNJbnRlcm5hbCA9
PSAxIHx8IHBzRW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLmZzX2tIeiA9PSBwc0VuYy0+c3RhdGVf
Rnh4WyAxIF0uc0Ntbi5mc19rSHogKTsKKyAgICBjZWx0X2Fzc2VydCggZW5jQ29udHJvbC0+bkNo
YW5uZWxzSW50ZXJuYWwgPT0gMSB8fCBwc0VuYy0+c3RhdGVfRnh4WyAwIF0uc0Ntbi5mc19rSHog
PT0gcHNFbmMtPnN0YXRlX0Z4eFsgMSBdLnNDbW4uZnNfa0h6ICk7CiAKICAgICAvKiBJbnB1dCBi
dWZmZXJpbmcvcmVzYW1wbGluZyBhbmQgZW5jb2RpbmcgKi8KICAgICBuU2FtcGxlc1RvQnVmZmVy
TWF4ID0KQEAgLTMwNyw3ICszMTcsNyBAQCBvcHVzX2ludCBzaWxrX0VuY29kZSggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJucyBlcnJvciBjbwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uaW5wdXRCdWZJ
eCArPSBuU2FtcGxlc1RvQnVmZmVyOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2ls
a19hc3NlcnQoIGVuY0NvbnRyb2wtPm5DaGFubmVsc0FQSSA9PSAxICYmIGVuY0NvbnRyb2wtPm5D
aGFubmVsc0ludGVybmFsID09IDEgKTsKKyAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBlbmNDb250
cm9sLT5uQ2hhbm5lbHNBUEkgPT0gMSAmJiBlbmNDb250cm9sLT5uQ2hhbm5lbHNJbnRlcm5hbCA9
PSAxICk7CiAgICAgICAgICAgICBzaWxrX21lbWNweShidWYsIHNhbXBsZXNJbiwgblNhbXBsZXNG
cm9tSW5wdXQqc2l6ZW9mKG9wdXNfaW50MTYpKTsKICAgICAgICAgICAgIHJldCArPSBzaWxrX3Jl
c2FtcGxlciggJnBzRW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLnJlc2FtcGxlcl9zdGF0ZSwKICAg
ICAgICAgICAgICAgICAmcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uaW5wdXRCdWZbIHBzRW5j
LT5zdGF0ZV9GeHhbIDAgXS5zQ21uLmlucHV0QnVmSXggKyAyIF0sIGJ1ZiwgblNhbXBsZXNGcm9t
SW5wdXQgKTsKQEAgLTMyMyw4ICszMzMsOCBAQCBvcHVzX2ludCBzaWxrX0VuY29kZSggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJucyBlcnJvciBjbwogICAg
ICAgICAvKiBTaWxrIGVuY29kZXIgKi8KICAgICAgICAgaWYoIHBzRW5jLT5zdGF0ZV9GeHhbIDAg
XS5zQ21uLmlucHV0QnVmSXggPj0gcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uZnJhbWVfbGVu
Z3RoICkgewogICAgICAgICAgICAgLyogRW5vdWdoIGRhdGEgaW4gaW5wdXQgYnVmZmVyLCBzbyBl
bmNvZGUgKi8KLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBwc0VuYy0+c3RhdGVfRnh4WyAwIF0u
c0Ntbi5pbnB1dEJ1Zkl4ID09IHBzRW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLmZyYW1lX2xlbmd0
aCApOwotICAgICAgICAgICAgc2lsa19hc3NlcnQoIGVuY0NvbnRyb2wtPm5DaGFubmVsc0ludGVy
bmFsID09IDEgfHwgcHNFbmMtPnN0YXRlX0Z4eFsgMSBdLnNDbW4uaW5wdXRCdWZJeCA9PSBwc0Vu
Yy0+c3RhdGVfRnh4WyAxIF0uc0Ntbi5mcmFtZV9sZW5ndGggKTsKKyAgICAgICAgICAgIGNlbHRf
YXNzZXJ0KCBwc0VuYy0+c3RhdGVfRnh4WyAwIF0uc0Ntbi5pbnB1dEJ1Zkl4ID09IHBzRW5jLT5z
dGF0ZV9GeHhbIDAgXS5zQ21uLmZyYW1lX2xlbmd0aCApOworICAgICAgICAgICAgY2VsdF9hc3Nl
cnQoIGVuY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFsID09IDEgfHwgcHNFbmMtPnN0YXRlX0Z4
eFsgMSBdLnNDbW4uaW5wdXRCdWZJeCA9PSBwc0VuYy0+c3RhdGVfRnh4WyAxIF0uc0Ntbi5mcmFt
ZV9sZW5ndGggKTsKIAogICAgICAgICAgICAgLyogRGVhbCB3aXRoIExCUlIgZGF0YSAqLwogICAg
ICAgICAgICAgaWYoIHBzRW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLm5GcmFtZXNFbmNvZGVkID09
IDAgJiYgIXByZWZpbGxGbGFnICkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2VuY29kZV9pbmRpY2VzLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvZW5jb2RlX2luZGljZXMuYwppbmRleCA2NjZjOGMwYjEzZTQ1OWY4M2U2Mjc4ZTNmZWZl
ZmIwZGU5N2Y5ODZjLi40YmNiYzMzNDdiN2QyYzFlNGZhYjdhNTEwOTI2NzE1MThkM2NhMzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvZW5jb2RlX2luZGljZXMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZW5jb2RlX2luZGljZXMu
YwpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIHNpbGtfZW5jb2RlX2luZGljZXMoCiAgICAgLyogRW5j
b2RlIHNpZ25hbCB0eXBlIGFuZCBxdWFudGl6ZXIgb2Zmc2V0ICovCiAgICAgLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAgICAgdHlwZU9mZnNldCA9IDIgKiBw
c0luZGljZXMtPnNpZ25hbFR5cGUgKyBwc0luZGljZXMtPnF1YW50T2Zmc2V0VHlwZTsKLSAgICBz
aWxrX2Fzc2VydCggdHlwZU9mZnNldCA+PSAwICYmIHR5cGVPZmZzZXQgPCA2ICk7Ci0gICAgc2ls
a19hc3NlcnQoIGVuY29kZV9MQlJSID09IDAgfHwgdHlwZU9mZnNldCA+PSAyICk7CisgICAgY2Vs
dF9hc3NlcnQoIHR5cGVPZmZzZXQgPj0gMCAmJiB0eXBlT2Zmc2V0IDwgNiApOworICAgIGNlbHRf
YXNzZXJ0KCBlbmNvZGVfTEJSUiA9PSAwIHx8IHR5cGVPZmZzZXQgPj0gMiApOwogICAgIGlmKCBl
bmNvZGVfTEJSUiB8fCB0eXBlT2Zmc2V0ID49IDIgKSB7CiAgICAgICAgIGVjX2VuY19pY2RmKCBw
c1JhbmdlRW5jLCB0eXBlT2Zmc2V0IC0gMiwgc2lsa190eXBlX29mZnNldF9WQURfaUNERiwgOCAp
OwogICAgIH0gZWxzZSB7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgc2lsa19lbmNvZGVfaW5kaWNl
cygKICAgICAvKioqKioqKioqKioqKioqKi8KICAgICBlY19lbmNfaWNkZiggcHNSYW5nZUVuYywg
cHNJbmRpY2VzLT5OTFNGSW5kaWNlc1sgMCBdLCAmcHNFbmNDLT5wc05MU0ZfQ0ItPkNCMV9pQ0RG
WyAoIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSA+PiAxICkgKiBwc0VuY0MtPnBzTkxTRl9DQi0+blZl
Y3RvcnMgXSwgOCApOwogICAgIHNpbGtfTkxTRl91bnBhY2soIGVjX2l4LCBwcmVkX1E4LCBwc0Vu
Y0MtPnBzTkxTRl9DQiwgcHNJbmRpY2VzLT5OTFNGSW5kaWNlc1sgMCBdICk7Ci0gICAgc2lsa19h
c3NlcnQoIHBzRW5jQy0+cHNOTFNGX0NCLT5vcmRlciA9PSBwc0VuY0MtPnByZWRpY3RMUENPcmRl
ciApOworICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPnBzTkxTRl9DQi0+b3JkZXIgPT0gcHNFbmND
LT5wcmVkaWN0TFBDT3JkZXIgKTsKICAgICBmb3IoIGkgPSAwOyBpIDwgcHNFbmNDLT5wc05MU0Zf
Q0ItPm9yZGVyOyBpKysgKSB7CiAgICAgICAgIGlmKCBwc0luZGljZXMtPk5MU0ZJbmRpY2VzWyBp
KzEgXSA+PSBOTFNGX1FVQU5UX01BWF9BTVBMSVRVREUgKSB7CiAgICAgICAgICAgICBlY19lbmNf
aWNkZiggcHNSYW5nZUVuYywgMiAqIE5MU0ZfUVVBTlRfTUFYX0FNUExJVFVERSwgJnBzRW5jQy0+
cHNOTFNGX0NCLT5lY19pQ0RGWyBlY19peFsgaSBdIF0sIDggKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9l
bmNvZGVfcHVsc2VzLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZW5jb2RlX3B1bHNlcy5jCmluZGV4IGFiMDAyNjRmOTkxNDNk
MWI5ODE1ZWM4M2I4ODE2NTEyMDVkNjMxNmIuLjhhMTk5OTEzOGIyM2ViZDBjYWI1YWJmZmU1Zjlk
NzIyYmYxMjlkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9lbmNvZGVfcHVsc2VzLmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Vu
Y29kZV9wdWxzZXMuYwpAQCAtODYsNyArODYsNyBAQCB2b2lkIHNpbGtfZW5jb2RlX3B1bHNlcygK
ICAgICBzaWxrX2Fzc2VydCggMSA8PCBMT0cyX1NIRUxMX0NPREVDX0ZSQU1FX0xFTkdUSCA9PSBT
SEVMTF9DT0RFQ19GUkFNRV9MRU5HVEggKTsKICAgICBpdGVyID0gc2lsa19SU0hJRlQoIGZyYW1l
X2xlbmd0aCwgTE9HMl9TSEVMTF9DT0RFQ19GUkFNRV9MRU5HVEggKTsKICAgICBpZiggaXRlciAq
IFNIRUxMX0NPREVDX0ZSQU1FX0xFTkdUSCA8IGZyYW1lX2xlbmd0aCApIHsKLSAgICAgICAgc2ls
a19hc3NlcnQoIGZyYW1lX2xlbmd0aCA9PSAxMiAqIDEwICk7IC8qIE1ha2Ugc3VyZSBvbmx5IGhh
cHBlbnMgZm9yIDEwIG1zIEAgMTIga0h6ICovCisgICAgICAgIGNlbHRfYXNzZXJ0KCBmcmFtZV9s
ZW5ndGggPT0gMTIgKiAxMCApOyAvKiBNYWtlIHN1cmUgb25seSBoYXBwZW5zIGZvciAxMCBtcyBA
IDEyIGtIeiAqLwogICAgICAgICBpdGVyKys7CiAgICAgICAgIHNpbGtfbWVtc2V0KCAmcHVsc2Vz
WyBmcmFtZV9sZW5ndGggXSwgMCwgU0hFTExfQ09ERUNfRlJBTUVfTEVOR1RIICogc2l6ZW9mKG9w
dXNfaW50OCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9hcHBseV9zaW5lX3dpbmRv
d19GSVguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9maXhlZC9hcHBseV9zaW5lX3dpbmRvd19GSVguYwppbmRleCA0NTAyYjcx
MzBlOTcwZTY1N2ZmNDQ1ODdmMWYzYmY0YjY4MTc2MDc2Li4wM2UwODhhNmRlOTk4NzM4MTEyNDY4
YWY2OTFjZjJlZWJiODFiZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvYXBwbHlfc2luZV93aW5k
b3dfRklYLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2FwcGx5X3NpbmVfd2luZG93X0ZJWC5jCkBAIC01Nywx
NSArNTcsMTUgQEAgdm9pZCBzaWxrX2FwcGx5X3NpbmVfd2luZG93KAogICAgIG9wdXNfaW50ICAg
aywgZl9RMTYsIGNfUTE2OwogICAgIG9wdXNfaW50MzIgUzBfUTE2LCBTMV9RMTY7CiAKLSAgICBz
aWxrX2Fzc2VydCggd2luX3R5cGUgPT0gMSB8fCB3aW5fdHlwZSA9PSAyICk7CisgICAgY2VsdF9h
c3NlcnQoIHdpbl90eXBlID09IDEgfHwgd2luX3R5cGUgPT0gMiApOwogCiAgICAgLyogTGVuZ3Ro
IG11c3QgYmUgaW4gYSByYW5nZSBmcm9tIDE2IHRvIDEyMCBhbmQgYSBtdWx0aXBsZSBvZiA0ICov
Ci0gICAgc2lsa19hc3NlcnQoIGxlbmd0aCA+PSAxNiAmJiBsZW5ndGggPD0gMTIwICk7Ci0gICAg
c2lsa19hc3NlcnQoICggbGVuZ3RoICYgMyApID09IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggbGVu
Z3RoID49IDE2ICYmIGxlbmd0aCA8PSAxMjAgKTsKKyAgICBjZWx0X2Fzc2VydCggKCBsZW5ndGgg
JiAzICkgPT0gMCApOwogCiAgICAgLyogRnJlcXVlbmN5ICovCiAgICAgayA9ICggbGVuZ3RoID4+
IDIgKSAtIDQ7Ci0gICAgc2lsa19hc3NlcnQoIGsgPj0gMCAmJiBrIDw9IDI2ICk7CisgICAgY2Vs
dF9hc3NlcnQoIGsgPj0gMCAmJiBrIDw9IDI2ICk7CiAgICAgZl9RMTYgPSAob3B1c19pbnQpZnJl
cV90YWJsZV9RMTZbIGsgXTsKIAogICAgIC8qIEZhY3RvciB1c2VkIGZvciBjb3NpbmUgYXBwcm94
aW1hdGlvbiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2J1cmdfbW9kaWZpZWRfRklYLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZml4ZWQvYnVyZ19tb2RpZmllZF9GSVguYwppbmRleCA4MGVkYmRmYThhNjUxNDA4NDhjMmU4
OTAzMTkwYmNkODVhNWY5MGI3Li4yNzRkNGIyOGUxMTI1OTc3MWM2ZGE0N2Y0MjNiNjNmZjkwZmVh
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvYnVyZ19tb2RpZmllZF9GSVguYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
Zml4ZWQvYnVyZ19tb2RpZmllZF9GSVguYwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIHNpbGtfYnVy
Z19tb2RpZmllZF9jKAogICAgIG9wdXNfaW50MzIgICAgICAgeGNvcnJbIFNJTEtfTUFYX09SREVS
X0xQQyBdOwogICAgIG9wdXNfaW50NjQgICAgICAgQzBfNjQ7CiAKLSAgICBzaWxrX2Fzc2VydCgg
c3ViZnJfbGVuZ3RoICogbmJfc3ViZnIgPD0gTUFYX0ZSQU1FX1NJWkUgKTsKKyAgICBjZWx0X2Fz
c2VydCggc3ViZnJfbGVuZ3RoICogbmJfc3ViZnIgPD0gTUFYX0ZSQU1FX1NJWkUgKTsKIAogICAg
IC8qIENvbXB1dGUgYXV0b2NvcnJlbGF0aW9ucywgYWRkZWQgb3ZlciBzdWJmcmFtZXMgKi8KICAg
ICBDMF82NCA9IHNpbGtfaW5uZXJfcHJvZDE2X2FsaWduZWRfNjQoIHgsIHgsIHN1YmZyX2xlbmd0
aCpuYl9zdWJmciwgYXJjaCApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2VuY29kZV9mcmFtZV9G
SVguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay9maXhlZC9lbmNvZGVfZnJhbWVfRklYLmMKaW5kZXggZjZlZTgxM2I5N2ZhNTY0
ZDMzZjk2NDhlMDgwZjk4NDE1OWM5NDRjMy4uYTAyYmY4N2RiYjE4NDY2Y2ZmM2M3ZjE2ZjBhZGIw
NGQ5ZjkwNmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2VuY29kZV9mcmFtZV9GSVguYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvZml4ZWQvZW5jb2RlX2ZyYW1lX0ZJWC5jCkBAIC0yNjIsNyArMjYyLDcgQEAgb3B1c19p
bnQgc2lsa19lbmNvZGVfZnJhbWVfRklYKAogICAgICAgICAgICAgICAgIGlmKCBmb3VuZF9sb3dl
ciAmJiAoIGdhaW5zSUQgPT0gZ2FpbnNJRF9sb3dlciB8fCBuQml0cyA+IG1heEJpdHMgKSApIHsK
ICAgICAgICAgICAgICAgICAgICAgLyogUmVzdG9yZSBvdXRwdXQgc3RhdGUgZnJvbSBlYXJsaWVy
IGl0ZXJhdGlvbiB0aGF0IGRpZCBtZWV0IHRoZSBiaXRyYXRlIGJ1ZGdldCAqLwogICAgICAgICAg
ICAgICAgICAgICBzaWxrX21lbWNweSggcHNSYW5nZUVuYywgJnNSYW5nZUVuY19jb3B5Miwgc2l6
ZW9mKCBlY19lbmMgKSApOwotICAgICAgICAgICAgICAgICAgICBzaWxrX2Fzc2VydCggc1Jhbmdl
RW5jX2NvcHkyLm9mZnMgPD0gMTI3NSApOworICAgICAgICAgICAgICAgICAgICBjZWx0X2Fzc2Vy
dCggc1JhbmdlRW5jX2NvcHkyLm9mZnMgPD0gMTI3NSApOwogICAgICAgICAgICAgICAgICAgICBz
aWxrX21lbWNweSggcHNSYW5nZUVuYy0+YnVmLCBlY19idWZfY29weSwgc1JhbmdlRW5jX2NvcHky
Lm9mZnMgKTsKICAgICAgICAgICAgICAgICAgICAgc2lsa19tZW1jcHkoICZwc0VuYy0+c0Ntbi5z
TlNRLCAmc05TUV9jb3B5Miwgc2l6ZW9mKCBzaWxrX25zcV9zdGF0ZSApICk7CiAgICAgICAgICAg
ICAgICAgICAgIHBzRW5jLT5zU2hhcGUuTGFzdEdhaW5JbmRleCA9IExhc3RHYWluSW5kZXhfY29w
eTI7CkBAIC0yOTAsNyArMjkwLDcgQEAgb3B1c19pbnQgc2lsa19lbmNvZGVfZnJhbWVfRklYKAog
ICAgICAgICAgICAgICAgICAgICBnYWluc0lEX2xvd2VyID0gZ2FpbnNJRDsKICAgICAgICAgICAg
ICAgICAgICAgLyogQ29weSBwYXJ0IG9mIHRoZSBvdXRwdXQgc3RhdGUgKi8KICAgICAgICAgICAg
ICAgICAgICAgc2lsa19tZW1jcHkoICZzUmFuZ2VFbmNfY29weTIsIHBzUmFuZ2VFbmMsIHNpemVv
ZiggZWNfZW5jICkgKTsKLSAgICAgICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHBzUmFuZ2VF
bmMtPm9mZnMgPD0gMTI3NSApOworICAgICAgICAgICAgICAgICAgICBjZWx0X2Fzc2VydCggcHNS
YW5nZUVuYy0+b2ZmcyA8PSAxMjc1ICk7CiAgICAgICAgICAgICAgICAgICAgIHNpbGtfbWVtY3B5
KCBlY19idWZfY29weSwgcHNSYW5nZUVuYy0+YnVmLCBwc1JhbmdlRW5jLT5vZmZzICk7CiAgICAg
ICAgICAgICAgICAgICAgIHNpbGtfbWVtY3B5KCAmc05TUV9jb3B5MiwgJnBzRW5jLT5zQ21uLnNO
U1EsIHNpemVvZiggc2lsa19uc3Ffc3RhdGUgKSApOwogICAgICAgICAgICAgICAgICAgICBMYXN0
R2FpbkluZGV4X2NvcHkyID0gcHNFbmMtPnNTaGFwZS5MYXN0R2FpbkluZGV4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL2ZpeGVkL2ZpbmRfTFBDX0ZJWC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2ZpbmRfTFBDX0ZJWC5jCmlu
ZGV4IGU1NWI2M2FjMzI5YTIxNGRjNWFjOWZmNDA4OTM5NDNlMzNhZDA4M2QuLmM3NjJhMGYyYTJl
ZDQzOTRhMjVmMTQzYjdmNWUxODY2OGFmZDU1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5k
X0xQQ19GSVguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZmluZF9MUENfRklYLmMKQEAgLTE0Niw2ICsxNDYs
NiBAQCB2b2lkIHNpbGtfZmluZF9MUENfRklYKAogICAgICAgICBzaWxrX0EyTkxTRiggTkxTRl9R
MTUsIGFfUTE2LCBwc0VuY0MtPnByZWRpY3RMUENPcmRlciApOwogICAgIH0KIAotICAgIHNpbGtf
YXNzZXJ0KCBwc0VuY0MtPmluZGljZXMuTkxTRkludGVycENvZWZfUTIgPT0gNCB8fCAoIHBzRW5j
Qy0+dXNlSW50ZXJwb2xhdGVkTkxTRnMgJiYgIXBzRW5jQy0+Zmlyc3RfZnJhbWVfYWZ0ZXJfcmVz
ZXQgJiYgcHNFbmNDLT5uYl9zdWJmciA9PSBNQVhfTkJfU1VCRlIgKSApOworICAgIGNlbHRfYXNz
ZXJ0KCBwc0VuY0MtPmluZGljZXMuTkxTRkludGVycENvZWZfUTIgPT0gNCB8fCAoIHBzRW5jQy0+
dXNlSW50ZXJwb2xhdGVkTkxTRnMgJiYgIXBzRW5jQy0+Zmlyc3RfZnJhbWVfYWZ0ZXJfcmVzZXQg
JiYgcHNFbmNDLT5uYl9zdWJmciA9PSBNQVhfTkJfU1VCRlIgKSApOwogICAgIFJFU1RPUkVfU1RB
Q0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZmluZF9waXRjaF9sYWdzX0ZJWC5jIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2ZpeGVkL2ZpbmRfcGl0Y2hfbGFnc19GSVguYwppbmRleCA5MzAzZTlkYjFmMzM4Y2NjMTc3MWU5
MGNiNmI1M2MwNWU2MDU0N2RiLi42YzMzNzlmMmJiMDU3OWM0MDIwZTI5NWMzZWU1YWFhY2EzMTFi
YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZmluZF9waXRjaF9sYWdzX0ZJWC5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9maXhlZC9maW5kX3BpdGNoX2xhZ3NfRklYLmMKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBzaWxr
X2ZpbmRfcGl0Y2hfbGFnc19GSVgoCiAgICAgYnVmX2xlbiA9IHBzRW5jLT5zQ21uLmxhX3BpdGNo
ICsgcHNFbmMtPnNDbW4uZnJhbWVfbGVuZ3RoICsgcHNFbmMtPnNDbW4ubHRwX21lbV9sZW5ndGg7
CiAKICAgICAvKiBTYWZldHkgY2hlY2sgKi8KLSAgICBzaWxrX2Fzc2VydCggYnVmX2xlbiA+PSBw
c0VuYy0+c0Ntbi5waXRjaF9MUENfd2luX2xlbmd0aCApOworICAgIGNlbHRfYXNzZXJ0KCBidWZf
bGVuID49IHBzRW5jLT5zQ21uLnBpdGNoX0xQQ193aW5fbGVuZ3RoICk7CiAKICAgICAvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAvKiBFc3RpbWF0ZSBMUEMgQVIg
Y29lZmZpY2llbnRzICAgICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5kX3ByZWRfY29l
ZnNfRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvZml4ZWQvZmluZF9wcmVkX2NvZWZzX0ZJWC5jCmluZGV4IDI0YzZhYWIz
YTc3Yzk1ZTFjOTA0NjZlM2NmYjEzMWU1MmI4MWUxMDQuLjYwNmQ4NjMzNDc2MGMwMDAxNDVlOGMz
MjIyMDIxNjViODY5ZjE2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5kX3ByZWRfY29lZnNf
RklYLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2ZpbmRfcHJlZF9jb2Vmc19GSVguYwpAQCAtODAsNyArODAs
NyBAQCB2b2lkIHNpbGtfZmluZF9wcmVkX2NvZWZzX0ZJWCgKICAgICAgICAgLyoqKioqKioqKiov
CiAgICAgICAgIC8qIFZPSUNFRCAqLwogICAgICAgICAvKioqKioqKioqKi8KLSAgICAgICAgc2ls
a19hc3NlcnQoIHBzRW5jLT5zQ21uLmx0cF9tZW1fbGVuZ3RoIC0gcHNFbmMtPnNDbW4ucHJlZGlj
dExQQ09yZGVyID49IHBzRW5jQ3RybC0+cGl0Y2hMWyAwIF0gKyBMVFBfT1JERVIgLyAyICk7Cisg
ICAgICAgIGNlbHRfYXNzZXJ0KCBwc0VuYy0+c0Ntbi5sdHBfbWVtX2xlbmd0aCAtIHBzRW5jLT5z
Q21uLnByZWRpY3RMUENPcmRlciA+PSBwc0VuY0N0cmwtPnBpdGNoTFsgMCBdICsgTFRQX09SREVS
IC8gMiApOwogCiAgICAgICAgIEFMTE9DKCB4WExUUF9RMTcsIHBzRW5jLT5zQ21uLm5iX3N1YmZy
ICogTFRQX09SREVSLCBvcHVzX2ludDMyICk7CiAgICAgICAgIEFMTE9DKCBYWExUUF9RMTcsIHBz
RW5jLT5zQ21uLm5iX3N1YmZyICogTFRQX09SREVSICogTFRQX09SREVSLCBvcHVzX2ludDMyICk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvbWlwcy93YXJwZWRfYXV0b2NvcnJlbGF0aW9uX0ZJWF9t
aXBzcjEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9maXhlZC9taXBzL3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX21pcHNy
MS5oCmluZGV4IGZjYmQ5NmM4OGQ5OGFhYTA1YjNlNGE1Yzk1NmUyZWFiMDliNmJjNDUuLjY2ZWIy
ZWQyNmQxMWViYjk3OGU0MzhlNTJhZWVlNWIzNjE3MTZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhl
ZC9taXBzL3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX21pcHNyMS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhl
ZC9taXBzL3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX21pcHNyMS5oCkBAIC00MSwxNSArNDEs
MTQgQEAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjZGVmaW5lIFFTICAxNAogCiAvKiBB
dXRvY29ycmVsYXRpb25zIGZvciBhIHdhcnBlZCBmcmVxdWVuY3kgYXhpcyAqLwotI2RlZmluZSBP
VkVSUklERV9zaWxrX3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYCi12b2lkIHNpbGtfd2FycGVk
X2F1dG9jb3JyZWxhdGlvbl9GSVgoCisjZGVmaW5lIE9WRVJSSURFX3NpbGtfd2FycGVkX2F1dG9j
b3JyZWxhdGlvbl9GSVhfYwordm9pZCBzaWxrX3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX2Mo
CiAgICAgICAgICAgb3B1c19pbnQzMiAgICAgICAgICAgICAgICAqY29yciwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXN1bHQgW29yZGVyICsgMV0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAg
ICAgICBvcHVzX2ludCAgICAgICAgICAgICAgICAgICpzY2FsZSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBPICAgIFNjYWxpbmcgb2YgdGhlIGNvcnJlbGF0aW9uIHZlY3RvciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIGNvbnN0IG9w
dXNfaW50MTYgICAgICAgICAgICAgICAgKmlucHV0LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgSW5wdXQgZGF0YSB0byBjb3JyZWxhdGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgY29uc3Qgb3B1c19pbnQg
ICAgICAgICAgICAgICAgICB3YXJwaW5nX1ExNiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogSSAgICBXYXJwaW5nIGNvZWZmaWNpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICBjb25zdCBvcHVzX2ludCAgICAgICAg
ICAgICAgICAgIGxlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAg
IExlbmd0aCBvZiBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICAg
ICAgb3JkZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgQ29ycmVs
YXRpb24gb3JkZXIgKGV2ZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCi0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBSdW4tdGltZSBhcmNo
aXRlY3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgICAgIG9yZGVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIENvcnJlbGF0aW9uIG9yZGVyIChl
dmVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
LwogKQogewogICAgIG9wdXNfaW50ICAgbiwgaSwgbHNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVk
L3BpdGNoX2FuYWx5c2lzX2NvcmVfRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvcGl0Y2hfYW5hbHlzaXNfY29y
ZV9GSVguYwppbmRleCA4ZGYxMDllNmNmNTExMDdlNDc3NmM3MDNlMmE1NjJkODliODI2ZmVmLi4x
NDcyOTA0NmQyOTM2MGMzZTk5MzdiNjFhMDg4YWY3OTk0OWE1NTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
Zml4ZWQvcGl0Y2hfYW5hbHlzaXNfY29yZV9GSVguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvcGl0Y2hfYW5h
bHlzaXNfY29yZV9GSVguYwpAQCAtMTIyLDExICsxMjIsMTEgQEAgb3B1c19pbnQgc2lsa19waXRj
aF9hbmFseXNpc19jb3JlKCAgICAgICAgICAgICAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0
ZTogMAogICAgIFNBVkVfU1RBQ0s7CiAKICAgICAvKiBDaGVjayBmb3IgdmFsaWQgc2FtcGxpbmcg
ZnJlcXVlbmN5ICovCi0gICAgc2lsa19hc3NlcnQoIEZzX2tIeiA9PSA4IHx8IEZzX2tIeiA9PSAx
MiB8fCBGc19rSHogPT0gMTYgKTsKKyAgICBjZWx0X2Fzc2VydCggRnNfa0h6ID09IDggfHwgRnNf
a0h6ID09IDEyIHx8IEZzX2tIeiA9PSAxNiApOwogCiAgICAgLyogQ2hlY2sgZm9yIHZhbGlkIGNv
bXBsZXhpdHkgc2V0dGluZyAqLwotICAgIHNpbGtfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtf
UEVfTUlOX0NPTVBMRVggKTsKLSAgICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BF
X01BWF9DT01QTEVYICk7CisgICAgY2VsdF9hc3NlcnQoIGNvbXBsZXhpdHkgPj0gU0lMS19QRV9N
SU5fQ09NUExFWCApOworICAgIGNlbHRfYXNzZXJ0KCBjb21wbGV4aXR5IDw9IFNJTEtfUEVfTUFY
X0NPTVBMRVggKTsKIAogICAgIHNpbGtfYXNzZXJ0KCBzZWFyY2hfdGhyZXMxX1ExNiA+PSAwICYm
IHNlYXJjaF90aHJlczFfUTE2IDw9ICgxPDwxNikgKTsKICAgICBzaWxrX2Fzc2VydCggc2VhcmNo
X3RocmVzMl9RMTMgPj0gMCAmJiBzZWFyY2hfdGhyZXMyX1ExMyA8PSAoMTw8MTMpICk7CkBAIC0x
NjQsNyArMTY0LDcgQEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNpc19jb3JlKCAgICAgICAg
ICAgICAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMAogICAgICAgICBzaWxrX3Jlc2Ft
cGxlcl9kb3duMl8zKCBmaWx0X3N0YXRlLCBmcmFtZV84a0h6X2J1ZiwgZnJhbWUsIGZyYW1lX2xl
bmd0aCApOwogICAgICAgICBmcmFtZV84a0h6ID0gZnJhbWVfOGtIel9idWY7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgc2lsa19hc3NlcnQoIEZzX2tIeiA9PSA4ICk7CisgICAgICAgIGNlbHRfYXNz
ZXJ0KCBGc19rSHogPT0gOCApOwogICAgICAgICBmcmFtZV84a0h6ID0gZnJhbWU7CiAgICAgfQog
CkBAIC0xODgsMTQgKzE4OCwxNCBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmUo
ICAgICAgICAgICAgICAgICAgLyogTyAgICBWb2ljaW5nIGVzdGltYXRlOiAwCiAgICAgdGFyZ2V0
X3B0ciA9ICZmcmFtZV80a0h6WyBzaWxrX0xTSElGVCggU0ZfTEVOR1RIXzRLSFosIDIgKSBdOwog
ICAgIGZvciggayA9IDA7IGsgPCBuYl9zdWJmciA+PiAxOyBrKysgKSB7CiAgICAgICAgIC8qIENo
ZWNrIHRoYXQgd2UgYXJlIHdpdGhpbiByYW5nZSBvZiB0aGUgYXJyYXkgKi8KLSAgICAgICAgc2ls
a19hc3NlcnQoIHRhcmdldF9wdHIgPj0gZnJhbWVfNGtIeiApOwotICAgICAgICBzaWxrX2Fzc2Vy
dCggdGFyZ2V0X3B0ciArIFNGX0xFTkdUSF84S0haIDw9IGZyYW1lXzRrSHogKyBmcmFtZV9sZW5n
dGhfNGtIeiApOworICAgICAgICBjZWx0X2Fzc2VydCggdGFyZ2V0X3B0ciA+PSBmcmFtZV80a0h6
ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCB0YXJnZXRfcHRyICsgU0ZfTEVOR1RIXzhLSFogPD0g
ZnJhbWVfNGtIeiArIGZyYW1lX2xlbmd0aF80a0h6ICk7CiAKICAgICAgICAgYmFzaXNfcHRyID0g
dGFyZ2V0X3B0ciAtIE1JTl9MQUdfNEtIWjsKIAogICAgICAgICAvKiBDaGVjayB0aGF0IHdlIGFy
ZSB3aXRoaW4gcmFuZ2Ugb2YgdGhlIGFycmF5ICovCi0gICAgICAgIHNpbGtfYXNzZXJ0KCBiYXNp
c19wdHIgPj0gZnJhbWVfNGtIeiApOwotICAgICAgICBzaWxrX2Fzc2VydCggYmFzaXNfcHRyICsg
U0ZfTEVOR1RIXzhLSFogPD0gZnJhbWVfNGtIeiArIGZyYW1lX2xlbmd0aF80a0h6ICk7CisgICAg
ICAgIGNlbHRfYXNzZXJ0KCBiYXNpc19wdHIgPj0gZnJhbWVfNGtIeiApOworICAgICAgICBjZWx0
X2Fzc2VydCggYmFzaXNfcHRyICsgU0ZfTEVOR1RIXzhLSFogPD0gZnJhbWVfNGtIeiArIGZyYW1l
X2xlbmd0aF80a0h6ICk7CiAKICAgICAgICAgY2VsdF9waXRjaF94Y29yciggdGFyZ2V0X3B0ciwg
dGFyZ2V0X3B0ciAtIE1BWF9MQUdfNEtIWiwgeGNvcnIzMiwgU0ZfTEVOR1RIXzhLSFosIE1BWF9M
QUdfNEtIWiAtIE1JTl9MQUdfNEtIWiArIDEsIGFyY2ggKTsKIApAQCAtMjQ5LDcgKzI0OSw3IEBA
IG9wdXNfaW50IHNpbGtfcGl0Y2hfYW5hbHlzaXNfY29yZSggICAgICAgICAgICAgICAgICAvKiBP
ICAgIFZvaWNpbmcgZXN0aW1hdGU6IDAKIAogICAgIC8qIFNvcnQgKi8KICAgICBsZW5ndGhfZF9z
cmNoID0gc2lsa19BRERfTFNISUZUMzIoIDQsIGNvbXBsZXhpdHksIDEgKTsKLSAgICBzaWxrX2Fz
c2VydCggMyAqIGxlbmd0aF9kX3NyY2ggPD0gUEVfRF9TUkNIX0xFTkdUSCApOworICAgIGNlbHRf
YXNzZXJ0KCAzICogbGVuZ3RoX2Rfc3JjaCA8PSBQRV9EX1NSQ0hfTEVOR1RIICk7CiAgICAgc2ls
a19pbnNlcnRpb25fc29ydF9kZWNyZWFzaW5nX2ludDE2KCBDLCBkX3NyY2gsIENTVFJJREVfNEtI
WiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF9kX3Ny
Y2ggKTsKIApAQCAtMjc0LDcgKzI3NCw3IEBAIG9wdXNfaW50IHNpbGtfcGl0Y2hfYW5hbHlzaXNf
Y29yZSggICAgICAgICAgICAgICAgICAvKiBPICAgIFZvaWNpbmcgZXN0aW1hdGU6IDAKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHNpbGtfYXNzZXJ0KCBsZW5ndGhf
ZF9zcmNoID4gMCApOworICAgIGNlbHRfYXNzZXJ0KCBsZW5ndGhfZF9zcmNoID4gMCApOwogCiAg
ICAgQUxMT0MoIGRfY29tcCwgRF9DT01QX1NUUklERSwgb3B1c19pbnQxNiApOwogICAgIGZvcigg
aSA9IERfQ09NUF9NSU47IGkgPCBEX0NPTVBfTUFYOyBpKysgKSB7CkBAIC0zMjUsOCArMzI1LDgg
QEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNpc19jb3JlKCAgICAgICAgICAgICAgICAgIC8q
IE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMAogICAgIGZvciggayA9IDA7IGsgPCBuYl9zdWJmcjsg
aysrICkgewogCiAgICAgICAgIC8qIENoZWNrIHRoYXQgd2UgYXJlIHdpdGhpbiByYW5nZSBvZiB0
aGUgYXJyYXkgKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIHRhcmdldF9wdHIgPj0gZnJhbWVfOGtI
eiApOwotICAgICAgICBzaWxrX2Fzc2VydCggdGFyZ2V0X3B0ciArIFNGX0xFTkdUSF84S0haIDw9
IGZyYW1lXzhrSHogKyBmcmFtZV9sZW5ndGhfOGtIeiApOworICAgICAgICBjZWx0X2Fzc2VydCgg
dGFyZ2V0X3B0ciA+PSBmcmFtZV84a0h6ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCB0YXJnZXRf
cHRyICsgU0ZfTEVOR1RIXzhLSFogPD0gZnJhbWVfOGtIeiArIGZyYW1lX2xlbmd0aF84a0h6ICk7
CiAKICAgICAgICAgZW5lcmd5X3RhcmdldCA9IHNpbGtfQUREMzIoIHNpbGtfaW5uZXJfcHJvZF9h
bGlnbmVkKCB0YXJnZXRfcHRyLCB0YXJnZXRfcHRyLCBTRl9MRU5HVEhfOEtIWiwgYXJjaCApLCAx
ICk7CiAgICAgICAgIGZvciggaiA9IDA7IGogPCBsZW5ndGhfZF9jb21wOyBqKysgKSB7CkBAIC01
NTAsNyArNTUwLDcgQEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNpc19jb3JlKCAgICAgICAg
ICAgICAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMAogICAgICAgICAqbGFnSW5kZXgg
PSAob3B1c19pbnQxNikoIGxhZyAtIE1JTl9MQUdfOEtIWiApOwogICAgICAgICAqY29udG91cklu
ZGV4ID0gKG9wdXNfaW50OClDQmltYXg7CiAgICAgfQotICAgIHNpbGtfYXNzZXJ0KCAqbGFnSW5k
ZXggPj0gMCApOworICAgIGNlbHRfYXNzZXJ0KCAqbGFnSW5kZXggPj0gMCApOwogICAgIC8qIHJl
dHVybiBhcyB2b2ljZWQgKi8KICAgICBSRVNUT1JFX1NUQUNLOwogICAgIHJldHVybiAwOwpAQCAt
NTg3LDggKzU4Nyw4IEBAIHN0YXRpYyB2b2lkIHNpbGtfUF9BbmFfY2FsY19jb3JyX3N0MygKICAg
ICBjb25zdCBvcHVzX2ludDggKkxhZ19yYW5nZV9wdHIsICpMYWdfQ0JfcHRyOwogICAgIFNBVkVf
U1RBQ0s7CiAKLSAgICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BFX01JTl9DT01Q
TEVYICk7Ci0gICAgc2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9NQVhfQ09NUExF
WCApOworICAgIGNlbHRfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtfUEVfTUlOX0NPTVBMRVgg
KTsKKyAgICBjZWx0X2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BFX01BWF9DT01QTEVYICk7
CiAKICAgICBpZiggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSICkgewogICAgICAgICBMYWdf
cmFuZ2VfcHRyID0gJnNpbGtfTGFnX3JhbmdlX3N0YWdlM1sgY29tcGxleGl0eSBdWyAwIF1bIDAg
XTsKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgdm9pZCBzaWxrX1BfQW5hX2NhbGNfY29ycl9z
dDMoCiAgICAgICAgIG5iX2Nia19zZWFyY2ggPSBzaWxrX25iX2Nia19zZWFyY2hzX3N0YWdlM1sg
Y29tcGxleGl0eSBdOwogICAgICAgICBjYmtfc2l6ZSAgICAgID0gUEVfTkJfQ0JLU19TVEFHRTNf
TUFYOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9N
QVhfTkJfU1VCRlIgPj4gMSk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9N
QVhfTkJfU1VCRlIgPj4gMSk7CiAgICAgICAgIExhZ19yYW5nZV9wdHIgPSAmc2lsa19MYWdfcmFu
Z2Vfc3RhZ2UzXzEwX21zWyAwIF1bIDAgXTsKICAgICAgICAgTGFnX0NCX3B0ciAgICA9ICZzaWxr
X0NCX2xhZ3Nfc3RhZ2UzXzEwX21zWyAwIF1bIDAgXTsKICAgICAgICAgbmJfY2JrX3NlYXJjaCA9
IFBFX05CX0NCS1NfU1RBR0UzXzEwTVM7CkBAIC02MTIsNyArNjEyLDcgQEAgc3RhdGljIHZvaWQg
c2lsa19QX0FuYV9jYWxjX2NvcnJfc3QzKAogICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIGNvcnJl
bGF0aW9ucyBmb3IgZWFjaCBzdWJmcmFtZSAqLwogICAgICAgICBsYWdfbG93ICA9IG1hdHJpeF9w
dHIoIExhZ19yYW5nZV9wdHIsIGssIDAsIDIgKTsKICAgICAgICAgbGFnX2hpZ2ggPSBtYXRyaXhf
cHRyKCBMYWdfcmFuZ2VfcHRyLCBrLCAxLCAyICk7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KGxhZ19o
aWdoLWxhZ19sb3crMSA8PSBTQ1JBVENIX1NJWkUpOworICAgICAgICBjZWx0X2Fzc2VydChsYWdf
aGlnaC1sYWdfbG93KzEgPD0gU0NSQVRDSF9TSVpFKTsKICAgICAgICAgY2VsdF9waXRjaF94Y29y
ciggdGFyZ2V0X3B0ciwgdGFyZ2V0X3B0ciAtIHN0YXJ0X2xhZyAtIGxhZ19oaWdoLCB4Y29ycjMy
LCBzZl9sZW5ndGgsIGxhZ19oaWdoIC0gbGFnX2xvdyArIDEsIGFyY2ggKTsKICAgICAgICAgZm9y
KCBqID0gbGFnX2xvdzsgaiA8PSBsYWdfaGlnaDsgaisrICkgewogICAgICAgICAgICAgc2lsa19h
c3NlcnQoIGxhZ19jb3VudGVyIDwgU0NSQVRDSF9TSVpFICk7CkBAIC02NTksOCArNjU5LDggQEAg
c3RhdGljIHZvaWQgc2lsa19QX0FuYV9jYWxjX2VuZXJneV9zdDMoCiAgICAgY29uc3Qgb3B1c19p
bnQ4ICpMYWdfcmFuZ2VfcHRyLCAqTGFnX0NCX3B0cjsKICAgICBTQVZFX1NUQUNLOwogCi0gICAg
c2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPj0gU0lMS19QRV9NSU5fQ09NUExFWCApOwotICAgIHNp
bGtfYXNzZXJ0KCBjb21wbGV4aXR5IDw9IFNJTEtfUEVfTUFYX0NPTVBMRVggKTsKKyAgICBjZWx0
X2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BFX01JTl9DT01QTEVYICk7CisgICAgY2VsdF9h
c3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9NQVhfQ09NUExFWCApOwogCiAgICAgaWYoIG5i
X3N1YmZyID09IFBFX01BWF9OQl9TVUJGUiApIHsKICAgICAgICAgTGFnX3JhbmdlX3B0ciA9ICZz
aWxrX0xhZ19yYW5nZV9zdGFnZTNbIGNvbXBsZXhpdHkgXVsgMCBdWyAwIF07CkBAIC02NjgsNyAr
NjY4LDcgQEAgc3RhdGljIHZvaWQgc2lsa19QX0FuYV9jYWxjX2VuZXJneV9zdDMoCiAgICAgICAg
IG5iX2Nia19zZWFyY2ggPSBzaWxrX25iX2Nia19zZWFyY2hzX3N0YWdlM1sgY29tcGxleGl0eSBd
OwogICAgICAgICBjYmtfc2l6ZSAgICAgID0gUEVfTkJfQ0JLU19TVEFHRTNfTUFYOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIg
Pj4gMSk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIg
Pj4gMSk7CiAgICAgICAgIExhZ19yYW5nZV9wdHIgPSAmc2lsa19MYWdfcmFuZ2Vfc3RhZ2UzXzEw
X21zWyAwIF1bIDAgXTsKICAgICAgICAgTGFnX0NCX3B0ciAgICA9ICZzaWxrX0NCX2xhZ3Nfc3Rh
Z2UzXzEwX21zWyAwIF1bIDAgXTsKICAgICAgICAgbmJfY2JrX3NlYXJjaCA9IFBFX05CX0NCS1Nf
U1RBR0UzXzEwTVM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvcmVzaWR1YWxfZW5lcmd5MTZfRklY
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvZml4ZWQvcmVzaWR1YWxfZW5lcmd5MTZfRklYLmMKaW5kZXggZWJmZmIyYTY2Zjlh
YmM0NDhmZjc1MjgyZjk4ZDJjZWI3NzE1OGM2ZC4uN2YxMzBmM2QzZDRmMmZhNWU1YzJjYmFmZjQ5
ODJjMTg3OTY1YWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3Jlc2lkdWFsX2VuZXJneTE2X0ZJ
WC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9maXhlZC9yZXNpZHVhbF9lbmVyZ3kxNl9GSVguYwpAQCAtNDcsMTAgKzQ3
LDEwIEBAIG9wdXNfaW50MzIgc2lsa19yZXNpZHVhbF9lbmVyZ3kxNl9jb3Zhcl9GSVgoCiAgICAg
Y29uc3Qgb3B1c19pbnQzMiAqcFJvdzsKIAogICAgIC8qIFNhZmV0eSBjaGVja3MgKi8KLSAgICBz
aWxrX2Fzc2VydCggRCA+PSAgMCApOwotICAgIHNpbGtfYXNzZXJ0KCBEIDw9IDE2ICk7Ci0gICAg
c2lsa19hc3NlcnQoIGNRID4gIDAgKTsKLSAgICBzaWxrX2Fzc2VydCggY1EgPCAxNiApOworICAg
IGNlbHRfYXNzZXJ0KCBEID49ICAwICk7CisgICAgY2VsdF9hc3NlcnQoIEQgPD0gMTYgKTsKKyAg
ICBjZWx0X2Fzc2VydCggY1EgPiAgMCApOworICAgIGNlbHRfYXNzZXJ0KCBjUSA8IDE2ICk7CiAK
ICAgICBsc2hpZnRzID0gMTYgLSBjUTsKICAgICBReHRyYSA9IGxzaGlmdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvZml4ZWQvcmVzaWR1YWxfZW5lcmd5X0ZJWC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3Jlc2lkdWFsX2Vu
ZXJneV9GSVguYwppbmRleCA0MWY3NDc3OGU4MmU2ZjNiMTlkMjE4NzY2NDMyMzhlN2IxZjQwN2Jj
Li42YzdjYWRlOWEwNzhkYzY5MzA3ZTc1YTZkZTNjODQ5YWYxMmJhMzYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZml4ZWQvcmVzaWR1YWxfZW5lcmd5X0ZJWC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9yZXNpZHVhbF9l
bmVyZ3lfRklYLmMKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBzaWxrX3Jlc2lkdWFsX2VuZXJneV9G
SVgoCiAKICAgICAvKiBGaWx0ZXIgaW5wdXQgdG8gY3JlYXRlIHRoZSBMUEMgcmVzaWR1YWwgZm9y
IGVhY2ggZnJhbWUgaGFsZiwgYW5kIG1lYXN1cmUgc3ViZnJhbWUgZW5lcmdpZXMgKi8KICAgICBB
TExPQyggTFBDX3JlcywgKCBNQVhfTkJfU1VCRlIgPj4gMSApICogb2Zmc2V0LCBvcHVzX2ludDE2
ICk7Ci0gICAgc2lsa19hc3NlcnQoICggbmJfc3ViZnIgPj4gMSApICogKCBNQVhfTkJfU1VCRlIg
Pj4gMSApID09IG5iX3N1YmZyICk7CisgICAgY2VsdF9hc3NlcnQoICggbmJfc3ViZnIgPj4gMSAp
ICogKCBNQVhfTkJfU1VCRlIgPj4gMSApID09IG5iX3N1YmZyICk7CiAgICAgZm9yKCBpID0gMDsg
aSA8IG5iX3N1YmZyID4+IDE7IGkrKyApIHsKICAgICAgICAgLyogQ2FsY3VsYXRlIGhhbGYgZnJh
bWUgTFBDIHJlc2lkdWFsIHNpZ25hbCBpbmNsdWRpbmcgcHJlY2VkaW5nIHNhbXBsZXMgKi8KICAg
ICAgICAgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKCBMUENfcmVzLCB4X3B0ciwgYV9RMTJbIGkg
XSwgKCBNQVhfTkJfU1VCRlIgPj4gMSApICogb2Zmc2V0LCBMUENfb3JkZXIsIGFyY2ggKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9maXhlZC9zY2h1cjY0X0ZJWC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3NjaHVyNjRfRklY
LmMKaW5kZXggYjJjYjEyZDliMTYwYTA3MTVmODhlNzI0MzllNWEwMzZiODYyOGFjNS4uNGI3ZTE5
ZWE1OTY3ODJlNjQzZDc3ZjIxOWVlYzM0Zjk0ZjU1ODg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVk
L3NjaHVyNjRfRklYLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3NjaHVyNjRfRklYLmMKQEAgLTQzLDcgKzQz
LDcgQEAgb3B1c19pbnQzMiBzaWxrX3NjaHVyNjQoICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE8gICAgcmV0dXJucyByZXNpZHVhbCBlbmUKICAgICBvcHVzX2ludDMyIENbIFNJTEtfTUFY
X09SREVSX0xQQyArIDEgXVsgMiBdOwogICAgIG9wdXNfaW50MzIgQ3RtcDFfUTMwLCBDdG1wMl9R
MzAsIHJjX3RtcF9RMzE7CiAKLSAgICBzaWxrX2Fzc2VydCggb3JkZXIgPj0gMCAmJiBvcmRlciA8
PSBTSUxLX01BWF9PUkRFUl9MUEMgKTsKKyAgICBjZWx0X2Fzc2VydCggb3JkZXIgPj0gMCAmJiBv
cmRlciA8PSBTSUxLX01BWF9PUkRFUl9MUEMgKTsKIAogICAgIC8qIENoZWNrIGZvciBpbnZhbGlk
IGlucHV0ICovCiAgICAgaWYoIGNbIDAgXSA8PSAwICkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVk
L3NjaHVyX0ZJWC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3NjaHVyX0ZJWC5jCmluZGV4IDU5ZDQ0YTZmN2ZlODU4
YzIxZWViY2EzMWI2YmU0NDMwYWNkNDgzMTkuLjI4NDBmNmIxYWFlM2UyMTRhMTJhODE4NDAyOGIy
NzIwMDVmYjY3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9zY2h1cl9GSVguYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
Zml4ZWQvc2NodXJfRklYLmMKQEAgLTQzLDcgKzQzLDcgQEAgb3B1c19pbnQzMiBzaWxrX3NjaHVy
KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJucyByZXNpZHVhbCBl
bmUKICAgICBvcHVzX2ludDMyICAgIENbIFNJTEtfTUFYX09SREVSX0xQQyArIDEgXVsgMiBdOwog
ICAgIG9wdXNfaW50MzIgICAgQ3RtcDEsIEN0bXAyLCByY190bXBfUTE1OwogCi0gICAgc2lsa19h
c3NlcnQoIG9yZGVyID49IDAgJiYgb3JkZXIgPD0gU0lMS19NQVhfT1JERVJfTFBDICk7CisgICAg
Y2VsdF9hc3NlcnQoIG9yZGVyID49IDAgJiYgb3JkZXIgPD0gU0lMS19NQVhfT1JERVJfTFBDICk7
CiAKICAgICAvKiBHZXQgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgKi8KICAgICBseiA9IHNpbGtf
Q0xaMzIoIGNbIDAgXSApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3dhcnBlZF9hdXRvY29ycmVs
YXRpb25fRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVguYwppbmRl
eCA5OTRjMjk5YWJkMTI0MGNkYjM3NTk3ZTNhOGFjYTgyMDdlODlhOTc2Li41Yzc5NTUzYmMwMDFi
MWE5Y2ZkZjhjOGE5NWVjMDg4NjA1NTdhYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvd2FycGVk
X2F1dG9jb3JyZWxhdGlvbl9GSVguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvd2FycGVkX2F1dG9jb3JyZWxh
dGlvbl9GSVguYwpAQCAtMzcsNiArMzcsNyBAQCBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogCiAvKiBBdXRvY29ycmVsYXRpb25zIGZvciBhIHdhcnBlZCBmcmVxdWVuY3kgYXhpcyAqLwor
I2lmbmRlZiBPVkVSUklERV9zaWxrX3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX2MKIHZvaWQg
c2lsa193YXJwZWRfYXV0b2NvcnJlbGF0aW9uX0ZJWF9jKAogICAgICAgICAgIG9wdXNfaW50MzIg
ICAgICAgICAgICAgICAgKmNvcnIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IE8gICAgUmVzdWx0IFtvcmRlciArIDFdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgb3B1c19pbnQgICAgICAgICAg
ICAgICAgICAqc2NhbGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBT
Y2FsaW5nIG9mIHRoZSBjb3JyZWxhdGlvbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KQEAgLTUyLDcgKzUzLDcgQEAgdm9pZCBzaWxrX3dhcnBlZF9h
dXRvY29ycmVsYXRpb25fRklYX2MoCiAgICAgb3B1c19pbnQ2NCBjb3JyX1FDWyAgTUFYX1NIQVBF
X0xQQ19PUkRFUiArIDEgXSA9IHsgMCB9OwogCiAgICAgLyogT3JkZXIgbXVzdCBiZSBldmVuICov
Ci0gICAgc2lsa19hc3NlcnQoICggb3JkZXIgJiAxICkgPT0gMCApOworICAgIGNlbHRfYXNzZXJ0
KCAoIG9yZGVyICYgMSApID09IDAgKTsKICAgICBzaWxrX2Fzc2VydCggMiAqIFFTIC0gUUMgPj0g
MCApOwogCiAgICAgLyogTG9vcCBvdmVyIHNhbXBsZXMgKi8KQEAgLTg4LDMgKzg5LDQgQEAgdm9p
ZCBzaWxrX3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX2MoCiAgICAgfQogICAgIHNpbGtfYXNz
ZXJ0KCBjb3JyX1FDWyAwIF0gPj0gMCApOyAvKiBJZiBicmVha2luZywgZGVjcmVhc2UgUUMqLwog
fQorI2VuZGlmIC8qIE9WRVJSSURFX3NpbGtfd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhfYyAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni9idXJnX21vZGlmaWVkX0ZJWF9zc2UuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9maXhlZC94ODYvYnVyZ19tb2RpZmllZF9GSVhfc3NlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNjMzU4M2M1ZmMzN2NjZDY4NTBkYWMxYTFkZWYxNGVkYTI1MzlkOTcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni9i
dXJnX21vZGlmaWVkX0ZJWF9zc2UuYworKysgL2Rldi9udWxsCkBAIC0xLDM3NyArMCwwIEBACi0v
KiBDb3B5cmlnaHQgKGMpIDIwMTQsIENpc2NvIFN5c3RlbXMsIElOQwotICAgV3JpdHRlbiBieSBY
aWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5QZW5nIFlhbldhbmcKLQotICAgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotICAgLSBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICAg
YGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgotICAgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YKLSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAgIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lmZGVmIEhB
VkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8eG1t
aW50cmluLmg+Ci0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jaW5jbHVkZSA8c21taW50cmluLmg+
Ci0KLSNpbmNsdWRlICJTaWdQcm9jX0ZJWC5oIgotI2luY2x1ZGUgImRlZmluZS5oIgotI2luY2x1
ZGUgInR1bmluZ19wYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAicGl0Y2guaCIKLSNpbmNsdWRlICJj
ZWx0L3g4Ni94ODZjcHUuaCIKLQotI2RlZmluZSBNQVhfRlJBTUVfU0laRSAgICAgICAgICAgICAg
Mzg0ICAgICAgICAgICAgIC8qIHN1YmZyX2xlbmd0aCAqIG5iX3N1YmZyID0gKCAwLjAwNSAqIDE2
MDAwICsgMTYgKSAqIDQgPSAzODQgKi8KLQotI2RlZmluZSBRQSAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjUKLSNkZWZpbmUgTl9CSVRTX0hFQURfUk9PTSAgICAgICAgICAgIDIKLSNkZWZpbmUg
TUlOX1JTSElGVFMgICAgICAgICAgICAgICAgIC0xNgotI2RlZmluZSBNQVhfUlNISUZUUyAgICAg
ICAgICAgICAgICAgKDMyIC0gUUEpCi0KLS8qIENvbXB1dGUgcmVmbGVjdGlvbiBjb2VmZmljaWVu
dHMgZnJvbSBpbnB1dCBzaWduYWwgKi8KLXZvaWQgc2lsa19idXJnX21vZGlmaWVkX3NzZTRfMSgK
LSAgICBvcHVzX2ludDMyICAgICAgICAgICAgICAgICAgKnJlc19ucmcsICAgICAgICAgICAvKiBP
ICAgIFJlc2lkdWFsIGVuZXJneSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICAgICAgICAgICpyZXNfbnJnX1EsICAg
ICAgICAgLyogTyAgICBSZXNpZHVhbCBlbmVyZ3kgUSB2YWx1ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgICAgICAgICBBX1Ex
NltdLCAgICAgICAgICAgIC8qIE8gICAgUHJlZGljdGlvbiBjb2VmZmljaWVudHMgKGxlbmd0aCBv
cmRlcikgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgICAg
ICAgICAgeFtdLCAgICAgICAgICAgICAgICAvKiBJICAgIElucHV0IHNpZ25hbCwgbGVuZ3RoOiBu
Yl9zdWJmciAqICggRCArIHN1YmZyX2xlbmd0aCApICAgICAgICovCi0gICAgY29uc3Qgb3B1c19p
bnQzMiAgICAgICAgICAgIG1pbkludkdhaW5fUTMwLCAgICAgLyogSSAgICBJbnZlcnNlIG9mIG1h
eCBwcmVkaWN0aW9uIGdhaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNv
bnN0IG9wdXNfaW50ICAgICAgICAgICAgICBzdWJmcl9sZW5ndGgsICAgICAgIC8qIEkgICAgSW5w
dXQgc2lnbmFsIHN1YmZyYW1lIGxlbmd0aCAoaW5jbC4gRCBwcmVjZWRpbmcgc2FtcGxlcykgICAg
Ki8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgbmJfc3ViZnIsICAgICAgICAgICAv
KiBJICAgIE51bWJlciBvZiBzdWJmcmFtZXMgc3RhY2tlZCBpbiB4ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIEQsICAgICAgICAg
ICAgICAgICAgLyogSSAgICBPcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBh
cmNoICAgICAgICAgICAgICAgIC8qIEkgICAgUnVuLXRpbWUgYXJjaGl0ZWN0dXJlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSkKLXsKLSAgICBvcHVzX2ludCAgICAg
ICAgIGssIG4sIHMsIGx6LCByc2hpZnRzLCByc2hpZnRzX2V4dHJhLCByZWFjaGVkX21heF9nYWlu
OwotICAgIG9wdXNfaW50MzIgICAgICAgQzAsIG51bSwgbnJnLCByY19RMzEsIGludkdhaW5fUTMw
LCBBdG1wX1FBLCBBdG1wMSwgdG1wMSwgdG1wMiwgeDEsIHgyOwotICAgIGNvbnN0IG9wdXNfaW50
MTYgKnhfcHRyOwotICAgIG9wdXNfaW50MzIgICAgICAgQ19maXJzdF9yb3dbIFNJTEtfTUFYX09S
REVSX0xQQyBdOwotICAgIG9wdXNfaW50MzIgICAgICAgQ19sYXN0X3Jvd1sgIFNJTEtfTUFYX09S
REVSX0xQQyBdOwotICAgIG9wdXNfaW50MzIgICAgICAgQWZfUUFbICAgICAgIFNJTEtfTUFYX09S
REVSX0xQQyBdOwotICAgIG9wdXNfaW50MzIgICAgICAgQ0FmWyBTSUxLX01BWF9PUkRFUl9MUEMg
KyAxIF07Ci0gICAgb3B1c19pbnQzMiAgICAgICBDQWJbIFNJTEtfTUFYX09SREVSX0xQQyArIDEg
XTsKLSAgICBvcHVzX2ludDMyICAgICAgIHhjb3JyWyBTSUxLX01BWF9PUkRFUl9MUEMgXTsKLQot
ICAgIF9fbTEyOGkgRklSU1RfMzIxMCwgTEFTVF8zMjEwLCBBVE1QXzMyMTAsIFRNUDFfMzIxMCwg
VE1QMl8zMjEwLCBUMV8zMjEwLCBUMl8zMjEwLCBQVFJfMzIxMCwgU1VCRlJfMzIxMCwgWDFfMzIx
MCwgWDJfMzIxMDsKLSAgICBfX20xMjhpIENPTlNUMSA9IF9tbV9zZXQxX2VwaTMyKDEpOwotCi0g
ICAgc2lsa19hc3NlcnQoIHN1YmZyX2xlbmd0aCAqIG5iX3N1YmZyIDw9IE1BWF9GUkFNRV9TSVpF
ICk7Ci0KLSAgICAvKiBDb21wdXRlIGF1dG9jb3JyZWxhdGlvbnMsIGFkZGVkIG92ZXIgc3ViZnJh
bWVzICovCi0gICAgc2lsa19zdW1fc3FyX3NoaWZ0KCAmQzAsICZyc2hpZnRzLCB4LCBuYl9zdWJm
ciAqIHN1YmZyX2xlbmd0aCApOwotICAgIGlmKCByc2hpZnRzID4gTUFYX1JTSElGVFMgKSB7Ci0g
ICAgICAgIEMwID0gc2lsa19MU0hJRlQzMiggQzAsIHJzaGlmdHMgLSBNQVhfUlNISUZUUyApOwot
ICAgICAgICBzaWxrX2Fzc2VydCggQzAgPiAwICk7Ci0gICAgICAgIHJzaGlmdHMgPSBNQVhfUlNI
SUZUUzsKLSAgICB9IGVsc2UgewotICAgICAgICBseiA9IHNpbGtfQ0xaMzIoIEMwICkgLSAxOwot
ICAgICAgICByc2hpZnRzX2V4dHJhID0gTl9CSVRTX0hFQURfUk9PTSAtIGx6OwotICAgICAgICBp
ZiggcnNoaWZ0c19leHRyYSA+IDAgKSB7Ci0gICAgICAgICAgICByc2hpZnRzX2V4dHJhID0gc2ls
a19taW4oIHJzaGlmdHNfZXh0cmEsIE1BWF9SU0hJRlRTIC0gcnNoaWZ0cyApOwotICAgICAgICAg
ICAgQzAgPSBzaWxrX1JTSElGVDMyKCBDMCwgcnNoaWZ0c19leHRyYSApOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcnNoaWZ0c19leHRyYSA9IHNpbGtfbWF4KCByc2hpZnRzX2V4dHJh
LCBNSU5fUlNISUZUUyAtIHJzaGlmdHMgKTsKLSAgICAgICAgICAgIEMwID0gc2lsa19MU0hJRlQz
MiggQzAsIC1yc2hpZnRzX2V4dHJhICk7Ci0gICAgICAgIH0KLSAgICAgICAgcnNoaWZ0cyArPSBy
c2hpZnRzX2V4dHJhOwotICAgIH0KLSAgICBDQWJbIDAgXSA9IENBZlsgMCBdID0gQzAgKyBzaWxr
X1NNTVVMKCBTSUxLX0ZJWF9DT05TVCggRklORF9MUENfQ09ORF9GQUMsIDMyICksIEMwICkgKyAx
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSgtcnNoaWZ0cykgKi8KLSAgICBz
aWxrX21lbXNldCggQ19maXJzdF9yb3csIDAsIFNJTEtfTUFYX09SREVSX0xQQyAqIHNpemVvZigg
b3B1c19pbnQzMiApICk7Ci0gICAgaWYoIHJzaGlmdHMgPiAwICkgewotICAgICAgICBmb3IoIHMg
PSAwOyBzIDwgbmJfc3ViZnI7IHMrKyApIHsKLSAgICAgICAgICAgIHhfcHRyID0geCArIHMgKiBz
dWJmcl9sZW5ndGg7Ci0gICAgICAgICAgICBmb3IoIG4gPSAxOyBuIDwgRCArIDE7IG4rKyApIHsK
LSAgICAgICAgICAgICAgICBDX2ZpcnN0X3Jvd1sgbiAtIDEgXSArPSAob3B1c19pbnQzMilzaWxr
X1JTSElGVDY0KAotICAgICAgICAgICAgICAgICAgICBzaWxrX2lubmVyX3Byb2QxNl9hbGlnbmVk
XzY0KCB4X3B0ciwgeF9wdHIgKyBuLCBzdWJmcl9sZW5ndGggLSBuLCBhcmNoICksIHJzaGlmdHMg
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvcigg
cyA9IDA7IHMgPCBuYl9zdWJmcjsgcysrICkgewotICAgICAgICAgICAgaW50IGk7Ci0gICAgICAg
ICAgICBvcHVzX2ludDMyIGQ7Ci0gICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVu
Z3RoOwotICAgICAgICAgICAgY2VsdF9waXRjaF94Y29ycih4X3B0ciwgeF9wdHIgKyAxLCB4Y29y
ciwgc3ViZnJfbGVuZ3RoIC0gRCwgRCwgYXJjaCApOwotICAgICAgICAgICAgZm9yKCBuID0gMTsg
biA8IEQgKyAxOyBuKysgKSB7Ci0gICAgICAgICAgICAgICBmb3IgKCBpID0gbiArIHN1YmZyX2xl
bmd0aCAtIEQsIGQgPSAwOyBpIDwgc3ViZnJfbGVuZ3RoOyBpKysgKQotICAgICAgICAgICAgICAg
ICAgZCA9IE1BQzE2XzE2KCBkLCB4X3B0clsgaSBdLCB4X3B0clsgaSAtIG4gXSApOwotICAgICAg
ICAgICAgICAgeGNvcnJbIG4gLSAxIF0gKz0gZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGZvciggbiA9IDE7IG4gPCBEICsgMTsgbisrICkgewotICAgICAgICAgICAgICAgIENfZmlyc3Rf
cm93WyBuIC0gMSBdICs9IHNpbGtfTFNISUZUMzIoIHhjb3JyWyBuIC0gMSBdLCAtcnNoaWZ0cyAp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHNpbGtfbWVtY3B5KCBDX2xh
c3Rfcm93LCBDX2ZpcnN0X3JvdywgU0lMS19NQVhfT1JERVJfTFBDICogc2l6ZW9mKCBvcHVzX2lu
dDMyICkgKTsKLQotICAgIC8qIEluaXRpYWxpemUgKi8KLSAgICBDQWJbIDAgXSA9IENBZlsgMCBd
ID0gQzAgKyBzaWxrX1NNTVVMKCBTSUxLX0ZJWF9DT05TVCggRklORF9MUENfQ09ORF9GQUMsIDMy
ICksIEMwICkgKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSgtcnNoaWZ0
cykgKi8KLQotICAgIGludkdhaW5fUTMwID0gKG9wdXNfaW50MzIpMSA8PCAzMDsKLSAgICByZWFj
aGVkX21heF9nYWluID0gMDsKLSAgICBmb3IoIG4gPSAwOyBuIDwgRDsgbisrICkgewotICAgICAg
ICAvKiBVcGRhdGUgZmlyc3Qgcm93IG9mIGNvcnJlbGF0aW9uIG1hdHJpeCAod2l0aG91dCBmaXJz
dCBlbGVtZW50KSAqLwotICAgICAgICAvKiBVcGRhdGUgbGFzdCByb3cgb2YgY29ycmVsYXRpb24g
bWF0cml4ICh3aXRob3V0IGxhc3QgZWxlbWVudCwgc3RvcmVkIGluIHJldmVyc2VkIG9yZGVyKSAq
LwotICAgICAgICAvKiBVcGRhdGUgQyAqIEFmICovCi0gICAgICAgIC8qIFVwZGF0ZSBDICogZmxp
cHVkKEFmKSAoc3RvcmVkIGluIHJldmVyc2VkIG9yZGVyKSAqLwotICAgICAgICBpZiggcnNoaWZ0
cyA+IC0yICkgewotICAgICAgICAgICAgZm9yKCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7
Ci0gICAgICAgICAgICAgICAgeF9wdHIgPSB4ICsgcyAqIHN1YmZyX2xlbmd0aDsKLSAgICAgICAg
ICAgICAgICB4MSAgPSAtc2lsa19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIG4gXSwgICAg
ICAgICAgICAgICAgICAgIDE2IC0gcnNoaWZ0cyApOyAgICAgICAgLyogUSgxNi1yc2hpZnRzKSAq
LwotICAgICAgICAgICAgICAgIHgyICA9IC1zaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0
clsgc3ViZnJfbGVuZ3RoIC0gbiAtIDEgXSwgMTYgLSByc2hpZnRzICk7ICAgICAgICAvKiBRKDE2
LXJzaGlmdHMpICovCi0gICAgICAgICAgICAgICAgdG1wMSA9IHNpbGtfTFNISUZUMzIoIChvcHVz
X2ludDMyKXhfcHRyWyBuIF0sICAgICAgICAgICAgICAgICAgICBRQSAtIDE2ICk7ICAgICAgICAg
ICAgIC8qIFEoUUEtMTYpICovCi0gICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfTFNISUZUMzIo
IChvcHVzX2ludDMyKXhfcHRyWyBzdWJmcl9sZW5ndGggLSBuIC0gMSBdLCBRQSAtIDE2ICk7ICAg
ICAgICAgICAgIC8qIFEoUUEtMTYpICovCi0gICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8
IG47IGsrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgQ19maXJzdF9yb3dbIGsgXSA9IHNpbGtf
U01MQVdCKCBDX2ZpcnN0X3Jvd1sgayBdLCB4MSwgeF9wdHJbIG4gLSBrIC0gMSBdICAgICAgICAg
ICAgKTsgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICAgICAgICAgICAgICBDX2xhc3Rfcm93
WyBrIF0gID0gc2lsa19TTUxBV0IoIENfbGFzdF9yb3dbIGsgXSwgIHgyLCB4X3B0clsgc3ViZnJf
bGVuZ3RoIC0gbiArIGsgXSApOyAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgICAgICAgICAg
ICAgIEF0bXBfUUEgPSBBZl9RQVsgayBdOwotICAgICAgICAgICAgICAgICAgICB0bXAxID0gc2ls
a19TTUxBV0IoIHRtcDEsIEF0bXBfUUEsIHhfcHRyWyBuIC0gayAtIDEgXSAgICAgICAgICAgICk7
ICAgICAgICAgICAgICAgICAvKiBRKFFBLTE2KSAqLwotICAgICAgICAgICAgICAgICAgICB0bXAy
ID0gc2lsa19TTUxBV0IoIHRtcDIsIEF0bXBfUUEsIHhfcHRyWyBzdWJmcl9sZW5ndGggLSBuICsg
ayBdICk7ICAgICAgICAgICAgICAgICAvKiBRKFFBLTE2KSAqLwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19MU0hJRlQzMiggLXRtcDEsIDMyIC0gUUEgLSBy
c2hpZnRzICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSgxNi1y
c2hpZnRzKSAqLwotICAgICAgICAgICAgICAgIHRtcDIgPSBzaWxrX0xTSElGVDMyKCAtdG1wMiwg
MzIgLSBRQSAtIHJzaGlmdHMgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBRKDE2LXJzaGlmdHMpICovCi0gICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8PSBu
OyBrKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIENBZlsgayBdID0gc2lsa19TTUxBV0IoIENB
ZlsgayBdLCB0bXAxLCB4X3B0clsgbiAtIGsgXSAgICAgICAgICAgICAgICAgICAgKTsgICAgICAg
IC8qIFEoIC1yc2hpZnQgKSAqLwotICAgICAgICAgICAgICAgICAgICBDQWJbIGsgXSA9IHNpbGtf
U01MQVdCKCBDQWJbIGsgXSwgdG1wMiwgeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gKyBrIC0gMSBd
ICk7ICAgICAgICAvKiBRKCAtcnNoaWZ0ICkgKi8KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJf
c3ViZnI7IHMrKyApIHsKLSAgICAgICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVu
Z3RoOwotICAgICAgICAgICAgICAgIHgxICA9IC1zaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4
X3B0clsgbiBdLCAgICAgICAgICAgICAgICAgICAgLXJzaGlmdHMgKTsgICAgICAgICAgICAvKiBR
KCAtcnNoaWZ0cyApICovCi0gICAgICAgICAgICAgICAgeDIgID0gLXNpbGtfTFNISUZUMzIoIChv
cHVzX2ludDMyKXhfcHRyWyBzdWJmcl9sZW5ndGggLSBuIC0gMSBdLCAtcnNoaWZ0cyApOyAgICAg
ICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19M
U0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIG4gXSwgICAgICAgICAgICAgICAgICAgIDE3ICk7
ICAgICAgICAgICAgICAgICAgLyogUTE3ICovCi0gICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtf
TFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRyWyBzdWJmcl9sZW5ndGggLSBuIC0gMSBdLCAxNyAp
OyAgICAgICAgICAgICAgICAgIC8qIFExNyAqLwotCi0gICAgICAgICAgICAgICAgWDFfMzIxMCA9
IF9tbV9zZXQxX2VwaTMyKCB4MSApOwotICAgICAgICAgICAgICAgIFgyXzMyMTAgPSBfbW1fc2V0
MV9lcGkzMiggeDIgKTsKLSAgICAgICAgICAgICAgICBUTVAxXzMyMTAgPSBfbW1fc2V0emVyb19z
aTEyOCgpOwotICAgICAgICAgICAgICAgIFRNUDJfMzIxMCA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7
Ci0gICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8IG4gLSAzOyBrICs9IDQgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFBUUl8zMjEwICAgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoICZ4X3B0
clsgbiAtIGsgLSAxIC0gMyBdICk7Ci0gICAgICAgICAgICAgICAgICAgIFNVQkZSXzMyMTAgPSBP
UF9DVlRFUEkxNl9FUEkzMl9NNjQoICZ4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgXSApOwot
ICAgICAgICAgICAgICAgICAgICBGSVJTVF8zMjEwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4
aSAqKSZDX2ZpcnN0X3Jvd1sgayBdICk7Ci0gICAgICAgICAgICAgICAgICAgIFBUUl8zMjEwICAg
PSBfbW1fc2h1ZmZsZV9lcGkzMiggUFRSXzMyMTAsICBfTU1fU0hVRkZMRSggMCwgMSwgMiwgMyAp
ICk7Ci0gICAgICAgICAgICAgICAgICAgIExBU1RfMzIxMCAgPSBfbW1fbG9hZHVfc2kxMjgoIChf
X20xMjhpICopJkNfbGFzdF9yb3dbIGsgXSApOwotICAgICAgICAgICAgICAgICAgICBBVE1QXzMy
MTAgID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSZBZl9RQVsgayBdICk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgVDFfMzIxMCA9IF9tbV9tdWxsb19lcGkzMiggUFRSXzMyMTAsIFgxXzMy
MTAgKTsKLSAgICAgICAgICAgICAgICAgICAgVDJfMzIxMCA9IF9tbV9tdWxsb19lcGkzMiggU1VC
RlJfMzIxMCwgWDJfMzIxMCApOwotCi0gICAgICAgICAgICAgICAgICAgIEFUTVBfMzIxMCA9IF9t
bV9zcmFpX2VwaTMyKCBBVE1QXzMyMTAsIDcgKTsKLSAgICAgICAgICAgICAgICAgICAgQVRNUF8z
MjEwID0gX21tX2FkZF9lcGkzMiggQVRNUF8zMjEwLCBDT05TVDEgKTsKLSAgICAgICAgICAgICAg
ICAgICAgQVRNUF8zMjEwID0gX21tX3NyYWlfZXBpMzIoIEFUTVBfMzIxMCwgMSApOwotCi0gICAg
ICAgICAgICAgICAgICAgIEZJUlNUXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBGSVJTVF8zMjEwLCBU
MV8zMjEwICk7Ci0gICAgICAgICAgICAgICAgICAgIExBU1RfMzIxMCA9IF9tbV9hZGRfZXBpMzIo
IExBU1RfMzIxMCwgVDJfMzIxMCApOwotCi0gICAgICAgICAgICAgICAgICAgIFBUUl8zMjEwICAg
PSBfbW1fbXVsbG9fZXBpMzIoIEFUTVBfMzIxMCwgUFRSXzMyMTAgKTsKLSAgICAgICAgICAgICAg
ICAgICAgU1VCRlJfMzIxMCAgID0gX21tX211bGxvX2VwaTMyKCBBVE1QXzMyMTAsIFNVQkZSXzMy
MTAgKTsKLQotICAgICAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAq
KSZDX2ZpcnN0X3Jvd1sgayBdLCBGSVJTVF8zMjEwICk7Ci0gICAgICAgICAgICAgICAgICAgIF9t
bV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopJkNfbGFzdF9yb3dbIGsgXSwgTEFTVF8zMjEwICk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgVE1QMV8zMjEwID0gX21tX2FkZF9lcGkzMiggVE1QMV8z
MjEwLCBQVFJfMzIxMCApOwotICAgICAgICAgICAgICAgICAgICBUTVAyXzMyMTAgPSBfbW1fYWRk
X2VwaTMyKCBUTVAyXzMyMTAsIFNVQkZSXzMyMTAgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBUTVAxXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBUTVAxXzMyMTAsIF9tbV91
bnBhY2toaV9lcGk2NChUTVAxXzMyMTAsIFRNUDFfMzIxMCApICk7Ci0gICAgICAgICAgICAgICAg
VE1QMl8zMjEwID0gX21tX2FkZF9lcGkzMiggVE1QMl8zMjEwLCBfbW1fdW5wYWNraGlfZXBpNjQo
VE1QMl8zMjEwLCBUTVAyXzMyMTAgKSApOwotICAgICAgICAgICAgICAgIFRNUDFfMzIxMCA9IF9t
bV9hZGRfZXBpMzIoIFRNUDFfMzIxMCwgX21tX3NodWZmbGVsb19lcGkxNihUTVAxXzMyMTAsIDB4
MEUgKSApOwotICAgICAgICAgICAgICAgIFRNUDJfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIFRNUDJf
MzIxMCwgX21tX3NodWZmbGVsb19lcGkxNihUTVAyXzMyMTAsIDB4MEUgKSApOwotCi0gICAgICAg
ICAgICAgICAgdG1wMSArPSBfbW1fY3Z0c2kxMjhfc2kzMiggVE1QMV8zMjEwICk7Ci0gICAgICAg
ICAgICAgICAgdG1wMiArPSBfbW1fY3Z0c2kxMjhfc2kzMiggVE1QMl8zMjEwICk7Ci0KLSAgICAg
ICAgICAgICAgICBmb3IoIDsgayA8IG47IGsrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgQ19m
aXJzdF9yb3dbIGsgXSA9IHNpbGtfTUxBKCBDX2ZpcnN0X3Jvd1sgayBdLCB4MSwgeF9wdHJbIG4g
LSBrIC0gMSBdICAgICAgICAgICAgKTsgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICAgICAg
ICAgICAgICBDX2xhc3Rfcm93WyBrIF0gID0gc2lsa19NTEEoIENfbGFzdF9yb3dbIGsgXSwgIHgy
LCB4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgXSApOyAvKiBRKCAtcnNoaWZ0cyApICovCi0g
ICAgICAgICAgICAgICAgICAgIEF0bXAxID0gc2lsa19SU0hJRlRfUk9VTkQoIEFmX1FBWyBrIF0s
IFFBIC0gMTcgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExNyAqLwot
ICAgICAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19NTEEoIHRtcDEsIHhfcHRyWyBuIC0gayAt
IDEgXSwgICAgICAgICAgICBBdG1wMSApOyAgICAgICAgICAgICAgICAgICAgICAvKiBRMTcgKi8K
LSAgICAgICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfTUxBKCB0bXAyLCB4X3B0clsgc3ViZnJf
bGVuZ3RoIC0gbiArIGsgXSwgQXRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAgLyogUTE3ICov
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdG1wMSA9IC10bXAxOyAgICAg
ICAgICAgICAgICAvKiBRMTcgKi8KLSAgICAgICAgICAgICAgICB0bXAyID0gLXRtcDI7ICAgICAg
ICAgICAgICAgIC8qIFExNyAqLwotCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBfX20xMjhpIHhtbV90bXAxLCB4bW1fdG1wMjsKLSAgICAgICAgICAgICAgICAgICAgX19t
MTI4aSB4bW1feF9wdHJfbl9rX3gyeDAsIHhtbV94X3B0cl9uX2tfeDN4MTsKLSAgICAgICAgICAg
ICAgICAgICAgX19tMTI4aSB4bW1feF9wdHJfc3ViX3gyeDAsIHhtbV94X3B0cl9zdWJfeDN4MTsK
LQotICAgICAgICAgICAgICAgICAgICB4bW1fdG1wMSA9IF9tbV9zZXQxX2VwaTMyKCB0bXAxICk7
Ci0gICAgICAgICAgICAgICAgICAgIHhtbV90bXAyID0gX21tX3NldDFfZXBpMzIoIHRtcDIgKTsK
LQotICAgICAgICAgICAgICAgICAgICBmb3IoIGsgPSAwOyBrIDw9IG4gLSAzOyBrICs9IDQgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gyeDAgPSBPUF9DVlRFUEkx
Nl9FUEkzMl9NNjQoICZ4X3B0clsgbiAtIGsgLSAzIF0gKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHhtbV94X3B0cl9zdWJfeDJ4MCA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJnhfcHRyWyBz
dWJmcl9sZW5ndGggLSBuICsgayAtIDEgXSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB4
bW1feF9wdHJfbl9rX3gyeDAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggeG1tX3hfcHRyX25fa194Mngw
LCBfTU1fU0hVRkZMRSggMCwgMSwgMiwgMyApICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IHhtbV94X3B0cl9uX2tfeDJ4MCA9IF9tbV9zbGxpX2VwaTMyKCB4bW1feF9wdHJfbl9rX3gyeDAs
IC1yc2hpZnRzIC0gMSApOwotICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1Yl94
MngwID0gX21tX3NsbGlfZXBpMzIoIHhtbV94X3B0cl9zdWJfeDJ4MCwgLXJzaGlmdHMgLSAxICk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMs
IHhtbV94X3B0cl9uX2tfeDN4MSA9IF9tbV9zcmxpX3NpMTI4KHhtbV94X3B0cl9uX2tfeDJ4MCwg
NCkqLwotICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX25fa194M3gxID0gX21tX3No
dWZmbGVfZXBpMzIoIHhtbV94X3B0cl9uX2tfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEg
KSApOwotICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1Yl94M3gxID0gX21tX3No
dWZmbGVfZXBpMzIoIHhtbV94X3B0cl9zdWJfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEg
KSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gyeDAgPSBfbW1f
bXVsX2VwaTMyKCB4bW1feF9wdHJfbl9rX3gyeDAsIHhtbV90bXAxICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9wdHJf
bl9rX3gzeDEsIHhtbV90bXAxICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJf
c3ViX3gyeDAgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9wdHJfc3ViX3gyeDAsIHhtbV90bXAyICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfc3ViX3gzeDEgPSBfbW1fbXVsX2Vw
aTMyKCB4bW1feF9wdHJfc3ViX3gzeDEsIHhtbV90bXAyICk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHhtbV94X3B0cl9uX2tfeDJ4MCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1feF9wdHJfbl9r
X3gyeDAsIDE2ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gzeDEg
PSBfbW1fc2xsaV9lcGk2NCggeG1tX3hfcHRyX25fa194M3gxLCAxNiApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgeG1tX3hfcHRyX3N1Yl94MngwID0gX21tX3NybGlfZXBpNjQoIHhtbV94X3B0
cl9zdWJfeDJ4MCwgMTYgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJf
eDN4MSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1feF9wdHJfc3ViX3gzeDEsIDE2ICk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDJ4MCA9IF9tbV9ibGVuZF9lcGkxNigg
eG1tX3hfcHRyX25fa194MngwLCB4bW1feF9wdHJfbl9rX3gzeDEsIDB4Q0MgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJfeDJ4MCA9IF9tbV9ibGVuZF9lcGkxNiggeG1t
X3hfcHRyX3N1Yl94MngwLCB4bW1feF9wdHJfc3ViX3gzeDEsIDB4Q0MgKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgWDFfMzIxMCAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopJkNB
ZlsgayBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVFJfMzIxMCA9IF9tbV9sb2FkdV9z
aTEyOCggKF9fbTEyOGkgKikmQ0FiWyBrIF0gKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
WDFfMzIxMCAgPSBfbW1fYWRkX2VwaTMyKCBYMV8zMjEwLCB4bW1feF9wdHJfbl9rX3gyeDAgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIFBUUl8zMjEwID0gX21tX2FkZF9lcGkzMiggUFRSXzMy
MTAsIHhtbV94X3B0cl9zdWJfeDJ4MCApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBfbW1f
c3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSZDQWZbIGsgXSwgWDFfMzIxMCApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikmQ0FiWyBrIF0sIFBU
Ul8zMjEwICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBm
b3IoIDsgayA8PSBuOyBrKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQWZbIGsgXSA9
IHNpbGtfU01MQVdXKCBDQWZbIGsgXSwgdG1wMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgbiAtIGsgXSwgLXJzaGlmdHMgLSAx
ICkgKTsgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnQgKSAqLwotICAgICAgICAgICAg
ICAgICAgICAgICAgQ0FiWyBrIF0gPSBzaWxrX1NNTEFXVyggQ0FiWyBrIF0sIHRtcDIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2lsa19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJb
IHN1YmZyX2xlbmd0aCAtIG4gKyBrIC0gMSBdLCAtcnNoaWZ0cyAtIDEgKSApOyAvKiBRKCAtcnNo
aWZ0ICkgKi8KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qIENhbGN1bGF0ZSBub21pbmF0b3IgYW5k
IGRlbm9taW5hdG9yIGZvciB0aGUgbmV4dCBvcmRlciByZWZsZWN0aW9uIChwYXJjb3IpIGNvZWZm
aWNpZW50ICovCi0gICAgICAgIHRtcDEgPSBDX2ZpcnN0X3Jvd1sgbiBdOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgdG1wMiA9IENfbGFzdF9yb3dbIG4gXTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICBudW0gID0gMDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgIG5yZyAg
PSBzaWxrX0FERDMyKCBDQWJbIDAgXSwgQ0FmWyAwIF0gKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIDEtcnNoaWZ0cyApICovCi0g
ICAgICAgIGZvciggayA9IDA7IGsgPCBuOyBrKysgKSB7Ci0gICAgICAgICAgICBBdG1wX1FBID0g
QWZfUUFbIGsgXTsKLSAgICAgICAgICAgIGx6ID0gc2lsa19DTFozMiggc2lsa19hYnMoIEF0bXBf
UUEgKSApIC0gMTsKLSAgICAgICAgICAgIGx6ID0gc2lsa19taW4oIDMyIC0gUUEsIGx6ICk7Ci0g
ICAgICAgICAgICBBdG1wMSA9IHNpbGtfTFNISUZUMzIoIEF0bXBfUUEsIGx6ICk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIFFBICsg
bHogKSAqLwotCi0gICAgICAgICAgICB0bXAxID0gc2lsa19BRERfTFNISUZUMzIoIHRtcDEsIHNp
bGtfU01NVUwoIENfbGFzdF9yb3dbICBuIC0gayAtIDEgXSwgQXRtcDEgKSwgMzIgLSBRQSAtIGx6
ICk7ICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgICAgICB0bXAyID0gc2lsa19BRERfTFNI
SUZUMzIoIHRtcDIsIHNpbGtfU01NVUwoIENfZmlyc3Rfcm93WyBuIC0gayAtIDEgXSwgQXRtcDEg
KSwgMzIgLSBRQSAtIGx6ICk7ICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgICAgICBudW0g
ID0gc2lsa19BRERfTFNISUZUMzIoIG51bSwgIHNpbGtfU01NVUwoIENBYlsgbiAtIGsgXSwgICAg
ICAgICAgICAgQXRtcDEgKSwgMzIgLSBRQSAtIGx6ICk7ICAvKiBRKCAtcnNoaWZ0cyApICovCi0g
ICAgICAgICAgICBucmcgID0gc2lsa19BRERfTFNISUZUMzIoIG5yZywgIHNpbGtfU01NVUwoIHNp
bGtfQUREMzIoIENBYlsgayArIDEgXSwgQ0FmWyBrICsgMSBdICksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEF0bXAxICksIDMyIC0gUUEgLSBseiApOyAgICAvKiBRKCAxLXJzaGlmdHMgKSAqLwot
ICAgICAgICB9Ci0gICAgICAgIENBZlsgbiArIDEgXSA9IHRtcDE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgQ0FiWyBuICsgMSBdID0gdG1wMjsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICBudW0gPSBzaWxrX0FERDMy
KCBudW0sIHRtcDIgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgIG51bSA9
IHNpbGtfTFNISUZUMzIoIC1udW0sIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIDEtcnNoaWZ0cyApICovCi0K
LSAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBuZXh0IG9yZGVyIHJlZmxlY3Rpb24gKHBhcmNvcikg
Y29lZmZpY2llbnQgKi8KLSAgICAgICAgaWYoIHNpbGtfYWJzKCBudW0gKSA8IG5yZyApIHsKLSAg
ICAgICAgICAgIHJjX1EzMSA9IHNpbGtfRElWMzJfdmFyUSggbnVtLCBucmcsIDMxICk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByY19RMzEgPSAoIG51bSA+IDAgKSA/IHNpbGtfaW50
MzJfTUFYIDogc2lsa19pbnQzMl9NSU47Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBVcGRhdGUg
aW52ZXJzZSBwcmVkaWN0aW9uIGdhaW4gKi8KLSAgICAgICAgdG1wMSA9ICggKG9wdXNfaW50MzIp
MSA8PCAzMCApIC0gc2lsa19TTU1VTCggcmNfUTMxLCByY19RMzEgKTsKLSAgICAgICAgdG1wMSA9
IHNpbGtfTFNISUZUKCBzaWxrX1NNTVVMKCBpbnZHYWluX1EzMCwgdG1wMSApLCAyICk7Ci0gICAg
ICAgIGlmKCB0bXAxIDw9IG1pbkludkdhaW5fUTMwICkgewotICAgICAgICAgICAgLyogTWF4IHBy
ZWRpY3Rpb24gZ2FpbiBleGNlZWRlZDsgc2V0IHJlZmxlY3Rpb24gY29lZmZpY2llbnQgc3VjaCB0
aGF0IG1heCBwcmVkaWN0aW9uIGdhaW4gaXMgZXhhY3RseSBoaXQgKi8KLSAgICAgICAgICAgIHRt
cDIgPSAoIChvcHVzX2ludDMyKTEgPDwgMzAgKSAtIHNpbGtfRElWMzJfdmFyUSggbWluSW52R2Fp
bl9RMzAsIGludkdhaW5fUTMwLCAzMCApOyAgICAgICAgICAgIC8qIFEzMCAqLwotICAgICAgICAg
ICAgcmNfUTMxID0gc2lsa19TUVJUX0FQUFJPWCggdG1wMiApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTE1ICovCi0gICAgICAgICAgICBpZigg
cmNfUTMxID4gMCApIHsKLSAgICAgICAgICAgICAgICAgLyogTmV3dG9uLVJhcGhzb24gaXRlcmF0
aW9uICovCi0gICAgICAgICAgICAgICAgcmNfUTMxID0gc2lsa19SU0hJRlQzMiggcmNfUTMxICsg
c2lsa19ESVYzMiggdG1wMiwgcmNfUTMxICksIDEgKTsgICAgICAgICAgICAgICAgICAgLyogUTE1
ICovCi0gICAgICAgICAgICAgICAgcmNfUTMxID0gc2lsa19MU0hJRlQzMiggcmNfUTMxLCAxNiAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTMxICov
Ci0gICAgICAgICAgICAgICAgaWYoIG51bSA8IDAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8q
IEVuc3VyZSBhZGp1c3RlZCByZWZsZWN0aW9uIGNvZWZmaWNpZW50cyBoYXMgdGhlIG9yaWdpbmFs
IHNpZ24gKi8KLSAgICAgICAgICAgICAgICAgICAgcmNfUTMxID0gLXJjX1EzMTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnZHYWluX1EzMCA9IG1pbklu
dkdhaW5fUTMwOwotICAgICAgICAgICAgcmVhY2hlZF9tYXhfZ2FpbiA9IDE7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpbnZHYWluX1EzMCA9IHRtcDE7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvKiBVcGRhdGUgdGhlIEFSIGNvZWZmaWNpZW50cyAqLwotICAgICAgICBmb3IoIGsgPSAw
OyBrIDwgKG4gKyAxKSA+PiAxOyBrKysgKSB7Ci0gICAgICAgICAgICB0bXAxID0gQWZfUUFbIGsg
XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBRQSAqLwotICAgICAgICAgICAgdG1wMiA9IEFmX1FBWyBuIC0gayAtIDEg
XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogUUEgKi8KLSAgICAgICAgICAgIEFmX1FBWyBrIF0gICAgICAgICA9IHNpbGtfQUREX0xT
SElGVDMyKCB0bXAxLCBzaWxrX1NNTVVMKCB0bXAyLCByY19RMzEgKSwgMSApOyAgICAgIC8qIFFB
ICovCi0gICAgICAgICAgICBBZl9RQVsgbiAtIGsgLSAxIF0gPSBzaWxrX0FERF9MU0hJRlQzMigg
dG1wMiwgc2lsa19TTU1VTCggdG1wMSwgcmNfUTMxICksIDEgKTsgICAgICAvKiBRQSAqLwotICAg
ICAgICB9Ci0gICAgICAgIEFmX1FBWyBuIF0gPSBzaWxrX1JTSElGVDMyKCByY19RMzEsIDMxIC0g
UUEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRQSAqLwot
Ci0gICAgICAgIGlmKCByZWFjaGVkX21heF9nYWluICkgewotICAgICAgICAgICAgLyogUmVhY2hl
ZCBtYXggcHJlZGljdGlvbiBnYWluOyBzZXQgcmVtYWluaW5nIGNvZWZmaWNpZW50cyB0byB6ZXJv
IGFuZCBleGl0IGxvb3AgKi8KLSAgICAgICAgICAgIGZvciggayA9IG4gKyAxOyBrIDwgRDsgaysr
ICkgewotICAgICAgICAgICAgICAgIEFmX1FBWyBrIF0gPSAwOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBVcGRhdGUgQyAqIEFmIGFu
ZCBDICogQWIgKi8KLSAgICAgICAgZm9yKCBrID0gMDsgayA8PSBuICsgMTsgaysrICkgewotICAg
ICAgICAgICAgdG1wMSA9IENBZlsgayBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLwot
ICAgICAgICAgICAgdG1wMiA9IENBYlsgbiAtIGsgKyAxIF07ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAq
LwotICAgICAgICAgICAgQ0FmWyBrIF0gICAgICAgICA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAx
LCBzaWxrX1NNTVVMKCB0bXAyLCByY19RMzEgKSwgMSApOyAgICAgICAgLyogUSggLXJzaGlmdHMg
KSAqLwotICAgICAgICAgICAgQ0FiWyBuIC0gayArIDEgXSA9IHNpbGtfQUREX0xTSElGVDMyKCB0
bXAyLCBzaWxrX1NNTVVMKCB0bXAxLCByY19RMzEgKSwgMSApOyAgICAgICAgLyogUSggLXJzaGlm
dHMgKSAqLwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIHJlYWNoZWRfbWF4X2dhaW4gKSB7
Ci0gICAgICAgIGZvciggayA9IDA7IGsgPCBEOyBrKysgKSB7Ci0gICAgICAgICAgICAvKiBTY2Fs
ZSBjb2VmZmljaWVudHMgKi8KLSAgICAgICAgICAgIEFfUTE2WyBrIF0gPSAtc2lsa19SU0hJRlRf
Uk9VTkQoIEFmX1FBWyBrIF0sIFFBIC0gMTYgKTsKLSAgICAgICAgfQotICAgICAgICAvKiBTdWJ0
cmFjdCBlbmVyZ3kgb2YgcHJlY2VkaW5nIHNhbXBsZXMgZnJvbSBDMCAqLwotICAgICAgICBpZigg
cnNoaWZ0cyA+IDAgKSB7Ci0gICAgICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMr
KyApIHsKLSAgICAgICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOwotICAg
ICAgICAgICAgICAgIEMwIC09IChvcHVzX2ludDMyKXNpbGtfUlNISUZUNjQoIHNpbGtfaW5uZXJf
cHJvZDE2X2FsaWduZWRfNjQoIHhfcHRyLCB4X3B0ciwgRCwgYXJjaCApLCByc2hpZnRzICk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IoIHMgPSAwOyBz
IDwgbmJfc3ViZnI7IHMrKyApIHsKLSAgICAgICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3Vi
ZnJfbGVuZ3RoOwotICAgICAgICAgICAgICAgIEMwIC09IHNpbGtfTFNISUZUMzIoIHNpbGtfaW5u
ZXJfcHJvZF9hbGlnbmVkKCB4X3B0ciwgeF9wdHIsIEQsIGFyY2ggKSwgLXJzaGlmdHMgKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvKiBBcHByb3hpbWF0ZSByZXNpZHVhbCBl
bmVyZ3kgKi8KLSAgICAgICAgKnJlc19ucmcgPSBzaWxrX0xTSElGVCggc2lsa19TTU1VTCggaW52
R2Fpbl9RMzAsIEMwICksIDIgKTsKLSAgICAgICAgKnJlc19ucmdfUSA9IC1yc2hpZnRzOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8qIFJldHVybiByZXNpZHVhbCBlbmVyZ3kgKi8KLSAgICAgICAg
bnJnICA9IENBZlsgMCBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCi0g
ICAgICAgIHRtcDEgPSAob3B1c19pbnQzMikxIDw8IDE2OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
UTE2ICovCi0gICAgICAgIGZvciggayA9IDA7IGsgPCBEOyBrKysgKSB7Ci0gICAgICAgICAgICBB
dG1wMSA9IHNpbGtfUlNISUZUX1JPVU5EKCBBZl9RQVsgayBdLCBRQSAtIDE2ICk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTE2ICovCi0gICAgICAgICAgICBucmcg
ID0gc2lsa19TTUxBV1coIG5yZywgQ0FmWyBrICsgMSBdLCBBdG1wMSApOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICAg
ICAgdG1wMSA9IHNpbGtfU01MQVdXKCB0bXAxLCBBdG1wMSwgQXRtcDEgKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExNiAqLwotICAgICAgICAgICAg
QV9RMTZbIGsgXSA9IC1BdG1wMTsKLSAgICAgICAgfQotICAgICAgICAqcmVzX25yZyA9IHNpbGtf
U01MQVdXKCBucmcsIHNpbGtfU01NVUwoIFNJTEtfRklYX0NPTlNUKCBGSU5EX0xQQ19DT05EX0ZB
QywgMzIgKSwgQzAgKSwgLXRtcDEgKTsvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgICpyZXNf
bnJnX1EgPSAtcnNoaWZ0czsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQveDg2L2J1
cmdfbW9kaWZpZWRfRklYX3NzZTRfMS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni9idXJnX21vZGlmaWVkX0ZJ
WF9zc2U0XzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmIxY2UwZmNjNDU4MDEwN2JiMmViYTU4ZmRkYmJlYWJj
MmFhZWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni9idXJnX21vZGlmaWVkX0ZJ
WF9zc2U0XzEuYwpAQCAtMCwwICsxLDM3NyBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE0LCBDaXNj
byBTeXN0ZW1zLCBJTkMKKyAgIFdyaXR0ZW4gYnkgWGlhbmdNaW5nWmh1IFdlaVpob3UgTWluUGVu
ZyBZYW5XYW5nCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUgbWV0OgorCisg
ICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICAgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICAgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2luY2x1ZGUgPGVtbWlu
dHJpbi5oPgorI2luY2x1ZGUgPHNtbWludHJpbi5oPgorCisjaW5jbHVkZSAiU2lnUHJvY19GSVgu
aCIKKyNpbmNsdWRlICJkZWZpbmUuaCIKKyNpbmNsdWRlICJ0dW5pbmdfcGFyYW1ldGVycy5oIgor
I2luY2x1ZGUgInBpdGNoLmgiCisjaW5jbHVkZSAiY2VsdC94ODYveDg2Y3B1LmgiCisKKyNkZWZp
bmUgTUFYX0ZSQU1FX1NJWkUgICAgICAgICAgICAgIDM4NCAgICAgICAgICAgICAvKiBzdWJmcl9s
ZW5ndGggKiBuYl9zdWJmciA9ICggMC4wMDUgKiAxNjAwMCArIDE2ICkgKiA0ID0gMzg0ICovCisK
KyNkZWZpbmUgUUEgICAgICAgICAgICAgICAgICAgICAgICAgIDI1CisjZGVmaW5lIE5fQklUU19I
RUFEX1JPT00gICAgICAgICAgICAyCisjZGVmaW5lIE1JTl9SU0hJRlRTICAgICAgICAgICAgICAg
ICAtMTYKKyNkZWZpbmUgTUFYX1JTSElGVFMgICAgICAgICAgICAgICAgICgzMiAtIFFBKQorCisv
KiBDb21wdXRlIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzIGZyb20gaW5wdXQgc2lnbmFsICovCit2
b2lkIHNpbGtfYnVyZ19tb2RpZmllZF9zc2U0XzEoCisgICAgb3B1c19pbnQzMiAgICAgICAgICAg
ICAgICAgICpyZXNfbnJnLCAgICAgICAgICAgLyogTyAgICBSZXNpZHVhbCBlbmVyZ3kgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAg
ICAgICAgICAgICAgICAgICAqcmVzX25yZ19RLCAgICAgICAgIC8qIE8gICAgUmVzaWR1YWwgZW5l
cmd5IFEgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBv
cHVzX2ludDMyICAgICAgICAgICAgICAgICAgQV9RMTZbXSwgICAgICAgICAgICAvKiBPICAgIFBy
ZWRpY3Rpb24gY29lZmZpY2llbnRzIChsZW5ndGggb3JkZXIpICAgICAgICAgICAgICAgICAgICAg
ICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIHhbXSwgICAgICAgICAgICAgICAg
LyogSSAgICBJbnB1dCBzaWduYWwsIGxlbmd0aDogbmJfc3ViZnIgKiAoIEQgKyBzdWJmcl9sZW5n
dGggKSAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgICAgICAgICBtaW5JbnZHYWlu
X1EzMCwgICAgIC8qIEkgICAgSW52ZXJzZSBvZiBtYXggcHJlZGljdGlvbiBnYWluICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAg
c3ViZnJfbGVuZ3RoLCAgICAgICAvKiBJICAgIElucHV0IHNpZ25hbCBzdWJmcmFtZSBsZW5ndGgg
KGluY2wuIEQgcHJlY2VkaW5nIHNhbXBsZXMpICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAg
ICAgICAgICAgIG5iX3N1YmZyLCAgICAgICAgICAgLyogSSAgICBOdW1iZXIgb2Ygc3ViZnJhbWVz
IHN0YWNrZWQgaW4geCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9w
dXNfaW50ICAgICAgICAgICAgICBELCAgICAgICAgICAgICAgICAgIC8qIEkgICAgT3JkZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaCAgICAgICAgICAgICAgICAvKiBJICAg
IFJ1bi10aW1lIGFyY2hpdGVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCispCit7CisgICAgb3B1c19pbnQgICAgICAgICBrLCBuLCBzLCBseiwgcnNoaWZ0cywg
cnNoaWZ0c19leHRyYSwgcmVhY2hlZF9tYXhfZ2FpbjsKKyAgICBvcHVzX2ludDMyICAgICAgIEMw
LCBudW0sIG5yZywgcmNfUTMxLCBpbnZHYWluX1EzMCwgQXRtcF9RQSwgQXRtcDEsIHRtcDEsIHRt
cDIsIHgxLCB4MjsKKyAgICBjb25zdCBvcHVzX2ludDE2ICp4X3B0cjsKKyAgICBvcHVzX2ludDMy
ICAgICAgIENfZmlyc3Rfcm93WyBTSUxLX01BWF9PUkRFUl9MUEMgXTsKKyAgICBvcHVzX2ludDMy
ICAgICAgIENfbGFzdF9yb3dbICBTSUxLX01BWF9PUkRFUl9MUEMgXTsKKyAgICBvcHVzX2ludDMy
ICAgICAgIEFmX1FBWyAgICAgICBTSUxLX01BWF9PUkRFUl9MUEMgXTsKKyAgICBvcHVzX2ludDMy
ICAgICAgIENBZlsgU0lMS19NQVhfT1JERVJfTFBDICsgMSBdOworICAgIG9wdXNfaW50MzIgICAg
ICAgQ0FiWyBTSUxLX01BWF9PUkRFUl9MUEMgKyAxIF07CisgICAgb3B1c19pbnQzMiAgICAgICB4
Y29yclsgU0lMS19NQVhfT1JERVJfTFBDIF07CisKKyAgICBfX20xMjhpIEZJUlNUXzMyMTAsIExB
U1RfMzIxMCwgQVRNUF8zMjEwLCBUTVAxXzMyMTAsIFRNUDJfMzIxMCwgVDFfMzIxMCwgVDJfMzIx
MCwgUFRSXzMyMTAsIFNVQkZSXzMyMTAsIFgxXzMyMTAsIFgyXzMyMTA7CisgICAgX19tMTI4aSBD
T05TVDEgPSBfbW1fc2V0MV9lcGkzMigxKTsKKworICAgIGNlbHRfYXNzZXJ0KCBzdWJmcl9sZW5n
dGggKiBuYl9zdWJmciA8PSBNQVhfRlJBTUVfU0laRSApOworCisgICAgLyogQ29tcHV0ZSBhdXRv
Y29ycmVsYXRpb25zLCBhZGRlZCBvdmVyIHN1YmZyYW1lcyAqLworICAgIHNpbGtfc3VtX3Nxcl9z
aGlmdCggJkMwLCAmcnNoaWZ0cywgeCwgbmJfc3ViZnIgKiBzdWJmcl9sZW5ndGggKTsKKyAgICBp
ZiggcnNoaWZ0cyA+IE1BWF9SU0hJRlRTICkgeworICAgICAgICBDMCA9IHNpbGtfTFNISUZUMzIo
IEMwLCByc2hpZnRzIC0gTUFYX1JTSElGVFMgKTsKKyAgICAgICAgc2lsa19hc3NlcnQoIEMwID4g
MCApOworICAgICAgICByc2hpZnRzID0gTUFYX1JTSElGVFM7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbHogPSBzaWxrX0NMWjMyKCBDMCApIC0gMTsKKyAgICAgICAgcnNoaWZ0c19leHRyYSA9IE5f
QklUU19IRUFEX1JPT00gLSBsejsKKyAgICAgICAgaWYoIHJzaGlmdHNfZXh0cmEgPiAwICkgewor
ICAgICAgICAgICAgcnNoaWZ0c19leHRyYSA9IHNpbGtfbWluKCByc2hpZnRzX2V4dHJhLCBNQVhf
UlNISUZUUyAtIHJzaGlmdHMgKTsKKyAgICAgICAgICAgIEMwID0gc2lsa19SU0hJRlQzMiggQzAs
IHJzaGlmdHNfZXh0cmEgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJzaGlmdHNf
ZXh0cmEgPSBzaWxrX21heCggcnNoaWZ0c19leHRyYSwgTUlOX1JTSElGVFMgLSByc2hpZnRzICk7
CisgICAgICAgICAgICBDMCA9IHNpbGtfTFNISUZUMzIoIEMwLCAtcnNoaWZ0c19leHRyYSApOwor
ICAgICAgICB9CisgICAgICAgIHJzaGlmdHMgKz0gcnNoaWZ0c19leHRyYTsKKyAgICB9CisgICAg
Q0FiWyAwIF0gPSBDQWZbIDAgXSA9IEMwICsgc2lsa19TTU1VTCggU0lMS19GSVhfQ09OU1QoIEZJ
TkRfTFBDX0NPTkRfRkFDLCAzMiApLCBDMCApICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIFEoLXJzaGlmdHMpICovCisgICAgc2lsa19tZW1zZXQoIENfZmlyc3Rfcm93LCAw
LCBTSUxLX01BWF9PUkRFUl9MUEMgKiBzaXplb2YoIG9wdXNfaW50MzIgKSApOworICAgIGlmKCBy
c2hpZnRzID4gMCApIHsKKyAgICAgICAgZm9yKCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7
CisgICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOworICAgICAgICAgICAg
Zm9yKCBuID0gMTsgbiA8IEQgKyAxOyBuKysgKSB7CisgICAgICAgICAgICAgICAgQ19maXJzdF9y
b3dbIG4gLSAxIF0gKz0gKG9wdXNfaW50MzIpc2lsa19SU0hJRlQ2NCgKKyAgICAgICAgICAgICAg
ICAgICAgc2lsa19pbm5lcl9wcm9kMTZfYWxpZ25lZF82NCggeF9wdHIsIHhfcHRyICsgbiwgc3Vi
ZnJfbGVuZ3RoIC0gbiwgYXJjaCApLCByc2hpZnRzICk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMrKyAp
IHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgb3B1c19pbnQzMiBkOworICAgICAg
ICAgICAgeF9wdHIgPSB4ICsgcyAqIHN1YmZyX2xlbmd0aDsKKyAgICAgICAgICAgIGNlbHRfcGl0
Y2hfeGNvcnIoeF9wdHIsIHhfcHRyICsgMSwgeGNvcnIsIHN1YmZyX2xlbmd0aCAtIEQsIEQsIGFy
Y2ggKTsKKyAgICAgICAgICAgIGZvciggbiA9IDE7IG4gPCBEICsgMTsgbisrICkgeworICAgICAg
ICAgICAgICAgZm9yICggaSA9IG4gKyBzdWJmcl9sZW5ndGggLSBELCBkID0gMDsgaSA8IHN1YmZy
X2xlbmd0aDsgaSsrICkKKyAgICAgICAgICAgICAgICAgIGQgPSBNQUMxNl8xNiggZCwgeF9wdHJb
IGkgXSwgeF9wdHJbIGkgLSBuIF0gKTsKKyAgICAgICAgICAgICAgIHhjb3JyWyBuIC0gMSBdICs9
IGQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IoIG4gPSAxOyBuIDwgRCArIDE7IG4r
KyApIHsKKyAgICAgICAgICAgICAgICBDX2ZpcnN0X3Jvd1sgbiAtIDEgXSArPSBzaWxrX0xTSElG
VDMyKCB4Y29yclsgbiAtIDEgXSwgLXJzaGlmdHMgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBzaWxrX21lbWNweSggQ19sYXN0X3JvdywgQ19maXJzdF9yb3csIFNJTEtf
TUFYX09SREVSX0xQQyAqIHNpemVvZiggb3B1c19pbnQzMiApICk7CisKKyAgICAvKiBJbml0aWFs
aXplICovCisgICAgQ0FiWyAwIF0gPSBDQWZbIDAgXSA9IEMwICsgc2lsa19TTU1VTCggU0lMS19G
SVhfQ09OU1QoIEZJTkRfTFBDX0NPTkRfRkFDLCAzMiApLCBDMCApICsgMTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFEoLXJzaGlmdHMpICovCisKKyAgICBpbnZHYWluX1EzMCA9
IChvcHVzX2ludDMyKTEgPDwgMzA7CisgICAgcmVhY2hlZF9tYXhfZ2FpbiA9IDA7CisgICAgZm9y
KCBuID0gMDsgbiA8IEQ7IG4rKyApIHsKKyAgICAgICAgLyogVXBkYXRlIGZpcnN0IHJvdyBvZiBj
b3JyZWxhdGlvbiBtYXRyaXggKHdpdGhvdXQgZmlyc3QgZWxlbWVudCkgKi8KKyAgICAgICAgLyog
VXBkYXRlIGxhc3Qgcm93IG9mIGNvcnJlbGF0aW9uIG1hdHJpeCAod2l0aG91dCBsYXN0IGVsZW1l
bnQsIHN0b3JlZCBpbiByZXZlcnNlZCBvcmRlcikgKi8KKyAgICAgICAgLyogVXBkYXRlIEMgKiBB
ZiAqLworICAgICAgICAvKiBVcGRhdGUgQyAqIGZsaXB1ZChBZikgKHN0b3JlZCBpbiByZXZlcnNl
ZCBvcmRlcikgKi8KKyAgICAgICAgaWYoIHJzaGlmdHMgPiAtMiApIHsKKyAgICAgICAgICAgIGZv
ciggcyA9IDA7IHMgPCBuYl9zdWJmcjsgcysrICkgeworICAgICAgICAgICAgICAgIHhfcHRyID0g
eCArIHMgKiBzdWJmcl9sZW5ndGg7CisgICAgICAgICAgICAgICAgeDEgID0gLXNpbGtfTFNISUZU
MzIoIChvcHVzX2ludDMyKXhfcHRyWyBuIF0sICAgICAgICAgICAgICAgICAgICAxNiAtIHJzaGlm
dHMgKTsgICAgICAgIC8qIFEoMTYtcnNoaWZ0cykgKi8KKyAgICAgICAgICAgICAgICB4MiAgPSAt
c2lsa19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gLSAxIF0s
IDE2IC0gcnNoaWZ0cyApOyAgICAgICAgLyogUSgxNi1yc2hpZnRzKSAqLworICAgICAgICAgICAg
ICAgIHRtcDEgPSBzaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgbiBdLCAgICAgICAg
ICAgICAgICAgICAgUUEgLSAxNiApOyAgICAgICAgICAgICAvKiBRKFFBLTE2KSAqLworICAgICAg
ICAgICAgICAgIHRtcDIgPSBzaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgc3ViZnJf
bGVuZ3RoIC0gbiAtIDEgXSwgUUEgLSAxNiApOyAgICAgICAgICAgICAvKiBRKFFBLTE2KSAqLwor
ICAgICAgICAgICAgICAgIGZvciggayA9IDA7IGsgPCBuOyBrKysgKSB7CisgICAgICAgICAgICAg
ICAgICAgIENfZmlyc3Rfcm93WyBrIF0gPSBzaWxrX1NNTEFXQiggQ19maXJzdF9yb3dbIGsgXSwg
eDEsIHhfcHRyWyBuIC0gayAtIDEgXSAgICAgICAgICAgICk7IC8qIFEoIC1yc2hpZnRzICkgKi8K
KyAgICAgICAgICAgICAgICAgICAgQ19sYXN0X3Jvd1sgayBdICA9IHNpbGtfU01MQVdCKCBDX2xh
c3Rfcm93WyBrIF0sICB4MiwgeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gKyBrIF0gKTsgLyogUSgg
LXJzaGlmdHMgKSAqLworICAgICAgICAgICAgICAgICAgICBBdG1wX1FBID0gQWZfUUFbIGsgXTsK
KyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IHNpbGtfU01MQVdCKCB0bXAxLCBBdG1wX1FBLCB4
X3B0clsgbiAtIGsgLSAxIF0gICAgICAgICAgICApOyAgICAgICAgICAgICAgICAgLyogUShRQS0x
NikgKi8KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfU01MQVdCKCB0bXAyLCBBdG1w
X1FBLCB4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgXSApOyAgICAgICAgICAgICAgICAgLyog
UShRQS0xNikgKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdG1wMSA9IHNp
bGtfTFNISUZUMzIoIC10bXAxLCAzMiAtIFFBIC0gcnNoaWZ0cyApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFEoMTYtcnNoaWZ0cykgKi8KKyAgICAgICAgICAgICAg
ICB0bXAyID0gc2lsa19MU0hJRlQzMiggLXRtcDIsIDMyIC0gUUEgLSByc2hpZnRzICk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSgxNi1yc2hpZnRzKSAqLworICAg
ICAgICAgICAgICAgIGZvciggayA9IDA7IGsgPD0gbjsgaysrICkgeworICAgICAgICAgICAgICAg
ICAgICBDQWZbIGsgXSA9IHNpbGtfU01MQVdCKCBDQWZbIGsgXSwgdG1wMSwgeF9wdHJbIG4gLSBr
IF0gICAgICAgICAgICAgICAgICAgICk7ICAgICAgICAvKiBRKCAtcnNoaWZ0ICkgKi8KKyAgICAg
ICAgICAgICAgICAgICAgQ0FiWyBrIF0gPSBzaWxrX1NNTEFXQiggQ0FiWyBrIF0sIHRtcDIsIHhf
cHRyWyBzdWJmcl9sZW5ndGggLSBuICsgayAtIDEgXSApOyAgICAgICAgLyogUSggLXJzaGlmdCAp
ICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZm9yKCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7CisgICAgICAgICAg
ICAgICAgeF9wdHIgPSB4ICsgcyAqIHN1YmZyX2xlbmd0aDsKKyAgICAgICAgICAgICAgICB4MSAg
PSAtc2lsa19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIG4gXSwgICAgICAgICAgICAgICAg
ICAgIC1yc2hpZnRzICk7ICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAg
ICAgICAgIHgyICA9IC1zaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgc3ViZnJfbGVu
Z3RoIC0gbiAtIDEgXSwgLXJzaGlmdHMgKTsgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICov
CisgICAgICAgICAgICAgICAgdG1wMSA9IHNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRy
WyBuIF0sICAgICAgICAgICAgICAgICAgICAxNyApOyAgICAgICAgICAgICAgICAgIC8qIFExNyAq
LworICAgICAgICAgICAgICAgIHRtcDIgPSBzaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0
clsgc3ViZnJfbGVuZ3RoIC0gbiAtIDEgXSwgMTcgKTsgICAgICAgICAgICAgICAgICAvKiBRMTcg
Ki8KKworICAgICAgICAgICAgICAgIFgxXzMyMTAgPSBfbW1fc2V0MV9lcGkzMiggeDEgKTsKKyAg
ICAgICAgICAgICAgICBYMl8zMjEwID0gX21tX3NldDFfZXBpMzIoIHgyICk7CisgICAgICAgICAg
ICAgICAgVE1QMV8zMjEwID0gX21tX3NldHplcm9fc2kxMjgoKTsKKyAgICAgICAgICAgICAgICBU
TVAyXzMyMTAgPSBfbW1fc2V0emVyb19zaTEyOCgpOworICAgICAgICAgICAgICAgIGZvciggayA9
IDA7IGsgPCBuIC0gMzsgayArPSA0ICkgeworICAgICAgICAgICAgICAgICAgICBQVFJfMzIxMCAg
ID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCAmeF9wdHJbIG4gLSBrIC0gMSAtIDMgXSApOworICAg
ICAgICAgICAgICAgICAgICBTVUJGUl8zMjEwID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCAmeF9w
dHJbIHN1YmZyX2xlbmd0aCAtIG4gKyBrIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgRklSU1Rf
MzIxMCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikmQ19maXJzdF9yb3dbIGsgXSApOwor
ICAgICAgICAgICAgICAgICAgICBQVFJfMzIxMCAgID0gX21tX3NodWZmbGVfZXBpMzIoIFBUUl8z
MjEwLCAgX01NX1NIVUZGTEUoIDAsIDEsIDIsIDMgKSApOworICAgICAgICAgICAgICAgICAgICBM
QVNUXzMyMTAgID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSZDX2xhc3Rfcm93WyBrIF0g
KTsKKyAgICAgICAgICAgICAgICAgICAgQVRNUF8zMjEwICA9IF9tbV9sb2FkdV9zaTEyOCggKF9f
bTEyOGkgKikmQWZfUUFbIGsgXSApOworCisgICAgICAgICAgICAgICAgICAgIFQxXzMyMTAgPSBf
bW1fbXVsbG9fZXBpMzIoIFBUUl8zMjEwLCBYMV8zMjEwICk7CisgICAgICAgICAgICAgICAgICAg
IFQyXzMyMTAgPSBfbW1fbXVsbG9fZXBpMzIoIFNVQkZSXzMyMTAsIFgyXzMyMTAgKTsKKworICAg
ICAgICAgICAgICAgICAgICBBVE1QXzMyMTAgPSBfbW1fc3JhaV9lcGkzMiggQVRNUF8zMjEwLCA3
ICk7CisgICAgICAgICAgICAgICAgICAgIEFUTVBfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIEFUTVBf
MzIxMCwgQ09OU1QxICk7CisgICAgICAgICAgICAgICAgICAgIEFUTVBfMzIxMCA9IF9tbV9zcmFp
X2VwaTMyKCBBVE1QXzMyMTAsIDEgKTsKKworICAgICAgICAgICAgICAgICAgICBGSVJTVF8zMjEw
ID0gX21tX2FkZF9lcGkzMiggRklSU1RfMzIxMCwgVDFfMzIxMCApOworICAgICAgICAgICAgICAg
ICAgICBMQVNUXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBMQVNUXzMyMTAsIFQyXzMyMTAgKTsKKwor
ICAgICAgICAgICAgICAgICAgICBQVFJfMzIxMCAgID0gX21tX211bGxvX2VwaTMyKCBBVE1QXzMy
MTAsIFBUUl8zMjEwICk7CisgICAgICAgICAgICAgICAgICAgIFNVQkZSXzMyMTAgICA9IF9tbV9t
dWxsb19lcGkzMiggQVRNUF8zMjEwLCBTVUJGUl8zMjEwICk7CisKKyAgICAgICAgICAgICAgICAg
ICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikmQ19maXJzdF9yb3dbIGsgXSwgRklSU1Rf
MzIxMCApOworICAgICAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAq
KSZDX2xhc3Rfcm93WyBrIF0sIExBU1RfMzIxMCApOworCisgICAgICAgICAgICAgICAgICAgIFRN
UDFfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIFRNUDFfMzIxMCwgUFRSXzMyMTAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgVE1QMl8zMjEwID0gX21tX2FkZF9lcGkzMiggVE1QMl8zMjEwLCBTVUJGUl8z
MjEwICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgVE1QMV8zMjEwID0g
X21tX2FkZF9lcGkzMiggVE1QMV8zMjEwLCBfbW1fdW5wYWNraGlfZXBpNjQoVE1QMV8zMjEwLCBU
TVAxXzMyMTAgKSApOworICAgICAgICAgICAgICAgIFRNUDJfMzIxMCA9IF9tbV9hZGRfZXBpMzIo
IFRNUDJfMzIxMCwgX21tX3VucGFja2hpX2VwaTY0KFRNUDJfMzIxMCwgVE1QMl8zMjEwICkgKTsK
KyAgICAgICAgICAgICAgICBUTVAxXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBUTVAxXzMyMTAsIF9t
bV9zaHVmZmxlbG9fZXBpMTYoVE1QMV8zMjEwLCAweDBFICkgKTsKKyAgICAgICAgICAgICAgICBU
TVAyXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBUTVAyXzMyMTAsIF9tbV9zaHVmZmxlbG9fZXBpMTYo
VE1QMl8zMjEwLCAweDBFICkgKTsKKworICAgICAgICAgICAgICAgIHRtcDEgKz0gX21tX2N2dHNp
MTI4X3NpMzIoIFRNUDFfMzIxMCApOworICAgICAgICAgICAgICAgIHRtcDIgKz0gX21tX2N2dHNp
MTI4X3NpMzIoIFRNUDJfMzIxMCApOworCisgICAgICAgICAgICAgICAgZm9yKCA7IGsgPCBuOyBr
KysgKSB7CisgICAgICAgICAgICAgICAgICAgIENfZmlyc3Rfcm93WyBrIF0gPSBzaWxrX01MQSgg
Q19maXJzdF9yb3dbIGsgXSwgeDEsIHhfcHRyWyBuIC0gayAtIDEgXSAgICAgICAgICAgICk7IC8q
IFEoIC1yc2hpZnRzICkgKi8KKyAgICAgICAgICAgICAgICAgICAgQ19sYXN0X3Jvd1sgayBdICA9
IHNpbGtfTUxBKCBDX2xhc3Rfcm93WyBrIF0sICB4MiwgeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4g
KyBrIF0gKTsgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgICAgICAgICBBdG1wMSA9
IHNpbGtfUlNISUZUX1JPVU5EKCBBZl9RQVsgayBdLCBRQSAtIDE3ICk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBRMTcgKi8KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9
IHNpbGtfTUxBKCB0bXAxLCB4X3B0clsgbiAtIGsgLSAxIF0sICAgICAgICAgICAgQXRtcDEgKTsg
ICAgICAgICAgICAgICAgICAgICAgLyogUTE3ICovCisgICAgICAgICAgICAgICAgICAgIHRtcDIg
PSBzaWxrX01MQSggdG1wMiwgeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gKyBrIF0sIEF0bXAxICk7
ICAgICAgICAgICAgICAgICAgICAgIC8qIFExNyAqLworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRtcDEgPSAtdG1wMTsgICAgICAgICAgICAgICAgLyogUTE3ICovCisgICAg
ICAgICAgICAgICAgdG1wMiA9IC10bXAyOyAgICAgICAgICAgICAgICAvKiBRMTcgKi8KKworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgX19tMTI4aSB4bW1fdG1wMSwgeG1t
X3RtcDI7CisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgeG1tX3hfcHRyX25fa194MngwLCB4
bW1feF9wdHJfbl9rX3gzeDE7CisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgeG1tX3hfcHRy
X3N1Yl94MngwLCB4bW1feF9wdHJfc3ViX3gzeDE7CisKKyAgICAgICAgICAgICAgICAgICAgeG1t
X3RtcDEgPSBfbW1fc2V0MV9lcGkzMiggdG1wMSApOworICAgICAgICAgICAgICAgICAgICB4bW1f
dG1wMiA9IF9tbV9zZXQxX2VwaTMyKCB0bXAyICk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9y
KCBrID0gMDsgayA8PSBuIC0gMzsgayArPSA0ICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
eG1tX3hfcHRyX25fa194MngwID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCAmeF9wdHJbIG4gLSBr
IC0gMyBdICk7CisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfc3ViX3gyeDAgPSBP
UF9DVlRFUEkxNl9FUEkzMl9NNjQoICZ4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgLSAxIF0g
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX25fa194MngwID0gX21tX3No
dWZmbGVfZXBpMzIoIHhtbV94X3B0cl9uX2tfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDEsIDIsIDMg
KSApOworCisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gyeDAgPSBfbW1f
c2xsaV9lcGkzMiggeG1tX3hfcHRyX25fa194MngwLCAtcnNoaWZ0cyAtIDEgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJfeDJ4MCA9IF9tbV9zbGxpX2VwaTMyKCB4bW1f
eF9wdHJfc3ViX3gyeDAsIC1yc2hpZnRzIC0gMSApOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzLCB4bW1feF9wdHJfbl9rX3gzeDEgPSBfbW1f
c3JsaV9zaTEyOCh4bW1feF9wdHJfbl9rX3gyeDAsIDQpKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHhtbV94X3B0cl9uX2tfeDN4MSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4bW1feF9wdHJfbl9r
X3gyeDAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHhtbV94X3B0cl9zdWJfeDN4MSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4bW1feF9wdHJfc3Vi
X3gyeDAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgeG1tX3hfcHRyX25fa194MngwID0gX21tX211bF9lcGkzMiggeG1tX3hfcHRyX25fa194
MngwLCB4bW1fdG1wMSApOworICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX25fa194
M3gxID0gX21tX211bF9lcGkzMiggeG1tX3hfcHRyX25fa194M3gxLCB4bW1fdG1wMSApOworICAg
ICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1Yl94MngwID0gX21tX211bF9lcGkzMigg
eG1tX3hfcHRyX3N1Yl94MngwLCB4bW1fdG1wMiApOworICAgICAgICAgICAgICAgICAgICAgICAg
eG1tX3hfcHRyX3N1Yl94M3gxID0gX21tX211bF9lcGkzMiggeG1tX3hfcHRyX3N1Yl94M3gxLCB4
bW1fdG1wMiApOworCisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gyeDAg
PSBfbW1fc3JsaV9lcGk2NCggeG1tX3hfcHRyX25fa194MngwLCAxNiApOworICAgICAgICAgICAg
ICAgICAgICAgICAgeG1tX3hfcHRyX25fa194M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV94X3B0
cl9uX2tfeDN4MSwgMTYgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJf
eDJ4MCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1feF9wdHJfc3ViX3gyeDAsIDE2ICk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB4bW1feF9wdHJfc3ViX3gzeDEgPSBfbW1fc2xsaV9lcGk2NCggeG1t
X3hfcHRyX3N1Yl94M3gxLCAxNiApOworCisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9w
dHJfbl9rX3gyeDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV94X3B0cl9uX2tfeDJ4MCwgeG1tX3hf
cHRyX25fa194M3gxLCAweENDICk7CisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJf
c3ViX3gyeDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV94X3B0cl9zdWJfeDJ4MCwgeG1tX3hfcHRy
X3N1Yl94M3gxLCAweENDICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFgxXzMyMTAgID0g
X21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSZDQWZbIGsgXSApOworICAgICAgICAgICAgICAg
ICAgICAgICAgUFRSXzMyMTAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopJkNBYlsgayBd
ICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFgxXzMyMTAgID0gX21tX2FkZF9lcGkzMigg
WDFfMzIxMCwgeG1tX3hfcHRyX25fa194MngwICk7CisgICAgICAgICAgICAgICAgICAgICAgICBQ
VFJfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIFBUUl8zMjEwLCB4bW1feF9wdHJfc3ViX3gyeDAgKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikm
Q0FmWyBrIF0sIFgxXzMyMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVf
c2kxMjgoIChfX20xMjhpICopJkNBYlsgayBdLCBQVFJfMzIxMCApOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZm9yKCA7IGsgPD0gbjsgaysrICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgQ0FmWyBrIF0gPSBzaWxrX1NNTEFXVyggQ0FmWyBrIF0sIHRt
cDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsa19MU0hJRlQzMiggKG9wdXNfaW50
MzIpeF9wdHJbIG4gLSBrIF0sIC1yc2hpZnRzIC0gMSApICk7ICAgICAgICAgICAgICAgICAgICAv
KiBRKCAtcnNoaWZ0ICkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIENBYlsgayBdID0gc2ls
a19TTUxBV1coIENBYlsgayBdLCB0bXAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
bGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRyWyBzdWJmcl9sZW5ndGggLSBuICsgayAtIDEg
XSwgLXJzaGlmdHMgLSAxICkgKTsgLyogUSggLXJzaGlmdCApICovCisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvKiBDYWxjdWxhdGUgbm9taW5hdG9yIGFuZCBkZW5vbWluYXRvciBmb3IgdGhlIG5leHQg
b3JkZXIgcmVmbGVjdGlvbiAocGFyY29yKSBjb2VmZmljaWVudCAqLworICAgICAgICB0bXAxID0g
Q19maXJzdF9yb3dbIG4gXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCisgICAg
ICAgIHRtcDIgPSBDX2xhc3Rfcm93WyBuIF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRz
ICkgKi8KKyAgICAgICAgbnVtICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
USggLXJzaGlmdHMgKSAqLworICAgICAgICBucmcgID0gc2lsa19BREQzMiggQ0FiWyAwIF0sIENB
ZlsgMCBdICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBRKCAxLXJzaGlmdHMgKSAqLworICAgICAgICBmb3IoIGsgPSAwOyBrIDwgbjsg
aysrICkgeworICAgICAgICAgICAgQXRtcF9RQSA9IEFmX1FBWyBrIF07CisgICAgICAgICAgICBs
eiA9IHNpbGtfQ0xaMzIoIHNpbGtfYWJzKCBBdG1wX1FBICkgKSAtIDE7CisgICAgICAgICAgICBs
eiA9IHNpbGtfbWluKCAzMiAtIFFBLCBseiApOworICAgICAgICAgICAgQXRtcDEgPSBzaWxrX0xT
SElGVDMyKCBBdG1wX1FBLCBseiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBRKCBRQSArIGx6ICkgKi8KKworICAgICAgICAgICAgdG1w
MSA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAxLCBzaWxrX1NNTVVMKCBDX2xhc3Rfcm93WyAgbiAt
IGsgLSAxIF0sIEF0bXAxICksIDMyIC0gUUEgLSBseiApOyAgLyogUSggLXJzaGlmdHMgKSAqLwor
ICAgICAgICAgICAgdG1wMiA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAyLCBzaWxrX1NNTVVMKCBD
X2ZpcnN0X3Jvd1sgbiAtIGsgLSAxIF0sIEF0bXAxICksIDMyIC0gUUEgLSBseiApOyAgLyogUSgg
LXJzaGlmdHMgKSAqLworICAgICAgICAgICAgbnVtICA9IHNpbGtfQUREX0xTSElGVDMyKCBudW0s
ICBzaWxrX1NNTVVMKCBDQWJbIG4gLSBrIF0sICAgICAgICAgICAgIEF0bXAxICksIDMyIC0gUUEg
LSBseiApOyAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgbnJnICA9IHNpbGtfQURE
X0xTSElGVDMyKCBucmcsICBzaWxrX1NNTVVMKCBzaWxrX0FERDMyKCBDQWJbIGsgKyAxIF0sIENB
ZlsgayArIDEgXSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG1wMSApLCAzMiAtIFFBIC0g
bHogKTsgICAgLyogUSggMS1yc2hpZnRzICkgKi8KKyAgICAgICAgfQorICAgICAgICBDQWZbIG4g
KyAxIF0gPSB0bXAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCisgICAg
ICAgIENBYlsgbiArIDEgXSA9IHRtcDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRz
ICkgKi8KKyAgICAgICAgbnVtID0gc2lsa19BREQzMiggbnVtLCB0bXAyICk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
USggLXJzaGlmdHMgKSAqLworICAgICAgICBudW0gPSBzaWxrX0xTSElGVDMyKCAtbnVtLCAxICk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBRKCAxLXJzaGlmdHMgKSAqLworCisgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUg
bmV4dCBvcmRlciByZWZsZWN0aW9uIChwYXJjb3IpIGNvZWZmaWNpZW50ICovCisgICAgICAgIGlm
KCBzaWxrX2FicyggbnVtICkgPCBucmcgKSB7CisgICAgICAgICAgICByY19RMzEgPSBzaWxrX0RJ
VjMyX3ZhclEoIG51bSwgbnJnLCAzMSApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cmNfUTMxID0gKCBudW0gPiAwICkgPyBzaWxrX2ludDMyX01BWCA6IHNpbGtfaW50MzJfTUlOOwor
ICAgICAgICB9CisKKyAgICAgICAgLyogVXBkYXRlIGludmVyc2UgcHJlZGljdGlvbiBnYWluICov
CisgICAgICAgIHRtcDEgPSAoIChvcHVzX2ludDMyKTEgPDwgMzAgKSAtIHNpbGtfU01NVUwoIHJj
X1EzMSwgcmNfUTMxICk7CisgICAgICAgIHRtcDEgPSBzaWxrX0xTSElGVCggc2lsa19TTU1VTCgg
aW52R2Fpbl9RMzAsIHRtcDEgKSwgMiApOworICAgICAgICBpZiggdG1wMSA8PSBtaW5JbnZHYWlu
X1EzMCApIHsKKyAgICAgICAgICAgIC8qIE1heCBwcmVkaWN0aW9uIGdhaW4gZXhjZWVkZWQ7IHNl
dCByZWZsZWN0aW9uIGNvZWZmaWNpZW50IHN1Y2ggdGhhdCBtYXggcHJlZGljdGlvbiBnYWluIGlz
IGV4YWN0bHkgaGl0ICovCisgICAgICAgICAgICB0bXAyID0gKCAob3B1c19pbnQzMikxIDw8IDMw
ICkgLSBzaWxrX0RJVjMyX3ZhclEoIG1pbkludkdhaW5fUTMwLCBpbnZHYWluX1EzMCwgMzAgKTsg
ICAgICAgICAgICAvKiBRMzAgKi8KKyAgICAgICAgICAgIHJjX1EzMSA9IHNpbGtfU1FSVF9BUFBS
T1goIHRtcDIgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFExNSAqLworICAgICAgICAgICAgaWYoIHJjX1EzMSA+IDAgKSB7CisgICAgICAgICAg
ICAgICAgIC8qIE5ld3Rvbi1SYXBoc29uIGl0ZXJhdGlvbiAqLworICAgICAgICAgICAgICAgIHJj
X1EzMSA9IHNpbGtfUlNISUZUMzIoIHJjX1EzMSArIHNpbGtfRElWMzIoIHRtcDIsIHJjX1EzMSAp
LCAxICk7ICAgICAgICAgICAgICAgICAgIC8qIFExNSAqLworICAgICAgICAgICAgICAgIHJjX1Ez
MSA9IHNpbGtfTFNISUZUMzIoIHJjX1EzMSwgMTYgKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFEzMSAqLworICAgICAgICAgICAgICAgIGlmKCBudW0g
PCAwICkgeworICAgICAgICAgICAgICAgICAgICAvKiBFbnN1cmUgYWRqdXN0ZWQgcmVmbGVjdGlv
biBjb2VmZmljaWVudHMgaGFzIHRoZSBvcmlnaW5hbCBzaWduICovCisgICAgICAgICAgICAgICAg
ICAgIHJjX1EzMSA9IC1yY19RMzE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaW52R2Fpbl9RMzAgPSBtaW5JbnZHYWluX1EzMDsKKyAgICAgICAgICAgIHJl
YWNoZWRfbWF4X2dhaW4gPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW52R2Fp
bl9RMzAgPSB0bXAxOworICAgICAgICB9CisKKyAgICAgICAgLyogVXBkYXRlIHRoZSBBUiBjb2Vm
ZmljaWVudHMgKi8KKyAgICAgICAgZm9yKCBrID0gMDsgayA8IChuICsgMSkgPj4gMTsgaysrICkg
eworICAgICAgICAgICAgdG1wMSA9IEFmX1FBWyBrIF07ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUUEgKi8KKyAgICAg
ICAgICAgIHRtcDIgPSBBZl9RQVsgbiAtIGsgLSAxIF07ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFFBICovCisgICAgICAgICAgICBB
Zl9RQVsgayBdICAgICAgICAgPSBzaWxrX0FERF9MU0hJRlQzMiggdG1wMSwgc2lsa19TTU1VTCgg
dG1wMiwgcmNfUTMxICksIDEgKTsgICAgICAvKiBRQSAqLworICAgICAgICAgICAgQWZfUUFbIG4g
LSBrIC0gMSBdID0gc2lsa19BRERfTFNISUZUMzIoIHRtcDIsIHNpbGtfU01NVUwoIHRtcDEsIHJj
X1EzMSApLCAxICk7ICAgICAgLyogUUEgKi8KKyAgICAgICAgfQorICAgICAgICBBZl9RQVsgbiBd
ID0gc2lsa19SU0hJRlQzMiggcmNfUTMxLCAzMSAtIFFBICk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogUUEgKi8KKworICAgICAgICBpZiggcmVhY2hlZF9tYXhf
Z2FpbiApIHsKKyAgICAgICAgICAgIC8qIFJlYWNoZWQgbWF4IHByZWRpY3Rpb24gZ2Fpbjsgc2V0
IHJlbWFpbmluZyBjb2VmZmljaWVudHMgdG8gemVybyBhbmQgZXhpdCBsb29wICovCisgICAgICAg
ICAgICBmb3IoIGsgPSBuICsgMTsgayA8IEQ7IGsrKyApIHsKKyAgICAgICAgICAgICAgICBBZl9R
QVsgayBdID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgLyogVXBkYXRlIEMgKiBBZiBhbmQgQyAqIEFiICovCisgICAgICAgIGZvcigg
ayA9IDA7IGsgPD0gbiArIDE7IGsrKyApIHsKKyAgICAgICAgICAgIHRtcDEgPSBDQWZbIGsgXTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KKyAgICAgICAgICAgIHRtcDIgPSBDQWJbIG4g
LSBrICsgMSBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KKyAgICAgICAgICAgIENBZlsgayBdICAg
ICAgICAgPSBzaWxrX0FERF9MU0hJRlQzMiggdG1wMSwgc2lsa19TTU1VTCggdG1wMiwgcmNfUTMx
ICksIDEgKTsgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KKyAgICAgICAgICAgIENBYlsgbiAt
IGsgKyAxIF0gPSBzaWxrX0FERF9MU0hJRlQzMiggdG1wMiwgc2lsa19TTU1VTCggdG1wMSwgcmNf
UTMxICksIDEgKTsgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmKCByZWFjaGVkX21heF9nYWluICkgeworICAgICAgICBmb3IoIGsgPSAwOyBrIDwg
RDsgaysrICkgeworICAgICAgICAgICAgLyogU2NhbGUgY29lZmZpY2llbnRzICovCisgICAgICAg
ICAgICBBX1ExNlsgayBdID0gLXNpbGtfUlNISUZUX1JPVU5EKCBBZl9RQVsgayBdLCBRQSAtIDE2
ICk7CisgICAgICAgIH0KKyAgICAgICAgLyogU3VidHJhY3QgZW5lcmd5IG9mIHByZWNlZGluZyBz
YW1wbGVzIGZyb20gQzAgKi8KKyAgICAgICAgaWYoIHJzaGlmdHMgPiAwICkgeworICAgICAgICAg
ICAgZm9yKCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7CisgICAgICAgICAgICAgICAgeF9w
dHIgPSB4ICsgcyAqIHN1YmZyX2xlbmd0aDsKKyAgICAgICAgICAgICAgICBDMCAtPSAob3B1c19p
bnQzMilzaWxrX1JTSElGVDY0KCBzaWxrX2lubmVyX3Byb2QxNl9hbGlnbmVkXzY0KCB4X3B0ciwg
eF9wdHIsIEQsIGFyY2ggKSwgcnNoaWZ0cyApOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZm9yKCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7CisgICAg
ICAgICAgICAgICAgeF9wdHIgPSB4ICsgcyAqIHN1YmZyX2xlbmd0aDsKKyAgICAgICAgICAgICAg
ICBDMCAtPSBzaWxrX0xTSElGVDMyKCBzaWxrX2lubmVyX3Byb2RfYWxpZ25lZCggeF9wdHIsIHhf
cHRyLCBELCBhcmNoICksIC1yc2hpZnRzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgLyogQXBwcm94aW1hdGUgcmVzaWR1YWwgZW5lcmd5ICovCisgICAgICAgICpyZXNfbnJn
ID0gc2lsa19MU0hJRlQoIHNpbGtfU01NVUwoIGludkdhaW5fUTMwLCBDMCApLCAyICk7CisgICAg
ICAgICpyZXNfbnJnX1EgPSAtcnNoaWZ0czsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBSZXR1
cm4gcmVzaWR1YWwgZW5lcmd5ICovCisgICAgICAgIG5yZyAgPSBDQWZbIDAgXTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICB0bXAxID0gKG9wdXNfaW50MzIp
MSA8PCAxNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExNiAqLworICAgICAgICBmb3IoIGsgPSAw
OyBrIDwgRDsgaysrICkgeworICAgICAgICAgICAgQXRtcDEgPSBzaWxrX1JTSElGVF9ST1VORCgg
QWZfUUFbIGsgXSwgUUEgLSAxNiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFExNiAqLworICAgICAgICAgICAgbnJnICA9IHNpbGtfU01MQVdXKCBucmcsIENBZlsg
ayArIDEgXSwgQXRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFEoIC1yc2hpZnRzICkgKi8KKyAgICAgICAgICAgIHRtcDEgPSBzaWxrX1NNTEFXVyggdG1w
MSwgQXRtcDEsIEF0bXAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBRMTYgKi8KKyAgICAgICAgICAgIEFfUTE2WyBrIF0gPSAtQXRtcDE7CisgICAg
ICAgIH0KKyAgICAgICAgKnJlc19ucmcgPSBzaWxrX1NNTEFXVyggbnJnLCBzaWxrX1NNTVVMKCBT
SUxLX0ZJWF9DT05TVCggRklORF9MUENfQ09ORF9GQUMsIDMyICksIEMwICksIC10bXAxICk7Lyog
USggLXJzaGlmdHMgKSAqLworICAgICAgICAqcmVzX25yZ19RID0gLXJzaGlmdHM7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni9wcmVmaWx0ZXJfRklYX3NzZS5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zp
eGVkL3g4Ni9wcmVmaWx0ZXJfRklYX3NzZS5jCmluZGV4IGQ4YzljMmY1NWYwNjY0NTA4MjkzMDk4
MDJiODE1OTNiZjU1OGE0ZWQuLjU1NTQzMmNkOTY1NzBiODA1ZGI1ODdiZjIzNWIwZTA4NWE3Zjli
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC94ODYvcHJlZmlsdGVyX0ZJWF9zc2UuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZml4ZWQveDg2L3ByZWZpbHRlcl9GSVhfc3NlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBz
aWxrX3dhcnBlZF9MUENfYW5hbHlzaXNfZmlsdGVyX0ZJWF9zc2U0XzEoCiAgICAgb3B1c19pbnQz
MiAgIGFjY19RMTEsIHRtcDEsIHRtcDI7CiAKICAgICAvKiBPcmRlciBtdXN0IGJlIGV2ZW4gKi8K
LSAgICBzaWxrX2Fzc2VydCggKCBvcmRlciAmIDEgKSA9PSAwICk7CisgICAgY2VsdF9hc3NlcnQo
ICggb3JkZXIgJiAxICkgPT0gMCApOwogCiAgICAgaWYgKG9yZGVyID09IDEwKQogICAgIHsKQEAg
LTY1LDcgKzY1LDcgQEAgdm9pZCBzaWxrX3dhcnBlZF9MUENfYW5hbHlzaXNfZmlsdGVyX0ZJWF9z
c2U0XzEoCiAgICAgICAgICAgICByZWdpc3RlciBvcHVzX2ludDMyIHN0YXRlXzgsIHN0YXRlXzks
IHN0YXRlX2E7CiAgICAgICAgICAgICByZWdpc3RlciBvcHVzX2ludDY0IGNvZWZfUTEzXzgsIGNv
ZWZfUTEzXzk7CiAKLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBsZW5ndGggPiAwICk7CisgICAg
ICAgICAgICBjZWx0X2Fzc2VydCggbGVuZ3RoID4gMCApOwogCiAgICAgICAgICAgICBjb2VmX1Ex
M18zMjEwID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCAmY29lZl9RMTNbIDAgXSApOwogICAgICAg
ICAgICAgY29lZl9RMTNfNzY1NCA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJmNvZWZfUTEzWyA0
IF0gKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC94ODYvdmVjdG9yX29wc19GSVhfc3NlLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZml4ZWQveDg2L3ZlY3Rvcl9vcHNfRklYX3NzZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMWU5MDU2NGQwZWQ3ZTZhMzUwODI3ZDM5NmEyMjMwMDhlNGY4Yjc5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC94ODYvdmVj
dG9yX29wc19GSVhfc3NlLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKiBDb3B5
cmlnaHQgKGMpIDIwMTQsIENpc2NvIFN5c3RlbXMsIElOQwotICAgV3JpdHRlbiBieSBYaWFuZ01p
bmdaaHUgV2VpWmhvdSBNaW5QZW5nIFlhbldhbmcKLQotICAgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotICAgLSBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICAgYGBBUyBJ
UycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgotICAgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKLSAg
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lmZGVmIEhBVkVfQ09O
RklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8eG1taW50cmlu
Lmg+Ci0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jaW5jbHVkZSA8c21taW50cmluLmg+Ci0jaW5j
bHVkZSAibWFpbi5oIgotCi0jaW5jbHVkZSAiU2lnUHJvY19GSVguaCIKLSNpbmNsdWRlICJwaXRj
aC5oIgotCi1vcHVzX2ludDY0IHNpbGtfaW5uZXJfcHJvZDE2X2FsaWduZWRfNjRfc3NlNF8xKAot
ICAgIGNvbnN0IG9wdXNfaW50MTYgICAgICAgICAgICAqaW5WZWMxLCAgICAgICAgICAgIC8qICAg
IEkgaW5wdXQgdmVjdG9yIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgKmluVmVjMiwgICAgICAg
ICAgICAvKiAgICBJIGlucHV0IHZlY3RvciAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIGxlbiAg
ICAgICAgICAgICAgICAgLyogICAgSSB2ZWN0b3IgbGVuZ3RocyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKQotewotICAgIG9wdXNfaW50ICBpLCBkYXRh
U2l6ZTg7Ci0gICAgb3B1c19pbnQ2NCBzdW07Ci0KLSAgICBfX20xMjhpIHhtbV90ZW1wYTsKLSAg
ICBfX20xMjhpIGluVmVjMV83NjU0MzIxMCwgYWNjMTsKLSAgICBfX20xMjhpIGluVmVjMl83NjU0
MzIxMCwgYWNjMjsKLQotICAgIHN1bSA9IDA7Ci0gICAgZGF0YVNpemU4ID0gbGVuICYgfjc7Ci0K
LSAgICBhY2MxID0gX21tX3NldHplcm9fc2kxMjgoKTsKLSAgICBhY2MyID0gX21tX3NldHplcm9f
c2kxMjgoKTsKLQotICAgIGZvciggaSA9IDA7IGkgPCBkYXRhU2l6ZTg7IGkgKz0gOCApIHsKLSAg
ICAgICAgaW5WZWMxXzc2NTQzMjEwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmaW5W
ZWMxW2kgKyAwXSApICk7Ci0gICAgICAgIGluVmVjMl83NjU0MzIxMCA9IF9tbV9sb2FkdV9zaTEy
OCggKF9fbTEyOGkgKikoJmluVmVjMltpICsgMF0gKSApOwotCi0gICAgICAgIC8qIG9ubHkgd2hl
biBhbGwgNCBvcGVyYW5kcyBhcmUgLTMyNzY4ICgweDgwMDApLCB0aGlzIHJlc3VsdHMgaW4gd3Jh
cCBhcm91bmQgKi8KLSAgICAgICAgaW5WZWMxXzc2NTQzMjEwID0gX21tX21hZGRfZXBpMTYoIGlu
VmVjMV83NjU0MzIxMCwgaW5WZWMyXzc2NTQzMjEwICk7Ci0KLSAgICAgICAgeG1tX3RlbXBhICAg
ICAgID0gX21tX2N2dGVwaTMyX2VwaTY0KCBpblZlYzFfNzY1NDMyMTAgKTsKLSAgICAgICAgLyog
ZXF1YWwgc2hpZnQgcmlnaHQgOCBieXRlcyAqLwotICAgICAgICBpblZlYzFfNzY1NDMyMTAgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggaW5WZWMxXzc2NTQzMjEwLCBfTU1fU0hVRkZMRSggMCwgMCwgMywg
MiApICk7Ci0gICAgICAgIGluVmVjMV83NjU0MzIxMCA9IF9tbV9jdnRlcGkzMl9lcGk2NCggaW5W
ZWMxXzc2NTQzMjEwICk7Ci0KLSAgICAgICAgYWNjMSA9IF9tbV9hZGRfZXBpNjQoIGFjYzEsIHht
bV90ZW1wYSApOwotICAgICAgICBhY2MyID0gX21tX2FkZF9lcGk2NCggYWNjMiwgaW5WZWMxXzc2
NTQzMjEwICk7Ci0gICAgfQotCi0gICAgYWNjMSA9IF9tbV9hZGRfZXBpNjQoIGFjYzEsIGFjYzIg
KTsKLQotICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDggYnl0ZXMgKi8KLSAgICBhY2MyID0gX21t
X3NodWZmbGVfZXBpMzIoIGFjYzEsIF9NTV9TSFVGRkxFKCAwLCAwLCAzLCAyICkgKTsKLSAgICBh
Y2MxID0gX21tX2FkZF9lcGk2NCggYWNjMSwgYWNjMiApOwotCi0gICAgX21tX3N0b3JlbF9lcGk2
NCggKF9fbTEyOGkgKikmc3VtLCBhY2MxICk7Ci0KLSAgICBmb3IoIDsgaSA8IGxlbjsgaSsrICkg
ewotICAgICAgICBzdW0gPSBzaWxrX1NNTEFCQiggc3VtLCBpblZlYzFbIGkgXSwgaW5WZWMyWyBp
IF0gKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VtOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVk
L3g4Ni92ZWN0b3Jfb3BzX0ZJWF9zc2U0XzEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC94ODYvdmVjdG9yX29wc19G
SVhfc3NlNF8xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlOTA1NjRkMGVkN2U2YTM1MDgyN2QzOTZhMjIzMDA4
ZTRmOGI3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC94ODYvdmVjdG9yX29wc19GSVhf
c3NlNF8xLmMKQEAgLTAsMCArMSw4OCBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE0LCBDaXNjbyBT
eXN0ZW1zLCBJTkMKKyAgIFdyaXR0ZW4gYnkgWGlhbmdNaW5nWmh1IFdlaVpob3UgTWluUGVuZyBZ
YW5XYW5nCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUgbWV0OgorCisgICAt
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICAgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICAgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmln
LmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2luY2x1ZGUgPGVtbWludHJp
bi5oPgorI2luY2x1ZGUgPHNtbWludHJpbi5oPgorI2luY2x1ZGUgIm1haW4uaCIKKworI2luY2x1
ZGUgIlNpZ1Byb2NfRklYLmgiCisjaW5jbHVkZSAicGl0Y2guaCIKKworb3B1c19pbnQ2NCBzaWxr
X2lubmVyX3Byb2QxNl9hbGlnbmVkXzY0X3NzZTRfMSgKKyAgICBjb25zdCBvcHVzX2ludDE2ICAg
ICAgICAgICAgKmluVmVjMSwgICAgICAgICAgICAvKiAgICBJIGlucHV0IHZlY3RvciAxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1
c19pbnQxNiAgICAgICAgICAgICppblZlYzIsICAgICAgICAgICAgLyogICAgSSBpbnB1dCB2ZWN0
b3IgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBsZW4gICAgICAgICAgICAgICAgIC8qICAgIEkg
dmVjdG9yIGxlbmd0aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KKykKK3sKKyAgICBvcHVzX2ludCAgaSwgZGF0YVNpemU4OworICAgIG9wdXNfaW50NjQg
c3VtOworCisgICAgX19tMTI4aSB4bW1fdGVtcGE7CisgICAgX19tMTI4aSBpblZlYzFfNzY1NDMy
MTAsIGFjYzE7CisgICAgX19tMTI4aSBpblZlYzJfNzY1NDMyMTAsIGFjYzI7CisKKyAgICBzdW0g
PSAwOworICAgIGRhdGFTaXplOCA9IGxlbiAmIH43OworCisgICAgYWNjMSA9IF9tbV9zZXR6ZXJv
X3NpMTI4KCk7CisgICAgYWNjMiA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7CisKKyAgICBmb3IoIGkg
PSAwOyBpIDwgZGF0YVNpemU4OyBpICs9IDggKSB7CisgICAgICAgIGluVmVjMV83NjU0MzIxMCA9
IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJmluVmVjMVtpICsgMF0gKSApOworICAgICAg
ICBpblZlYzJfNzY1NDMyMTAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZpblZlYzJb
aSArIDBdICkgKTsKKworICAgICAgICAvKiBvbmx5IHdoZW4gYWxsIDQgb3BlcmFuZHMgYXJlIC0z
Mjc2OCAoMHg4MDAwKSwgdGhpcyByZXN1bHRzIGluIHdyYXAgYXJvdW5kICovCisgICAgICAgIGlu
VmVjMV83NjU0MzIxMCA9IF9tbV9tYWRkX2VwaTE2KCBpblZlYzFfNzY1NDMyMTAsIGluVmVjMl83
NjU0MzIxMCApOworCisgICAgICAgIHhtbV90ZW1wYSAgICAgICA9IF9tbV9jdnRlcGkzMl9lcGk2
NCggaW5WZWMxXzc2NTQzMjEwICk7CisgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDggYnl0
ZXMgKi8KKyAgICAgICAgaW5WZWMxXzc2NTQzMjEwID0gX21tX3NodWZmbGVfZXBpMzIoIGluVmVj
MV83NjU0MzIxMCwgX01NX1NIVUZGTEUoIDAsIDAsIDMsIDIgKSApOworICAgICAgICBpblZlYzFf
NzY1NDMyMTAgPSBfbW1fY3Z0ZXBpMzJfZXBpNjQoIGluVmVjMV83NjU0MzIxMCApOworCisgICAg
ICAgIGFjYzEgPSBfbW1fYWRkX2VwaTY0KCBhY2MxLCB4bW1fdGVtcGEgKTsKKyAgICAgICAgYWNj
MiA9IF9tbV9hZGRfZXBpNjQoIGFjYzIsIGluVmVjMV83NjU0MzIxMCApOworICAgIH0KKworICAg
IGFjYzEgPSBfbW1fYWRkX2VwaTY0KCBhY2MxLCBhY2MyICk7CisKKyAgICAvKiBlcXVhbCBzaGlm
dCByaWdodCA4IGJ5dGVzICovCisgICAgYWNjMiA9IF9tbV9zaHVmZmxlX2VwaTMyKCBhY2MxLCBf
TU1fU0hVRkZMRSggMCwgMCwgMywgMiApICk7CisgICAgYWNjMSA9IF9tbV9hZGRfZXBpNjQoIGFj
YzEsIGFjYzIgKTsKKworICAgIF9tbV9zdG9yZWxfZXBpNjQoIChfX20xMjhpICopJnN1bSwgYWNj
MSApOworCisgICAgZm9yKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgc3VtID0gc2lsa19T
TUxBQkIoIHN1bSwgaW5WZWMxWyBpIF0sIGluVmVjMlsgaSBdICk7CisgICAgfQorCisgICAgcmV0
dXJuIHN1bTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9MUENfYW5hbHlzaXNfZmlsdGVyX0ZM
UC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2Zsb2F0L0xQQ19hbmFseXNpc19maWx0ZXJfRkxQLmMKaW5kZXggY2FlODlhMGEx
ODJjYWQ0NDk0NjQyMWNjODhmODk1MjQ2NTNiZmQ1Yy4uMGUxYTFmZWQwZmZlODdmYzFmYzZjZTQ4
OThlZDM2MGRhZmI3YmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L0xQQ19hbmFseXNpc19maWx0
ZXJfRkxQLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L0xQQ19hbmFseXNpc19maWx0ZXJfRkxQLmMKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIHNpbGtfTFBDX2FuYWx5c2lzX2ZpbHRlcl9GTFAoCiAgICAgY29u
c3Qgb3B1c19pbnQgICAgICAgICAgICAgICAgICBPcmRlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJICAgIExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KICkKIHsKLSAgICBzaWxrX2Fzc2VydCggT3JkZXIgPD0gbGVuZ3RoICk7CisgICAgY2Vs
dF9hc3NlcnQoIE9yZGVyIDw9IGxlbmd0aCApOwogCiAgICAgc3dpdGNoKCBPcmRlciApIHsKICAg
ICAgICAgY2FzZSA2OgpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgc2lsa19MUENfYW5hbHlzaXNf
ZmlsdGVyX0ZMUCgKICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgICAgICBjZWx0X2Fzc2VydCggMCApOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9hcHBseV9zaW5lX3dp
bmRvd19GTFAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9mbG9hdC9hcHBseV9zaW5lX3dpbmRvd19GTFAuYwppbmRleCA2YWFl
NTdjMGFiOTljZDE0M2M3ZDc4YmRjOWQzYjQzM2Y2NjFiYmZjLi5lNDllNzE3OTkxNjVhZWM0MDFi
MDIxYjg2YmI1Yjg3M2E0OWZlZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvYXBwbHlfc2luZV93
aW5kb3dfRkxQLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2FwcGx5X3NpbmVfd2luZG93X0ZMUC5jCkBAIC00
NSwxMCArNDUsMTAgQEAgdm9pZCBzaWxrX2FwcGx5X3NpbmVfd2luZG93X0ZMUCgKICAgICBvcHVz
X2ludCAgIGs7CiAgICAgc2lsa19mbG9hdCBmcmVxLCBjLCBTMCwgUzE7CiAKLSAgICBzaWxrX2Fz
c2VydCggd2luX3R5cGUgPT0gMSB8fCB3aW5fdHlwZSA9PSAyICk7CisgICAgY2VsdF9hc3NlcnQo
IHdpbl90eXBlID09IDEgfHwgd2luX3R5cGUgPT0gMiApOwogCiAgICAgLyogTGVuZ3RoIG11c3Qg
YmUgbXVsdGlwbGUgb2YgNCAqLwotICAgIHNpbGtfYXNzZXJ0KCAoIGxlbmd0aCAmIDMgKSA9PSAw
ICk7CisgICAgY2VsdF9hc3NlcnQoICggbGVuZ3RoICYgMyApID09IDAgKTsKIAogICAgIGZyZXEg
PSBQSSAvICggbGVuZ3RoICsgMSApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvYnVyZ19tb2Rp
ZmllZF9GTFAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9mbG9hdC9idXJnX21vZGlmaWVkX0ZMUC5jCmluZGV4IGVhNWRjMjVh
OTNhN2UyYmNkZWQzMTI5YmViNzNmYWViMTI3OGIwMWEuLjc1NmI3NmEzNWJiMjhjMDg1NjUyZjRl
ZWI5NDg4NzFmNWIzZGQwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9idXJnX21vZGlmaWVkX0ZM
UC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9mbG9hdC9idXJnX21vZGlmaWVkX0ZMUC5jCkBAIC01Miw3ICs1Miw3IEBA
IHNpbGtfZmxvYXQgc2lsa19idXJnX21vZGlmaWVkX0ZMUCggICAgICAgICAgLyogTyAgICByZXR1
cm5zIHJlc2lkdWFsIGVuZXJneQogICAgIGRvdWJsZSAgICAgICAgICAgQ0FmWyBTSUxLX01BWF9P
UkRFUl9MUEMgKyAxIF0sIENBYlsgU0lMS19NQVhfT1JERVJfTFBDICsgMSBdOwogICAgIGRvdWJs
ZSAgICAgICAgICAgQWZbIFNJTEtfTUFYX09SREVSX0xQQyBdOwogCi0gICAgc2lsa19hc3NlcnQo
IHN1YmZyX2xlbmd0aCAqIG5iX3N1YmZyIDw9IE1BWF9GUkFNRV9TSVpFICk7CisgICAgY2VsdF9h
c3NlcnQoIHN1YmZyX2xlbmd0aCAqIG5iX3N1YmZyIDw9IE1BWF9GUkFNRV9TSVpFICk7CiAKICAg
ICAvKiBDb21wdXRlIGF1dG9jb3JyZWxhdGlvbnMsIGFkZGVkIG92ZXIgc3ViZnJhbWVzICovCiAg
ICAgQzAgPSBzaWxrX2VuZXJneV9GTFAoIHgsIG5iX3N1YmZyICogc3ViZnJfbGVuZ3RoICk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvZmxvYXQvZW5jb2RlX2ZyYW1lX0ZMUC5jIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2VuY29k
ZV9mcmFtZV9GTFAuYwppbmRleCA0OTk1NmEyZDc1MmM2OTM4YjMwMzMxNzkyYmI1MmQ3MjRhODll
Y2UyLi5iMDI5YzNmNWNhODMwY2I5ODNhOWUzZjA0NzRmYzAwYzY4NGQxMzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvZmxvYXQvZW5jb2RlX2ZyYW1lX0ZMUC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9lbmNvZGVfZnJh
bWVfRkxQLmMKQEAgLTI0OCw3ICsyNDgsNyBAQCBvcHVzX2ludCBzaWxrX2VuY29kZV9mcmFtZV9G
TFAoCiAgICAgICAgICAgICAgICAgaWYoIGZvdW5kX2xvd2VyICYmICggZ2FpbnNJRCA9PSBnYWlu
c0lEX2xvd2VyIHx8IG5CaXRzID4gbWF4Qml0cyApICkgewogICAgICAgICAgICAgICAgICAgICAv
KiBSZXN0b3JlIG91dHB1dCBzdGF0ZSBmcm9tIGVhcmxpZXIgaXRlcmF0aW9uIHRoYXQgZGlkIG1l
ZXQgdGhlIGJpdHJhdGUgYnVkZ2V0ICovCiAgICAgICAgICAgICAgICAgICAgIHNpbGtfbWVtY3B5
KCBwc1JhbmdlRW5jLCAmc1JhbmdlRW5jX2NvcHkyLCBzaXplb2YoIGVjX2VuYyApICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBzUmFuZ2VFbmNfY29weTIub2ZmcyA8PSAxMjc1
ICk7CisgICAgICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBzUmFuZ2VFbmNfY29weTIub2Zm
cyA8PSAxMjc1ICk7CiAgICAgICAgICAgICAgICAgICAgIHNpbGtfbWVtY3B5KCBwc1JhbmdlRW5j
LT5idWYsIGVjX2J1Zl9jb3B5LCBzUmFuZ2VFbmNfY29weTIub2ZmcyApOwogICAgICAgICAgICAg
ICAgICAgICBzaWxrX21lbWNweSggJnBzRW5jLT5zQ21uLnNOU1EsICZzTlNRX2NvcHkyLCBzaXpl
b2YoIHNpbGtfbnNxX3N0YXRlICkgKTsKICAgICAgICAgICAgICAgICAgICAgcHNFbmMtPnNTaGFw
ZS5MYXN0R2FpbkluZGV4ID0gTGFzdEdhaW5JbmRleF9jb3B5MjsKQEAgLTI3OCw3ICsyNzgsNyBA
QCBvcHVzX2ludCBzaWxrX2VuY29kZV9mcmFtZV9GTFAoCiAgICAgICAgICAgICAgICAgICAgIGdh
aW5zSURfbG93ZXIgPSBnYWluc0lEOwogICAgICAgICAgICAgICAgICAgICAvKiBDb3B5IHBhcnQg
b2YgdGhlIG91dHB1dCBzdGF0ZSAqLwogICAgICAgICAgICAgICAgICAgICBzaWxrX21lbWNweSgg
JnNSYW5nZUVuY19jb3B5MiwgcHNSYW5nZUVuYywgc2l6ZW9mKCBlY19lbmMgKSApOwotICAgICAg
ICAgICAgICAgICAgICBzaWxrX2Fzc2VydCggcHNSYW5nZUVuYy0+b2ZmcyA8PSAxMjc1ICk7Cisg
ICAgICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBwc1JhbmdlRW5jLT5vZmZzIDw9IDEyNzUg
KTsKICAgICAgICAgICAgICAgICAgICAgc2lsa19tZW1jcHkoIGVjX2J1Zl9jb3B5LCBwc1Jhbmdl
RW5jLT5idWYsIHBzUmFuZ2VFbmMtPm9mZnMgKTsKICAgICAgICAgICAgICAgICAgICAgc2lsa19t
ZW1jcHkoICZzTlNRX2NvcHkyLCAmcHNFbmMtPnNDbW4uc05TUSwgc2l6ZW9mKCBzaWxrX25zcV9z
dGF0ZSApICk7CiAgICAgICAgICAgICAgICAgICAgIExhc3RHYWluSW5kZXhfY29weTIgPSBwc0Vu
Yy0+c1NoYXBlLkxhc3RHYWluSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvZmluZF9MUENf
RkxQLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvZmxvYXQvZmluZF9MUENfRkxQLmMKaW5kZXggNGQ2Mzk2NGZlYmI4YjI5MzJl
ZjljZjk4ZmZlOTZiMzk2YTM3YjgyNi4uZmEzZmZlN2Y4YjQ3NDgxZjhkMGE1M2FiZGI4ZTJhNzQz
Yjg4MDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2ZpbmRfTFBDX0ZMUC5jCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9m
bG9hdC9maW5kX0xQQ19GTFAuYwpAQCAtOTksNiArOTksNiBAQCB2b2lkIHNpbGtfZmluZF9MUENf
RkxQKAogICAgICAgICBzaWxrX0EyTkxTRl9GTFAoIE5MU0ZfUTE1LCBhLCBwc0VuY0MtPnByZWRp
Y3RMUENPcmRlciApOwogICAgIH0KIAotICAgIHNpbGtfYXNzZXJ0KCBwc0VuY0MtPmluZGljZXMu
TkxTRkludGVycENvZWZfUTIgPT0gNCB8fAorICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPmluZGlj
ZXMuTkxTRkludGVycENvZWZfUTIgPT0gNCB8fAogICAgICAgICAoIHBzRW5jQy0+dXNlSW50ZXJw
b2xhdGVkTkxTRnMgJiYgIXBzRW5jQy0+Zmlyc3RfZnJhbWVfYWZ0ZXJfcmVzZXQgJiYgcHNFbmND
LT5uYl9zdWJmciA9PSBNQVhfTkJfU1VCRlIgKSApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0
L2ZpbmRfcGl0Y2hfbGFnc19GTFAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9maW5kX3BpdGNoX2xhZ3NfRkxQLmMK
aW5kZXggZjNiMjJkMjVjZTY2ZmQxZWQ2MDc4YmNhYTZjZDk1ODlmZmU2MDA2YS4uZGVkYmNkMjgz
Njg1ZGFjMGYzYTM5MGY4YzdiMWZmYzA2ZTUzM2MwNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2Zp
bmRfcGl0Y2hfbGFnc19GTFAuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvZmluZF9waXRjaF9sYWdzX0ZMUC5j
CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgc2lsa19maW5kX3BpdGNoX2xhZ3NfRkxQKAogICAgIGJ1
Zl9sZW4gPSBwc0VuYy0+c0Ntbi5sYV9waXRjaCArIHBzRW5jLT5zQ21uLmZyYW1lX2xlbmd0aCAr
IHBzRW5jLT5zQ21uLmx0cF9tZW1fbGVuZ3RoOwogCiAgICAgLyogU2FmZXR5IGNoZWNrICovCi0g
ICAgc2lsa19hc3NlcnQoIGJ1Zl9sZW4gPj0gcHNFbmMtPnNDbW4ucGl0Y2hfTFBDX3dpbl9sZW5n
dGggKTsKKyAgICBjZWx0X2Fzc2VydCggYnVmX2xlbiA+PSBwc0VuYy0+c0Ntbi5waXRjaF9MUENf
d2luX2xlbmd0aCApOwogCiAgICAgeF9idWYgPSB4IC0gcHNFbmMtPnNDbW4ubHRwX21lbV9sZW5n
dGg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9maW5kX3ByZWRfY29lZnNfRkxQLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
ZmxvYXQvZmluZF9wcmVkX2NvZWZzX0ZMUC5jCmluZGV4IGNiMmU3NjNiMWRiMDJiYjNmZDBjMTY2
ZjZhOTAwZDU3ZmMyM2I4MjQuLmRjZjdjNTIwMmQwYzYwNzc0MWYxNGJhOTFlODY4MDkzZjJiMmJm
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9maW5kX3ByZWRfY29lZnNfRkxQLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2Zsb2F0L2ZpbmRfcHJlZF9jb2Vmc19GTFAuYwpAQCAtNTksNyArNTksNyBAQCB2b2lkIHNpbGtf
ZmluZF9wcmVkX2NvZWZzX0ZMUCgKICAgICAgICAgLyoqKioqKioqKiovCiAgICAgICAgIC8qIFZP
SUNFRCAqLwogICAgICAgICAvKioqKioqKioqKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIHBzRW5j
LT5zQ21uLmx0cF9tZW1fbGVuZ3RoIC0gcHNFbmMtPnNDbW4ucHJlZGljdExQQ09yZGVyID49IHBz
RW5jQ3RybC0+cGl0Y2hMWyAwIF0gKyBMVFBfT1JERVIgLyAyICk7CisgICAgICAgIGNlbHRfYXNz
ZXJ0KCBwc0VuYy0+c0Ntbi5sdHBfbWVtX2xlbmd0aCAtIHBzRW5jLT5zQ21uLnByZWRpY3RMUENP
cmRlciA+PSBwc0VuY0N0cmwtPnBpdGNoTFsgMCBdICsgTFRQX09SREVSIC8gMiApOwogCiAgICAg
ICAgIC8qIExUUCBhbmFseXNpcyAqLwogICAgICAgICBzaWxrX2ZpbmRfTFRQX0ZMUCggWFhMVFAs
IHhYTFRQLCByZXNfcGl0Y2gsIHBzRW5jQ3RybC0+cGl0Y2hMLCBwc0VuYy0+c0Ntbi5zdWJmcl9s
ZW5ndGgsIHBzRW5jLT5zQ21uLm5iX3N1YmZyICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvcGl0
Y2hfYW5hbHlzaXNfY29yZV9GTFAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9waXRjaF9hbmFseXNpc19jb3JlX0ZM
UC5jCmluZGV4IGIzNzE2OTM3OGIxZjUyNTY2MGZjY2VmNjVmOGEyZmI0MzFlY2M4MDkuLmYzNTFi
YzM3MTg2Y2VkNThhMTlmZTNmMWJkNDMyYThkZjM0NDUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9h
dC9waXRjaF9hbmFseXNpc19jb3JlX0ZMUC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9waXRjaF9hbmFseXNp
c19jb3JlX0ZMUC5jCkBAIC0xMDksMTEgKzEwOSwxMSBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2Fu
YWx5c2lzX2NvcmVfRkxQKCAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMCB2b2ljZWQs
CiAgICAgY29uc3Qgb3B1c19pbnQ4ICpMYWdfQ0JfcHRyOwogCiAgICAgLyogQ2hlY2sgZm9yIHZh
bGlkIHNhbXBsaW5nIGZyZXF1ZW5jeSAqLwotICAgIHNpbGtfYXNzZXJ0KCBGc19rSHogPT0gOCB8
fCBGc19rSHogPT0gMTIgfHwgRnNfa0h6ID09IDE2ICk7CisgICAgY2VsdF9hc3NlcnQoIEZzX2tI
eiA9PSA4IHx8IEZzX2tIeiA9PSAxMiB8fCBGc19rSHogPT0gMTYgKTsKIAogICAgIC8qIENoZWNr
IGZvciB2YWxpZCBjb21wbGV4aXR5IHNldHRpbmcgKi8KLSAgICBzaWxrX2Fzc2VydCggY29tcGxl
eGl0eSA+PSBTSUxLX1BFX01JTl9DT01QTEVYICk7Ci0gICAgc2lsa19hc3NlcnQoIGNvbXBsZXhp
dHkgPD0gU0lMS19QRV9NQVhfQ09NUExFWCApOworICAgIGNlbHRfYXNzZXJ0KCBjb21wbGV4aXR5
ID49IFNJTEtfUEVfTUlOX0NPTVBMRVggKTsKKyAgICBjZWx0X2Fzc2VydCggY29tcGxleGl0eSA8
PSBTSUxLX1BFX01BWF9DT01QTEVYICk7CiAKICAgICBzaWxrX2Fzc2VydCggc2VhcmNoX3RocmVz
MSA+PSAwLjBmICYmIHNlYXJjaF90aHJlczEgPD0gMS4wZiApOwogICAgIHNpbGtfYXNzZXJ0KCBz
ZWFyY2hfdGhyZXMyID49IDAuMGYgJiYgc2VhcmNoX3RocmVzMiA8PSAxLjBmICk7CkBAIC0xNDgs
NyArMTQ4LDcgQEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNpc19jb3JlX0ZMUCggICAgICAv
KiBPICAgIFZvaWNpbmcgZXN0aW1hdGU6IDAgdm9pY2VkLAogICAgICAgICBzaWxrX3Jlc2FtcGxl
cl9kb3duMl8zKCBmaWx0X3N0YXRlLCBmcmFtZV84X0ZJWCwgZnJhbWVfMTJfRklYLCBmcmFtZV9s
ZW5ndGggKTsKICAgICAgICAgc2lsa19zaG9ydDJmbG9hdF9hcnJheSggZnJhbWVfOGtIeiwgZnJh
bWVfOF9GSVgsIGZyYW1lX2xlbmd0aF84a0h6ICk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2ls
a19hc3NlcnQoIEZzX2tIeiA9PSA4ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBGc19rSHogPT0g
OCApOwogICAgICAgICBzaWxrX2Zsb2F0MnNob3J0X2FycmF5KCBmcmFtZV84X0ZJWCwgZnJhbWUs
IGZyYW1lX2xlbmd0aF84a0h6ICk7CiAgICAgfQogCkBAIC0xNjksMTQgKzE2OSwxNCBAQCBvcHVz
X2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmVfRkxQKCAgICAgIC8qIE8gICAgVm9pY2luZyBl
c3RpbWF0ZTogMCB2b2ljZWQsCiAgICAgdGFyZ2V0X3B0ciA9ICZmcmFtZV80a0h6WyBzaWxrX0xT
SElGVCggc2ZfbGVuZ3RoXzRrSHosIDIgKSBdOwogICAgIGZvciggayA9IDA7IGsgPCBuYl9zdWJm
ciA+PiAxOyBrKysgKSB7CiAgICAgICAgIC8qIENoZWNrIHRoYXQgd2UgYXJlIHdpdGhpbiByYW5n
ZSBvZiB0aGUgYXJyYXkgKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIHRhcmdldF9wdHIgPj0gZnJh
bWVfNGtIeiApOwotICAgICAgICBzaWxrX2Fzc2VydCggdGFyZ2V0X3B0ciArIHNmX2xlbmd0aF84
a0h6IDw9IGZyYW1lXzRrSHogKyBmcmFtZV9sZW5ndGhfNGtIeiApOworICAgICAgICBjZWx0X2Fz
c2VydCggdGFyZ2V0X3B0ciA+PSBmcmFtZV80a0h6ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCB0
YXJnZXRfcHRyICsgc2ZfbGVuZ3RoXzhrSHogPD0gZnJhbWVfNGtIeiArIGZyYW1lX2xlbmd0aF80
a0h6ICk7CiAKICAgICAgICAgYmFzaXNfcHRyID0gdGFyZ2V0X3B0ciAtIG1pbl9sYWdfNGtIejsK
IAogICAgICAgICAvKiBDaGVjayB0aGF0IHdlIGFyZSB3aXRoaW4gcmFuZ2Ugb2YgdGhlIGFycmF5
ICovCi0gICAgICAgIHNpbGtfYXNzZXJ0KCBiYXNpc19wdHIgPj0gZnJhbWVfNGtIeiApOwotICAg
ICAgICBzaWxrX2Fzc2VydCggYmFzaXNfcHRyICsgc2ZfbGVuZ3RoXzhrSHogPD0gZnJhbWVfNGtI
eiArIGZyYW1lX2xlbmd0aF80a0h6ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBiYXNpc19wdHIg
Pj0gZnJhbWVfNGtIeiApOworICAgICAgICBjZWx0X2Fzc2VydCggYmFzaXNfcHRyICsgc2ZfbGVu
Z3RoXzhrSHogPD0gZnJhbWVfNGtIeiArIGZyYW1lX2xlbmd0aF80a0h6ICk7CiAKICAgICAgICAg
Y2VsdF9waXRjaF94Y29yciggdGFyZ2V0X3B0ciwgdGFyZ2V0X3B0ci1tYXhfbGFnXzRrSHosIHhj
b3JyLCBzZl9sZW5ndGhfOGtIeiwgbWF4X2xhZ180a0h6IC0gbWluX2xhZ180a0h6ICsgMSwgYXJj
aCApOwogCkBAIC0yMTUsNyArMjE1LDcgQEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNpc19j
b3JlX0ZMUCggICAgICAvKiBPICAgIFZvaWNpbmcgZXN0aW1hdGU6IDAgdm9pY2VkLAogCiAgICAg
LyogU29ydCAqLwogICAgIGxlbmd0aF9kX3NyY2ggPSA0ICsgMiAqIGNvbXBsZXhpdHk7Ci0gICAg
c2lsa19hc3NlcnQoIDMgKiBsZW5ndGhfZF9zcmNoIDw9IFBFX0RfU1JDSF9MRU5HVEggKTsKKyAg
ICBjZWx0X2Fzc2VydCggMyAqIGxlbmd0aF9kX3NyY2ggPD0gUEVfRF9TUkNIX0xFTkdUSCApOwog
ICAgIHNpbGtfaW5zZXJ0aW9uX3NvcnRfZGVjcmVhc2luZ19GTFAoICZDWyAwIF1bIG1pbl9sYWdf
NGtIeiBdLCBkX3NyY2gsIG1heF9sYWdfNGtIeiAtIG1pbl9sYWdfNGtIeiArIDEsIGxlbmd0aF9k
X3NyY2ggKTsKIAogICAgIC8qIEVzY2FwZSBpZiBjb3JyZWxhdGlvbiBpcyB2ZXJ5IGxvdyBhbHJl
YWR5IGhlcmUgKi8KQEAgLTIzOCw3ICsyMzgsNyBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5
c2lzX2NvcmVfRkxQKCAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMCB2b2ljZWQsCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBzaWxrX2Fzc2VydCggbGVu
Z3RoX2Rfc3JjaCA+IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggbGVuZ3RoX2Rfc3JjaCA+IDAgKTsK
IAogICAgIGZvciggaSA9IG1pbl9sYWdfOGtIeiAtIDU7IGkgPCBtYXhfbGFnXzhrSHogKyA1OyBp
KysgKSB7CiAgICAgICAgIGRfY29tcFsgaSBdID0gMDsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBvcHVz
X2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmVfRkxQKCAgICAgIC8qIE8gICAgVm9pY2luZyBl
c3RpbWF0ZTogMCB2b2ljZWQsCiAgICAgICAgICpsYWdJbmRleCA9IChvcHVzX2ludDE2KSggbGFn
IC0gbWluX2xhZ184a0h6ICk7CiAgICAgICAgICpjb250b3VySW5kZXggPSAob3B1c19pbnQ4KUNC
aW1heDsKICAgICB9Ci0gICAgc2lsa19hc3NlcnQoICpsYWdJbmRleCA+PSAwICk7CisgICAgY2Vs
dF9hc3NlcnQoICpsYWdJbmRleCA+PSAwICk7CiAgICAgLyogcmV0dXJuIGFzIHZvaWNlZCAqLwog
ICAgIHJldHVybiAwOwogfQpAQCAtNTA2LDggKzUwNiw4IEBAIHN0YXRpYyB2b2lkIHNpbGtfUF9B
bmFfY2FsY19jb3JyX3N0MygKICAgICBvcHVzX3ZhbDMyIHhjb3JyWyBTQ1JBVENIX1NJWkUgXTsK
ICAgICBjb25zdCBvcHVzX2ludDggKkxhZ19yYW5nZV9wdHIsICpMYWdfQ0JfcHRyOwogCi0gICAg
c2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPj0gU0lMS19QRV9NSU5fQ09NUExFWCApOwotICAgIHNp
bGtfYXNzZXJ0KCBjb21wbGV4aXR5IDw9IFNJTEtfUEVfTUFYX0NPTVBMRVggKTsKKyAgICBjZWx0
X2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BFX01JTl9DT01QTEVYICk7CisgICAgY2VsdF9h
c3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9NQVhfQ09NUExFWCApOwogCiAgICAgaWYoIG5i
X3N1YmZyID09IFBFX01BWF9OQl9TVUJGUiApIHsKICAgICAgICAgTGFnX3JhbmdlX3B0ciA9ICZz
aWxrX0xhZ19yYW5nZV9zdGFnZTNbIGNvbXBsZXhpdHkgXVsgMCBdWyAwIF07CkBAIC01MTUsNyAr
NTE1LDcgQEAgc3RhdGljIHZvaWQgc2lsa19QX0FuYV9jYWxjX2NvcnJfc3QzKAogICAgICAgICBu
Yl9jYmtfc2VhcmNoID0gc2lsa19uYl9jYmtfc2VhcmNoc19zdGFnZTNbIGNvbXBsZXhpdHkgXTsK
ICAgICAgICAgY2JrX3NpemUgICAgICA9IFBFX05CX0NCS1NfU1RBR0UzX01BWDsKICAgICB9IGVs
c2UgewotICAgICAgICBzaWxrX2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSID4+
IDEpOworICAgICAgICBjZWx0X2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSID4+
IDEpOwogICAgICAgICBMYWdfcmFuZ2VfcHRyID0gJnNpbGtfTGFnX3JhbmdlX3N0YWdlM18xMF9t
c1sgMCBdWyAwIF07CiAgICAgICAgIExhZ19DQl9wdHIgICAgPSAmc2lsa19DQl9sYWdzX3N0YWdl
M18xMF9tc1sgMCBdWyAwIF07CiAgICAgICAgIG5iX2Nia19zZWFyY2ggPSBQRV9OQl9DQktTX1NU
QUdFM18xME1TOwpAQCAtNTcyLDggKzU3Miw4IEBAIHN0YXRpYyB2b2lkIHNpbGtfUF9BbmFfY2Fs
Y19lbmVyZ3lfc3QzKAogICAgIHNpbGtfZmxvYXQgc2NyYXRjaF9tZW1bIFNDUkFUQ0hfU0laRSBd
OwogICAgIGNvbnN0IG9wdXNfaW50OCAqTGFnX3JhbmdlX3B0ciwgKkxhZ19DQl9wdHI7CiAKLSAg
ICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BFX01JTl9DT01QTEVYICk7Ci0gICAg
c2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9NQVhfQ09NUExFWCApOworICAgIGNl
bHRfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtfUEVfTUlOX0NPTVBMRVggKTsKKyAgICBjZWx0
X2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BFX01BWF9DT01QTEVYICk7CiAKICAgICBpZigg
bmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSICkgewogICAgICAgICBMYWdfcmFuZ2VfcHRyID0g
JnNpbGtfTGFnX3JhbmdlX3N0YWdlM1sgY29tcGxleGl0eSBdWyAwIF1bIDAgXTsKQEAgLTU4MSw3
ICs1ODEsNyBAQCBzdGF0aWMgdm9pZCBzaWxrX1BfQW5hX2NhbGNfZW5lcmd5X3N0MygKICAgICAg
ICAgbmJfY2JrX3NlYXJjaCA9IHNpbGtfbmJfY2JrX3NlYXJjaHNfc3RhZ2UzWyBjb21wbGV4aXR5
IF07CiAgICAgICAgIGNia19zaXplICAgICAgPSBQRV9OQl9DQktTX1NUQUdFM19NQVg7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJG
UiA+PiAxKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJG
UiA+PiAxKTsKICAgICAgICAgTGFnX3JhbmdlX3B0ciA9ICZzaWxrX0xhZ19yYW5nZV9zdGFnZTNf
MTBfbXNbIDAgXVsgMCBdOwogICAgICAgICBMYWdfQ0JfcHRyICAgID0gJnNpbGtfQ0JfbGFnc19z
dGFnZTNfMTBfbXNbIDAgXVsgMCBdOwogICAgICAgICBuYl9jYmtfc2VhcmNoID0gUEVfTkJfQ0JL
U19TVEFHRTNfMTBNUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9yZXNpZHVhbF9lbmVyZ3lfRkxQ
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvZmxvYXQvcmVzaWR1YWxfZW5lcmd5X0ZMUC5jCmluZGV4IGIyZTAzYTg2YTQ5MDM4
ZjJlMWUyMDFmYzhkMTk5MWU3NzgyOWM4N2IuLjFiZDA3YjMzYTRkNGI2ODdlZjJlMTg2MGM4OWQ2
YjA5ZWUwMzIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9yZXNpZHVhbF9lbmVyZ3lfRkxQLmMK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2Zsb2F0L3Jlc2lkdWFsX2VuZXJneV9GTFAuYwpAQCAtNDcsNyArNDcsNyBAQCBz
aWxrX2Zsb2F0IHNpbGtfcmVzaWR1YWxfZW5lcmd5X2NvdmFyX0ZMUCggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBPCiAgICAgc2lsa19mbG9hdCB0bXAsIG5yZyA9IDAuMGYsIHJlZ3Vs
YXJpemF0aW9uOwogCiAgICAgLyogU2FmZXR5IGNoZWNrcyAqLwotICAgIHNpbGtfYXNzZXJ0KCBE
ID49IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggRCA+PSAwICk7CiAKICAgICByZWd1bGFyaXphdGlv
biA9IFJFR1VMQVJJWkFUSU9OX0ZBQ1RPUiAqICggd1hYWyAwIF0gKyB3WFhbIEQgKiBEIC0gMSBd
ICk7CiAgICAgZm9yKCBrID0gMDsgayA8IE1BWF9JVEVSQVRJT05TX1JFU0lEVUFMX05SRzsgaysr
ICkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3NjaHVyX0ZMUC5jIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3NjaHVy
X0ZMUC5jCmluZGV4IGMxZTBiYmI1NDExYzk5NTljYTNmN2Y2YzI5NTc3MTM2MTcwNDgxZGQuLjg1
MjZjNzQ4ZDM1ZDQ3Mzc5ZjQ4M2M0OTEyMDc3ODkyYzNmY2NiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9m
bG9hdC9zY2h1cl9GTFAuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvc2NodXJfRkxQLmMKQEAgLTQxLDcgKzQx
LDcgQEAgc2lsa19mbG9hdCBzaWxrX3NjaHVyX0ZMUCggICAgICAgICAgICAgICAgICAvKiBPICAg
IHJldHVybnMgcmVzaWR1YWwgZW5lcmd5CiAgICAgZG91YmxlIENbIFNJTEtfTUFYX09SREVSX0xQ
QyArIDEgXVsgMiBdOwogICAgIGRvdWJsZSBDdG1wMSwgQ3RtcDIsIHJjX3RtcDsKIAotICAgIHNp
bGtfYXNzZXJ0KCBvcmRlciA+PSAwICYmIG9yZGVyIDw9IFNJTEtfTUFYX09SREVSX0xQQyApOwor
ICAgIGNlbHRfYXNzZXJ0KCBvcmRlciA+PSAwICYmIG9yZGVyIDw9IFNJTEtfTUFYX09SREVSX0xQ
QyApOwogCiAgICAgLyogQ29weSBjb3JyZWxhdGlvbnMgKi8KICAgICBrID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9mbG9hdC9zb3J0X0ZMUC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3NvcnRfRkxQLmMKaW5kZXggZjA4
ZDc1OTJjNTZlZGJmZWE3ZGM0YTRiYjc3YWY4YjFjNTJmMjlhMi4uMGUxOGYzMTk1MDViZTI5NjQ2
NWQ3N2EyZTMyZjgyNWE3MmU2MGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3NvcnRfRkxQLmMK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2Zsb2F0L3NvcnRfRkxQLmMKQEAgLTQ3LDkgKzQ3LDkgQEAgdm9pZCBzaWxrX2lu
c2VydGlvbl9zb3J0X2RlY3JlYXNpbmdfRkxQKAogICAgIG9wdXNfaW50ICAgaSwgajsKIAogICAg
IC8qIFNhZmV0eSBjaGVja3MgKi8KLSAgICBzaWxrX2Fzc2VydCggSyA+ICAwICk7Ci0gICAgc2ls
a19hc3NlcnQoIEwgPiAgMCApOwotICAgIHNpbGtfYXNzZXJ0KCBMID49IEsgKTsKKyAgICBjZWx0
X2Fzc2VydCggSyA+ICAwICk7CisgICAgY2VsdF9hc3NlcnQoIEwgPiAgMCApOworICAgIGNlbHRf
YXNzZXJ0KCBMID49IEsgKTsKIAogICAgIC8qIFdyaXRlIHN0YXJ0IGluZGljZXMgaW4gaW5kZXgg
dmVjdG9yICovCiAgICAgZm9yKCBpID0gMDsgaSA8IEs7IGkrKyApIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9mbG9hdC93YXJwZWRfYXV0b2NvcnJlbGF0aW9uX0ZMUC5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3dhcnBlZF9h
dXRvY29ycmVsYXRpb25fRkxQLmMKaW5kZXggNTQyNDE0ZjQ4ZWM1MmIwMWIzOWJkYTdhYmQ5NjVk
MjNhZjRlYjdiOC4uMDkxODZlNzNkNDYzZDJhZWYxYTdhZTE3MGRiYTY5ZTE0NTcxMzMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zaWxrL2Zsb2F0L3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRkxQLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2Zsb2F0L3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRkxQLmMKQEAgLTQyLDExICs0MiwxMSBAQCB2
b2lkIHNpbGtfd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GTFAoCiB7CiAgICAgb3B1c19pbnQgICAg
biwgaTsKICAgICBkb3VibGUgICAgICB0bXAxLCB0bXAyOwotICAgIGRvdWJsZSAgICAgIHN0YXRl
WyBNQVhfU0hBUEVfTFBDX09SREVSICsgMSBdID0geyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww
LDAsMCwwLDAgfTsKLSAgICBkb3VibGUgICAgICBDWyAgICAgTUFYX1NIQVBFX0xQQ19PUkRFUiAr
IDEgXSA9IHsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwIH07CisgICAgZG91Ymxl
ICAgICAgc3RhdGVbIE1BWF9TSEFQRV9MUENfT1JERVIgKyAxIF0gPSB7IDAgfTsKKyAgICBkb3Vi
bGUgICAgICBDWyAgICAgTUFYX1NIQVBFX0xQQ19PUkRFUiArIDEgXSA9IHsgMCB9OwogCiAgICAg
LyogT3JkZXIgbXVzdCBiZSBldmVuICovCi0gICAgc2lsa19hc3NlcnQoICggb3JkZXIgJiAxICkg
PT0gMCApOworICAgIGNlbHRfYXNzZXJ0KCAoIG9yZGVyICYgMSApID09IDAgKTsKIAogICAgIC8q
IExvb3Agb3ZlciBzYW1wbGVzICovCiAgICAgZm9yKCBuID0gMDsgbiA8IGxlbmd0aDsgbisrICkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2ludGVycG9sYXRlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvaW50ZXJwb2xhdGUuYwppbmRl
eCAxYmQ4Y2E0ZDUzMjczNTEzZDNhMjQ1YmQwNzZhMDRkMDVkN2ZlYjM3Li44MzNjMjhlZjhlOGFm
NzJjYTRjZDIxZmQ2ZWE3YmQ2N2Q4OWYxMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvaW50ZXJwb2xhdGUu
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvaW50ZXJwb2xhdGUuYwpAQCAtNDIsOCArNDIsOCBAQCB2b2lkIHNpbGtfaW50
ZXJwb2xhdGUoCiB7CiAgICAgb3B1c19pbnQgaTsKIAotICAgIHNpbGtfYXNzZXJ0KCBpZmFjdF9R
MiA+PSAwICk7Ci0gICAgc2lsa19hc3NlcnQoIGlmYWN0X1EyIDw9IDQgKTsKKyAgICBjZWx0X2Fz
c2VydCggaWZhY3RfUTIgPj0gMCApOworICAgIGNlbHRfYXNzZXJ0KCBpZmFjdF9RMiA8PSA0ICk7
CiAKICAgICBmb3IoIGkgPSAwOyBpIDwgZDsgaSsrICkgewogICAgICAgICB4aVsgaSBdID0gKG9w
dXNfaW50MTYpc2lsa19BRERfUlNISUZUKCB4MFsgaSBdLCBzaWxrX1NNVUxCQiggeDFbIGkgXSAt
IHgwWyBpIF0sIGlmYWN0X1EyICksIDIgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9wcm9jZXNzX05MU0Zz
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvcHJvY2Vzc19OTFNGcy5jCmluZGV4IDJmMTBmOGRmNWIzZDcwZTU4MjNmZTJkYjU1
YjViMTE3NGIyNmFmYmIuLmQxMzA4MDk1NDEzZTI4ZTgxNGIzOTAzNTUxZTFmMzJkNzFhMDZkNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9wcm9jZXNzX05MU0ZzLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Byb2Nlc3NfTkxTRnMu
YwpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIHNpbGtfcHJvY2Vzc19OTFNGcygKIAogICAgIHNpbGtf
YXNzZXJ0KCBwc0VuY0MtPnNwZWVjaF9hY3Rpdml0eV9ROCA+PSAgIDAgKTsKICAgICBzaWxrX2Fz
c2VydCggcHNFbmNDLT5zcGVlY2hfYWN0aXZpdHlfUTggPD0gU0lMS19GSVhfQ09OU1QoIDEuMCwg
OCApICk7Ci0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+dXNlSW50ZXJwb2xhdGVkTkxTRnMgPT0g
MSB8fCBwc0VuY0MtPmluZGljZXMuTkxTRkludGVycENvZWZfUTIgPT0gKCAxIDw8IDIgKSApOwor
ICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPnVzZUludGVycG9sYXRlZE5MU0ZzID09IDEgfHwgcHNF
bmNDLT5pbmRpY2VzLk5MU0ZJbnRlcnBDb2VmX1EyID09ICggMSA8PCAyICkgKTsKIAogICAgIC8q
KioqKioqKioqKioqKioqKioqKioqKi8KICAgICAvKiBDYWxjdWxhdGUgbXUgdmFsdWVzICovCkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgc2lsa19wcm9jZXNzX05MU0ZzKAogICAgICAgICBOTFNGX211
X1EyMCA9IHNpbGtfQUREX1JTSElGVCggTkxTRl9tdV9RMjAsIE5MU0ZfbXVfUTIwLCAxICk7CiAg
ICAgfQogCi0gICAgc2lsa19hc3NlcnQoIE5MU0ZfbXVfUTIwID4gIDAgKTsKKyAgICBjZWx0X2Fz
c2VydCggTkxTRl9tdV9RMjAgPiAgMCApOwogICAgIHNpbGtfYXNzZXJ0KCBOTFNGX211X1EyMCA8
PSBTSUxLX0ZJWF9DT05TVCggMC4wMDUsIDIwICkgKTsKIAogICAgIC8qIENhbGN1bGF0ZSBOTFNG
IHdlaWdodHMgKi8KQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIHNpbGtfcHJvY2Vzc19OTFNGcygK
IAogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIENvcHkgTFBDIGNvZWZmaWNpZW50cyBmb3IgZmly
c3QgaGFsZiBmcm9tIHNlY29uZCBoYWxmICovCi0gICAgICAgIHNpbGtfYXNzZXJ0KCBwc0VuY0Mt
PnByZWRpY3RMUENPcmRlciA8PSBNQVhfTFBDX09SREVSICk7CisgICAgICAgIGNlbHRfYXNzZXJ0
KCBwc0VuY0MtPnByZWRpY3RMUENPcmRlciA8PSBNQVhfTFBDX09SREVSICk7CiAgICAgICAgIHNp
bGtfbWVtY3B5KCBQcmVkQ29lZl9RMTJbIDAgXSwgUHJlZENvZWZfUTEyWyAxIF0sIHBzRW5jQy0+
cHJlZGljdExQQ09yZGVyICogc2l6ZW9mKCBvcHVzX2ludDE2ICkgKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvcmVzYW1wbGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvcmVzYW1wbGVyLmMKaW5kZXggMzc0ZmJiMzcy
MjVhNjFlY2Y0ZjM5YmFlZTU1YTQ0MjVkYzA5NGYyYS4uMWYxMWU1MDg5MTZhMDM3NzhiZGRkZjVh
NTJmYzA5MDA0MDk0YTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Jlc2FtcGxlci5jCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9y
ZXNhbXBsZXIuYwpAQCAtOTEsMTQgKzkxLDE0IEBAIG9wdXNfaW50IHNpbGtfcmVzYW1wbGVyX2lu
aXQoCiAgICAgaWYoIGZvckVuYyApIHsKICAgICAgICAgaWYoICggRnNfSHpfaW4gICE9IDgwMDAg
JiYgRnNfSHpfaW4gICE9IDEyMDAwICYmIEZzX0h6X2luICAhPSAxNjAwMCAmJiBGc19Iel9pbiAg
IT0gMjQwMDAgJiYgRnNfSHpfaW4gICE9IDQ4MDAwICkgfHwKICAgICAgICAgICAgICggRnNfSHpf
b3V0ICE9IDgwMDAgJiYgRnNfSHpfb3V0ICE9IDEyMDAwICYmIEZzX0h6X291dCAhPSAxNjAwMCAp
ICkgewotICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAgIGNlbHRfYXNz
ZXJ0KCAwICk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgUy0+
aW5wdXREZWxheSA9IGRlbGF5X21hdHJpeF9lbmNbIHJhdGVJRCggRnNfSHpfaW4gKSBdWyByYXRl
SUQoIEZzX0h6X291dCApIF07CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYoICggRnNfSHpfaW4g
ICE9IDgwMDAgJiYgRnNfSHpfaW4gICE9IDEyMDAwICYmIEZzX0h6X2luICAhPSAxNjAwMCApIHx8
CiAgICAgICAgICAgICAoIEZzX0h6X291dCAhPSA4MDAwICYmIEZzX0h6X291dCAhPSAxMjAwMCAm
JiBGc19Iel9vdXQgIT0gMTYwMDAgJiYgRnNfSHpfb3V0ICE9IDI0MDAwICYmIEZzX0h6X291dCAh
PSA0ODAwMCApICkgewotICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAg
IGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAg
ICAgICAgUy0+aW5wdXREZWxheSA9IGRlbGF5X21hdHJpeF9kZWNbIHJhdGVJRCggRnNfSHpfaW4g
KSBdWyByYXRlSUQoIEZzX0h6X291dCApIF07CkBAIC0xNTEsNyArMTUxLDcgQEAgb3B1c19pbnQg
c2lsa19yZXNhbXBsZXJfaW5pdCgKICAgICAgICAgICAgIFMtPkNvZWZzID0gc2lsa19SZXNhbXBs
ZXJfMV82X0NPRUZTOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogTm9uZSBhdmFp
bGFibGUgKi8KLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgICAgICBjZWx0
X2Fzc2VydCggMCApOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKQEAgLTE4MSw5ICsxODEsOSBAQCBvcHVzX2ludCBzaWxrX3Jlc2FtcGxlcigKICAgICBv
cHVzX2ludCBuU2FtcGxlczsKIAogICAgIC8qIE5lZWQgYXQgbGVhc3QgMSBtcyBvZiBpbnB1dCBk
YXRhICovCi0gICAgc2lsa19hc3NlcnQoIGluTGVuID49IFMtPkZzX2luX2tIeiApOworICAgIGNl
bHRfYXNzZXJ0KCBpbkxlbiA+PSBTLT5Gc19pbl9rSHogKTsKICAgICAvKiBEZWxheSBjYW4ndCBl
eGNlZWQgdGhlIDEgbXMgb2YgYnVmZmVyaW5nICovCi0gICAgc2lsa19hc3NlcnQoIFMtPmlucHV0
RGVsYXkgPD0gUy0+RnNfaW5fa0h6ICk7CisgICAgY2VsdF9hc3NlcnQoIFMtPmlucHV0RGVsYXkg
PD0gUy0+RnNfaW5fa0h6ICk7CiAKICAgICBuU2FtcGxlcyA9IFMtPkZzX2luX2tIeiAtIFMtPmlu
cHV0RGVsYXk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9yZXNhbXBsZXJfZG93bjIuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9yZXNh
bXBsZXJfZG93bjIuYwppbmRleCBjZWMzNjM0NjQwOGJjOWEzZGU2NmU4N2I0ZTYyYmE1MGMyZTFl
MmY5Li45NzFkN2JmZDRhZTNhMTA3OWEwODA0MTUwNzE2Mjg2NmIwYzQ5ZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvcmVzYW1wbGVyX2Rvd24yLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Jlc2FtcGxlcl9kb3duMi5jCkBAIC00
Myw4ICs0Myw4IEBAIHZvaWQgc2lsa19yZXNhbXBsZXJfZG93bjIoCiAgICAgb3B1c19pbnQzMiBr
LCBsZW4yID0gc2lsa19SU0hJRlQzMiggaW5MZW4sIDEgKTsKICAgICBvcHVzX2ludDMyIGluMzIs
IG91dDMyLCBZLCBYOwogCi0gICAgc2lsa19hc3NlcnQoIHNpbGtfcmVzYW1wbGVyX2Rvd24yXzAg
PiAwICk7Ci0gICAgc2lsa19hc3NlcnQoIHNpbGtfcmVzYW1wbGVyX2Rvd24yXzEgPCAwICk7Cisg
ICAgY2VsdF9hc3NlcnQoIHNpbGtfcmVzYW1wbGVyX2Rvd24yXzAgPiAwICk7CisgICAgY2VsdF9h
c3NlcnQoIHNpbGtfcmVzYW1wbGVyX2Rvd24yXzEgPCAwICk7CiAKICAgICAvKiBJbnRlcm5hbCB2
YXJpYWJsZXMgYW5kIHN0YXRlIGFyZSBpbiBRMTAgZm9ybWF0ICovCiAgICAgZm9yKCBrID0gMDsg
ayA8IGxlbjI7IGsrKyApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9yZXNhbXBsZXJfcHJpdmF0ZV9kb3du
X0ZJUi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zaWxrL3Jlc2FtcGxlcl9wcml2YXRlX2Rvd25fRklSLmMKaW5kZXggNzgzZTQyYjM1
NjE3ZTQ5MjYyNDEzMmFkODExYTIwOWI4YTNkNGI1ZS4uM2U4NzM1YTM1YTJlZDMwYzNhZWI0MDI0
YjBlMzAwNWIzMGIyMzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Jlc2FtcGxlcl9wcml2YXRlX2Rvd25f
RklSLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL3Jlc2FtcGxlcl9wcml2YXRlX2Rvd25fRklSLmMKQEAgLTEzNiw3ICsx
MzYsNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgb3B1c19pbnQxNiAqc2lsa19yZXNhbXBsZXJfcHJp
dmF0ZV9kb3duX0ZJUl9JTlRFUlBPTCgKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAg
ICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgfQogICAgIHJldHVybiBvdXQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvc29ydC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3NvcnQuYwppbmRleCA3MTg3YzllZmIxMTM0M2UzYWVk
NmE5OWE0ZGVmZTdkMTcxM2VmZGI3Li40ZmJhMTZmODMxYmU1OTJmNDZhNTlmNDU4MTc3ZGUxMDE5
OTM4YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc29ydC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zb3J0LmMKQEAgLTQ4LDkg
KzQ4LDkgQEAgdm9pZCBzaWxrX2luc2VydGlvbl9zb3J0X2luY3JlYXNpbmcoCiAgICAgb3B1c19p
bnQgICAgICAgIGksIGo7CiAKICAgICAvKiBTYWZldHkgY2hlY2tzICovCi0gICAgc2lsa19hc3Nl
cnQoIEsgPiAgMCApOwotICAgIHNpbGtfYXNzZXJ0KCBMID4gIDAgKTsKLSAgICBzaWxrX2Fzc2Vy
dCggTCA+PSBLICk7CisgICAgY2VsdF9hc3NlcnQoIEsgPiAgMCApOworICAgIGNlbHRfYXNzZXJ0
KCBMID4gIDAgKTsKKyAgICBjZWx0X2Fzc2VydCggTCA+PSBLICk7CiAKICAgICAvKiBXcml0ZSBz
dGFydCBpbmRpY2VzIGluIGluZGV4IHZlY3RvciAqLwogICAgIGZvciggaSA9IDA7IGkgPCBLOyBp
KysgKSB7CkBAIC05Niw5ICs5Niw5IEBAIHZvaWQgc2lsa19pbnNlcnRpb25fc29ydF9kZWNyZWFz
aW5nX2ludDE2KAogICAgIG9wdXNfaW50IHZhbHVlOwogCiAgICAgLyogU2FmZXR5IGNoZWNrcyAq
LwotICAgIHNpbGtfYXNzZXJ0KCBLID4gIDAgKTsKLSAgICBzaWxrX2Fzc2VydCggTCA+ICAwICk7
Ci0gICAgc2lsa19hc3NlcnQoIEwgPj0gSyApOworICAgIGNlbHRfYXNzZXJ0KCBLID4gIDAgKTsK
KyAgICBjZWx0X2Fzc2VydCggTCA+ICAwICk7CisgICAgY2VsdF9hc3NlcnQoIEwgPj0gSyApOwog
CiAgICAgLyogV3JpdGUgc3RhcnQgaW5kaWNlcyBpbiBpbmRleCB2ZWN0b3IgKi8KICAgICBmb3Io
IGkgPSAwOyBpIDwgSzsgaSsrICkgewpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgc2lsa19pbnNl
cnRpb25fc29ydF9pbmNyZWFzaW5nX2FsbF92YWx1ZXNfaW50MTYoCiAgICAgb3B1c19pbnQgICAg
aSwgajsKIAogICAgIC8qIFNhZmV0eSBjaGVja3MgKi8KLSAgICBzaWxrX2Fzc2VydCggTCA+ICAw
ICk7CisgICAgY2VsdF9hc3NlcnQoIEwgPiAgMCApOwogCiAgICAgLyogU29ydCB2ZWN0b3IgZWxl
bWVudHMgYnkgdmFsdWUsIGluY3JlYXNpbmcgb3JkZXIgKi8KICAgICBmb3IoIGkgPSAxOyBpIDwg
TDsgaSsrICkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3N0ZXJlb19MUl90b19NUy5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3N0ZXJl
b19MUl90b19NUy5jCmluZGV4IGRkYTAyOThkZTI3YWEzMTk4ZTgzMzJmNGE3YzYxY2JjMTVlMDRh
NjAuLmM4MjI2NjYzYzgxYmEwMjkzMjQ1OTg2NWU5NjhiOTcxMDE4MDdjMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9zdGVyZW9fTFJfdG9fTVMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3RlcmVvX0xSX3RvX01TLmMKQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIHNpbGtfc3RlcmVvX0xSX3RvX01TKAogICAgIGlmKCB0b3RhbF9y
YXRlX2JwcyA8IDEgKSB7CiAgICAgICAgIHRvdGFsX3JhdGVfYnBzID0gMTsKICAgICB9Ci0gICAg
bWluX21pZF9yYXRlX2JwcyA9IHNpbGtfU01MQUJCKCAyMDAwLCBmc19rSHosIDkwMCApOworICAg
IG1pbl9taWRfcmF0ZV9icHMgPSBzaWxrX1NNTEFCQiggMjAwMCwgZnNfa0h6LCA2MDAgKTsKICAg
ICBzaWxrX2Fzc2VydCggbWluX21pZF9yYXRlX2JwcyA8IDMyNzY3ICk7CiAgICAgLyogRGVmYXVs
dCBiaXRyYXRlIGRpc3RyaWJ1dGlvbjogOCBwYXJ0cyBmb3IgTWlkIGFuZCAoNSszKmZyYWMpIHBh
cnRzIGZvciBTaWRlLiBzbzogbWlkX3JhdGUgPSAoIDggLyAoIDEzICsgMyAqIGZyYWMgKSApICog
dG90YWxfIHJhdGUgKi8KICAgICBmcmFjXzNfUTE2ID0gc2lsa19NVUwoIDMsIGZyYWNfUTE2ICk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvc3RlcmVvX2VuY29kZV9wcmVkLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3RlcmVvX2VuY29k
ZV9wcmVkLmMKaW5kZXggZTZkZDE5NTA2NjQwYTlkNTM3MTQ5ODZiODc3NTBkMzhkODM1ZmIyYi4u
MDNiZWNiNjczNjEyYTA3ZjE3YWVhODdlNDhjMDdlOWYwMDAxYjI5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L3N0ZXJlb19lbmNvZGVfcHJlZC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zdGVyZW9fZW5jb2RlX3ByZWQuYwpAQCAt
NDEsMTEgKzQxLDExIEBAIHZvaWQgc2lsa19zdGVyZW9fZW5jb2RlX3ByZWQoCiAKICAgICAvKiBF
bnRyb3B5IGNvZGluZyAqLwogICAgIG4gPSA1ICogaXhbIDAgXVsgMiBdICsgaXhbIDEgXVsgMiBd
OwotICAgIHNpbGtfYXNzZXJ0KCBuIDwgMjUgKTsKKyAgICBjZWx0X2Fzc2VydCggbiA8IDI1ICk7
CiAgICAgZWNfZW5jX2ljZGYoIHBzUmFuZ2VFbmMsIG4sIHNpbGtfc3RlcmVvX3ByZWRfam9pbnRf
aUNERiwgOCApOwogICAgIGZvciggbiA9IDA7IG4gPCAyOyBuKysgKSB7Ci0gICAgICAgIHNpbGtf
YXNzZXJ0KCBpeFsgbiBdWyAwIF0gPCAzICk7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBpeFsgbiBd
WyAxIF0gPCBTVEVSRU9fUVVBTlRfU1VCX1NURVBTICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBp
eFsgbiBdWyAwIF0gPCAzICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBpeFsgbiBdWyAxIF0gPCBT
VEVSRU9fUVVBTlRfU1VCX1NURVBTICk7CiAgICAgICAgIGVjX2VuY19pY2RmKCBwc1JhbmdlRW5j
LCBpeFsgbiBdWyAwIF0sIHNpbGtfdW5pZm9ybTNfaUNERiwgOCApOwogICAgICAgICBlY19lbmNf
aWNkZiggcHNSYW5nZUVuYywgaXhbIG4gXVsgMSBdLCBzaWxrX3VuaWZvcm01X2lDREYsIDggKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3RydWN0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3N0cnVjdHMuaAppbmRleCA0
ZmY1OTBiMDRjYWJhNTA4MzVmY2QxODAwOTQzN2JjNzkwYWFhYWFlLi4zMzgwYzc1N2IyODc4NjIx
ZDU5MTg5OTI5YzdhMGE1ZGVlZDhiNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3RydWN0cy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9zdHJ1Y3RzLmgKQEAgLTc4LDYgKzc4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIG9w
dXNfaW50MzIgICAgICAgICAgICAgICAgICAgSW5fTFBfU3RhdGVbIDIgXTsgICAgICAgICAgIC8q
IExvdyBwYXNzIGZpbHRlciBzdGF0ZSAqLwogICAgIG9wdXNfaW50MzIgICAgICAgICAgICAgICAg
ICAgdHJhbnNpdGlvbl9mcmFtZV9ubzsgICAgICAgIC8qIENvdW50ZXIgd2hpY2ggaXMgbWFwcGVk
IHRvIGEgY3V0LW9mZiBmcmVxdWVuY3kgKi8KICAgICBvcHVzX2ludCAgICAgICAgICAgICAgICAg
ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBPcGVyYXRpbmcgbW9kZSwgPDA6IHN3
aXRjaCBkb3duLCA+MDogc3dpdGNoIHVwOyAwOiBkbyBub3RoaW5nICAgICAgICAgICAqLworICAg
IG9wdXNfaW50MzIgICAgICAgICAgICAgICAgICAgc2F2ZWRfZnNfa0h6OyAgICAgICAgICAgICAg
IC8qIElmIG5vbi16ZXJvLCBob2xkcyB0aGUgbGFzdCBzYW1wbGluZyByYXRlIGJlZm9yZSBhIGJh
bmR3aWR0aCBzd2l0Y2hpbmcgcmVzZXQuICovCiB9IHNpbGtfTFBfc3RhdGU7CiAKIC8qIFN0cnVj
dHVyZSBjb250YWluaW5nIE5MU0YgY29kZWJvb2sgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay90YWJsZXMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay90YWJsZXMuaAppbmRleCA4YjAzODBlZWIwOTg0YzE3YjM4MjU2NzI5Nzg1MWMyZDVh
MjcwYWFlLi45NTIzMGM0NTFhNmIyZDBjMmNkYjc4MjUxYzJmMDUyOTEyZGIxYmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvdGFibGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3RhYmxlcy5oCkBAIC05NywxMiArOTcsNiBAQCBl
eHRlcm4gY29uc3Qgb3B1c191aW50OCAgc2lsa19OTFNGX2ludGVycG9sYXRpb25fZmFjdG9yX2lD
REZbIDUgXTsKIGV4dGVybiBjb25zdCBzaWxrX05MU0ZfQ0Jfc3RydWN0IHNpbGtfTkxTRl9DQl9X
QjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAx
MDQwICovCiBleHRlcm4gY29uc3Qgc2lsa19OTFNGX0NCX3N0cnVjdCBzaWxrX05MU0ZfQ0JfTkJf
TUI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNzI4
ICovCiAKLS8qIFBpZWNlLXdpc2UgbGluZWFyIG1hcHBpbmcgZnJvbSBiaXRyYXRlIGluIGticHMg
dG8gY29kaW5nIHF1YWxpdHkgaW4gZEIgU05SICovCi1leHRlcm4gY29uc3Qgb3B1c19pbnQzMiAg
c2lsa19UYXJnZXRSYXRlX3RhYmxlX05CWyAgVEFSR0VUX1JBVEVfVEFCX1NaIF07ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogIDMyICovCi1leHRlcm4gY29uc3Qgb3B1c19pbnQzMiAgc2ls
a19UYXJnZXRSYXRlX3RhYmxlX01CWyAgVEFSR0VUX1JBVEVfVEFCX1NaIF07ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogIDMyICovCi1leHRlcm4gY29uc3Qgb3B1c19pbnQzMiAgc2lsa19U
YXJnZXRSYXRlX3RhYmxlX1dCWyAgVEFSR0VUX1JBVEVfVEFCX1NaIF07ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogIDMyICovCi1leHRlcm4gY29uc3Qgb3B1c19pbnQxNiAgc2lsa19TTlJf
dGFibGVfUTFbICAgICAgICAgVEFSR0VUX1JBVEVfVEFCX1NaIF07ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogIDMyICovCi0KIC8qIFF1YW50aXphdGlvbiBvZmZzZXRzICovCiBleHRlcm4g
Y29uc3Qgb3B1c19pbnQxNiAgc2lsa19RdWFudGl6YXRpb25fT2Zmc2V0c19RMTBbIDIgXVsgMiBd
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICA4ICovCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay90YWJsZXNfb3RoZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay90YWJsZXNfb3RoZXIuYwppbmRleCAzOTg2ODZi
ZjI2Yjk0N2YwYjY0MGJkNjRhYWRkNGNlZTA0ZjlhMWQ0Li5lMzRkOTA3NzdiM2RiNmQyMWRjZTE1
MzEzMWJjOGRiZGE5M2RlOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvdGFibGVzX290aGVyLmMKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
aWxrL3RhYmxlc19vdGhlci5jCkBAIC0zOCwyMCArMzgsNiBAQCBleHRlcm4gIkMiCiB7CiAjZW5k
aWYKIAotLyogUGllY2Utd2lzZSBsaW5lYXIgbWFwcGluZyBmcm9tIGJpdHJhdGUgaW4ga2JwcyB0
byBjb2RpbmcgcXVhbGl0eSBpbiBkQiBTTlIgKi8KLWNvbnN0IG9wdXNfaW50MzIgc2lsa19UYXJn
ZXRSYXRlX3RhYmxlX05CWyBUQVJHRVRfUkFURV9UQUJfU1ogXSA9IHsKLSAgICAwLCAgICAgIDgw
MDAsICAgOTQwMCwgICAxMTUwMCwgIDEzNTAwLCAgMTc1MDAsICAyNTAwMCwgIE1BWF9UQVJHRVRf
UkFURV9CUFMKLX07Ci1jb25zdCBvcHVzX2ludDMyIHNpbGtfVGFyZ2V0UmF0ZV90YWJsZV9NQlsg
VEFSR0VUX1JBVEVfVEFCX1NaIF0gPSB7Ci0gICAgMCwgICAgICA5MDAwLCAgIDEyMDAwLCAgMTQ1
MDAsICAxODUwMCwgIDI0NTAwLCAgMzU1MDAsICBNQVhfVEFSR0VUX1JBVEVfQlBTCi19OwotY29u
c3Qgb3B1c19pbnQzMiBzaWxrX1RhcmdldFJhdGVfdGFibGVfV0JbIFRBUkdFVF9SQVRFX1RBQl9T
WiBdID0gewotICAgIDAsICAgICAgMTA1MDAsICAxNDAwMCwgIDE3MDAwLCAgMjE1MDAsICAyODUw
MCwgIDQyMDAwLCAgTUFYX1RBUkdFVF9SQVRFX0JQUwotfTsKLWNvbnN0IG9wdXNfaW50MTYgc2ls
a19TTlJfdGFibGVfUTFbIFRBUkdFVF9SQVRFX1RBQl9TWiBdID0gewotICAgIDE4LCAgICAgMjks
ICAgICAzOCwgICAgIDQwLCAgICAgNDYsICAgICA1MiwgICAgIDYyLCAgICAgODQKLX07Ci0KIC8q
IFRhYmxlcyBmb3Igc3RlcmVvIHByZWRpY3RvciBjb2RpbmcgKi8KIGNvbnN0IG9wdXNfaW50MTYg
c2lsa19zdGVyZW9fcHJlZF9xdWFudF9RMTNbIFNURVJFT19RVUFOVF9UQUJfU0laRSBdID0gewog
ICAgIC0xMzczMiwgLTEwMDUwLCAtODI2NiwgLTc1MjYsIC02NTAwLCAtNTAwMCwgLTI5NTAsICAt
ODIwLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1FfZGVsX2RlY19zc2UuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvTlNR
X2RlbF9kZWNfc3NlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MjEyYmVlOGQz
YTFiMWMyMTYyY2U4MzI2ODExNDViYjc0N2M3NmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1FfZGVsX2RlY19zc2UuYworKysgL2Rldi9u
dWxsCkBAIC0xLDg1OSArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENpc2NvIFN5c3Rl
bXMsIElOQwotICAgV3JpdHRlbiBieSBYaWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5QZW5nIFlhbldh
bmcKLQotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICAgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUgotICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKLSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIK
LSNlbmRpZgotCi0jaW5jbHVkZSA8eG1taW50cmluLmg+Ci0jaW5jbHVkZSA8ZW1taW50cmluLmg+
Ci0jaW5jbHVkZSA8c21taW50cmluLmg+Ci0jaW5jbHVkZSAibWFpbi5oIgotI2luY2x1ZGUgImNl
bHQveDg2L3g4NmNwdS5oIgotCi0jaW5jbHVkZSAic3RhY2tfYWxsb2MuaCIKLQotdHlwZWRlZiBz
dHJ1Y3QgewotICAgIG9wdXNfaW50MzIgc0xQQ19RMTRbIE1BWF9TVUJfRlJBTUVfTEVOR1RIICsg
TlNRX0xQQ19CVUZfTEVOR1RIIF07Ci0gICAgb3B1c19pbnQzMiBSYW5kU3RhdGVbIERFQ0lTSU9O
X0RFTEFZIF07Ci0gICAgb3B1c19pbnQzMiBRX1ExMFsgICAgIERFQ0lTSU9OX0RFTEFZIF07Ci0g
ICAgb3B1c19pbnQzMiBYcV9RMTRbICAgIERFQ0lTSU9OX0RFTEFZIF07Ci0gICAgb3B1c19pbnQz
MiBQcmVkX1ExNVsgIERFQ0lTSU9OX0RFTEFZIF07Ci0gICAgb3B1c19pbnQzMiBTaGFwZV9RMTRb
IERFQ0lTSU9OX0RFTEFZIF07Ci0gICAgb3B1c19pbnQzMiBzQVIyX1ExNFsgTUFYX1NIQVBFX0xQ
Q19PUkRFUiBdOwotICAgIG9wdXNfaW50MzIgTEZfQVJfUTE0OwotICAgIG9wdXNfaW50MzIgU2Vl
ZDsKLSAgICBvcHVzX2ludDMyIFNlZWRJbml0OwotICAgIG9wdXNfaW50MzIgUkRfUTEwOwotfSBO
U1FfZGVsX2RlY19zdHJ1Y3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBvcHVzX2ludDMyIFFf
UTEwOwotICAgIG9wdXNfaW50MzIgUkRfUTEwOwotICAgIG9wdXNfaW50MzIgeHFfUTE0OwotICAg
IG9wdXNfaW50MzIgTEZfQVJfUTE0OwotICAgIG9wdXNfaW50MzIgc0xUUF9zaHBfUTE0OwotICAg
IG9wdXNfaW50MzIgTFBDX2V4Y19RMTQ7Ci19IE5TUV9zYW1wbGVfc3RydWN0OwotCi10eXBlZGVm
IE5TUV9zYW1wbGVfc3RydWN0ICBOU1Ffc2FtcGxlX3BhaXJbIDIgXTsKLQotc3RhdGljIE9QVVNf
SU5MSU5FIHZvaWQgc2lsa19uc3FfZGVsX2RlY19zY2FsZV9zdGF0ZXNfc3NlNF8xKAotICAgIGNv
bnN0IHNpbGtfZW5jb2Rlcl9zdGF0ZSAqcHNFbmNDLCAgICAgICAgICAgICAgIC8qIEkgICAgRW5j
b2RlciBTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBzaWxrX25zcV9zdGF0ZSAg
ICAgICpOU1EsICAgICAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCi0gICAgTlNRX2RlbF9kZWNfc3RydWN0ICBwc0RlbERlY1td
LCAgICAgICAgICAgICAgICAgLyogSS9PICBEZWxheWVkIGRlY2lzaW9uIHN0YXRlcyAgICAgICAg
ICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9RM1tdLCAgICAgICAgICAgICAgICAg
ICAgIC8qIEkgICAgSW5wdXQgaW4gUTMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBv
cHVzX2ludDMyICAgICAgICAgIHhfc2NfUTEwW10sICAgICAgICAgICAgICAgICAvKiBPICAgIElu
cHV0IHNjYWxlZCB3aXRoIDEvR2FpbiBpbiBRMTAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQx
NiAgICBzTFRQW10sICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBSZS13aGl0ZW5lZCBMVFAg
c3RhdGUgaW4gUTAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVb
XSwgICAgICAgICAgICAgICAgIC8qIE8gICAgTFRQIHN0YXRlIG1hdGNoaW5nIHNjYWxlZCBpbnB1
dCAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHN1YmZyLCAgICAgICAgICAgICAgICAg
ICAgICAvKiBJICAgIFN1YmZyYW1lIG51bWJlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAg
b3B1c19pbnQgICAgICAgICAgICBuU3RhdGVzRGVsYXllZERlY2lzaW9uLCAgICAgLyogSSAgICBO
dW1iZXIgb2YgZGVsIGRlYyBzdGF0ZXMgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50
ICAgICAgTFRQX3NjYWxlX1ExNCwgICAgICAgICAgICAgIC8qIEkgICAgTFRQIHN0YXRlIHNjYWxp
bmcgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgIEdhaW5zX1Ex
NlsgTUFYX05CX1NVQkZSIF0sICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICBwaXRjaExbIE1BWF9OQl9TVUJGUiBd
LCAgICAgLyogSSAgICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IGNvbnN0IG9wdXNfaW50ICAgICAgc2lnbmFsX3R5cGUsICAgICAgICAgICAgICAgIC8qIEkgICAg
U2lnbmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2lu
dCAgICAgIGRlY2lzaW9uRGVsYXkgICAgICAgICAgICAgICAvKiBJICAgIERlY2lzaW9uIGRlbGF5
ICAgICAgICAgICAgICAgICAgICAgICovCi0pOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwotLyogTm9pc2Ugc2hhcGUgcXVhbnRpemVyIGZvciBvbmUgc3Vi
ZnJhbWUgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1z
dGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXplcl9kZWxfZGVj
X3NzZTRfMSgKLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1EsICAgICAgICAgICAgICAgICAg
IC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBOU1Ff
ZGVsX2RlY19zdHJ1Y3QgIHBzRGVsRGVjW10sICAgICAgICAgICAgIC8qIEkvTyAgRGVsYXllZCBk
ZWNpc2lvbiBzdGF0ZXMgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHNp
Z25hbFR5cGUsICAgICAgICAgICAgIC8qIEkgICAgU2lnbmFsIHR5cGUgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgIHhfUTEwW10sICAgICAgICAgICAg
ICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBv
cHVzX2ludDggICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAgICAgICAgIC8qIE8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDE2ICAgICAgICAg
IHhxW10sICAgICAgICAgICAgICAgICAgIC8qIE8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIHNMVFBfUTE1W10sICAgICAg
ICAgICAgIC8qIEkvTyAgTFRQIGZpbHRlciBzdGF0ZSAgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICBvcHVzX2ludDMyICAgICAgICAgIGRlbGF5ZWRHYWluX1ExMFtdLCAgICAgIC8qIEkvTyAgR2Fp
biBkZWxheSBidWZmZXIgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2
ICAgIGFfUTEyW10sICAgICAgICAgICAgICAgIC8qIEkgICAgU2hvcnQgdGVybSBwcmVkaWN0aW9u
IGNvZWZzICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgIGJfUTE0W10sICAgICAg
ICAgICAgICAgIC8qIEkgICAgTG9uZyB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICAgICAgKi8K
LSAgICBjb25zdCBvcHVzX2ludDE2ICAgIEFSX3NocF9RMTNbXSwgICAgICAgICAgIC8qIEkgICAg
Tm9pc2Ugc2hhcGluZyBjb2VmcyAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAg
ICAgICAgIGxhZywgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgUGl0Y2ggbGFnICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIEhhcm1TaGFwZUZJ
UlBhY2tlZF9RMTQsIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIFRpbHRfUTE0LCAgICAgICAgICAgICAgIC8qIEkg
ICAgU3BlY3RyYWwgdGlsdCAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMy
ICAgICAgICAgIExGX3NocF9RMTQsICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIEdhaW5fUTE2
LCAgICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIExhbWJkYV9RMTAsICAgICAgICAgICAgIC8q
IEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2lu
dCAgICAgICAgICAgIG9mZnNldF9RMTAsICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIGxlbmd0
aCwgICAgICAgICAgICAgICAgIC8qIEkgICAgSW5wdXQgbGVuZ3RoICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHN1YmZyLCAgICAgICAgICAgICAgICAg
IC8qIEkgICAgU3ViZnJhbWUgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVz
X2ludCAgICAgICAgICAgIHNoYXBpbmdMUENPcmRlciwgICAgICAgIC8qIEkgICAgU2hhcGluZyBM
UEMgZmlsdGVyIG9yZGVyICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHBy
ZWRpY3RMUENPcmRlciwgICAgICAgIC8qIEkgICAgUHJlZGljdGlvbiBmaWx0ZXIgb3JkZXIgICAg
ICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHdhcnBpbmdfUTE2LCAgICAgICAg
ICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBv
cHVzX2ludCAgICAgICAgICAgIG5TdGF0ZXNEZWxheWVkRGVjaXNpb24sIC8qIEkgICAgTnVtYmVy
IG9mIHN0YXRlcyBpbiBkZWNpc2lvbiB0cmVlICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAg
ICpzbXBsX2J1Zl9pZHgsICAgICAgICAgIC8qIEkvTyAgSW5kZXggdG8gbmV3ZXN0IHNhbXBsZXMg
aW4gYnVmZmVycyAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIGRlY2lzaW9uRGVsYXkgICAg
ICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSk7
Ci0KLXZvaWQgc2lsa19OU1FfZGVsX2RlY19zc2U0XzEoCi0gICAgY29uc3Qgc2lsa19lbmNvZGVy
X3N0YXRlICAgICpwc0VuY0MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
SSAgICBFbmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAgICovCi0gICAgc2lsa19uc3Ffc3Rh
dGUgICAgICAgICAgICAgICpOU1EsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgU2lkZUlu
Zm9JbmRpY2VzICAgICAgICAgICAgICpwc0luZGljZXMsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSS9PICBRdWFudGl6YXRpb24gSW5kaWNlcyAgICAgICAgICAgICovCi0gICAg
Y29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgIHhfUTNbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogSSAgICBQcmVmaWx0ZXJlZCBpbnB1dCBzaWduYWwgICAgICAgICov
Ci0gICAgb3B1c19pbnQ4ICAgICAgICAgICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBRdWFudGl6ZWQgcHVsc2Ugc2lnbmFsICAgICAg
ICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIFByZWRDb2VmX1ExMlsgMiAq
IE1BWF9MUENfT1JERVIgXSwgICAgICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24g
Y29lZnMgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIExUUENvZWZfUTE0
WyBMVFBfT1JERVIgKiBNQVhfTkJfU1VCRlIgXSwgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGlj
dGlvbiBjb2VmcyAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIEFSMl9R
MTNbIE1BWF9OQl9TVUJGUiAqIE1BWF9TSEFQRV9MUENfT1JERVIgXSwgLyogSSBOb2lzZSBzaGFw
aW5nIGNvZWZzICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAg
IEhhcm1TaGFwZUdhaW5fUTE0WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgLyogSSAgICBMb25n
IHRlcm0gc2hhcGluZyBjb2VmcyAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAg
ICAgICAgIFRpbHRfUTE0WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAgLyogSSAg
ICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQz
MiAgICAgICAgICAgIExGX3NocF9RMTRbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAg
LyogSSAgICBMb3cgZnJlcXVlbmN5IHNoYXBpbmcgY29lZnMgICAgICovCi0gICAgY29uc3Qgb3B1
c19pbnQzMiAgICAgICAgICAgIEdhaW5zX1ExNlsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAg
ICAgICAgLyogSSAgICBRdWFudGl6YXRpb24gc3RlcCBzaXplcyAgICAgICAgICovCi0gICAgY29u
c3Qgb3B1c19pbnQgICAgICAgICAgICAgIHBpdGNoTFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAg
ICAgICAgICAgICAgLyogSSAgICBQaXRjaCBsYWdzICAgICAgICAgICAgICAgICAgICAgICovCi0g
ICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIExhbWJkYV9RMTAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogSSAgICBSYXRlL2Rpc3RvcnRpb24gdHJhZGVvZmYgICAgICAg
ICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIExUUF9zY2FsZV9RMTQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBMVFAgc3RhdGUgc2NhbGluZyAgICAgICAg
ICAgICAgICovCi0pCi17Ci0gICAgb3B1c19pbnQgICAgICAgICAgICBpLCBrLCBsYWcsIHN0YXJ0
X2lkeCwgTFNGX2ludGVycG9sYXRpb25fZmxhZywgV2lubmVyX2luZCwgc3ViZnI7Ci0gICAgb3B1
c19pbnQgICAgICAgICAgICBsYXN0X3NtcGxlX2lkeCwgc21wbF9idWZfaWR4LCBkZWNpc2lvbkRl
bGF5OwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgKkFfUTEyLCAqQl9RMTQsICpBUl9zaHBfUTEz
OwotICAgIG9wdXNfaW50MTYgICAgICAgICAgKnB4cTsKLSAgICBWQVJERUNMKCBvcHVzX2ludDMy
LCBzTFRQX1ExNSApOwotICAgIFZBUkRFQ0woIG9wdXNfaW50MTYsIHNMVFAgKTsKLSAgICBvcHVz
X2ludDMyICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQ7Ci0gICAgb3B1c19pbnQgICAg
ICAgICAgICBvZmZzZXRfUTEwOwotICAgIG9wdXNfaW50MzIgICAgICAgICAgUkRtaW5fUTEwLCBH
YWluX1ExMDsKLSAgICBWQVJERUNMKCBvcHVzX2ludDMyLCB4X3NjX1ExMCApOwotICAgIFZBUkRF
Q0woIG9wdXNfaW50MzIsIGRlbGF5ZWRHYWluX1ExMCApOwotICAgIFZBUkRFQ0woIE5TUV9kZWxf
ZGVjX3N0cnVjdCwgcHNEZWxEZWMgKTsKLSAgICBOU1FfZGVsX2RlY19zdHJ1Y3QgICpwc0REOwot
ICAgIFNBVkVfU1RBQ0s7Ci0KLSAgICAvKiBTZXQgdW52b2ljZWQgbGFnIHRvIHRoZSBwcmV2aW91
cyBvbmUsIG92ZXJ3cml0ZSBsYXRlciBmb3Igdm9pY2VkICovCi0gICAgbGFnID0gTlNRLT5sYWdQ
cmV2OwotCi0gICAgc2lsa19hc3NlcnQoIE5TUS0+cHJldl9nYWluX1ExNiAhPSAwICk7Ci0KLSAg
ICAvKiBJbml0aWFsaXplIGRlbGF5ZWQgZGVjaXNpb24gc3RhdGVzICovCi0gICAgQUxMT0MoIHBz
RGVsRGVjLCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb24sIE5TUV9kZWxfZGVjX3N0cnVj
dCApOwotICAgIHNpbGtfbWVtc2V0KCBwc0RlbERlYywgMCwgcHNFbmNDLT5uU3RhdGVzRGVsYXll
ZERlY2lzaW9uICogc2l6ZW9mKCBOU1FfZGVsX2RlY19zdHJ1Y3QgKSApOwotICAgIGZvciggayA9
IDA7IGsgPCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsrKyApIHsKLSAgICAgICAg
cHNERCAgICAgICAgICAgICAgICAgPSAmcHNEZWxEZWNbIGsgXTsKLSAgICAgICAgcHNERC0+U2Vl
ZCAgICAgICAgICAgPSAoIGsgKyBwc0luZGljZXMtPlNlZWQgKSAmIDM7Ci0gICAgICAgIHBzREQt
PlNlZWRJbml0ICAgICAgID0gcHNERC0+U2VlZDsKLSAgICAgICAgcHNERC0+UkRfUTEwICAgICAg
ICAgPSAwOwotICAgICAgICBwc0RELT5MRl9BUl9RMTQgICAgICA9IE5TUS0+c0xGX0FSX3NocF9R
MTQ7Ci0gICAgICAgIHBzREQtPlNoYXBlX1ExNFsgMCBdID0gTlNRLT5zTFRQX3NocF9RMTRbIHBz
RW5jQy0+bHRwX21lbV9sZW5ndGggLSAxIF07Ci0gICAgICAgIHNpbGtfbWVtY3B5KCBwc0RELT5z
TFBDX1ExNCwgTlNRLT5zTFBDX1ExNCwgTlNRX0xQQ19CVUZfTEVOR1RIICogc2l6ZW9mKCBvcHVz
X2ludDMyICkgKTsKLSAgICAgICAgc2lsa19tZW1jcHkoIHBzREQtPnNBUjJfUTE0LCBOU1EtPnNB
UjJfUTE0LCBzaXplb2YoIE5TUS0+c0FSMl9RMTQgKSApOwotICAgIH0KLQotICAgIG9mZnNldF9R
MTAgICA9IHNpbGtfUXVhbnRpemF0aW9uX09mZnNldHNfUTEwWyBwc0luZGljZXMtPnNpZ25hbFR5
cGUgPj4gMSBdWyBwc0luZGljZXMtPnF1YW50T2Zmc2V0VHlwZSBdOwotICAgIHNtcGxfYnVmX2lk
eCA9IDA7IC8qIGluZGV4IG9mIG9sZGVzdCBzYW1wbGVzICovCi0KLSAgICBkZWNpc2lvbkRlbGF5
ID0gc2lsa19taW5faW50KCBERUNJU0lPTl9ERUxBWSwgcHNFbmNDLT5zdWJmcl9sZW5ndGggKTsK
LQotICAgIC8qIEZvciB2b2ljZWQgZnJhbWVzIGxpbWl0IHRoZSBkZWNpc2lvbiBkZWxheSB0byBs
b3dlciB0aGFuIHRoZSBwaXRjaCBsYWcgKi8KLSAgICBpZiggcHNJbmRpY2VzLT5zaWduYWxUeXBl
ID09IFRZUEVfVk9JQ0VEICkgewotICAgICAgICBmb3IoIGsgPSAwOyBrIDwgcHNFbmNDLT5uYl9z
dWJmcjsgaysrICkgewotICAgICAgICAgICAgZGVjaXNpb25EZWxheSA9IHNpbGtfbWluX2ludCgg
ZGVjaXNpb25EZWxheSwgcGl0Y2hMWyBrIF0gLSBMVFBfT1JERVIgLyAyIC0gMSApOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYoIGxhZyA+IDAgKSB7Ci0gICAgICAgICAgICBk
ZWNpc2lvbkRlbGF5ID0gc2lsa19taW5faW50KCBkZWNpc2lvbkRlbGF5LCBsYWcgLSBMVFBfT1JE
RVIgLyAyIC0gMSApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIHBzSW5kaWNlcy0+TkxT
RkludGVycENvZWZfUTIgPT0gNCApIHsKLSAgICAgICAgTFNGX2ludGVycG9sYXRpb25fZmxhZyA9
IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTFNGX2ludGVycG9sYXRpb25fZmxhZyA9IDE7Ci0g
ICAgfQotCi0gICAgQUxMT0MoIHNMVFBfUTE1LAotICAgICAgICAgICBwc0VuY0MtPmx0cF9tZW1f
bGVuZ3RoICsgcHNFbmNDLT5mcmFtZV9sZW5ndGgsIG9wdXNfaW50MzIgKTsKLSAgICBBTExPQygg
c0xUUCwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCArIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCBvcHVz
X2ludDE2ICk7Ci0gICAgQUxMT0MoIHhfc2NfUTEwLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCwgb3B1
c19pbnQzMiApOwotICAgIEFMTE9DKCBkZWxheWVkR2Fpbl9RMTAsIERFQ0lTSU9OX0RFTEFZLCBv
cHVzX2ludDMyICk7Ci0gICAgLyogU2V0IHVwIHBvaW50ZXJzIHRvIHN0YXJ0IG9mIHN1YiBmcmFt
ZSAqLwotICAgIHB4cSAgICAgICAgICAgICAgICAgICA9ICZOU1EtPnhxWyBwc0VuY0MtPmx0cF9t
ZW1fbGVuZ3RoIF07Ci0gICAgTlNRLT5zTFRQX3NocF9idWZfaWR4ID0gcHNFbmNDLT5sdHBfbWVt
X2xlbmd0aDsKLSAgICBOU1EtPnNMVFBfYnVmX2lkeCAgICAgPSBwc0VuY0MtPmx0cF9tZW1fbGVu
Z3RoOwotICAgIHN1YmZyID0gMDsKLSAgICBmb3IoIGsgPSAwOyBrIDwgcHNFbmNDLT5uYl9zdWJm
cjsgaysrICkgewotICAgICAgICBBX1ExMiAgICAgID0gJlByZWRDb2VmX1ExMlsgKCAoIGsgPj4g
MSApIHwgKCAxIC0gTFNGX2ludGVycG9sYXRpb25fZmxhZyApICkgKiBNQVhfTFBDX09SREVSIF07
Ci0gICAgICAgIEJfUTE0ICAgICAgPSAmTFRQQ29lZl9RMTRbIGsgKiBMVFBfT1JERVIgICAgICAg
ICAgIF07Ci0gICAgICAgIEFSX3NocF9RMTMgPSAmQVIyX1ExM1sgICAgIGsgKiBNQVhfU0hBUEVf
TFBDX09SREVSIF07Ci0KLSAgICAgICAgLyogTm9pc2Ugc2hhcGUgcGFyYW1ldGVycyAqLwotICAg
ICAgICBzaWxrX2Fzc2VydCggSGFybVNoYXBlR2Fpbl9RMTRbIGsgXSA+PSAwICk7Ci0gICAgICAg
IEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgID0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbGtf
UlNISUZUKCBIYXJtU2hhcGVHYWluX1ExNFsgayBdLCAyICk7Ci0gICAgICAgIEhhcm1TaGFwZUZJ
UlBhY2tlZF9RMTQgfD0gc2lsa19MU0hJRlQoIChvcHVzX2ludDMyKXNpbGtfUlNISUZUKCBIYXJt
U2hhcGVHYWluX1ExNFsgayBdLCAxICksIDE2ICk7Ci0KLSAgICAgICAgTlNRLT5yZXdoaXRlX2Zs
YWcgPSAwOwotICAgICAgICBpZiggcHNJbmRpY2VzLT5zaWduYWxUeXBlID09IFRZUEVfVk9JQ0VE
ICkgewotICAgICAgICAgICAgLyogVm9pY2VkICovCi0gICAgICAgICAgICBsYWcgPSBwaXRjaExb
IGsgXTsKLQotICAgICAgICAgICAgLyogUmUtd2hpdGVuaW5nICovCi0gICAgICAgICAgICBpZigg
KCBrICYgKCAzIC0gc2lsa19MU0hJRlQoIExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcsIDEgKSApICkg
PT0gMCApIHsKLSAgICAgICAgICAgICAgICBpZiggayA9PSAyICkgewotICAgICAgICAgICAgICAg
ICAgICAvKiBSRVNFVCBERUxBWUVEIERFQ0lTSU9OUyAqLwotICAgICAgICAgICAgICAgICAgICAv
KiBGaW5kIHdpbm5lciAqLwotICAgICAgICAgICAgICAgICAgICBSRG1pbl9RMTAgPSBwc0RlbERl
Y1sgMCBdLlJEX1ExMDsKLSAgICAgICAgICAgICAgICAgICAgV2lubmVyX2luZCA9IDA7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciggaSA9IDE7IGkgPCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVj
aXNpb247IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBwc0RlbERlY1sgaSBd
LlJEX1ExMCA8IFJEbWluX1ExMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRG1p
bl9RMTAgPSBwc0RlbERlY1sgaSBdLlJEX1ExMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXaW5uZXJfaW5kID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgcHNFbmNDLT5u
U3RhdGVzRGVsYXllZERlY2lzaW9uOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiggaSAhPSBXaW5uZXJfaW5kICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzRGVs
RGVjWyBpIF0uUkRfUTEwICs9ICggc2lsa19pbnQzMl9NQVggPj4gNCApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBwc0RlbERlY1sgaSBdLlJEX1ExMCA+PSAwICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAvKiBDb3B5IGZpbmFsIHBhcnQgb2Ygc2lnbmFscyBmcm9tIHdpbm5l
ciBzdGF0ZSB0byBvdXRwdXQgYW5kIGxvbmctdGVybSBmaWx0ZXIgc3RhdGVzICovCi0gICAgICAg
ICAgICAgICAgICAgIHBzREQgPSAmcHNEZWxEZWNbIFdpbm5lcl9pbmQgXTsKLSAgICAgICAgICAg
ICAgICAgICAgbGFzdF9zbXBsZV9pZHggPSBzbXBsX2J1Zl9pZHggKyBkZWNpc2lvbkRlbGF5Owot
ICAgICAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgZGVjaXNpb25EZWxheTsgaSsrICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9zbXBsZV9pZHggPSAoIGxhc3Rfc21wbGVf
aWR4IC0gMSApICUgREVDSVNJT05fREVMQVk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZigg
bGFzdF9zbXBsZV9pZHggPCAwICkgbGFzdF9zbXBsZV9pZHggKz0gREVDSVNJT05fREVMQVk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdWxzZXNbICAgaSAtIGRlY2lzaW9uRGVsYXkgXSA9IChv
cHVzX2ludDgpc2lsa19SU0hJRlRfUk9VTkQoIHBzREQtPlFfUTEwWyBsYXN0X3NtcGxlX2lkeCBd
LCAxMCApOwotICAgICAgICAgICAgICAgICAgICAgICAgcHhxWyBpIC0gZGVjaXNpb25EZWxheSBd
ID0gKG9wdXNfaW50MTYpc2lsa19TQVQxNiggc2lsa19SU0hJRlRfUk9VTkQoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2lsa19TTVVMV1coIHBzREQtPlhxX1ExNFsgbGFzdF9zbXBsZV9p
ZHggXSwgR2FpbnNfUTE2WyAxIF0gKSwgMTQgKSApOwotICAgICAgICAgICAgICAgICAgICAgICAg
TlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIGRlY2lzaW9uRGVsYXkg
KyBpIF0gPSBwc0RELT5TaGFwZV9RMTRbIGxhc3Rfc21wbGVfaWR4IF07Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBzdWJmciA9IDA7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLyogUmV3aGl0ZW4gd2l0aCBuZXcgQSBjb2VmcyAqLwot
ICAgICAgICAgICAgICAgIHN0YXJ0X2lkeCA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGggLSBsYWcg
LSBwc0VuY0MtPnByZWRpY3RMUENPcmRlciAtIExUUF9PUkRFUiAvIDI7Ci0gICAgICAgICAgICAg
ICAgc2lsa19hc3NlcnQoIHN0YXJ0X2lkeCA+IDAgKTsKLQotICAgICAgICAgICAgICAgIHNpbGtf
TFBDX2FuYWx5c2lzX2ZpbHRlciggJnNMVFBbIHN0YXJ0X2lkeCBdLCAmTlNRLT54cVsgc3RhcnRf
aWR4ICsgayAqIHBzRW5jQy0+c3ViZnJfbGVuZ3RoIF0sCi0gICAgICAgICAgICAgICAgICAgIEFf
UTEyLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoIC0gc3RhcnRfaWR4LCBwc0VuY0MtPnByZWRpY3RM
UENPcmRlciwgcHNFbmNDLT5hcmNoICk7Ci0KLSAgICAgICAgICAgICAgICBOU1EtPnNMVFBfYnVm
X2lkeCA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7Ci0gICAgICAgICAgICAgICAgTlNRLT5yZXdo
aXRlX2ZsYWcgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc2lsa19u
c3FfZGVsX2RlY19zY2FsZV9zdGF0ZXNfc3NlNF8xKCBwc0VuY0MsIE5TUSwgcHNEZWxEZWMsIHhf
UTMsIHhfc2NfUTEwLCBzTFRQLCBzTFRQX1ExNSwgaywKLSAgICAgICAgICAgIHBzRW5jQy0+blN0
YXRlc0RlbGF5ZWREZWNpc2lvbiwgTFRQX3NjYWxlX1ExNCwgR2FpbnNfUTE2LCBwaXRjaEwsIHBz
SW5kaWNlcy0+c2lnbmFsVHlwZSwgZGVjaXNpb25EZWxheSApOwotCi0gICAgICAgIHNpbGtfbm9p
c2Vfc2hhcGVfcXVhbnRpemVyX2RlbF9kZWNfc3NlNF8xKCBOU1EsIHBzRGVsRGVjLCBwc0luZGlj
ZXMtPnNpZ25hbFR5cGUsIHhfc2NfUTEwLCBwdWxzZXMsIHB4cSwgc0xUUF9RMTUsCi0gICAgICAg
ICAgICBkZWxheWVkR2Fpbl9RMTAsIEFfUTEyLCBCX1ExNCwgQVJfc2hwX1ExMywgbGFnLCBIYXJt
U2hhcGVGSVJQYWNrZWRfUTE0LCBUaWx0X1ExNFsgayBdLCBMRl9zaHBfUTE0WyBrIF0sCi0gICAg
ICAgICAgICBHYWluc19RMTZbIGsgXSwgTGFtYmRhX1ExMCwgb2Zmc2V0X1ExMCwgcHNFbmNDLT5z
dWJmcl9sZW5ndGgsIHN1YmZyKyssIHBzRW5jQy0+c2hhcGluZ0xQQ09yZGVyLAotICAgICAgICAg
ICAgcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIsIHBzRW5jQy0+d2FycGluZ19RMTYsIHBzRW5jQy0+
blN0YXRlc0RlbGF5ZWREZWNpc2lvbiwgJnNtcGxfYnVmX2lkeCwgZGVjaXNpb25EZWxheSApOwot
Ci0gICAgICAgIHhfUTMgICArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsKLSAgICAgICAgcHVsc2Vz
ICs9IHBzRW5jQy0+c3ViZnJfbGVuZ3RoOwotICAgICAgICBweHEgICAgKz0gcHNFbmNDLT5zdWJm
cl9sZW5ndGg7Ci0gICAgfQotCi0gICAgLyogRmluZCB3aW5uZXIgKi8KLSAgICBSRG1pbl9RMTAg
PSBwc0RlbERlY1sgMCBdLlJEX1ExMDsKLSAgICBXaW5uZXJfaW5kID0gMDsKLSAgICBmb3IoIGsg
PSAxOyBrIDwgcHNFbmNDLT5uU3RhdGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7Ci0gICAgICAg
IGlmKCBwc0RlbERlY1sgayBdLlJEX1ExMCA8IFJEbWluX1ExMCApIHsKLSAgICAgICAgICAgIFJE
bWluX1ExMCA9IHBzRGVsRGVjWyBrIF0uUkRfUTEwOwotICAgICAgICAgICAgV2lubmVyX2luZCA9
IGs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBDb3B5IGZpbmFsIHBhcnQgb2Ygc2lnbmFs
cyBmcm9tIHdpbm5lciBzdGF0ZSB0byBvdXRwdXQgYW5kIGxvbmctdGVybSBmaWx0ZXIgc3RhdGVz
ICovCi0gICAgcHNERCA9ICZwc0RlbERlY1sgV2lubmVyX2luZCBdOwotICAgIHBzSW5kaWNlcy0+
U2VlZCA9IHBzREQtPlNlZWRJbml0OwotICAgIGxhc3Rfc21wbGVfaWR4ID0gc21wbF9idWZfaWR4
ICsgZGVjaXNpb25EZWxheTsKLSAgICBHYWluX1ExMCA9IHNpbGtfUlNISUZUMzIoIEdhaW5zX1Ex
NlsgcHNFbmNDLT5uYl9zdWJmciAtIDEgXSwgNiApOwotICAgIGZvciggaSA9IDA7IGkgPCBkZWNp
c2lvbkRlbGF5OyBpKysgKSB7Ci0gICAgICAgIGxhc3Rfc21wbGVfaWR4ID0gKCBsYXN0X3NtcGxl
X2lkeCAtIDEgKSAlIERFQ0lTSU9OX0RFTEFZOwotICAgICAgICBpZiggbGFzdF9zbXBsZV9pZHgg
PCAwICkgbGFzdF9zbXBsZV9pZHggKz0gREVDSVNJT05fREVMQVk7Ci0gICAgICAgIHB1bHNlc1sg
ICBpIC0gZGVjaXNpb25EZWxheSBdID0gKG9wdXNfaW50OClzaWxrX1JTSElGVF9ST1VORCggcHNE
RC0+UV9RMTBbIGxhc3Rfc21wbGVfaWR4IF0sIDEwICk7Ci0gICAgICAgIHB4cVsgaSAtIGRlY2lz
aW9uRGVsYXkgXSA9IChvcHVzX2ludDE2KXNpbGtfU0FUMTYoIHNpbGtfUlNISUZUX1JPVU5EKAot
ICAgICAgICAgICAgc2lsa19TTVVMV1coIHBzREQtPlhxX1ExNFsgbGFzdF9zbXBsZV9pZHggXSwg
R2Fpbl9RMTAgKSwgOCApICk7Ci0gICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBOU1EtPnNMVFBf
c2hwX2J1Zl9pZHggLSBkZWNpc2lvbkRlbGF5ICsgaSBdID0gcHNERC0+U2hhcGVfUTE0WyBsYXN0
X3NtcGxlX2lkeCBdOwotICAgIH0KLSAgICBzaWxrX21lbWNweSggTlNRLT5zTFBDX1ExNCwgJnBz
REQtPnNMUENfUTE0WyBwc0VuY0MtPnN1YmZyX2xlbmd0aCBdLCBOU1FfTFBDX0JVRl9MRU5HVEgg
KiBzaXplb2YoIG9wdXNfaW50MzIgKSApOwotICAgIHNpbGtfbWVtY3B5KCBOU1EtPnNBUjJfUTE0
LCBwc0RELT5zQVIyX1ExNCwgc2l6ZW9mKCBwc0RELT5zQVIyX1ExNCApICk7Ci0KLSAgICAvKiBV
cGRhdGUgc3RhdGVzICovCi0gICAgTlNRLT5zTEZfQVJfc2hwX1ExNCA9IHBzREQtPkxGX0FSX1Ex
NDsKLSAgICBOU1EtPmxhZ1ByZXYgICAgICAgID0gcGl0Y2hMWyBwc0VuY0MtPm5iX3N1YmZyIC0g
MSBdOwotCi0gICAgLyogU2F2ZSBxdWFudGl6ZWQgc3BlZWNoIHNpZ25hbCAqLwotICAgIHNpbGtf
bWVtbW92ZSggTlNRLT54cSwgICAgICAgICAgICZOU1EtPnhxWyAgICAgICAgICAgcHNFbmNDLT5m
cmFtZV9sZW5ndGggXSwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAqIHNpemVvZiggb3B1c19pbnQx
NiApICk7Ci0gICAgc2lsa19tZW1tb3ZlKCBOU1EtPnNMVFBfc2hwX1ExNCwgJk5TUS0+c0xUUF9z
aHBfUTE0WyBwc0VuY0MtPmZyYW1lX2xlbmd0aCBdLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoICog
c2l6ZW9mKCBvcHVzX2ludDMyICkgKTsKLSAgICBSRVNUT1JFX1NUQUNLOwotfQotCi0vKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogTm9pc2Ugc2hhcGUgcXVh
bnRpemVyIGZvciBvbmUgc3ViZnJhbWUgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCi1zdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25vaXNlX3NoYXBl
X3F1YW50aXplcl9kZWxfZGVjX3NzZTRfMSgKLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1Es
ICAgICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICBOU1FfZGVsX2RlY19zdHJ1Y3QgIHBzRGVsRGVjW10sICAgICAgICAgICAg
IC8qIEkvTyAgRGVsYXllZCBkZWNpc2lvbiBzdGF0ZXMgICAgICAgICAgICAgKi8KLSAgICBvcHVz
X2ludCAgICAgICAgICAgIHNpZ25hbFR5cGUsICAgICAgICAgICAgIC8qIEkgICAgU2lnbmFsIHR5
cGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgIHhf
UTEwW10sICAgICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBvcHVzX2ludDggICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAgICAg
ICAgIC8qIE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBv
cHVzX2ludDE2ICAgICAgICAgIHhxW10sICAgICAgICAgICAgICAgICAgIC8qIE8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAg
IHNMVFBfUTE1W10sICAgICAgICAgICAgIC8qIEkvTyAgTFRQIGZpbHRlciBzdGF0ZSAgICAgICAg
ICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIGRlbGF5ZWRHYWluX1ExMFtd
LCAgICAgIC8qIEkvTyAgR2FpbiBkZWxheSBidWZmZXIgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICBjb25zdCBvcHVzX2ludDE2ICAgIGFfUTEyW10sICAgICAgICAgICAgICAgIC8qIEkgICAgU2hv
cnQgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2
ICAgIGJfUTE0W10sICAgICAgICAgICAgICAgIC8qIEkgICAgTG9uZyB0ZXJtIHByZWRpY3Rpb24g
Y29lZnMgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgIEFSX3NocF9RMTNbXSwg
ICAgICAgICAgIC8qIEkgICAgTm9pc2Ugc2hhcGluZyBjb2VmcyAgICAgICAgICAgICAgICAgKi8K
LSAgICBvcHVzX2ludCAgICAgICAgICAgIGxhZywgICAgICAgICAgICAgICAgICAgIC8qIEkgICAg
UGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAg
ICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQsIC8qIEkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIFRpbHRfUTE0LCAg
ICAgICAgICAgICAgIC8qIEkgICAgU3BlY3RyYWwgdGlsdCAgICAgICAgICAgICAgICAgICAgICAg
Ki8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIExGX3NocF9RMTQsICAgICAgICAgICAgIC8qIEkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMy
ICAgICAgICAgIEdhaW5fUTE2LCAgICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIExhbWJkYV9R
MTAsICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIG9mZnNldF9RMTAsICAgICAgICAgICAgIC8q
IEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2lu
dCAgICAgICAgICAgIGxlbmd0aCwgICAgICAgICAgICAgICAgIC8qIEkgICAgSW5wdXQgbGVuZ3Ro
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHN1YmZy
LCAgICAgICAgICAgICAgICAgIC8qIEkgICAgU3ViZnJhbWUgbnVtYmVyICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHNoYXBpbmdMUENPcmRlciwgICAgICAg
IC8qIEkgICAgU2hhcGluZyBMUEMgZmlsdGVyIG9yZGVyICAgICAgICAgICAgKi8KLSAgICBvcHVz
X2ludCAgICAgICAgICAgIHByZWRpY3RMUENPcmRlciwgICAgICAgIC8qIEkgICAgUHJlZGljdGlv
biBmaWx0ZXIgb3JkZXIgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHdh
cnBpbmdfUTE2LCAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIG5TdGF0ZXNEZWxheWVkRGVjaXNp
b24sIC8qIEkgICAgTnVtYmVyIG9mIHN0YXRlcyBpbiBkZWNpc2lvbiB0cmVlICAgKi8KLSAgICBv
cHVzX2ludCAgICAgICAgICAgICpzbXBsX2J1Zl9pZHgsICAgICAgICAgIC8qIEkvTyAgSW5kZXgg
dG8gbmV3ZXN0IHNhbXBsZXMgaW4gYnVmZmVycyAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAg
IGRlY2lzaW9uRGVsYXkgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLSkKLXsKLSAgICBvcHVzX2ludCAgICAgaSwgaiwgaywgV2lubmVyX2lu
ZCwgUkRtaW5faW5kLCBSRG1heF9pbmQsIGxhc3Rfc21wbGVfaWR4OwotICAgIG9wdXNfaW50MzIg
ICBXaW5uZXJfcmFuZF9zdGF0ZTsKLSAgICBvcHVzX2ludDMyICAgTFRQX3ByZWRfUTE0LCBMUENf
cHJlZF9RMTQsIG5fQVJfUTE0LCBuX0xUUF9RMTQ7Ci0gICAgb3B1c19pbnQzMiAgIG5fTEZfUTE0
LCByX1ExMCwgcnJfUTEwLCByZDFfUTEwLCByZDJfUTEwLCBSRG1pbl9RMTAsIFJEbWF4X1ExMDsK
LSAgICBvcHVzX2ludDMyICAgcTFfUTAsIHExX1ExMCwgcTJfUTEwLCBleGNfUTE0LCBMUENfZXhj
X1ExNCwgeHFfUTE0LCBHYWluX1ExMDsKLSAgICBvcHVzX2ludDMyICAgdG1wMSwgdG1wMiwgc0xG
X0FSX3NocF9RMTQ7Ci0gICAgb3B1c19pbnQzMiAgICpwcmVkX2xhZ19wdHIsICpzaHBfbGFnX3B0
ciwgKnBzTFBDX1ExNDsKLSAgICBWQVJERUNMKCBOU1Ffc2FtcGxlX3BhaXIsIHBzU2FtcGxlU3Rh
dGUgKTsKLSAgICBOU1FfZGVsX2RlY19zdHJ1Y3QgKnBzREQ7Ci0gICAgTlNRX3NhbXBsZV9zdHJ1
Y3QgICpwc1NTOwotCi0gICAgX19tMTI4aSBhX1ExMl8wMTIzLCBhX1ExMl80NTY3LCBhX1ExMl84
OUFCLCBhX1ExMl9DREVGOwotICAgIF9fbTEyOGkgYl9RMTJfMDEyMywgYl9zcl9RMTJfMDEyMzsK
LSAgICBTQVZFX1NUQUNLOwotCi0gICAgc2lsa19hc3NlcnQoIG5TdGF0ZXNEZWxheWVkRGVjaXNp
b24gPiAwICk7Ci0gICAgQUxMT0MoIHBzU2FtcGxlU3RhdGUsIG5TdGF0ZXNEZWxheWVkRGVjaXNp
b24sIE5TUV9zYW1wbGVfcGFpciApOwotCi0gICAgc2hwX2xhZ19wdHIgID0gJk5TUS0+c0xUUF9z
aHBfUTE0WyBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSBsYWcgKyBIQVJNX1NIQVBFX0ZJUl9UQVBT
IC8gMiBdOwotICAgIHByZWRfbGFnX3B0ciA9ICZzTFRQX1ExNVsgTlNRLT5zTFRQX2J1Zl9pZHgg
LSBsYWcgKyBMVFBfT1JERVIgLyAyIF07Ci0gICAgR2Fpbl9RMTAgICAgID0gc2lsa19SU0hJRlQo
IEdhaW5fUTE2LCA2ICk7Ci0KLSAgICBhX1ExMl8wMTIzID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0
KCBhX1ExMiApOwotICAgIGFfUTEyXzQ1NjcgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoIGFfUTEy
ICsgNCApOwotCi0gICAgaWYoIG9wdXNfbGlrZWx5KCBwcmVkaWN0TFBDT3JkZXIgPT0gMTYgKSAp
IHsKLSAgICAgICAgYV9RMTJfODlBQiA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggYV9RMTIgKyA4
ICk7Ci0gICAgICAgIGFfUTEyX0NERUYgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoIGFfUTEyICsg
MTIgKTsKLSAgICB9Ci0KLSAgICBpZiggc2lnbmFsVHlwZSA9PSBUWVBFX1ZPSUNFRCApewotICAg
ICAgICBiX1ExMl8wMTIzID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCBiX1ExNCApOwotICAgICAg
ICBiX3NyX1ExMl8wMTIzID0gX21tX3NodWZmbGVfZXBpMzIoIGJfUTEyXzAxMjMsIF9NTV9TSFVG
RkxFKCAwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAg
IH0KLSAgICBmb3IoIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgIC8qIFBlcmZv
cm0gY29tbW9uIGNhbGN1bGF0aW9ucyB1c2VkIGluIGFsbCBzdGF0ZXMgKi8KLQotICAgICAgICAv
KiBMb25nLXRlcm0gcHJlZGljdGlvbiAqLwotICAgICAgICBpZiggc2lnbmFsVHlwZSA9PSBUWVBF
X1ZPSUNFRCApIHsKLSAgICAgICAgICAgIC8qIFVucm9sbGVkIGxvb3AgKi8KLSAgICAgICAgICAg
IC8qIEF2b2lkcyBpbnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVzZSBzaWxrX1NNTEFXQigpIGFsd2F5
cyByb3VuZHMgdG8gLWluZiAqLwotICAgICAgICAgICAgTFRQX3ByZWRfUTE0ID0gMjsKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBfX20xMjhpIHRtcGEsIHRtcGIsIHByZWRfbGFnX3B0
cl90bXA7Ci0gICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9sb2FkdV9z
aTEyOCggKF9fbTEyOGkgKikoJnByZWRfbGFnX3B0clsgLTMgXSApICk7Ci0gICAgICAgICAgICAg
ICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwcmVkX2xhZ19wdHJf
dG1wLCAweDFCICk7Ci0gICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgICAgICA9IF9tbV9t
dWxfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAsIGJfUTEyXzAxMjMgKTsKLSAgICAgICAgICAgICAg
ICB0bXBhICAgICAgICAgICAgICAgID0gX21tX3NybGlfc2kxMjgoIHRtcGEsIDIgKTsKLQotICAg
ICAgICAgICAgICAgIHByZWRfbGFnX3B0cl90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHJlZF9s
YWdfcHRyX3RtcCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOy8qIGVxdWFsIHNoaWZ0IHJp
Z2h0IDQgYnl0ZXMgKi8KLSAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21t
X211bF9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwgYl9zcl9RMTJfMDEyMyApOwotICAgICAgICAg
ICAgICAgIHByZWRfbGFnX3B0cl90bXAgICAgPSBfbW1fc3JsaV9zaTEyOCggcHJlZF9sYWdfcHRy
X3RtcCwgMiApOwotICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0cl90bXAgICAgPSBfbW1fYWRk
X2VwaTMyKCBwcmVkX2xhZ19wdHJfdG1wLCB0bXBhICk7Ci0KLSAgICAgICAgICAgICAgICB0bXBi
ID0gX21tX3NodWZmbGVfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAsIF9NTV9TSFVGRkxFKCAwLCAw
LCAzLCAyICkgKTsvKiBlcXVhbCBzaGlmdCByaWdodCA4IGJ5dGVzICovCi0gICAgICAgICAgICAg
ICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9hZGRfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAs
IHRtcGIgKTsKLSAgICAgICAgICAgICAgICBMVFBfcHJlZF9RMTQgICAgICAgICs9IF9tbV9jdnRz
aTEyOF9zaTMyKCBwcmVkX2xhZ19wdHJfdG1wICk7Ci0KLSAgICAgICAgICAgICAgICBMVFBfcHJl
ZF9RMTQgPSBzaWxrX1NNTEFXQiggTFRQX3ByZWRfUTE0LCBwcmVkX2xhZ19wdHJbIC00IF0sIGJf
UTE0WyA0IF0gKTsKLSAgICAgICAgICAgICAgICBMVFBfcHJlZF9RMTQgPSBzaWxrX0xTSElGVCgg
TFRQX3ByZWRfUTE0LCAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTMgLT4gUTE0
ICovCi0gICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyKys7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMVFBfcHJlZF9RMTQgPSAwOwotICAgICAgICB9Ci0K
LSAgICAgICAgLyogTG9uZy10ZXJtIHNoYXBpbmcgKi8KLSAgICAgICAgaWYoIGxhZyA+IDAgKSB7
Ci0gICAgICAgICAgICAvKiBTeW1tZXRyaWMsIHBhY2tlZCBGSVIgY29lZmZpY2llbnRzICovCi0g
ICAgICAgICAgICBuX0xUUF9RMTQgPSBzaWxrX1NNVUxXQiggc2lsa19BREQzMiggc2hwX2xhZ19w
dHJbIDAgXSwgc2hwX2xhZ19wdHJbIC0yIF0gKSwgSGFybVNoYXBlRklSUGFja2VkX1ExNCApOwot
ICAgICAgICAgICAgbl9MVFBfUTE0ID0gc2lsa19TTUxBV1QoIG5fTFRQX1ExNCwgc2hwX2xhZ19w
dHJbIC0xIF0sICAgICAgICAgICAgICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgKTsK
LSAgICAgICAgICAgIG5fTFRQX1ExNCA9IHNpbGtfU1VCX0xTSElGVDMyKCBMVFBfcHJlZF9RMTQs
IG5fTFRQX1ExNCwgMiApOyAgICAgICAgICAgIC8qIFExMiAtPiBRMTQgKi8KLSAgICAgICAgICAg
IHNocF9sYWdfcHRyKys7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuX0xUUF9RMTQg
PSAwOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIF9fbTEyOGkgdG1wYSwgdG1w
YiwgcHNMUENfUTE0X3RtcCwgYV9RMTJfdG1wOwotCi0gICAgICAgICAgICBmb3IoIGsgPSAwOyBr
IDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgewotICAgICAgICAgICAgICAgIC8qIERl
bGF5ZWQgZGVjaXNpb24gc3RhdGUgKi8KLSAgICAgICAgICAgICAgICBwc0REID0gJnBzRGVsRGVj
WyBrIF07Ci0KLSAgICAgICAgICAgICAgICAvKiBTYW1wbGUgc3RhdGUgKi8KLSAgICAgICAgICAg
ICAgICBwc1NTID0gcHNTYW1wbGVTdGF0ZVsgayBdOwotCi0gICAgICAgICAgICAgICAgLyogR2Vu
ZXJhdGUgZGl0aGVyICovCi0gICAgICAgICAgICAgICAgcHNERC0+U2VlZCA9IHNpbGtfUkFORCgg
cHNERC0+U2VlZCApOwotCi0gICAgICAgICAgICAgICAgLyogUG9pbnRlciB1c2VkIGluIHNob3J0
IHRlcm0gcHJlZGljdGlvbiBhbmQgc2hhcGluZyAqLwotICAgICAgICAgICAgICAgIHBzTFBDX1Ex
NCA9ICZwc0RELT5zTFBDX1ExNFsgTlNRX0xQQ19CVUZfTEVOR1RIIC0gMSArIGkgXTsKLSAgICAg
ICAgICAgICAgICAvKiBTaG9ydC10ZXJtIHByZWRpY3Rpb24gKi8KLSAgICAgICAgICAgICAgICBz
aWxrX2Fzc2VydCggcHJlZGljdExQQ09yZGVyID09IDEwIHx8IHByZWRpY3RMUENPcmRlciA9PSAx
NiApOwotICAgICAgICAgICAgICAgIC8qIEF2b2lkcyBpbnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVz
ZSBzaWxrX1NNTEFXQigpIGFsd2F5cyByb3VuZHMgdG8gLWluZiAqLwotICAgICAgICAgICAgICAg
IExQQ19wcmVkX1ExNCA9IHNpbGtfUlNISUZUKCBwcmVkaWN0TFBDT3JkZXIsIDEgKTsKLQotICAg
ICAgICAgICAgICAgIHRtcGIgPSBfbW1fc2V0emVyb19zaTEyOCgpOwotCi0gICAgICAgICAgICAg
ICAgLyogc3RlcCAxICovCi0gICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX2xv
YWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0WyAtMyBdICkgKTsgLyogLTMsIC0yICwg
LTEsIDAgKi8KLSAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fc2h1ZmZsZV9l
cGkzMiggcHNMUENfUTE0X3RtcCwgMHgxQiApOyAgICAgIC8qIDAsIC0xLCAtMiwgLTMgKi8KLSAg
ICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRf
dG1wLCBhX1ExMl8wMTIzICk7ICAgIC8qIDAsIC0xLCAtMiwgLTMgKiAwMTIzIC0+IDAqMCwgMiot
MiAqLwotCi0gICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX3NybGlfZXBpNjQo
IHRtcGEsIDE2ICk7Ci0gICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9l
cGkzMiggdG1wYiwgdG1wYSApOwotCi0gICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCA9IF9t
bV9zaHVmZmxlX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSAp
ICk7IC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KLSAgICAgICAgICAgICAgICBhX1Ex
Ml90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggYV9RMTJfMDEyMywgX01NX1NIVUZGTEUoMCwgMywg
MiwgMSApICk7IC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KLSAgICAgICAgICAgICAg
ICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBhX1ExMl90
bXAgKTsgLyogMSotMSwgMyotMyAqLwotICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9
IF9tbV9zcmxpX2VwaTY0KCBwc0xQQ19RMTRfdG1wLCAxNiApOwotICAgICAgICAgICAgICAgIHRt
cGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHBzTFBDX1ExNF90bXAgKTsKLQot
ICAgICAgICAgICAgICAgIC8qIHN0ZXAgMiAqLwotICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90
bXAgICA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJnBzTFBDX1ExNFsgLTcgXSApICk7
Ci0gICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3NodWZmbGVfZXBpMzIoIHBz
TFBDX1ExNF90bXAsIDB4MUIgKTsKLSAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBf
bW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBhX1ExMl80NTY3ICk7Ci0gICAgICAgICAgICAg
ICAgdG1wYSAgICAgICAgICAgID0gX21tX3NybGlfZXBpNjQoIHRtcGEsIDE2ICk7Ci0gICAgICAg
ICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgdG1wYSApOwot
Ci0gICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwc0xQ
Q19RMTRfdG1wLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8qIGVxdWFsIHNoaWZ0IHJp
Z2h0IDQgYnl0ZXMgKi8KLSAgICAgICAgICAgICAgICBhX1ExMl90bXAgPSBfbW1fc2h1ZmZsZV9l
cGkzMiggYV9RMTJfNDU2NywgX01NX1NIVUZGTEUoMCwgMywgMiwgMSApICk7IC8qIGVxdWFsIHNo
aWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KLSAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBf
bW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBhX1ExMl90bXAgKTsKLSAgICAgICAgICAgICAg
ICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fc3JsaV9lcGk2NCggcHNMUENfUTE0X3RtcCwgMTYgKTsK
LSAgICAgICAgICAgICAgICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCBw
c0xQQ19RMTRfdG1wICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIG9wdXNfbGlrZWx5KCBwcmVk
aWN0TFBDT3JkZXIgPT0gMTYgKSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAvKiBzdGVwIDMgKi8KLSAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0g
X21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0WyAtMTEgXSApICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwc0xQ
Q19RMTRfdG1wLCAweDFCICk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICA9
IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyXzg5QUIgKTsKLSAgICAgICAgICAg
ICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX3NybGlfZXBpNjQoIHRtcGEsIDE2ICk7Ci0g
ICAgICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIs
IHRtcGEgKTsKLQotICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wID0gX21tX3NodWZm
bGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsgLyog
ZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgICAgICBhX1ExMl90
bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggYV9RMTJfODlBQiwgX01NX1NIVUZGTEUoMCwgMywgMiwg
MSApICk7LyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgICAg
ICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBhX1ExMl90
bXAgKTsKLSAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3NybGlfZXBp
NjQoIHBzTFBDX1ExNF90bXAsIDE2ICk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGIgICAgICAg
ICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHBzTFBDX1ExNF90bXAgKTsKLQotICAgICAgICAg
ICAgICAgICAgICAvKiBzZXRwIDQgKi8KLSAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3Rt
cCAgID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0WyAtMTUgXSApICk7
Ci0gICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9zaHVmZmxlX2VwaTMy
KCBwc0xQQ19RMTRfdG1wLCAweDFCICk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGEgICAgICAg
ICAgICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyX0NERUYgKTsKLSAgICAg
ICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX3NybGlfZXBpNjQoIHRtcGEsIDE2
ICk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIo
IHRtcGIsIHRtcGEgKTsKLQotICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wID0gX21t
X3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkg
KTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgICAgICBh
X1ExMl90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggYV9RMTJfQ0RFRiwgX01NX1NIVUZGTEUoMCwg
MywgMiwgMSApICk7IC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KLSAgICAgICAgICAg
ICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3RtcCwg
YV9RMTJfdG1wICk7Ci0gICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9z
cmxpX2VwaTY0KCBwc0xQQ19RMTRfdG1wLCAxNiApOwotICAgICAgICAgICAgICAgICAgICB0bXBi
ICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCBwc0xQQ19RMTRfdG1wICk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IGxhc3QgKi8KLSAgICAgICAgICAgICAgICAgICAg
LyogZXF1YWwgc2hpZnQgcmlnaHQgOCBieXRlcyovCi0gICAgICAgICAgICAgICAgICAgIHRtcGEg
ICAgICAgICAgICA9IF9tbV9zaHVmZmxlX2VwaTMyKCB0bXBiLCBfTU1fU0hVRkZMRSggMCwgMCwg
MywgMiApICk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRf
ZXBpMzIoIHRtcGIsIHRtcGEgKTsKLSAgICAgICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ICAg
ICs9IF9tbV9jdnRzaTEyOF9zaTMyKCB0bXBiICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8q
IGFkZCBhdCBsYXN0ICovCi0gICAgICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICA9IF9t
bV9zaHVmZmxlX2VwaTMyKCB0bXBiLCBfTU1fU0hVRkZMRSggMCwgMCwgMywgMiApICk7IC8qIGVx
dWFsIHNoaWZ0IHJpZ2h0IDggYnl0ZXMqLwotICAgICAgICAgICAgICAgICAgICB0bXBiICAgICAg
ICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7Ci0gICAgICAgICAgICAgICAgICAg
IExQQ19wcmVkX1ExNCAgICArPSBfbW1fY3Z0c2kxMjhfc2kzMiggdG1wYiApOwotCi0gICAgICAg
ICAgICAgICAgICAgIExQQ19wcmVkX1ExNCA9IHNpbGtfU01MQVdCKCBMUENfcHJlZF9RMTQsIHBz
TFBDX1ExNFsgLTggXSwgYV9RMTJbIDggXSApOwotICAgICAgICAgICAgICAgICAgICBMUENfcHJl
ZF9RMTQgPSBzaWxrX1NNTEFXQiggTFBDX3ByZWRfUTE0LCBwc0xQQ19RMTRbIC05IF0sIGFfUTEy
WyA5IF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBMUENfcHJlZF9R
MTQgPSBzaWxrX0xTSElGVCggTFBDX3ByZWRfUTE0LCA0ICk7IC8qIFExMCAtPiBRMTQgKi8KLQot
ICAgICAgICAgICAgICAgIC8qIE5vaXNlIHNoYXBlIGZlZWRiYWNrICovCi0gICAgICAgICAgICAg
ICAgc2lsa19hc3NlcnQoICggc2hhcGluZ0xQQ09yZGVyICYgMSApID09IDAgKTsgICAvKiBjaGVj
ayB0aGF0IG9yZGVyIGlzIGV2ZW4gKi8KLSAgICAgICAgICAgICAgICAvKiBPdXRwdXQgb2YgbG93
cGFzcyBzZWN0aW9uICovCi0gICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfU01MQVdCKCBwc0xQ
Q19RMTRbIDAgXSwgcHNERC0+c0FSMl9RMTRbIDAgXSwgd2FycGluZ19RMTYgKTsKLSAgICAgICAg
ICAgICAgICAvKiBPdXRwdXQgb2YgYWxscGFzcyBzZWN0aW9uICovCi0gICAgICAgICAgICAgICAg
dG1wMSA9IHNpbGtfU01MQVdCKCBwc0RELT5zQVIyX1ExNFsgMCBdLCBwc0RELT5zQVIyX1ExNFsg
MSBdIC0gdG1wMiwgd2FycGluZ19RMTYgKTsKLSAgICAgICAgICAgICAgICBwc0RELT5zQVIyX1Ex
NFsgMCBdID0gdG1wMjsKLSAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfUlNISUZUKCBz
aGFwaW5nTFBDT3JkZXIsIDEgKTsKLSAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfU01M
QVdCKCBuX0FSX1ExNCwgdG1wMiwgQVJfc2hwX1ExM1sgMCBdICk7Ci0gICAgICAgICAgICAgICAg
LyogTG9vcCBvdmVyIGFsbHBhc3Mgc2VjdGlvbnMgKi8KLSAgICAgICAgICAgICAgICBmb3IoIGog
PSAyOyBqIDwgc2hhcGluZ0xQQ09yZGVyOyBqICs9IDIgKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8qIE91dHB1dCBvZiBhbGxwYXNzIHNlY3Rpb24gKi8KLSAgICAgICAgICAgICAgICAgICAgdG1w
MiA9IHNpbGtfU01MQVdCKCBwc0RELT5zQVIyX1ExNFsgaiAtIDEgXSwgcHNERC0+c0FSMl9RMTRb
IGogKyAwIF0gLSB0bXAxLCB3YXJwaW5nX1ExNiApOwotICAgICAgICAgICAgICAgICAgICBwc0RE
LT5zQVIyX1ExNFsgaiAtIDEgXSA9IHRtcDE7Ci0gICAgICAgICAgICAgICAgICAgIG5fQVJfUTE0
ID0gc2lsa19TTUxBV0IoIG5fQVJfUTE0LCB0bXAxLCBBUl9zaHBfUTEzWyBqIC0gMSBdICk7Ci0g
ICAgICAgICAgICAgICAgICAgIC8qIE91dHB1dCBvZiBhbGxwYXNzIHNlY3Rpb24gKi8KLSAgICAg
ICAgICAgICAgICAgICAgdG1wMSA9IHNpbGtfU01MQVdCKCBwc0RELT5zQVIyX1ExNFsgaiArIDAg
XSwgcHNERC0+c0FSMl9RMTRbIGogKyAxIF0gLSB0bXAyLCB3YXJwaW5nX1ExNiApOwotICAgICAg
ICAgICAgICAgICAgICBwc0RELT5zQVIyX1ExNFsgaiArIDAgXSA9IHRtcDI7Ci0gICAgICAgICAg
ICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19TTUxBV0IoIG5fQVJfUTE0LCB0bXAyLCBBUl9zaHBf
UTEzWyBqIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHNERC0+c0FS
Ml9RMTRbIHNoYXBpbmdMUENPcmRlciAtIDEgXSA9IHRtcDE7Ci0gICAgICAgICAgICAgICAgbl9B
Ul9RMTQgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTQsIHRtcDEsIEFSX3NocF9RMTNbIHNoYXBpbmdM
UENPcmRlciAtIDEgXSApOwotCi0gICAgICAgICAgICAgICAgbl9BUl9RMTQgPSBzaWxrX0xTSElG
VCggbl9BUl9RMTQsIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFExMSAtPiBRMTIgKi8KLSAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfU01MQVdCKCBu
X0FSX1ExNCwgcHNERC0+TEZfQVJfUTE0LCBUaWx0X1ExNCApOyAgICAgICAgICAgICAgLyogUTEy
ICovCi0gICAgICAgICAgICAgICAgbl9BUl9RMTQgPSBzaWxrX0xTSElGVCggbl9BUl9RMTQsIDIg
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMiAtPiBRMTQgKi8K
LQotICAgICAgICAgICAgICAgIG5fTEZfUTE0ID0gc2lsa19TTVVMV0IoIHBzREQtPlNoYXBlX1Ex
NFsgKnNtcGxfYnVmX2lkeCBdLCBMRl9zaHBfUTE0ICk7ICAgICAvKiBRMTIgKi8KLSAgICAgICAg
ICAgICAgICBuX0xGX1ExNCA9IHNpbGtfU01MQVdUKCBuX0xGX1ExNCwgcHNERC0+TEZfQVJfUTE0
LCBMRl9zaHBfUTE0ICk7ICAgICAgICAgICAgLyogUTEyICovCi0gICAgICAgICAgICAgICAgbl9M
Rl9RMTQgPSBzaWxrX0xTSElGVCggbl9MRl9RMTQsIDIgKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFExMiAtPiBRMTQgKi8KLQotICAgICAgICAgICAgICAgIC8qIElu
cHV0IG1pbnVzIHByZWRpY3Rpb24gcGx1cyBub2lzZSBmZWVkYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICAgICAgICAgICAgICAvKiByID0geFsgaSBdIC0gTFRQX3ByZWQgLSBMUENf
cHJlZCArIG5fQVIgKyBuX1RpbHQgKyBuX0xGICsgbl9MVFAgICovCi0gICAgICAgICAgICAgICAg
dG1wMSA9IHNpbGtfQUREMzIoIG5fQVJfUTE0LCBuX0xGX1ExNCApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFExNCAqLwotICAgICAgICAgICAgICAgIHRtcDIgPSBzaWxr
X0FERDMyKCBuX0xUUF9RMTQsIExQQ19wcmVkX1ExNCApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBRMTMgKi8KLSAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19TVUIzMiggdG1w
MiwgdG1wMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
UTEzICovCi0gICAgICAgICAgICAgICAgdG1wMSA9IHNpbGtfUlNISUZUX1JPVU5EKCB0bXAxLCA0
ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMCAqLwotCi0g
ICAgICAgICAgICAgICAgcl9RMTAgPSBzaWxrX1NVQjMyKCB4X1ExMFsgaSBdLCB0bXAxICk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2lkdWFsIGVycm9yIFExMCAq
LwotCi0gICAgICAgICAgICAgICAgLyogRmxpcCBzaWduIGRlcGVuZGluZyBvbiBkaXRoZXIgKi8K
LSAgICAgICAgICAgICAgICBpZiAoIHBzREQtPlNlZWQgPCAwICkgewotICAgICAgICAgICAgICAg
ICAgICByX1ExMCA9IC1yX1ExMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cl9RMTAgPSBzaWxrX0xJTUlUXzMyKCByX1ExMCwgLSgzMSA8PCAxMCksIDMwIDw8IDEwICk7Ci0K
LSAgICAgICAgICAgICAgICAvKiBGaW5kIHR3byBxdWFudGl6YXRpb24gbGV2ZWwgY2FuZGlkYXRl
cyBhbmQgbWVhc3VyZSB0aGVpciByYXRlLWRpc3RvcnRpb24gKi8KLSAgICAgICAgICAgICAgICBx
MV9RMTAgPSBzaWxrX1NVQjMyKCByX1ExMCwgb2Zmc2V0X1ExMCApOwotICAgICAgICAgICAgICAg
IHExX1EwID0gc2lsa19SU0hJRlQoIHExX1ExMCwgMTAgKTsKLSAgICAgICAgICAgICAgICBpZigg
cTFfUTAgPiAwICkgewotICAgICAgICAgICAgICAgICAgICBxMV9RMTAgID0gc2lsa19TVUIzMigg
c2lsa19MU0hJRlQoIHExX1EwLCAxMCApLCBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHExX1ExMCAgPSBzaWxrX0FERDMyKCBxMV9RMTAsIG9mZnNldF9RMTAg
KTsKLSAgICAgICAgICAgICAgICAgICAgcTJfUTEwICA9IHNpbGtfQUREMzIoIHExX1ExMCwgMTAy
NCApOwotICAgICAgICAgICAgICAgICAgICByZDFfUTEwID0gc2lsa19TTVVMQkIoIHExX1ExMCwg
TGFtYmRhX1ExMCApOwotICAgICAgICAgICAgICAgICAgICByZDJfUTEwID0gc2lsa19TTVVMQkIo
IHEyX1ExMCwgTGFtYmRhX1ExMCApOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiggcTFfUTAg
PT0gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgcTFfUTEwICA9IG9mZnNldF9RMTA7Ci0gICAg
ICAgICAgICAgICAgICAgIHEyX1ExMCAgPSBzaWxrX0FERDMyKCBxMV9RMTAsIDEwMjQgLSBRVUFO
VF9MRVZFTF9BREpVU1RfUTEwICk7Ci0gICAgICAgICAgICAgICAgICAgIHJkMV9RMTAgPSBzaWxr
X1NNVUxCQiggcTFfUTEwLCBMYW1iZGFfUTEwICk7Ci0gICAgICAgICAgICAgICAgICAgIHJkMl9R
MTAgPSBzaWxrX1NNVUxCQiggcTJfUTEwLCBMYW1iZGFfUTEwICk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmKCBxMV9RMCA9PSAtMSApIHsKLSAgICAgICAgICAgICAgICAgICAgcTJfUTEwICA9
IG9mZnNldF9RMTA7Ci0gICAgICAgICAgICAgICAgICAgIHExX1ExMCAgPSBzaWxrX1NVQjMyKCBx
Ml9RMTAsIDEwMjQgLSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJkMV9RMTAgPSBzaWxrX1NNVUxCQiggLXExX1ExMCwgTGFtYmRhX1ExMCApOwotICAgICAg
ICAgICAgICAgICAgICByZDJfUTEwID0gc2lsa19TTVVMQkIoICBxMl9RMTAsIExhbWJkYV9RMTAg
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgIC8qIHExX1EwIDwgLTEgKi8K
LSAgICAgICAgICAgICAgICAgICAgcTFfUTEwICA9IHNpbGtfQUREMzIoIHNpbGtfTFNISUZUKCBx
MV9RMCwgMTAgKSwgUVVBTlRfTEVWRUxfQURKVVNUX1ExMCApOwotICAgICAgICAgICAgICAgICAg
ICBxMV9RMTAgID0gc2lsa19BREQzMiggcTFfUTEwLCBvZmZzZXRfUTEwICk7Ci0gICAgICAgICAg
ICAgICAgICAgIHEyX1ExMCAgPSBzaWxrX0FERDMyKCBxMV9RMTAsIDEwMjQgKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmQxX1ExMCA9IHNpbGtfU01VTEJCKCAtcTFfUTEwLCBMYW1iZGFfUTEwICk7
Ci0gICAgICAgICAgICAgICAgICAgIHJkMl9RMTAgPSBzaWxrX1NNVUxCQiggLXEyX1ExMCwgTGFt
YmRhX1ExMCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBycl9RMTAgID0g
c2lsa19TVUIzMiggcl9RMTAsIHExX1ExMCApOwotICAgICAgICAgICAgICAgIHJkMV9RMTAgPSBz
aWxrX1JTSElGVCggc2lsa19TTUxBQkIoIHJkMV9RMTAsIHJyX1ExMCwgcnJfUTEwICksIDEwICk7
Ci0gICAgICAgICAgICAgICAgcnJfUTEwICA9IHNpbGtfU1VCMzIoIHJfUTEwLCBxMl9RMTAgKTsK
LSAgICAgICAgICAgICAgICByZDJfUTEwID0gc2lsa19SU0hJRlQoIHNpbGtfU01MQUJCKCByZDJf
UTEwLCBycl9RMTAsIHJyX1ExMCApLCAxMCApOwotCi0gICAgICAgICAgICAgICAgaWYoIHJkMV9R
MTAgPCByZDJfUTEwICkgewotICAgICAgICAgICAgICAgICAgICBwc1NTWyAwIF0uUkRfUTEwID0g
c2lsa19BREQzMiggcHNERC0+UkRfUTEwLCByZDFfUTEwICk7Ci0gICAgICAgICAgICAgICAgICAg
IHBzU1NbIDEgXS5SRF9RMTAgPSBzaWxrX0FERDMyKCBwc0RELT5SRF9RMTAsIHJkMl9RMTAgKTsK
LSAgICAgICAgICAgICAgICAgICAgcHNTU1sgMCBdLlFfUTEwICA9IHExX1ExMDsKLSAgICAgICAg
ICAgICAgICAgICAgcHNTU1sgMSBdLlFfUTEwICA9IHEyX1ExMDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwc1NTWyAwIF0uUkRfUTEwID0gc2lsa19BREQz
MiggcHNERC0+UkRfUTEwLCByZDJfUTEwICk7Ci0gICAgICAgICAgICAgICAgICAgIHBzU1NbIDEg
XS5SRF9RMTAgPSBzaWxrX0FERDMyKCBwc0RELT5SRF9RMTAsIHJkMV9RMTAgKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHNTU1sgMCBdLlFfUTEwICA9IHEyX1ExMDsKLSAgICAgICAgICAgICAgICAg
ICAgcHNTU1sgMSBdLlFfUTEwICA9IHExX1ExMDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAvKiBVcGRhdGUgc3RhdGVzIGZvciBiZXN0IHF1YW50aXphdGlvbiAqLwotCi0g
ICAgICAgICAgICAgICAgLyogUXVhbnRpemVkIGV4Y2l0YXRpb24gKi8KLSAgICAgICAgICAgICAg
ICBleGNfUTE0ID0gc2lsa19MU0hJRlQzMiggcHNTU1sgMCBdLlFfUTEwLCA0ICk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCBwc0RELT5TZWVkIDwgMCApIHsKLSAgICAgICAgICAgICAgICAgICAgZXhj
X1ExNCA9IC1leGNfUTE0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8q
IEFkZCBwcmVkaWN0aW9ucyAqLwotICAgICAgICAgICAgICAgIExQQ19leGNfUTE0ID0gc2lsa19B
REQzMiggZXhjX1ExNCwgTFRQX3ByZWRfUTE0ICk7Ci0gICAgICAgICAgICAgICAgeHFfUTE0ICAg
ICAgPSBzaWxrX0FERDMyKCBMUENfZXhjX1ExNCwgTFBDX3ByZWRfUTE0ICk7Ci0KLSAgICAgICAg
ICAgICAgICAvKiBVcGRhdGUgc3RhdGVzICovCi0gICAgICAgICAgICAgICAgc0xGX0FSX3NocF9R
MTQgICAgICAgICA9IHNpbGtfU1VCMzIoIHhxX1ExNCwgbl9BUl9RMTQgKTsKLSAgICAgICAgICAg
ICAgICBwc1NTWyAwIF0uc0xUUF9zaHBfUTE0ID0gc2lsa19TVUIzMiggc0xGX0FSX3NocF9RMTQs
IG5fTEZfUTE0ICk7Ci0gICAgICAgICAgICAgICAgcHNTU1sgMCBdLkxGX0FSX1ExNCAgICA9IHNM
Rl9BUl9zaHBfUTE0OwotICAgICAgICAgICAgICAgIHBzU1NbIDAgXS5MUENfZXhjX1ExNCAgPSBM
UENfZXhjX1ExNDsKLSAgICAgICAgICAgICAgICBwc1NTWyAwIF0ueHFfUTE0ICAgICAgID0geHFf
UTE0OwotCi0gICAgICAgICAgICAgICAgLyogVXBkYXRlIHN0YXRlcyBmb3Igc2Vjb25kIGJlc3Qg
cXVhbnRpemF0aW9uICovCi0KLSAgICAgICAgICAgICAgICAvKiBRdWFudGl6ZWQgZXhjaXRhdGlv
biAqLwotICAgICAgICAgICAgICAgIGV4Y19RMTQgPSBzaWxrX0xTSElGVDMyKCBwc1NTWyAxIF0u
UV9RMTAsIDQgKTsKLSAgICAgICAgICAgICAgICBpZiAoIHBzREQtPlNlZWQgPCAwICkgewotICAg
ICAgICAgICAgICAgICAgICBleGNfUTE0ID0gLWV4Y19RMTQ7Ci0gICAgICAgICAgICAgICAgfQot
Ci0KLSAgICAgICAgICAgICAgICAvKiBBZGQgcHJlZGljdGlvbnMgKi8KLSAgICAgICAgICAgICAg
ICBMUENfZXhjX1ExNCA9IHNpbGtfQUREMzIoIGV4Y19RMTQsIExUUF9wcmVkX1ExNCApOwotICAg
ICAgICAgICAgICAgIHhxX1ExNCAgICAgID0gc2lsa19BREQzMiggTFBDX2V4Y19RMTQsIExQQ19w
cmVkX1ExNCApOwotCi0gICAgICAgICAgICAgICAgLyogVXBkYXRlIHN0YXRlcyAqLwotICAgICAg
ICAgICAgICAgIHNMRl9BUl9zaHBfUTE0ICAgICAgICAgPSBzaWxrX1NVQjMyKCB4cV9RMTQsIG5f
QVJfUTE0ICk7Ci0gICAgICAgICAgICAgICAgcHNTU1sgMSBdLnNMVFBfc2hwX1ExNCA9IHNpbGtf
U1VCMzIoIHNMRl9BUl9zaHBfUTE0LCBuX0xGX1ExNCApOwotICAgICAgICAgICAgICAgIHBzU1Nb
IDEgXS5MRl9BUl9RMTQgICAgPSBzTEZfQVJfc2hwX1ExNDsKLSAgICAgICAgICAgICAgICBwc1NT
WyAxIF0uTFBDX2V4Y19RMTQgID0gTFBDX2V4Y19RMTQ7Ci0gICAgICAgICAgICAgICAgcHNTU1sg
MSBdLnhxX1ExNCAgICAgICA9IHhxX1ExNDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICAqc21wbF9idWZfaWR4ICA9ICggKnNtcGxfYnVmX2lkeCAtIDEgKSAlIERFQ0lTSU9OX0RF
TEFZOwotICAgICAgICBpZiggKnNtcGxfYnVmX2lkeCA8IDAgKSAqc21wbF9idWZfaWR4ICs9IERF
Q0lTSU9OX0RFTEFZOwotICAgICAgICBsYXN0X3NtcGxlX2lkeCA9ICggKnNtcGxfYnVmX2lkeCAr
IGRlY2lzaW9uRGVsYXkgKSAlIERFQ0lTSU9OX0RFTEFZOwotCi0gICAgICAgIC8qIEZpbmQgd2lu
bmVyICovCi0gICAgICAgIFJEbWluX1ExMCA9IHBzU2FtcGxlU3RhdGVbIDAgXVsgMCBdLlJEX1Ex
MDsKLSAgICAgICAgV2lubmVyX2luZCA9IDA7Ci0gICAgICAgIGZvciggayA9IDE7IGsgPCBuU3Rh
dGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7Ci0gICAgICAgICAgICBpZiggcHNTYW1wbGVTdGF0
ZVsgayBdWyAwIF0uUkRfUTEwIDwgUkRtaW5fUTEwICkgewotICAgICAgICAgICAgICAgIFJEbWlu
X1ExMCAgPSBwc1NhbXBsZVN0YXRlWyBrIF1bIDAgXS5SRF9RMTA7Ci0gICAgICAgICAgICAgICAg
V2lubmVyX2luZCA9IGs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBJ
bmNyZWFzZSBSRCB2YWx1ZXMgb2YgZXhwaXJlZCBzdGF0ZXMgKi8KLSAgICAgICAgV2lubmVyX3Jh
bmRfc3RhdGUgPSBwc0RlbERlY1sgV2lubmVyX2luZCBdLlJhbmRTdGF0ZVsgbGFzdF9zbXBsZV9p
ZHggXTsKLSAgICAgICAgZm9yKCBrID0gMDsgayA8IG5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsr
KyApIHsKLSAgICAgICAgICAgIGlmKCBwc0RlbERlY1sgayBdLlJhbmRTdGF0ZVsgbGFzdF9zbXBs
ZV9pZHggXSAhPSBXaW5uZXJfcmFuZF9zdGF0ZSApIHsKLSAgICAgICAgICAgICAgICBwc1NhbXBs
ZVN0YXRlWyBrIF1bIDAgXS5SRF9RMTAgPSBzaWxrX0FERDMyKCBwc1NhbXBsZVN0YXRlWyBrIF1b
IDAgXS5SRF9RMTAsIHNpbGtfaW50MzJfTUFYID4+IDQgKTsKLSAgICAgICAgICAgICAgICBwc1Nh
bXBsZVN0YXRlWyBrIF1bIDEgXS5SRF9RMTAgPSBzaWxrX0FERDMyKCBwc1NhbXBsZVN0YXRlWyBr
IF1bIDEgXS5SRF9RMTAsIHNpbGtfaW50MzJfTUFYID4+IDQgKTsKLSAgICAgICAgICAgICAgICBz
aWxrX2Fzc2VydCggcHNTYW1wbGVTdGF0ZVsgayBdWyAwIF0uUkRfUTEwID49IDAgKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qIEZpbmQgd29yc3QgaW4gZmlyc3Qgc2V0
IGFuZCBiZXN0IGluIHNlY29uZCBzZXQgKi8KLSAgICAgICAgUkRtYXhfUTEwICA9IHBzU2FtcGxl
U3RhdGVbIDAgXVsgMCBdLlJEX1ExMDsKLSAgICAgICAgUkRtaW5fUTEwICA9IHBzU2FtcGxlU3Rh
dGVbIDAgXVsgMSBdLlJEX1ExMDsKLSAgICAgICAgUkRtYXhfaW5kID0gMDsKLSAgICAgICAgUkRt
aW5faW5kID0gMDsKLSAgICAgICAgZm9yKCBrID0gMTsgayA8IG5TdGF0ZXNEZWxheWVkRGVjaXNp
b247IGsrKyApIHsKLSAgICAgICAgICAgIC8qIGZpbmQgd29yc3QgaW4gZmlyc3Qgc2V0ICovCi0g
ICAgICAgICAgICBpZiggcHNTYW1wbGVTdGF0ZVsgayBdWyAwIF0uUkRfUTEwID4gUkRtYXhfUTEw
ICkgewotICAgICAgICAgICAgICAgIFJEbWF4X1ExMCAgPSBwc1NhbXBsZVN0YXRlWyBrIF1bIDAg
XS5SRF9RMTA7Ci0gICAgICAgICAgICAgICAgUkRtYXhfaW5kID0gazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8qIGZpbmQgYmVzdCBpbiBzZWNvbmQgc2V0ICovCi0gICAgICAgICAgICBp
ZiggcHNTYW1wbGVTdGF0ZVsgayBdWyAxIF0uUkRfUTEwIDwgUkRtaW5fUTEwICkgewotICAgICAg
ICAgICAgICAgIFJEbWluX1ExMCAgPSBwc1NhbXBsZVN0YXRlWyBrIF1bIDEgXS5SRF9RMTA7Ci0g
ICAgICAgICAgICAgICAgUkRtaW5faW5kID0gazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIC8qIFJlcGxhY2UgYSBzdGF0ZSBpZiBiZXN0IGZyb20gc2Vjb25kIHNldCBvdXRw
ZXJmb3JtcyB3b3JzdCBpbiBmaXJzdCBzZXQgKi8KLSAgICAgICAgaWYoIFJEbWluX1ExMCA8IFJE
bWF4X1ExMCApIHsKLSAgICAgICAgICAgIHNpbGtfbWVtY3B5KCAoIChvcHVzX2ludDMyICopJnBz
RGVsRGVjWyBSRG1heF9pbmQgXSApICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoIChv
cHVzX2ludDMyICopJnBzRGVsRGVjWyBSRG1pbl9pbmQgXSApICsgaSwgc2l6ZW9mKCBOU1FfZGVs
X2RlY19zdHJ1Y3QgKSAtIGkgKiBzaXplb2YoIG9wdXNfaW50MzIpICk7Ci0gICAgICAgICAgICBz
aWxrX21lbWNweSggJnBzU2FtcGxlU3RhdGVbIFJEbWF4X2luZCBdWyAwIF0sICZwc1NhbXBsZVN0
YXRlWyBSRG1pbl9pbmQgXVsgMSBdLCBzaXplb2YoIE5TUV9zYW1wbGVfc3RydWN0ICkgKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8qIFdyaXRlIHNhbXBsZXMgZnJvbSB3aW5uZXIgdG8gb3V0cHV0
IGFuZCBsb25nLXRlcm0gZmlsdGVyIHN0YXRlcyAqLwotICAgICAgICBwc0REID0gJnBzRGVsRGVj
WyBXaW5uZXJfaW5kIF07Ci0gICAgICAgIGlmKCBzdWJmciA+IDAgfHwgaSA+PSBkZWNpc2lvbkRl
bGF5ICkgewotICAgICAgICAgICAgcHVsc2VzWyAgaSAtIGRlY2lzaW9uRGVsYXkgXSA9IChvcHVz
X2ludDgpc2lsa19SU0hJRlRfUk9VTkQoIHBzREQtPlFfUTEwWyBsYXN0X3NtcGxlX2lkeCBdLCAx
MCApOwotICAgICAgICAgICAgeHFbIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1c19pbnQxNilz
aWxrX1NBVDE2KCBzaWxrX1JTSElGVF9ST1VORCgKLSAgICAgICAgICAgICAgICBzaWxrX1NNVUxX
VyggcHNERC0+WHFfUTE0WyBsYXN0X3NtcGxlX2lkeCBdLCBkZWxheWVkR2Fpbl9RMTBbIGxhc3Rf
c21wbGVfaWR4IF0gKSwgOCApICk7Ci0gICAgICAgICAgICBOU1EtPnNMVFBfc2hwX1ExNFsgTlNR
LT5zTFRQX3NocF9idWZfaWR4IC0gZGVjaXNpb25EZWxheSBdID0gcHNERC0+U2hhcGVfUTE0WyBs
YXN0X3NtcGxlX2lkeCBdOwotICAgICAgICAgICAgc0xUUF9RMTVbICAgICAgICAgIE5TUS0+c0xU
UF9idWZfaWR4ICAgICAtIGRlY2lzaW9uRGVsYXkgXSA9IHBzREQtPlByZWRfUTE1WyAgbGFzdF9z
bXBsZV9pZHggXTsKLSAgICAgICAgfQotICAgICAgICBOU1EtPnNMVFBfc2hwX2J1Zl9pZHgrKzsK
LSAgICAgICAgTlNRLT5zTFRQX2J1Zl9pZHgrKzsKLQotICAgICAgICAvKiBVcGRhdGUgc3RhdGVz
ICovCi0gICAgICAgIGZvciggayA9IDA7IGsgPCBuU3RhdGVzRGVsYXllZERlY2lzaW9uOyBrKysg
KSB7Ci0gICAgICAgICAgICBwc0REICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gJnBzRGVsRGVjWyBrIF07Ci0gICAgICAgICAgICBwc1NTICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gJnBzU2FtcGxlU3RhdGVbIGsgXVsgMCBdOwotICAgICAgICAgICAg
cHNERC0+TEZfQVJfUTE0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBzU1MtPkxGX0FSX1Ex
NDsKLSAgICAgICAgICAgIHBzREQtPnNMUENfUTE0WyBOU1FfTFBDX0JVRl9MRU5HVEggKyBpIF0g
PSBwc1NTLT54cV9RMTQ7Ci0gICAgICAgICAgICBwc0RELT5YcV9RMTRbICAgICpzbXBsX2J1Zl9p
ZHggXSAgICAgICAgID0gcHNTUy0+eHFfUTE0OwotICAgICAgICAgICAgcHNERC0+UV9RMTBbICAg
ICAqc21wbF9idWZfaWR4IF0gICAgICAgICA9IHBzU1MtPlFfUTEwOwotICAgICAgICAgICAgcHNE
RC0+UHJlZF9RMTVbICAqc21wbF9idWZfaWR4IF0gICAgICAgICA9IHNpbGtfTFNISUZUMzIoIHBz
U1MtPkxQQ19leGNfUTE0LCAxICk7Ci0gICAgICAgICAgICBwc0RELT5TaGFwZV9RMTRbICpzbXBs
X2J1Zl9pZHggXSAgICAgICAgID0gcHNTUy0+c0xUUF9zaHBfUTE0OwotICAgICAgICAgICAgcHNE
RC0+U2VlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNpbGtfQUREMzJfb3ZmbHco
IHBzREQtPlNlZWQsIHNpbGtfUlNISUZUX1JPVU5EKCBwc1NTLT5RX1ExMCwgMTAgKSApOwotICAg
ICAgICAgICAgcHNERC0+UmFuZFN0YXRlWyAqc21wbF9idWZfaWR4IF0gICAgICAgICA9IHBzREQt
PlNlZWQ7Ci0gICAgICAgICAgICBwc0RELT5SRF9RMTAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcHNTUy0+UkRfUTEwOwotICAgICAgICB9Ci0gICAgICAgIGRlbGF5ZWRHYWluX1ExMFsg
ICAgICpzbXBsX2J1Zl9pZHggXSAgICAgICAgID0gR2Fpbl9RMTA7Ci0gICAgfQotICAgIC8qIFVw
ZGF0ZSBMUEMgc3RhdGVzICovCi0gICAgZm9yKCBrID0gMDsgayA8IG5TdGF0ZXNEZWxheWVkRGVj
aXNpb247IGsrKyApIHsKLSAgICAgICAgcHNERCA9ICZwc0RlbERlY1sgayBdOwotICAgICAgICBz
aWxrX21lbWNweSggcHNERC0+c0xQQ19RMTQsICZwc0RELT5zTFBDX1ExNFsgbGVuZ3RoIF0sIE5T
UV9MUENfQlVGX0xFTkdUSCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7Ci0gICAgfQotICAgIFJF
U1RPUkVfU1RBQ0s7Ci19Ci0KLXN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbnNxX2RlbF9k
ZWNfc2NhbGVfc3RhdGVzX3NzZTRfMSgKLSAgICBjb25zdCBzaWxrX2VuY29kZXJfc3RhdGUgKnBz
RW5jQywgICAgICAgICAgICAgICAvKiBJICAgIEVuY29kZXIgU3RhdGUgICAgICAgICAgICAgICAg
ICAgICAgICovCi0gICAgc2lsa19uc3Ffc3RhdGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAg
ICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IE5TUV9kZWxfZGVjX3N0cnVjdCAgcHNEZWxEZWNbXSwgICAgICAgICAgICAgICAgIC8qIEkvTyAg
RGVsYXllZCBkZWNpc2lvbiBzdGF0ZXMgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2lu
dDMyICAgIHhfUTNbXSwgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIElucHV0IGluIFEzICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAgICB4X3NjX1Ex
MFtdLCAgICAgICAgICAgICAgICAgLyogTyAgICBJbnB1dCBzY2FsZWQgd2l0aCAxL0dhaW4gaW4g
UTEwICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgc0xUUFtdLCAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgUmUtd2hpdGVuZWQgTFRQIHN0YXRlIGluIFEwICAgICAgICAgKi8KLSAg
ICBvcHVzX2ludDMyICAgICAgICAgIHNMVFBfUTE1W10sICAgICAgICAgICAgICAgICAvKiBPICAg
IExUUCBzdGF0ZSBtYXRjaGluZyBzY2FsZWQgaW5wdXQgICAgICovCi0gICAgb3B1c19pbnQgICAg
ICAgICAgICBzdWJmciwgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBTdWJmcmFtZSBudW1i
ZXIgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgblN0YXRl
c0RlbGF5ZWREZWNpc2lvbiwgICAgIC8qIEkgICAgTnVtYmVyIG9mIGRlbCBkZWMgc3RhdGVzICAg
ICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgIExUUF9zY2FsZV9RMTQsICAgICAg
ICAgICAgICAvKiBJICAgIExUUCBzdGF0ZSBzY2FsaW5nICAgICAgICAgICAgICAgICAgICovCi0g
ICAgY29uc3Qgb3B1c19pbnQzMiAgICBHYWluc19RMTZbIE1BWF9OQl9TVUJGUiBdLCAgLyogSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNf
aW50ICAgICAgcGl0Y2hMWyBNQVhfTkJfU1VCRlIgXSwgICAgIC8qIEkgICAgUGl0Y2ggbGFnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgIHNpZ25h
bF90eXBlLCAgICAgICAgICAgICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAg
ICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICBkZWNpc2lvbkRlbGF5ICAgICAg
ICAgICAgICAgLyogSSAgICBEZWNpc2lvbiBkZWxheSAgICAgICAgICAgICAgICAgICAgICAqLwot
KQotewotICAgIG9wdXNfaW50ICAgICAgICAgICAgaSwgaywgbGFnOwotICAgIG9wdXNfaW50MzIg
ICAgICAgICAgZ2Fpbl9hZGpfUTE2LCBpbnZfZ2Fpbl9RMzEsIGludl9nYWluX1EyMzsKLSAgICBO
U1FfZGVsX2RlY19zdHJ1Y3QgICpwc0REOwotICAgIF9fbTEyOGkgeG1tX2ludl9nYWluX1EyMywg
eG1tX3hfUTNfeDJ4MCwgeG1tX3hfUTNfeDN4MTsKLQotICAgIGxhZyAgICAgICAgICA9IHBpdGNo
TFsgc3ViZnIgXTsKLSAgICBpbnZfZ2Fpbl9RMzEgPSBzaWxrX0lOVkVSU0UzMl92YXJRKCBzaWxr
X21heCggR2FpbnNfUTE2WyBzdWJmciBdLCAxICksIDQ3ICk7Ci0KLSAgICBzaWxrX2Fzc2VydCgg
aW52X2dhaW5fUTMxICE9IDAgKTsKLQotICAgIC8qIENhbGN1bGF0ZSBnYWluIGFkanVzdG1lbnQg
ZmFjdG9yICovCi0gICAgaWYoIEdhaW5zX1ExNlsgc3ViZnIgXSAhPSBOU1EtPnByZXZfZ2Fpbl9R
MTYgKSB7Ci0gICAgICAgIGdhaW5fYWRqX1ExNiA9ICBzaWxrX0RJVjMyX3ZhclEoIE5TUS0+cHJl
dl9nYWluX1ExNiwgR2FpbnNfUTE2WyBzdWJmciBdLCAxNiApOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGdhaW5fYWRqX1ExNiA9IChvcHVzX2ludDMyKTEgPDwgMTY7Ci0gICAgfQotCi0gICAgLyog
U2NhbGUgaW5wdXQgKi8KLSAgICBpbnZfZ2Fpbl9RMjMgPSBzaWxrX1JTSElGVF9ST1VORCggaW52
X2dhaW5fUTMxLCA4ICk7Ci0KLSAgICAvKiBwcmVwYXJlIGludl9nYWluX1EyMyBpbiBwYWNrZWQg
NCAzMi1iaXRzICovCi0gICAgeG1tX2ludl9nYWluX1EyMyA9IF9tbV9zZXQxX2VwaTMyKGludl9n
YWluX1EyMyk7Ci0KLSAgICBmb3IoIGkgPSAwOyBpIDwgcHNFbmNDLT5zdWJmcl9sZW5ndGggLSAz
OyBpICs9IDQgKSB7Ci0gICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fbG9hZHVfc2kxMjgoIChf
X20xMjhpICopKCYoeF9RM1sgaSBdICkgKSApOwotICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdo
dCA0IGJ5dGVzKi8KLSAgICAgICAgeG1tX3hfUTNfeDN4MSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4
bW1feF9RM194MngwLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7Ci0KLSAgICAgICAgeG1t
X3hfUTNfeDJ4MCA9IF9tbV9tdWxfZXBpMzIoIHhtbV94X1EzX3gyeDAsIHhtbV9pbnZfZ2Fpbl9R
MjMgKTsKLSAgICAgICAgeG1tX3hfUTNfeDN4MSA9IF9tbV9tdWxfZXBpMzIoIHhtbV94X1EzX3gz
eDEsIHhtbV9pbnZfZ2Fpbl9RMjMgKTsKLQotICAgICAgICB4bW1feF9RM194MngwID0gX21tX3Ny
bGlfZXBpNjQoIHhtbV94X1EzX3gyeDAsIDE2ICk7Ci0gICAgICAgIHhtbV94X1EzX3gzeDEgPSBf
bW1fc2xsaV9lcGk2NCggeG1tX3hfUTNfeDN4MSwgMTYgKTsKLQotICAgICAgICB4bW1feF9RM194
MngwID0gX21tX2JsZW5kX2VwaTE2KCB4bW1feF9RM194MngwLCB4bW1feF9RM194M3gxLCAweEND
ICk7Ci0KLSAgICAgICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJih4X3NjX1ExMFsg
aSBdKSksIHhtbV94X1EzX3gyeDAgKTsKLSAgICB9Ci0KLSAgICBmb3IoIDsgaSA8IHBzRW5jQy0+
c3ViZnJfbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgIHhfc2NfUTEwWyBpIF0gPSBzaWxrX1NNVUxX
VyggeF9RM1sgaSBdLCBpbnZfZ2Fpbl9RMjMgKTsKLSAgICB9Ci0KLSAgICAvKiBTYXZlIGludmVy
c2UgZ2FpbiAqLwotICAgIE5TUS0+cHJldl9nYWluX1ExNiA9IEdhaW5zX1ExNlsgc3ViZnIgXTsK
LQotICAgIC8qIEFmdGVyIHJld2hpdGVuaW5nIHRoZSBMVFAgc3RhdGUgaXMgdW4tc2NhbGVkLCBz
byBzY2FsZSB3aXRoIGludl9nYWluX1ExNiAqLwotICAgIGlmKCBOU1EtPnJld2hpdGVfZmxhZyAp
IHsKLSAgICAgICAgaWYoIHN1YmZyID09IDAgKSB7Ci0gICAgICAgICAgICAvKiBEbyBMVFAgZG93
bnNjYWxpbmcgKi8KLSAgICAgICAgICAgIGludl9nYWluX1EzMSA9IHNpbGtfTFNISUZUKCBzaWxr
X1NNVUxXQiggaW52X2dhaW5fUTMxLCBMVFBfc2NhbGVfUTE0ICksIDIgKTsKLSAgICAgICAgfQot
ICAgICAgICBmb3IoIGkgPSBOU1EtPnNMVFBfYnVmX2lkeCAtIGxhZyAtIExUUF9PUkRFUiAvIDI7
IGkgPCBOU1EtPnNMVFBfYnVmX2lkeDsgaSsrICkgewotICAgICAgICAgICAgc2lsa19hc3NlcnQo
IGkgPCBNQVhfRlJBTUVfTEVOR1RIICk7Ci0gICAgICAgICAgICBzTFRQX1ExNVsgaSBdID0gc2ls
a19TTVVMV0IoIGludl9nYWluX1EzMSwgc0xUUFsgaSBdICk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvKiBBZGp1c3QgZm9yIGNoYW5naW5nIGdhaW4gKi8KLSAgICBpZiggZ2Fpbl9hZGpfUTE2
ICE9IChvcHVzX2ludDMyKTEgPDwgMTYgKSB7Ci0gICAgICAgIC8qIFNjYWxlIGxvbmctdGVybSBz
aGFwaW5nIHN0YXRlICovCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fbTEyOGkgeG1tX2dhaW5f
YWRqX1ExNiwgeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1fc0xUUF9zaHBfUTE0X3gzeDE7Ci0K
LSAgICAgICAgICAgIC8qIHByZXBhcmUgZ2Fpbl9hZGpfUTE2IGluIHBhY2tlZCA0IDMyLWJpdHMg
Ki8KLSAgICAgICAgICAgIHhtbV9nYWluX2Fkal9RMTYgPSBfbW1fc2V0MV9lcGkzMiggZ2Fpbl9h
ZGpfUTE2ICk7Ci0KLSAgICAgICAgICAgIGZvciggaSA9IE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAt
IHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7IGkgPCBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSAzOyBp
ICs9IDQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRf
eDJ4MCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJihOU1EtPnNMVFBfc2hwX1ExNFsg
aSBdICkgKSApOwotICAgICAgICAgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMq
LwotICAgICAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDN4MSA9IF9tbV9zaHVmZmxlX2Vw
aTMyKCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsK
LQotICAgICAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCA9IF9tbV9tdWxfZXBpMzIo
IHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgeG1tX2dhaW5fYWRqX1ExNiApOwotICAgICAgICAgICAg
ICAgIHhtbV9zTFRQX3NocF9RMTRfeDN4MSA9IF9tbV9tdWxfZXBpMzIoIHhtbV9zTFRQX3NocF9R
MTRfeDN4MSwgeG1tX2dhaW5fYWRqX1ExNiApOwotCi0gICAgICAgICAgICAgICAgeG1tX3NMVFBf
c2hwX1ExNF94MngwID0gX21tX3NybGlfZXBpNjQoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgMTYg
KTsKLSAgICAgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gzeDEgPSBfbW1fc2xsaV9lcGk2
NCggeG1tX3NMVFBfc2hwX1ExNF94M3gxLCAxNiApOwotCi0gICAgICAgICAgICAgICAgeG1tX3NM
VFBfc2hwX1ExNF94MngwID0gX21tX2JsZW5kX2VwaTE2KCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAs
IHhtbV9zTFRQX3NocF9RMTRfeDN4MSwgMHhDQyApOwotCi0gICAgICAgICAgICAgICAgX21tX3N0
b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJihOU1EtPnNMVFBfc2hwX1ExNFsgaSBdICkgKSwgeG1t
X3NMVFBfc2hwX1ExNF94MngwICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvcigg
OyBpIDwgTlNRLT5zTFRQX3NocF9idWZfaWR4OyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgTlNR
LT5zTFRQX3NocF9RMTRbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIE5TUS0+c0xU
UF9zaHBfUTE0WyBpIF0gKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogU2NhbGUg
bG9uZy10ZXJtIHByZWRpY3Rpb24gc3RhdGUgKi8KLSAgICAgICAgICAgIGlmKCBzaWduYWxfdHlw
ZSA9PSBUWVBFX1ZPSUNFRCAmJiBOU1EtPnJld2hpdGVfZmxhZyA9PSAwICkgewotICAgICAgICAg
ICAgICAgIGZvciggaSA9IE5TUS0+c0xUUF9idWZfaWR4IC0gbGFnIC0gTFRQX09SREVSIC8gMjsg
aSA8IE5TUS0+c0xUUF9idWZfaWR4IC0gZGVjaXNpb25EZWxheTsgaSsrICkgewotICAgICAgICAg
ICAgICAgICAgICBzTFRQX1ExNVsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgc0xU
UF9RMTVbIGkgXSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgZm9yKCBrID0gMDsgayA8IG5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsrKyApIHsKLSAg
ICAgICAgICAgICAgICBwc0REID0gJnBzRGVsRGVjWyBrIF07Ci0KLSAgICAgICAgICAgICAgICAv
KiBTY2FsZSBzY2FsYXIgc3RhdGVzICovCi0gICAgICAgICAgICAgICAgcHNERC0+TEZfQVJfUTE0
ID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgcHNERC0+TEZfQVJfUTE0ICk7Ci0KLSAgICAg
ICAgICAgICAgICAvKiBTY2FsZSBzaG9ydC10ZXJtIHByZWRpY3Rpb24gYW5kIHNoYXBpbmcgc3Rh
dGVzICovCi0gICAgICAgICAgICAgICAgZm9yKCBpID0gMDsgaSA8IE5TUV9MUENfQlVGX0xFTkdU
SDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBwc0RELT5zTFBDX1ExNFsgaSBdID0gc2ls
a19TTVVMV1coIGdhaW5fYWRqX1ExNiwgcHNERC0+c0xQQ19RMTRbIGkgXSApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgTUFYX1NIQVBFX0xQQ19P
UkRFUjsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBwc0RELT5zQVIyX1ExNFsgaSBdID0g
c2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgcHNERC0+c0FSMl9RMTRbIGkgXSApOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgREVDSVNJT05fREVM
QVk7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgcHNERC0+UHJlZF9RMTVbICBpIF0gPSBz
aWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBwc0RELT5QcmVkX1ExNVsgIGkgXSApOwotICAgICAg
ICAgICAgICAgICAgICBwc0RELT5TaGFwZV9RMTRbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fk
al9RMTYsIHBzREQtPlNoYXBlX1ExNFsgaSBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1FfZGVs
X2RlY19zc2U0XzEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay94ODYvTlNRX2RlbF9kZWNfc3NlNF8xLmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmM3NWVkZTJkZGU4Y2JjZjA5YmM0ZTE3YmMxYmVmODkwZGFiOTM0NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay94ODYvTlNRX2RlbF9kZWNfc3NlNF8xLmMKQEAgLTAsMCArMSw4NTkgQEAKKy8qIENv
cHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5DCisgICBXcml0dGVuIGJ5IFhpYW5n
TWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZworCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICAgYXJlIG1ldDoKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgor
ICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZkZWYgSEFWRV9D
T05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDx4bW1pbnRy
aW4uaD4KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyNp
bmNsdWRlICJtYWluLmgiCisjaW5jbHVkZSAiY2VsdC94ODYveDg2Y3B1LmgiCisKKyNpbmNsdWRl
ICJzdGFja19hbGxvYy5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgb3B1c19pbnQzMiBzTFBD
X1ExNFsgTUFYX1NVQl9GUkFNRV9MRU5HVEggKyBOU1FfTFBDX0JVRl9MRU5HVEggXTsKKyAgICBv
cHVzX2ludDMyIFJhbmRTdGF0ZVsgREVDSVNJT05fREVMQVkgXTsKKyAgICBvcHVzX2ludDMyIFFf
UTEwWyAgICAgREVDSVNJT05fREVMQVkgXTsKKyAgICBvcHVzX2ludDMyIFhxX1ExNFsgICAgREVD
SVNJT05fREVMQVkgXTsKKyAgICBvcHVzX2ludDMyIFByZWRfUTE1WyAgREVDSVNJT05fREVMQVkg
XTsKKyAgICBvcHVzX2ludDMyIFNoYXBlX1ExNFsgREVDSVNJT05fREVMQVkgXTsKKyAgICBvcHVz
X2ludDMyIHNBUjJfUTE0WyBNQVhfU0hBUEVfTFBDX09SREVSIF07CisgICAgb3B1c19pbnQzMiBM
Rl9BUl9RMTQ7CisgICAgb3B1c19pbnQzMiBTZWVkOworICAgIG9wdXNfaW50MzIgU2VlZEluaXQ7
CisgICAgb3B1c19pbnQzMiBSRF9RMTA7Cit9IE5TUV9kZWxfZGVjX3N0cnVjdDsKKwordHlwZWRl
ZiBzdHJ1Y3QgeworICAgIG9wdXNfaW50MzIgUV9RMTA7CisgICAgb3B1c19pbnQzMiBSRF9RMTA7
CisgICAgb3B1c19pbnQzMiB4cV9RMTQ7CisgICAgb3B1c19pbnQzMiBMRl9BUl9RMTQ7CisgICAg
b3B1c19pbnQzMiBzTFRQX3NocF9RMTQ7CisgICAgb3B1c19pbnQzMiBMUENfZXhjX1ExNDsKK30g
TlNRX3NhbXBsZV9zdHJ1Y3Q7CisKK3R5cGVkZWYgTlNRX3NhbXBsZV9zdHJ1Y3QgIE5TUV9zYW1w
bGVfcGFpclsgMiBdOworCitzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25zcV9kZWxfZGVj
X3NjYWxlX3N0YXRlc19zc2U0XzEoCisgICAgY29uc3Qgc2lsa19lbmNvZGVyX3N0YXRlICpwc0Vu
Y0MsICAgICAgICAgICAgICAgLyogSSAgICBFbmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAg
ICAgICAqLworICAgIHNpbGtfbnNxX3N0YXRlICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBO
U1FfZGVsX2RlY19zdHJ1Y3QgIHBzRGVsRGVjW10sICAgICAgICAgICAgICAgICAvKiBJL08gIERl
bGF5ZWQgZGVjaXNpb24gc3RhdGVzICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQz
MiAgICB4X1EzW10sICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBJbnB1dCBpbiBRMyAgICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgeF9zY19RMTBb
XSwgICAgICAgICAgICAgICAgIC8qIE8gICAgSW5wdXQgc2NhbGVkIHdpdGggMS9HYWluIGluIFEx
MCAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDE2ICAgIHNMVFBbXSwgICAgICAgICAgICAgICAg
ICAgICAvKiBJICAgIFJlLXdoaXRlbmVkIExUUCBzdGF0ZSBpbiBRMCAgICAgICAgICovCisgICAg
b3B1c19pbnQzMiAgICAgICAgICBzTFRQX1ExNVtdLCAgICAgICAgICAgICAgICAgLyogTyAgICBM
VFAgc3RhdGUgbWF0Y2hpbmcgc2NhbGVkIGlucHV0ICAgICAqLworICAgIG9wdXNfaW50ICAgICAg
ICAgICAgc3ViZnIsICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgU3ViZnJhbWUgbnVtYmVy
ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIG5TdGF0ZXNE
ZWxheWVkRGVjaXNpb24sICAgICAvKiBJICAgIE51bWJlciBvZiBkZWwgZGVjIHN0YXRlcyAgICAg
ICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBMVFBfc2NhbGVfUTE0LCAgICAgICAg
ICAgICAgLyogSSAgICBMVFAgc3RhdGUgc2NhbGluZyAgICAgICAgICAgICAgICAgICAqLworICAg
IGNvbnN0IG9wdXNfaW50MzIgICAgR2FpbnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwgIC8qIEkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2lu
dCAgICAgIHBpdGNoTFsgTUFYX05CX1NVQkZSIF0sICAgICAvKiBJICAgIFBpdGNoIGxhZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBzaWduYWxf
dHlwZSwgICAgICAgICAgICAgICAgLyogSSAgICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgZGVjaXNpb25EZWxheSAgICAgICAg
ICAgICAgIC8qIEkgICAgRGVjaXNpb24gZGVsYXkgICAgICAgICAgICAgICAgICAgICAgKi8KKyk7
CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBOb2lz
ZSBzaGFwZSBxdWFudGl6ZXIgZm9yIG9uZSBzdWJmcmFtZSAqLworLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtf
bm9pc2Vfc2hhcGVfcXVhbnRpemVyX2RlbF9kZWNfc3NlNF8xKAorICAgIHNpbGtfbnNxX3N0YXRl
ICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworICAgIE5TUV9kZWxfZGVjX3N0cnVjdCAgcHNEZWxEZWNbXSwg
ICAgICAgICAgICAgLyogSS9PICBEZWxheWVkIGRlY2lzaW9uIHN0YXRlcyAgICAgICAgICAgICAq
LworICAgIG9wdXNfaW50ICAgICAgICAgICAgc2lnbmFsVHlwZSwgICAgICAgICAgICAgLyogSSAg
ICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNf
aW50MzIgICAgeF9RMTBbXSwgICAgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50OCAgICAgICAgICAgcHVsc2VzW10s
ICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLworICAgIG9wdXNfaW50MTYgICAgICAgICAgeHFbXSwgICAgICAgICAgICAgICAgICAgLyog
TyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50
MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyogSS9PICBMVFAgZmlsdGVyIHN0
YXRlICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgZGVsYXll
ZEdhaW5fUTEwW10sICAgICAgLyogSS9PICBHYWluIGRlbGF5IGJ1ZmZlciAgICAgICAgICAgICAg
ICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYV9RMTJbXSwgICAgICAgICAgICAgICAg
LyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICAgICAqLworICAgIGNvbnN0
IG9wdXNfaW50MTYgICAgYl9RMTRbXSwgICAgICAgICAgICAgICAgLyogSSAgICBMb25nIHRlcm0g
cHJlZGljdGlvbiBjb2VmcyAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgQVJf
c2hwX1ExM1tdLCAgICAgICAgICAgLyogSSAgICBOb2lzZSBzaGFwaW5nIGNvZWZzICAgICAgICAg
ICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgbGFnLCAgICAgICAgICAgICAgICAg
ICAgLyogSSAgICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9w
dXNfaW50MzIgICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCwgLyogSSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAg
VGlsdF9RMTQsICAgICAgICAgICAgICAgLyogSSAgICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAg
ICAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgTEZfc2hwX1ExNCwgICAgICAg
ICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IG9wdXNfaW50MzIgICAgICAgICAgR2Fpbl9RMTYsICAgICAgICAgICAgICAgLyogSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAg
ICAgTGFtYmRhX1ExMCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwgICAg
ICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIG9wdXNfaW50ICAgICAgICAgICAgbGVuZ3RoLCAgICAgICAgICAgICAgICAgLyogSSAgICBJ
bnB1dCBsZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAg
ICAgICAgc3ViZnIsICAgICAgICAgICAgICAgICAgLyogSSAgICBTdWJmcmFtZSBudW1iZXIgICAg
ICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgc2hhcGluZ0xQQ09y
ZGVyLCAgICAgICAgLyogSSAgICBTaGFwaW5nIExQQyBmaWx0ZXIgb3JkZXIgICAgICAgICAgICAq
LworICAgIG9wdXNfaW50ICAgICAgICAgICAgcHJlZGljdExQQ09yZGVyLCAgICAgICAgLyogSSAg
ICBQcmVkaWN0aW9uIGZpbHRlciBvcmRlciAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAg
ICAgICAgICAgd2FycGluZ19RMTYsICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgblN0YXRlc0Rl
bGF5ZWREZWNpc2lvbiwgLyogSSAgICBOdW1iZXIgb2Ygc3RhdGVzIGluIGRlY2lzaW9uIHRyZWUg
ICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgKnNtcGxfYnVmX2lkeCwgICAgICAgICAgLyog
SS9PICBJbmRleCB0byBuZXdlc3Qgc2FtcGxlcyBpbiBidWZmZXJzICAqLworICAgIG9wdXNfaW50
ICAgICAgICAgICAgZGVjaXNpb25EZWxheSAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworKTsKKwordm9pZCBzaWxrX05TUV9kZWxfZGVjX3Nz
ZTRfMSgKKyAgICBjb25zdCBzaWxrX2VuY29kZXJfc3RhdGUgICAgKnBzRW5jQywgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIEVuY29kZXIgU3RhdGUgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICBzaWxrX25zcV9zdGF0ZSAgICAgICAgICAgICAgKk5TUSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICBTaWRlSW5mb0luZGljZXMgICAgICAgICAgICAgKnBzSW5k
aWNlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJL08gIFF1YW50aXphdGlv
biBJbmRpY2VzICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDMyICAgICAgICAgICAg
eF9RM1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFByZWZp
bHRlcmVkIGlucHV0IHNpZ25hbCAgICAgICAgKi8KKyAgICBvcHVzX2ludDggICAgICAgICAgICAg
ICAgICAgcHVsc2VzW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAg
IFF1YW50aXplZCBwdWxzZSBzaWduYWwgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDE2
ICAgICAgICAgICAgUHJlZENvZWZfUTEyWyAyICogTUFYX0xQQ19PUkRFUiBdLCAgICAgICAgICAv
KiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgKi8KKyAgICBjb25zdCBvcHVz
X2ludDE2ICAgICAgICAgICAgTFRQQ29lZl9RMTRbIExUUF9PUkRFUiAqIE1BWF9OQl9TVUJGUiBd
LCAgICAvKiBJICAgIExvbmcgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAgKi8KKyAgICBjb25z
dCBvcHVzX2ludDE2ICAgICAgICAgICAgQVIyX1ExM1sgTUFYX05CX1NVQkZSICogTUFYX1NIQVBF
X0xQQ19PUkRFUiBdLCAvKiBJIE5vaXNlIHNoYXBpbmcgY29lZnMgICAgICAgICAgICAgKi8KKyAg
ICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgSGFybVNoYXBlR2Fpbl9RMTRbIE1BWF9OQl9T
VUJGUiBdLCAgICAgICAgICAvKiBJICAgIExvbmcgdGVybSBzaGFwaW5nIGNvZWZzICAgICAgICAg
Ki8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgVGlsdF9RMTRbIE1BWF9OQl9TVUJG
UiBdLCAgICAgICAgICAgICAgICAgICAvKiBJICAgIFNwZWN0cmFsIHRpbHQgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDMyICAgICAgICAgICAgTEZfc2hwX1ExNFsgTUFY
X05CX1NVQkZSIF0sICAgICAgICAgICAgICAgICAvKiBJICAgIExvdyBmcmVxdWVuY3kgc2hhcGlu
ZyBjb2VmcyAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDMyICAgICAgICAgICAgR2FpbnNfUTE2
WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAvKiBJICAgIFF1YW50aXphdGlvbiBz
dGVwIHNpemVzICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgcGl0
Y2hMWyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFBpdGNoIGxh
Z3MgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAg
ICAgTGFtYmRhX1ExMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFJh
dGUvZGlzdG9ydGlvbiB0cmFkZW9mZiAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAg
ICAgICAgICAgTFRQX3NjYWxlX1ExNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ
ICAgIExUUCBzdGF0ZSBzY2FsaW5nICAgICAgICAgICAgICAgKi8KKykKK3sKKyAgICBvcHVzX2lu
dCAgICAgICAgICAgIGksIGssIGxhZywgc3RhcnRfaWR4LCBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFn
LCBXaW5uZXJfaW5kLCBzdWJmcjsKKyAgICBvcHVzX2ludCAgICAgICAgICAgIGxhc3Rfc21wbGVf
aWR4LCBzbXBsX2J1Zl9pZHgsIGRlY2lzaW9uRGVsYXk7CisgICAgY29uc3Qgb3B1c19pbnQxNiAg
ICAqQV9RMTIsICpCX1ExNCwgKkFSX3NocF9RMTM7CisgICAgb3B1c19pbnQxNiAgICAgICAgICAq
cHhxOworICAgIFZBUkRFQ0woIG9wdXNfaW50MzIsIHNMVFBfUTE1ICk7CisgICAgVkFSREVDTCgg
b3B1c19pbnQxNiwgc0xUUCApOworICAgIG9wdXNfaW50MzIgICAgICAgICAgSGFybVNoYXBlRklS
UGFja2VkX1ExNDsKKyAgICBvcHVzX2ludCAgICAgICAgICAgIG9mZnNldF9RMTA7CisgICAgb3B1
c19pbnQzMiAgICAgICAgICBSRG1pbl9RMTAsIEdhaW5fUTEwOworICAgIFZBUkRFQ0woIG9wdXNf
aW50MzIsIHhfc2NfUTEwICk7CisgICAgVkFSREVDTCggb3B1c19pbnQzMiwgZGVsYXllZEdhaW5f
UTEwICk7CisgICAgVkFSREVDTCggTlNRX2RlbF9kZWNfc3RydWN0LCBwc0RlbERlYyApOworICAg
IE5TUV9kZWxfZGVjX3N0cnVjdCAgKnBzREQ7CisgICAgU0FWRV9TVEFDSzsKKworICAgIC8qIFNl
dCB1bnZvaWNlZCBsYWcgdG8gdGhlIHByZXZpb3VzIG9uZSwgb3ZlcndyaXRlIGxhdGVyIGZvciB2
b2ljZWQgKi8KKyAgICBsYWcgPSBOU1EtPmxhZ1ByZXY7CisKKyAgICBzaWxrX2Fzc2VydCggTlNR
LT5wcmV2X2dhaW5fUTE2ICE9IDAgKTsKKworICAgIC8qIEluaXRpYWxpemUgZGVsYXllZCBkZWNp
c2lvbiBzdGF0ZXMgKi8KKyAgICBBTExPQyggcHNEZWxEZWMsIHBzRW5jQy0+blN0YXRlc0RlbGF5
ZWREZWNpc2lvbiwgTlNRX2RlbF9kZWNfc3RydWN0ICk7CisgICAgc2lsa19tZW1zZXQoIHBzRGVs
RGVjLCAwLCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb24gKiBzaXplb2YoIE5TUV9kZWxf
ZGVjX3N0cnVjdCApICk7CisgICAgZm9yKCBrID0gMDsgayA8IHBzRW5jQy0+blN0YXRlc0RlbGF5
ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICBwc0REICAgICAgICAgICAgICAgICA9ICZwc0Rl
bERlY1sgayBdOworICAgICAgICBwc0RELT5TZWVkICAgICAgICAgICA9ICggayArIHBzSW5kaWNl
cy0+U2VlZCApICYgMzsKKyAgICAgICAgcHNERC0+U2VlZEluaXQgICAgICAgPSBwc0RELT5TZWVk
OworICAgICAgICBwc0RELT5SRF9RMTAgICAgICAgICA9IDA7CisgICAgICAgIHBzREQtPkxGX0FS
X1ExNCAgICAgID0gTlNRLT5zTEZfQVJfc2hwX1ExNDsKKyAgICAgICAgcHNERC0+U2hhcGVfUTE0
WyAwIF0gPSBOU1EtPnNMVFBfc2hwX1ExNFsgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIDEgXTsK
KyAgICAgICAgc2lsa19tZW1jcHkoIHBzREQtPnNMUENfUTE0LCBOU1EtPnNMUENfUTE0LCBOU1Ff
TFBDX0JVRl9MRU5HVEggKiBzaXplb2YoIG9wdXNfaW50MzIgKSApOworICAgICAgICBzaWxrX21l
bWNweSggcHNERC0+c0FSMl9RMTQsIE5TUS0+c0FSMl9RMTQsIHNpemVvZiggTlNRLT5zQVIyX1Ex
NCApICk7CisgICAgfQorCisgICAgb2Zmc2V0X1ExMCAgID0gc2lsa19RdWFudGl6YXRpb25fT2Zm
c2V0c19RMTBbIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSA+PiAxIF1bIHBzSW5kaWNlcy0+cXVhbnRP
ZmZzZXRUeXBlIF07CisgICAgc21wbF9idWZfaWR4ID0gMDsgLyogaW5kZXggb2Ygb2xkZXN0IHNh
bXBsZXMgKi8KKworICAgIGRlY2lzaW9uRGVsYXkgPSBzaWxrX21pbl9pbnQoIERFQ0lTSU9OX0RF
TEFZLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCApOworCisgICAgLyogRm9yIHZvaWNlZCBmcmFtZXMg
bGltaXQgdGhlIGRlY2lzaW9uIGRlbGF5IHRvIGxvd2VyIHRoYW4gdGhlIHBpdGNoIGxhZyAqLwor
ICAgIGlmKCBwc0luZGljZXMtPnNpZ25hbFR5cGUgPT0gVFlQRV9WT0lDRUQgKSB7CisgICAgICAg
IGZvciggayA9IDA7IGsgPCBwc0VuY0MtPm5iX3N1YmZyOyBrKysgKSB7CisgICAgICAgICAgICBk
ZWNpc2lvbkRlbGF5ID0gc2lsa19taW5faW50KCBkZWNpc2lvbkRlbGF5LCBwaXRjaExbIGsgXSAt
IExUUF9PUkRFUiAvIDIgLSAxICk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiggbGFnID4gMCApIHsKKyAgICAgICAgICAgIGRlY2lzaW9uRGVsYXkgPSBzaWxrX21pbl9pbnQo
IGRlY2lzaW9uRGVsYXksIGxhZyAtIExUUF9PUkRFUiAvIDIgLSAxICk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiggcHNJbmRpY2VzLT5OTFNGSW50ZXJwQ29lZl9RMiA9PSA0ICkgeworICAg
ICAgICBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFnID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBM
U0ZfaW50ZXJwb2xhdGlvbl9mbGFnID0gMTsKKyAgICB9CisKKyAgICBBTExPQyggc0xUUF9RMTUs
CisgICAgICAgICAgIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKyBwc0VuY0MtPmZyYW1lX2xlbmd0
aCwgb3B1c19pbnQzMiApOworICAgIEFMTE9DKCBzTFRQLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3Ro
ICsgcHNFbmNDLT5mcmFtZV9sZW5ndGgsIG9wdXNfaW50MTYgKTsKKyAgICBBTExPQyggeF9zY19R
MTAsIHBzRW5jQy0+c3ViZnJfbGVuZ3RoLCBvcHVzX2ludDMyICk7CisgICAgQUxMT0MoIGRlbGF5
ZWRHYWluX1ExMCwgREVDSVNJT05fREVMQVksIG9wdXNfaW50MzIgKTsKKyAgICAvKiBTZXQgdXAg
cG9pbnRlcnMgdG8gc3RhcnQgb2Ygc3ViIGZyYW1lICovCisgICAgcHhxICAgICAgICAgICAgICAg
ICAgID0gJk5TUS0+eHFbIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggXTsKKyAgICBOU1EtPnNMVFBf
c2hwX2J1Zl9pZHggPSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOworICAgIE5TUS0+c0xUUF9idWZf
aWR4ICAgICA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7CisgICAgc3ViZnIgPSAwOworICAgIGZv
ciggayA9IDA7IGsgPCBwc0VuY0MtPm5iX3N1YmZyOyBrKysgKSB7CisgICAgICAgIEFfUTEyICAg
ICAgPSAmUHJlZENvZWZfUTEyWyAoICggayA+PiAxICkgfCAoIDEgLSBMU0ZfaW50ZXJwb2xhdGlv
bl9mbGFnICkgKSAqIE1BWF9MUENfT1JERVIgXTsKKyAgICAgICAgQl9RMTQgICAgICA9ICZMVFBD
b2VmX1ExNFsgayAqIExUUF9PUkRFUiAgICAgICAgICAgXTsKKyAgICAgICAgQVJfc2hwX1ExMyA9
ICZBUjJfUTEzWyAgICAgayAqIE1BWF9TSEFQRV9MUENfT1JERVIgXTsKKworICAgICAgICAvKiBO
b2lzZSBzaGFwZSBwYXJhbWV0ZXJzICovCisgICAgICAgIHNpbGtfYXNzZXJ0KCBIYXJtU2hhcGVH
YWluX1ExNFsgayBdID49IDAgKTsKKyAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCAgPSAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2lsa19SU0hJRlQoIEhhcm1TaGFwZUdhaW5fUTE0WyBr
IF0sIDIgKTsKKyAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCB8PSBzaWxrX0xTSElGVCgg
KG9wdXNfaW50MzIpc2lsa19SU0hJRlQoIEhhcm1TaGFwZUdhaW5fUTE0WyBrIF0sIDEgKSwgMTYg
KTsKKworICAgICAgICBOU1EtPnJld2hpdGVfZmxhZyA9IDA7CisgICAgICAgIGlmKCBwc0luZGlj
ZXMtPnNpZ25hbFR5cGUgPT0gVFlQRV9WT0lDRUQgKSB7CisgICAgICAgICAgICAvKiBWb2ljZWQg
Ki8KKyAgICAgICAgICAgIGxhZyA9IHBpdGNoTFsgayBdOworCisgICAgICAgICAgICAvKiBSZS13
aGl0ZW5pbmcgKi8KKyAgICAgICAgICAgIGlmKCAoIGsgJiAoIDMgLSBzaWxrX0xTSElGVCggTFNG
X2ludGVycG9sYXRpb25fZmxhZywgMSApICkgKSA9PSAwICkgeworICAgICAgICAgICAgICAgIGlm
KCBrID09IDIgKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFJFU0VUIERFTEFZRUQgREVDSVNJ
T05TICovCisgICAgICAgICAgICAgICAgICAgIC8qIEZpbmQgd2lubmVyICovCisgICAgICAgICAg
ICAgICAgICAgIFJEbWluX1ExMCA9IHBzRGVsRGVjWyAwIF0uUkRfUTEwOworICAgICAgICAgICAg
ICAgICAgICBXaW5uZXJfaW5kID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZm9yKCBpID0gMTsg
aSA8IHBzRW5jQy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaSsrICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYoIHBzRGVsRGVjWyBpIF0uUkRfUTEwIDwgUkRtaW5fUTEwICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJEbWluX1ExMCA9IHBzRGVsRGVjWyBpIF0uUkRfUTEw
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbm5lcl9pbmQgPSBpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGZvciggaSA9IDA7IGkgPCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGkrKyAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpICE9IFdpbm5lcl9pbmQgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHNEZWxEZWNbIGkgXS5SRF9RMTAgKz0gKCBzaWxrX2lu
dDMyX01BWCA+PiA0ICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsa19hc3NlcnQo
IHBzRGVsRGVjWyBpIF0uUkRfUTEwID49IDAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIENvcHkgZmlu
YWwgcGFydCBvZiBzaWduYWxzIGZyb20gd2lubmVyIHN0YXRlIHRvIG91dHB1dCBhbmQgbG9uZy10
ZXJtIGZpbHRlciBzdGF0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgcHNERCA9ICZwc0RlbERl
Y1sgV2lubmVyX2luZCBdOworICAgICAgICAgICAgICAgICAgICBsYXN0X3NtcGxlX2lkeCA9IHNt
cGxfYnVmX2lkeCArIGRlY2lzaW9uRGVsYXk7CisgICAgICAgICAgICAgICAgICAgIGZvciggaSA9
IDA7IGkgPCBkZWNpc2lvbkRlbGF5OyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBs
YXN0X3NtcGxlX2lkeCA9ICggbGFzdF9zbXBsZV9pZHggLSAxICkgJSBERUNJU0lPTl9ERUxBWTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBsYXN0X3NtcGxlX2lkeCA8IDAgKSBsYXN0X3Nt
cGxlX2lkeCArPSBERUNJU0lPTl9ERUxBWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1bHNl
c1sgICBpIC0gZGVjaXNpb25EZWxheSBdID0gKG9wdXNfaW50OClzaWxrX1JTSElGVF9ST1VORCgg
cHNERC0+UV9RMTBbIGxhc3Rfc21wbGVfaWR4IF0sIDEwICk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBweHFbIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1c19pbnQxNilzaWxrX1NBVDE2KCBz
aWxrX1JTSElGVF9ST1VORCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxrX1NNVUxX
VyggcHNERC0+WHFfUTE0WyBsYXN0X3NtcGxlX2lkeCBdLCBHYWluc19RMTZbIDEgXSApLCAxNCAp
ICk7CisgICAgICAgICAgICAgICAgICAgICAgICBOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQ
X3NocF9idWZfaWR4IC0gZGVjaXNpb25EZWxheSArIGkgXSA9IHBzREQtPlNoYXBlX1ExNFsgbGFz
dF9zbXBsZV9pZHggXTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIHN1YmZyID0gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBS
ZXdoaXRlbiB3aXRoIG5ldyBBIGNvZWZzICovCisgICAgICAgICAgICAgICAgc3RhcnRfaWR4ID0g
cHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIGxhZyAtIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyIC0g
TFRQX09SREVSIC8gMjsKKyAgICAgICAgICAgICAgICBjZWx0X2Fzc2VydCggc3RhcnRfaWR4ID4g
MCApOworCisgICAgICAgICAgICAgICAgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKCAmc0xUUFsg
c3RhcnRfaWR4IF0sICZOU1EtPnhxWyBzdGFydF9pZHggKyBrICogcHNFbmNDLT5zdWJmcl9sZW5n
dGggXSwKKyAgICAgICAgICAgICAgICAgICAgQV9RMTIsIHBzRW5jQy0+bHRwX21lbV9sZW5ndGgg
LSBzdGFydF9pZHgsIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyLCBwc0VuY0MtPmFyY2ggKTsKKwor
ICAgICAgICAgICAgICAgIE5TUS0+c0xUUF9idWZfaWR4ID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0
aDsKKyAgICAgICAgICAgICAgICBOU1EtPnJld2hpdGVfZmxhZyA9IDE7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBzaWxrX25zcV9kZWxfZGVjX3NjYWxlX3N0YXRlc19zc2U0
XzEoIHBzRW5jQywgTlNRLCBwc0RlbERlYywgeF9RMywgeF9zY19RMTAsIHNMVFAsIHNMVFBfUTE1
LCBrLAorICAgICAgICAgICAgcHNFbmNDLT5uU3RhdGVzRGVsYXllZERlY2lzaW9uLCBMVFBfc2Nh
bGVfUTE0LCBHYWluc19RMTYsIHBpdGNoTCwgcHNJbmRpY2VzLT5zaWduYWxUeXBlLCBkZWNpc2lv
bkRlbGF5ICk7CisKKyAgICAgICAgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfZGVsX2RlY19z
c2U0XzEoIE5TUSwgcHNEZWxEZWMsIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSwgeF9zY19RMTAsIHB1
bHNlcywgcHhxLCBzTFRQX1ExNSwKKyAgICAgICAgICAgIGRlbGF5ZWRHYWluX1ExMCwgQV9RMTIs
IEJfUTE0LCBBUl9zaHBfUTEzLCBsYWcsIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQsIFRpbHRfUTE0
WyBrIF0sIExGX3NocF9RMTRbIGsgXSwKKyAgICAgICAgICAgIEdhaW5zX1ExNlsgayBdLCBMYW1i
ZGFfUTEwLCBvZmZzZXRfUTEwLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCwgc3ViZnIrKywgcHNFbmND
LT5zaGFwaW5nTFBDT3JkZXIsCisgICAgICAgICAgICBwc0VuY0MtPnByZWRpY3RMUENPcmRlciwg
cHNFbmNDLT53YXJwaW5nX1ExNiwgcHNFbmNDLT5uU3RhdGVzRGVsYXllZERlY2lzaW9uLCAmc21w
bF9idWZfaWR4LCBkZWNpc2lvbkRlbGF5ICk7CisKKyAgICAgICAgeF9RMyAgICs9IHBzRW5jQy0+
c3ViZnJfbGVuZ3RoOworICAgICAgICBwdWxzZXMgKz0gcHNFbmNDLT5zdWJmcl9sZW5ndGg7Cisg
ICAgICAgIHB4cSAgICArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsKKyAgICB9CisKKyAgICAvKiBG
aW5kIHdpbm5lciAqLworICAgIFJEbWluX1ExMCA9IHBzRGVsRGVjWyAwIF0uUkRfUTEwOworICAg
IFdpbm5lcl9pbmQgPSAwOworICAgIGZvciggayA9IDE7IGsgPCBwc0VuY0MtPm5TdGF0ZXNEZWxh
eWVkRGVjaXNpb247IGsrKyApIHsKKyAgICAgICAgaWYoIHBzRGVsRGVjWyBrIF0uUkRfUTEwIDwg
UkRtaW5fUTEwICkgeworICAgICAgICAgICAgUkRtaW5fUTEwID0gcHNEZWxEZWNbIGsgXS5SRF9R
MTA7CisgICAgICAgICAgICBXaW5uZXJfaW5kID0gazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8qIENvcHkgZmluYWwgcGFydCBvZiBzaWduYWxzIGZyb20gd2lubmVyIHN0YXRlIHRvIG91dHB1
dCBhbmQgbG9uZy10ZXJtIGZpbHRlciBzdGF0ZXMgKi8KKyAgICBwc0REID0gJnBzRGVsRGVjWyBX
aW5uZXJfaW5kIF07CisgICAgcHNJbmRpY2VzLT5TZWVkID0gcHNERC0+U2VlZEluaXQ7CisgICAg
bGFzdF9zbXBsZV9pZHggPSBzbXBsX2J1Zl9pZHggKyBkZWNpc2lvbkRlbGF5OworICAgIEdhaW5f
UTEwID0gc2lsa19SU0hJRlQzMiggR2FpbnNfUTE2WyBwc0VuY0MtPm5iX3N1YmZyIC0gMSBdLCA2
ICk7CisgICAgZm9yKCBpID0gMDsgaSA8IGRlY2lzaW9uRGVsYXk7IGkrKyApIHsKKyAgICAgICAg
bGFzdF9zbXBsZV9pZHggPSAoIGxhc3Rfc21wbGVfaWR4IC0gMSApICUgREVDSVNJT05fREVMQVk7
CisgICAgICAgIGlmKCBsYXN0X3NtcGxlX2lkeCA8IDAgKSBsYXN0X3NtcGxlX2lkeCArPSBERUNJ
U0lPTl9ERUxBWTsKKyAgICAgICAgcHVsc2VzWyAgIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1
c19pbnQ4KXNpbGtfUlNISUZUX1JPVU5EKCBwc0RELT5RX1ExMFsgbGFzdF9zbXBsZV9pZHggXSwg
MTAgKTsKKyAgICAgICAgcHhxWyBpIC0gZGVjaXNpb25EZWxheSBdID0gKG9wdXNfaW50MTYpc2ls
a19TQVQxNiggc2lsa19SU0hJRlRfUk9VTkQoCisgICAgICAgICAgICBzaWxrX1NNVUxXVyggcHNE
RC0+WHFfUTE0WyBsYXN0X3NtcGxlX2lkeCBdLCBHYWluX1ExMCApLCA4ICkgKTsKKyAgICAgICAg
TlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIGRlY2lzaW9uRGVsYXkg
KyBpIF0gPSBwc0RELT5TaGFwZV9RMTRbIGxhc3Rfc21wbGVfaWR4IF07CisgICAgfQorICAgIHNp
bGtfbWVtY3B5KCBOU1EtPnNMUENfUTE0LCAmcHNERC0+c0xQQ19RMTRbIHBzRW5jQy0+c3ViZnJf
bGVuZ3RoIF0sIE5TUV9MUENfQlVGX0xFTkdUSCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7Cisg
ICAgc2lsa19tZW1jcHkoIE5TUS0+c0FSMl9RMTQsIHBzREQtPnNBUjJfUTE0LCBzaXplb2YoIHBz
REQtPnNBUjJfUTE0ICkgKTsKKworICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8KKyAgICBOU1EtPnNM
Rl9BUl9zaHBfUTE0ID0gcHNERC0+TEZfQVJfUTE0OworICAgIE5TUS0+bGFnUHJldiAgICAgICAg
PSBwaXRjaExbIHBzRW5jQy0+bmJfc3ViZnIgLSAxIF07CisKKyAgICAvKiBTYXZlIHF1YW50aXpl
ZCBzcGVlY2ggc2lnbmFsICovCisgICAgc2lsa19tZW1tb3ZlKCBOU1EtPnhxLCAgICAgICAgICAg
Jk5TUS0+eHFbICAgICAgICAgICBwc0VuY0MtPmZyYW1lX2xlbmd0aCBdLCBwc0VuY0MtPmx0cF9t
ZW1fbGVuZ3RoICogc2l6ZW9mKCBvcHVzX2ludDE2ICkgKTsKKyAgICBzaWxrX21lbW1vdmUoIE5T
US0+c0xUUF9zaHBfUTE0LCAmTlNRLT5zTFRQX3NocF9RMTRbIHBzRW5jQy0+ZnJhbWVfbGVuZ3Ro
IF0sIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKiBzaXplb2YoIG9wdXNfaW50MzIgKSApOworICAg
IFJFU1RPUkVfU1RBQ0s7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCisvKiBOb2lzZSBzaGFwZSBxdWFudGl6ZXIgZm9yIG9uZSBzdWJmcmFtZSAqLwor
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBPUFVT
X0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyX2RlbF9kZWNfc3NlNF8xKAor
ICAgIHNpbGtfbnNxX3N0YXRlICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgLyogSS9PICBO
U1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIE5TUV9kZWxfZGVjX3N0
cnVjdCAgcHNEZWxEZWNbXSwgICAgICAgICAgICAgLyogSS9PICBEZWxheWVkIGRlY2lzaW9uIHN0
YXRlcyAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgc2lnbmFsVHlwZSwg
ICAgICAgICAgICAgLyogSSAgICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAq
LworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9RMTBbXSwgICAgICAgICAgICAgICAgLyogSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50OCAg
ICAgICAgICAgcHVsc2VzW10sICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50MTYgICAgICAgICAgeHFbXSwgICAg
ICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyog
SS9PICBMVFAgZmlsdGVyIHN0YXRlICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50
MzIgICAgICAgICAgZGVsYXllZEdhaW5fUTEwW10sICAgICAgLyogSS9PICBHYWluIGRlbGF5IGJ1
ZmZlciAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYV9RMTJb
XSwgICAgICAgICAgICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAg
ICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYl9RMTRbXSwgICAgICAgICAgICAgICAg
LyogSSAgICBMb25nIHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgICAgICAqLworICAgIGNvbnN0
IG9wdXNfaW50MTYgICAgQVJfc2hwX1ExM1tdLCAgICAgICAgICAgLyogSSAgICBOb2lzZSBzaGFw
aW5nIGNvZWZzICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgbGFn
LCAgICAgICAgICAgICAgICAgICAgLyogSSAgICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1Ex
NCwgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9w
dXNfaW50ICAgICAgICAgICAgVGlsdF9RMTQsICAgICAgICAgICAgICAgLyogSSAgICBTcGVjdHJh
bCB0aWx0ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAg
TEZfc2hwX1ExNCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgR2Fpbl9RMTYsICAgICAgICAg
ICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IG9wdXNfaW50ICAgICAgICAgICAgTGFtYmRhX1ExMCwgICAgICAgICAgICAgLyogSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAg
ICAgb2Zmc2V0X1ExMCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgbGVuZ3RoLCAgICAgICAg
ICAgICAgICAgLyogSSAgICBJbnB1dCBsZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIG9wdXNfaW50ICAgICAgICAgICAgc3ViZnIsICAgICAgICAgICAgICAgICAgLyogSSAgICBT
dWJmcmFtZSBudW1iZXIgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAg
ICAgICAgc2hhcGluZ0xQQ09yZGVyLCAgICAgICAgLyogSSAgICBTaGFwaW5nIExQQyBmaWx0ZXIg
b3JkZXIgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgcHJlZGljdExQQ09y
ZGVyLCAgICAgICAgLyogSSAgICBQcmVkaWN0aW9uIGZpbHRlciBvcmRlciAgICAgICAgICAgICAq
LworICAgIG9wdXNfaW50ICAgICAgICAgICAgd2FycGluZ19RMTYsICAgICAgICAgICAgLyogSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAg
ICAgICAgICAgblN0YXRlc0RlbGF5ZWREZWNpc2lvbiwgLyogSSAgICBOdW1iZXIgb2Ygc3RhdGVz
IGluIGRlY2lzaW9uIHRyZWUgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgKnNtcGxfYnVm
X2lkeCwgICAgICAgICAgLyogSS9PICBJbmRleCB0byBuZXdlc3Qgc2FtcGxlcyBpbiBidWZmZXJz
ICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgZGVjaXNpb25EZWxheSAgICAgICAgICAgLyog
SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworKQoreworICAgIG9w
dXNfaW50ICAgICBpLCBqLCBrLCBXaW5uZXJfaW5kLCBSRG1pbl9pbmQsIFJEbWF4X2luZCwgbGFz
dF9zbXBsZV9pZHg7CisgICAgb3B1c19pbnQzMiAgIFdpbm5lcl9yYW5kX3N0YXRlOworICAgIG9w
dXNfaW50MzIgICBMVFBfcHJlZF9RMTQsIExQQ19wcmVkX1ExNCwgbl9BUl9RMTQsIG5fTFRQX1Ex
NDsKKyAgICBvcHVzX2ludDMyICAgbl9MRl9RMTQsIHJfUTEwLCBycl9RMTAsIHJkMV9RMTAsIHJk
Ml9RMTAsIFJEbWluX1ExMCwgUkRtYXhfUTEwOworICAgIG9wdXNfaW50MzIgICBxMV9RMCwgcTFf
UTEwLCBxMl9RMTAsIGV4Y19RMTQsIExQQ19leGNfUTE0LCB4cV9RMTQsIEdhaW5fUTEwOworICAg
IG9wdXNfaW50MzIgICB0bXAxLCB0bXAyLCBzTEZfQVJfc2hwX1ExNDsKKyAgICBvcHVzX2ludDMy
ICAgKnByZWRfbGFnX3B0ciwgKnNocF9sYWdfcHRyLCAqcHNMUENfUTE0OworICAgIFZBUkRFQ0wo
IE5TUV9zYW1wbGVfcGFpciwgcHNTYW1wbGVTdGF0ZSApOworICAgIE5TUV9kZWxfZGVjX3N0cnVj
dCAqcHNERDsKKyAgICBOU1Ffc2FtcGxlX3N0cnVjdCAgKnBzU1M7CisKKyAgICBfX20xMjhpIGFf
UTEyXzAxMjMsIGFfUTEyXzQ1NjcsIGFfUTEyXzg5QUIsIGFfUTEyX0NERUY7CisgICAgX19tMTI4
aSBiX1ExMl8wMTIzLCBiX3NyX1ExMl8wMTIzOworICAgIFNBVkVfU1RBQ0s7CisKKyAgICBjZWx0
X2Fzc2VydCggblN0YXRlc0RlbGF5ZWREZWNpc2lvbiA+IDAgKTsKKyAgICBBTExPQyggcHNTYW1w
bGVTdGF0ZSwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbiwgTlNRX3NhbXBsZV9wYWlyICk7CisKKyAg
ICBzaHBfbGFnX3B0ciAgPSAmTlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lk
eCAtIGxhZyArIEhBUk1fU0hBUEVfRklSX1RBUFMgLyAyIF07CisgICAgcHJlZF9sYWdfcHRyID0g
JnNMVFBfUTE1WyBOU1EtPnNMVFBfYnVmX2lkeCAtIGxhZyArIExUUF9PUkRFUiAvIDIgXTsKKyAg
ICBHYWluX1ExMCAgICAgPSBzaWxrX1JTSElGVCggR2Fpbl9RMTYsIDYgKTsKKworICAgIGFfUTEy
XzAxMjMgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoIGFfUTEyICk7CisgICAgYV9RMTJfNDU2NyA9
IE9QX0NWVEVQSTE2X0VQSTMyX002NCggYV9RMTIgKyA0ICk7CisKKyAgICBpZiggb3B1c19saWtl
bHkoIHByZWRpY3RMUENPcmRlciA9PSAxNiApICkgeworICAgICAgICBhX1ExMl84OUFCID0gT1Bf
Q1ZURVBJMTZfRVBJMzJfTTY0KCBhX1ExMiArIDggKTsKKyAgICAgICAgYV9RMTJfQ0RFRiA9IE9Q
X0NWVEVQSTE2X0VQSTMyX002NCggYV9RMTIgKyAxMiApOworICAgIH0KKworICAgIGlmKCBzaWdu
YWxUeXBlID09IFRZUEVfVk9JQ0VEICl7CisgICAgICAgIGJfUTEyXzAxMjMgPSBPUF9DVlRFUEkx
Nl9FUEkzMl9NNjQoIGJfUTE0ICk7CisgICAgICAgIGJfc3JfUTEyXzAxMjMgPSBfbW1fc2h1ZmZs
ZV9lcGkzMiggYl9RMTJfMDEyMywgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBlcXVh
bCBzaGlmdCByaWdodCA0IGJ5dGVzICovCisgICAgfQorICAgIGZvciggaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKyApIHsKKyAgICAgICAgLyogUGVyZm9ybSBjb21tb24gY2FsY3VsYXRpb25zIHVzZWQg
aW4gYWxsIHN0YXRlcyAqLworCisgICAgICAgIC8qIExvbmctdGVybSBwcmVkaWN0aW9uICovCisg
ICAgICAgIGlmKCBzaWduYWxUeXBlID09IFRZUEVfVk9JQ0VEICkgeworICAgICAgICAgICAgLyog
VW5yb2xsZWQgbG9vcCAqLworICAgICAgICAgICAgLyogQXZvaWRzIGludHJvZHVjaW5nIGEgYmlh
cyBiZWNhdXNlIHNpbGtfU01MQVdCKCkgYWx3YXlzIHJvdW5kcyB0byAtaW5mICovCisgICAgICAg
ICAgICBMVFBfcHJlZF9RMTQgPSAyOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9f
bTEyOGkgdG1wYSwgdG1wYiwgcHJlZF9sYWdfcHRyX3RtcDsKKyAgICAgICAgICAgICAgICBwcmVk
X2xhZ19wdHJfdG1wICAgID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHJlZF9sYWdf
cHRyWyAtMyBdICkgKTsKKyAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21t
X3NodWZmbGVfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAsIDB4MUIgKTsKKyAgICAgICAgICAgICAg
ICB0bXBhICAgICAgICAgICAgICAgID0gX21tX211bF9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwg
Yl9RMTJfMDEyMyApOworICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICAgICAgPSBfbW1f
c3JsaV9zaTEyOCggdG1wYSwgMiApOworCisgICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyX3Rt
cCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwcmVkX2xhZ19wdHJfdG1wLCBfTU1fU0hVRkZMRSggMCwg
MywgMiwgMSApICk7LyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLworICAgICAgICAgICAg
ICAgIHByZWRfbGFnX3B0cl90bXAgICAgPSBfbW1fbXVsX2VwaTMyKCBwcmVkX2xhZ19wdHJfdG1w
LCBiX3NyX1ExMl8wMTIzICk7CisgICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9
IF9tbV9zcmxpX3NpMTI4KCBwcmVkX2xhZ19wdHJfdG1wLCAyICk7CisgICAgICAgICAgICAgICAg
cHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9hZGRfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAsIHRt
cGEgKTsKKworICAgICAgICAgICAgICAgIHRtcGIgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHJlZF9s
YWdfcHRyX3RtcCwgX01NX1NIVUZGTEUoIDAsIDAsIDMsIDIgKSApOy8qIGVxdWFsIHNoaWZ0IHJp
Z2h0IDggYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21t
X2FkZF9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwgdG1wYiApOworICAgICAgICAgICAgICAgIExU
UF9wcmVkX1ExNCAgICAgICAgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHByZWRfbGFnX3B0cl90bXAg
KTsKKworICAgICAgICAgICAgICAgIExUUF9wcmVkX1ExNCA9IHNpbGtfU01MQVdCKCBMVFBfcHJl
ZF9RMTQsIHByZWRfbGFnX3B0clsgLTQgXSwgYl9RMTRbIDQgXSApOworICAgICAgICAgICAgICAg
IExUUF9wcmVkX1ExNCA9IHNpbGtfTFNISUZUKCBMVFBfcHJlZF9RMTQsIDEgKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFExMyAtPiBRMTQgKi8KKyAgICAgICAgICAgICAgICBwcmVkX2xh
Z19wdHIrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExU
UF9wcmVkX1ExNCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBMb25nLXRlcm0gc2hhcGlu
ZyAqLworICAgICAgICBpZiggbGFnID4gMCApIHsKKyAgICAgICAgICAgIC8qIFN5bW1ldHJpYywg
cGFja2VkIEZJUiBjb2VmZmljaWVudHMgKi8KKyAgICAgICAgICAgIG5fTFRQX1ExNCA9IHNpbGtf
U01VTFdCKCBzaWxrX0FERDMyKCBzaHBfbGFnX3B0clsgMCBdLCBzaHBfbGFnX3B0clsgLTIgXSAp
LCBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICk7CisgICAgICAgICAgICBuX0xUUF9RMTQgPSBzaWxr
X1NNTEFXVCggbl9MVFBfUTE0LCBzaHBfbGFnX3B0clsgLTEgXSwgICAgICAgICAgICAgICAgICAg
ICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCApOworICAgICAgICAgICAgbl9MVFBfUTE0ID0gc2ls
a19TVUJfTFNISUZUMzIoIExUUF9wcmVkX1ExNCwgbl9MVFBfUTE0LCAyICk7ICAgICAgICAgICAg
LyogUTEyIC0+IFExNCAqLworICAgICAgICAgICAgc2hwX2xhZ19wdHIrKzsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG5fTFRQX1ExNCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgewor
ICAgICAgICAgICAgX19tMTI4aSB0bXBhLCB0bXBiLCBwc0xQQ19RMTRfdG1wLCBhX1ExMl90bXA7
CisKKyAgICAgICAgICAgIGZvciggayA9IDA7IGsgPCBuU3RhdGVzRGVsYXllZERlY2lzaW9uOyBr
KysgKSB7CisgICAgICAgICAgICAgICAgLyogRGVsYXllZCBkZWNpc2lvbiBzdGF0ZSAqLworICAg
ICAgICAgICAgICAgIHBzREQgPSAmcHNEZWxEZWNbIGsgXTsKKworICAgICAgICAgICAgICAgIC8q
IFNhbXBsZSBzdGF0ZSAqLworICAgICAgICAgICAgICAgIHBzU1MgPSBwc1NhbXBsZVN0YXRlWyBr
IF07CisKKyAgICAgICAgICAgICAgICAvKiBHZW5lcmF0ZSBkaXRoZXIgKi8KKyAgICAgICAgICAg
ICAgICBwc0RELT5TZWVkID0gc2lsa19SQU5EKCBwc0RELT5TZWVkICk7CisKKyAgICAgICAgICAg
ICAgICAvKiBQb2ludGVyIHVzZWQgaW4gc2hvcnQgdGVybSBwcmVkaWN0aW9uIGFuZCBzaGFwaW5n
ICovCisgICAgICAgICAgICAgICAgcHNMUENfUTE0ID0gJnBzREQtPnNMUENfUTE0WyBOU1FfTFBD
X0JVRl9MRU5HVEggLSAxICsgaSBdOworICAgICAgICAgICAgICAgIC8qIFNob3J0LXRlcm0gcHJl
ZGljdGlvbiAqLworICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBwcmVkaWN0TFBDT3JkZXIg
PT0gMTAgfHwgcHJlZGljdExQQ09yZGVyID09IDE2ICk7CisgICAgICAgICAgICAgICAgLyogQXZv
aWRzIGludHJvZHVjaW5nIGEgYmlhcyBiZWNhdXNlIHNpbGtfU01MQVdCKCkgYWx3YXlzIHJvdW5k
cyB0byAtaW5mICovCisgICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ID0gc2lsa19SU0hJRlQo
IHByZWRpY3RMUENPcmRlciwgMSApOworCisgICAgICAgICAgICAgICAgdG1wYiA9IF9tbV9zZXR6
ZXJvX3NpMTI4KCk7CisKKyAgICAgICAgICAgICAgICAvKiBzdGVwIDEgKi8KKyAgICAgICAgICAg
ICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQ
Q19RMTRbIC0zIF0gKSApOyAvKiAtMywgLTIgLCAtMSwgMCAqLworICAgICAgICAgICAgICAgIHBz
TFBDX1ExNF90bXAgICA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCAweDFCICk7
ICAgICAgLyogMCwgLTEsIC0yLCAtMyAqLworICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAg
ICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyXzAxMjMgKTsgICAgLyogMCwg
LTEsIC0yLCAtMyAqIDAxMjMgLT4gMCowLCAyKi0yICovCisKKyAgICAgICAgICAgICAgICB0bXBh
ICAgICAgICAgICAgPSBfbW1fc3JsaV9lcGk2NCggdG1wYSwgMTYgKTsKKyAgICAgICAgICAgICAg
ICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7CisKKyAgICAg
ICAgICAgICAgICBwc0xQQ19RMTRfdG1wID0gX21tX3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90
bXAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBi
eXRlcyAqLworICAgICAgICAgICAgICAgIGFfUTEyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBh
X1ExMl8wMTIzLCBfTU1fU0hVRkZMRSgwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmln
aHQgNCBieXRlcyAqLworICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9tdWxf
ZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyX3RtcCApOyAvKiAxKi0xLCAzKi0zICovCisgICAg
ICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3NybGlfZXBpNjQoIHBzTFBDX1ExNF90
bXAsIDE2ICk7CisgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkz
MiggdG1wYiwgcHNMUENfUTE0X3RtcCApOworCisgICAgICAgICAgICAgICAgLyogc3RlcCAyICov
CisgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX2xvYWR1X3NpMTI4KCAoX19t
MTI4aSAqKSgmcHNMUENfUTE0WyAtNyBdICkgKTsKKyAgICAgICAgICAgICAgICBwc0xQQ19RMTRf
dG1wICAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgMHgxQiApOworICAgICAg
ICAgICAgICAgIHRtcGEgICAgICAgICAgICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAs
IGFfUTEyXzQ1NjcgKTsKKyAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc3Js
aV9lcGk2NCggdG1wYSwgMTYgKTsKKyAgICAgICAgICAgICAgICB0bXBiICAgICAgICAgICAgPSBf
bW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7CisKKyAgICAgICAgICAgICAgICBwc0xQQ19RMTRf
dG1wID0gX21tX3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIF9NTV9TSFVGRkxFKCAwLCAz
LCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLworICAgICAgICAgICAg
ICAgIGFfUTEyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBhX1ExMl80NTY3LCBfTU1fU0hVRkZM
RSgwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLworICAgICAg
ICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAs
IGFfUTEyX3RtcCApOworICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9zcmxp
X2VwaTY0KCBwc0xQQ19RMTRfdG1wLCAxNiApOworICAgICAgICAgICAgICAgIHRtcGIgICAgICAg
ICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHBzTFBDX1ExNF90bXAgKTsKKworICAgICAgICAg
ICAgICAgIGlmICggb3B1c19saWtlbHkoIHByZWRpY3RMUENPcmRlciA9PSAxNiApICkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIHN0ZXAgMyAqLworICAgICAgICAg
ICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICop
KCZwc0xQQ19RMTRbIC0xMSBdICkgKTsKKyAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3Rt
cCAgID0gX21tX3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIDB4MUIgKTsKKyAgICAgICAg
ICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3Rt
cCwgYV9RMTJfODlBQiApOworICAgICAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBf
bW1fc3JsaV9lcGk2NCggdG1wYSwgMTYgKTsKKyAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAg
ICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgdG1wYSApOworCisgICAgICAgICAgICAgICAg
ICAgIHBzTFBDX1ExNF90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgX01N
X1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICov
CisgICAgICAgICAgICAgICAgICAgIGFfUTEyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBhX1Ex
Ml84OUFCLCBfTU1fU0hVRkZMRSgwLCAzLCAyLCAxICkgKTsvKiBlcXVhbCBzaGlmdCByaWdodCA0
IGJ5dGVzICovCisgICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9tdWxf
ZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyX3RtcCApOworICAgICAgICAgICAgICAgICAgICBw
c0xQQ19RMTRfdG1wICAgPSBfbW1fc3JsaV9lcGk2NCggcHNMUENfUTE0X3RtcCwgMTYgKTsKKyAg
ICAgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwg
cHNMUENfUTE0X3RtcCApOworCisgICAgICAgICAgICAgICAgICAgIC8qIHNldHAgNCAqLworICAg
ICAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20x
MjhpICopKCZwc0xQQ19RMTRbIC0xNSBdICkgKTsKKyAgICAgICAgICAgICAgICAgICAgcHNMUENf
UTE0X3RtcCAgID0gX21tX3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIDB4MUIgKTsKKyAg
ICAgICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX211bF9lcGkzMiggcHNMUENf
UTE0X3RtcCwgYV9RMTJfQ0RFRiApOworICAgICAgICAgICAgICAgICAgICB0bXBhICAgICAgICAg
ICAgPSBfbW1fc3JsaV9lcGk2NCggdG1wYSwgMTYgKTsKKyAgICAgICAgICAgICAgICAgICAgdG1w
YiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgdG1wYSApOworCisgICAgICAgICAg
ICAgICAgICAgIHBzTFBDX1ExNF90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3Rt
cCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5
dGVzICovCisgICAgICAgICAgICAgICAgICAgIGFfUTEyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMy
KCBhX1ExMl9DREVGLCBfTU1fU0hVRkZMRSgwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQg
cmlnaHQgNCBieXRlcyAqLworICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBf
bW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBhX1ExMl90bXAgKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3NybGlfZXBpNjQoIHBzTFBDX1ExNF90bXAsIDE2
ICk7CisgICAgICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIo
IHRtcGIsIHBzTFBDX1ExNF90bXAgKTsKKworICAgICAgICAgICAgICAgICAgICAvKiBhZGQgYXQg
bGFzdCAqLworICAgICAgICAgICAgICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdodCA4IGJ5dGVz
Ki8KKyAgICAgICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX3NodWZmbGVfZXBp
MzIoIHRtcGIsIF9NTV9TSFVGRkxFKCAwLCAwLCAzLCAyICkgKTsKKyAgICAgICAgICAgICAgICAg
ICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgdG1wYSApOworICAgICAg
ICAgICAgICAgICAgICBMUENfcHJlZF9RMTQgICAgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHRtcGIg
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IGxhc3QgKi8KKyAgICAgICAgICAg
ICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX3NodWZmbGVfZXBpMzIoIHRtcGIsIF9NTV9T
SFVGRkxFKCAwLCAwLCAzLCAyICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgOCBieXRlcyovCisg
ICAgICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIs
IHRtcGEgKTsKKyAgICAgICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ICAgICs9IF9tbV9jdnRz
aTEyOF9zaTMyKCB0bXBiICk7CisKKyAgICAgICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ID0g
c2lsa19TTUxBV0IoIExQQ19wcmVkX1ExNCwgcHNMUENfUTE0WyAtOCBdLCBhX1ExMlsgOCBdICk7
CisgICAgICAgICAgICAgICAgICAgIExQQ19wcmVkX1ExNCA9IHNpbGtfU01MQVdCKCBMUENfcHJl
ZF9RMTQsIHBzTFBDX1ExNFsgLTkgXSwgYV9RMTJbIDkgXSApOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIExQQ19wcmVkX1ExNCA9IHNpbGtfTFNISUZUKCBMUENfcHJlZF9R
MTQsIDQgKTsgLyogUTEwIC0+IFExNCAqLworCisgICAgICAgICAgICAgICAgLyogTm9pc2Ugc2hh
cGUgZmVlZGJhY2sgKi8KKyAgICAgICAgICAgICAgICBzaWxrX2Fzc2VydCggKCBzaGFwaW5nTFBD
T3JkZXIgJiAxICkgPT0gMCApOyAgIC8qIGNoZWNrIHRoYXQgb3JkZXIgaXMgZXZlbiAqLworICAg
ICAgICAgICAgICAgIC8qIE91dHB1dCBvZiBsb3dwYXNzIHNlY3Rpb24gKi8KKyAgICAgICAgICAg
ICAgICB0bXAyID0gc2lsa19TTUxBV0IoIHBzTFBDX1ExNFsgMCBdLCBwc0RELT5zQVIyX1ExNFsg
MCBdLCB3YXJwaW5nX1ExNiApOworICAgICAgICAgICAgICAgIC8qIE91dHB1dCBvZiBhbGxwYXNz
IHNlY3Rpb24gKi8KKyAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19TTUxBV0IoIHBzREQtPnNB
UjJfUTE0WyAwIF0sIHBzREQtPnNBUjJfUTE0WyAxIF0gLSB0bXAyLCB3YXJwaW5nX1ExNiApOwor
ICAgICAgICAgICAgICAgIHBzREQtPnNBUjJfUTE0WyAwIF0gPSB0bXAyOworICAgICAgICAgICAg
ICAgIG5fQVJfUTE0ID0gc2lsa19SU0hJRlQoIHNoYXBpbmdMUENPcmRlciwgMSApOworICAgICAg
ICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19TTUxBV0IoIG5fQVJfUTE0LCB0bXAyLCBBUl9zaHBf
UTEzWyAwIF0gKTsKKyAgICAgICAgICAgICAgICAvKiBMb29wIG92ZXIgYWxscGFzcyBzZWN0aW9u
cyAqLworICAgICAgICAgICAgICAgIGZvciggaiA9IDI7IGogPCBzaGFwaW5nTFBDT3JkZXI7IGog
Kz0gMiApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogT3V0cHV0IG9mIGFsbHBhc3Mgc2VjdGlv
biAqLworICAgICAgICAgICAgICAgICAgICB0bXAyID0gc2lsa19TTUxBV0IoIHBzREQtPnNBUjJf
UTE0WyBqIC0gMSBdLCBwc0RELT5zQVIyX1ExNFsgaiArIDAgXSAtIHRtcDEsIHdhcnBpbmdfUTE2
ICk7CisgICAgICAgICAgICAgICAgICAgIHBzREQtPnNBUjJfUTE0WyBqIC0gMSBdID0gdG1wMTsK
KyAgICAgICAgICAgICAgICAgICAgbl9BUl9RMTQgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTQsIHRt
cDEsIEFSX3NocF9RMTNbIGogLSAxIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgLyogT3V0cHV0
IG9mIGFsbHBhc3Mgc2VjdGlvbiAqLworICAgICAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19T
TUxBV0IoIHBzREQtPnNBUjJfUTE0WyBqICsgMCBdLCBwc0RELT5zQVIyX1ExNFsgaiArIDEgXSAt
IHRtcDIsIHdhcnBpbmdfUTE2ICk7CisgICAgICAgICAgICAgICAgICAgIHBzREQtPnNBUjJfUTE0
WyBqICsgMCBdID0gdG1wMjsKKyAgICAgICAgICAgICAgICAgICAgbl9BUl9RMTQgPSBzaWxrX1NN
TEFXQiggbl9BUl9RMTQsIHRtcDIsIEFSX3NocF9RMTNbIGogXSApOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBwc0RELT5zQVIyX1ExNFsgc2hhcGluZ0xQQ09yZGVyIC0gMSBd
ID0gdG1wMTsKKyAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfU01MQVdCKCBuX0FSX1Ex
NCwgdG1wMSwgQVJfc2hwX1ExM1sgc2hhcGluZ0xQQ09yZGVyIC0gMSBdICk7CisKKyAgICAgICAg
ICAgICAgICBuX0FSX1ExNCA9IHNpbGtfTFNISUZUKCBuX0FSX1ExNCwgMSApOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTExIC0+IFExMiAqLworICAgICAgICAgICAg
ICAgIG5fQVJfUTE0ID0gc2lsa19TTUxBV0IoIG5fQVJfUTE0LCBwc0RELT5MRl9BUl9RMTQsIFRp
bHRfUTE0ICk7ICAgICAgICAgICAgICAvKiBRMTIgKi8KKyAgICAgICAgICAgICAgICBuX0FSX1Ex
NCA9IHNpbGtfTFNISUZUKCBuX0FSX1ExNCwgMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUTEyIC0+IFExNCAqLworCisgICAgICAgICAgICAgICAgbl9MRl9RMTQg
PSBzaWxrX1NNVUxXQiggcHNERC0+U2hhcGVfUTE0WyAqc21wbF9idWZfaWR4IF0sIExGX3NocF9R
MTQgKTsgICAgIC8qIFExMiAqLworICAgICAgICAgICAgICAgIG5fTEZfUTE0ID0gc2lsa19TTUxB
V1QoIG5fTEZfUTE0LCBwc0RELT5MRl9BUl9RMTQsIExGX3NocF9RMTQgKTsgICAgICAgICAgICAv
KiBRMTIgKi8KKyAgICAgICAgICAgICAgICBuX0xGX1ExNCA9IHNpbGtfTFNISUZUKCBuX0xGX1Ex
NCwgMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTEyIC0+IFEx
NCAqLworCisgICAgICAgICAgICAgICAgLyogSW5wdXQgbWludXMgcHJlZGljdGlvbiBwbHVzIG5v
aXNlIGZlZWRiYWNrICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIC8q
IHIgPSB4WyBpIF0gLSBMVFBfcHJlZCAtIExQQ19wcmVkICsgbl9BUiArIG5fVGlsdCArIG5fTEYg
KyBuX0xUUCAgKi8KKyAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19BREQzMiggbl9BUl9RMTQs
IG5fTEZfUTE0ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTE0ICov
CisgICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfQUREMzIoIG5fTFRQX1ExNCwgTFBDX3ByZWRf
UTE0ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMyAqLworICAgICAgICAg
ICAgICAgIHRtcDEgPSBzaWxrX1NVQjMyKCB0bXAyLCB0bXAxICk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTMgKi8KKyAgICAgICAgICAgICAgICB0bXAx
ID0gc2lsa19SU0hJRlRfUk9VTkQoIHRtcDEsIDQgKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogUTEwICovCisKKyAgICAgICAgICAgICAgICByX1ExMCA9IHNpbGtf
U1VCMzIoIHhfUTEwWyBpIF0sIHRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogcmVzaWR1YWwgZXJyb3IgUTEwICovCisKKyAgICAgICAgICAgICAgICAvKiBGbGlw
IHNpZ24gZGVwZW5kaW5nIG9uIGRpdGhlciAqLworICAgICAgICAgICAgICAgIGlmICggcHNERC0+
U2VlZCA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgIHJfUTEwID0gLXJfUTEwOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByX1ExMCA9IHNpbGtfTElNSVRfMzIoIHJfUTEw
LCAtKDMxIDw8IDEwKSwgMzAgPDwgMTAgKTsKKworICAgICAgICAgICAgICAgIC8qIEZpbmQgdHdv
IHF1YW50aXphdGlvbiBsZXZlbCBjYW5kaWRhdGVzIGFuZCBtZWFzdXJlIHRoZWlyIHJhdGUtZGlz
dG9ydGlvbiAqLworICAgICAgICAgICAgICAgIHExX1ExMCA9IHNpbGtfU1VCMzIoIHJfUTEwLCBv
ZmZzZXRfUTEwICk7CisgICAgICAgICAgICAgICAgcTFfUTAgPSBzaWxrX1JTSElGVCggcTFfUTEw
LCAxMCApOworICAgICAgICAgICAgICAgIGlmKCBxMV9RMCA+IDAgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHExX1ExMCAgPSBzaWxrX1NVQjMyKCBzaWxrX0xTSElGVCggcTFfUTAsIDEwICksIFFV
QU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcTFfUTEwICA9IHNp
bGtfQUREMzIoIHExX1ExMCwgb2Zmc2V0X1ExMCApOworICAgICAgICAgICAgICAgICAgICBxMl9R
MTAgID0gc2lsa19BREQzMiggcTFfUTEwLCAxMDI0ICk7CisgICAgICAgICAgICAgICAgICAgIHJk
MV9RMTAgPSBzaWxrX1NNVUxCQiggcTFfUTEwLCBMYW1iZGFfUTEwICk7CisgICAgICAgICAgICAg
ICAgICAgIHJkMl9RMTAgPSBzaWxrX1NNVUxCQiggcTJfUTEwLCBMYW1iZGFfUTEwICk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmKCBxMV9RMCA9PSAwICkgeworICAgICAgICAgICAgICAgICAg
ICBxMV9RMTAgID0gb2Zmc2V0X1ExMDsKKyAgICAgICAgICAgICAgICAgICAgcTJfUTEwICA9IHNp
bGtfQUREMzIoIHExX1ExMCwgMTAyNCAtIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmQxX1ExMCA9IHNpbGtfU01VTEJCKCBxMV9RMTAsIExhbWJkYV9RMTAg
KTsKKyAgICAgICAgICAgICAgICAgICAgcmQyX1ExMCA9IHNpbGtfU01VTEJCKCBxMl9RMTAsIExh
bWJkYV9RMTAgKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoIHExX1EwID09IC0xICkgewor
ICAgICAgICAgICAgICAgICAgICBxMl9RMTAgID0gb2Zmc2V0X1ExMDsKKyAgICAgICAgICAgICAg
ICAgICAgcTFfUTEwICA9IHNpbGtfU1VCMzIoIHEyX1ExMCwgMTAyNCAtIFFVQU5UX0xFVkVMX0FE
SlVTVF9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcmQxX1ExMCA9IHNpbGtfU01VTEJCKCAt
cTFfUTEwLCBMYW1iZGFfUTEwICk7CisgICAgICAgICAgICAgICAgICAgIHJkMl9RMTAgPSBzaWxr
X1NNVUxCQiggIHEyX1ExMCwgTGFtYmRhX1ExMCApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
ICAgICAgICAgICAgLyogcTFfUTAgPCAtMSAqLworICAgICAgICAgICAgICAgICAgICBxMV9RMTAg
ID0gc2lsa19BREQzMiggc2lsa19MU0hJRlQoIHExX1EwLCAxMCApLCBRVUFOVF9MRVZFTF9BREpV
U1RfUTEwICk7CisgICAgICAgICAgICAgICAgICAgIHExX1ExMCAgPSBzaWxrX0FERDMyKCBxMV9R
MTAsIG9mZnNldF9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcTJfUTEwICA9IHNpbGtfQURE
MzIoIHExX1ExMCwgMTAyNCApOworICAgICAgICAgICAgICAgICAgICByZDFfUTEwID0gc2lsa19T
TVVMQkIoIC1xMV9RMTAsIExhbWJkYV9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcmQyX1Ex
MCA9IHNpbGtfU01VTEJCKCAtcTJfUTEwLCBMYW1iZGFfUTEwICk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJyX1ExMCAgPSBzaWxrX1NVQjMyKCByX1ExMCwgcTFfUTEwICk7
CisgICAgICAgICAgICAgICAgcmQxX1ExMCA9IHNpbGtfUlNISUZUKCBzaWxrX1NNTEFCQiggcmQx
X1ExMCwgcnJfUTEwLCBycl9RMTAgKSwgMTAgKTsKKyAgICAgICAgICAgICAgICBycl9RMTAgID0g
c2lsa19TVUIzMiggcl9RMTAsIHEyX1ExMCApOworICAgICAgICAgICAgICAgIHJkMl9RMTAgPSBz
aWxrX1JTSElGVCggc2lsa19TTUxBQkIoIHJkMl9RMTAsIHJyX1ExMCwgcnJfUTEwICksIDEwICk7
CisKKyAgICAgICAgICAgICAgICBpZiggcmQxX1ExMCA8IHJkMl9RMTAgKSB7CisgICAgICAgICAg
ICAgICAgICAgIHBzU1NbIDAgXS5SRF9RMTAgPSBzaWxrX0FERDMyKCBwc0RELT5SRF9RMTAsIHJk
MV9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcHNTU1sgMSBdLlJEX1ExMCA9IHNpbGtfQURE
MzIoIHBzREQtPlJEX1ExMCwgcmQyX1ExMCApOworICAgICAgICAgICAgICAgICAgICBwc1NTWyAw
IF0uUV9RMTAgID0gcTFfUTEwOworICAgICAgICAgICAgICAgICAgICBwc1NTWyAxIF0uUV9RMTAg
ID0gcTJfUTEwOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHBzU1NbIDAgXS5SRF9RMTAgPSBzaWxrX0FERDMyKCBwc0RELT5SRF9RMTAsIHJkMl9RMTAgKTsK
KyAgICAgICAgICAgICAgICAgICAgcHNTU1sgMSBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzREQt
PlJEX1ExMCwgcmQxX1ExMCApOworICAgICAgICAgICAgICAgICAgICBwc1NTWyAwIF0uUV9RMTAg
ID0gcTJfUTEwOworICAgICAgICAgICAgICAgICAgICBwc1NTWyAxIF0uUV9RMTAgID0gcTFfUTEw
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMg
Zm9yIGJlc3QgcXVhbnRpemF0aW9uICovCisKKyAgICAgICAgICAgICAgICAvKiBRdWFudGl6ZWQg
ZXhjaXRhdGlvbiAqLworICAgICAgICAgICAgICAgIGV4Y19RMTQgPSBzaWxrX0xTSElGVDMyKCBw
c1NTWyAwIF0uUV9RMTAsIDQgKTsKKyAgICAgICAgICAgICAgICBpZiAoIHBzREQtPlNlZWQgPCAw
ICkgeworICAgICAgICAgICAgICAgICAgICBleGNfUTE0ID0gLWV4Y19RMTQ7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogQWRkIHByZWRpY3Rpb25zICovCisgICAgICAg
ICAgICAgICAgTFBDX2V4Y19RMTQgPSBzaWxrX0FERDMyKCBleGNfUTE0LCBMVFBfcHJlZF9RMTQg
KTsKKyAgICAgICAgICAgICAgICB4cV9RMTQgICAgICA9IHNpbGtfQUREMzIoIExQQ19leGNfUTE0
LCBMUENfcHJlZF9RMTQgKTsKKworICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8K
KyAgICAgICAgICAgICAgICBzTEZfQVJfc2hwX1ExNCAgICAgICAgID0gc2lsa19TVUIzMiggeHFf
UTE0LCBuX0FSX1ExNCApOworICAgICAgICAgICAgICAgIHBzU1NbIDAgXS5zTFRQX3NocF9RMTQg
PSBzaWxrX1NVQjMyKCBzTEZfQVJfc2hwX1ExNCwgbl9MRl9RMTQgKTsKKyAgICAgICAgICAgICAg
ICBwc1NTWyAwIF0uTEZfQVJfUTE0ICAgID0gc0xGX0FSX3NocF9RMTQ7CisgICAgICAgICAgICAg
ICAgcHNTU1sgMCBdLkxQQ19leGNfUTE0ICA9IExQQ19leGNfUTE0OworICAgICAgICAgICAgICAg
IHBzU1NbIDAgXS54cV9RMTQgICAgICAgPSB4cV9RMTQ7CisKKyAgICAgICAgICAgICAgICAvKiBV
cGRhdGUgc3RhdGVzIGZvciBzZWNvbmQgYmVzdCBxdWFudGl6YXRpb24gKi8KKworICAgICAgICAg
ICAgICAgIC8qIFF1YW50aXplZCBleGNpdGF0aW9uICovCisgICAgICAgICAgICAgICAgZXhjX1Ex
NCA9IHNpbGtfTFNISUZUMzIoIHBzU1NbIDEgXS5RX1ExMCwgNCApOworICAgICAgICAgICAgICAg
IGlmICggcHNERC0+U2VlZCA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgIGV4Y19RMTQgPSAt
ZXhjX1ExNDsKKyAgICAgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgICAgIC8qIEFkZCBw
cmVkaWN0aW9ucyAqLworICAgICAgICAgICAgICAgIExQQ19leGNfUTE0ID0gc2lsa19BREQzMigg
ZXhjX1ExNCwgTFRQX3ByZWRfUTE0ICk7CisgICAgICAgICAgICAgICAgeHFfUTE0ICAgICAgPSBz
aWxrX0FERDMyKCBMUENfZXhjX1ExNCwgTFBDX3ByZWRfUTE0ICk7CisKKyAgICAgICAgICAgICAg
ICAvKiBVcGRhdGUgc3RhdGVzICovCisgICAgICAgICAgICAgICAgc0xGX0FSX3NocF9RMTQgICAg
ICAgICA9IHNpbGtfU1VCMzIoIHhxX1ExNCwgbl9BUl9RMTQgKTsKKyAgICAgICAgICAgICAgICBw
c1NTWyAxIF0uc0xUUF9zaHBfUTE0ID0gc2lsa19TVUIzMiggc0xGX0FSX3NocF9RMTQsIG5fTEZf
UTE0ICk7CisgICAgICAgICAgICAgICAgcHNTU1sgMSBdLkxGX0FSX1ExNCAgICA9IHNMRl9BUl9z
aHBfUTE0OworICAgICAgICAgICAgICAgIHBzU1NbIDEgXS5MUENfZXhjX1ExNCAgPSBMUENfZXhj
X1ExNDsKKyAgICAgICAgICAgICAgICBwc1NTWyAxIF0ueHFfUTE0ICAgICAgID0geHFfUTE0Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICpzbXBsX2J1Zl9pZHggID0gKCAqc21w
bF9idWZfaWR4IC0gMSApICUgREVDSVNJT05fREVMQVk7CisgICAgICAgIGlmKCAqc21wbF9idWZf
aWR4IDwgMCApICpzbXBsX2J1Zl9pZHggKz0gREVDSVNJT05fREVMQVk7CisgICAgICAgIGxhc3Rf
c21wbGVfaWR4ID0gKCAqc21wbF9idWZfaWR4ICsgZGVjaXNpb25EZWxheSApICUgREVDSVNJT05f
REVMQVk7CisKKyAgICAgICAgLyogRmluZCB3aW5uZXIgKi8KKyAgICAgICAgUkRtaW5fUTEwID0g
cHNTYW1wbGVTdGF0ZVsgMCBdWyAwIF0uUkRfUTEwOworICAgICAgICBXaW5uZXJfaW5kID0gMDsK
KyAgICAgICAgZm9yKCBrID0gMTsgayA8IG5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsrKyApIHsK
KyAgICAgICAgICAgIGlmKCBwc1NhbXBsZVN0YXRlWyBrIF1bIDAgXS5SRF9RMTAgPCBSRG1pbl9R
MTAgKSB7CisgICAgICAgICAgICAgICAgUkRtaW5fUTEwICA9IHBzU2FtcGxlU3RhdGVbIGsgXVsg
MCBdLlJEX1ExMDsKKyAgICAgICAgICAgICAgICBXaW5uZXJfaW5kID0gazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIEluY3JlYXNlIFJEIHZhbHVlcyBvZiBleHBpcmVk
IHN0YXRlcyAqLworICAgICAgICBXaW5uZXJfcmFuZF9zdGF0ZSA9IHBzRGVsRGVjWyBXaW5uZXJf
aW5kIF0uUmFuZFN0YXRlWyBsYXN0X3NtcGxlX2lkeCBdOworICAgICAgICBmb3IoIGsgPSAwOyBr
IDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICAgICAgaWYoIHBzRGVs
RGVjWyBrIF0uUmFuZFN0YXRlWyBsYXN0X3NtcGxlX2lkeCBdICE9IFdpbm5lcl9yYW5kX3N0YXRl
ICkgeworICAgICAgICAgICAgICAgIHBzU2FtcGxlU3RhdGVbIGsgXVsgMCBdLlJEX1ExMCA9IHNp
bGtfQUREMzIoIHBzU2FtcGxlU3RhdGVbIGsgXVsgMCBdLlJEX1ExMCwgc2lsa19pbnQzMl9NQVgg
Pj4gNCApOworICAgICAgICAgICAgICAgIHBzU2FtcGxlU3RhdGVbIGsgXVsgMSBdLlJEX1ExMCA9
IHNpbGtfQUREMzIoIHBzU2FtcGxlU3RhdGVbIGsgXVsgMSBdLlJEX1ExMCwgc2lsa19pbnQzMl9N
QVggPj4gNCApOworICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBwc1NhbXBsZVN0YXRlWyBr
IF1bIDAgXS5SRF9RMTAgPj0gMCApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLyogRmluZCB3b3JzdCBpbiBmaXJzdCBzZXQgYW5kIGJlc3QgaW4gc2Vjb25kIHNldCAqLwor
ICAgICAgICBSRG1heF9RMTAgID0gcHNTYW1wbGVTdGF0ZVsgMCBdWyAwIF0uUkRfUTEwOworICAg
ICAgICBSRG1pbl9RMTAgID0gcHNTYW1wbGVTdGF0ZVsgMCBdWyAxIF0uUkRfUTEwOworICAgICAg
ICBSRG1heF9pbmQgPSAwOworICAgICAgICBSRG1pbl9pbmQgPSAwOworICAgICAgICBmb3IoIGsg
PSAxOyBrIDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICAgICAgLyog
ZmluZCB3b3JzdCBpbiBmaXJzdCBzZXQgKi8KKyAgICAgICAgICAgIGlmKCBwc1NhbXBsZVN0YXRl
WyBrIF1bIDAgXS5SRF9RMTAgPiBSRG1heF9RMTAgKSB7CisgICAgICAgICAgICAgICAgUkRtYXhf
UTEwICA9IHBzU2FtcGxlU3RhdGVbIGsgXVsgMCBdLlJEX1ExMDsKKyAgICAgICAgICAgICAgICBS
RG1heF9pbmQgPSBrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogZmluZCBiZXN0IGlu
IHNlY29uZCBzZXQgKi8KKyAgICAgICAgICAgIGlmKCBwc1NhbXBsZVN0YXRlWyBrIF1bIDEgXS5S
RF9RMTAgPCBSRG1pbl9RMTAgKSB7CisgICAgICAgICAgICAgICAgUkRtaW5fUTEwICA9IHBzU2Ft
cGxlU3RhdGVbIGsgXVsgMSBdLlJEX1ExMDsKKyAgICAgICAgICAgICAgICBSRG1pbl9pbmQgPSBr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogUmVwbGFjZSBhIHN0YXRl
IGlmIGJlc3QgZnJvbSBzZWNvbmQgc2V0IG91dHBlcmZvcm1zIHdvcnN0IGluIGZpcnN0IHNldCAq
LworICAgICAgICBpZiggUkRtaW5fUTEwIDwgUkRtYXhfUTEwICkgeworICAgICAgICAgICAgc2ls
a19tZW1jcHkoICggKG9wdXNfaW50MzIgKikmcHNEZWxEZWNbIFJEbWF4X2luZCBdICkgKyBpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICggKG9wdXNfaW50MzIgKikmcHNEZWxEZWNbIFJEbWlu
X2luZCBdICkgKyBpLCBzaXplb2YoIE5TUV9kZWxfZGVjX3N0cnVjdCApIC0gaSAqIHNpemVvZigg
b3B1c19pbnQzMikgKTsKKyAgICAgICAgICAgIHNpbGtfbWVtY3B5KCAmcHNTYW1wbGVTdGF0ZVsg
UkRtYXhfaW5kIF1bIDAgXSwgJnBzU2FtcGxlU3RhdGVbIFJEbWluX2luZCBdWyAxIF0sIHNpemVv
ZiggTlNRX3NhbXBsZV9zdHJ1Y3QgKSApOworICAgICAgICB9CisKKyAgICAgICAgLyogV3JpdGUg
c2FtcGxlcyBmcm9tIHdpbm5lciB0byBvdXRwdXQgYW5kIGxvbmctdGVybSBmaWx0ZXIgc3RhdGVz
ICovCisgICAgICAgIHBzREQgPSAmcHNEZWxEZWNbIFdpbm5lcl9pbmQgXTsKKyAgICAgICAgaWYo
IHN1YmZyID4gMCB8fCBpID49IGRlY2lzaW9uRGVsYXkgKSB7CisgICAgICAgICAgICBwdWxzZXNb
ICBpIC0gZGVjaXNpb25EZWxheSBdID0gKG9wdXNfaW50OClzaWxrX1JTSElGVF9ST1VORCggcHNE
RC0+UV9RMTBbIGxhc3Rfc21wbGVfaWR4IF0sIDEwICk7CisgICAgICAgICAgICB4cVsgaSAtIGRl
Y2lzaW9uRGVsYXkgXSA9IChvcHVzX2ludDE2KXNpbGtfU0FUMTYoIHNpbGtfUlNISUZUX1JPVU5E
KAorICAgICAgICAgICAgICAgIHNpbGtfU01VTFdXKCBwc0RELT5YcV9RMTRbIGxhc3Rfc21wbGVf
aWR4IF0sIGRlbGF5ZWRHYWluX1ExMFsgbGFzdF9zbXBsZV9pZHggXSApLCA4ICkgKTsKKyAgICAg
ICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSBkZWNpc2lv
bkRlbGF5IF0gPSBwc0RELT5TaGFwZV9RMTRbIGxhc3Rfc21wbGVfaWR4IF07CisgICAgICAgICAg
ICBzTFRQX1ExNVsgICAgICAgICAgTlNRLT5zTFRQX2J1Zl9pZHggICAgIC0gZGVjaXNpb25EZWxh
eSBdID0gcHNERC0+UHJlZF9RMTVbICBsYXN0X3NtcGxlX2lkeCBdOworICAgICAgICB9CisgICAg
ICAgIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCsrOworICAgICAgICBOU1EtPnNMVFBfYnVmX2lkeCsr
OworCisgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8KKyAgICAgICAgZm9yKCBrID0gMDsgayA8
IG5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsrKyApIHsKKyAgICAgICAgICAgIHBzREQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAmcHNEZWxEZWNbIGsgXTsKKyAgICAgICAg
ICAgIHBzU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAmcHNTYW1wbGVT
dGF0ZVsgayBdWyAwIF07CisgICAgICAgICAgICBwc0RELT5MRl9BUl9RMTQgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHNTUy0+TEZfQVJfUTE0OworICAgICAgICAgICAgcHNERC0+c0xQQ19R
MTRbIE5TUV9MUENfQlVGX0xFTkdUSCArIGkgXSA9IHBzU1MtPnhxX1ExNDsKKyAgICAgICAgICAg
IHBzREQtPlhxX1ExNFsgICAgKnNtcGxfYnVmX2lkeCBdICAgICAgICAgPSBwc1NTLT54cV9RMTQ7
CisgICAgICAgICAgICBwc0RELT5RX1ExMFsgICAgICpzbXBsX2J1Zl9pZHggXSAgICAgICAgID0g
cHNTUy0+UV9RMTA7CisgICAgICAgICAgICBwc0RELT5QcmVkX1ExNVsgICpzbXBsX2J1Zl9pZHgg
XSAgICAgICAgID0gc2lsa19MU0hJRlQzMiggcHNTUy0+TFBDX2V4Y19RMTQsIDEgKTsKKyAgICAg
ICAgICAgIHBzREQtPlNoYXBlX1ExNFsgKnNtcGxfYnVmX2lkeCBdICAgICAgICAgPSBwc1NTLT5z
TFRQX3NocF9RMTQ7CisgICAgICAgICAgICBwc0RELT5TZWVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gc2lsa19BREQzMl9vdmZsdyggcHNERC0+U2VlZCwgc2lsa19SU0hJRlRfUk9V
TkQoIHBzU1MtPlFfUTEwLCAxMCApICk7CisgICAgICAgICAgICBwc0RELT5SYW5kU3RhdGVbICpz
bXBsX2J1Zl9pZHggXSAgICAgICAgID0gcHNERC0+U2VlZDsKKyAgICAgICAgICAgIHBzREQtPlJE
X1ExMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwc1NTLT5SRF9RMTA7CisgICAgICAg
IH0KKyAgICAgICAgZGVsYXllZEdhaW5fUTEwWyAgICAgKnNtcGxfYnVmX2lkeCBdICAgICAgICAg
PSBHYWluX1ExMDsKKyAgICB9CisgICAgLyogVXBkYXRlIExQQyBzdGF0ZXMgKi8KKyAgICBmb3Io
IGsgPSAwOyBrIDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICBwc0RE
ID0gJnBzRGVsRGVjWyBrIF07CisgICAgICAgIHNpbGtfbWVtY3B5KCBwc0RELT5zTFBDX1ExNCwg
JnBzREQtPnNMUENfUTE0WyBsZW5ndGggXSwgTlNRX0xQQ19CVUZfTEVOR1RIICogc2l6ZW9mKCBv
cHVzX2ludDMyICkgKTsKKyAgICB9CisgICAgUkVTVE9SRV9TVEFDSzsKK30KKworc3RhdGljIE9Q
VVNfSU5MSU5FIHZvaWQgc2lsa19uc3FfZGVsX2RlY19zY2FsZV9zdGF0ZXNfc3NlNF8xKAorICAg
IGNvbnN0IHNpbGtfZW5jb2Rlcl9zdGF0ZSAqcHNFbmNDLCAgICAgICAgICAgICAgIC8qIEkgICAg
RW5jb2RlciBTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBzaWxrX25zcV9zdGF0
ZSAgICAgICpOU1EsICAgICAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgTlNRX2RlbF9kZWNfc3RydWN0ICBwc0RlbERl
Y1tdLCAgICAgICAgICAgICAgICAgLyogSS9PICBEZWxheWVkIGRlY2lzaW9uIHN0YXRlcyAgICAg
ICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9RM1tdLCAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgSW5wdXQgaW4gUTMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAg
ICBvcHVzX2ludDMyICAgICAgICAgIHhfc2NfUTEwW10sICAgICAgICAgICAgICAgICAvKiBPICAg
IElucHV0IHNjYWxlZCB3aXRoIDEvR2FpbiBpbiBRMTAgICAgICovCisgICAgY29uc3Qgb3B1c19p
bnQxNiAgICBzTFRQW10sICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBSZS13aGl0ZW5lZCBM
VFAgc3RhdGUgaW4gUTAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9R
MTVbXSwgICAgICAgICAgICAgICAgIC8qIE8gICAgTFRQIHN0YXRlIG1hdGNoaW5nIHNjYWxlZCBp
bnB1dCAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIHN1YmZyLCAgICAgICAgICAgICAg
ICAgICAgICAvKiBJICAgIFN1YmZyYW1lIG51bWJlciAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgb3B1c19pbnQgICAgICAgICAgICBuU3RhdGVzRGVsYXllZERlY2lzaW9uLCAgICAgLyogSSAg
ICBOdW1iZXIgb2YgZGVsIGRlYyBzdGF0ZXMgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNf
aW50ICAgICAgTFRQX3NjYWxlX1ExNCwgICAgICAgICAgICAgIC8qIEkgICAgTFRQIHN0YXRlIHNj
YWxpbmcgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDMyICAgIEdhaW5z
X1ExNlsgTUFYX05CX1NVQkZSIF0sICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBwaXRjaExbIE1BWF9OQl9TVUJG
UiBdLCAgICAgLyogSSAgICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIGNvbnN0IG9wdXNfaW50ICAgICAgc2lnbmFsX3R5cGUsICAgICAgICAgICAgICAgIC8qIEkg
ICAgU2lnbmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVz
X2ludCAgICAgIGRlY2lzaW9uRGVsYXkgICAgICAgICAgICAgICAvKiBJICAgIERlY2lzaW9uIGRl
bGF5ICAgICAgICAgICAgICAgICAgICAgICovCispCit7CisgICAgb3B1c19pbnQgICAgICAgICAg
ICBpLCBrLCBsYWc7CisgICAgb3B1c19pbnQzMiAgICAgICAgICBnYWluX2Fkal9RMTYsIGludl9n
YWluX1EzMSwgaW52X2dhaW5fUTIzOworICAgIE5TUV9kZWxfZGVjX3N0cnVjdCAgKnBzREQ7Cisg
ICAgX19tMTI4aSB4bW1faW52X2dhaW5fUTIzLCB4bW1feF9RM194MngwLCB4bW1feF9RM194M3gx
OworCisgICAgbGFnICAgICAgICAgID0gcGl0Y2hMWyBzdWJmciBdOworICAgIGludl9nYWluX1Ez
MSA9IHNpbGtfSU5WRVJTRTMyX3ZhclEoIHNpbGtfbWF4KCBHYWluc19RMTZbIHN1YmZyIF0sIDEg
KSwgNDcgKTsKKworICAgIHNpbGtfYXNzZXJ0KCBpbnZfZ2Fpbl9RMzEgIT0gMCApOworCisgICAg
LyogQ2FsY3VsYXRlIGdhaW4gYWRqdXN0bWVudCBmYWN0b3IgKi8KKyAgICBpZiggR2FpbnNfUTE2
WyBzdWJmciBdICE9IE5TUS0+cHJldl9nYWluX1ExNiApIHsKKyAgICAgICAgZ2Fpbl9hZGpfUTE2
ID0gIHNpbGtfRElWMzJfdmFyUSggTlNRLT5wcmV2X2dhaW5fUTE2LCBHYWluc19RMTZbIHN1YmZy
IF0sIDE2ICk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2Fpbl9hZGpfUTE2ID0gKG9wdXNfaW50
MzIpMSA8PCAxNjsKKyAgICB9CisKKyAgICAvKiBTY2FsZSBpbnB1dCAqLworICAgIGludl9nYWlu
X1EyMyA9IHNpbGtfUlNISUZUX1JPVU5EKCBpbnZfZ2Fpbl9RMzEsIDggKTsKKworICAgIC8qIHBy
ZXBhcmUgaW52X2dhaW5fUTIzIGluIHBhY2tlZCA0IDMyLWJpdHMgKi8KKyAgICB4bW1faW52X2dh
aW5fUTIzID0gX21tX3NldDFfZXBpMzIoaW52X2dhaW5fUTIzKTsKKworICAgIGZvciggaSA9IDA7
IGkgPCBwc0VuY0MtPnN1YmZyX2xlbmd0aCAtIDM7IGkgKz0gNCApIHsKKyAgICAgICAgeG1tX3hf
UTNfeDJ4MCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJih4X1EzWyBpIF0gKSApICk7
CisgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMqLworICAgICAgICB4bW1feF9R
M194M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHhtbV94X1EzX3gyeDAsIF9NTV9TSFVGRkxFKCAw
LCAzLCAyLCAxICkgKTsKKworICAgICAgICB4bW1feF9RM194MngwID0gX21tX211bF9lcGkzMigg
eG1tX3hfUTNfeDJ4MCwgeG1tX2ludl9nYWluX1EyMyApOworICAgICAgICB4bW1feF9RM194M3gx
ID0gX21tX211bF9lcGkzMiggeG1tX3hfUTNfeDN4MSwgeG1tX2ludl9nYWluX1EyMyApOworCisg
ICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fc3JsaV9lcGk2NCggeG1tX3hfUTNfeDJ4MCwgMTYg
KTsKKyAgICAgICAgeG1tX3hfUTNfeDN4MSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1feF9RM194M3gx
LCAxNiApOworCisgICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV94
X1EzX3gyeDAsIHhtbV94X1EzX3gzeDEsIDB4Q0MgKTsKKworICAgICAgICBfbW1fc3RvcmV1X3Np
MTI4KCAoX19tMTI4aSAqKSgmKHhfc2NfUTEwWyBpIF0pKSwgeG1tX3hfUTNfeDJ4MCApOworICAg
IH0KKworICAgIGZvciggOyBpIDwgcHNFbmNDLT5zdWJmcl9sZW5ndGg7IGkrKyApIHsKKyAgICAg
ICAgeF9zY19RMTBbIGkgXSA9IHNpbGtfU01VTFdXKCB4X1EzWyBpIF0sIGludl9nYWluX1EyMyAp
OworICAgIH0KKworICAgIC8qIFNhdmUgaW52ZXJzZSBnYWluICovCisgICAgTlNRLT5wcmV2X2dh
aW5fUTE2ID0gR2FpbnNfUTE2WyBzdWJmciBdOworCisgICAgLyogQWZ0ZXIgcmV3aGl0ZW5pbmcg
dGhlIExUUCBzdGF0ZSBpcyB1bi1zY2FsZWQsIHNvIHNjYWxlIHdpdGggaW52X2dhaW5fUTE2ICov
CisgICAgaWYoIE5TUS0+cmV3aGl0ZV9mbGFnICkgeworICAgICAgICBpZiggc3ViZnIgPT0gMCAp
IHsKKyAgICAgICAgICAgIC8qIERvIExUUCBkb3duc2NhbGluZyAqLworICAgICAgICAgICAgaW52
X2dhaW5fUTMxID0gc2lsa19MU0hJRlQoIHNpbGtfU01VTFdCKCBpbnZfZ2Fpbl9RMzEsIExUUF9z
Y2FsZV9RMTQgKSwgMiApOworICAgICAgICB9CisgICAgICAgIGZvciggaSA9IE5TUS0+c0xUUF9i
dWZfaWR4IC0gbGFnIC0gTFRQX09SREVSIC8gMjsgaSA8IE5TUS0+c0xUUF9idWZfaWR4OyBpKysg
KSB7CisgICAgICAgICAgICBzaWxrX2Fzc2VydCggaSA8IE1BWF9GUkFNRV9MRU5HVEggKTsKKyAg
ICAgICAgICAgIHNMVFBfUTE1WyBpIF0gPSBzaWxrX1NNVUxXQiggaW52X2dhaW5fUTMxLCBzTFRQ
WyBpIF0gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEFkanVzdCBmb3IgY2hhbmdpbmcg
Z2FpbiAqLworICAgIGlmKCBnYWluX2Fkal9RMTYgIT0gKG9wdXNfaW50MzIpMSA8PCAxNiApIHsK
KyAgICAgICAgLyogU2NhbGUgbG9uZy10ZXJtIHNoYXBpbmcgc3RhdGUgKi8KKyAgICAgICAgewor
ICAgICAgICAgICAgX19tMTI4aSB4bW1fZ2Fpbl9hZGpfUTE2LCB4bW1fc0xUUF9zaHBfUTE0X3gy
eDAsIHhtbV9zTFRQX3NocF9RMTRfeDN4MTsKKworICAgICAgICAgICAgLyogcHJlcGFyZSBnYWlu
X2Fkal9RMTYgaW4gcGFja2VkIDQgMzItYml0cyAqLworICAgICAgICAgICAgeG1tX2dhaW5fYWRq
X1ExNiA9IF9tbV9zZXQxX2VwaTMyKCBnYWluX2Fkal9RMTYgKTsKKworICAgICAgICAgICAgZm9y
KCBpID0gTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aDsgaSA8
IE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIDM7IGkgKz0gNCApCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21tX2xvYWR1X3NpMTI4KCAoX19t
MTI4aSAqKSgmKE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gKSApICk7CisgICAgICAgICAgICAgICAg
LyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyovCisgICAgICAgICAgICAgICAgeG1tX3NMVFBf
c2hwX1ExNF94M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwg
X01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOworCisgICAgICAgICAgICAgICAgeG1tX3NMVFBf
c2hwX1ExNF94MngwID0gX21tX211bF9lcGkzMiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1f
Z2Fpbl9hZGpfUTE2ICk7CisgICAgICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94M3gxID0g
X21tX211bF9lcGkzMiggeG1tX3NMVFBfc2hwX1ExNF94M3gxLCB4bW1fZ2Fpbl9hZGpfUTE2ICk7
CisKKyAgICAgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgPSBfbW1fc3JsaV9lcGk2
NCggeG1tX3NMVFBfc2hwX1ExNF94MngwLCAxNiApOworICAgICAgICAgICAgICAgIHhtbV9zTFRQ
X3NocF9RMTRfeDN4MSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIDE2
ICk7CisKKyAgICAgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgPSBfbW1fYmxlbmRf
ZXBpMTYoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgeG1tX3NMVFBfc2hwX1ExNF94M3gxLCAweEND
ICk7CisKKyAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5T
US0+c0xUUF9zaHBfUTE0WyBpIF0gKSApLCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZm9yKCA7IGkgPCBOU1EtPnNMVFBfc2hwX2J1Zl9pZHg7
IGkrKyApIHsKKyAgICAgICAgICAgICAgICBOU1EtPnNMVFBfc2hwX1ExNFsgaSBdID0gc2lsa19T
TVVMV1coIGdhaW5fYWRqX1ExNiwgTlNRLT5zTFRQX3NocF9RMTRbIGkgXSApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvKiBTY2FsZSBsb25nLXRlcm0gcHJlZGljdGlvbiBzdGF0ZSAq
LworICAgICAgICAgICAgaWYoIHNpZ25hbF90eXBlID09IFRZUEVfVk9JQ0VEICYmIE5TUS0+cmV3
aGl0ZV9mbGFnID09IDAgKSB7CisgICAgICAgICAgICAgICAgZm9yKCBpID0gTlNRLT5zTFRQX2J1
Zl9pZHggLSBsYWcgLSBMVFBfT1JERVIgLyAyOyBpIDwgTlNRLT5zTFRQX2J1Zl9pZHggLSBkZWNp
c2lvbkRlbGF5OyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIHNMVFBfUTE1WyBpIF0gPSBz
aWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBzTFRQX1ExNVsgaSBdICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IoIGsgPSAwOyBrIDwgblN0YXRl
c0RlbGF5ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICAgICAgICAgIHBzREQgPSAmcHNEZWxE
ZWNbIGsgXTsKKworICAgICAgICAgICAgICAgIC8qIFNjYWxlIHNjYWxhciBzdGF0ZXMgKi8KKyAg
ICAgICAgICAgICAgICBwc0RELT5MRl9BUl9RMTQgPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2
LCBwc0RELT5MRl9BUl9RMTQgKTsKKworICAgICAgICAgICAgICAgIC8qIFNjYWxlIHNob3J0LXRl
cm0gcHJlZGljdGlvbiBhbmQgc2hhcGluZyBzdGF0ZXMgKi8KKyAgICAgICAgICAgICAgICBmb3Io
IGkgPSAwOyBpIDwgTlNRX0xQQ19CVUZfTEVOR1RIOyBpKysgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHBzREQtPnNMUENfUTE0WyBpIF0gPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBwc0RE
LT5zTFBDX1ExNFsgaSBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZv
ciggaSA9IDA7IGkgPCBNQVhfU0hBUEVfTFBDX09SREVSOyBpKysgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHBzREQtPnNBUjJfUTE0WyBpIF0gPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBw
c0RELT5zQVIyX1ExNFsgaSBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGZvciggaSA9IDA7IGkgPCBERUNJU0lPTl9ERUxBWTsgaSsrICkgeworICAgICAgICAgICAgICAg
ICAgICBwc0RELT5QcmVkX1ExNVsgIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIHBz
REQtPlByZWRfUTE1WyAgaSBdICk7CisgICAgICAgICAgICAgICAgICAgIHBzREQtPlNoYXBlX1Ex
NFsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgcHNERC0+U2hhcGVfUTE0WyBpIF0g
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsveDg2L05TUV9zc2UuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvTlNRX3NzZS5jCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTllNmU5NmNmYWI4NWM0N2FlZGQ1MmFkY2E1ZWM0
YjQ2MmFiODE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay94ODYvTlNRX3NzZS5jCisrKyAvZGV2L251bGwKQEAgLTEsNzE5ICswLDAgQEAKLS8qIENv
cHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5DCi0gICBXcml0dGVuIGJ5IFhpYW5n
TWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZwotCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICAgYXJlIG1ldDoKLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0gICAtIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCi0gICBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgot
ICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKLSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZkZWYgSEFWRV9D
T05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx4bW1pbnRy
aW4uaD4KLSNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KLSNp
bmNsdWRlICJtYWluLmgiCi0jaW5jbHVkZSAiY2VsdC94ODYveDg2Y3B1LmgiCi0jaW5jbHVkZSAi
c3RhY2tfYWxsb2MuaCIKLQotc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19uc3Ffc2NhbGVf
c3RhdGVzX3NzZTRfMSgKLSAgICBjb25zdCBzaWxrX2VuY29kZXJfc3RhdGUgKnBzRW5jQywgICAg
ICAgICAgIC8qIEkgICAgRW5jb2RlciBTdGF0ZSAgICAgICAgICAgICAgICAgICAqLwotICAgIHNp
bGtfbnNxX3N0YXRlICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3Rh
dGUgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICB4X1Ez
W10sICAgICAgICAgICAgICAgICAvKiBJICAgIGlucHV0IGluIFEzICAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIHhfc2NfUTEwW10sICAgICAgICAgICAgIC8q
IE8gICAgaW5wdXQgc2NhbGVkIHdpdGggMS9HYWluICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNf
aW50MTYgICAgc0xUUFtdLCAgICAgICAgICAgICAgICAgLyogSSAgICByZS13aGl0ZW5lZCBMVFAg
c3RhdGUgaW4gUTAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAgICBzTFRQX1ExNVtdLCAg
ICAgICAgICAgICAvKiBPICAgIExUUCBzdGF0ZSBtYXRjaGluZyBzY2FsZWQgaW5wdXQgKi8KLSAg
ICBvcHVzX2ludCAgICAgICAgICAgIHN1YmZyLCAgICAgICAgICAgICAgICAgIC8qIEkgICAgc3Vi
ZnJhbWUgbnVtYmVyICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAg
TFRQX3NjYWxlX1ExNCwgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICBHYWluc19RMTZbIE1BWF9OQl9TVUJG
UiBdLCAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBv
cHVzX2ludCAgICAgIHBpdGNoTFsgTUFYX05CX1NVQkZSIF0sIC8qIEkgICAgUGl0Y2ggbGFnICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgc2lnbmFsX3R5
cGUgICAgICAgICAgICAgLyogSSAgICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICov
Ci0pOwotCi1zdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXpl
cl8xMF8xNl9zc2U0XzEoCi0gICAgc2lsa19uc3Ffc3RhdGUgICAgICAqTlNRLCAgICAgICAgICAg
ICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBv
cHVzX2ludCAgICAgICAgICAgIHNpZ25hbFR5cGUsICAgICAgICAgICAgIC8qIEkgICAgU2lnbmFs
IHR5cGUgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9z
Y19RMTBbXSwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgb3B1c19pbnQ4ICAgICAgICAgICBwdWxzZXNbXSwgICAgICAgICAgICAgICAv
KiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDE2
ICAgICAgICAgIHhxW10sICAgICAgICAgICAgICAgICAgIC8qIE8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwg
ICAgICAgICAgICAgLyogSS9PICBMVFAgc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICovCi0g
ICAgY29uc3Qgb3B1c19pbnQxNiAgICBhX1ExMltdLCAgICAgICAgICAgICAgICAvKiBJICAgIFNo
b3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAg
IGJfUTE0W10sICAgICAgICAgICAgICAgIC8qIEkgICAgTG9uZyB0ZXJtIHByZWRpY3Rpb24gY29l
ZnMgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgQVJfc2hwX1ExM1tdLCAgICAgICAg
ICAgLyogSSAgICBOb2lzZSBzaGFwaW5nIEFSIGNvZWZzICAgICAgICAgICovCi0gICAgb3B1c19p
bnQgICAgICAgICAgICBsYWcsICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFBpdGNoIGxhZyAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIEhhcm1TaGFw
ZUZJUlBhY2tlZF9RMTQsIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
LwotICAgIG9wdXNfaW50ICAgICAgICAgICAgVGlsdF9RMTQsICAgICAgICAgICAgICAgLyogSSAg
ICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAg
ICAgICBMRl9zaHBfUTE0LCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIEdhaW5fUTE2LCAgICAgICAg
ICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9w
dXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICBsZW5n
dGgsICAgICAgICAgICAgICAgICAvKiBJICAgIElucHV0IGxlbmd0aCAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIHRhYmxlW11bNF0gICAgICAgICAgICAgIC8q
IEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKTsKLQotdm9pZCBzaWxr
X05TUV9zc2U0XzEoCi0gICAgY29uc3Qgc2lsa19lbmNvZGVyX3N0YXRlICAgICpwc0VuY0MsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBFbmNvZGVyIFN0YXRlICAg
ICAgICAgICAgICAgICAgICovCi0gICAgc2lsa19uc3Ffc3RhdGUgICAgICAgICAgICAgICpOU1Es
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3RhdGUg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgU2lkZUluZm9JbmRpY2VzICAgICAgICAgICAg
ICpwc0luZGljZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSS9PICBRdWFu
dGl6YXRpb24gSW5kaWNlcyAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICAg
ICAgICAgIHhfUTNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAg
ICBQcmVmaWx0ZXJlZCBpbnB1dCBzaWduYWwgICAgICAgICovCi0gICAgb3B1c19pbnQ4ICAgICAg
ICAgICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTyAgICBRdWFudGl6ZWQgcHVsc2Ugc2lnbmFsICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1
c19pbnQxNiAgICAgICAgICAgIFByZWRDb2VmX1ExMlsgMiAqIE1BWF9MUENfT1JERVIgXSwgICAg
ICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICovCi0gICAgY29u
c3Qgb3B1c19pbnQxNiAgICAgICAgICAgIExUUENvZWZfUTE0WyBMVFBfT1JERVIgKiBNQVhfTkJf
U1VCRlIgXSwgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgICovCi0g
ICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIEFSMl9RMTNbIE1BWF9OQl9TVUJGUiAqIE1B
WF9TSEFQRV9MUENfT1JERVIgXSwgLyogSSBOb2lzZSBzaGFwaW5nIGNvZWZzICAgICAgICAgICAg
ICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIEhhcm1TaGFwZUdhaW5fUTE0WyBN
QVhfTkJfU1VCRlIgXSwgICAgICAgICAgLyogSSAgICBMb25nIHRlcm0gc2hhcGluZyBjb2VmcyAg
ICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIFRpbHRfUTE0WyBNQVhf
TkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAgLyogSSAgICBTcGVjdHJhbCB0aWx0ICAgICAg
ICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgIExGX3NocF9R
MTRbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAgLyogSSAgICBMb3cgZnJlcXVlbmN5
IHNoYXBpbmcgY29lZnMgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgIEdh
aW5zX1ExNlsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAgICAgICAgLyogSSAgICBRdWFudGl6
YXRpb24gc3RlcCBzaXplcyAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAg
ICAgIHBpdGNoTFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBQ
aXRjaCBsYWdzICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAg
ICAgICAgICAgIExhbWJkYV9RMTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
SSAgICBSYXRlL2Rpc3RvcnRpb24gdHJhZGVvZmYgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19p
bnQgICAgICAgICAgICAgIExUUF9zY2FsZV9RMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSSAgICBMVFAgc3RhdGUgc2NhbGluZyAgICAgICAgICAgICAgICovCi0pCi17Ci0gICAg
b3B1c19pbnQgICAgICAgICAgICBrLCBsYWcsIHN0YXJ0X2lkeCwgTFNGX2ludGVycG9sYXRpb25f
ZmxhZzsKLSAgICBjb25zdCBvcHVzX2ludDE2ICAgICpBX1ExMiwgKkJfUTE0LCAqQVJfc2hwX1Ex
MzsKLSAgICBvcHVzX2ludDE2ICAgICAgICAgICpweHE7Ci0gICAgVkFSREVDTCggb3B1c19pbnQz
Miwgc0xUUF9RMTUgKTsKLSAgICBWQVJERUNMKCBvcHVzX2ludDE2LCBzTFRQICk7Ci0gICAgb3B1
c19pbnQzMiAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0OwotICAgIG9wdXNfaW50ICAg
ICAgICAgICAgb2Zmc2V0X1ExMDsKLSAgICBWQVJERUNMKCBvcHVzX2ludDMyLCB4X3NjX1ExMCAp
OwotCi0gICAgb3B1c19pbnQzMiAgIHRhYmxlWyA2NCBdWyA0IF07Ci0gICAgb3B1c19pbnQzMiAg
IHRtcDE7Ci0gICAgb3B1c19pbnQzMiAgIHExX1ExMCwgcTJfUTEwLCByZDFfUTIwLCByZDJfUTIw
OwotCi0gICAgU0FWRV9TVEFDSzsKLQotICAgIE5TUS0+cmFuZF9zZWVkID0gcHNJbmRpY2VzLT5T
ZWVkOwotCi0gICAgLyogU2V0IHVudm9pY2VkIGxhZyB0byB0aGUgcHJldmlvdXMgb25lLCBvdmVy
d3JpdGUgbGF0ZXIgZm9yIHZvaWNlZCAqLwotICAgIGxhZyA9IE5TUS0+bGFnUHJldjsKLQotICAg
IHNpbGtfYXNzZXJ0KCBOU1EtPnByZXZfZ2Fpbl9RMTYgIT0gMCApOwotCi0gICAgb2Zmc2V0X1Ex
MCA9IHNpbGtfUXVhbnRpemF0aW9uX09mZnNldHNfUTEwWyBwc0luZGljZXMtPnNpZ25hbFR5cGUg
Pj4gMSBdWyBwc0luZGljZXMtPnF1YW50T2Zmc2V0VHlwZSBdOwotCi0gICAgLyogMCAqLwotICAg
IHExX1ExMCAgPSBvZmZzZXRfUTEwOwotICAgIHEyX1ExMCAgPSBvZmZzZXRfUTEwICsgKCAxMDI0
IC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMCApOwotICAgIHJkMV9RMjAgPSBxMV9RMTAgKiBMYW1i
ZGFfUTEwOwotICAgIHJkMl9RMjAgPSBxMl9RMTAgKiBMYW1iZGFfUTEwOwotCi0gICAgdGFibGVb
IDMyIF1bIDAgXSA9IHExX1ExMDsKLSAgICB0YWJsZVsgMzIgXVsgMSBdID0gcTJfUTEwOwotICAg
IHRhYmxlWyAzMiBdWyAyIF0gPSAyICogKHExX1ExMCAtIHEyX1ExMCk7Ci0gICAgdGFibGVbIDMy
IF1bIDMgXSA9IChyZDFfUTIwIC0gcmQyX1EyMCkgKyAocTFfUTEwICogcTFfUTEwIC0gcTJfUTEw
ICogcTJfUTEwKTsKLQotICAgIC8qIC0xICovCi0gICAgcTFfUTEwICA9IG9mZnNldF9RMTAgLSAo
IDEwMjQgLSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICk7Ci0gICAgcTJfUTEwICA9IG9mZnNldF9R
MTA7Ci0gICAgcmQxX1EyMCA9IC0gcTFfUTEwICogTGFtYmRhX1ExMDsKLSAgICByZDJfUTIwID0g
cTJfUTEwICogTGFtYmRhX1ExMDsKLQotICAgIHRhYmxlWyAzMSBdWyAwIF0gPSBxMV9RMTA7Ci0g
ICAgdGFibGVbIDMxIF1bIDEgXSA9IHEyX1ExMDsKLSAgICB0YWJsZVsgMzEgXVsgMiBdID0gMiAq
IChxMV9RMTAgLSBxMl9RMTApOwotICAgIHRhYmxlWyAzMSBdWyAzIF0gPSAocmQxX1EyMCAtIHJk
Ml9RMjApICsgKHExX1ExMCAqIHExX1ExMCAtIHEyX1ExMCAqIHEyX1ExMCk7Ci0KLSAgICAvKiA+
IDAgKi8KLSAgICBmb3IgKGsgPSAxOyBrIDw9IDMxOyBrKyspCi0gICAgewotICAgICAgICB0bXAx
ID0gb2Zmc2V0X1ExMCArIHNpbGtfTFNISUZUKCBrLCAxMCApOwotCi0gICAgICAgIHExX1ExMCAg
PSB0bXAxIC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMDsKLSAgICAgICAgcTJfUTEwICA9IHRtcDEg
LSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICsgMTAyNDsKLSAgICAgICAgcmQxX1EyMCA9IHExX1Ex
MCAqIExhbWJkYV9RMTA7Ci0gICAgICAgIHJkMl9RMjAgPSBxMl9RMTAgKiBMYW1iZGFfUTEwOwot
Ci0gICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMCBdID0gcTFfUTEwOwotICAgICAgICB0YWJsZVsg
MzIgKyBrIF1bIDEgXSA9IHEyX1ExMDsKLSAgICAgICAgdGFibGVbIDMyICsgayBdWyAyIF0gPSAy
ICogKHExX1ExMCAtIHEyX1ExMCk7Ci0gICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMyBdID0gKHJk
MV9RMjAgLSByZDJfUTIwKSArIChxMV9RMTAgKiBxMV9RMTAgLSBxMl9RMTAgKiBxMl9RMTApOwot
ICAgIH0KLQotICAgIC8qIDwgLTEgKi8KLSAgICBmb3IgKGsgPSAtMzI7IGsgPD0gLTI7IGsrKykK
LSAgICB7Ci0gICAgICAgIHRtcDEgPSBvZmZzZXRfUTEwICsgc2lsa19MU0hJRlQoIGssIDEwICk7
Ci0KLSAgICAgICAgcTFfUTEwICA9IHRtcDEgKyBRVUFOVF9MRVZFTF9BREpVU1RfUTEwOwotICAg
ICAgICBxMl9RMTAgID0gdG1wMSArIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKyAxMDI0OwotICAg
ICAgICByZDFfUTIwID0gLSBxMV9RMTAgKiBMYW1iZGFfUTEwOwotICAgICAgICByZDJfUTIwID0g
LSBxMl9RMTAgKiBMYW1iZGFfUTEwOwotCi0gICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMCBdID0g
cTFfUTEwOwotICAgICAgICB0YWJsZVsgMzIgKyBrIF1bIDEgXSA9IHEyX1ExMDsKLSAgICAgICAg
dGFibGVbIDMyICsgayBdWyAyIF0gPSAyICogKHExX1ExMCAtIHEyX1ExMCk7Ci0gICAgICAgIHRh
YmxlWyAzMiArIGsgXVsgMyBdID0gKHJkMV9RMjAgLSByZDJfUTIwKSArIChxMV9RMTAgKiBxMV9R
MTAgLSBxMl9RMTAgKiBxMl9RMTApOwotICAgIH0KLQotICAgIGlmKCBwc0luZGljZXMtPk5MU0ZJ
bnRlcnBDb2VmX1EyID09IDQgKSB7Ci0gICAgICAgIExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcgPSAw
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcgPSAxOwotICAg
IH0KLQotICAgIEFMTE9DKCBzTFRQX1ExNSwKLSAgICAgICAgICAgcHNFbmNDLT5sdHBfbWVtX2xl
bmd0aCArIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCBvcHVzX2ludDMyICk7Ci0gICAgQUxMT0MoIHNM
VFAsIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKyBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgb3B1c19p
bnQxNiApOwotICAgIEFMTE9DKCB4X3NjX1ExMCwgcHNFbmNDLT5zdWJmcl9sZW5ndGgsIG9wdXNf
aW50MzIgKTsKLSAgICAvKiBTZXQgdXAgcG9pbnRlcnMgdG8gc3RhcnQgb2Ygc3ViIGZyYW1lICov
Ci0gICAgTlNRLT5zTFRQX3NocF9idWZfaWR4ID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aDsKLSAg
ICBOU1EtPnNMVFBfYnVmX2lkeCAgICAgPSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOwotICAgIHB4
cSAgICAgICAgICAgICAgICAgICA9ICZOU1EtPnhxWyBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoIF07
Ci0gICAgZm9yKCBrID0gMDsgayA8IHBzRW5jQy0+bmJfc3ViZnI7IGsrKyApIHsKLSAgICAgICAg
QV9RMTIgICAgICA9ICZQcmVkQ29lZl9RMTJbICgoIGsgPj4gMSApIHwgKCAxIC0gTFNGX2ludGVy
cG9sYXRpb25fZmxhZyApKSAqIE1BWF9MUENfT1JERVIgXTsKLSAgICAgICAgQl9RMTQgICAgICA9
ICZMVFBDb2VmX1ExNFsgayAqIExUUF9PUkRFUiBdOwotICAgICAgICBBUl9zaHBfUTEzID0gJkFS
Ml9RMTNbICAgICBrICogTUFYX1NIQVBFX0xQQ19PUkRFUiBdOwotCi0gICAgICAgIC8qIE5vaXNl
IHNoYXBlIHBhcmFtZXRlcnMgKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIEhhcm1TaGFwZUdhaW5f
UTE0WyBrIF0gPj0gMCApOwotICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICA9ICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaWxrX1JTSElGVCggSGFybVNoYXBlR2Fpbl9RMTRbIGsgXSwg
MiApOwotICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0IHw9IHNpbGtfTFNISUZUKCAob3B1
c19pbnQzMilzaWxrX1JTSElGVCggSGFybVNoYXBlR2Fpbl9RMTRbIGsgXSwgMSApLCAxNiApOwot
Ci0gICAgICAgIE5TUS0+cmV3aGl0ZV9mbGFnID0gMDsKLSAgICAgICAgaWYoIHBzSW5kaWNlcy0+
c2lnbmFsVHlwZSA9PSBUWVBFX1ZPSUNFRCApIHsKLSAgICAgICAgICAgIC8qIFZvaWNlZCAqLwot
ICAgICAgICAgICAgbGFnID0gcGl0Y2hMWyBrIF07Ci0KLSAgICAgICAgICAgIC8qIFJlLXdoaXRl
bmluZyAqLwotICAgICAgICAgICAgaWYoICggayAmICggMyAtIHNpbGtfTFNISUZUKCBMU0ZfaW50
ZXJwb2xhdGlvbl9mbGFnLCAxICkgKSApID09IDAgKSB7Ci0gICAgICAgICAgICAgICAgLyogUmV3
aGl0ZW4gd2l0aCBuZXcgQSBjb2VmcyAqLwotICAgICAgICAgICAgICAgIHN0YXJ0X2lkeCA9IHBz
RW5jQy0+bHRwX21lbV9sZW5ndGggLSBsYWcgLSBwc0VuY0MtPnByZWRpY3RMUENPcmRlciAtIExU
UF9PUkRFUiAvIDI7Ci0gICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHN0YXJ0X2lkeCA+IDAg
KTsKLQotICAgICAgICAgICAgICAgIHNpbGtfTFBDX2FuYWx5c2lzX2ZpbHRlciggJnNMVFBbIHN0
YXJ0X2lkeCBdLCAmTlNRLT54cVsgc3RhcnRfaWR4ICsgayAqIHBzRW5jQy0+c3ViZnJfbGVuZ3Ro
IF0sCi0gICAgICAgICAgICAgICAgICAgIEFfUTEyLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoIC0g
c3RhcnRfaWR4LCBwc0VuY0MtPnByZWRpY3RMUENPcmRlciwgcHNFbmNDLT5hcmNoICk7Ci0KLSAg
ICAgICAgICAgICAgICBOU1EtPnJld2hpdGVfZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgTlNR
LT5zTFRQX2J1Zl9pZHggPSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgc2lsa19uc3Ffc2NhbGVfc3RhdGVzX3NzZTRfMSggcHNFbmND
LCBOU1EsIHhfUTMsIHhfc2NfUTEwLCBzTFRQLCBzTFRQX1ExNSwgaywgTFRQX3NjYWxlX1ExNCwg
R2FpbnNfUTE2LCBwaXRjaEwsIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSApOwotCi0gICAgICAgIGlm
ICggb3B1c19saWtlbHkoICggMTAgPT0gcHNFbmNDLT5zaGFwaW5nTFBDT3JkZXIgKSAmJiAoIDE2
ID09IHBzRW5jQy0+cHJlZGljdExQQ09yZGVyKSApICkKLSAgICAgICAgewotICAgICAgICAgICAg
c2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfMTBfMTZfc3NlNF8xKCBOU1EsIHBzSW5kaWNlcy0+
c2lnbmFsVHlwZSwgeF9zY19RMTAsIHB1bHNlcywgcHhxLCBzTFRQX1ExNSwgQV9RMTIsIEJfUTE0
LAotICAgICAgICAgICAgICAgIEFSX3NocF9RMTMsIGxhZywgSGFybVNoYXBlRklSUGFja2VkX1Ex
NCwgVGlsdF9RMTRbIGsgXSwgTEZfc2hwX1ExNFsgayBdLCBHYWluc19RMTZbIGsgXSwKLSAgICAg
ICAgICAgICAgICBvZmZzZXRfUTEwLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCwgJih0YWJsZVszMl0p
ICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBzaWxr
X25vaXNlX3NoYXBlX3F1YW50aXplciggTlNRLCBwc0luZGljZXMtPnNpZ25hbFR5cGUsIHhfc2Nf
UTEwLCBwdWxzZXMsIHB4cSwgc0xUUF9RMTUsIEFfUTEyLCBCX1ExNCwKLSAgICAgICAgICAgICAg
ICBBUl9zaHBfUTEzLCBsYWcsIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQsIFRpbHRfUTE0WyBrIF0s
IExGX3NocF9RMTRbIGsgXSwgR2FpbnNfUTE2WyBrIF0sIExhbWJkYV9RMTAsCi0gICAgICAgICAg
ICAgICAgb2Zmc2V0X1ExMCwgcHNFbmNDLT5zdWJmcl9sZW5ndGgsIHBzRW5jQy0+c2hhcGluZ0xQ
Q09yZGVyLCBwc0VuY0MtPnByZWRpY3RMUENPcmRlciwgcHNFbmNDLT5hcmNoICk7Ci0gICAgICAg
IH0KLQotICAgICAgICB4X1EzICAgKz0gcHNFbmNDLT5zdWJmcl9sZW5ndGg7Ci0gICAgICAgIHB1
bHNlcyArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsKLSAgICAgICAgcHhxICAgICs9IHBzRW5jQy0+
c3ViZnJfbGVuZ3RoOwotICAgIH0KLQotICAgIC8qIFVwZGF0ZSBsYWdQcmV2IGZvciBuZXh0IGZy
YW1lICovCi0gICAgTlNRLT5sYWdQcmV2ID0gcGl0Y2hMWyBwc0VuY0MtPm5iX3N1YmZyIC0gMSBd
OwotCi0gICAgLyogU2F2ZSBxdWFudGl6ZWQgc3BlZWNoIGFuZCBub2lzZSBzaGFwaW5nIHNpZ25h
bHMgKi8KLSAgICBzaWxrX21lbW1vdmUoIE5TUS0+eHEsICAgICAgICAgICAmTlNRLT54cVsgICAg
ICAgICAgIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoIF0sIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKiBz
aXplb2YoIG9wdXNfaW50MTYgKSApOwotICAgIHNpbGtfbWVtbW92ZSggTlNRLT5zTFRQX3NocF9R
MTQsICZOU1EtPnNMVFBfc2hwX1ExNFsgcHNFbmNDLT5mcmFtZV9sZW5ndGggXSwgcHNFbmNDLT5s
dHBfbWVtX2xlbmd0aCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7Ci0gICAgUkVTVE9SRV9TVEFD
SzsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogc2lsa19u
b2lzZV9zaGFwZV9xdWFudGl6ZXJfMTBfMTYgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCi1zdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25vaXNlX3NoYXBlX3F1
YW50aXplcl8xMF8xNl9zc2U0XzEoCi0gICAgc2lsa19uc3Ffc3RhdGUgICAgICAqTlNRLCAgICAg
ICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8K
LSAgICBvcHVzX2ludCAgICAgICAgICAgIHNpZ25hbFR5cGUsICAgICAgICAgICAgIC8qIEkgICAg
U2lnbmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIg
ICAgeF9zY19RMTBbXSwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCi0gICAgb3B1c19pbnQ4ICAgICAgICAgICBwdWxzZXNbXSwgICAgICAgICAg
ICAgICAvKiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVz
X2ludDE2ICAgICAgICAgIHhxW10sICAgICAgICAgICAgICAgICAgIC8qIE8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9R
MTVbXSwgICAgICAgICAgICAgLyogSS9PICBMVFAgc3RhdGUgICAgICAgICAgICAgICAgICAgICAg
ICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICBhX1ExMltdLCAgICAgICAgICAgICAgICAvKiBJ
ICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgKi8KLSAgICBjb25zdCBvcHVzX2lu
dDE2ICAgIGJfUTE0W10sICAgICAgICAgICAgICAgIC8qIEkgICAgTG9uZyB0ZXJtIHByZWRpY3Rp
b24gY29lZnMgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgQVJfc2hwX1ExM1tdLCAg
ICAgICAgICAgLyogSSAgICBOb2lzZSBzaGFwaW5nIEFSIGNvZWZzICAgICAgICAgICovCi0gICAg
b3B1c19pbnQgICAgICAgICAgICBsYWcsICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFBpdGNo
IGxhZyAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIEhh
cm1TaGFwZUZJUlBhY2tlZF9RMTQsIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgVGlsdF9RMTQsICAgICAgICAgICAgICAg
LyogSSAgICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQz
MiAgICAgICAgICBMRl9zaHBfUTE0LCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIEdhaW5fUTE2LCAg
ICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwot
ICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwgICAgICAgICAgICAgLyogSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQgICAgICAgICAg
ICBsZW5ndGgsICAgICAgICAgICAgICAgICAvKiBJICAgIElucHV0IGxlbmd0aCAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIHRhYmxlW11bNF0gICAgICAgICAg
ICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKQotewotICAg
IG9wdXNfaW50ICAgICBpOwotICAgIG9wdXNfaW50MzIgICBMVFBfcHJlZF9RMTMsIExQQ19wcmVk
X1ExMCwgbl9BUl9RMTIsIG5fTFRQX1ExMzsKLSAgICBvcHVzX2ludDMyICAgbl9MRl9RMTIsIHJf
UTEwLCBxMV9RMCwgcTFfUTEwLCBxMl9RMTA7Ci0gICAgb3B1c19pbnQzMiAgIGV4Y19RMTQsIExQ
Q19leGNfUTE0LCB4cV9RMTQsIEdhaW5fUTEwOwotICAgIG9wdXNfaW50MzIgICB0bXAxLCB0bXAy
LCBzTEZfQVJfc2hwX1ExNDsKLSAgICBvcHVzX2ludDMyICAgKnBzTFBDX1ExNCwgKnNocF9sYWdf
cHRyLCAqcHJlZF9sYWdfcHRyOwotCi0gICAgX19tMTI4aSB4bW1fdGVtcGEsIHhtbV90ZW1wYjsK
LQotICAgIF9fbTEyOGkgeG1tX29uZTsKLQotICAgIF9fbTEyOGkgcHNMUENfUTE0X2hpXzAxMjM0
NTY3LCBwc0xQQ19RMTRfaGlfODlBQkNERUY7Ci0gICAgX19tMTI4aSBwc0xQQ19RMTRfbG9fMDEy
MzQ1NjcsIHBzTFBDX1ExNF9sb184OUFCQ0RFRjsKLSAgICBfX20xMjhpIGFfUTEyXzAxMjM0NTY3
LCAgICAgICAgYV9RMTJfODlBQkNERUY7Ci0KLSAgICBfX20xMjhpIHNBUjJfUTE0X2hpXzc2NTQz
MjEwLCBzQVIyX1ExNF9sb183NjU0MzIxMDsKLSAgICBfX20xMjhpIEFSX3NocF9RMTNfNzY1NDMy
MTA7Ci0KLSAgICBzaHBfbGFnX3B0ciAgPSAmTlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9z
aHBfYnVmX2lkeCAtIGxhZyArIEhBUk1fU0hBUEVfRklSX1RBUFMgLyAyIF07Ci0gICAgcHJlZF9s
YWdfcHRyID0gJnNMVFBfUTE1WyBOU1EtPnNMVFBfYnVmX2lkeCAtIGxhZyArIExUUF9PUkRFUiAv
IDIgXTsKLSAgICBHYWluX1ExMCAgICAgPSBzaWxrX1JTSElGVCggR2Fpbl9RMTYsIDYgKTsKLQot
ICAgIC8qIFNldCB1cCBzaG9ydCB0ZXJtIEFSIHN0YXRlICovCi0gICAgcHNMUENfUTE0ID0gJk5T
US0+c0xQQ19RMTRbIE5TUV9MUENfQlVGX0xFTkdUSCAtIDEgXTsKLQotICAgIHNMRl9BUl9zaHBf
UTE0ID0gTlNRLT5zTEZfQVJfc2hwX1ExNDsKLSAgICB4cV9RMTQgICAgICAgICA9IHBzTFBDX1Ex
NFsgMCBdOwotICAgIExUUF9wcmVkX1ExMyAgID0gMDsKLQotICAgIC8qIGxvYWQgYV9RMTIgKi8K
LSAgICB4bW1fb25lID0gX21tX3NldF9lcGk4KCAxLCAwLCAzLCAyLCA1LCA0LCA3LCA2LCA5LCA4
LCAxMSwgMTAsIDEzLCAxMiwgMTUsIDE0ICk7Ci0KLSAgICAvKiBsb2FkIGFfUTEyWzBdIC0gYV9R
MTJbN10gKi8KLSAgICBhX1ExMl8wMTIzNDU2NyA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkg
KikoJmFfUTEyWyAwIF0gKSApOwotICAgIC8qIGxvYWQgYV9RMTJbIDggXSAtIGFfUTEyWyAxNSBd
ICovCi0gICAgYV9RMTJfODlBQkNERUYgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZh
X1ExMlsgOCBdICkgKTsKLQotICAgIGFfUTEyXzAxMjM0NTY3ID0gX21tX3NodWZmbGVfZXBpOCgg
YV9RMTJfMDEyMzQ1NjcsIHhtbV9vbmUgKTsKLSAgICBhX1ExMl84OUFCQ0RFRiA9IF9tbV9zaHVm
ZmxlX2VwaTgoIGFfUTEyXzg5QUJDREVGLCB4bW1fb25lICk7Ci0KLSAgICAvKiBsb2FkIEFSX3No
cF9RMTMgKi8KLSAgICBBUl9zaHBfUTEzXzc2NTQzMjEwID0gX21tX2xvYWR1X3NpMTI4KCAoX19t
MTI4aSAqKSgmQVJfc2hwX1ExM1swXSApICk7Ci0KLSAgICAvKiBsb2FkIHBzTFBDX1ExNCAqLwot
ICAgIHhtbV9vbmUgPSBfbW1fc2V0X2VwaTgoMTUsIDE0LCAxMSwgMTAsIDcsIDYsIDMsIDIsIDEz
LCAxMiwgOSwgOCwgNSwgNCwgMSwgMCApOwotCi0gICAgeG1tX3RlbXBhID0gX21tX2xvYWR1X3Np
MTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0Wy0xNl0pICk7Ci0gICAgeG1tX3RlbXBiID0gX21t
X2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0Wy0xMl0pICk7Ci0KLSAgICB4bW1f
dGVtcGEgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGEsIHhtbV9vbmUgKTsKLSAgICB4bW1f
dGVtcGIgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGIsIHhtbV9vbmUgKTsKLQotICAgIHBz
TFBDX1ExNF9oaV84OUFCQ0RFRiA9IF9tbV91bnBhY2toaV9lcGk2NCggeG1tX3RlbXBhLCB4bW1f
dGVtcGIgKTsKLSAgICBwc0xQQ19RMTRfbG9fODlBQkNERUYgPSBfbW1fdW5wYWNrbG9fZXBpNjQo
IHhtbV90ZW1wYSwgeG1tX3RlbXBiICk7Ci0KLSAgICB4bW1fdGVtcGEgPSBfbW1fbG9hZHVfc2kx
MjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbIC04IF0pICk7Ci0gICAgeG1tX3RlbXBiID0gX21t
X2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0WyAtNCBdKSApOwotCi0gICAgeG1t
X3RlbXBhID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBhLCB4bW1fb25lICk7Ci0gICAgeG1t
X3RlbXBiID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBiLCB4bW1fb25lICk7Ci0KLSAgICBw
c0xQQ19RMTRfaGlfMDEyMzQ1NjcgPSBfbW1fdW5wYWNraGlfZXBpNjQoIHhtbV90ZW1wYSwgeG1t
X3RlbXBiICk7Ci0gICAgcHNMUENfUTE0X2xvXzAxMjM0NTY3ID0gX21tX3VucGFja2xvX2VwaTY0
KCB4bW1fdGVtcGEsIHhtbV90ZW1wYiApOwotCi0gICAgLyogbG9hZCBzQVIyX1ExNCAqLwotICAg
IHhtbV90ZW1wYSA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJihOU1EtPnNBUjJfUTE0
WyAwIF0pICkgKTsKLSAgICB4bW1fdGVtcGIgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICop
KCYoTlNRLT5zQVIyX1ExNFsgNCBdKSApICk7Ci0KLSAgICB4bW1fdGVtcGEgPSBfbW1fc2h1ZmZs
ZV9lcGk4KCB4bW1fdGVtcGEsIHhtbV9vbmUgKTsKLSAgICB4bW1fdGVtcGIgPSBfbW1fc2h1ZmZs
ZV9lcGk4KCB4bW1fdGVtcGIsIHhtbV9vbmUgKTsKLQotICAgIHNBUjJfUTE0X2hpXzc2NTQzMjEw
ID0gX21tX3VucGFja2hpX2VwaTY0KCB4bW1fdGVtcGEsIHhtbV90ZW1wYiApOwotICAgIHNBUjJf
UTE0X2xvXzc2NTQzMjEwID0gX21tX3VucGFja2xvX2VwaTY0KCB4bW1fdGVtcGEsIHhtbV90ZW1w
YiApOwotCi0gICAgLyogcHJlcGFyZSAxIGluIDggKiAxNmJpdCAqLwotICAgIHhtbV9vbmUgPSBf
bW1fc2V0MV9lcGkxNigxKTsKLQotICAgIGZvciggaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApCi0g
ICAgewotICAgICAgICAvKiBTaG9ydC10ZXJtIHByZWRpY3Rpb24gKi8KLSAgICAgICAgX19tMTI4
aSB4bW1faGlfMDcsIHhtbV9oaV84RiwgeG1tX2xvXzA3LCB4bW1fbG9fOEY7Ci0KLSAgICAgICAg
LyogQXZvaWRzIGludHJvZHVjaW5nIGEgYmlhcyBiZWNhdXNlIHNpbGtfU01MQVdCKCkgYWx3YXlz
IHJvdW5kcyB0byAtaW5mICovCi0gICAgICAgIExQQ19wcmVkX1ExMCA9IDg7IC8qIHNpbGtfUlNI
SUZUKCBwcmVkaWN0TFBDT3JkZXIsIDEgKTsgKi8KLQotICAgICAgICAvKiBzaGlmdCBwc0xQQ19R
MTQgKi8KLSAgICAgICAgcHNMUENfUTE0X2hpXzg5QUJDREVGID0gX21tX2FsaWducl9lcGk4KCBw
c0xQQ19RMTRfaGlfMDEyMzQ1NjcsIHBzTFBDX1ExNF9oaV84OUFCQ0RFRiwgMiApOwotICAgICAg
ICBwc0xQQ19RMTRfbG9fODlBQkNERUYgPSBfbW1fYWxpZ25yX2VwaTgoIHBzTFBDX1ExNF9sb18w
MTIzNDU2NywgcHNMUENfUTE0X2xvXzg5QUJDREVGLCAyICk7Ci0KLSAgICAgICAgcHNMUENfUTE0
X2hpXzAxMjM0NTY3ID0gX21tX3NybGlfc2kxMjgoIHBzTFBDX1ExNF9oaV8wMTIzNDU2NywgMiAp
OwotICAgICAgICBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcgPSBfbW1fc3JsaV9zaTEyOCggcHNMUENf
UTE0X2xvXzAxMjM0NTY3LCAyICk7Ci0KLSAgICAgICAgcHNMUENfUTE0X2hpXzAxMjM0NTY3ID0g
X21tX2luc2VydF9lcGkxNiggcHNMUENfUTE0X2hpXzAxMjM0NTY3LCAoeHFfUTE0ID4+IDE2KSwg
NyApOwotICAgICAgICBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcgPSBfbW1faW5zZXJ0X2VwaTE2KCBw
c0xQQ19RMTRfbG9fMDEyMzQ1NjcsICh4cV9RMTQpLCAgICAgICA3ICk7Ci0KLSAgICAgICAgLyog
aGlnaCBwYXJ0LCB1c2UgcG1hZGR3ZCwgcmVzdWx0cyBpbiA0IDMyLWJpdCAqLwotICAgICAgICB4
bW1faGlfMDcgPSBfbW1fbWFkZF9lcGkxNiggcHNMUENfUTE0X2hpXzAxMjM0NTY3LCBhX1ExMl8w
MTIzNDU2NyApOwotICAgICAgICB4bW1faGlfOEYgPSBfbW1fbWFkZF9lcGkxNiggcHNMUENfUTE0
X2hpXzg5QUJDREVGLCBhX1ExMl84OUFCQ0RFRiApOwotCi0gICAgICAgIC8qIGxvdyBwYXJ0LCB1
c2UgcG11bGh3LCByZXN1bHRzIGluIDggMTYtYml0LCBub3RlIHdlIG5lZWQgc2ltdWxhdGUgdW5z
aWduZWQgKiBzaWduZWQsIF9tbV9zcmFpX2VwaTE2KHBzTFBDX1ExNF9sb18wMTIzNDU2NywgMTUp
ICovCi0gICAgICAgIHhtbV90ZW1wYSA9IF9tbV9jbXBndF9lcGkxNiggX21tX3NldHplcm9fc2kx
MjgoKSwgcHNMUENfUTE0X2xvXzAxMjM0NTY3ICk7Ci0gICAgICAgIHhtbV90ZW1wYiA9IF9tbV9j
bXBndF9lcGkxNiggX21tX3NldHplcm9fc2kxMjgoKSwgcHNMUENfUTE0X2xvXzg5QUJDREVGICk7
Ci0KLSAgICAgICAgeG1tX3RlbXBhID0gX21tX2FuZF9zaTEyOCggeG1tX3RlbXBhLCBhX1ExMl8w
MTIzNDU2NyApOwotICAgICAgICB4bW1fdGVtcGIgPSBfbW1fYW5kX3NpMTI4KCB4bW1fdGVtcGIs
IGFfUTEyXzg5QUJDREVGICk7Ci0KLSAgICAgICAgeG1tX2xvXzA3ID0gX21tX211bGhpX2VwaTE2
KCBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcsIGFfUTEyXzAxMjM0NTY3ICk7Ci0gICAgICAgIHhtbV9s
b184RiA9IF9tbV9tdWxoaV9lcGkxNiggcHNMUENfUTE0X2xvXzg5QUJDREVGLCBhX1ExMl84OUFC
Q0RFRiApOwotCi0gICAgICAgIHhtbV9sb18wNyA9IF9tbV9hZGRfZXBpMTYoIHhtbV9sb18wNywg
eG1tX3RlbXBhICk7Ci0gICAgICAgIHhtbV9sb184RiA9IF9tbV9hZGRfZXBpMTYoIHhtbV9sb184
RiwgeG1tX3RlbXBiICk7Ci0KLSAgICAgICAgeG1tX2xvXzA3ID0gX21tX21hZGRfZXBpMTYoIHht
bV9sb18wNywgeG1tX29uZSApOwotICAgICAgICB4bW1fbG9fOEYgPSBfbW1fbWFkZF9lcGkxNigg
eG1tX2xvXzhGLCB4bW1fb25lICk7Ci0KLSAgICAgICAgLyogYWNjdW11bGF0ZSAqLwotICAgICAg
ICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIHhtbV9oaV84RiApOwotICAg
ICAgICB4bW1fbG9fMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1fbG9fMDcsIHhtbV9sb184RiApOwot
Ci0gICAgICAgIHhtbV9oaV8wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9oaV8wNywgeG1tX2xvXzA3
ICk7Ci0KLSAgICAgICAgeG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3LCBfbW1f
dW5wYWNraGlfZXBpNjQoeG1tX2hpXzA3LCB4bW1faGlfMDcgKSApOwotICAgICAgICB4bW1faGlf
MDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIF9tbV9zaHVmZmxlbG9fZXBpMTYoeG1tX2hp
XzA3LCAweDBFICkgKTsKLQotICAgICAgICBMUENfcHJlZF9RMTAgKz0gX21tX2N2dHNpMTI4X3Np
MzIoIHhtbV9oaV8wNyApOwotCi0gICAgICAgIC8qIExvbmctdGVybSBwcmVkaWN0aW9uICovCi0g
ICAgICAgIGlmICggb3B1c19saWtlbHkoIHNpZ25hbFR5cGUgPT0gVFlQRV9WT0lDRUQgKSApIHsK
LSAgICAgICAgICAgIC8qIFVucm9sbGVkIGxvb3AgKi8KLSAgICAgICAgICAgIC8qIEF2b2lkcyBp
bnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVzZSBzaWxrX1NNTEFXQigpIGFsd2F5cyByb3VuZHMgdG8g
LWluZiAqLwotICAgICAgICAgICAgTFRQX3ByZWRfUTEzID0gMjsKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBfX20xMjhpIGJfUTE0XzMyMTAsIGJfUTE0XzAxMjMsIHByZWRfbGFnX3B0
cl8wMTIzOwotCi0gICAgICAgICAgICAgICAgYl9RMTRfMzIxMCA9IE9QX0NWVEVQSTE2X0VQSTMy
X002NCggYl9RMTQgKTsKLSAgICAgICAgICAgICAgICBiX1ExNF8wMTIzID0gX21tX3NodWZmbGVf
ZXBpMzIoIGJfUTE0XzMyMTAsIDB4MUIgKTsKLQotICAgICAgICAgICAgICAgIC8qIGxvYWRlZDog
WzBdIFstMV0gWy0yXSBbLTNdICovCi0gICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyXzAxMjMg
PSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwcmVkX2xhZ19wdHJbIC0zIF0gKSApOwot
ICAgICAgICAgICAgICAgIC8qIHNodWZmbGUgdG8gWy0zXSBbLTJdIFstMV0gWzBdIGFuZCB0byBu
ZXcgeG1tICovCi0gICAgICAgICAgICAgICAgeG1tX3RlbXBhID0gX21tX3NodWZmbGVfZXBpMzIo
IHByZWRfbGFnX3B0cl8wMTIzLCAweDFCICk7Ci0gICAgICAgICAgICAgICAgLyo2NC1iaXQgbXVs
dGlwbHksIGFbMl0gKiBiWy0yXSwgYVswXSAqIGJbMF0gKi8KLSAgICAgICAgICAgICAgICB4bW1f
dGVtcGEgPSBfbW1fbXVsX2VwaTMyKCB4bW1fdGVtcGEsIGJfUTE0XzMyMTAgKTsKLSAgICAgICAg
ICAgICAgICAvKiByaWdodCBzaGlmdCAyIGJ5dGVzICgxNiBiaXRzKSwgemVybyBleHRlbmRlZCAq
LwotICAgICAgICAgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9zcmxpX3NpMTI4KCB4bW1fdGVtcGEs
IDIgKTsKLQotICAgICAgICAgICAgICAgIC8qIGFbMV0gKiBiWy0xXSwgYVszXSAqIGJbLTNdICov
Ci0gICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyXzAxMjMgPSBfbW1fbXVsX2VwaTMyKCBwcmVk
X2xhZ19wdHJfMDEyMywgYl9RMTRfMDEyMyApOwotICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0
cl8wMTIzID0gX21tX3NybGlfc2kxMjgoIHByZWRfbGFnX3B0cl8wMTIzLCAyICk7Ci0KLSAgICAg
ICAgICAgICAgICBwcmVkX2xhZ19wdHJfMDEyMyA9IF9tbV9hZGRfZXBpMzIoIHByZWRfbGFnX3B0
cl8wMTIzLCB4bW1fdGVtcGEgKTsKLSAgICAgICAgICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdo
dCA4IGJ5dGVzKi8KLSAgICAgICAgICAgICAgICB4bW1fdGVtcGEgPSBfbW1fc2h1ZmZsZV9lcGkz
MiggcHJlZF9sYWdfcHRyXzAxMjMsIF9NTV9TSFVGRkxFKCAwLCAwLCAzLCAyICkgKTsKLSAgICAg
ICAgICAgICAgICB4bW1fdGVtcGEgPSBfbW1fYWRkX2VwaTMyKCB4bW1fdGVtcGEsIHByZWRfbGFn
X3B0cl8wMTIzICk7Ci0KLSAgICAgICAgICAgICAgICBMVFBfcHJlZF9RMTMgKz0gX21tX2N2dHNp
MTI4X3NpMzIoIHhtbV90ZW1wYSApOwotCi0gICAgICAgICAgICAgICAgTFRQX3ByZWRfUTEzID0g
c2lsa19TTUxBV0IoIExUUF9wcmVkX1ExMywgcHJlZF9sYWdfcHRyWyAtNCBdLCBiX1ExNFsgNCBd
ICk7Ci0gICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyKys7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICAvKiBOb2lzZSBzaGFwZSBmZWVkYmFjayAqLwotICAgICAgICBOU1Et
PnNBUjJfUTE0WyA5IF0gPSBOU1EtPnNBUjJfUTE0WyA4IF07Ci0gICAgICAgIE5TUS0+c0FSMl9R
MTRbIDggXSA9IF9tbV9jdnRzaTEyOF9zaTMyKCBfbW1fc3JsaV9zaTEyOChfbW1fdW5wYWNraGlf
ZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCBzQVIyX1ExNF9oaV83NjU0MzIxMCApLCAxMiAp
ICk7Ci0KLSAgICAgICAgc0FSMl9RMTRfaGlfNzY1NDMyMTAgPSBfbW1fc2xsaV9zaTEyOCggc0FS
Ml9RMTRfaGlfNzY1NDMyMTAsIDIgKTsKLSAgICAgICAgc0FSMl9RMTRfbG9fNzY1NDMyMTAgPSBf
bW1fc2xsaV9zaTEyOCggc0FSMl9RMTRfbG9fNzY1NDMyMTAsIDIgKTsKLQotICAgICAgICBzQVIy
X1ExNF9oaV83NjU0MzIxMCA9IF9tbV9pbnNlcnRfZXBpMTYoIHNBUjJfUTE0X2hpXzc2NTQzMjEw
LCAoeHFfUTE0ID4+IDE2KSwgMCApOwotICAgICAgICBzQVIyX1ExNF9sb183NjU0MzIxMCA9IF9t
bV9pbnNlcnRfZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCAoeHFfUTE0KSwgICAgICAgMCAp
OwotCi0gICAgICAgIC8qIGhpZ2ggcGFydCwgdXNlIHBtYWRkd2QsIHJlc3VsdHMgaW4gNCAzMi1i
aXQgKi8KLSAgICAgICAgeG1tX2hpXzA3ID0gX21tX21hZGRfZXBpMTYoIHNBUjJfUTE0X2hpXzc2
NTQzMjEwLCBBUl9zaHBfUTEzXzc2NTQzMjEwICk7Ci0KLSAgICAgICAgLyogbG93IHBhcnQsIHVz
ZSBwbXVsaHcsIHJlc3VsdHMgaW4gOCAxNi1iaXQsIG5vdGUgd2UgbmVlZCBzaW11bGF0ZSB1bnNp
Z25lZCAqIHNpZ25lZCxfbW1fc3JhaV9lcGkxNihzQVIyX1ExNF9sb183NjU0MzIxMCwgMTUpICov
Ci0gICAgICAgIHhtbV90ZW1wYSA9IF9tbV9jbXBndF9lcGkxNiggX21tX3NldHplcm9fc2kxMjgo
KSwgc0FSMl9RMTRfbG9fNzY1NDMyMTAgKTsKLSAgICAgICAgeG1tX3RlbXBhID0gX21tX2FuZF9z
aTEyOCggeG1tX3RlbXBhLCBBUl9zaHBfUTEzXzc2NTQzMjEwICk7Ci0KLSAgICAgICAgeG1tX2xv
XzA3ID0gX21tX211bGhpX2VwaTE2KCBzQVIyX1ExNF9sb183NjU0MzIxMCwgQVJfc2hwX1ExM183
NjU0MzIxMCApOwotICAgICAgICB4bW1fbG9fMDcgPSBfbW1fYWRkX2VwaTE2KCB4bW1fbG9fMDcs
IHhtbV90ZW1wYSApOwotCi0gICAgICAgIHhtbV9sb18wNyA9IF9tbV9tYWRkX2VwaTE2KCB4bW1f
bG9fMDcsIHhtbV9vbmUgKTsKLQotICAgICAgICAvKiBhY2N1bXVsYXRlICovCi0gICAgICAgIHht
bV9oaV8wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9oaV8wNywgeG1tX2xvXzA3ICk7Ci0KLSAgICAg
ICAgeG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3LCBfbW1fdW5wYWNraGlfZXBp
NjQoeG1tX2hpXzA3LCB4bW1faGlfMDcgKSApOwotICAgICAgICB4bW1faGlfMDcgPSBfbW1fYWRk
X2VwaTMyKCB4bW1faGlfMDcsIF9tbV9zaHVmZmxlbG9fZXBpMTYoeG1tX2hpXzA3LCAweDBFICkg
KTsKLQotICAgICAgICBuX0FSX1ExMiA9IDUgKyBfbW1fY3Z0c2kxMjhfc2kzMiggeG1tX2hpXzA3
ICk7Ci0KLSAgICAgICAgbl9BUl9RMTIgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTIsIE5TUS0+c0FS
Ml9RMTRbIDggXSwgQVJfc2hwX1ExM1sgOCBdICk7Ci0gICAgICAgIG5fQVJfUTEyID0gc2lsa19T
TUxBV0IoIG5fQVJfUTEyLCBOU1EtPnNBUjJfUTE0WyA5IF0sIEFSX3NocF9RMTNbIDkgXSApOwot
Ci0gICAgICAgIG5fQVJfUTEyID0gc2lsa19MU0hJRlQzMiggbl9BUl9RMTIsIDEgKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMSAtPiBRMTIgKi8KLSAgICAgICAgbl9BUl9R
MTIgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTIsIHNMRl9BUl9zaHBfUTE0LCBUaWx0X1ExNCApOwot
Ci0gICAgICAgIG5fTEZfUTEyID0gc2lsa19TTVVMV0IoIE5TUS0+c0xUUF9zaHBfUTE0WyBOU1Et
PnNMVFBfc2hwX2J1Zl9pZHggLSAxIF0sIExGX3NocF9RMTQgKTsKLSAgICAgICAgbl9MRl9RMTIg
PSBzaWxrX1NNTEFXVCggbl9MRl9RMTIsIHNMRl9BUl9zaHBfUTE0LCBMRl9zaHBfUTE0ICk7Ci0K
LSAgICAgICAgc2lsa19hc3NlcnQoIGxhZyA+IDAgfHwgc2lnbmFsVHlwZSAhPSBUWVBFX1ZPSUNF
RCApOwotCi0gICAgICAgIC8qIENvbWJpbmUgcHJlZGljdGlvbiBhbmQgbm9pc2Ugc2hhcGluZyBz
aWduYWxzICovCi0gICAgICAgIHRtcDEgPSBzaWxrX1NVQjMyKCBzaWxrX0xTSElGVDMyKCBMUENf
cHJlZF9RMTAsIDIgKSwgbl9BUl9RMTIgKTsgICAgICAgIC8qIFExMiAqLwotICAgICAgICB0bXAx
ID0gc2lsa19TVUIzMiggdG1wMSwgbl9MRl9RMTIgKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBRMTIgKi8KLSAgICAgICAgaWYoIGxhZyA+IDAgKSB7Ci0gICAgICAgICAg
ICAvKiBTeW1tZXRyaWMsIHBhY2tlZCBGSVIgY29lZmZpY2llbnRzICovCi0gICAgICAgICAgICBu
X0xUUF9RMTMgPSBzaWxrX1NNVUxXQiggc2lsa19BREQzMiggc2hwX2xhZ19wdHJbIDAgXSwgc2hw
X2xhZ19wdHJbIC0yIF0gKSwgSGFybVNoYXBlRklSUGFja2VkX1ExNCApOwotICAgICAgICAgICAg
bl9MVFBfUTEzID0gc2lsa19TTUxBV1QoIG5fTFRQX1ExMywgc2hwX2xhZ19wdHJbIC0xIF0sICAg
ICAgICAgICAgICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgKTsKLSAgICAgICAgICAg
IG5fTFRQX1ExMyA9IHNpbGtfTFNISUZUKCBuX0xUUF9RMTMsIDEgKTsKLSAgICAgICAgICAgIHNo
cF9sYWdfcHRyKys7Ci0KLSAgICAgICAgICAgIHRtcDIgPSBzaWxrX1NVQjMyKCBMVFBfcHJlZF9R
MTMsIG5fTFRQX1ExMyApOyAgICAgICAgICAgICAgICAgICAgICAgLyogUTEzICovCi0gICAgICAg
ICAgICB0bXAxID0gc2lsa19BRERfTFNISUZUMzIoIHRtcDIsIHRtcDEsIDEgKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFExMyAqLwotICAgICAgICAgICAgdG1wMSA9IHNpbGtfUlNISUZU
X1JPVU5EKCB0bXAxLCAzICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTAg
Ki8KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRtcDEgPSBzaWxrX1JTSElGVF9ST1VO
RCggdG1wMSwgMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTEwICovCi0g
ICAgICAgIH0KLQotICAgICAgICByX1ExMCA9IHNpbGtfU1VCMzIoIHhfc2NfUTEwWyBpIF0sIHRt
cDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNpZHVhbCBlcnJvciBRMTAg
Ki8KLQotICAgICAgICAvKiBHZW5lcmF0ZSBkaXRoZXIgKi8KLSAgICAgICAgTlNRLT5yYW5kX3Nl
ZWQgPSBzaWxrX1JBTkQoIE5TUS0+cmFuZF9zZWVkICk7Ci0KLSAgICAgICAgLyogRmxpcCBzaWdu
IGRlcGVuZGluZyBvbiBkaXRoZXIgKi8KLSAgICAgICAgdG1wMiA9IC1yX1ExMDsKLSAgICAgICAg
aWYgKCBOU1EtPnJhbmRfc2VlZCA8IDAgKSByX1ExMCA9IHRtcDI7Ci0KLSAgICAgICAgcl9RMTAg
PSBzaWxrX0xJTUlUXzMyKCByX1ExMCwgLSgzMSA8PCAxMCksIDMwIDw8IDEwICk7Ci0KLSAgICAg
ICAgLyogRmluZCB0d28gcXVhbnRpemF0aW9uIGxldmVsIGNhbmRpZGF0ZXMgYW5kIG1lYXN1cmUg
dGhlaXIgcmF0ZS1kaXN0b3J0aW9uICovCi0gICAgICAgIHExX1ExMCA9IHNpbGtfU1VCMzIoIHJf
UTEwLCBvZmZzZXRfUTEwICk7Ci0gICAgICAgIHExX1EwID0gc2lsa19SU0hJRlQoIHExX1ExMCwg
MTAgKTsKLQotICAgICAgICBxMV9RMTAgPSB0YWJsZVtxMV9RMF1bMF07Ci0gICAgICAgIHEyX1Ex
MCA9IHRhYmxlW3ExX1EwXVsxXTsKLQotICAgICAgICBpZiAocl9RMTAgKiB0YWJsZVtxMV9RMF1b
Ml0gLSB0YWJsZVtxMV9RMF1bM10gPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBxMV9RMTAg
PSBxMl9RMTA7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWxzZXNbIGkgXSA9IChvcHVzX2ludDgp
c2lsa19SU0hJRlRfUk9VTkQoIHExX1ExMCwgMTAgKTsKLQotICAgICAgICAvKiBFeGNpdGF0aW9u
ICovCi0gICAgICAgIGV4Y19RMTQgPSBzaWxrX0xTSElGVCggcTFfUTEwLCA0ICk7Ci0KLSAgICAg
ICAgdG1wMiA9IC1leGNfUTE0OwotICAgICAgICBpZiAoIE5TUS0+cmFuZF9zZWVkIDwgMCApIGV4
Y19RMTQgPSB0bXAyOwotCi0gICAgICAgIC8qIEFkZCBwcmVkaWN0aW9ucyAqLwotICAgICAgICBM
UENfZXhjX1ExNCA9IHNpbGtfQUREX0xTSElGVDMyKCBleGNfUTE0LCBMVFBfcHJlZF9RMTMsIDEg
KTsKLSAgICAgICAgeHFfUTE0ICAgICAgPSBzaWxrX0FERF9MU0hJRlQzMiggTFBDX2V4Y19RMTQs
IExQQ19wcmVkX1ExMCwgNCApOwotCi0gICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8KLSAgICAg
ICAgcHNMUENfUTE0Kys7Ci0gICAgICAgICpwc0xQQ19RMTQgPSB4cV9RMTQ7Ci0gICAgICAgIHNM
Rl9BUl9zaHBfUTE0ID0gc2lsa19TVUJfTFNISUZUMzIoIHhxX1ExNCwgbl9BUl9RMTIsIDIgKTsK
LQotICAgICAgICBOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQX3NocF9idWZfaWR4IF0gPSBz
aWxrX1NVQl9MU0hJRlQzMiggc0xGX0FSX3NocF9RMTQsIG5fTEZfUTEyLCAyICk7Ci0gICAgICAg
IHNMVFBfUTE1WyBOU1EtPnNMVFBfYnVmX2lkeCBdID0gc2lsa19MU0hJRlQoIExQQ19leGNfUTE0
LCAxICk7Ci0gICAgICAgIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCsrOwotICAgICAgICBOU1EtPnNM
VFBfYnVmX2lkeCsrOwotCi0gICAgICAgIC8qIE1ha2UgZGl0aGVyIGRlcGVuZGVudCBvbiBxdWFu
dGl6ZWQgc2lnbmFsICovCi0gICAgICAgIE5TUS0+cmFuZF9zZWVkID0gc2lsa19BREQzMl9vdmZs
dyggTlNRLT5yYW5kX3NlZWQsIHB1bHNlc1sgaSBdICk7Ci0gICAgfQotCi0gICAgTlNRLT5zTEZf
QVJfc2hwX1ExNCA9IHNMRl9BUl9zaHBfUTE0OwotCi0gICAgLyogU2NhbGUgWFEgYmFjayB0byBu
b3JtYWwgbGV2ZWwgYmVmb3JlIHNhdmluZyAqLwotICAgIHBzTFBDX1ExNCA9ICZOU1EtPnNMUENf
UTE0WyBOU1FfTFBDX0JVRl9MRU5HVEggXTsKLQotICAgIC8qIHdyaXRlIGJhY2sgc0FSMl9RMTQg
Ki8KLSAgICB4bW1fdGVtcGEgPSBfbW1fdW5wYWNraGlfZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQz
MjEwLCBzQVIyX1ExNF9oaV83NjU0MzIxMCApOwotICAgIHhtbV90ZW1wYiA9IF9tbV91bnBhY2ts
b19lcGkxNiggc0FSMl9RMTRfbG9fNzY1NDMyMTAsIHNBUjJfUTE0X2hpXzc2NTQzMjEwICk7Ci0g
ICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJk5TUS0+c0FSMl9RMTRbIDQgXSksIHht
bV90ZW1wYSApOwotICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopKCZOU1EtPnNBUjJf
UTE0WyAwIF0pLCB4bW1fdGVtcGIgKTsKLQotICAgIC8qIHhxWyBpIF0gPSAob3B1c19pbnQxNilz
aWxrX1NBVDE2KCBzaWxrX1JTSElGVF9ST1VORCggc2lsa19TTVVMV1coIHBzTFBDX1ExNFsgaSBd
LCBHYWluX1ExMCApLCA4ICkgKTsgKi8KLSAgICB7Ci0gICAgICAgIF9fbTEyOGkgeG1tX0dhaW5f
UTEwOwotICAgICAgICBfX20xMjhpIHhtbV94cV9RMTRfMzIxMCwgeG1tX3hxX1ExNF94M3gxLCB4
bW1feHFfUTE0Xzc2NTQsIHhtbV94cV9RMTRfeDd4NTsKLQotICAgICAgICAvKiBwcmVwYXJlICgx
IDw8IDcpIGluIHBhY2tlZCA0IDMyLWJpdHMgKi8KLSAgICAgICAgeG1tX3RlbXBhID0gX21tX3Nl
dDFfZXBpMzIoICgxIDw8IDcpICk7Ci0KLSAgICAgICAgLyogcHJlcGFyZSBHYWluX1ExMCBpbiBw
YWNrZWQgNCAzMi1iaXRzICovCi0gICAgICAgIHhtbV9HYWluX1ExMCA9IF9tbV9zZXQxX2VwaTMy
KCBHYWluX1ExMCApOwotCi0gICAgICAgIC8qIHByb2Nlc3MgeHEgKi8KLSAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGxlbmd0aCAtIDc7IGkgKz0gOCkKLSAgICAgICAgewotICAgICAgICAgICAgeG1t
X3hxX1ExNF8zMjEwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmKHBzTFBDX1ExNFsg
aSArIDAgXSApICkgKTsKLSAgICAgICAgICAgIHhtbV94cV9RMTRfNzY1NCA9IF9tbV9sb2FkdV9z
aTEyOCggKF9fbTEyOGkgKikoJihwc0xQQ19RMTRbIGkgKyA0IF0gKSApICk7Ci0KLSAgICAgICAg
ICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMqLwotICAgICAgICAgICAgeG1tX3hxX1Ex
NF94M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHhtbV94cV9RMTRfMzIxMCwgX01NX1NIVUZGTEUo
IDAsIDMsIDIsIDEgKSApOwotICAgICAgICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRl
cyovCi0gICAgICAgICAgICB4bW1feHFfUTE0X3g3eDUgPSBfbW1fc2h1ZmZsZV9lcGkzMiggeG1t
X3hxX1ExNF83NjU0LCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7Ci0KLSAgICAgICAgICAg
IHhtbV94cV9RMTRfMzIxMCA9IF9tbV9tdWxfZXBpMzIoIHhtbV94cV9RMTRfMzIxMCwgeG1tX0dh
aW5fUTEwICk7Ci0gICAgICAgICAgICB4bW1feHFfUTE0X3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4
bW1feHFfUTE0X3gzeDEsIHhtbV9HYWluX1ExMCApOwotICAgICAgICAgICAgeG1tX3hxX1ExNF83
NjU0ID0gX21tX211bF9lcGkzMiggeG1tX3hxX1ExNF83NjU0LCB4bW1fR2Fpbl9RMTAgKTsKLSAg
ICAgICAgICAgIHhtbV94cV9RMTRfeDd4NSA9IF9tbV9tdWxfZXBpMzIoIHhtbV94cV9RMTRfeDd4
NSwgeG1tX0dhaW5fUTEwICk7Ci0KLSAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9z
cmxpX2VwaTY0KCB4bW1feHFfUTE0XzMyMTAsIDE2ICk7Ci0gICAgICAgICAgICB4bW1feHFfUTE0
X3gzeDEgPSBfbW1fc2xsaV9lcGk2NCggeG1tX3hxX1ExNF94M3gxLCAxNiApOwotICAgICAgICAg
ICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX3NybGlfZXBpNjQoIHhtbV94cV9RMTRfNzY1NCwgMTYg
KTsKLSAgICAgICAgICAgIHhtbV94cV9RMTRfeDd4NSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1feHFf
UTE0X3g3eDUsIDE2ICk7Ci0KLSAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9ibGVu
ZF9lcGkxNiggeG1tX3hxX1ExNF8zMjEwLCB4bW1feHFfUTE0X3gzeDEsIDB4Q0MgKTsKLSAgICAg
ICAgICAgIHhtbV94cV9RMTRfNzY1NCA9IF9tbV9ibGVuZF9lcGkxNiggeG1tX3hxX1ExNF83NjU0
LCB4bW1feHFfUTE0X3g3eDUsIDB4Q0MgKTsKLQotICAgICAgICAgICAgLyogc2lsa19SU0hJRlRf
Uk9VTkQoeHEsIDgpICovCi0gICAgICAgICAgICB4bW1feHFfUTE0XzMyMTAgPSBfbW1fYWRkX2Vw
aTMyKCB4bW1feHFfUTE0XzMyMTAsIHhtbV90ZW1wYSApOwotICAgICAgICAgICAgeG1tX3hxX1Ex
NF83NjU0ID0gX21tX2FkZF9lcGkzMiggeG1tX3hxX1ExNF83NjU0LCB4bW1fdGVtcGEgKTsKLQot
ICAgICAgICAgICAgeG1tX3hxX1ExNF8zMjEwID0gX21tX3NyYWlfZXBpMzIoIHhtbV94cV9RMTRf
MzIxMCwgOCApOwotICAgICAgICAgICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX3NyYWlfZXBpMzIo
IHhtbV94cV9RMTRfNzY1NCwgOCApOwotCi0gICAgICAgICAgICAvKiBzaWxrX1NBVDE2ICovCi0g
ICAgICAgICAgICB4bW1feHFfUTE0XzMyMTAgPSBfbW1fcGFja3NfZXBpMzIoIHhtbV94cV9RMTRf
MzIxMCwgeG1tX3hxX1ExNF83NjU0ICk7Ci0KLSAgICAgICAgICAgIC8qIHNhdmUgdG8geHEgKi8K
LSAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopKCZ4cVsgaSBdICksIHht
bV94cV9RMTRfMzIxMCApOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoIDsgaSA8IGxlbmd0
aDsgaSsrKQotICAgIHsKLSAgICAgICAgeHFbaV0gPSAob3B1c19pbnQxNilzaWxrX1NBVDE2KCBz
aWxrX1JTSElGVF9ST1VORCggc2lsa19TTVVMV1coIHBzTFBDX1ExNFsgaSBdLCBHYWluX1ExMCAp
LCA4ICkgKTsKLSAgICB9Ci0KLSAgICAvKiBVcGRhdGUgTFBDIHN5bnRoIGJ1ZmZlciAqLwotICAg
IHNpbGtfbWVtY3B5KCBOU1EtPnNMUENfUTE0LCAmTlNRLT5zTFBDX1ExNFsgbGVuZ3RoIF0sIE5T
UV9MUENfQlVGX0xFTkdUSCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7Ci19Ci0KLXN0YXRpYyBP
UFVTX0lOTElORSB2b2lkIHNpbGtfbnNxX3NjYWxlX3N0YXRlc19zc2U0XzEoCi0gICAgY29uc3Qg
c2lsa19lbmNvZGVyX3N0YXRlICpwc0VuY0MsICAgICAgICAgICAvKiBJICAgIEVuY29kZXIgU3Rh
dGUgICAgICAgICAgICAgICAgICAgKi8KLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1EsICAg
ICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAq
LwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9RM1tdLCAgICAgICAgICAgICAgICAgLyogSSAg
ICBpbnB1dCBpbiBRMyAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAg
ICAgICB4X3NjX1ExMFtdLCAgICAgICAgICAgICAvKiBPICAgIGlucHV0IHNjYWxlZCB3aXRoIDEv
R2FpbiAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgIHNMVFBbXSwgICAgICAgICAg
ICAgICAgIC8qIEkgICAgcmUtd2hpdGVuZWQgTFRQIHN0YXRlIGluIFEwICAgICAqLwotICAgIG9w
dXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyogTyAgICBMVFAgc3Rh
dGUgbWF0Y2hpbmcgc2NhbGVkIGlucHV0ICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICBzdWJm
ciwgICAgICAgICAgICAgICAgICAvKiBJICAgIHN1YmZyYW1lIG51bWJlciAgICAgICAgICAgICAg
ICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgIExUUF9zY2FsZV9RMTQsICAgICAgICAgIC8q
IEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNf
aW50MzIgICAgR2FpbnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwgLyogSSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICBwaXRjaExbIE1BWF9O
Ql9TVUJGUiBdLCAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICBjb25zdCBvcHVzX2ludCAgICAgIHNpZ25hbF90eXBlICAgICAgICAgICAgIC8qIEkgICAgU2ln
bmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAqLwotKQotewotICAgIG9wdXNfaW50ICAgaSwg
bGFnOwotICAgIG9wdXNfaW50MzIgZ2Fpbl9hZGpfUTE2LCBpbnZfZ2Fpbl9RMzEsIGludl9nYWlu
X1EyMzsKLSAgICBfX20xMjhpIHhtbV9pbnZfZ2Fpbl9RMjMsIHhtbV94X1EzX3gyeDAsIHhtbV94
X1EzX3gzeDE7Ci0KLSAgICBsYWcgICAgICAgICAgPSBwaXRjaExbIHN1YmZyIF07Ci0gICAgaW52
X2dhaW5fUTMxID0gc2lsa19JTlZFUlNFMzJfdmFyUSggc2lsa19tYXgoIEdhaW5zX1ExNlsgc3Vi
ZnIgXSwgMSApLCA0NyApOwotICAgIHNpbGtfYXNzZXJ0KCBpbnZfZ2Fpbl9RMzEgIT0gMCApOwot
Ci0gICAgLyogQ2FsY3VsYXRlIGdhaW4gYWRqdXN0bWVudCBmYWN0b3IgKi8KLSAgICBpZiggR2Fp
bnNfUTE2WyBzdWJmciBdICE9IE5TUS0+cHJldl9nYWluX1ExNiApIHsKLSAgICAgICAgZ2Fpbl9h
ZGpfUTE2ID0gIHNpbGtfRElWMzJfdmFyUSggTlNRLT5wcmV2X2dhaW5fUTE2LCBHYWluc19RMTZb
IHN1YmZyIF0sIDE2ICk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZ2Fpbl9hZGpfUTE2ID0gKG9w
dXNfaW50MzIpMSA8PCAxNjsKLSAgICB9Ci0KLSAgICAvKiBTY2FsZSBpbnB1dCAqLwotICAgIGlu
dl9nYWluX1EyMyA9IHNpbGtfUlNISUZUX1JPVU5EKCBpbnZfZ2Fpbl9RMzEsIDggKTsKLQotICAg
IC8qIHByZXBhcmUgaW52X2dhaW5fUTIzIGluIHBhY2tlZCA0IDMyLWJpdHMgKi8KLSAgICB4bW1f
aW52X2dhaW5fUTIzID0gX21tX3NldDFfZXBpMzIoaW52X2dhaW5fUTIzKTsKLQotICAgIGZvcigg
aSA9IDA7IGkgPCBwc0VuY0MtPnN1YmZyX2xlbmd0aCAtIDM7IGkgKz0gNCApIHsKLSAgICAgICAg
eG1tX3hfUTNfeDJ4MCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJih4X1EzWyBpIF0g
KSApICk7Ci0KLSAgICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyovCi0gICAgICAg
IHhtbV94X1EzX3gzeDEgPSBfbW1fc2h1ZmZsZV9lcGkzMiggeG1tX3hfUTNfeDJ4MCwgX01NX1NI
VUZGTEUoIDAsIDMsIDIsIDEgKSApOwotCi0gICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fbXVs
X2VwaTMyKCB4bW1feF9RM194MngwLCB4bW1faW52X2dhaW5fUTIzICk7Ci0gICAgICAgIHhtbV94
X1EzX3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9RM194M3gxLCB4bW1faW52X2dhaW5fUTIz
ICk7Ci0KLSAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1feF9RM194
MngwLCAxNiApOwotICAgICAgICB4bW1feF9RM194M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV94
X1EzX3gzeDEsIDE2ICk7Ci0KLSAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9ibGVuZF9lcGkx
NiggeG1tX3hfUTNfeDJ4MCwgeG1tX3hfUTNfeDN4MSwgMHhDQyApOwotCi0gICAgICAgIF9tbV9z
dG9yZXVfc2kxMjgoIChfX20xMjhpICopKCYoeF9zY19RMTBbIGkgXSApICksIHhtbV94X1EzX3gy
eDAgKTsKLSAgICB9Ci0KLSAgICBmb3IoIDsgaSA8IHBzRW5jQy0+c3ViZnJfbGVuZ3RoOyBpKysg
KSB7Ci0gICAgICAgIHhfc2NfUTEwWyBpIF0gPSBzaWxrX1NNVUxXVyggeF9RM1sgaSBdLCBpbnZf
Z2Fpbl9RMjMgKTsKLSAgICB9Ci0KLSAgICAvKiBTYXZlIGludmVyc2UgZ2FpbiAqLwotICAgIE5T
US0+cHJldl9nYWluX1ExNiA9IEdhaW5zX1ExNlsgc3ViZnIgXTsKLQotICAgIC8qIEFmdGVyIHJl
d2hpdGVuaW5nIHRoZSBMVFAgc3RhdGUgaXMgdW4tc2NhbGVkLCBzbyBzY2FsZSB3aXRoIGludl9n
YWluX1ExNiAqLwotICAgIGlmKCBOU1EtPnJld2hpdGVfZmxhZyApIHsKLSAgICAgICAgaWYoIHN1
YmZyID09IDAgKSB7Ci0gICAgICAgICAgICAvKiBEbyBMVFAgZG93bnNjYWxpbmcgKi8KLSAgICAg
ICAgICAgIGludl9nYWluX1EzMSA9IHNpbGtfTFNISUZUKCBzaWxrX1NNVUxXQiggaW52X2dhaW5f
UTMxLCBMVFBfc2NhbGVfUTE0ICksIDIgKTsKLSAgICAgICAgfQotICAgICAgICBmb3IoIGkgPSBO
U1EtPnNMVFBfYnVmX2lkeCAtIGxhZyAtIExUUF9PUkRFUiAvIDI7IGkgPCBOU1EtPnNMVFBfYnVm
X2lkeDsgaSsrICkgewotICAgICAgICAgICAgc2lsa19hc3NlcnQoIGkgPCBNQVhfRlJBTUVfTEVO
R1RIICk7Ci0gICAgICAgICAgICBzTFRQX1ExNVsgaSBdID0gc2lsa19TTVVMV0IoIGludl9nYWlu
X1EzMSwgc0xUUFsgaSBdICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBBZGp1c3QgZm9y
IGNoYW5naW5nIGdhaW4gKi8KLSAgICBpZiggZ2Fpbl9hZGpfUTE2ICE9IChvcHVzX2ludDMyKTEg
PDwgMTYgKSB7Ci0gICAgICAgIC8qIFNjYWxlIGxvbmctdGVybSBzaGFwaW5nIHN0YXRlICovCi0g
ICAgICAgIF9fbTEyOGkgeG1tX2dhaW5fYWRqX1ExNiwgeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4
bW1fc0xUUF9zaHBfUTE0X3gzeDE7Ci0KLSAgICAgICAgLyogcHJlcGFyZSBnYWluX2Fkal9RMTYg
aW4gcGFja2VkIDQgMzItYml0cyAqLwotICAgICAgICB4bW1fZ2Fpbl9hZGpfUTE2ID0gX21tX3Nl
dDFfZXBpMzIoZ2Fpbl9hZGpfUTE2KTsKLQotICAgICAgICBmb3IoIGkgPSBOU1EtPnNMVFBfc2hw
X2J1Zl9pZHggLSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOyBpIDwgTlNRLT5zTFRQX3NocF9idWZf
aWR4IC0gMzsgaSArPSA0ICkKLSAgICAgICAgewotICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1Ex
NF94MngwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5TUS0+c0xUUF9zaHBfUTE0
WyBpIF0gKSApICk7Ci0gICAgICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzKi8K
LSAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDN4MSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4
bW1fc0xUUF9zaHBfUTE0X3gyeDAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKLQotICAg
ICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21tX211bF9lcGkzMiggeG1tX3NMVFBf
c2hwX1ExNF94MngwLCB4bW1fZ2Fpbl9hZGpfUTE2ICk7Ci0gICAgICAgICAgICB4bW1fc0xUUF9z
aHBfUTE0X3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIHhtbV9n
YWluX2Fkal9RMTYgKTsKLQotICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21t
X3NybGlfZXBpNjQoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgMTYgKTsKLSAgICAgICAgICAgIHht
bV9zTFRQX3NocF9RMTRfeDN4MSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1fc0xUUF9zaHBfUTE0X3gz
eDEsIDE2ICk7Ci0KLSAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCA9IF9tbV9ibGVu
ZF9lcGkxNiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIDB4
Q0MgKTsKLQotICAgICAgICAgICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJihOU1Et
PnNMVFBfc2hwX1ExNFsgaSBdICkgKSwgeG1tX3NMVFBfc2hwX1ExNF94MngwICk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmb3IoIDsgaSA8IE5TUS0+c0xUUF9zaHBfYnVmX2lkeDsgaSsrICkgewot
ICAgICAgICAgICAgTlNRLT5zTFRQX3NocF9RMTRbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fk
al9RMTYsIE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8q
IFNjYWxlIGxvbmctdGVybSBwcmVkaWN0aW9uIHN0YXRlICovCi0gICAgICAgIGlmKCBzaWduYWxf
dHlwZSA9PSBUWVBFX1ZPSUNFRCAmJiBOU1EtPnJld2hpdGVfZmxhZyA9PSAwICkgewotICAgICAg
ICAgICAgZm9yKCBpID0gTlNRLT5zTFRQX2J1Zl9pZHggLSBsYWcgLSBMVFBfT1JERVIgLyAyOyBp
IDwgTlNRLT5zTFRQX2J1Zl9pZHg7IGkrKyApIHsKLSAgICAgICAgICAgICAgICBzTFRQX1ExNVsg
aSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgc0xUUF9RMTVbIGkgXSApOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgTlNRLT5zTEZfQVJfc2hwX1ExNCA9IHNpbGtf
U01VTFdXKCBnYWluX2Fkal9RMTYsIE5TUS0+c0xGX0FSX3NocF9RMTQgKTsKLQotICAgICAgICAv
KiBTY2FsZSBzaG9ydC10ZXJtIHByZWRpY3Rpb24gYW5kIHNoYXBpbmcgc3RhdGVzICovCi0gICAg
ICAgIGZvciggaSA9IDA7IGkgPCBOU1FfTFBDX0JVRl9MRU5HVEg7IGkrKyApIHsKLSAgICAgICAg
ICAgIE5TUS0+c0xQQ19RMTRbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIE5TUS0+
c0xQQ19RMTRbIGkgXSApOwotICAgICAgICB9Ci0gICAgICAgIGZvciggaSA9IDA7IGkgPCBNQVhf
U0hBUEVfTFBDX09SREVSOyBpKysgKSB7Ci0gICAgICAgICAgICBOU1EtPnNBUjJfUTE0WyBpIF0g
PSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBOU1EtPnNBUjJfUTE0WyBpIF0gKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvTlNRX3NzZTRfMS5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4
Ni9OU1Ffc3NlNF8xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAzMTVlMzVmYzg5NmIxM2VlMjMzMTMyNmRiYjlk
NmY4ZDhhNmRhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvTlNRX3NzZTRfMS5jCkBAIC0w
LDAgKzEsNzE5IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENpc2NvIFN5c3RlbXMsIElOQwor
ICAgV3JpdHRlbiBieSBYaWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5QZW5nIFlhbldhbmcKKworICAg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBtZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgor
CisjaW5jbHVkZSA8eG1taW50cmluLmg+CisjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjaW5jbHVk
ZSA8c21taW50cmluLmg+CisjaW5jbHVkZSAibWFpbi5oIgorI2luY2x1ZGUgImNlbHQveDg2L3g4
NmNwdS5oIgorI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgiCisKK3N0YXRpYyBPUFVTX0lOTElORSB2
b2lkIHNpbGtfbnNxX3NjYWxlX3N0YXRlc19zc2U0XzEoCisgICAgY29uc3Qgc2lsa19lbmNvZGVy
X3N0YXRlICpwc0VuY0MsICAgICAgICAgICAvKiBJICAgIEVuY29kZXIgU3RhdGUgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1EsICAgICAgICAgICAgICAg
ICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0
IG9wdXNfaW50MzIgICAgeF9RM1tdLCAgICAgICAgICAgICAgICAgLyogSSAgICBpbnB1dCBpbiBR
MyAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICB4X3NjX1Ex
MFtdLCAgICAgICAgICAgICAvKiBPICAgIGlucHV0IHNjYWxlZCB3aXRoIDEvR2FpbiAgICAgICAg
Ki8KKyAgICBjb25zdCBvcHVzX2ludDE2ICAgIHNMVFBbXSwgICAgICAgICAgICAgICAgIC8qIEkg
ICAgcmUtd2hpdGVuZWQgTFRQIHN0YXRlIGluIFEwICAgICAqLworICAgIG9wdXNfaW50MzIgICAg
ICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyogTyAgICBMVFAgc3RhdGUgbWF0Y2hpbmcg
c2NhbGVkIGlucHV0ICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBzdWJmciwgICAgICAgICAg
ICAgICAgICAvKiBJICAgIHN1YmZyYW1lIG51bWJlciAgICAgICAgICAgICAgICAgKi8KKyAgICBj
b25zdCBvcHVzX2ludCAgICAgIExUUF9zY2FsZV9RMTQsICAgICAgICAgIC8qIEkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgR2Fp
bnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBwaXRjaExbIE1BWF9OQl9TVUJGUiBdLCAv
KiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVz
X2ludCAgICAgIHNpZ25hbF90eXBlICAgICAgICAgICAgIC8qIEkgICAgU2lnbmFsIHR5cGUgICAg
ICAgICAgICAgICAgICAgICAqLworKTsKKworc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19u
b2lzZV9zaGFwZV9xdWFudGl6ZXJfMTBfMTZfc3NlNF8xKAorICAgIHNpbGtfbnNxX3N0YXRlICAg
ICAgKk5TUSwgICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBzaWduYWxUeXBlLCAgICAgICAg
ICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25z
dCBvcHVzX2ludDMyICAgIHhfc2NfUTEwW10sICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50OCAgICAgICAgICAgcHVsc2Vz
W10sICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCisgICAgb3B1c19pbnQxNiAgICAgICAgICB4cVtdLCAgICAgICAgICAgICAgICAgICAvKiBP
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludDMyICAg
ICAgICAgIHNMVFBfUTE1W10sICAgICAgICAgICAgIC8qIEkvTyAgTFRQIHN0YXRlICAgICAgICAg
ICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYV9RMTJbXSwgICAgICAg
ICAgICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICovCisgICAg
Y29uc3Qgb3B1c19pbnQxNiAgICBiX1ExNFtdLCAgICAgICAgICAgICAgICAvKiBJICAgIExvbmcg
dGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDE2ICAgIEFS
X3NocF9RMTNbXSwgICAgICAgICAgIC8qIEkgICAgTm9pc2Ugc2hhcGluZyBBUiBjb2VmcyAgICAg
ICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgbGFnLCAgICAgICAgICAgICAgICAgICAg
LyogSSAgICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQz
MiAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0LCAvKiBJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIFRpbHRfUTE0LCAg
ICAgICAgICAgICAgIC8qIEkgICAgU3BlY3RyYWwgdGlsdCAgICAgICAgICAgICAgICAgICAqLwor
ICAgIG9wdXNfaW50MzIgICAgICAgICAgTEZfc2hwX1ExNCwgICAgICAgICAgICAgLyogSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAg
ICBHYWluX1ExNiwgICAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIG9mZnNldF9RMTAsICAgICAgICAg
ICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNf
aW50ICAgICAgICAgICAgbGVuZ3RoLCAgICAgICAgICAgICAgICAgLyogSSAgICBJbnB1dCBsZW5n
dGggICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICB0YWJsZVtd
WzRdICAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKyk7CisKK3ZvaWQgc2lsa19OU1Ffc3NlNF8xKAorICAgIGNvbnN0IHNpbGtfZW5jb2Rlcl9z
dGF0ZSAgICAqcHNFbmNDLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkg
ICAgRW5jb2RlciBTdGF0ZSAgICAgICAgICAgICAgICAgICAqLworICAgIHNpbGtfbnNxX3N0YXRl
ICAgICAgICAgICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIFNpZGVJbmZv
SW5kaWNlcyAgICAgICAgICAgICAqcHNJbmRpY2VzLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEkvTyAgUXVhbnRpemF0aW9uIEluZGljZXMgICAgICAgICAgICAqLworICAgIGNv
bnN0IG9wdXNfaW50MzIgICAgICAgICAgICB4X1EzW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEkgICAgUHJlZmlsdGVyZWQgaW5wdXQgc2lnbmFsICAgICAgICAqLwor
ICAgIG9wdXNfaW50OCAgICAgICAgICAgICAgICAgICBwdWxzZXNbXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUXVhbnRpemVkIHB1bHNlIHNpZ25hbCAgICAgICAg
ICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgICAgICAgICBQcmVkQ29lZl9RMTJbIDIgKiBN
QVhfTFBDX09SREVSIF0sICAgICAgICAgIC8qIEkgICAgU2hvcnQgdGVybSBwcmVkaWN0aW9uIGNv
ZWZzICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgICAgICAgICBMVFBDb2VmX1ExNFsg
TFRQX09SREVSICogTUFYX05CX1NVQkZSIF0sICAgIC8qIEkgICAgTG9uZyB0ZXJtIHByZWRpY3Rp
b24gY29lZnMgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgICAgICAgICBBUjJfUTEz
WyBNQVhfTkJfU1VCRlIgKiBNQVhfU0hBUEVfTFBDX09SREVSIF0sIC8qIEkgTm9pc2Ugc2hhcGlu
ZyBjb2VmcyAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBI
YXJtU2hhcGVHYWluX1ExNFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgIC8qIEkgICAgTG9uZyB0
ZXJtIHNoYXBpbmcgY29lZnMgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAg
ICAgICBUaWx0X1ExNFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAgICAgICAgIC8qIEkgICAg
U3BlY3RyYWwgdGlsdCAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIg
ICAgICAgICAgICBMRl9zaHBfUTE0WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgIC8q
IEkgICAgTG93IGZyZXF1ZW5jeSBzaGFwaW5nIGNvZWZzICAgICAqLworICAgIGNvbnN0IG9wdXNf
aW50MzIgICAgICAgICAgICBHYWluc19RMTZbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAg
ICAgIC8qIEkgICAgUXVhbnRpemF0aW9uIHN0ZXAgc2l6ZXMgICAgICAgICAqLworICAgIGNvbnN0
IG9wdXNfaW50ICAgICAgICAgICAgICBwaXRjaExbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAg
ICAgICAgICAgIC8qIEkgICAgUGl0Y2ggbGFncyAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBMYW1iZGFfUTEwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEkgICAgUmF0ZS9kaXN0b3J0aW9uIHRyYWRlb2ZmICAgICAgICAq
LworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBMVFBfc2NhbGVfUTE0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgTFRQIHN0YXRlIHNjYWxpbmcgICAgICAgICAg
ICAgICAqLworKQoreworICAgIG9wdXNfaW50ICAgICAgICAgICAgaywgbGFnLCBzdGFydF9pZHgs
IExTRl9pbnRlcnBvbGF0aW9uX2ZsYWc7CisgICAgY29uc3Qgb3B1c19pbnQxNiAgICAqQV9RMTIs
ICpCX1ExNCwgKkFSX3NocF9RMTM7CisgICAgb3B1c19pbnQxNiAgICAgICAgICAqcHhxOworICAg
IFZBUkRFQ0woIG9wdXNfaW50MzIsIHNMVFBfUTE1ICk7CisgICAgVkFSREVDTCggb3B1c19pbnQx
Niwgc0xUUCApOworICAgIG9wdXNfaW50MzIgICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1Ex
NDsKKyAgICBvcHVzX2ludCAgICAgICAgICAgIG9mZnNldF9RMTA7CisgICAgVkFSREVDTCggb3B1
c19pbnQzMiwgeF9zY19RMTAgKTsKKworICAgIG9wdXNfaW50MzIgICB0YWJsZVsgNjQgXVsgNCBd
OworICAgIG9wdXNfaW50MzIgICB0bXAxOworICAgIG9wdXNfaW50MzIgICBxMV9RMTAsIHEyX1Ex
MCwgcmQxX1EyMCwgcmQyX1EyMDsKKworICAgIFNBVkVfU1RBQ0s7CisKKyAgICBOU1EtPnJhbmRf
c2VlZCA9IHBzSW5kaWNlcy0+U2VlZDsKKworICAgIC8qIFNldCB1bnZvaWNlZCBsYWcgdG8gdGhl
IHByZXZpb3VzIG9uZSwgb3ZlcndyaXRlIGxhdGVyIGZvciB2b2ljZWQgKi8KKyAgICBsYWcgPSBO
U1EtPmxhZ1ByZXY7CisKKyAgICBzaWxrX2Fzc2VydCggTlNRLT5wcmV2X2dhaW5fUTE2ICE9IDAg
KTsKKworICAgIG9mZnNldF9RMTAgPSBzaWxrX1F1YW50aXphdGlvbl9PZmZzZXRzX1ExMFsgcHNJ
bmRpY2VzLT5zaWduYWxUeXBlID4+IDEgXVsgcHNJbmRpY2VzLT5xdWFudE9mZnNldFR5cGUgXTsK
KworICAgIC8qIDAgKi8KKyAgICBxMV9RMTAgID0gb2Zmc2V0X1ExMDsKKyAgICBxMl9RMTAgID0g
b2Zmc2V0X1ExMCArICggMTAyNCAtIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKKyAgICByZDFf
UTIwID0gcTFfUTEwICogTGFtYmRhX1ExMDsKKyAgICByZDJfUTIwID0gcTJfUTEwICogTGFtYmRh
X1ExMDsKKworICAgIHRhYmxlWyAzMiBdWyAwIF0gPSBxMV9RMTA7CisgICAgdGFibGVbIDMyIF1b
IDEgXSA9IHEyX1ExMDsKKyAgICB0YWJsZVsgMzIgXVsgMiBdID0gMiAqIChxMV9RMTAgLSBxMl9R
MTApOworICAgIHRhYmxlWyAzMiBdWyAzIF0gPSAocmQxX1EyMCAtIHJkMl9RMjApICsgKHExX1Ex
MCAqIHExX1ExMCAtIHEyX1ExMCAqIHEyX1ExMCk7CisKKyAgICAvKiAtMSAqLworICAgIHExX1Ex
MCAgPSBvZmZzZXRfUTEwIC0gKCAxMDI0IC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMCApOworICAg
IHEyX1ExMCAgPSBvZmZzZXRfUTEwOworICAgIHJkMV9RMjAgPSAtIHExX1ExMCAqIExhbWJkYV9R
MTA7CisgICAgcmQyX1EyMCA9IHEyX1ExMCAqIExhbWJkYV9RMTA7CisKKyAgICB0YWJsZVsgMzEg
XVsgMCBdID0gcTFfUTEwOworICAgIHRhYmxlWyAzMSBdWyAxIF0gPSBxMl9RMTA7CisgICAgdGFi
bGVbIDMxIF1bIDIgXSA9IDIgKiAocTFfUTEwIC0gcTJfUTEwKTsKKyAgICB0YWJsZVsgMzEgXVsg
MyBdID0gKHJkMV9RMjAgLSByZDJfUTIwKSArIChxMV9RMTAgKiBxMV9RMTAgLSBxMl9RMTAgKiBx
Ml9RMTApOworCisgICAgLyogPiAwICovCisgICAgZm9yIChrID0gMTsgayA8PSAzMTsgaysrKQor
ICAgIHsKKyAgICAgICAgdG1wMSA9IG9mZnNldF9RMTAgKyBzaWxrX0xTSElGVCggaywgMTAgKTsK
KworICAgICAgICBxMV9RMTAgID0gdG1wMSAtIFFVQU5UX0xFVkVMX0FESlVTVF9RMTA7CisgICAg
ICAgIHEyX1ExMCAgPSB0bXAxIC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMCArIDEwMjQ7CisgICAg
ICAgIHJkMV9RMjAgPSBxMV9RMTAgKiBMYW1iZGFfUTEwOworICAgICAgICByZDJfUTIwID0gcTJf
UTEwICogTGFtYmRhX1ExMDsKKworICAgICAgICB0YWJsZVsgMzIgKyBrIF1bIDAgXSA9IHExX1Ex
MDsKKyAgICAgICAgdGFibGVbIDMyICsgayBdWyAxIF0gPSBxMl9RMTA7CisgICAgICAgIHRhYmxl
WyAzMiArIGsgXVsgMiBdID0gMiAqIChxMV9RMTAgLSBxMl9RMTApOworICAgICAgICB0YWJsZVsg
MzIgKyBrIF1bIDMgXSA9IChyZDFfUTIwIC0gcmQyX1EyMCkgKyAocTFfUTEwICogcTFfUTEwIC0g
cTJfUTEwICogcTJfUTEwKTsKKyAgICB9CisKKyAgICAvKiA8IC0xICovCisgICAgZm9yIChrID0g
LTMyOyBrIDw9IC0yOyBrKyspCisgICAgeworICAgICAgICB0bXAxID0gb2Zmc2V0X1ExMCArIHNp
bGtfTFNISUZUKCBrLCAxMCApOworCisgICAgICAgIHExX1ExMCAgPSB0bXAxICsgUVVBTlRfTEVW
RUxfQURKVVNUX1ExMDsKKyAgICAgICAgcTJfUTEwICA9IHRtcDEgKyBRVUFOVF9MRVZFTF9BREpV
U1RfUTEwICsgMTAyNDsKKyAgICAgICAgcmQxX1EyMCA9IC0gcTFfUTEwICogTGFtYmRhX1ExMDsK
KyAgICAgICAgcmQyX1EyMCA9IC0gcTJfUTEwICogTGFtYmRhX1ExMDsKKworICAgICAgICB0YWJs
ZVsgMzIgKyBrIF1bIDAgXSA9IHExX1ExMDsKKyAgICAgICAgdGFibGVbIDMyICsgayBdWyAxIF0g
PSBxMl9RMTA7CisgICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMiBdID0gMiAqIChxMV9RMTAgLSBx
Ml9RMTApOworICAgICAgICB0YWJsZVsgMzIgKyBrIF1bIDMgXSA9IChyZDFfUTIwIC0gcmQyX1Ey
MCkgKyAocTFfUTEwICogcTFfUTEwIC0gcTJfUTEwICogcTJfUTEwKTsKKyAgICB9CisKKyAgICBp
ZiggcHNJbmRpY2VzLT5OTFNGSW50ZXJwQ29lZl9RMiA9PSA0ICkgeworICAgICAgICBMU0ZfaW50
ZXJwb2xhdGlvbl9mbGFnID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBMU0ZfaW50ZXJwb2xh
dGlvbl9mbGFnID0gMTsKKyAgICB9CisKKyAgICBBTExPQyggc0xUUF9RMTUsCisgICAgICAgICAg
IHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKyBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgb3B1c19pbnQz
MiApOworICAgIEFMTE9DKCBzTFRQLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoICsgcHNFbmNDLT5m
cmFtZV9sZW5ndGgsIG9wdXNfaW50MTYgKTsKKyAgICBBTExPQyggeF9zY19RMTAsIHBzRW5jQy0+
c3ViZnJfbGVuZ3RoLCBvcHVzX2ludDMyICk7CisgICAgLyogU2V0IHVwIHBvaW50ZXJzIHRvIHN0
YXJ0IG9mIHN1YiBmcmFtZSAqLworICAgIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCA9IHBzRW5jQy0+
bHRwX21lbV9sZW5ndGg7CisgICAgTlNRLT5zTFRQX2J1Zl9pZHggICAgID0gcHNFbmNDLT5sdHBf
bWVtX2xlbmd0aDsKKyAgICBweHEgICAgICAgICAgICAgICAgICAgPSAmTlNRLT54cVsgcHNFbmND
LT5sdHBfbWVtX2xlbmd0aCBdOworICAgIGZvciggayA9IDA7IGsgPCBwc0VuY0MtPm5iX3N1YmZy
OyBrKysgKSB7CisgICAgICAgIEFfUTEyICAgICAgPSAmUHJlZENvZWZfUTEyWyAoKCBrID4+IDEg
KSB8ICggMSAtIExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcgKSkgKiBNQVhfTFBDX09SREVSIF07Cisg
ICAgICAgIEJfUTE0ICAgICAgPSAmTFRQQ29lZl9RMTRbIGsgKiBMVFBfT1JERVIgXTsKKyAgICAg
ICAgQVJfc2hwX1ExMyA9ICZBUjJfUTEzWyAgICAgayAqIE1BWF9TSEFQRV9MUENfT1JERVIgXTsK
KworICAgICAgICAvKiBOb2lzZSBzaGFwZSBwYXJhbWV0ZXJzICovCisgICAgICAgIHNpbGtfYXNz
ZXJ0KCBIYXJtU2hhcGVHYWluX1ExNFsgayBdID49IDAgKTsKKyAgICAgICAgSGFybVNoYXBlRklS
UGFja2VkX1ExNCAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsa19SU0hJRlQoIEhhcm1T
aGFwZUdhaW5fUTE0WyBrIF0sIDIgKTsKKyAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCB8
PSBzaWxrX0xTSElGVCggKG9wdXNfaW50MzIpc2lsa19SU0hJRlQoIEhhcm1TaGFwZUdhaW5fUTE0
WyBrIF0sIDEgKSwgMTYgKTsKKworICAgICAgICBOU1EtPnJld2hpdGVfZmxhZyA9IDA7CisgICAg
ICAgIGlmKCBwc0luZGljZXMtPnNpZ25hbFR5cGUgPT0gVFlQRV9WT0lDRUQgKSB7CisgICAgICAg
ICAgICAvKiBWb2ljZWQgKi8KKyAgICAgICAgICAgIGxhZyA9IHBpdGNoTFsgayBdOworCisgICAg
ICAgICAgICAvKiBSZS13aGl0ZW5pbmcgKi8KKyAgICAgICAgICAgIGlmKCAoIGsgJiAoIDMgLSBz
aWxrX0xTSElGVCggTFNGX2ludGVycG9sYXRpb25fZmxhZywgMSApICkgKSA9PSAwICkgeworICAg
ICAgICAgICAgICAgIC8qIFJld2hpdGVuIHdpdGggbmV3IEEgY29lZnMgKi8KKyAgICAgICAgICAg
ICAgICBzdGFydF9pZHggPSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoIC0gbGFnIC0gcHNFbmNDLT5w
cmVkaWN0TFBDT3JkZXIgLSBMVFBfT1JERVIgLyAyOworICAgICAgICAgICAgICAgIGNlbHRfYXNz
ZXJ0KCBzdGFydF9pZHggPiAwICk7CisKKyAgICAgICAgICAgICAgICBzaWxrX0xQQ19hbmFseXNp
c19maWx0ZXIoICZzTFRQWyBzdGFydF9pZHggXSwgJk5TUS0+eHFbIHN0YXJ0X2lkeCArIGsgKiBw
c0VuY0MtPnN1YmZyX2xlbmd0aCBdLAorICAgICAgICAgICAgICAgICAgICBBX1ExMiwgcHNFbmND
LT5sdHBfbWVtX2xlbmd0aCAtIHN0YXJ0X2lkeCwgcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIsIHBz
RW5jQy0+YXJjaCApOworCisgICAgICAgICAgICAgICAgTlNRLT5yZXdoaXRlX2ZsYWcgPSAxOwor
ICAgICAgICAgICAgICAgIE5TUS0+c0xUUF9idWZfaWR4ID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0
aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNpbGtfbnNxX3NjYWxlX3N0
YXRlc19zc2U0XzEoIHBzRW5jQywgTlNRLCB4X1EzLCB4X3NjX1ExMCwgc0xUUCwgc0xUUF9RMTUs
IGssIExUUF9zY2FsZV9RMTQsIEdhaW5zX1ExNiwgcGl0Y2hMLCBwc0luZGljZXMtPnNpZ25hbFR5
cGUgKTsKKworICAgICAgICBpZiAoIG9wdXNfbGlrZWx5KCAoIDEwID09IHBzRW5jQy0+c2hhcGlu
Z0xQQ09yZGVyICkgJiYgKCAxNiA9PSBwc0VuY0MtPnByZWRpY3RMUENPcmRlcikgKSApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyXzEwXzE2X3NzZTRf
MSggTlNRLCBwc0luZGljZXMtPnNpZ25hbFR5cGUsIHhfc2NfUTEwLCBwdWxzZXMsIHB4cSwgc0xU
UF9RMTUsIEFfUTEyLCBCX1ExNCwKKyAgICAgICAgICAgICAgICBBUl9zaHBfUTEzLCBsYWcsIEhh
cm1TaGFwZUZJUlBhY2tlZF9RMTQsIFRpbHRfUTE0WyBrIF0sIExGX3NocF9RMTRbIGsgXSwgR2Fp
bnNfUTE2WyBrIF0sCisgICAgICAgICAgICAgICAgb2Zmc2V0X1ExMCwgcHNFbmNDLT5zdWJmcl9s
ZW5ndGgsICYodGFibGVbMzJdKSApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXIoIE5TUSwgcHNJbmRpY2Vz
LT5zaWduYWxUeXBlLCB4X3NjX1ExMCwgcHVsc2VzLCBweHEsIHNMVFBfUTE1LCBBX1ExMiwgQl9R
MTQsCisgICAgICAgICAgICAgICAgQVJfc2hwX1ExMywgbGFnLCBIYXJtU2hhcGVGSVJQYWNrZWRf
UTE0LCBUaWx0X1ExNFsgayBdLCBMRl9zaHBfUTE0WyBrIF0sIEdhaW5zX1ExNlsgayBdLCBMYW1i
ZGFfUTEwLAorICAgICAgICAgICAgICAgIG9mZnNldF9RMTAsIHBzRW5jQy0+c3ViZnJfbGVuZ3Ro
LCBwc0VuY0MtPnNoYXBpbmdMUENPcmRlciwgcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIsIHBzRW5j
Qy0+YXJjaCApOworICAgICAgICB9CisKKyAgICAgICAgeF9RMyAgICs9IHBzRW5jQy0+c3ViZnJf
bGVuZ3RoOworICAgICAgICBwdWxzZXMgKz0gcHNFbmNDLT5zdWJmcl9sZW5ndGg7CisgICAgICAg
IHB4cSAgICArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUg
bGFnUHJldiBmb3IgbmV4dCBmcmFtZSAqLworICAgIE5TUS0+bGFnUHJldiA9IHBpdGNoTFsgcHNF
bmNDLT5uYl9zdWJmciAtIDEgXTsKKworICAgIC8qIFNhdmUgcXVhbnRpemVkIHNwZWVjaCBhbmQg
bm9pc2Ugc2hhcGluZyBzaWduYWxzICovCisgICAgc2lsa19tZW1tb3ZlKCBOU1EtPnhxLCAgICAg
ICAgICAgJk5TUS0+eHFbICAgICAgICAgICBwc0VuY0MtPmZyYW1lX2xlbmd0aCBdLCBwc0VuY0Mt
Pmx0cF9tZW1fbGVuZ3RoICogc2l6ZW9mKCBvcHVzX2ludDE2ICkgKTsKKyAgICBzaWxrX21lbW1v
dmUoIE5TUS0+c0xUUF9zaHBfUTE0LCAmTlNRLT5zTFRQX3NocF9RMTRbIHBzRW5jQy0+ZnJhbWVf
bGVuZ3RoIF0sIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKiBzaXplb2YoIG9wdXNfaW50MzIgKSAp
OworICAgIFJFU1RPUkVfU1RBQ0s7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KKy8qIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyXzEwXzE2ICAqLworLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQg
c2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfMTBfMTZfc3NlNF8xKAorICAgIHNpbGtfbnNxX3N0
YXRlICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAg
ICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBzaWduYWxUeXBlLCAg
ICAgICAgICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAgICAgICAgKi8KKyAg
ICBjb25zdCBvcHVzX2ludDMyICAgIHhfc2NfUTEwW10sICAgICAgICAgICAgIC8qIEkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50OCAgICAgICAgICAg
cHVsc2VzW10sICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCisgICAgb3B1c19pbnQxNiAgICAgICAgICB4cVtdLCAgICAgICAgICAgICAgICAg
ICAvKiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2lu
dDMyICAgICAgICAgIHNMVFBfUTE1W10sICAgICAgICAgICAgIC8qIEkvTyAgTFRQIHN0YXRlICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYV9RMTJbXSwg
ICAgICAgICAgICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICov
CisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBiX1ExNFtdLCAgICAgICAgICAgICAgICAvKiBJICAg
IExvbmcgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDE2
ICAgIEFSX3NocF9RMTNbXSwgICAgICAgICAgIC8qIEkgICAgTm9pc2Ugc2hhcGluZyBBUiBjb2Vm
cyAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgbGFnLCAgICAgICAgICAgICAg
ICAgICAgLyogSSAgICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1
c19pbnQzMiAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0LCAvKiBJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIFRpbHRf
UTE0LCAgICAgICAgICAgICAgIC8qIEkgICAgU3BlY3RyYWwgdGlsdCAgICAgICAgICAgICAgICAg
ICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgTEZfc2hwX1ExNCwgICAgICAgICAgICAgLyog
SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAg
ICAgICAgICBHYWluX1ExNiwgICAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIG9mZnNldF9RMTAsICAg
ICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IG9wdXNfaW50ICAgICAgICAgICAgbGVuZ3RoLCAgICAgICAgICAgICAgICAgLyogSSAgICBJbnB1
dCBsZW5ndGggICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICB0
YWJsZVtdWzRdICAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKykKK3sKKyAgICBvcHVzX2ludCAgICAgaTsKKyAgICBvcHVzX2ludDMyICAgTFRQ
X3ByZWRfUTEzLCBMUENfcHJlZF9RMTAsIG5fQVJfUTEyLCBuX0xUUF9RMTM7CisgICAgb3B1c19p
bnQzMiAgIG5fTEZfUTEyLCByX1ExMCwgcTFfUTAsIHExX1ExMCwgcTJfUTEwOworICAgIG9wdXNf
aW50MzIgICBleGNfUTE0LCBMUENfZXhjX1ExNCwgeHFfUTE0LCBHYWluX1ExMDsKKyAgICBvcHVz
X2ludDMyICAgdG1wMSwgdG1wMiwgc0xGX0FSX3NocF9RMTQ7CisgICAgb3B1c19pbnQzMiAgICpw
c0xQQ19RMTQsICpzaHBfbGFnX3B0ciwgKnByZWRfbGFnX3B0cjsKKworICAgIF9fbTEyOGkgeG1t
X3RlbXBhLCB4bW1fdGVtcGI7CisKKyAgICBfX20xMjhpIHhtbV9vbmU7CisKKyAgICBfX20xMjhp
IHBzTFBDX1ExNF9oaV8wMTIzNDU2NywgcHNMUENfUTE0X2hpXzg5QUJDREVGOworICAgIF9fbTEy
OGkgcHNMUENfUTE0X2xvXzAxMjM0NTY3LCBwc0xQQ19RMTRfbG9fODlBQkNERUY7CisgICAgX19t
MTI4aSBhX1ExMl8wMTIzNDU2NywgICAgICAgIGFfUTEyXzg5QUJDREVGOworCisgICAgX19tMTI4
aSBzQVIyX1ExNF9oaV83NjU0MzIxMCwgc0FSMl9RMTRfbG9fNzY1NDMyMTA7CisgICAgX19tMTI4
aSBBUl9zaHBfUTEzXzc2NTQzMjEwOworCisgICAgc2hwX2xhZ19wdHIgID0gJk5TUS0+c0xUUF9z
aHBfUTE0WyBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSBsYWcgKyBIQVJNX1NIQVBFX0ZJUl9UQVBT
IC8gMiBdOworICAgIHByZWRfbGFnX3B0ciA9ICZzTFRQX1ExNVsgTlNRLT5zTFRQX2J1Zl9pZHgg
LSBsYWcgKyBMVFBfT1JERVIgLyAyIF07CisgICAgR2Fpbl9RMTAgICAgID0gc2lsa19SU0hJRlQo
IEdhaW5fUTE2LCA2ICk7CisKKyAgICAvKiBTZXQgdXAgc2hvcnQgdGVybSBBUiBzdGF0ZSAqLwor
ICAgIHBzTFBDX1ExNCA9ICZOU1EtPnNMUENfUTE0WyBOU1FfTFBDX0JVRl9MRU5HVEggLSAxIF07
CisKKyAgICBzTEZfQVJfc2hwX1ExNCA9IE5TUS0+c0xGX0FSX3NocF9RMTQ7CisgICAgeHFfUTE0
ICAgICAgICAgPSBwc0xQQ19RMTRbIDAgXTsKKyAgICBMVFBfcHJlZF9RMTMgICA9IDA7CisKKyAg
ICAvKiBsb2FkIGFfUTEyICovCisgICAgeG1tX29uZSA9IF9tbV9zZXRfZXBpOCggMSwgMCwgMywg
MiwgNSwgNCwgNywgNiwgOSwgOCwgMTEsIDEwLCAxMywgMTIsIDE1LCAxNCApOworCisgICAgLyog
bG9hZCBhX1ExMlswXSAtIGFfUTEyWzddICovCisgICAgYV9RMTJfMDEyMzQ1NjcgPSBfbW1fbG9h
ZHVfc2kxMjgoIChfX20xMjhpICopKCZhX1ExMlsgMCBdICkgKTsKKyAgICAvKiBsb2FkIGFfUTEy
WyA4IF0gLSBhX1ExMlsgMTUgXSAqLworICAgIGFfUTEyXzg5QUJDREVGID0gX21tX2xvYWR1X3Np
MTI4KCAoX19tMTI4aSAqKSgmYV9RMTJbIDggXSApICk7CisKKyAgICBhX1ExMl8wMTIzNDU2NyA9
IF9tbV9zaHVmZmxlX2VwaTgoIGFfUTEyXzAxMjM0NTY3LCB4bW1fb25lICk7CisgICAgYV9RMTJf
ODlBQkNERUYgPSBfbW1fc2h1ZmZsZV9lcGk4KCBhX1ExMl84OUFCQ0RFRiwgeG1tX29uZSApOwor
CisgICAgLyogbG9hZCBBUl9zaHBfUTEzICovCisgICAgQVJfc2hwX1ExM183NjU0MzIxMCA9IF9t
bV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJkFSX3NocF9RMTNbMF0gKSApOworCisgICAgLyog
bG9hZCBwc0xQQ19RMTQgKi8KKyAgICB4bW1fb25lID0gX21tX3NldF9lcGk4KDE1LCAxNCwgMTEs
IDEwLCA3LCA2LCAzLCAyLCAxMywgMTIsIDksIDgsIDUsIDQsIDEsIDAgKTsKKworICAgIHhtbV90
ZW1wYSA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJnBzTFBDX1ExNFstMTZdKSApOwor
ICAgIHhtbV90ZW1wYiA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJnBzTFBDX1ExNFst
MTJdKSApOworCisgICAgeG1tX3RlbXBhID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBhLCB4
bW1fb25lICk7CisgICAgeG1tX3RlbXBiID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBiLCB4
bW1fb25lICk7CisKKyAgICBwc0xQQ19RMTRfaGlfODlBQkNERUYgPSBfbW1fdW5wYWNraGlfZXBp
NjQoIHhtbV90ZW1wYSwgeG1tX3RlbXBiICk7CisgICAgcHNMUENfUTE0X2xvXzg5QUJDREVGID0g
X21tX3VucGFja2xvX2VwaTY0KCB4bW1fdGVtcGEsIHhtbV90ZW1wYiApOworCisgICAgeG1tX3Rl
bXBhID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0WyAtOCBdKSApOwor
ICAgIHhtbV90ZW1wYiA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJnBzTFBDX1ExNFsg
LTQgXSkgKTsKKworICAgIHhtbV90ZW1wYSA9IF9tbV9zaHVmZmxlX2VwaTgoIHhtbV90ZW1wYSwg
eG1tX29uZSApOworICAgIHhtbV90ZW1wYiA9IF9tbV9zaHVmZmxlX2VwaTgoIHhtbV90ZW1wYiwg
eG1tX29uZSApOworCisgICAgcHNMUENfUTE0X2hpXzAxMjM0NTY3ID0gX21tX3VucGFja2hpX2Vw
aTY0KCB4bW1fdGVtcGEsIHhtbV90ZW1wYiApOworICAgIHBzTFBDX1ExNF9sb18wMTIzNDU2NyA9
IF9tbV91bnBhY2tsb19lcGk2NCggeG1tX3RlbXBhLCB4bW1fdGVtcGIgKTsKKworICAgIC8qIGxv
YWQgc0FSMl9RMTQgKi8KKyAgICB4bW1fdGVtcGEgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhp
ICopKCYoTlNRLT5zQVIyX1ExNFsgMCBdKSApICk7CisgICAgeG1tX3RlbXBiID0gX21tX2xvYWR1
X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5TUS0+c0FSMl9RMTRbIDQgXSkgKSApOworCisgICAgeG1t
X3RlbXBhID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBhLCB4bW1fb25lICk7CisgICAgeG1t
X3RlbXBiID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBiLCB4bW1fb25lICk7CisKKyAgICBz
QVIyX1ExNF9oaV83NjU0MzIxMCA9IF9tbV91bnBhY2toaV9lcGk2NCggeG1tX3RlbXBhLCB4bW1f
dGVtcGIgKTsKKyAgICBzQVIyX1ExNF9sb183NjU0MzIxMCA9IF9tbV91bnBhY2tsb19lcGk2NCgg
eG1tX3RlbXBhLCB4bW1fdGVtcGIgKTsKKworICAgIC8qIHByZXBhcmUgMSBpbiA4ICogMTZiaXQg
Ki8KKyAgICB4bW1fb25lID0gX21tX3NldDFfZXBpMTYoMSk7CisKKyAgICBmb3IoIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKysgKQorICAgIHsKKyAgICAgICAgLyogU2hvcnQtdGVybSBwcmVkaWN0aW9u
ICovCisgICAgICAgIF9fbTEyOGkgeG1tX2hpXzA3LCB4bW1faGlfOEYsIHhtbV9sb18wNywgeG1t
X2xvXzhGOworCisgICAgICAgIC8qIEF2b2lkcyBpbnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVzZSBz
aWxrX1NNTEFXQigpIGFsd2F5cyByb3VuZHMgdG8gLWluZiAqLworICAgICAgICBMUENfcHJlZF9R
MTAgPSA4OyAvKiBzaWxrX1JTSElGVCggcHJlZGljdExQQ09yZGVyLCAxICk7ICovCisKKyAgICAg
ICAgLyogc2hpZnQgcHNMUENfUTE0ICovCisgICAgICAgIHBzTFBDX1ExNF9oaV84OUFCQ0RFRiA9
IF9tbV9hbGlnbnJfZXBpOCggcHNMUENfUTE0X2hpXzAxMjM0NTY3LCBwc0xQQ19RMTRfaGlfODlB
QkNERUYsIDIgKTsKKyAgICAgICAgcHNMUENfUTE0X2xvXzg5QUJDREVGID0gX21tX2FsaWducl9l
cGk4KCBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcsIHBzTFBDX1ExNF9sb184OUFCQ0RFRiwgMiApOwor
CisgICAgICAgIHBzTFBDX1ExNF9oaV8wMTIzNDU2NyA9IF9tbV9zcmxpX3NpMTI4KCBwc0xQQ19R
MTRfaGlfMDEyMzQ1NjcsIDIgKTsKKyAgICAgICAgcHNMUENfUTE0X2xvXzAxMjM0NTY3ID0gX21t
X3NybGlfc2kxMjgoIHBzTFBDX1ExNF9sb18wMTIzNDU2NywgMiApOworCisgICAgICAgIHBzTFBD
X1ExNF9oaV8wMTIzNDU2NyA9IF9tbV9pbnNlcnRfZXBpMTYoIHBzTFBDX1ExNF9oaV8wMTIzNDU2
NywgKHhxX1ExNCA+PiAxNiksIDcgKTsKKyAgICAgICAgcHNMUENfUTE0X2xvXzAxMjM0NTY3ID0g
X21tX2luc2VydF9lcGkxNiggcHNMUENfUTE0X2xvXzAxMjM0NTY3LCAoeHFfUTE0KSwgICAgICAg
NyApOworCisgICAgICAgIC8qIGhpZ2ggcGFydCwgdXNlIHBtYWRkd2QsIHJlc3VsdHMgaW4gNCAz
Mi1iaXQgKi8KKyAgICAgICAgeG1tX2hpXzA3ID0gX21tX21hZGRfZXBpMTYoIHBzTFBDX1ExNF9o
aV8wMTIzNDU2NywgYV9RMTJfMDEyMzQ1NjcgKTsKKyAgICAgICAgeG1tX2hpXzhGID0gX21tX21h
ZGRfZXBpMTYoIHBzTFBDX1ExNF9oaV84OUFCQ0RFRiwgYV9RMTJfODlBQkNERUYgKTsKKworICAg
ICAgICAvKiBsb3cgcGFydCwgdXNlIHBtdWxodywgcmVzdWx0cyBpbiA4IDE2LWJpdCwgbm90ZSB3
ZSBuZWVkIHNpbXVsYXRlIHVuc2lnbmVkICogc2lnbmVkLCBfbW1fc3JhaV9lcGkxNihwc0xQQ19R
MTRfbG9fMDEyMzQ1NjcsIDE1KSAqLworICAgICAgICB4bW1fdGVtcGEgPSBfbW1fY21wZ3RfZXBp
MTYoIF9tbV9zZXR6ZXJvX3NpMTI4KCksIHBzTFBDX1ExNF9sb18wMTIzNDU2NyApOworICAgICAg
ICB4bW1fdGVtcGIgPSBfbW1fY21wZ3RfZXBpMTYoIF9tbV9zZXR6ZXJvX3NpMTI4KCksIHBzTFBD
X1ExNF9sb184OUFCQ0RFRiApOworCisgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9hbmRfc2kxMjgo
IHhtbV90ZW1wYSwgYV9RMTJfMDEyMzQ1NjcgKTsKKyAgICAgICAgeG1tX3RlbXBiID0gX21tX2Fu
ZF9zaTEyOCggeG1tX3RlbXBiLCBhX1ExMl84OUFCQ0RFRiApOworCisgICAgICAgIHhtbV9sb18w
NyA9IF9tbV9tdWxoaV9lcGkxNiggcHNMUENfUTE0X2xvXzAxMjM0NTY3LCBhX1ExMl8wMTIzNDU2
NyApOworICAgICAgICB4bW1fbG9fOEYgPSBfbW1fbXVsaGlfZXBpMTYoIHBzTFBDX1ExNF9sb184
OUFCQ0RFRiwgYV9RMTJfODlBQkNERUYgKTsKKworICAgICAgICB4bW1fbG9fMDcgPSBfbW1fYWRk
X2VwaTE2KCB4bW1fbG9fMDcsIHhtbV90ZW1wYSApOworICAgICAgICB4bW1fbG9fOEYgPSBfbW1f
YWRkX2VwaTE2KCB4bW1fbG9fOEYsIHhtbV90ZW1wYiApOworCisgICAgICAgIHhtbV9sb18wNyA9
IF9tbV9tYWRkX2VwaTE2KCB4bW1fbG9fMDcsIHhtbV9vbmUgKTsKKyAgICAgICAgeG1tX2xvXzhG
ID0gX21tX21hZGRfZXBpMTYoIHhtbV9sb184RiwgeG1tX29uZSApOworCisgICAgICAgIC8qIGFj
Y3VtdWxhdGUgKi8KKyAgICAgICAgeG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3
LCB4bW1faGlfOEYgKTsKKyAgICAgICAgeG1tX2xvXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2xv
XzA3LCB4bW1fbG9fOEYgKTsKKworICAgICAgICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4
bW1faGlfMDcsIHhtbV9sb18wNyApOworCisgICAgICAgIHhtbV9oaV8wNyA9IF9tbV9hZGRfZXBp
MzIoIHhtbV9oaV8wNywgX21tX3VucGFja2hpX2VwaTY0KHhtbV9oaV8wNywgeG1tX2hpXzA3ICkg
KTsKKyAgICAgICAgeG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3LCBfbW1fc2h1
ZmZsZWxvX2VwaTE2KHhtbV9oaV8wNywgMHgwRSApICk7CisKKyAgICAgICAgTFBDX3ByZWRfUTEw
ICs9IF9tbV9jdnRzaTEyOF9zaTMyKCB4bW1faGlfMDcgKTsKKworICAgICAgICAvKiBMb25nLXRl
cm0gcHJlZGljdGlvbiAqLworICAgICAgICBpZiAoIG9wdXNfbGlrZWx5KCBzaWduYWxUeXBlID09
IFRZUEVfVk9JQ0VEICkgKSB7CisgICAgICAgICAgICAvKiBVbnJvbGxlZCBsb29wICovCisgICAg
ICAgICAgICAvKiBBdm9pZHMgaW50cm9kdWNpbmcgYSBiaWFzIGJlY2F1c2Ugc2lsa19TTUxBV0Io
KSBhbHdheXMgcm91bmRzIHRvIC1pbmYgKi8KKyAgICAgICAgICAgIExUUF9wcmVkX1ExMyA9IDI7
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX19tMTI4aSBiX1ExNF8zMjEwLCBiX1Ex
NF8wMTIzLCBwcmVkX2xhZ19wdHJfMDEyMzsKKworICAgICAgICAgICAgICAgIGJfUTE0XzMyMTAg
PSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoIGJfUTE0ICk7CisgICAgICAgICAgICAgICAgYl9RMTRf
MDEyMyA9IF9tbV9zaHVmZmxlX2VwaTMyKCBiX1ExNF8zMjEwLCAweDFCICk7CisKKyAgICAgICAg
ICAgICAgICAvKiBsb2FkZWQ6IFswXSBbLTFdIFstMl0gWy0zXSAqLworICAgICAgICAgICAgICAg
IHByZWRfbGFnX3B0cl8wMTIzID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHJlZF9s
YWdfcHRyWyAtMyBdICkgKTsKKyAgICAgICAgICAgICAgICAvKiBzaHVmZmxlIHRvIFstM10gWy0y
XSBbLTFdIFswXSBhbmQgdG8gbmV3IHhtbSAqLworICAgICAgICAgICAgICAgIHhtbV90ZW1wYSA9
IF9tbV9zaHVmZmxlX2VwaTMyKCBwcmVkX2xhZ19wdHJfMDEyMywgMHgxQiApOworICAgICAgICAg
ICAgICAgIC8qNjQtYml0IG11bHRpcGx5LCBhWzJdICogYlstMl0sIGFbMF0gKiBiWzBdICovCisg
ICAgICAgICAgICAgICAgeG1tX3RlbXBhID0gX21tX211bF9lcGkzMiggeG1tX3RlbXBhLCBiX1Ex
NF8zMjEwICk7CisgICAgICAgICAgICAgICAgLyogcmlnaHQgc2hpZnQgMiBieXRlcyAoMTYgYml0
cyksIHplcm8gZXh0ZW5kZWQgKi8KKyAgICAgICAgICAgICAgICB4bW1fdGVtcGEgPSBfbW1fc3Js
aV9zaTEyOCggeG1tX3RlbXBhLCAyICk7CisKKyAgICAgICAgICAgICAgICAvKiBhWzFdICogYlst
MV0sIGFbM10gKiBiWy0zXSAqLworICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0cl8wMTIzID0g
X21tX211bF9lcGkzMiggcHJlZF9sYWdfcHRyXzAxMjMsIGJfUTE0XzAxMjMgKTsKKyAgICAgICAg
ICAgICAgICBwcmVkX2xhZ19wdHJfMDEyMyA9IF9tbV9zcmxpX3NpMTI4KCBwcmVkX2xhZ19wdHJf
MDEyMywgMiApOworCisgICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyXzAxMjMgPSBfbW1fYWRk
X2VwaTMyKCBwcmVkX2xhZ19wdHJfMDEyMywgeG1tX3RlbXBhICk7CisgICAgICAgICAgICAgICAg
LyogZXF1YWwgc2hpZnQgcmlnaHQgOCBieXRlcyovCisgICAgICAgICAgICAgICAgeG1tX3RlbXBh
ID0gX21tX3NodWZmbGVfZXBpMzIoIHByZWRfbGFnX3B0cl8wMTIzLCBfTU1fU0hVRkZMRSggMCwg
MCwgMywgMiApICk7CisgICAgICAgICAgICAgICAgeG1tX3RlbXBhID0gX21tX2FkZF9lcGkzMigg
eG1tX3RlbXBhLCBwcmVkX2xhZ19wdHJfMDEyMyApOworCisgICAgICAgICAgICAgICAgTFRQX3By
ZWRfUTEzICs9IF9tbV9jdnRzaTEyOF9zaTMyKCB4bW1fdGVtcGEgKTsKKworICAgICAgICAgICAg
ICAgIExUUF9wcmVkX1ExMyA9IHNpbGtfU01MQVdCKCBMVFBfcHJlZF9RMTMsIHByZWRfbGFnX3B0
clsgLTQgXSwgYl9RMTRbIDQgXSApOworICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0cisrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogTm9pc2Ugc2hhcGUgZmVlZGJh
Y2sgKi8KKyAgICAgICAgTlNRLT5zQVIyX1ExNFsgOSBdID0gTlNRLT5zQVIyX1ExNFsgOCBdOwor
ICAgICAgICBOU1EtPnNBUjJfUTE0WyA4IF0gPSBfbW1fY3Z0c2kxMjhfc2kzMiggX21tX3NybGlf
c2kxMjgoX21tX3VucGFja2hpX2VwaTE2KCBzQVIyX1ExNF9sb183NjU0MzIxMCwgc0FSMl9RMTRf
aGlfNzY1NDMyMTAgKSwgMTIgKSApOworCisgICAgICAgIHNBUjJfUTE0X2hpXzc2NTQzMjEwID0g
X21tX3NsbGlfc2kxMjgoIHNBUjJfUTE0X2hpXzc2NTQzMjEwLCAyICk7CisgICAgICAgIHNBUjJf
UTE0X2xvXzc2NTQzMjEwID0gX21tX3NsbGlfc2kxMjgoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCAy
ICk7CisKKyAgICAgICAgc0FSMl9RMTRfaGlfNzY1NDMyMTAgPSBfbW1faW5zZXJ0X2VwaTE2KCBz
QVIyX1ExNF9oaV83NjU0MzIxMCwgKHhxX1ExNCA+PiAxNiksIDAgKTsKKyAgICAgICAgc0FSMl9R
MTRfbG9fNzY1NDMyMTAgPSBfbW1faW5zZXJ0X2VwaTE2KCBzQVIyX1ExNF9sb183NjU0MzIxMCwg
KHhxX1ExNCksICAgICAgIDAgKTsKKworICAgICAgICAvKiBoaWdoIHBhcnQsIHVzZSBwbWFkZHdk
LCByZXN1bHRzIGluIDQgMzItYml0ICovCisgICAgICAgIHhtbV9oaV8wNyA9IF9tbV9tYWRkX2Vw
aTE2KCBzQVIyX1ExNF9oaV83NjU0MzIxMCwgQVJfc2hwX1ExM183NjU0MzIxMCApOworCisgICAg
ICAgIC8qIGxvdyBwYXJ0LCB1c2UgcG11bGh3LCByZXN1bHRzIGluIDggMTYtYml0LCBub3RlIHdl
IG5lZWQgc2ltdWxhdGUgdW5zaWduZWQgKiBzaWduZWQsX21tX3NyYWlfZXBpMTYoc0FSMl9RMTRf
bG9fNzY1NDMyMTAsIDE1KSAqLworICAgICAgICB4bW1fdGVtcGEgPSBfbW1fY21wZ3RfZXBpMTYo
IF9tbV9zZXR6ZXJvX3NpMTI4KCksIHNBUjJfUTE0X2xvXzc2NTQzMjEwICk7CisgICAgICAgIHht
bV90ZW1wYSA9IF9tbV9hbmRfc2kxMjgoIHhtbV90ZW1wYSwgQVJfc2hwX1ExM183NjU0MzIxMCAp
OworCisgICAgICAgIHhtbV9sb18wNyA9IF9tbV9tdWxoaV9lcGkxNiggc0FSMl9RMTRfbG9fNzY1
NDMyMTAsIEFSX3NocF9RMTNfNzY1NDMyMTAgKTsKKyAgICAgICAgeG1tX2xvXzA3ID0gX21tX2Fk
ZF9lcGkxNiggeG1tX2xvXzA3LCB4bW1fdGVtcGEgKTsKKworICAgICAgICB4bW1fbG9fMDcgPSBf
bW1fbWFkZF9lcGkxNiggeG1tX2xvXzA3LCB4bW1fb25lICk7CisKKyAgICAgICAgLyogYWNjdW11
bGF0ZSAqLworICAgICAgICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIHht
bV9sb18wNyApOworCisgICAgICAgIHhtbV9oaV8wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9oaV8w
NywgX21tX3VucGFja2hpX2VwaTY0KHhtbV9oaV8wNywgeG1tX2hpXzA3ICkgKTsKKyAgICAgICAg
eG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3LCBfbW1fc2h1ZmZsZWxvX2VwaTE2
KHhtbV9oaV8wNywgMHgwRSApICk7CisKKyAgICAgICAgbl9BUl9RMTIgPSA1ICsgX21tX2N2dHNp
MTI4X3NpMzIoIHhtbV9oaV8wNyApOworCisgICAgICAgIG5fQVJfUTEyID0gc2lsa19TTUxBV0Io
IG5fQVJfUTEyLCBOU1EtPnNBUjJfUTE0WyA4IF0sIEFSX3NocF9RMTNbIDggXSApOworICAgICAg
ICBuX0FSX1ExMiA9IHNpbGtfU01MQVdCKCBuX0FSX1ExMiwgTlNRLT5zQVIyX1ExNFsgOSBdLCBB
Ul9zaHBfUTEzWyA5IF0gKTsKKworICAgICAgICBuX0FSX1ExMiA9IHNpbGtfTFNISUZUMzIoIG5f
QVJfUTEyLCAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTEgLT4gUTEy
ICovCisgICAgICAgIG5fQVJfUTEyID0gc2lsa19TTUxBV0IoIG5fQVJfUTEyLCBzTEZfQVJfc2hw
X1ExNCwgVGlsdF9RMTQgKTsKKworICAgICAgICBuX0xGX1ExMiA9IHNpbGtfU01VTFdCKCBOU1Et
PnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gMSBdLCBMRl9zaHBfUTE0ICk7
CisgICAgICAgIG5fTEZfUTEyID0gc2lsa19TTUxBV1QoIG5fTEZfUTEyLCBzTEZfQVJfc2hwX1Ex
NCwgTEZfc2hwX1ExNCApOworCisgICAgICAgIHNpbGtfYXNzZXJ0KCBsYWcgPiAwIHx8IHNpZ25h
bFR5cGUgIT0gVFlQRV9WT0lDRUQgKTsKKworICAgICAgICAvKiBDb21iaW5lIHByZWRpY3Rpb24g
YW5kIG5vaXNlIHNoYXBpbmcgc2lnbmFscyAqLworICAgICAgICB0bXAxID0gc2lsa19TVUIzMigg
c2lsa19MU0hJRlQzMiggTFBDX3ByZWRfUTEwLCAyICksIG5fQVJfUTEyICk7ICAgICAgICAvKiBR
MTIgKi8KKyAgICAgICAgdG1wMSA9IHNpbGtfU1VCMzIoIHRtcDEsIG5fTEZfUTEyICk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTEyICovCisgICAgICAgIGlmKCBsYWcg
PiAwICkgeworICAgICAgICAgICAgLyogU3ltbWV0cmljLCBwYWNrZWQgRklSIGNvZWZmaWNpZW50
cyAqLworICAgICAgICAgICAgbl9MVFBfUTEzID0gc2lsa19TTVVMV0IoIHNpbGtfQUREMzIoIHNo
cF9sYWdfcHRyWyAwIF0sIHNocF9sYWdfcHRyWyAtMiBdICksIEhhcm1TaGFwZUZJUlBhY2tlZF9R
MTQgKTsKKyAgICAgICAgICAgIG5fTFRQX1ExMyA9IHNpbGtfU01MQVdUKCBuX0xUUF9RMTMsIHNo
cF9sYWdfcHRyWyAtMSBdLCAgICAgICAgICAgICAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRf
UTE0ICk7CisgICAgICAgICAgICBuX0xUUF9RMTMgPSBzaWxrX0xTSElGVCggbl9MVFBfUTEzLCAx
ICk7CisgICAgICAgICAgICBzaHBfbGFnX3B0cisrOworCisgICAgICAgICAgICB0bXAyID0gc2ls
a19TVUIzMiggTFRQX3ByZWRfUTEzLCBuX0xUUF9RMTMgKTsgICAgICAgICAgICAgICAgICAgICAg
IC8qIFExMyAqLworICAgICAgICAgICAgdG1wMSA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAyLCB0
bXAxLCAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTMgKi8KKyAgICAgICAgICAg
IHRtcDEgPSBzaWxrX1JTSElGVF9ST1VORCggdG1wMSwgMyApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUTEwICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0bXAx
ID0gc2lsa19SU0hJRlRfUk9VTkQoIHRtcDEsIDIgKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIFExMCAqLworICAgICAgICB9CisKKyAgICAgICAgcl9RMTAgPSBzaWxrX1NVQjMy
KCB4X3NjX1ExMFsgaSBdLCB0bXAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
cmVzaWR1YWwgZXJyb3IgUTEwICovCisKKyAgICAgICAgLyogR2VuZXJhdGUgZGl0aGVyICovCisg
ICAgICAgIE5TUS0+cmFuZF9zZWVkID0gc2lsa19SQU5EKCBOU1EtPnJhbmRfc2VlZCApOworCisg
ICAgICAgIC8qIEZsaXAgc2lnbiBkZXBlbmRpbmcgb24gZGl0aGVyICovCisgICAgICAgIHRtcDIg
PSAtcl9RMTA7CisgICAgICAgIGlmICggTlNRLT5yYW5kX3NlZWQgPCAwICkgcl9RMTAgPSB0bXAy
OworCisgICAgICAgIHJfUTEwID0gc2lsa19MSU1JVF8zMiggcl9RMTAsIC0oMzEgPDwgMTApLCAz
MCA8PCAxMCApOworCisgICAgICAgIC8qIEZpbmQgdHdvIHF1YW50aXphdGlvbiBsZXZlbCBjYW5k
aWRhdGVzIGFuZCBtZWFzdXJlIHRoZWlyIHJhdGUtZGlzdG9ydGlvbiAqLworICAgICAgICBxMV9R
MTAgPSBzaWxrX1NVQjMyKCByX1ExMCwgb2Zmc2V0X1ExMCApOworICAgICAgICBxMV9RMCA9IHNp
bGtfUlNISUZUKCBxMV9RMTAsIDEwICk7CisKKyAgICAgICAgcTFfUTEwID0gdGFibGVbcTFfUTBd
WzBdOworICAgICAgICBxMl9RMTAgPSB0YWJsZVtxMV9RMF1bMV07CisKKyAgICAgICAgaWYgKHJf
UTEwICogdGFibGVbcTFfUTBdWzJdIC0gdGFibGVbcTFfUTBdWzNdIDwgMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcTFfUTEwID0gcTJfUTEwOworICAgICAgICB9CisKKyAgICAgICAgcHVsc2Vz
WyBpIF0gPSAob3B1c19pbnQ4KXNpbGtfUlNISUZUX1JPVU5EKCBxMV9RMTAsIDEwICk7CisKKyAg
ICAgICAgLyogRXhjaXRhdGlvbiAqLworICAgICAgICBleGNfUTE0ID0gc2lsa19MU0hJRlQoIHEx
X1ExMCwgNCApOworCisgICAgICAgIHRtcDIgPSAtZXhjX1ExNDsKKyAgICAgICAgaWYgKCBOU1Et
PnJhbmRfc2VlZCA8IDAgKSBleGNfUTE0ID0gdG1wMjsKKworICAgICAgICAvKiBBZGQgcHJlZGlj
dGlvbnMgKi8KKyAgICAgICAgTFBDX2V4Y19RMTQgPSBzaWxrX0FERF9MU0hJRlQzMiggZXhjX1Ex
NCwgTFRQX3ByZWRfUTEzLCAxICk7CisgICAgICAgIHhxX1ExNCAgICAgID0gc2lsa19BRERfTFNI
SUZUMzIoIExQQ19leGNfUTE0LCBMUENfcHJlZF9RMTAsIDQgKTsKKworICAgICAgICAvKiBVcGRh
dGUgc3RhdGVzICovCisgICAgICAgIHBzTFBDX1ExNCsrOworICAgICAgICAqcHNMUENfUTE0ID0g
eHFfUTE0OworICAgICAgICBzTEZfQVJfc2hwX1ExNCA9IHNpbGtfU1VCX0xTSElGVDMyKCB4cV9R
MTQsIG5fQVJfUTEyLCAyICk7CisKKyAgICAgICAgTlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xU
UF9zaHBfYnVmX2lkeCBdID0gc2lsa19TVUJfTFNISUZUMzIoIHNMRl9BUl9zaHBfUTE0LCBuX0xG
X1ExMiwgMiApOworICAgICAgICBzTFRQX1ExNVsgTlNRLT5zTFRQX2J1Zl9pZHggXSA9IHNpbGtf
TFNISUZUKCBMUENfZXhjX1ExNCwgMSApOworICAgICAgICBOU1EtPnNMVFBfc2hwX2J1Zl9pZHgr
KzsKKyAgICAgICAgTlNRLT5zTFRQX2J1Zl9pZHgrKzsKKworICAgICAgICAvKiBNYWtlIGRpdGhl
ciBkZXBlbmRlbnQgb24gcXVhbnRpemVkIHNpZ25hbCAqLworICAgICAgICBOU1EtPnJhbmRfc2Vl
ZCA9IHNpbGtfQUREMzJfb3ZmbHcoIE5TUS0+cmFuZF9zZWVkLCBwdWxzZXNbIGkgXSApOworICAg
IH0KKworICAgIE5TUS0+c0xGX0FSX3NocF9RMTQgPSBzTEZfQVJfc2hwX1ExNDsKKworICAgIC8q
IFNjYWxlIFhRIGJhY2sgdG8gbm9ybWFsIGxldmVsIGJlZm9yZSBzYXZpbmcgKi8KKyAgICBwc0xQ
Q19RMTQgPSAmTlNRLT5zTFBDX1ExNFsgTlNRX0xQQ19CVUZfTEVOR1RIIF07CisKKyAgICAvKiB3
cml0ZSBiYWNrIHNBUjJfUTE0ICovCisgICAgeG1tX3RlbXBhID0gX21tX3VucGFja2hpX2VwaTE2
KCBzQVIyX1ExNF9sb183NjU0MzIxMCwgc0FSMl9RMTRfaGlfNzY1NDMyMTAgKTsKKyAgICB4bW1f
dGVtcGIgPSBfbW1fdW5wYWNrbG9fZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCBzQVIyX1Ex
NF9oaV83NjU0MzIxMCApOworICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopKCZOU1Et
PnNBUjJfUTE0WyA0IF0pLCB4bW1fdGVtcGEgKTsKKyAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19t
MTI4aSAqKSgmTlNRLT5zQVIyX1ExNFsgMCBdKSwgeG1tX3RlbXBiICk7CisKKyAgICAvKiB4cVsg
aSBdID0gKG9wdXNfaW50MTYpc2lsa19TQVQxNiggc2lsa19SU0hJRlRfUk9VTkQoIHNpbGtfU01V
TFdXKCBwc0xQQ19RMTRbIGkgXSwgR2Fpbl9RMTAgKSwgOCApICk7ICovCisgICAgeworICAgICAg
ICBfX20xMjhpIHhtbV9HYWluX1ExMDsKKyAgICAgICAgX19tMTI4aSB4bW1feHFfUTE0XzMyMTAs
IHhtbV94cV9RMTRfeDN4MSwgeG1tX3hxX1ExNF83NjU0LCB4bW1feHFfUTE0X3g3eDU7CisKKyAg
ICAgICAgLyogcHJlcGFyZSAoMSA8PCA3KSBpbiBwYWNrZWQgNCAzMi1iaXRzICovCisgICAgICAg
IHhtbV90ZW1wYSA9IF9tbV9zZXQxX2VwaTMyKCAoMSA8PCA3KSApOworCisgICAgICAgIC8qIHBy
ZXBhcmUgR2Fpbl9RMTAgaW4gcGFja2VkIDQgMzItYml0cyAqLworICAgICAgICB4bW1fR2Fpbl9R
MTAgPSBfbW1fc2V0MV9lcGkzMiggR2Fpbl9RMTAgKTsKKworICAgICAgICAvKiBwcm9jZXNzIHhx
ICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggLSA3OyBpICs9IDgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEy
OGkgKikoJihwc0xQQ19RMTRbIGkgKyAwIF0gKSApICk7CisgICAgICAgICAgICB4bW1feHFfUTE0
Xzc2NTQgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCYocHNMUENfUTE0WyBpICsgNCBd
ICkgKSApOworCisgICAgICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzKi8KKyAg
ICAgICAgICAgIHhtbV94cV9RMTRfeDN4MSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4bW1feHFfUTE0
XzMyMTAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKKyAgICAgICAgICAgIC8qIGVxdWFs
IHNoaWZ0IHJpZ2h0IDQgYnl0ZXMqLworICAgICAgICAgICAgeG1tX3hxX1ExNF94N3g1ID0gX21t
X3NodWZmbGVfZXBpMzIoIHhtbV94cV9RMTRfNzY1NCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEg
KSApOworCisgICAgICAgICAgICB4bW1feHFfUTE0XzMyMTAgPSBfbW1fbXVsX2VwaTMyKCB4bW1f
eHFfUTE0XzMyMTAsIHhtbV9HYWluX1ExMCApOworICAgICAgICAgICAgeG1tX3hxX1ExNF94M3gx
ID0gX21tX211bF9lcGkzMiggeG1tX3hxX1ExNF94M3gxLCB4bW1fR2Fpbl9RMTAgKTsKKyAgICAg
ICAgICAgIHhtbV94cV9RMTRfNzY1NCA9IF9tbV9tdWxfZXBpMzIoIHhtbV94cV9RMTRfNzY1NCwg
eG1tX0dhaW5fUTEwICk7CisgICAgICAgICAgICB4bW1feHFfUTE0X3g3eDUgPSBfbW1fbXVsX2Vw
aTMyKCB4bW1feHFfUTE0X3g3eDUsIHhtbV9HYWluX1ExMCApOworCisgICAgICAgICAgICB4bW1f
eHFfUTE0XzMyMTAgPSBfbW1fc3JsaV9lcGk2NCggeG1tX3hxX1ExNF8zMjEwLCAxNiApOworICAg
ICAgICAgICAgeG1tX3hxX1ExNF94M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV94cV9RMTRfeDN4
MSwgMTYgKTsKKyAgICAgICAgICAgIHhtbV94cV9RMTRfNzY1NCA9IF9tbV9zcmxpX2VwaTY0KCB4
bW1feHFfUTE0Xzc2NTQsIDE2ICk7CisgICAgICAgICAgICB4bW1feHFfUTE0X3g3eDUgPSBfbW1f
c2xsaV9lcGk2NCggeG1tX3hxX1ExNF94N3g1LCAxNiApOworCisgICAgICAgICAgICB4bW1feHFf
UTE0XzMyMTAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV94cV9RMTRfMzIxMCwgeG1tX3hxX1ExNF94
M3gxLCAweENDICk7CisgICAgICAgICAgICB4bW1feHFfUTE0Xzc2NTQgPSBfbW1fYmxlbmRfZXBp
MTYoIHhtbV94cV9RMTRfNzY1NCwgeG1tX3hxX1ExNF94N3g1LCAweENDICk7CisKKyAgICAgICAg
ICAgIC8qIHNpbGtfUlNISUZUX1JPVU5EKHhxLCA4KSAqLworICAgICAgICAgICAgeG1tX3hxX1Ex
NF8zMjEwID0gX21tX2FkZF9lcGkzMiggeG1tX3hxX1ExNF8zMjEwLCB4bW1fdGVtcGEgKTsKKyAg
ICAgICAgICAgIHhtbV94cV9RMTRfNzY1NCA9IF9tbV9hZGRfZXBpMzIoIHhtbV94cV9RMTRfNzY1
NCwgeG1tX3RlbXBhICk7CisKKyAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9zcmFp
X2VwaTMyKCB4bW1feHFfUTE0XzMyMTAsIDggKTsKKyAgICAgICAgICAgIHhtbV94cV9RMTRfNzY1
NCA9IF9tbV9zcmFpX2VwaTMyKCB4bW1feHFfUTE0Xzc2NTQsIDggKTsKKworICAgICAgICAgICAg
Lyogc2lsa19TQVQxNiAqLworICAgICAgICAgICAgeG1tX3hxX1ExNF8zMjEwID0gX21tX3BhY2tz
X2VwaTMyKCB4bW1feHFfUTE0XzMyMTAsIHhtbV94cV9RMTRfNzY1NCApOworCisgICAgICAgICAg
ICAvKiBzYXZlIHRvIHhxICovCisgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4
aSAqKSgmeHFbIGkgXSApLCB4bW1feHFfUTE0XzMyMTAgKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICB7CisgICAgICAgIHhxW2ldID0gKG9wdXNf
aW50MTYpc2lsa19TQVQxNiggc2lsa19SU0hJRlRfUk9VTkQoIHNpbGtfU01VTFdXKCBwc0xQQ19R
MTRbIGkgXSwgR2Fpbl9RMTAgKSwgOCApICk7CisgICAgfQorCisgICAgLyogVXBkYXRlIExQQyBz
eW50aCBidWZmZXIgKi8KKyAgICBzaWxrX21lbWNweSggTlNRLT5zTFBDX1ExNCwgJk5TUS0+c0xQ
Q19RMTRbIGxlbmd0aCBdLCBOU1FfTFBDX0JVRl9MRU5HVEggKiBzaXplb2YoIG9wdXNfaW50MzIg
KSApOworfQorCitzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25zcV9zY2FsZV9zdGF0ZXNf
c3NlNF8xKAorICAgIGNvbnN0IHNpbGtfZW5jb2Rlcl9zdGF0ZSAqcHNFbmNDLCAgICAgICAgICAg
LyogSSAgICBFbmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAgICovCisgICAgc2lsa19uc3Ff
c3RhdGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDMyICAgIHhfUTNbXSwgICAg
ICAgICAgICAgICAgIC8qIEkgICAgaW5wdXQgaW4gUTMgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIG9wdXNfaW50MzIgICAgICAgICAgeF9zY19RMTBbXSwgICAgICAgICAgICAgLyogTyAgICBp
bnB1dCBzY2FsZWQgd2l0aCAxL0dhaW4gICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAg
ICBzTFRQW10sICAgICAgICAgICAgICAgICAvKiBJICAgIHJlLXdoaXRlbmVkIExUUCBzdGF0ZSBp
biBRMCAgICAgKi8KKyAgICBvcHVzX2ludDMyICAgICAgICAgIHNMVFBfUTE1W10sICAgICAgICAg
ICAgIC8qIE8gICAgTFRQIHN0YXRlIG1hdGNoaW5nIHNjYWxlZCBpbnB1dCAqLworICAgIG9wdXNf
aW50ICAgICAgICAgICAgc3ViZnIsICAgICAgICAgICAgICAgICAgLyogSSAgICBzdWJmcmFtZSBu
dW1iZXIgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBMVFBfc2Nh
bGVfUTE0LCAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKyAgICBjb25zdCBvcHVzX2ludDMyICAgIEdhaW5zX1ExNlsgTUFYX05CX1NVQkZSIF0sIC8q
IEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50
ICAgICAgcGl0Y2hMWyBNQVhfTkJfU1VCRlIgXSwgLyogSSAgICBQaXRjaCBsYWcgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBzaWduYWxfdHlwZSAgICAg
ICAgICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAgICAgICAgKi8KKykKK3sK
KyAgICBvcHVzX2ludCAgIGksIGxhZzsKKyAgICBvcHVzX2ludDMyIGdhaW5fYWRqX1ExNiwgaW52
X2dhaW5fUTMxLCBpbnZfZ2Fpbl9RMjM7CisgICAgX19tMTI4aSB4bW1faW52X2dhaW5fUTIzLCB4
bW1feF9RM194MngwLCB4bW1feF9RM194M3gxOworCisgICAgbGFnICAgICAgICAgID0gcGl0Y2hM
WyBzdWJmciBdOworICAgIGludl9nYWluX1EzMSA9IHNpbGtfSU5WRVJTRTMyX3ZhclEoIHNpbGtf
bWF4KCBHYWluc19RMTZbIHN1YmZyIF0sIDEgKSwgNDcgKTsKKyAgICBzaWxrX2Fzc2VydCggaW52
X2dhaW5fUTMxICE9IDAgKTsKKworICAgIC8qIENhbGN1bGF0ZSBnYWluIGFkanVzdG1lbnQgZmFj
dG9yICovCisgICAgaWYoIEdhaW5zX1ExNlsgc3ViZnIgXSAhPSBOU1EtPnByZXZfZ2Fpbl9RMTYg
KSB7CisgICAgICAgIGdhaW5fYWRqX1ExNiA9ICBzaWxrX0RJVjMyX3ZhclEoIE5TUS0+cHJldl9n
YWluX1ExNiwgR2FpbnNfUTE2WyBzdWJmciBdLCAxNiApOworICAgIH0gZWxzZSB7CisgICAgICAg
IGdhaW5fYWRqX1ExNiA9IChvcHVzX2ludDMyKTEgPDwgMTY7CisgICAgfQorCisgICAgLyogU2Nh
bGUgaW5wdXQgKi8KKyAgICBpbnZfZ2Fpbl9RMjMgPSBzaWxrX1JTSElGVF9ST1VORCggaW52X2dh
aW5fUTMxLCA4ICk7CisKKyAgICAvKiBwcmVwYXJlIGludl9nYWluX1EyMyBpbiBwYWNrZWQgNCAz
Mi1iaXRzICovCisgICAgeG1tX2ludl9nYWluX1EyMyA9IF9tbV9zZXQxX2VwaTMyKGludl9nYWlu
X1EyMyk7CisKKyAgICBmb3IoIGkgPSAwOyBpIDwgcHNFbmNDLT5zdWJmcl9sZW5ndGggLSAzOyBp
ICs9IDQgKSB7CisgICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20x
MjhpICopKCYoeF9RM1sgaSBdICkgKSApOworCisgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0
IDQgYnl0ZXMqLworICAgICAgICB4bW1feF9RM194M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHht
bV94X1EzX3gyeDAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKKworICAgICAgICB4bW1f
eF9RM194MngwID0gX21tX211bF9lcGkzMiggeG1tX3hfUTNfeDJ4MCwgeG1tX2ludl9nYWluX1Ey
MyApOworICAgICAgICB4bW1feF9RM194M3gxID0gX21tX211bF9lcGkzMiggeG1tX3hfUTNfeDN4
MSwgeG1tX2ludl9nYWluX1EyMyApOworCisgICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fc3Js
aV9lcGk2NCggeG1tX3hfUTNfeDJ4MCwgMTYgKTsKKyAgICAgICAgeG1tX3hfUTNfeDN4MSA9IF9t
bV9zbGxpX2VwaTY0KCB4bW1feF9RM194M3gxLCAxNiApOworCisgICAgICAgIHhtbV94X1EzX3gy
eDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV94X1EzX3gyeDAsIHhtbV94X1EzX3gzeDEsIDB4Q0Mg
KTsKKworICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSgmKHhfc2NfUTEwWyBp
IF0gKSApLCB4bW1feF9RM194MngwICk7CisgICAgfQorCisgICAgZm9yKCA7IGkgPCBwc0VuY0Mt
PnN1YmZyX2xlbmd0aDsgaSsrICkgeworICAgICAgICB4X3NjX1ExMFsgaSBdID0gc2lsa19TTVVM
V1coIHhfUTNbIGkgXSwgaW52X2dhaW5fUTIzICk7CisgICAgfQorCisgICAgLyogU2F2ZSBpbnZl
cnNlIGdhaW4gKi8KKyAgICBOU1EtPnByZXZfZ2Fpbl9RMTYgPSBHYWluc19RMTZbIHN1YmZyIF07
CisKKyAgICAvKiBBZnRlciByZXdoaXRlbmluZyB0aGUgTFRQIHN0YXRlIGlzIHVuLXNjYWxlZCwg
c28gc2NhbGUgd2l0aCBpbnZfZ2Fpbl9RMTYgKi8KKyAgICBpZiggTlNRLT5yZXdoaXRlX2ZsYWcg
KSB7CisgICAgICAgIGlmKCBzdWJmciA9PSAwICkgeworICAgICAgICAgICAgLyogRG8gTFRQIGRv
d25zY2FsaW5nICovCisgICAgICAgICAgICBpbnZfZ2Fpbl9RMzEgPSBzaWxrX0xTSElGVCggc2ls
a19TTVVMV0IoIGludl9nYWluX1EzMSwgTFRQX3NjYWxlX1ExNCApLCAyICk7CisgICAgICAgIH0K
KyAgICAgICAgZm9yKCBpID0gTlNRLT5zTFRQX2J1Zl9pZHggLSBsYWcgLSBMVFBfT1JERVIgLyAy
OyBpIDwgTlNRLT5zTFRQX2J1Zl9pZHg7IGkrKyApIHsKKyAgICAgICAgICAgIHNpbGtfYXNzZXJ0
KCBpIDwgTUFYX0ZSQU1FX0xFTkdUSCApOworICAgICAgICAgICAgc0xUUF9RMTVbIGkgXSA9IHNp
bGtfU01VTFdCKCBpbnZfZ2Fpbl9RMzEsIHNMVFBbIGkgXSApOworICAgICAgICB9CisgICAgfQor
CisgICAgLyogQWRqdXN0IGZvciBjaGFuZ2luZyBnYWluICovCisgICAgaWYoIGdhaW5fYWRqX1Ex
NiAhPSAob3B1c19pbnQzMikxIDw8IDE2ICkgeworICAgICAgICAvKiBTY2FsZSBsb25nLXRlcm0g
c2hhcGluZyBzdGF0ZSAqLworICAgICAgICBfX20xMjhpIHhtbV9nYWluX2Fkal9RMTYsIHhtbV9z
TFRQX3NocF9RMTRfeDJ4MCwgeG1tX3NMVFBfc2hwX1ExNF94M3gxOworCisgICAgICAgIC8qIHBy
ZXBhcmUgZ2Fpbl9hZGpfUTE2IGluIHBhY2tlZCA0IDMyLWJpdHMgKi8KKyAgICAgICAgeG1tX2dh
aW5fYWRqX1ExNiA9IF9tbV9zZXQxX2VwaTMyKGdhaW5fYWRqX1ExNik7CisKKyAgICAgICAgZm9y
KCBpID0gTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aDsgaSA8
IE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIDM7IGkgKz0gNCApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKiko
JihOU1EtPnNMVFBfc2hwX1ExNFsgaSBdICkgKSApOworICAgICAgICAgICAgLyogZXF1YWwgc2hp
ZnQgcmlnaHQgNCBieXRlcyovCisgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gzeDEgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCBfTU1fU0hVRkZMRSggMCwg
MywgMiwgMSApICk7CisKKyAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCA9IF9tbV9t
dWxfZXBpMzIoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgeG1tX2dhaW5fYWRqX1ExNiApOworICAg
ICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94M3gxID0gX21tX211bF9lcGkzMiggeG1tX3NMVFBf
c2hwX1ExNF94M3gxLCB4bW1fZ2Fpbl9hZGpfUTE2ICk7CisKKyAgICAgICAgICAgIHhtbV9zTFRQ
X3NocF9RMTRfeDJ4MCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIDE2
ICk7CisgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gzeDEgPSBfbW1fc2xsaV9lcGk2NCgg
eG1tX3NMVFBfc2hwX1ExNF94M3gxLCAxNiApOworCisgICAgICAgICAgICB4bW1fc0xUUF9zaHBf
UTE0X3gyeDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgeG1tX3NM
VFBfc2hwX1ExNF94M3gxLCAweENDICk7CisKKyAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgo
IChfX20xMjhpICopKCYoTlNRLT5zTFRQX3NocF9RMTRbIGkgXSApICksIHhtbV9zTFRQX3NocF9R
MTRfeDJ4MCApOworICAgICAgICB9CisKKyAgICAgICAgZm9yKCA7IGkgPCBOU1EtPnNMVFBfc2hw
X2J1Zl9pZHg7IGkrKyApIHsKKyAgICAgICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gPSBz
aWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBOU1EtPnNMVFBfc2hwX1ExNFsgaSBdICk7CisgICAg
ICAgIH0KKworICAgICAgICAvKiBTY2FsZSBsb25nLXRlcm0gcHJlZGljdGlvbiBzdGF0ZSAqLwor
ICAgICAgICBpZiggc2lnbmFsX3R5cGUgPT0gVFlQRV9WT0lDRUQgJiYgTlNRLT5yZXdoaXRlX2Zs
YWcgPT0gMCApIHsKKyAgICAgICAgICAgIGZvciggaSA9IE5TUS0+c0xUUF9idWZfaWR4IC0gbGFn
IC0gTFRQX09SREVSIC8gMjsgaSA8IE5TUS0+c0xUUF9idWZfaWR4OyBpKysgKSB7CisgICAgICAg
ICAgICAgICAgc0xUUF9RMTVbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIHNMVFBf
UTE1WyBpIF0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE5TUS0+c0xG
X0FSX3NocF9RMTQgPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBOU1EtPnNMRl9BUl9zaHBf
UTE0ICk7CisKKyAgICAgICAgLyogU2NhbGUgc2hvcnQtdGVybSBwcmVkaWN0aW9uIGFuZCBzaGFw
aW5nIHN0YXRlcyAqLworICAgICAgICBmb3IoIGkgPSAwOyBpIDwgTlNRX0xQQ19CVUZfTEVOR1RI
OyBpKysgKSB7CisgICAgICAgICAgICBOU1EtPnNMUENfUTE0WyBpIF0gPSBzaWxrX1NNVUxXVygg
Z2Fpbl9hZGpfUTE2LCBOU1EtPnNMUENfUTE0WyBpIF0gKTsKKyAgICAgICAgfQorICAgICAgICBm
b3IoIGkgPSAwOyBpIDwgTUFYX1NIQVBFX0xQQ19PUkRFUjsgaSsrICkgeworICAgICAgICAgICAg
TlNRLT5zQVIyX1ExNFsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgTlNRLT5zQVIy
X1ExNFsgaSBdICk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsveDg2L1ZB
RF9zc2UuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay94ODYvVkFEX3NzZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0ZTkwZjQ0MTBkODFmYzg1ODYwMTk0YWZlZmUxZDJiMGMwYmUzZGVmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvVkFEX3NzZS5jCisrKyAv
ZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNCwgQ2lzY28g
U3lzdGVtcywgSU5DCi0gICBXcml0dGVuIGJ5IFhpYW5nTWluZ1podSBXZWlaaG91IE1pblBlbmcg
WWFuV2FuZwotCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICAgYXJlIG1ldDoKLQotICAg
LSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotCi0gICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gICBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSCi0gICBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotICAgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLSAgIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0qLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxlbW1pbnRy
aW4uaD4KLSNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KLQotI2luY2x1ZGUgIm1haW4uaCIKLSNpbmNs
dWRlICJzdGFja19hbGxvYy5oIgotCi0vKiBXZWlnaHRpbmcgZmFjdG9ycyBmb3IgdGlsdCBtZWFz
dXJlICovCi1zdGF0aWMgY29uc3Qgb3B1c19pbnQzMiB0aWx0V2VpZ2h0c1sgVkFEX05fQkFORFMg
XSA9IHsgMzAwMDAsIDYwMDAsIC0xMjAwMCwgLTEyMDAwIH07Ci0KLS8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBHZXQgdGhlIHNwZWVjaCBhY3Rpdml0eSBsZXZl
bCBpbiBROCAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLW9w
dXNfaW50IHNpbGtfVkFEX0dldFNBX1E4X3NzZTRfMSggICAgICAgICAgICAgICAgICAvKiBPICAg
IFJldHVybiB2YWx1ZSwgMCBpZiBzdWNjZXNzICAgICAgICAgICAgICAgICAgKi8KLSAgICBzaWxr
X2VuY29kZXJfc3RhdGUgICAgICAgICAgKnBzRW5jQywgICAgICAgICAgICAvKiBJL08gIEVuY29k
ZXIgc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVz
X2ludDE2ICAgICAgICAgICAgcEluW10gICAgICAgICAgICAgICAvKiBJICAgIFBDTSBpbnB1dCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSkKLXsKLSAgICBvcHVzX2ludCAg
IFNBX1ExNSwgcFNOUl9kQl9RNywgaW5wdXRfdGlsdDsKLSAgICBvcHVzX2ludCAgIGRlY2ltYXRl
ZF9mcmFtZWxlbmd0aDEsIGRlY2ltYXRlZF9mcmFtZWxlbmd0aDI7Ci0gICAgb3B1c19pbnQgICBk
ZWNpbWF0ZWRfZnJhbWVsZW5ndGg7Ci0gICAgb3B1c19pbnQgICBkZWNfc3ViZnJhbWVfbGVuZ3Ro
LCBkZWNfc3ViZnJhbWVfb2Zmc2V0LCBTTlJfUTcsIGksIGIsIHM7Ci0gICAgb3B1c19pbnQzMiBz
dW1TcXVhcmVkLCBzbW9vdGhfY29lZl9RMTY7Ci0gICAgb3B1c19pbnQxNiBIUHN0YXRlVG1wOwot
ICAgIFZBUkRFQ0woIG9wdXNfaW50MTYsIFggKTsKLSAgICBvcHVzX2ludDMyIFhucmdbIFZBRF9O
X0JBTkRTIF07Ci0gICAgb3B1c19pbnQzMiBOcmdUb05vaXNlUmF0aW9fUThbIFZBRF9OX0JBTkRT
IF07Ci0gICAgb3B1c19pbnQzMiBzcGVlY2hfbnJnLCB4X3RtcDsKLSAgICBvcHVzX2ludCAgIFhf
b2Zmc2V0WyBWQURfTl9CQU5EUyBdOwotICAgIG9wdXNfaW50ICAgcmV0ID0gMDsKLSAgICBzaWxr
X1ZBRF9zdGF0ZSAqcHNTaWxrX1ZBRCA9ICZwc0VuY0MtPnNWQUQ7Ci0KLSAgICBTQVZFX1NUQUNL
OwotCi0gICAgLyogU2FmZXR5IGNoZWNrcyAqLwotICAgIHNpbGtfYXNzZXJ0KCBWQURfTl9CQU5E
UyA9PSA0ICk7Ci0gICAgc2lsa19hc3NlcnQoIE1BWF9GUkFNRV9MRU5HVEggPj0gcHNFbmNDLT5m
cmFtZV9sZW5ndGggKTsKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT5mcmFtZV9sZW5ndGggPD0g
NTEyICk7Ci0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoID09IDggKiBzaWxr
X1JTSElGVCggcHNFbmNDLT5mcmFtZV9sZW5ndGgsIDMgKSApOwotCi0gICAgLyoqKioqKioqKioq
KioqKioqKioqKioqLwotICAgIC8qIEZpbHRlciBhbmQgRGVjaW1hdGUgKi8KLSAgICAvKioqKioq
KioqKioqKioqKioqKioqKiovCi0gICAgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoMSA9IHNpbGtfUlNI
SUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMSApOwotICAgIGRlY2ltYXRlZF9mcmFtZWxlbmd0
aDIgPSBzaWxrX1JTSElGVCggcHNFbmNDLT5mcmFtZV9sZW5ndGgsIDIgKTsKLSAgICBkZWNpbWF0
ZWRfZnJhbWVsZW5ndGggPSBzaWxrX1JTSElGVCggcHNFbmNDLT5mcmFtZV9sZW5ndGgsIDMgKTsK
LSAgICAvKiBEZWNpbWF0ZSBpbnRvIDQgYmFuZHM6Ci0gICAgICAgMCAgICAgICBMICAgICAgM0wg
ICAgICAgTCAgICAgICAgICAgICAgM0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVMCi0g
ICAgICAgICAgICAgICAtICAgICAgLS0gICAgICAgLSAgICAgICAgICAgICAgLS0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0tCi0gICAgICAgICAgICAgICA4ICAgICAgIDggICAgICAgMiAg
ICAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ci0KLSAgICAgICBb
MC0xIGtIenwgdGVtcC4gfDEtMiBrSHp8ICAgIDItNCBrSHogICAgfCAgICAgICAgICAgIDQtOCBr
SHogICAgICAgICAgIHwKLQotICAgICAgIFRoZXkncmUgYXJyYW5nZWQgdG8gYWxsb3cgdGhlIG1p
bmltYWwgKCBmcmFtZV9sZW5ndGggLyA0ICkgZXh0cmEKLSAgICAgICBzY3JhdGNoIHNwYWNlIGR1
cmluZyB0aGUgZG93bnNhbXBsaW5nIHByb2Nlc3MgKi8KLSAgICBYX29mZnNldFsgMCBdID0gMDsK
LSAgICBYX29mZnNldFsgMSBdID0gZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoICsgZGVjaW1hdGVkX2Zy
YW1lbGVuZ3RoMjsKLSAgICBYX29mZnNldFsgMiBdID0gWF9vZmZzZXRbIDEgXSArIGRlY2ltYXRl
ZF9mcmFtZWxlbmd0aDsKLSAgICBYX29mZnNldFsgMyBdID0gWF9vZmZzZXRbIDIgXSArIGRlY2lt
YXRlZF9mcmFtZWxlbmd0aDI7Ci0gICAgQUxMT0MoIFgsIFhfb2Zmc2V0WyAzIF0gKyBkZWNpbWF0
ZWRfZnJhbWVsZW5ndGgxLCBvcHVzX2ludDE2ICk7Ci0KLSAgICAvKiAwLTgga0h6IHRvIDAtNCBr
SHogYW5kIDQtOCBrSHogKi8KLSAgICBzaWxrX2FuYV9maWx0X2JhbmtfMSggcEluLCAmcHNTaWxr
X1ZBRC0+QW5hU3RhdGVbICAwIF0sCi0gICAgICAgIFgsICZYWyBYX29mZnNldFsgMyBdIF0sIHBz
RW5jQy0+ZnJhbWVfbGVuZ3RoICk7Ci0KLSAgICAvKiAwLTQga0h6IHRvIDAtMiBrSHogYW5kIDIt
NCBrSHogKi8KLSAgICBzaWxrX2FuYV9maWx0X2JhbmtfMSggWCwgJnBzU2lsa19WQUQtPkFuYVN0
YXRlMVsgMCBdLAotICAgICAgICBYLCAmWFsgWF9vZmZzZXRbIDIgXSBdLCBkZWNpbWF0ZWRfZnJh
bWVsZW5ndGgxICk7Ci0KLSAgICAvKiAwLTIga0h6IHRvIDAtMSBrSHogYW5kIDEtMiBrSHogKi8K
LSAgICBzaWxrX2FuYV9maWx0X2JhbmtfMSggWCwgJnBzU2lsa19WQUQtPkFuYVN0YXRlMlsgMCBd
LAotICAgICAgICBYLCAmWFsgWF9vZmZzZXRbIDEgXSBdLCBkZWNpbWF0ZWRfZnJhbWVsZW5ndGgy
ICk7Ci0KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LwotICAgIC8qIEhQIGZpbHRlciBvbiBsb3dlc3QgYmFuZCAoZGlmZmVyZW50aWF0b3IpICovCi0g
ICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBY
WyBkZWNpbWF0ZWRfZnJhbWVsZW5ndGggLSAxIF0gPSBzaWxrX1JTSElGVCggWFsgZGVjaW1hdGVk
X2ZyYW1lbGVuZ3RoIC0gMSBdLCAxICk7Ci0gICAgSFBzdGF0ZVRtcCA9IFhbIGRlY2ltYXRlZF9m
cmFtZWxlbmd0aCAtIDEgXTsKLSAgICBmb3IoIGkgPSBkZWNpbWF0ZWRfZnJhbWVsZW5ndGggLSAx
OyBpID4gMDsgaS0tICkgewotICAgICAgICBYWyBpIC0gMSBdICA9IHNpbGtfUlNISUZUKCBYWyBp
IC0gMSBdLCAxICk7Ci0gICAgICAgIFhbIGkgXSAgICAgLT0gWFsgaSAtIDEgXTsKLSAgICB9Ci0g
ICAgWFsgMCBdIC09IHBzU2lsa19WQUQtPkhQc3RhdGU7Ci0gICAgcHNTaWxrX1ZBRC0+SFBzdGF0
ZSA9IEhQc3RhdGVUbXA7Ci0KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KLSAgICAvKiBDYWxjdWxhdGUgdGhlIGVuZXJneSBpbiBlYWNoIGJhbmQgKi8KLSAgICAv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBmb3IoIGIgPSAwOyBi
IDwgVkFEX05fQkFORFM7IGIrKyApIHsKLSAgICAgICAgLyogRmluZCB0aGUgZGVjaW1hdGVkIGZy
YW1lbGVuZ3RoIGluIHRoZSBub24tdW5pZm9ybWx5IGRpdmlkZWQgYmFuZHMgKi8KLSAgICAgICAg
ZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoID0gc2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3Ro
LCBzaWxrX21pbl9pbnQoIFZBRF9OX0JBTkRTIC0gYiwgVkFEX05fQkFORFMgLSAxICkgKTsKLQot
ICAgICAgICAvKiBTcGxpdCBsZW5ndGggaW50byBzdWJmcmFtZSBsZW5ndGhzICovCi0gICAgICAg
IGRlY19zdWJmcmFtZV9sZW5ndGggPSBzaWxrX1JTSElGVCggZGVjaW1hdGVkX2ZyYW1lbGVuZ3Ro
LCBWQURfSU5URVJOQUxfU1VCRlJBTUVTX0xPRzIgKTsKLSAgICAgICAgZGVjX3N1YmZyYW1lX29m
ZnNldCA9IDA7Ci0KLSAgICAgICAgLyogQ29tcHV0ZSBlbmVyZ3kgcGVyIHN1Yi1mcmFtZSAqLwot
ICAgICAgICAvKiBpbml0aWFsaXplIHdpdGggc3VtbWVkIGVuZXJneSBvZiBsYXN0IHN1YmZyYW1l
ICovCi0gICAgICAgIFhucmdbIGIgXSA9IHBzU2lsa19WQUQtPlhucmdTdWJmclsgYiBdOwotICAg
ICAgICBmb3IoIHMgPSAwOyBzIDwgVkFEX0lOVEVSTkFMX1NVQkZSQU1FUzsgcysrICkgewotICAg
ICAgICAgICAgX19tMTI4aSB4bW1fWCwgeG1tX2FjYzsKLSAgICAgICAgICAgIHN1bVNxdWFyZWQg
PSAwOwotCi0gICAgICAgICAgICB4bW1fYWNjID0gX21tX3NldHplcm9fc2kxMjgoKTsKLQotICAg
ICAgICAgICAgZm9yKCBpID0gMDsgaSA8IGRlY19zdWJmcmFtZV9sZW5ndGggLSA3OyBpICs9IDgg
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHhtbV9YICAgPSBfbW1fbG9hZHVfc2kx
MjgoIChfX20xMjhpICopJihYWyBYX29mZnNldFsgYiBdICsgaSArIGRlY19zdWJmcmFtZV9vZmZz
ZXQgXSApICk7Ci0gICAgICAgICAgICAgICAgeG1tX1ggICA9IF9tbV9zcmFpX2VwaTE2KCB4bW1f
WCwgMyApOwotICAgICAgICAgICAgICAgIHhtbV9YICAgPSBfbW1fbWFkZF9lcGkxNiggeG1tX1gs
IHhtbV9YICk7Ci0gICAgICAgICAgICAgICAgeG1tX2FjYyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9h
Y2MsIHhtbV9YICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHhtbV9hY2MgPSBfbW1f
YWRkX2VwaTMyKCB4bW1fYWNjLCBfbW1fdW5wYWNraGlfZXBpNjQoIHhtbV9hY2MsIHhtbV9hY2Mg
KSApOwotICAgICAgICAgICAgeG1tX2FjYyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9hY2MsIF9tbV9z
aHVmZmxlbG9fZXBpMTYoIHhtbV9hY2MsIDB4MEUgKSApOwotCi0gICAgICAgICAgICBzdW1TcXVh
cmVkICs9IF9tbV9jdnRzaTEyOF9zaTMyKCB4bW1fYWNjICk7Ci0KLSAgICAgICAgICAgIGZvcigg
OyBpIDwgZGVjX3N1YmZyYW1lX2xlbmd0aDsgaSsrICkgewotICAgICAgICAgICAgICAgIC8qIFRo
ZSBlbmVyZ3kgd2lsbCBiZSBsZXNzIHRoYW4gZGVjX3N1YmZyYW1lX2xlbmd0aCAqICggc2lsa19p
bnQxNl9NSU4gLyA4ICkgXiAyLiAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgLyogVGhl
cmVmb3JlIHdlIGNhbiBhY2N1bXVsYXRlIHdpdGggbm8gcmlzayBvZiBvdmVyZmxvdyAodW5sZXNz
IGRlY19zdWJmcmFtZV9sZW5ndGggPiAxMjgpICAqLwotICAgICAgICAgICAgICAgIHhfdG1wID0g
c2lsa19SU0hJRlQoCi0gICAgICAgICAgICAgICAgICAgIFhbIFhfb2Zmc2V0WyBiIF0gKyBpICsg
ZGVjX3N1YmZyYW1lX29mZnNldCBdLCAzICk7Ci0gICAgICAgICAgICAgICAgc3VtU3F1YXJlZCA9
IHNpbGtfU01MQUJCKCBzdW1TcXVhcmVkLCB4X3RtcCwgeF90bXAgKTsKLQotICAgICAgICAgICAg
ICAgIC8qIFNhZmV0eSBjaGVjayAqLwotICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBzdW1T
cXVhcmVkID49IDAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogQWRkL3NhdHVy
YXRlIHN1bW1lZCBlbmVyZ3kgb2YgY3VycmVudCBzdWJmcmFtZSAqLwotICAgICAgICAgICAgaWYo
IHMgPCBWQURfSU5URVJOQUxfU1VCRlJBTUVTIC0gMSApIHsKLSAgICAgICAgICAgICAgICBYbnJn
WyBiIF0gPSBzaWxrX0FERF9QT1NfU0FUMzIoIFhucmdbIGIgXSwgc3VtU3F1YXJlZCApOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBMb29rLWFoZWFkIHN1YmZyYW1l
ICovCi0gICAgICAgICAgICAgICAgWG5yZ1sgYiBdID0gc2lsa19BRERfUE9TX1NBVDMyKCBYbnJn
WyBiIF0sIHNpbGtfUlNISUZUKCBzdW1TcXVhcmVkLCAxICkgKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgZGVjX3N1YmZyYW1lX29mZnNldCArPSBkZWNfc3ViZnJhbWVfbGVuZ3RoOwot
ICAgICAgICB9Ci0gICAgICAgIHBzU2lsa19WQUQtPlhucmdTdWJmclsgYiBdID0gc3VtU3F1YXJl
ZDsKLSAgICB9Ci0KLSAgICAvKioqKioqKioqKioqKioqKioqKiovCi0gICAgLyogTm9pc2UgZXN0
aW1hdGlvbiAqLwotICAgIC8qKioqKioqKioqKioqKioqKioqKi8KLSAgICBzaWxrX1ZBRF9HZXRO
b2lzZUxldmVscyggJlhucmdbIDAgXSwgcHNTaWxrX1ZBRCApOwotCi0gICAgLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIC8qIFNpZ25hbC1wbHVz
LW5vaXNlIHRvIG5vaXNlIHJhdGlvIGVzdGltYXRpb24gKi8KLSAgICAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgc3VtU3F1YXJlZCA9IDA7Ci0g
ICAgaW5wdXRfdGlsdCA9IDA7Ci0gICAgZm9yKCBiID0gMDsgYiA8IFZBRF9OX0JBTkRTOyBiKysg
KSB7Ci0gICAgICAgIHNwZWVjaF9ucmcgPSBYbnJnWyBiIF0gLSBwc1NpbGtfVkFELT5OTFsgYiBd
OwotICAgICAgICBpZiggc3BlZWNoX25yZyA+IDAgKSB7Ci0gICAgICAgICAgICAvKiBEaXZpZGUs
IHdpdGggc3VmZmljaWVudCByZXNvbHV0aW9uICovCi0gICAgICAgICAgICBpZiggKCBYbnJnWyBi
IF0gJiAweEZGODAwMDAwICkgPT0gMCApIHsKLSAgICAgICAgICAgICAgICBOcmdUb05vaXNlUmF0
aW9fUThbIGIgXSA9IHNpbGtfRElWMzIoIHNpbGtfTFNISUZUKCBYbnJnWyBiIF0sIDggKSwgcHNT
aWxrX1ZBRC0+TkxbIGIgXSArIDEgKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgTnJnVG9Ob2lzZVJhdGlvX1E4WyBiIF0gPSBzaWxrX0RJVjMyKCBYbnJnWyBiIF0sIHNp
bGtfUlNISUZUKCBwc1NpbGtfVkFELT5OTFsgYiBdLCA4ICkgKyAxICk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8qIENvbnZlcnQgdG8gbG9nIGRvbWFpbiAqLwotICAgICAgICAgICAg
U05SX1E3ID0gc2lsa19saW4ybG9nKCBOcmdUb05vaXNlUmF0aW9fUThbIGIgXSApIC0gOCAqIDEy
ODsKLQotICAgICAgICAgICAgLyogU3VtLW9mLXNxdWFyZXMgKi8KLSAgICAgICAgICAgIHN1bVNx
dWFyZWQgPSBzaWxrX1NNTEFCQiggc3VtU3F1YXJlZCwgU05SX1E3LCBTTlJfUTcgKTsgICAgICAg
ICAgLyogUTE0ICovCi0KLSAgICAgICAgICAgIC8qIFRpbHQgbWVhc3VyZSAqLwotICAgICAgICAg
ICAgaWYoIHNwZWVjaF9ucmcgPCAoIChvcHVzX2ludDMyKTEgPDwgMjAgKSApIHsKLSAgICAgICAg
ICAgICAgICAvKiBTY2FsZSBkb3duIFNOUiB2YWx1ZSBmb3Igc21hbGwgc3ViYmFuZCBzcGVlY2gg
ZW5lcmdpZXMgKi8KLSAgICAgICAgICAgICAgICBTTlJfUTcgPSBzaWxrX1NNVUxXQiggc2lsa19M
U0hJRlQoIHNpbGtfU1FSVF9BUFBST1goIHNwZWVjaF9ucmcgKSwgNiApLCBTTlJfUTcgKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlucHV0X3RpbHQgPSBzaWxrX1NNTEFXQiggaW5wdXRf
dGlsdCwgdGlsdFdlaWdodHNbIGIgXSwgU05SX1E3ICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBOcmdUb05vaXNlUmF0aW9fUThbIGIgXSA9IDI1NjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8qIE1lYW4tb2Ytc3F1YXJlcyAqLwotICAgIHN1bVNxdWFyZWQgPSBzaWxrX0RJVjMy
XzE2KCBzdW1TcXVhcmVkLCBWQURfTl9CQU5EUyApOyAvKiBRMTQgKi8KLQotICAgIC8qIFJvb3Qt
bWVhbi1zcXVhcmUgYXBwcm94aW1hdGlvbiwgc2NhbGUgdG8gZEJzLCBhbmQgd3JpdGUgdG8gb3V0
cHV0IHBvaW50ZXIgKi8KLSAgICBwU05SX2RCX1E3ID0gKG9wdXNfaW50MTYpKCAzICogc2lsa19T
UVJUX0FQUFJPWCggc3VtU3F1YXJlZCApICk7IC8qIFE3ICovCi0KLSAgICAvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLwotICAgIC8qIFNwZWVjaCBQcm9iYWJpbGl0eSBFc3RpbWF0
aW9uICovCi0gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBTQV9R
MTUgPSBzaWxrX3NpZ21fUTE1KCBzaWxrX1NNVUxXQiggVkFEX1NOUl9GQUNUT1JfUTE2LCBwU05S
X2RCX1E3ICkgLSBWQURfTkVHQVRJVkVfT0ZGU0VUX1E1ICk7Ci0KLSAgICAvKioqKioqKioqKioq
KioqKioqKioqKioqKiovCi0gICAgLyogRnJlcXVlbmN5IFRpbHQgTWVhc3VyZSAqLwotICAgIC8q
KioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBwc0VuY0MtPmlucHV0X3RpbHRfUTE1ID0g
c2lsa19MU0hJRlQoIHNpbGtfc2lnbV9RMTUoIGlucHV0X3RpbHQgKSAtIDE2Mzg0LCAxICk7Ci0K
LSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
Ci0gICAgLyogU2NhbGUgdGhlIHNpZ21vaWQgb3V0cHV0IGJhc2VkIG9uIHBvd2VyIGxldmVscyAq
LwotICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLSAgICBzcGVlY2hfbnJnID0gMDsKLSAgICBmb3IoIGIgPSAwOyBiIDwgVkFEX05fQkFORFM7
IGIrKyApIHsKLSAgICAgICAgLyogQWNjdW11bGF0ZSBzaWduYWwtd2l0aG91dC1ub2lzZSBlbmVy
Z2llcywgaGlnaGVyIGZyZXF1ZW5jeSBiYW5kcyBoYXZlIG1vcmUgd2VpZ2h0ICovCi0gICAgICAg
IHNwZWVjaF9ucmcgKz0gKCBiICsgMSApICogc2lsa19SU0hJRlQoIFhucmdbIGIgXSAtIHBzU2ls
a19WQUQtPk5MWyBiIF0sIDQgKTsKLSAgICB9Ci0KLSAgICAvKiBQb3dlciBzY2FsaW5nICovCi0g
ICAgaWYoIHNwZWVjaF9ucmcgPD0gMCApIHsKLSAgICAgICAgU0FfUTE1ID0gc2lsa19SU0hJRlQo
IFNBX1ExNSwgMSApOwotICAgIH0gZWxzZSBpZiggc3BlZWNoX25yZyA8IDMyNzY4ICkgewotICAg
ICAgICBpZiggcHNFbmNDLT5mcmFtZV9sZW5ndGggPT0gMTAgKiBwc0VuY0MtPmZzX2tIeiApIHsK
LSAgICAgICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX0xTSElGVF9TQVQzMiggc3BlZWNoX25yZywg
MTYgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX0xT
SElGVF9TQVQzMiggc3BlZWNoX25yZywgMTUgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIHNx
dWFyZS1yb290ICovCi0gICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX1NRUlRfQVBQUk9YKCBzcGVl
Y2hfbnJnICk7Ci0gICAgICAgIFNBX1ExNSA9IHNpbGtfU01VTFdCKCAzMjc2OCArIHNwZWVjaF9u
cmcsIFNBX1ExNSApOwotICAgIH0KLQotICAgIC8qIENvcHkgdGhlIHJlc3VsdGluZyBzcGVlY2gg
YWN0aXZpdHkgaW4gUTggKi8KLSAgICBwc0VuY0MtPnNwZWVjaF9hY3Rpdml0eV9ROCA9IHNpbGtf
bWluX2ludCggc2lsa19SU0hJRlQoIFNBX1ExNSwgNyApLCBzaWxrX3VpbnQ4X01BWCApOwotCi0g
ICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIC8qIEVuZXJneSBM
ZXZlbCBhbmQgU05SIGVzdGltYXRpb24gKi8KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCi0gICAgLyogU21vb3RoaW5nIGNvZWZmaWNpZW50ICovCi0gICAgc21vb3Ro
X2NvZWZfUTE2ID0gc2lsa19TTVVMV0IoIFZBRF9TTlJfU01PT1RIX0NPRUZfUTE4LCBzaWxrX1NN
VUxXQiggKG9wdXNfaW50MzIpU0FfUTE1LCBTQV9RMTUgKSApOwotCi0gICAgaWYoIHBzRW5jQy0+
ZnJhbWVfbGVuZ3RoID09IDEwICogcHNFbmNDLT5mc19rSHogKSB7Ci0gICAgICAgIHNtb290aF9j
b2VmX1ExNiA+Pj0gMTsKLSAgICB9Ci0KLSAgICBmb3IoIGIgPSAwOyBiIDwgVkFEX05fQkFORFM7
IGIrKyApIHsKLSAgICAgICAgLyogY29tcHV0ZSBzbW9vdGhlZCBlbmVyZ3ktdG8tbm9pc2UgcmF0
aW8gcGVyIGJhbmQgKi8KLSAgICAgICAgcHNTaWxrX1ZBRC0+TnJnUmF0aW9TbXRoX1E4WyBiIF0g
PSBzaWxrX1NNTEFXQiggcHNTaWxrX1ZBRC0+TnJnUmF0aW9TbXRoX1E4WyBiIF0sCi0gICAgICAg
ICAgICBOcmdUb05vaXNlUmF0aW9fUThbIGIgXSAtIHBzU2lsa19WQUQtPk5yZ1JhdGlvU210aF9R
OFsgYiBdLCBzbW9vdGhfY29lZl9RMTYgKTsKLQotICAgICAgICAvKiBzaWduYWwgdG8gbm9pc2Ug
cmF0aW8gaW4gZEIgcGVyIGJhbmQgKi8KLSAgICAgICAgU05SX1E3ID0gMyAqICggc2lsa19saW4y
bG9nKCBwc1NpbGtfVkFELT5OcmdSYXRpb1NtdGhfUThbYl0gKSAtIDggKiAxMjggKTsKLSAgICAg
ICAgLyogcXVhbGl0eSA9IHNpZ21vaWQoIDAuMjUgKiAoIFNOUl9kQiAtIDE2ICkgKTsgKi8KLSAg
ICAgICAgcHNFbmNDLT5pbnB1dF9xdWFsaXR5X2JhbmRzX1ExNVsgYiBdID0gc2lsa19zaWdtX1Ex
NSggc2lsa19SU0hJRlQoIFNOUl9RNyAtIDE2ICogMTI4LCA0ICkgKTsKLSAgICB9Ci0KLSAgICBS
RVNUT1JFX1NUQUNLOwotICAgIHJldHVybiggcmV0ICk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsveDg2
L1ZBRF9zc2U0XzEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay94ODYvVkFEX3NzZTRfMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMmRkZjRh
ZDA4MTVmZGUyNDZjMjAxNGFkNmI4MGRmMDNiM2JmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
eDg2L1ZBRF9zc2U0XzEuYwpAQCAtMCwwICsxLDI3NyBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE0
LCBDaXNjbyBTeXN0ZW1zLCBJTkMKKyAgIFdyaXR0ZW4gYnkgWGlhbmdNaW5nWmh1IFdlaVpob3Ug
TWluUGVuZyBZYW5XYW5nCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUgbWV0
OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICAgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
ICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2luY2x1ZGUg
PGVtbWludHJpbi5oPgorI2luY2x1ZGUgPHNtbWludHJpbi5oPgorCisjaW5jbHVkZSAibWFpbi5o
IgorI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgiCisKKy8qIFdlaWdodGluZyBmYWN0b3JzIGZvciB0
aWx0IG1lYXN1cmUgKi8KK3N0YXRpYyBjb25zdCBvcHVzX2ludDMyIHRpbHRXZWlnaHRzWyBWQURf
Tl9CQU5EUyBdID0geyAzMDAwMCwgNjAwMCwgLTEyMDAwLCAtMTIwMDAgfTsKKworLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEdldCB0aGUgc3BlZWNoIGFjdGl2
aXR5IGxldmVsIGluIFE4ICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLworb3B1c19pbnQgc2lsa19WQURfR2V0U0FfUThfc3NlNF8xKCAgICAgICAgICAgICAgICAg
IC8qIE8gICAgUmV0dXJuIHZhbHVlLCAwIGlmIHN1Y2Nlc3MgICAgICAgICAgICAgICAgICAqLwor
ICAgIHNpbGtfZW5jb2Rlcl9zdGF0ZSAgICAgICAgICAqcHNFbmNDLCAgICAgICAgICAgIC8qIEkv
TyAgRW5jb2RlciBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNv
bnN0IG9wdXNfaW50MTYgICAgICAgICAgICBwSW5bXSAgICAgICAgICAgICAgIC8qIEkgICAgUENN
IGlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworKQoreworICAgIG9w
dXNfaW50ICAgU0FfUTE1LCBwU05SX2RCX1E3LCBpbnB1dF90aWx0OworICAgIG9wdXNfaW50ICAg
ZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoMSwgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoMjsKKyAgICBvcHVz
X2ludCAgIGRlY2ltYXRlZF9mcmFtZWxlbmd0aDsKKyAgICBvcHVzX2ludCAgIGRlY19zdWJmcmFt
ZV9sZW5ndGgsIGRlY19zdWJmcmFtZV9vZmZzZXQsIFNOUl9RNywgaSwgYiwgczsKKyAgICBvcHVz
X2ludDMyIHN1bVNxdWFyZWQsIHNtb290aF9jb2VmX1ExNjsKKyAgICBvcHVzX2ludDE2IEhQc3Rh
dGVUbXA7CisgICAgVkFSREVDTCggb3B1c19pbnQxNiwgWCApOworICAgIG9wdXNfaW50MzIgWG5y
Z1sgVkFEX05fQkFORFMgXTsKKyAgICBvcHVzX2ludDMyIE5yZ1RvTm9pc2VSYXRpb19ROFsgVkFE
X05fQkFORFMgXTsKKyAgICBvcHVzX2ludDMyIHNwZWVjaF9ucmcsIHhfdG1wOworICAgIG9wdXNf
aW50ICAgWF9vZmZzZXRbIFZBRF9OX0JBTkRTIF07CisgICAgb3B1c19pbnQgICByZXQgPSAwOwor
ICAgIHNpbGtfVkFEX3N0YXRlICpwc1NpbGtfVkFEID0gJnBzRW5jQy0+c1ZBRDsKKworICAgIFNB
VkVfU1RBQ0s7CisKKyAgICAvKiBTYWZldHkgY2hlY2tzICovCisgICAgc2lsa19hc3NlcnQoIFZB
RF9OX0JBTkRTID09IDQgKTsKKyAgICBjZWx0X2Fzc2VydCggTUFYX0ZSQU1FX0xFTkdUSCA+PSBw
c0VuY0MtPmZyYW1lX2xlbmd0aCApOworICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPmZyYW1lX2xl
bmd0aCA8PSA1MTIgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNFbmNDLT5mcmFtZV9sZW5ndGggPT0g
OCAqIHNpbGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMyApICk7CisKKyAgICAvKioq
KioqKioqKioqKioqKioqKioqKiovCisgICAgLyogRmlsdGVyIGFuZCBEZWNpbWF0ZSAqLworICAg
IC8qKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICBkZWNpbWF0ZWRfZnJhbWVsZW5ndGgxID0g
c2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCAxICk7CisgICAgZGVjaW1hdGVkX2Zy
YW1lbGVuZ3RoMiA9IHNpbGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMiApOworICAg
IGRlY2ltYXRlZF9mcmFtZWxlbmd0aCA9IHNpbGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0
aCwgMyApOworICAgIC8qIERlY2ltYXRlIGludG8gNCBiYW5kczoKKyAgICAgICAwICAgICAgIEwg
ICAgICAzTCAgICAgICBMICAgICAgICAgICAgICAzTCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNUwKKyAgICAgICAgICAgICAgIC0gICAgICAtLSAgICAgICAtICAgICAgICAgICAgICAtLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKyAgICAgICAgICAgICAgIDggICAgICAgOCAg
ICAgICAyICAgICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQKKwor
ICAgICAgIFswLTEga0h6fCB0ZW1wLiB8MS0yIGtIenwgICAgMi00IGtIeiAgICB8ICAgICAgICAg
ICAgNC04IGtIeiAgICAgICAgICAgfAorCisgICAgICAgVGhleSdyZSBhcnJhbmdlZCB0byBhbGxv
dyB0aGUgbWluaW1hbCAoIGZyYW1lX2xlbmd0aCAvIDQgKSBleHRyYQorICAgICAgIHNjcmF0Y2gg
c3BhY2UgZHVyaW5nIHRoZSBkb3duc2FtcGxpbmcgcHJvY2VzcyAqLworICAgIFhfb2Zmc2V0WyAw
IF0gPSAwOworICAgIFhfb2Zmc2V0WyAxIF0gPSBkZWNpbWF0ZWRfZnJhbWVsZW5ndGggKyBkZWNp
bWF0ZWRfZnJhbWVsZW5ndGgyOworICAgIFhfb2Zmc2V0WyAyIF0gPSBYX29mZnNldFsgMSBdICsg
ZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoOworICAgIFhfb2Zmc2V0WyAzIF0gPSBYX29mZnNldFsgMiBd
ICsgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoMjsKKyAgICBBTExPQyggWCwgWF9vZmZzZXRbIDMgXSAr
IGRlY2ltYXRlZF9mcmFtZWxlbmd0aDEsIG9wdXNfaW50MTYgKTsKKworICAgIC8qIDAtOCBrSHog
dG8gMC00IGtIeiBhbmQgNC04IGtIeiAqLworICAgIHNpbGtfYW5hX2ZpbHRfYmFua18xKCBwSW4s
ICZwc1NpbGtfVkFELT5BbmFTdGF0ZVsgIDAgXSwKKyAgICAgICAgWCwgJlhbIFhfb2Zmc2V0WyAz
IF0gXSwgcHNFbmNDLT5mcmFtZV9sZW5ndGggKTsKKworICAgIC8qIDAtNCBrSHogdG8gMC0yIGtI
eiBhbmQgMi00IGtIeiAqLworICAgIHNpbGtfYW5hX2ZpbHRfYmFua18xKCBYLCAmcHNTaWxrX1ZB
RC0+QW5hU3RhdGUxWyAwIF0sCisgICAgICAgIFgsICZYWyBYX29mZnNldFsgMiBdIF0sIGRlY2lt
YXRlZF9mcmFtZWxlbmd0aDEgKTsKKworICAgIC8qIDAtMiBrSHogdG8gMC0xIGtIeiBhbmQgMS0y
IGtIeiAqLworICAgIHNpbGtfYW5hX2ZpbHRfYmFua18xKCBYLCAmcHNTaWxrX1ZBRC0+QW5hU3Rh
dGUyWyAwIF0sCisgICAgICAgIFgsICZYWyBYX29mZnNldFsgMSBdIF0sIGRlY2ltYXRlZF9mcmFt
ZWxlbmd0aDIgKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCisgICAgLyogSFAgZmlsdGVyIG9uIGxvd2VzdCBiYW5kIChkaWZmZXJlbnRpYXRv
cikgKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LworICAgIFhbIGRlY2ltYXRlZF9mcmFtZWxlbmd0aCAtIDEgXSA9IHNpbGtfUlNISUZUKCBYWyBk
ZWNpbWF0ZWRfZnJhbWVsZW5ndGggLSAxIF0sIDEgKTsKKyAgICBIUHN0YXRlVG1wID0gWFsgZGVj
aW1hdGVkX2ZyYW1lbGVuZ3RoIC0gMSBdOworICAgIGZvciggaSA9IGRlY2ltYXRlZF9mcmFtZWxl
bmd0aCAtIDE7IGkgPiAwOyBpLS0gKSB7CisgICAgICAgIFhbIGkgLSAxIF0gID0gc2lsa19SU0hJ
RlQoIFhbIGkgLSAxIF0sIDEgKTsKKyAgICAgICAgWFsgaSBdICAgICAtPSBYWyBpIC0gMSBdOwor
ICAgIH0KKyAgICBYWyAwIF0gLT0gcHNTaWxrX1ZBRC0+SFBzdGF0ZTsKKyAgICBwc1NpbGtfVkFE
LT5IUHN0YXRlID0gSFBzdGF0ZVRtcDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLworICAgIC8qIENhbGN1bGF0ZSB0aGUgZW5lcmd5IGluIGVhY2ggYmFuZCAq
LworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIGZvcigg
YiA9IDA7IGIgPCBWQURfTl9CQU5EUzsgYisrICkgeworICAgICAgICAvKiBGaW5kIHRoZSBkZWNp
bWF0ZWQgZnJhbWVsZW5ndGggaW4gdGhlIG5vbi11bmlmb3JtbHkgZGl2aWRlZCBiYW5kcyAqLwor
ICAgICAgICBkZWNpbWF0ZWRfZnJhbWVsZW5ndGggPSBzaWxrX1JTSElGVCggcHNFbmNDLT5mcmFt
ZV9sZW5ndGgsIHNpbGtfbWluX2ludCggVkFEX05fQkFORFMgLSBiLCBWQURfTl9CQU5EUyAtIDEg
KSApOworCisgICAgICAgIC8qIFNwbGl0IGxlbmd0aCBpbnRvIHN1YmZyYW1lIGxlbmd0aHMgKi8K
KyAgICAgICAgZGVjX3N1YmZyYW1lX2xlbmd0aCA9IHNpbGtfUlNISUZUKCBkZWNpbWF0ZWRfZnJh
bWVsZW5ndGgsIFZBRF9JTlRFUk5BTF9TVUJGUkFNRVNfTE9HMiApOworICAgICAgICBkZWNfc3Vi
ZnJhbWVfb2Zmc2V0ID0gMDsKKworICAgICAgICAvKiBDb21wdXRlIGVuZXJneSBwZXIgc3ViLWZy
YW1lICovCisgICAgICAgIC8qIGluaXRpYWxpemUgd2l0aCBzdW1tZWQgZW5lcmd5IG9mIGxhc3Qg
c3ViZnJhbWUgKi8KKyAgICAgICAgWG5yZ1sgYiBdID0gcHNTaWxrX1ZBRC0+WG5yZ1N1YmZyWyBi
IF07CisgICAgICAgIGZvciggcyA9IDA7IHMgPCBWQURfSU5URVJOQUxfU1VCRlJBTUVTOyBzKysg
KSB7CisgICAgICAgICAgICBfX20xMjhpIHhtbV9YLCB4bW1fYWNjOworICAgICAgICAgICAgc3Vt
U3F1YXJlZCA9IDA7CisKKyAgICAgICAgICAgIHhtbV9hY2MgPSBfbW1fc2V0emVyb19zaTEyOCgp
OworCisgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgZGVjX3N1YmZyYW1lX2xlbmd0aCAtIDc7
IGkgKz0gOCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeG1tX1ggICA9IF9tbV9s
b2FkdV9zaTEyOCggKF9fbTEyOGkgKikmKFhbIFhfb2Zmc2V0WyBiIF0gKyBpICsgZGVjX3N1YmZy
YW1lX29mZnNldCBdICkgKTsKKyAgICAgICAgICAgICAgICB4bW1fWCAgID0gX21tX3NyYWlfZXBp
MTYoIHhtbV9YLCAzICk7CisgICAgICAgICAgICAgICAgeG1tX1ggICA9IF9tbV9tYWRkX2VwaTE2
KCB4bW1fWCwgeG1tX1ggKTsKKyAgICAgICAgICAgICAgICB4bW1fYWNjID0gX21tX2FkZF9lcGkz
MiggeG1tX2FjYywgeG1tX1ggKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeG1tX2Fj
YyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9hY2MsIF9tbV91bnBhY2toaV9lcGk2NCggeG1tX2FjYywg
eG1tX2FjYyApICk7CisgICAgICAgICAgICB4bW1fYWNjID0gX21tX2FkZF9lcGkzMiggeG1tX2Fj
YywgX21tX3NodWZmbGVsb19lcGkxNiggeG1tX2FjYywgMHgwRSApICk7CisKKyAgICAgICAgICAg
IHN1bVNxdWFyZWQgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHhtbV9hY2MgKTsKKworICAgICAgICAg
ICAgZm9yKCA7IGkgPCBkZWNfc3ViZnJhbWVfbGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICAg
ICAgLyogVGhlIGVuZXJneSB3aWxsIGJlIGxlc3MgdGhhbiBkZWNfc3ViZnJhbWVfbGVuZ3RoICog
KCBzaWxrX2ludDE2X01JTiAvIDggKSBeIDIuICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAg
ICAvKiBUaGVyZWZvcmUgd2UgY2FuIGFjY3VtdWxhdGUgd2l0aCBubyByaXNrIG9mIG92ZXJmbG93
ICh1bmxlc3MgZGVjX3N1YmZyYW1lX2xlbmd0aCA+IDEyOCkgICovCisgICAgICAgICAgICAgICAg
eF90bXAgPSBzaWxrX1JTSElGVCgKKyAgICAgICAgICAgICAgICAgICAgWFsgWF9vZmZzZXRbIGIg
XSArIGkgKyBkZWNfc3ViZnJhbWVfb2Zmc2V0IF0sIDMgKTsKKyAgICAgICAgICAgICAgICBzdW1T
cXVhcmVkID0gc2lsa19TTUxBQkIoIHN1bVNxdWFyZWQsIHhfdG1wLCB4X3RtcCApOworCisgICAg
ICAgICAgICAgICAgLyogU2FmZXR5IGNoZWNrICovCisgICAgICAgICAgICAgICAgc2lsa19hc3Nl
cnQoIHN1bVNxdWFyZWQgPj0gMCApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBB
ZGQvc2F0dXJhdGUgc3VtbWVkIGVuZXJneSBvZiBjdXJyZW50IHN1YmZyYW1lICovCisgICAgICAg
ICAgICBpZiggcyA8IFZBRF9JTlRFUk5BTF9TVUJGUkFNRVMgLSAxICkgeworICAgICAgICAgICAg
ICAgIFhucmdbIGIgXSA9IHNpbGtfQUREX1BPU19TQVQzMiggWG5yZ1sgYiBdLCBzdW1TcXVhcmVk
ICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIExvb2stYWhlYWQg
c3ViZnJhbWUgKi8KKyAgICAgICAgICAgICAgICBYbnJnWyBiIF0gPSBzaWxrX0FERF9QT1NfU0FU
MzIoIFhucmdbIGIgXSwgc2lsa19SU0hJRlQoIHN1bVNxdWFyZWQsIDEgKSApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBkZWNfc3ViZnJhbWVfb2Zmc2V0ICs9IGRlY19zdWJmcmFtZV9s
ZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgcHNTaWxrX1ZBRC0+WG5yZ1N1YmZyWyBiIF0gPSBz
dW1TcXVhcmVkOworICAgIH0KKworICAgIC8qKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiBO
b2lzZSBlc3RpbWF0aW9uICovCisgICAgLyoqKioqKioqKioqKioqKioqKioqLworICAgIHNpbGtf
VkFEX0dldE5vaXNlTGV2ZWxzKCAmWG5yZ1sgMCBdLCBwc1NpbGtfVkFEICk7CisKKyAgICAvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogU2ln
bmFsLXBsdXMtbm9pc2UgdG8gbm9pc2UgcmF0aW8gZXN0aW1hdGlvbiAqLworICAgIC8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICBzdW1TcXVhcmVk
ID0gMDsKKyAgICBpbnB1dF90aWx0ID0gMDsKKyAgICBmb3IoIGIgPSAwOyBiIDwgVkFEX05fQkFO
RFM7IGIrKyApIHsKKyAgICAgICAgc3BlZWNoX25yZyA9IFhucmdbIGIgXSAtIHBzU2lsa19WQUQt
Pk5MWyBiIF07CisgICAgICAgIGlmKCBzcGVlY2hfbnJnID4gMCApIHsKKyAgICAgICAgICAgIC8q
IERpdmlkZSwgd2l0aCBzdWZmaWNpZW50IHJlc29sdXRpb24gKi8KKyAgICAgICAgICAgIGlmKCAo
IFhucmdbIGIgXSAmIDB4RkY4MDAwMDAgKSA9PSAwICkgeworICAgICAgICAgICAgICAgIE5yZ1Rv
Tm9pc2VSYXRpb19ROFsgYiBdID0gc2lsa19ESVYzMiggc2lsa19MU0hJRlQoIFhucmdbIGIgXSwg
OCApLCBwc1NpbGtfVkFELT5OTFsgYiBdICsgMSApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBOcmdUb05vaXNlUmF0aW9fUThbIGIgXSA9IHNpbGtfRElWMzIoIFhucmdb
IGIgXSwgc2lsa19SU0hJRlQoIHBzU2lsa19WQUQtPk5MWyBiIF0sIDggKSArIDEgKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLyogQ29udmVydCB0byBsb2cgZG9tYWluICovCisgICAg
ICAgICAgICBTTlJfUTcgPSBzaWxrX2xpbjJsb2coIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdICkg
LSA4ICogMTI4OworCisgICAgICAgICAgICAvKiBTdW0tb2Ytc3F1YXJlcyAqLworICAgICAgICAg
ICAgc3VtU3F1YXJlZCA9IHNpbGtfU01MQUJCKCBzdW1TcXVhcmVkLCBTTlJfUTcsIFNOUl9RNyAp
OyAgICAgICAgICAvKiBRMTQgKi8KKworICAgICAgICAgICAgLyogVGlsdCBtZWFzdXJlICovCisg
ICAgICAgICAgICBpZiggc3BlZWNoX25yZyA8ICggKG9wdXNfaW50MzIpMSA8PCAyMCApICkgewor
ICAgICAgICAgICAgICAgIC8qIFNjYWxlIGRvd24gU05SIHZhbHVlIGZvciBzbWFsbCBzdWJiYW5k
IHNwZWVjaCBlbmVyZ2llcyAqLworICAgICAgICAgICAgICAgIFNOUl9RNyA9IHNpbGtfU01VTFdC
KCBzaWxrX0xTSElGVCggc2lsa19TUVJUX0FQUFJPWCggc3BlZWNoX25yZyApLCA2ICksIFNOUl9R
NyApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5wdXRfdGlsdCA9IHNpbGtfU01MQVdC
KCBpbnB1dF90aWx0LCB0aWx0V2VpZ2h0c1sgYiBdLCBTTlJfUTcgKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdID0gMjU2OworICAgICAgICB9
CisgICAgfQorCisgICAgLyogTWVhbi1vZi1zcXVhcmVzICovCisgICAgc3VtU3F1YXJlZCA9IHNp
bGtfRElWMzJfMTYoIHN1bVNxdWFyZWQsIFZBRF9OX0JBTkRTICk7IC8qIFExNCAqLworCisgICAg
LyogUm9vdC1tZWFuLXNxdWFyZSBhcHByb3hpbWF0aW9uLCBzY2FsZSB0byBkQnMsIGFuZCB3cml0
ZSB0byBvdXRwdXQgcG9pbnRlciAqLworICAgIHBTTlJfZEJfUTcgPSAob3B1c19pbnQxNikoIDMg
KiBzaWxrX1NRUlRfQVBQUk9YKCBzdW1TcXVhcmVkICkgKTsgLyogUTcgKi8KKworICAgIC8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogU3BlZWNoIFByb2JhYmlsaXR5
IEVzdGltYXRpb24gKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor
ICAgIFNBX1ExNSA9IHNpbGtfc2lnbV9RMTUoIHNpbGtfU01VTFdCKCBWQURfU05SX0ZBQ1RPUl9R
MTYsIHBTTlJfZEJfUTcgKSAtIFZBRF9ORUdBVElWRV9PRkZTRVRfUTUgKTsKKworICAgIC8qKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiBGcmVxdWVuY3kgVGlsdCBNZWFzdXJlICov
CisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIHBzRW5jQy0+aW5wdXRfdGls
dF9RMTUgPSBzaWxrX0xTSElGVCggc2lsa19zaWdtX1ExNSggaW5wdXRfdGlsdCApIC0gMTYzODQs
IDEgKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KKyAgICAvKiBTY2FsZSB0aGUgc2lnbW9pZCBvdXRwdXQgYmFzZWQgb24gcG93ZXIg
bGV2ZWxzICovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLworICAgIHNwZWVjaF9ucmcgPSAwOworICAgIGZvciggYiA9IDA7IGIgPCBWQURf
Tl9CQU5EUzsgYisrICkgeworICAgICAgICAvKiBBY2N1bXVsYXRlIHNpZ25hbC13aXRob3V0LW5v
aXNlIGVuZXJnaWVzLCBoaWdoZXIgZnJlcXVlbmN5IGJhbmRzIGhhdmUgbW9yZSB3ZWlnaHQgKi8K
KyAgICAgICAgc3BlZWNoX25yZyArPSAoIGIgKyAxICkgKiBzaWxrX1JTSElGVCggWG5yZ1sgYiBd
IC0gcHNTaWxrX1ZBRC0+TkxbIGIgXSwgNCApOworICAgIH0KKworICAgIC8qIFBvd2VyIHNjYWxp
bmcgKi8KKyAgICBpZiggc3BlZWNoX25yZyA8PSAwICkgeworICAgICAgICBTQV9RMTUgPSBzaWxr
X1JTSElGVCggU0FfUTE1LCAxICk7CisgICAgfSBlbHNlIGlmKCBzcGVlY2hfbnJnIDwgMzI3Njgg
KSB7CisgICAgICAgIGlmKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSAxMCAqIHBzRW5jQy0+ZnNf
a0h6ICkgeworICAgICAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtfTFNISUZUX1NBVDMyKCBzcGVl
Y2hfbnJnLCAxNiApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3BlZWNoX25yZyA9
IHNpbGtfTFNISUZUX1NBVDMyKCBzcGVlY2hfbnJnLCAxNSApOworICAgICAgICB9CisKKyAgICAg
ICAgLyogc3F1YXJlLXJvb3QgKi8KKyAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtfU1FSVF9BUFBS
T1goIHNwZWVjaF9ucmcgKTsKKyAgICAgICAgU0FfUTE1ID0gc2lsa19TTVVMV0IoIDMyNzY4ICsg
c3BlZWNoX25yZywgU0FfUTE1ICk7CisgICAgfQorCisgICAgLyogQ29weSB0aGUgcmVzdWx0aW5n
IHNwZWVjaCBhY3Rpdml0eSBpbiBROCAqLworICAgIHBzRW5jQy0+c3BlZWNoX2FjdGl2aXR5X1E4
ID0gc2lsa19taW5faW50KCBzaWxrX1JTSElGVCggU0FfUTE1LCA3ICksIHNpbGtfdWludDhfTUFY
ICk7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyog
RW5lcmd5IExldmVsIGFuZCBTTlIgZXN0aW1hdGlvbiAqLworICAgIC8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiBTbW9vdGhpbmcgY29lZmZpY2llbnQgKi8KKyAg
ICBzbW9vdGhfY29lZl9RMTYgPSBzaWxrX1NNVUxXQiggVkFEX1NOUl9TTU9PVEhfQ09FRl9RMTgs
IHNpbGtfU01VTFdCKCAob3B1c19pbnQzMilTQV9RMTUsIFNBX1ExNSApICk7CisKKyAgICBpZigg
cHNFbmNDLT5mcmFtZV9sZW5ndGggPT0gMTAgKiBwc0VuY0MtPmZzX2tIeiApIHsKKyAgICAgICAg
c21vb3RoX2NvZWZfUTE2ID4+PSAxOworICAgIH0KKworICAgIGZvciggYiA9IDA7IGIgPCBWQURf
Tl9CQU5EUzsgYisrICkgeworICAgICAgICAvKiBjb21wdXRlIHNtb290aGVkIGVuZXJneS10by1u
b2lzZSByYXRpbyBwZXIgYmFuZCAqLworICAgICAgICBwc1NpbGtfVkFELT5OcmdSYXRpb1NtdGhf
UThbIGIgXSA9IHNpbGtfU01MQVdCKCBwc1NpbGtfVkFELT5OcmdSYXRpb1NtdGhfUThbIGIgXSwK
KyAgICAgICAgICAgIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdIC0gcHNTaWxrX1ZBRC0+TnJnUmF0
aW9TbXRoX1E4WyBiIF0sIHNtb290aF9jb2VmX1ExNiApOworCisgICAgICAgIC8qIHNpZ25hbCB0
byBub2lzZSByYXRpbyBpbiBkQiBwZXIgYmFuZCAqLworICAgICAgICBTTlJfUTcgPSAzICogKCBz
aWxrX2xpbjJsb2coIHBzU2lsa19WQUQtPk5yZ1JhdGlvU210aF9ROFtiXSApIC0gOCAqIDEyOCAp
OworICAgICAgICAvKiBxdWFsaXR5ID0gc2lnbW9pZCggMC4yNSAqICggU05SX2RCIC0gMTYgKSAp
OyAqLworICAgICAgICBwc0VuY0MtPmlucHV0X3F1YWxpdHlfYmFuZHNfUTE1WyBiIF0gPSBzaWxr
X3NpZ21fUTE1KCBzaWxrX1JTSElGVCggU05SX1E3IC0gMTYgKiAxMjgsIDQgKSApOworICAgIH0K
KworICAgIFJFU1RPUkVfU1RBQ0s7CisgICAgcmV0dXJuKCByZXQgKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay94ODYvVlFfV01hdF9FQ19zc2UuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvVlFfV01hdF9FQ19zc2UuYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRkNmM2ZDBlYzZlNGU5YTc0MTRjZDRkZTg3ZGU5
NzI3YWMyMDY4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsveDg2L1ZRX1dNYXRfRUNfc3NlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBA
QAotLyogQ29weXJpZ2h0IChjKSAyMDE0LCBDaXNjbyBTeXN0ZW1zLCBJTkMKLSAgIFdyaXR0ZW4g
YnkgWGlhbmdNaW5nWmh1IFdlaVpob3UgTWluUGVuZyBZYW5XYW5nCi0KLSAgIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSAgIC0g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSAgIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKLSAg
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gICBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GCi0gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORwotICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gICBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZmRl
ZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUg
PHhtbWludHJpbi5oPgotI2luY2x1ZGUgPGVtbWludHJpbi5oPgotI2luY2x1ZGUgPHNtbWludHJp
bi5oPgotI2luY2x1ZGUgIm1haW4uaCIKLSNpbmNsdWRlICJjZWx0L3g4Ni94ODZjcHUuaCIKLQot
LyogRW50cm9weSBjb25zdHJhaW5lZCBtYXRyaXgtd2VpZ2h0ZWQgVlEsIGhhcmQtY29kZWQgdG8g
NS1lbGVtZW50IHZlY3RvcnMsIGZvciBhIHNpbmdsZSBpbnB1dCBkYXRhIHZlY3RvciAqLwotdm9p
ZCBzaWxrX1ZRX1dNYXRfRUNfc3NlNF8xKAotICAgIG9wdXNfaW50OCAgICAgICAgICAgICAgICAg
ICAqaW5kLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgaW5kZXggb2YgYmVzdCBj
b2RlYm9vayB2ZWN0b3IgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAg
ICAgICAgICAqcmF0ZV9kaXN0X1ExNCwgICAgICAgICAgICAgICAgIC8qIE8gICAgYmVzdCB3ZWln
aHRlZCBxdWFudCBlcnJvciArIG11ICogcmF0ZSAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAg
ICAgICAgICAgICAgICAqZ2Fpbl9RNywgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgc3Vt
IG9mIGFic29sdXRlIExUUCBjb2VmZmljaWVudHMgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9w
dXNfaW50MTYgICAgICAgICAgICAqaW5fUTE0LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkg
ICAgaW5wdXQgdmVjdG9yIHRvIGJlIHF1YW50aXplZCAgICAgICAgICAgICAgICAqLwotICAgIGNv
bnN0IG9wdXNfaW50MzIgICAgICAgICAgICAqV19RMTgsICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEkgICAgd2VpZ2h0aW5nIG1hdHJpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwot
ICAgIGNvbnN0IG9wdXNfaW50OCAgICAgICAgICAgICAqY2JfUTcsICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgY29kZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwotICAgIGNvbnN0IG9wdXNfdWludDggICAgICAgICAgICAqY2JfZ2Fpbl9RNywgICAgICAg
ICAgICAgICAgICAgIC8qIEkgICAgY29kZWJvb2sgZWZmZWN0aXZlIGdhaW4gICAgICAgICAgICAg
ICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfdWludDggICAgICAgICAgICAqY2xfUTUsICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEkgICAgY29kZSBsZW5ndGggZm9yIGVhY2ggY29kZWJvb2sg
dmVjdG9yICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBtdV9ROSwg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgdHJhZGVvZmYgYmV0dy4gd2VpZ2h0ZWQg
ZXJyb3IgYW5kIHJhdGUgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAgICAgICAgICBt
YXhfZ2Fpbl9RNywgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgbWF4aW11bSBzdW0gb2YgYWJz
b2x1dGUgTFRQIGNvZWZmaWNpZW50cyAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgICAg
ICAgICBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgbnVtYmVyIG9mIHZl
Y3RvcnMgaW4gY29kZWJvb2sgICAgICAgICAgICAgICAqLwotKQotewotICAgIG9wdXNfaW50ICAg
aywgZ2Fpbl90bXBfUTc7Ci0gICAgY29uc3Qgb3B1c19pbnQ4ICpjYl9yb3dfUTc7Ci0gICAgb3B1
c19pbnQxNiBkaWZmX1ExNFsgNSBdOwotICAgIG9wdXNfaW50MzIgc3VtMV9RMTQsIHN1bTJfUTE2
OwotCi0gICAgX19tMTI4aSBDX3RtcDEsIENfdG1wMiwgQ190bXAzLCBDX3RtcDQsIENfdG1wNTsK
LSAgICAvKiBMb29wIG92ZXIgY29kZWJvb2sgKi8KLSAgICAqcmF0ZV9kaXN0X1ExNCA9IHNpbGtf
aW50MzJfTUFYOwotICAgIGNiX3Jvd19RNyA9IGNiX1E3OwotICAgIGZvciggayA9IDA7IGsgPCBM
OyBrKysgKSB7Ci0gICAgICAgIGdhaW5fdG1wX1E3ID0gY2JfZ2Fpbl9RN1trXTsKLQotICAgICAg
ICBkaWZmX1ExNFsgMCBdID0gaW5fUTE0WyAwIF0gLSBzaWxrX0xTSElGVCggY2Jfcm93X1E3WyAw
IF0sIDcgKTsKLQotICAgICAgICBDX3RtcDEgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoICZpbl9R
MTRbIDEgXSApOwotICAgICAgICBDX3RtcDIgPSBPUF9DVlRFUEk4X0VQSTMyX00zMiggJmNiX3Jv
d19RN1sgMSBdICk7Ci0gICAgICAgIENfdG1wMiA9IF9tbV9zbGxpX2VwaTMyKCBDX3RtcDIsIDcg
KTsKLSAgICAgICAgQ190bXAxID0gX21tX3N1Yl9lcGkzMiggQ190bXAxLCBDX3RtcDIgKTsKLQot
ICAgICAgICBkaWZmX1ExNFsgMSBdID0gX21tX2V4dHJhY3RfZXBpMTYoIENfdG1wMSwgMCApOwot
ICAgICAgICBkaWZmX1ExNFsgMiBdID0gX21tX2V4dHJhY3RfZXBpMTYoIENfdG1wMSwgMiApOwot
ICAgICAgICBkaWZmX1ExNFsgMyBdID0gX21tX2V4dHJhY3RfZXBpMTYoIENfdG1wMSwgNCApOwot
ICAgICAgICBkaWZmX1ExNFsgNCBdID0gX21tX2V4dHJhY3RfZXBpMTYoIENfdG1wMSwgNiApOwot
Ci0gICAgICAgIC8qIFdlaWdodGVkIHJhdGUgKi8KLSAgICAgICAgc3VtMV9RMTQgPSBzaWxrX1NN
VUxCQiggbXVfUTksIGNsX1E1WyBrIF0gKTsKLQotICAgICAgICAvKiBQZW5hbHR5IGZvciB0b28g
bGFyZ2UgZ2FpbiAqLwotICAgICAgICBzdW0xX1ExNCA9IHNpbGtfQUREX0xTSElGVDMyKCBzdW0x
X1ExNCwgc2lsa19tYXgoIHNpbGtfU1VCMzIoIGdhaW5fdG1wX1E3LCBtYXhfZ2Fpbl9RNyApLCAw
ICksIDEwICk7Ci0KLSAgICAgICAgc2lsa19hc3NlcnQoIHN1bTFfUTE0ID49IDAgKTsKLQotICAg
ICAgICAvKiBmaXJzdCByb3cgb2YgV19RMTggKi8KLSAgICAgICAgQ190bXAzID0gX21tX2xvYWR1
X3NpMTI4KCAoX19tMTI4aSAqKSgmV19RMThbIDEgXSApICk7Ci0gICAgICAgIENfdG1wNCA9IF9t
bV9tdWxfZXBpMzIoIENfdG1wMywgQ190bXAxICk7Ci0gICAgICAgIENfdG1wNCA9IF9tbV9zcmxp
X3NpMTI4KCBDX3RtcDQsIDIgKTsKLQotICAgICAgICBDX3RtcDEgPSBfbW1fc2h1ZmZsZV9lcGkz
MiggQ190bXAxLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8qIHNoaWZ0IHJpZ2h0IDQg
Ynl0ZXMgKi8KLSAgICAgICAgQ190bXAzID0gX21tX3NodWZmbGVfZXBpMzIoIENfdG1wMywgX01N
X1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBzaGlmdCByaWdodCA0IGJ5dGVzICovCi0KLSAg
ICAgICAgQ190bXA1ID0gX21tX211bF9lcGkzMiggQ190bXAzLCBDX3RtcDEgKTsKLSAgICAgICAg
Q190bXA1ID0gX21tX3NybGlfc2kxMjgoIENfdG1wNSwgMiApOwotCi0gICAgICAgIENfdG1wNSA9
IF9tbV9hZGRfZXBpMzIoIENfdG1wNCwgQ190bXA1ICk7Ci0gICAgICAgIENfdG1wNSA9IF9tbV9z
bGxpX2VwaTMyKCBDX3RtcDUsIDEgKTsKLQotICAgICAgICBDX3RtcDUgPSBfbW1fYWRkX2VwaTMy
KCBDX3RtcDUsIF9tbV9zaHVmZmxlX2VwaTMyKCBDX3RtcDUsIF9NTV9TSFVGRkxFKCAwLCAwLCAw
LCAyICkgKSApOwotICAgICAgICBzdW0yX1ExNiA9IF9tbV9jdnRzaTEyOF9zaTMyKCBDX3RtcDUg
KTsKLQotICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbICAw
IF0sIGRpZmZfUTE0WyAwIF0gKTsKLSAgICAgICAgc3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3Vt
MV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1ExNFsgMCBdICk7Ci0KLSAgICAgICAgLyogc2Vjb25k
IHJvdyBvZiBXX1ExOCAqLwotICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01VTFdCKCAgICAgICAg
ICAgV19RMThbICA3IF0sIGRpZmZfUTE0WyAyIF0gKTsKLSAgICAgICAgc3VtMl9RMTYgPSBzaWxr
X1NNTEFXQiggc3VtMl9RMTYsIFdfUTE4WyAgOCBdLCBkaWZmX1ExNFsgMyBdICk7Ci0gICAgICAg
IHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1bTJfUTE2LCBXX1ExOFsgIDkgXSwgZGlmZl9RMTRb
IDQgXSApOwotICAgICAgICBzdW0yX1ExNiA9IHNpbGtfTFNISUZUKCBzdW0yX1ExNiwgMSApOwot
ICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbICA2IF0sIGRp
ZmZfUTE0WyAxIF0gKTsKLSAgICAgICAgc3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3VtMV9RMTQs
IHN1bTJfUTE2LCAgICBkaWZmX1ExNFsgMSBdICk7Ci0KLSAgICAgICAgLyogdGhpcmQgcm93IG9m
IFdfUTE4ICovCi0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTVVMV0IoICAgICAgICAgICBXX1Ex
OFsgMTMgXSwgZGlmZl9RMTRbIDMgXSApOwotICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdC
KCBzdW0yX1ExNiwgV19RMThbIDE0IF0sIGRpZmZfUTE0WyA0IF0gKTsKLSAgICAgICAgc3VtMl9R
MTYgPSBzaWxrX0xTSElGVCggc3VtMl9RMTYsIDEgKTsKLSAgICAgICAgc3VtMl9RMTYgPSBzaWxr
X1NNTEFXQiggc3VtMl9RMTYsIFdfUTE4WyAxMiBdLCBkaWZmX1ExNFsgMiBdICk7Ci0gICAgICAg
IHN1bTFfUTE0ID0gc2lsa19TTUxBV0IoIHN1bTFfUTE0LCBzdW0yX1ExNiwgICAgZGlmZl9RMTRb
IDIgXSApOwotCi0gICAgICAgIC8qIGZvdXJ0aCByb3cgb2YgV19RMTggKi8KLSAgICAgICAgc3Vt
Ml9RMTYgPSBzaWxrX1NNVUxXQiggICAgICAgICAgIFdfUTE4WyAxOSBdLCBkaWZmX1ExNFsgNCBd
ICk7Ci0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19MU0hJRlQoIHN1bTJfUTE2LCAxICk7Ci0gICAg
ICAgIHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1bTJfUTE2LCBXX1ExOFsgMTggXSwgZGlmZl9R
MTRbIDMgXSApOwotICAgICAgICBzdW0xX1ExNCA9IHNpbGtfU01MQVdCKCBzdW0xX1ExNCwgc3Vt
Ml9RMTYsICAgIGRpZmZfUTE0WyAzIF0gKTsKLQotICAgICAgICAvKiBsYXN0IHJvdyBvZiBXX1Ex
OCAqLwotICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01VTFdCKCAgICAgICAgICAgV19RMThbIDI0
IF0sIGRpZmZfUTE0WyA0IF0gKTsKLSAgICAgICAgc3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3Vt
MV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1ExNFsgNCBdICk7Ci0KLSAgICAgICAgc2lsa19hc3Nl
cnQoIHN1bTFfUTE0ID49IDAgKTsKLQotICAgICAgICAvKiBmaW5kIGJlc3QgKi8KLSAgICAgICAg
aWYoIHN1bTFfUTE0IDwgKnJhdGVfZGlzdF9RMTQgKSB7Ci0gICAgICAgICAgICAqcmF0ZV9kaXN0
X1ExNCA9IHN1bTFfUTE0OwotICAgICAgICAgICAgKmluZCA9IChvcHVzX2ludDgpazsKLSAgICAg
ICAgICAgICpnYWluX1E3ID0gZ2Fpbl90bXBfUTc7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBH
byB0byBuZXh0IGNiayB2ZWN0b3IgKi8KLSAgICAgICAgY2Jfcm93X1E3ICs9IExUUF9PUkRFUjsK
LSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsveDg2L1ZRX1dNYXRfRUNfc3NlNF8xLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
eDg2L1ZRX1dNYXRfRUNfc3NlNF8xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRkNmM2ZDBlYzZlNGU5YTc0MTRj
ZDRkZTg3ZGU5NzI3YWMyMDY4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvVlFfV01hdF9F
Q19zc2U0XzEuYwpAQCAtMCwwICsxLDE0MiBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE0LCBDaXNj
byBTeXN0ZW1zLCBJTkMKKyAgIFdyaXR0ZW4gYnkgWGlhbmdNaW5nWmh1IFdlaVpob3UgTWluUGVu
ZyBZYW5XYW5nCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUgbWV0OgorCisg
ICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICAgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICAgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHhtbWludHJpbi5oPgorI2luY2x1ZGUgPGVtbWlu
dHJpbi5oPgorI2luY2x1ZGUgPHNtbWludHJpbi5oPgorI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNs
dWRlICJjZWx0L3g4Ni94ODZjcHUuaCIKKworLyogRW50cm9weSBjb25zdHJhaW5lZCBtYXRyaXgt
d2VpZ2h0ZWQgVlEsIGhhcmQtY29kZWQgdG8gNS1lbGVtZW50IHZlY3RvcnMsIGZvciBhIHNpbmds
ZSBpbnB1dCBkYXRhIHZlY3RvciAqLwordm9pZCBzaWxrX1ZRX1dNYXRfRUNfc3NlNF8xKAorICAg
IG9wdXNfaW50OCAgICAgICAgICAgICAgICAgICAqaW5kLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIE8gICAgaW5kZXggb2YgYmVzdCBjb2RlYm9vayB2ZWN0b3IgICAgICAgICAgICAgICAq
LworICAgIG9wdXNfaW50MzIgICAgICAgICAgICAgICAgICAqcmF0ZV9kaXN0X1ExNCwgICAgICAg
ICAgICAgICAgIC8qIE8gICAgYmVzdCB3ZWlnaHRlZCBxdWFudCBlcnJvciArIG11ICogcmF0ZSAg
ICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgICAgICAgICAqZ2Fpbl9RNywgICAgICAg
ICAgICAgICAgICAgICAgIC8qIE8gICAgc3VtIG9mIGFic29sdXRlIExUUCBjb2VmZmljaWVudHMg
ICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgICAgICAgICAqaW5fUTE0LCAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgaW5wdXQgdmVjdG9yIHRvIGJlIHF1YW50aXpl
ZCAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgICAgICAgICAqV19R
MTgsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgd2VpZ2h0aW5nIG1hdHJpeCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50OCAgICAgICAgICAg
ICAqY2JfUTcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgY29kZWJvb2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfdWludDggICAg
ICAgICAgICAqY2JfZ2Fpbl9RNywgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgY29kZWJvb2sg
ZWZmZWN0aXZlIGdhaW4gICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfdWlu
dDggICAgICAgICAgICAqY2xfUTUsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgY29k
ZSBsZW5ndGggZm9yIGVhY2ggY29kZWJvb2sgdmVjdG9yICAgICAgICAqLworICAgIGNvbnN0IG9w
dXNfaW50ICAgICAgICAgICAgICBtdV9ROSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkg
ICAgdHJhZGVvZmYgYmV0dy4gd2VpZ2h0ZWQgZXJyb3IgYW5kIHJhdGUgICAgICAqLworICAgIGNv
bnN0IG9wdXNfaW50MzIgICAgICAgICAgICBtYXhfZ2Fpbl9RNywgICAgICAgICAgICAgICAgICAg
IC8qIEkgICAgbWF4aW11bSBzdW0gb2YgYWJzb2x1dGUgTFRQIGNvZWZmaWNpZW50cyAgICAqLwor
ICAgIG9wdXNfaW50ICAgICAgICAgICAgICAgICAgICBMICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgbnVtYmVyIG9mIHZlY3RvcnMgaW4gY29kZWJvb2sgICAgICAgICAgICAg
ICAqLworKQoreworICAgIG9wdXNfaW50ICAgaywgZ2Fpbl90bXBfUTc7CisgICAgY29uc3Qgb3B1
c19pbnQ4ICpjYl9yb3dfUTc7CisgICAgb3B1c19pbnQxNiBkaWZmX1ExNFsgNSBdOworICAgIG9w
dXNfaW50MzIgc3VtMV9RMTQsIHN1bTJfUTE2OworCisgICAgX19tMTI4aSBDX3RtcDEsIENfdG1w
MiwgQ190bXAzLCBDX3RtcDQsIENfdG1wNTsKKyAgICAvKiBMb29wIG92ZXIgY29kZWJvb2sgKi8K
KyAgICAqcmF0ZV9kaXN0X1ExNCA9IHNpbGtfaW50MzJfTUFYOworICAgIGNiX3Jvd19RNyA9IGNi
X1E3OworICAgIGZvciggayA9IDA7IGsgPCBMOyBrKysgKSB7CisgICAgICAgIGdhaW5fdG1wX1E3
ID0gY2JfZ2Fpbl9RN1trXTsKKworICAgICAgICBkaWZmX1ExNFsgMCBdID0gaW5fUTE0WyAwIF0g
LSBzaWxrX0xTSElGVCggY2Jfcm93X1E3WyAwIF0sIDcgKTsKKworICAgICAgICBDX3RtcDEgPSBP
UF9DVlRFUEkxNl9FUEkzMl9NNjQoICZpbl9RMTRbIDEgXSApOworICAgICAgICBDX3RtcDIgPSBP
UF9DVlRFUEk4X0VQSTMyX00zMiggJmNiX3Jvd19RN1sgMSBdICk7CisgICAgICAgIENfdG1wMiA9
IF9tbV9zbGxpX2VwaTMyKCBDX3RtcDIsIDcgKTsKKyAgICAgICAgQ190bXAxID0gX21tX3N1Yl9l
cGkzMiggQ190bXAxLCBDX3RtcDIgKTsKKworICAgICAgICBkaWZmX1ExNFsgMSBdID0gX21tX2V4
dHJhY3RfZXBpMTYoIENfdG1wMSwgMCApOworICAgICAgICBkaWZmX1ExNFsgMiBdID0gX21tX2V4
dHJhY3RfZXBpMTYoIENfdG1wMSwgMiApOworICAgICAgICBkaWZmX1ExNFsgMyBdID0gX21tX2V4
dHJhY3RfZXBpMTYoIENfdG1wMSwgNCApOworICAgICAgICBkaWZmX1ExNFsgNCBdID0gX21tX2V4
dHJhY3RfZXBpMTYoIENfdG1wMSwgNiApOworCisgICAgICAgIC8qIFdlaWdodGVkIHJhdGUgKi8K
KyAgICAgICAgc3VtMV9RMTQgPSBzaWxrX1NNVUxCQiggbXVfUTksIGNsX1E1WyBrIF0gKTsKKwor
ICAgICAgICAvKiBQZW5hbHR5IGZvciB0b28gbGFyZ2UgZ2FpbiAqLworICAgICAgICBzdW0xX1Ex
NCA9IHNpbGtfQUREX0xTSElGVDMyKCBzdW0xX1ExNCwgc2lsa19tYXgoIHNpbGtfU1VCMzIoIGdh
aW5fdG1wX1E3LCBtYXhfZ2Fpbl9RNyApLCAwICksIDEwICk7CisKKyAgICAgICAgc2lsa19hc3Nl
cnQoIHN1bTFfUTE0ID49IDAgKTsKKworICAgICAgICAvKiBmaXJzdCByb3cgb2YgV19RMTggKi8K
KyAgICAgICAgQ190bXAzID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmV19RMThbIDEg
XSApICk7CisgICAgICAgIENfdG1wNCA9IF9tbV9tdWxfZXBpMzIoIENfdG1wMywgQ190bXAxICk7
CisgICAgICAgIENfdG1wNCA9IF9tbV9zcmxpX3NpMTI4KCBDX3RtcDQsIDIgKTsKKworICAgICAg
ICBDX3RtcDEgPSBfbW1fc2h1ZmZsZV9lcGkzMiggQ190bXAxLCBfTU1fU0hVRkZMRSggMCwgMywg
MiwgMSApICk7IC8qIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KKyAgICAgICAgQ190bXAzID0gX21t
X3NodWZmbGVfZXBpMzIoIENfdG1wMywgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBz
aGlmdCByaWdodCA0IGJ5dGVzICovCisKKyAgICAgICAgQ190bXA1ID0gX21tX211bF9lcGkzMigg
Q190bXAzLCBDX3RtcDEgKTsKKyAgICAgICAgQ190bXA1ID0gX21tX3NybGlfc2kxMjgoIENfdG1w
NSwgMiApOworCisgICAgICAgIENfdG1wNSA9IF9tbV9hZGRfZXBpMzIoIENfdG1wNCwgQ190bXA1
ICk7CisgICAgICAgIENfdG1wNSA9IF9tbV9zbGxpX2VwaTMyKCBDX3RtcDUsIDEgKTsKKworICAg
ICAgICBDX3RtcDUgPSBfbW1fYWRkX2VwaTMyKCBDX3RtcDUsIF9tbV9zaHVmZmxlX2VwaTMyKCBD
X3RtcDUsIF9NTV9TSFVGRkxFKCAwLCAwLCAwLCAyICkgKSApOworICAgICAgICBzdW0yX1ExNiA9
IF9tbV9jdnRzaTEyOF9zaTMyKCBDX3RtcDUgKTsKKworICAgICAgICBzdW0yX1ExNiA9IHNpbGtf
U01MQVdCKCBzdW0yX1ExNiwgV19RMThbICAwIF0sIGRpZmZfUTE0WyAwIF0gKTsKKyAgICAgICAg
c3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3VtMV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1ExNFsg
MCBdICk7CisKKyAgICAgICAgLyogc2Vjb25kIHJvdyBvZiBXX1ExOCAqLworICAgICAgICBzdW0y
X1ExNiA9IHNpbGtfU01VTFdCKCAgICAgICAgICAgV19RMThbICA3IF0sIGRpZmZfUTE0WyAyIF0g
KTsKKyAgICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNTEFXQiggc3VtMl9RMTYsIFdfUTE4WyAgOCBd
LCBkaWZmX1ExNFsgMyBdICk7CisgICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1bTJf
UTE2LCBXX1ExOFsgIDkgXSwgZGlmZl9RMTRbIDQgXSApOworICAgICAgICBzdW0yX1ExNiA9IHNp
bGtfTFNISUZUKCBzdW0yX1ExNiwgMSApOworICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdC
KCBzdW0yX1ExNiwgV19RMThbICA2IF0sIGRpZmZfUTE0WyAxIF0gKTsKKyAgICAgICAgc3VtMV9R
MTQgPSBzaWxrX1NNTEFXQiggc3VtMV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1ExNFsgMSBdICk7
CisKKyAgICAgICAgLyogdGhpcmQgcm93IG9mIFdfUTE4ICovCisgICAgICAgIHN1bTJfUTE2ID0g
c2lsa19TTVVMV0IoICAgICAgICAgICBXX1ExOFsgMTMgXSwgZGlmZl9RMTRbIDMgXSApOworICAg
ICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbIDE0IF0sIGRpZmZf
UTE0WyA0IF0gKTsKKyAgICAgICAgc3VtMl9RMTYgPSBzaWxrX0xTSElGVCggc3VtMl9RMTYsIDEg
KTsKKyAgICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNTEFXQiggc3VtMl9RMTYsIFdfUTE4WyAxMiBd
LCBkaWZmX1ExNFsgMiBdICk7CisgICAgICAgIHN1bTFfUTE0ID0gc2lsa19TTUxBV0IoIHN1bTFf
UTE0LCBzdW0yX1ExNiwgICAgZGlmZl9RMTRbIDIgXSApOworCisgICAgICAgIC8qIGZvdXJ0aCBy
b3cgb2YgV19RMTggKi8KKyAgICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNVUxXQiggICAgICAgICAg
IFdfUTE4WyAxOSBdLCBkaWZmX1ExNFsgNCBdICk7CisgICAgICAgIHN1bTJfUTE2ID0gc2lsa19M
U0hJRlQoIHN1bTJfUTE2LCAxICk7CisgICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1
bTJfUTE2LCBXX1ExOFsgMTggXSwgZGlmZl9RMTRbIDMgXSApOworICAgICAgICBzdW0xX1ExNCA9
IHNpbGtfU01MQVdCKCBzdW0xX1ExNCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0WyAzIF0gKTsKKwor
ICAgICAgICAvKiBsYXN0IHJvdyBvZiBXX1ExOCAqLworICAgICAgICBzdW0yX1ExNiA9IHNpbGtf
U01VTFdCKCAgICAgICAgICAgV19RMThbIDI0IF0sIGRpZmZfUTE0WyA0IF0gKTsKKyAgICAgICAg
c3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3VtMV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1ExNFsg
NCBdICk7CisKKyAgICAgICAgc2lsa19hc3NlcnQoIHN1bTFfUTE0ID49IDAgKTsKKworICAgICAg
ICAvKiBmaW5kIGJlc3QgKi8KKyAgICAgICAgaWYoIHN1bTFfUTE0IDwgKnJhdGVfZGlzdF9RMTQg
KSB7CisgICAgICAgICAgICAqcmF0ZV9kaXN0X1ExNCA9IHN1bTFfUTE0OworICAgICAgICAgICAg
KmluZCA9IChvcHVzX2ludDgpazsKKyAgICAgICAgICAgICpnYWluX1E3ID0gZ2Fpbl90bXBfUTc7
CisgICAgICAgIH0KKworICAgICAgICAvKiBHbyB0byBuZXh0IGNiayB2ZWN0b3IgKi8KKyAgICAg
ICAgY2Jfcm93X1E3ICs9IExUUF9PUkRFUjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9hbmFs
eXNpcy5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zcmMvYW5hbHlzaXMuYwppbmRleCBmNDE2MGU0YjRlZDVjMTE0Y2Y3ZDYxMGRiZDk3
YTE1NjkwNjBhMDc3Li5jYjQ2ZGVjNTgyZDJlY2NhZDgzOTE0YjcwNzFhODRmODg3NmFmOTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NyYy9hbmFseXNpcy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL2FuYWx5c2lzLmMKQEAgLTUwLDYgKzUw
LDggQEAKIAogI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQogCisjZGVmaW5lIFRSQU5TSVRJT05f
UEVOQUxUWSAxMAorCiBzdGF0aWMgY29uc3QgZmxvYXQgZGN0X3RhYmxlWzEyOF0gPSB7CiAgICAg
ICAgIDAuMjUwMDAwZiwgMC4yNTAwMDBmLCAwLjI1MDAwMGYsIDAuMjUwMDAwZiwgMC4yNTAwMDBm
LCAwLjI1MDAwMGYsIDAuMjUwMDAwZiwgMC4yNTAwMDBmLAogICAgICAgICAwLjI1MDAwMGYsIDAu
MjUwMDAwZiwgMC4yNTAwMDBmLCAwLjI1MDAwMGYsIDAuMjUwMDAwZiwgMC4yNTAwMDBmLCAwLjI1
MDAwMGYsIDAuMjUwMDAwZiwKQEAgLTIyNCwyNSArMjI2LDM4IEBAIHZvaWQgdG9uYWxpdHlfYW5h
bHlzaXNfcmVzZXQoVG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCkKICAgLyogQ2xlYXIgbm9u
LXJldXNhYmxlIGZpZWxkcy4gKi8KICAgY2hhciAqc3RhcnQgPSAoY2hhciopJnRvbmFsLT5UT05B
TElUWV9BTkFMWVNJU19SRVNFVF9TVEFSVDsKICAgT1BVU19DTEVBUihzdGFydCwgc2l6ZW9mKFRv
bmFsaXR5QW5hbHlzaXNTdGF0ZSkgLSAoc3RhcnQgLSAoY2hhciopdG9uYWwpKTsKLSAgdG9uYWwt
Pm11c2ljX2NvbmZpZGVuY2UgPSAuOWY7Ci0gIHRvbmFsLT5zcGVlY2hfY29uZmlkZW5jZSA9IC4x
ZjsKIH0KIAogdm9pZCB0b25hbGl0eV9nZXRfaW5mbyhUb25hbGl0eUFuYWx5c2lzU3RhdGUgKnRv
bmFsLCBBbmFseXNpc0luZm8gKmluZm9fb3V0LCBpbnQgbGVuKQogewogICAgaW50IHBvczsKICAg
IGludCBjdXJyX2xvb2thaGVhZDsKLSAgIGZsb2F0IHBzdW07CiAgICBmbG9hdCB0b25hbGl0eV9t
YXg7CiAgICBmbG9hdCB0b25hbGl0eV9hdmc7CiAgICBpbnQgdG9uYWxpdHlfY291bnQ7CiAgICBp
bnQgaTsKKyAgIGludCBwb3MwOworICAgZmxvYXQgcHJvYl9hdmc7CisgICBmbG9hdCBwcm9iX2Nv
dW50OworICAgZmxvYXQgcHJvYl9taW4sIHByb2JfbWF4OworICAgZmxvYXQgdmFkX3Byb2I7Cisg
ICBpbnQgbXBvcywgdnBvczsKKyAgIGludCBiYW5kd2lkdGhfc3BhbjsKIAogICAgcG9zID0gdG9u
YWwtPnJlYWRfcG9zOwogICAgY3Vycl9sb29rYWhlYWQgPSB0b25hbC0+d3JpdGVfcG9zLXRvbmFs
LT5yZWFkX3BvczsKICAgIGlmIChjdXJyX2xvb2thaGVhZDwwKQogICAgICAgY3Vycl9sb29rYWhl
YWQgKz0gREVURUNUX1NJWkU7CiAKKyAgIHRvbmFsLT5yZWFkX3N1YmZyYW1lICs9IGxlbi8odG9u
YWwtPkZzLzQwMCk7CisgICB3aGlsZSAodG9uYWwtPnJlYWRfc3ViZnJhbWU+PTgpCisgICB7Cisg
ICAgICB0b25hbC0+cmVhZF9zdWJmcmFtZSAtPSA4OworICAgICAgdG9uYWwtPnJlYWRfcG9zKys7
CisgICB9CisgICBpZiAodG9uYWwtPnJlYWRfcG9zPj1ERVRFQ1RfU0laRSkKKyAgICAgIHRvbmFs
LT5yZWFkX3Bvcy09REVURUNUX1NJWkU7CisKICAgIC8qIE9uIGxvbmcgZnJhbWVzLCBsb29rIGF0
IHRoZSBzZWNvbmQgYW5hbHlzaXMgd2luZG93IHJhdGhlciB0aGFuIHRoZSBmaXJzdC4gKi8KICAg
IGlmIChsZW4gPiB0b25hbC0+RnMvNTAgJiYgcG9zICE9IHRvbmFsLT53cml0ZV9wb3MpCiAgICB7
CkBAIC0yNTQsOSArMjY5LDE0IEBAIHZvaWQgdG9uYWxpdHlfZ2V0X2luZm8oVG9uYWxpdHlBbmFs
eXNpc1N0YXRlICp0b25hbCwgQW5hbHlzaXNJbmZvICppbmZvX291dCwgaW50CiAgICAgICBwb3Mt
LTsKICAgIGlmIChwb3M8MCkKICAgICAgIHBvcyA9IERFVEVDVF9TSVpFLTE7CisgICBwb3MwID0g
cG9zOwogICAgT1BVU19DT1BZKGluZm9fb3V0LCAmdG9uYWwtPmluZm9bcG9zXSwgMSk7CisgICBp
ZiAoIWluZm9fb3V0LT52YWxpZCkKKyAgICAgIHJldHVybjsKICAgIHRvbmFsaXR5X21heCA9IHRv
bmFsaXR5X2F2ZyA9IGluZm9fb3V0LT50b25hbGl0eTsKICAgIHRvbmFsaXR5X2NvdW50ID0gMTsK
KyAgIC8qIExvb2sgYXQgdGhlIG5laWdoYm91cmluZyBmcmFtZXMgYW5kIHBpY2sgbGFyZ2VzdCBi
YW5kd2lkdGggZm91bmQgKHRvIGJlIHNhZmUpLiAqLworICAgYmFuZHdpZHRoX3NwYW4gPSA2Owog
ICAgLyogSWYgcG9zc2libGUsIGxvb2sgYWhlYWQgZm9yIGEgdG9uZSB0byBjb21wZW5zYXRlIGZv
ciB0aGUgZGVsYXkgaW4gdGhlIHRvbmUgZGV0ZWN0b3IuICovCiAgICBmb3IgKGk9MDtpPDM7aSsr
KQogICAgewpAQCAtMjY4LDMxICsyODgsMTIyIEBAIHZvaWQgdG9uYWxpdHlfZ2V0X2luZm8oVG9u
YWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCwgQW5hbHlzaXNJbmZvICppbmZvX291dCwgaW50CiAg
ICAgICB0b25hbGl0eV9tYXggPSBNQVgzMih0b25hbGl0eV9tYXgsIHRvbmFsLT5pbmZvW3Bvc10u
dG9uYWxpdHkpOwogICAgICAgdG9uYWxpdHlfYXZnICs9IHRvbmFsLT5pbmZvW3Bvc10udG9uYWxp
dHk7CiAgICAgICB0b25hbGl0eV9jb3VudCsrOworICAgICAgaW5mb19vdXQtPmJhbmR3aWR0aCA9
IElNQVgoaW5mb19vdXQtPmJhbmR3aWR0aCwgdG9uYWwtPmluZm9bcG9zXS5iYW5kd2lkdGgpOwor
ICAgICAgYmFuZHdpZHRoX3NwYW4tLTsKICAgIH0KLSAgIGluZm9fb3V0LT50b25hbGl0eSA9IE1B
WDMyKHRvbmFsaXR5X2F2Zy90b25hbGl0eV9jb3VudCwgdG9uYWxpdHlfbWF4LS4yZik7Ci0gICB0
b25hbC0+cmVhZF9zdWJmcmFtZSArPSBsZW4vKHRvbmFsLT5Gcy80MDApOwotICAgd2hpbGUgKHRv
bmFsLT5yZWFkX3N1YmZyYW1lPj04KQorICAgcG9zID0gcG9zMDsKKyAgIC8qIExvb2sgYmFjayBp
biB0aW1lIHRvIHNlZSBpZiBhbnkgaGFzIGEgd2lkZXIgYmFuZHdpZHRoIHRoYW4gdGhlIGN1cnJl
bnQgZnJhbWUuICovCisgICBmb3IgKGk9MDtpPGJhbmR3aWR0aF9zcGFuO2krKykKICAgIHsKLSAg
ICAgIHRvbmFsLT5yZWFkX3N1YmZyYW1lIC09IDg7Ci0gICAgICB0b25hbC0+cmVhZF9wb3MrKzsK
KyAgICAgIHBvcy0tOworICAgICAgaWYgKHBvcyA8IDApCisgICAgICAgICBwb3MgPSBERVRFQ1Rf
U0laRS0xOworICAgICAgaWYgKHBvcyA9PSB0b25hbC0+d3JpdGVfcG9zKQorICAgICAgICAgYnJl
YWs7CisgICAgICBpbmZvX291dC0+YmFuZHdpZHRoID0gSU1BWChpbmZvX291dC0+YmFuZHdpZHRo
LCB0b25hbC0+aW5mb1twb3NdLmJhbmR3aWR0aCk7CiAgICB9Ci0gICBpZiAodG9uYWwtPnJlYWRf
cG9zPj1ERVRFQ1RfU0laRSkKLSAgICAgIHRvbmFsLT5yZWFkX3Bvcy09REVURUNUX1NJWkU7Cisg
ICBpbmZvX291dC0+dG9uYWxpdHkgPSBNQVgzMih0b25hbGl0eV9hdmcvdG9uYWxpdHlfY291bnQs
IHRvbmFsaXR5X21heC0uMmYpOwogCi0gICAvKiBUaGUgLTEgaXMgdG8gY29tcGVuc2F0ZSBmb3Ig
dGhlIGRlbGF5IGluIHRoZSBmZWF0dXJlcyB0aGVtc2VsdmVzLiAqLwotICAgY3Vycl9sb29rYWhl
YWQgPSBJTUFYKGN1cnJfbG9va2FoZWFkLTEsIDApOworICAgbXBvcyA9IHZwb3MgPSBwb3MwOwor
ICAgLyogSWYgd2UgaGF2ZSBlbm91Z2ggbG9vay1haGVhZCwgY29tcGVuc2F0ZSBmb3IgdGhlIH41
LWZyYW1lIGRlbGF5IGluIHRoZSBtdXNpYyBwcm9iIGFuZAorICAgICAgfjEgZnJhbWUgZGVsYXkg
aW4gdGhlIFZBRCBwcm9iLiAqLworICAgaWYgKGN1cnJfbG9va2FoZWFkID4gMTUpCisgICB7Cisg
ICAgICBtcG9zICs9IDU7CisgICAgICBpZiAobXBvcz49REVURUNUX1NJWkUpCisgICAgICAgICBt
cG9zIC09IERFVEVDVF9TSVpFOworICAgICAgdnBvcyArPSAxOworICAgICAgaWYgKHZwb3M+PURF
VEVDVF9TSVpFKQorICAgICAgICAgdnBvcyAtPSBERVRFQ1RfU0laRTsKKyAgIH0KIAotICAgcHN1
bT0wOwotICAgLyogU3VtbWluZyB0aGUgcHJvYmFiaWxpdHkgb2YgdHJhbnNpdGlvbiBwYXR0ZXJu
cyB0aGF0IGludm9sdmUgbXVzaWMgYXQKLSAgICAgIHRpbWUgKERFVEVDVF9TSVpFLWN1cnJfbG9v
a2FoZWFkLTEpICovCi0gICBmb3IgKGk9MDtpPERFVEVDVF9TSVpFLWN1cnJfbG9va2FoZWFkO2kr
KykKLSAgICAgIHBzdW0gKz0gdG9uYWwtPnBtdXNpY1tpXTsKLSAgIGZvciAoO2k8REVURUNUX1NJ
WkU7aSsrKQotICAgICAgcHN1bSArPSB0b25hbC0+cHNwZWVjaFtpXTsKLSAgIHBzdW0gPSBwc3Vt
KnRvbmFsLT5tdXNpY19jb25maWRlbmNlICsgKDEtcHN1bSkqdG9uYWwtPnNwZWVjaF9jb25maWRl
bmNlOwotICAgLypwcmludGYoIiVmICVmICVmICVmICVmXG4iLCBwc3VtLCBpbmZvX291dC0+bXVz
aWNfcHJvYiwgaW5mb19vdXQtPnZhZF9wcm9iLCBpbmZvX291dC0+YWN0aXZpdHlfcHJvYmFiaWxp
dHksIGluZm9fb3V0LT50b25hbGl0eSk7Ki8KKyAgIC8qIFRoZSBmb2xsb3dpbmcgY2FsY3VsYXRp
b25zIGF0dGVtcHQgdG8gbWluaW1pemUgYSAiYmFkbmVzcyBmdW5jdGlvbiIKKyAgICAgIGZvciB0
aGUgdHJhbnNpdGlvbi4gV2hlbiBzd2l0Y2hpbmcgZnJvbSBzcGVlY2ggdG8gbXVzaWMsIHRoZSBi
YWRuZXNzCisgICAgICBvZiBzd2l0Y2hpbmcgYXQgZnJhbWUgayBpcworICAgICAgYl9rID0gUyp2
X2sgKyBcc3VtX3tpPTB9XntrLTF9IHZfaSoocF9pIC0gVCkKKyAgICAgIHdoZXJlCisgICAgICB2
X2kgaXMgdGhlIGFjdGl2aXR5IHByb2JhYmlsaXR5IChWQUQpIGF0IGZyYW1lIGksCisgICAgICBw
X2kgaXMgdGhlIG11c2ljIHByb2JhYmlsaXR5IGF0IGZyYW1lIGkKKyAgICAgIFQgaXMgdGhlIHBy
b2JhYmlsaXR5IHRocmVzaG9sZCBmb3Igc3dpdGNoaW5nCisgICAgICBTIGlzIHRoZSBwZW5hbHR5
IGZvciBzd2l0Y2hpbmcgZHVyaW5nIGFjdGl2ZSBhdWRpbyByYXRoZXIgdGhhbiBzaWxlbmNlCisg
ICAgICB0aGUgY3VycmVudCBmcmFtZSBoYXMgaW5kZXggaT0wCisKKyAgICAgIFJhdGhlciB0aGFu
IGFwcGx5IGJhZG5lc3MgdG8gZGlyZWN0bHkgZGVjaWRlIHdoZW4gdG8gc3dpdGNoLCB3aGF0IHdl
IGNvbXB1dGUKKyAgICAgIGluc3RlYWQgaXMgdGhlIHRocmVzaG9sZCBmb3Igd2hpY2ggdGhlIG9w
dGltYWwgc3dpdGNoaW5nIHBvaW50IGlzIG5vdy4gV2hlbgorICAgICAgY29uc2lkZXJpbmcgd2hl
dGhlciB0byBzd2l0Y2ggbm93IChmcmFtZSAwKSBvciBhdCBmcmFtZSBrLCB3ZSBoYXZlOgorICAg
ICAgUyp2XzAgPSBTKnZfayArIFxzdW1fe2k9MH1ee2stMX0gdl9pKihwX2kgLSBUKQorICAgICAg
d2hpY2ggZ2l2ZXMgdXM6CisgICAgICBUID0gKCBcc3VtX3tpPTB9XntrLTF9IHZfaSpwX2kgKyBT
Kih2X2stdl8wKSApIC8gKCBcc3VtX3tpPTB9XntrLTF9IHZfaSApCisgICAgICBXZSB0YWtlIHRo
ZSBtaW4gdGhyZXNob2xkIGFjcm9zcyBhbGwgcG9zaXRpdmUgdmFsdWVzIG9mIGsgKHVwIHRvIHRo
ZSBtYXhpbXVtCisgICAgICBhbW91bnQgb2YgbG9va2FoZWFkIHdlIGhhdmUpIHRvIGdpdmUgdXMg
dGhlIHRocmVzaG9sZCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQKKyAgICAgIGZyYW1lIGlzIHRoZSBv
cHRpbWFsIHN3aXRjaCBwb2ludC4KKworICAgICAgVGhlIGxhc3Qgc3RlcCBpcyB0aGF0IHdlIG5l
ZWQgdG8gY29uc2lkZXIgd2hldGhlciB3ZSB3YW50IHRvIHN3aXRjaCBhdCBhbGwuCisgICAgICBG
b3IgdGhhdCB3ZSB1c2UgdGhlIGF2ZXJhZ2Ugb2YgdGhlIG11c2ljIHByb2JhYmlsaXR5IG92ZXIg
dGhlIGVudGlyZSB3aW5kb3cuCisgICAgICBJZiB0aGUgdGhyZXNob2xkIGlzIGhpZ2hlciB0aGFu
IHRoYXQgYXZlcmFnZSB3ZSdyZSBub3QgZ29pbmcgdG8KKyAgICAgIHN3aXRjaCwgc28gd2UgY29t
cHV0ZSBhIG1pbiB3aXRoIHRoZSBhdmVyYWdlIGFzIHdlbGwuIFRoZSByZXN1bHQgb2YgYWxsIHRo
ZXNlCisgICAgICBtaW4gb3BlcmF0aW9ucyBpcyBtdXNpY19wcm9iX21pbiwgd2hpY2ggZ2l2ZXMg
dGhlIHRocmVzaG9sZCBmb3Igc3dpdGNoaW5nIHRvIG11c2ljCisgICAgICBpZiB3ZSdyZSBjdXJy
ZW50bHkgZW5jb2RpbmcgZm9yIHNwZWVjaC4KKworICAgICAgV2UgZG8gdGhlIGV4YWN0IG9wcG9z
aXRlIHRvIGNvbXB1dGUgbXVzaWNfcHJvYl9tYXggd2hpY2ggaXMgdXNlZCBmb3Igc3dpdGNoaW5n
CisgICAgICBmcm9tIG11c2ljIHRvIHNwZWVjaC4KKyAgICAqLworICAgcHJvYl9taW4gPSAxLmY7
CisgICBwcm9iX21heCA9IDAuZjsKKyAgIHZhZF9wcm9iID0gdG9uYWwtPmluZm9bdnBvc10uYWN0
aXZpdHlfcHJvYmFiaWxpdHk7CisgICBwcm9iX2NvdW50ID0gTUFYMTYoLjFmLCB2YWRfcHJvYik7
CisgICBwcm9iX2F2ZyA9IE1BWDE2KC4xZiwgdmFkX3Byb2IpKnRvbmFsLT5pbmZvW21wb3NdLm11
c2ljX3Byb2I7CisgICB3aGlsZSAoMSkKKyAgIHsKKyAgICAgIGZsb2F0IHBvc192YWQ7CisgICAg
ICBtcG9zKys7CisgICAgICBpZiAobXBvcz09REVURUNUX1NJWkUpCisgICAgICAgICBtcG9zID0g
MDsKKyAgICAgIGlmIChtcG9zID09IHRvbmFsLT53cml0ZV9wb3MpCisgICAgICAgICBicmVhazsK
KyAgICAgIHZwb3MrKzsKKyAgICAgIGlmICh2cG9zPT1ERVRFQ1RfU0laRSkKKyAgICAgICAgIHZw
b3MgPSAwOworICAgICAgaWYgKHZwb3MgPT0gdG9uYWwtPndyaXRlX3BvcykKKyAgICAgICAgIGJy
ZWFrOworICAgICAgcG9zX3ZhZCA9IHRvbmFsLT5pbmZvW3Zwb3NdLmFjdGl2aXR5X3Byb2JhYmls
aXR5OworICAgICAgcHJvYl9taW4gPSBNSU4xNigocHJvYl9hdmcgLSBUUkFOU0lUSU9OX1BFTkFM
VFkqKHZhZF9wcm9iIC0gcG9zX3ZhZCkpL3Byb2JfY291bnQsIHByb2JfbWluKTsKKyAgICAgIHBy
b2JfbWF4ID0gTUFYMTYoKHByb2JfYXZnICsgVFJBTlNJVElPTl9QRU5BTFRZKih2YWRfcHJvYiAt
IHBvc192YWQpKS9wcm9iX2NvdW50LCBwcm9iX21heCk7CisgICAgICBwcm9iX2NvdW50ICs9IE1B
WDE2KC4xZiwgcG9zX3ZhZCk7CisgICAgICBwcm9iX2F2ZyArPSBNQVgxNiguMWYsIHBvc192YWQp
KnRvbmFsLT5pbmZvW21wb3NdLm11c2ljX3Byb2I7CisgICB9CisgICBpbmZvX291dC0+bXVzaWNf
cHJvYiA9IHByb2JfYXZnL3Byb2JfY291bnQ7CisgICBwcm9iX21pbiA9IE1JTjE2KHByb2JfYXZn
L3Byb2JfY291bnQsIHByb2JfbWluKTsKKyAgIHByb2JfbWF4ID0gTUFYMTYocHJvYl9hdmcvcHJv
Yl9jb3VudCwgcHJvYl9tYXgpOworICAgcHJvYl9taW4gPSBNQVgxNihwcm9iX21pbiwgMC5mKTsK
KyAgIHByb2JfbWF4ID0gTUlOMTYocHJvYl9tYXgsIDEuZik7CisKKyAgIC8qIElmIHdlIGRvbid0
IGhhdmUgZW5vdWdoIGxvb2stYWhlYWQsIGRvIG91ciBiZXN0IHRvIG1ha2UgYSBkZWNlbnQgZGVj
aXNpb24uICovCisgICBpZiAoY3Vycl9sb29rYWhlYWQgPCAxMCkKKyAgIHsKKyAgICAgIGZsb2F0
IHBtaW4sIHBtYXg7CisgICAgICBwbWluID0gcHJvYl9taW47CisgICAgICBwbWF4ID0gcHJvYl9t
YXg7CisgICAgICBwb3MgPSBwb3MwOworICAgICAgLyogTG9vayBmb3IgbWluL21heCBpbiB0aGUg
cGFzdC4gKi8KKyAgICAgIGZvciAoaT0wO2k8SU1JTih0b25hbC0+Y291bnQtMSwgMTUpO2krKykK
KyAgICAgIHsKKyAgICAgICAgIHBvcy0tOworICAgICAgICAgaWYgKHBvcyA8IDApCisgICAgICAg
ICAgICBwb3MgPSBERVRFQ1RfU0laRS0xOworICAgICAgICAgcG1pbiA9IE1JTjE2KHBtaW4sIHRv
bmFsLT5pbmZvW3Bvc10ubXVzaWNfcHJvYik7CisgICAgICAgICBwbWF4ID0gTUFYMTYocG1heCwg
dG9uYWwtPmluZm9bcG9zXS5tdXNpY19wcm9iKTsKKyAgICAgIH0KKyAgICAgIC8qIEJpYXMgYWdh
aW5zdCBzd2l0Y2hpbmcgb24gYWN0aXZlIGF1ZGlvLiAqLworICAgICAgcG1pbiA9IE1BWDE2KDAu
ZiwgcG1pbiAtIC4xZip2YWRfcHJvYik7CisgICAgICBwbWF4ID0gTUlOMTYoMS5mLCBwbWF4ICsg
LjFmKnZhZF9wcm9iKTsKKyAgICAgIHByb2JfbWluICs9ICgxLmYtLjFmKmN1cnJfbG9va2FoZWFk
KSoocG1pbiAtIHByb2JfbWluKTsKKyAgICAgIHByb2JfbWF4ICs9ICgxLmYtLjFmKmN1cnJfbG9v
a2FoZWFkKSoocG1heCAtIHByb2JfbWF4KTsKKyAgIH0KKyAgIGluZm9fb3V0LT5tdXNpY19wcm9i
X21pbiA9IHByb2JfbWluOworICAgaW5mb19vdXQtPm11c2ljX3Byb2JfbWF4ID0gcHJvYl9tYXg7
CiAKLSAgIGluZm9fb3V0LT5tdXNpY19wcm9iID0gcHN1bTsKKyAgIC8qIHByaW50ZigiJWYgJWYg
JWYgJWYgJWZcbiIsIHByb2JfbWluLCBwcm9iX21heCwgcHJvYl9hdmcvcHJvYl9jb3VudCwgdmFk
X3Byb2IsIGluZm9fb3V0LT5tdXNpY19wcm9iKTsgKi8KIH0KIAogc3RhdGljIGNvbnN0IGZsb2F0
IHN0ZF9mZWF0dXJlX2JpYXNbOV0gPSB7CkBAIC0zMTIsNiArNDIzLDI0IEBAIHN0YXRpYyBjb25z
dCBmbG9hdCBzdGRfZmVhdHVyZV9iaWFzWzldID0gewogI2RlZmluZSBTQ0FMRV9FTkVSKGUpIChl
KQogI2VuZGlmCiAKKyNpZmRlZiBGSVhFRF9QT0lOVAorc3RhdGljIGludCBpc19kaWdpdGFsX3Np
bGVuY2UzMihjb25zdCBvcHVzX3ZhbDMyKiBwY20sIGludCBmcmFtZV9zaXplLCBpbnQgY2hhbm5l
bHMsIGludCBsc2JfZGVwdGgpCit7CisgICBpbnQgc2lsZW5jZSA9IDA7CisgICBvcHVzX3ZhbDMy
IHNhbXBsZV9tYXggPSAwOworI2lmZGVmIE1MUF9UUkFJTklORworICAgcmV0dXJuIDA7CisjZW5k
aWYKKyAgIHNhbXBsZV9tYXggPSBjZWx0X21heGFiczMyKHBjbSwgZnJhbWVfc2l6ZSpjaGFubmVs
cyk7CisKKyAgIHNpbGVuY2UgPSAoc2FtcGxlX21heCA9PSAwKTsKKyAgICh2b2lkKWxzYl9kZXB0
aDsKKyAgIHJldHVybiBzaWxlbmNlOworfQorI2Vsc2UKKyNkZWZpbmUgaXNfZGlnaXRhbF9zaWxl
bmNlMzIocGNtLCBmcmFtZV9zaXplLCBjaGFubmVscywgbHNiX2RlcHRoKSBpc19kaWdpdGFsX3Np
bGVuY2UocGNtLCBmcmFtZV9zaXplLCBjaGFubmVscywgbHNiX2RlcHRoKQorI2VuZGlmCisKIHN0
YXRpYyB2b2lkIHRvbmFsaXR5X2FuYWx5c2lzKFRvbmFsaXR5QW5hbHlzaXNTdGF0ZSAqdG9uYWws
IGNvbnN0IENFTFRNb2RlICpjZWx0X21vZGUsIGNvbnN0IHZvaWQgKngsIGludCBsZW4sIGludCBv
ZmZzZXQsIGludCBjMSwgaW50IGMyLCBpbnQgQywgaW50IGxzYl9kZXB0aCwgZG93bm1peF9mdW5j
IGRvd25taXgpCiB7CiAgICAgaW50IGksIGI7CkBAIC0zNDAsNiArNDY5LDcgQEAgc3RhdGljIHZv
aWQgdG9uYWxpdHlfYW5hbHlzaXMoVG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCwgY29uc3Qg
Q0VMVE1vZGUgKmNlbHQKICAgICBmbG9hdCBhbHBoYSwgYWxwaGFFLCBhbHBoYUUyOwogICAgIGZs
b2F0IGZyYW1lX2xvdWRuZXNzOwogICAgIGZsb2F0IGJhbmR3aWR0aF9tYXNrOworICAgIGludCBp
c19tYXNrZWRbTkJfVEJBTkRTKzFdOwogICAgIGludCBiYW5kd2lkdGg9MDsKICAgICBmbG9hdCBt
YXhFID0gMDsKICAgICBmbG9hdCBub2lzZV9mbG9vcjsKQEAgLTM1MiwxMSArNDgyLDIyIEBAIHN0
YXRpYyB2b2lkIHRvbmFsaXR5X2FuYWx5c2lzKFRvbmFsaXR5QW5hbHlzaXNTdGF0ZSAqdG9uYWws
IGNvbnN0IENFTFRNb2RlICpjZWx0CiAgICAgZmxvYXQgYmFuZF9sb2cyW05CX1RCQU5EUysxXTsK
ICAgICBmbG9hdCBsZWFrYWdlX2Zyb21bTkJfVEJBTkRTKzFdOwogICAgIGZsb2F0IGxlYWthZ2Vf
dG9bTkJfVEJBTkRTKzFdOworICAgIGZsb2F0IGxheWVyX291dFtNQVhfTkVVUk9OU107CisgICAg
ZmxvYXQgYmVsb3dfbWF4X3BpdGNoOworICAgIGZsb2F0IGFib3ZlX21heF9waXRjaDsKKyAgICBp
bnQgaXNfc2lsZW5jZTsKICAgICBTQVZFX1NUQUNLOwogCisgICAgaWYgKCF0b25hbC0+aW5pdGlh
bGl6ZWQpCisgICAgeworICAgICAgIHRvbmFsLT5tZW1fZmlsbCA9IDI0MDsKKyAgICAgICB0b25h
bC0+aW5pdGlhbGl6ZWQgPSAxOworICAgIH0KICAgICBhbHBoYSA9IDEuZi9JTUlOKDEwLCAxK3Rv
bmFsLT5jb3VudCk7CiAgICAgYWxwaGFFID0gMS5mL0lNSU4oMjUsIDErdG9uYWwtPmNvdW50KTsK
LSAgICBhbHBoYUUyID0gMS5mL0lNSU4oNTAwLCAxK3RvbmFsLT5jb3VudCk7CisgICAgLyogTm9p
c2UgZmxvb3IgcmVsYXRlZCBkZWNheSBmb3IgYmFuZHdpZHRoIGRldGVjdGlvbjogLTIuMiBkQi9z
ZWNvbmQgKi8KKyAgICBhbHBoYUUyID0gMS5mL0lNSU4oMTAwLCAxK3RvbmFsLT5jb3VudCk7Cisg
ICAgaWYgKHRvbmFsLT5jb3VudCA8PSAxKSBhbHBoYUUyID0gMTsKIAogICAgIGlmICh0b25hbC0+
RnMgPT0gNDgwMDApCiAgICAgewpAQCAtMzY4LDE1ICs1MDksNyBAQCBzdGF0aWMgdm9pZCB0b25h
bGl0eV9hbmFseXNpcyhUb25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsLCBjb25zdCBDRUxUTW9k
ZSAqY2VsdAogICAgICAgIG9mZnNldCA9IDMqb2Zmc2V0LzI7CiAgICAgfQogCi0gICAgaWYgKHRv
bmFsLT5jb3VudDw0KSB7Ci0gICAgICAgaWYgKHRvbmFsLT5hcHBsaWNhdGlvbiA9PSBPUFVTX0FQ
UExJQ0FUSU9OX1ZPSVApCi0gICAgICAgICAgdG9uYWwtPm11c2ljX3Byb2IgPSAuMWY7Ci0gICAg
ICAgZWxzZQotICAgICAgICAgIHRvbmFsLT5tdXNpY19wcm9iID0gLjYyNWY7Ci0gICAgfQogICAg
IGtmZnQgPSBjZWx0X21vZGUtPm1kY3Qua2ZmdFswXTsKLSAgICBpZiAodG9uYWwtPmNvdW50PT0w
KQotICAgICAgIHRvbmFsLT5tZW1fZmlsbCA9IDI0MDsKICAgICB0b25hbC0+aHBfZW5lcl9hY2N1
bSArPSAoZmxvYXQpZG93bm1peF9hbmRfcmVzYW1wbGUoZG93bm1peCwgeCwKICAgICAgICAgICAm
dG9uYWwtPmlubWVtW3RvbmFsLT5tZW1fZmlsbF0sIHRvbmFsLT5kb3dubWl4X3N0YXRlLAogICAg
ICAgICAgIElNSU4obGVuLCBBTkFMWVNJU19CVUZfU0laRS10b25hbC0+bWVtX2ZpbGwpLCBvZmZz
ZXQsIGMxLCBjMiwgQywgdG9uYWwtPkZzKTsKQEAgLTM5Miw2ICs1MjUsOCBAQCBzdGF0aWMgdm9p
ZCB0b25hbGl0eV9hbmFseXNpcyhUb25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsLCBjb25zdCBD
RUxUTW9kZSAqY2VsdAogICAgIGlmICh0b25hbC0+d3JpdGVfcG9zPj1ERVRFQ1RfU0laRSkKICAg
ICAgICB0b25hbC0+d3JpdGVfcG9zLT1ERVRFQ1RfU0laRTsKIAorICAgIGlzX3NpbGVuY2UgPSBp
c19kaWdpdGFsX3NpbGVuY2UzMih0b25hbC0+aW5tZW0sIEFOQUxZU0lTX0JVRl9TSVpFLCAxLCBs
c2JfZGVwdGgpOworCiAgICAgQUxMT0MoaW4sIDQ4MCwga2lzc19mZnRfY3B4KTsKICAgICBBTExP
QyhvdXQsIDQ4MCwga2lzc19mZnRfY3B4KTsKICAgICBBTExPQyh0b25hbGl0eSwgMjQwLCBmbG9h
dCk7CkBAIC00MTAsNiArNTQ1LDE2IEBAIHN0YXRpYyB2b2lkIHRvbmFsaXR5X2FuYWx5c2lzKFRv
bmFsaXR5QW5hbHlzaXNTdGF0ZSAqdG9uYWwsIGNvbnN0IENFTFRNb2RlICpjZWx0CiAgICAgICAg
ICAgJnRvbmFsLT5pbm1lbVsyNDBdLCB0b25hbC0+ZG93bm1peF9zdGF0ZSwgcmVtYWluaW5nLAog
ICAgICAgICAgIG9mZnNldCtBTkFMWVNJU19CVUZfU0laRS10b25hbC0+bWVtX2ZpbGwsIGMxLCBj
MiwgQywgdG9uYWwtPkZzKTsKICAgICB0b25hbC0+bWVtX2ZpbGwgPSAyNDAgKyByZW1haW5pbmc7
CisgICAgaWYgKGlzX3NpbGVuY2UpCisgICAgeworICAgICAgIC8qIE9uIHNpbGVuY2UsIGNvcHkg
dGhlIHByZXZpb3VzIGFuYWx5c2lzLiAqLworICAgICAgIGludCBwcmV2X3BvcyA9IHRvbmFsLT53
cml0ZV9wb3MtMjsKKyAgICAgICBpZiAocHJldl9wb3MgPCAwKQorICAgICAgICAgIHByZXZfcG9z
ICs9IERFVEVDVF9TSVpFOworICAgICAgIE9QVVNfQ09QWShpbmZvLCAmdG9uYWwtPmluZm9bcHJl
dl9wb3NdLCAxKTsKKyAgICAgICBSRVNUT1JFX1NUQUNLOworICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgb3B1c19mZnQoa2ZmdCwgaW4sIG91dCwgdG9uYWwtPmFyY2gpOwogI2lmbmRlZiBGSVhF
RF9QT0lOVAogICAgIC8qIElmIHRoZXJlJ3MgYW55IE5hTiBvbiB0aGUgaW5wdXQsIHRoZSBlbnRp
cmUgb3V0cHV0IHdpbGwgYmUgTmFOLCBzbyB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgb25lIHZhbHVl
LiAqLwpAQCAtNTQ2LDcgKzY5MSw3IEBAIHN0YXRpYyB2b2lkIHRvbmFsaXR5X2FuYWx5c2lzKFRv
bmFsaXR5QW5hbHlzaXNTdGF0ZSAqdG9uYWwsIGNvbnN0IENFTFRNb2RlICpjZWx0CiAgICAgICAg
ICAgdG9uYWwtPmxvd0VbYl0gPSBsb2dFW2JdOwogICAgICAgICAgIHRvbmFsLT5oaWdoRVtiXSA9
IE1JTjMyKHRvbmFsLT5sb3dFW2JdKzE1LCB0b25hbC0+aGlnaEVbYl0pOwogICAgICAgIH0KLSAg
ICAgICByZWxhdGl2ZUUgKz0gKGxvZ0VbYl0tdG9uYWwtPmxvd0VbYl0pLygxZS0xNWYgKyAodG9u
YWwtPmhpZ2hFW2JdLXRvbmFsLT5sb3dFW2JdKSk7CisgICAgICAgcmVsYXRpdmVFICs9IChsb2dF
W2JdLXRvbmFsLT5sb3dFW2JdKS8oMWUtNWYgKyAodG9uYWwtPmhpZ2hFW2JdLXRvbmFsLT5sb3dF
W2JdKSk7CiAKICAgICAgICBMMT1MMj0wOwogICAgICAgIGZvciAoaT0wO2k8TkJfRlJBTUVTO2kr
KykKQEAgLTYzMiw5ICs3NzcsMTIgQEAgc3RhdGljIHZvaWQgdG9uYWxpdHlfYW5hbHlzaXMoVG9u
YWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCwgY29uc3QgQ0VMVE1vZGUgKmNlbHQKICAgICBtYXhF
ID0gMDsKICAgICBub2lzZV9mbG9vciA9IDUuN2UtNGYvKDE8PChJTUFYKDAsbHNiX2RlcHRoLTgp
KSk7CiAgICAgbm9pc2VfZmxvb3IgKj0gbm9pc2VfZmxvb3I7CisgICAgYmVsb3dfbWF4X3BpdGNo
PTA7CisgICAgYWJvdmVfbWF4X3BpdGNoPTA7CiAgICAgZm9yIChiPTA7YjxOQl9UQkFORFM7Yisr
KQogICAgIHsKICAgICAgICBmbG9hdCBFPTA7CisgICAgICAgZmxvYXQgRW07CiAgICAgICAgaW50
IGJhbmRfc3RhcnQsIGJhbmRfZW5kOwogICAgICAgIC8qIEtlZXAgYSBtYXJnaW4gb2YgMzAwIEh6
IGZvciBhbGlhc2luZyAqLwogICAgICAgIGJhbmRfc3RhcnQgPSB0YmFuZHNbYl07CkBAIC02NDcs
NDEgKzc5NSw1OSBAQCBzdGF0aWMgdm9pZCB0b25hbGl0eV9hbmFseXNpcyhUb25hbGl0eUFuYWx5
c2lzU3RhdGUgKnRvbmFsLCBjb25zdCBDRUxUTW9kZSAqY2VsdAogICAgICAgIH0KICAgICAgICBF
ID0gU0NBTEVfRU5FUihFKTsKICAgICAgICBtYXhFID0gTUFYMzIobWF4RSwgRSk7CisgICAgICAg
aWYgKGJhbmRfc3RhcnQgPCA2NCkKKyAgICAgICB7CisgICAgICAgICAgYmVsb3dfbWF4X3BpdGNo
ICs9IEU7CisgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBhYm92ZV9tYXhfcGl0Y2ggKz0gRTsK
KyAgICAgICB9CiAgICAgICAgdG9uYWwtPm1lYW5FW2JdID0gTUFYMzIoKDEtYWxwaGFFMikqdG9u
YWwtPm1lYW5FW2JdLCBFKTsKLSAgICAgICBFID0gTUFYMzIoRSwgdG9uYWwtPm1lYW5FW2JdKTsK
LSAgICAgICAvKiBVc2UgYSBzaW1wbGUgZm9sbG93ZXIgd2l0aCAxMyBkQi9CYXJrIHNsb3BlIGZv
ciBzcHJlYWRpbmcgZnVuY3Rpb24gKi8KLSAgICAgICBiYW5kd2lkdGhfbWFzayA9IE1BWDMyKC4w
NWYqYmFuZHdpZHRoX21hc2ssIEUpOworICAgICAgIEVtID0gTUFYMzIoRSwgdG9uYWwtPm1lYW5F
W2JdKTsKICAgICAgICAvKiBDb25zaWRlciB0aGUgYmFuZCAiYWN0aXZlIiBvbmx5IGlmIGFsbCB0
aGVzZSBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gICAgICAgICAgMSkgbGVzcyB0aGFuIDEwIGRCIGJl
bG93IHRoZSBzaW1wbGUgZm9sbG93ZXIKLSAgICAgICAgICAyKSBsZXNzIHRoYW4gOTAgZEIgYmVs
b3cgdGhlIHBlYWsgYmFuZCAobWF4aW1hbCBtYXNraW5nIHBvc3NpYmxlIGNvbnNpZGVyaW5nCisg
ICAgICAgICAgMSkgbGVzcyB0aGFuIDkwIGRCIGJlbG93IHRoZSBwZWFrIGJhbmQgKG1heGltYWwg
bWFza2luZyBwb3NzaWJsZSBjb25zaWRlcmluZwogICAgICAgICAgICAgIGJvdGggdGhlIEFUSCBh
bmQgdGhlIGxvdWRuZXNzLWRlcGVuZGVudCBzbG9wZSBvZiB0aGUgc3ByZWFkaW5nIGZ1bmN0aW9u
KQotICAgICAgICAgIDMpIGFib3ZlIHRoZSBQQ00gcXVhbnRpemF0aW9uIG5vaXNlIGZsb29yCisg
ICAgICAgICAgMikgYWJvdmUgdGhlIFBDTSBxdWFudGl6YXRpb24gbm9pc2UgZmxvb3IKICAgICAg
ICAgICBXZSB1c2UgYisxIGJlY2F1c2UgdGhlIGZpcnN0IENFTFQgYmFuZCBpc24ndCBpbmNsdWRl
ZCBpbiB0YmFuZHNbXQogICAgICAgICovCi0gICAgICAgaWYgKEU+LjEqYmFuZHdpZHRoX21hc2sg
JiYgRSoxZTlmID4gbWF4RSAmJiBFID4gbm9pc2VfZmxvb3IqKGJhbmRfZW5kLWJhbmRfc3RhcnQp
KQorICAgICAgIGlmIChFKjFlOWYgPiBtYXhFICYmIChFbSA+IDMqbm9pc2VfZmxvb3IqKGJhbmRf
ZW5kLWJhbmRfc3RhcnQpIHx8IEUgPiBub2lzZV9mbG9vciooYmFuZF9lbmQtYmFuZF9zdGFydCkp
KQogICAgICAgICAgIGJhbmR3aWR0aCA9IGIrMTsKKyAgICAgICAvKiBDaGVjayBpZiB0aGUgYmFu
ZCBpcyBtYXNrZWQgKHNlZSBiZWxvdykuICovCisgICAgICAgaXNfbWFza2VkW2JdID0gRSA8ICh0
b25hbC0+cHJldl9iYW5kd2lkdGggPj0gYisxICA/IC4wMWYgOiAuMDVmKSpiYW5kd2lkdGhfbWFz
azsKKyAgICAgICAvKiBVc2UgYSBzaW1wbGUgZm9sbG93ZXIgd2l0aCAxMyBkQi9CYXJrIHNsb3Bl
IGZvciBzcHJlYWRpbmcgZnVuY3Rpb24uICovCisgICAgICAgYmFuZHdpZHRoX21hc2sgPSBNQVgz
MiguMDVmKmJhbmR3aWR0aF9tYXNrLCBFKTsKICAgICB9CiAgICAgLyogU3BlY2lhbCBjYXNlIGZv
ciB0aGUgbGFzdCB0d28gYmFuZHMsIGZvciB3aGljaCB3ZSBkb24ndCBoYXZlIHNwZWN0cnVtIGJ1
dCBvbmx5Ci0gICAgICAgdGhlIGVuZXJneSBhYm92ZSAxMiBrSHouICovCisgICAgICAgdGhlIGVu
ZXJneSBhYm92ZSAxMiBrSHouIFRoZSBkaWZmaWN1bHR5IGhlcmUgaXMgdGhhdCB0aGUgaGlnaC1w
YXNzIHdlIHVzZQorICAgICAgIGxlYWtzIHNvbWUgTEYgZW5lcmd5LCBzbyB3ZSBuZWVkIHRvIGlu
Y3JlYXNlIHRoZSB0aHJlc2hvbGQgd2l0aG91dCBhY2NpZGVudGFsbHkgY3V0dGluZworICAgICAg
IG9mZiB0aGUgYmFuZC4gKi8KICAgICBpZiAodG9uYWwtPkZzID09IDQ4MDAwKSB7Ci0gICAgICAg
ZmxvYXQgcmF0aW87Ci0gICAgICAgZmxvYXQgRSA9IGhwX2VuZXIqKDEuZi8oMjQwKjI0MCkpOwot
ICAgICAgIHJhdGlvID0gdG9uYWwtPnByZXZfYmFuZHdpZHRoPT0yMCA/IDAuMDNmIDogMC4wN2Y7
CisgICAgICAgZmxvYXQgbm9pc2VfcmF0aW87CisgICAgICAgZmxvYXQgRW07CisgICAgICAgZmxv
YXQgRSA9IGhwX2VuZXIqKDEuZi8oNjAqNjApKTsKKyAgICAgICBub2lzZV9yYXRpbyA9IHRvbmFs
LT5wcmV2X2JhbmR3aWR0aD09MjAgPyAxMC5mIDogMzAuZjsKKwogI2lmZGVmIEZJWEVEX1BPSU5U
CiAgICAgICAgLyogc2lsa19yZXNhbXBsZXJfZG93bjJfaHAoKSBzaGlmdGVkIHJpZ2h0IGJ5IGFu
IGV4dHJhIDggYml0cy4gKi8KICAgICAgICBFICo9IDI1Ni5mKigxLmYvUTE1T05FKSooMS5mL1Ex
NU9ORSk7CiAjZW5kaWYKLSAgICAgICBtYXhFID0gTUFYMzIobWF4RSwgRSk7CisgICAgICAgYWJv
dmVfbWF4X3BpdGNoICs9IEU7CiAgICAgICAgdG9uYWwtPm1lYW5FW2JdID0gTUFYMzIoKDEtYWxw
aGFFMikqdG9uYWwtPm1lYW5FW2JdLCBFKTsKLSAgICAgICBFID0gTUFYMzIoRSwgdG9uYWwtPm1l
YW5FW2JdKTsKLSAgICAgICAvKiBVc2UgYSBzaW1wbGUgZm9sbG93ZXIgd2l0aCAxMyBkQi9CYXJr
IHNsb3BlIGZvciBzcHJlYWRpbmcgZnVuY3Rpb24gKi8KLSAgICAgICBiYW5kd2lkdGhfbWFzayA9
IE1BWDMyKC4wNWYqYmFuZHdpZHRoX21hc2ssIEUpOwotICAgICAgIGlmIChFPnJhdGlvKmJhbmR3
aWR0aF9tYXNrICYmIEUqMWU5ZiA+IG1heEUgJiYgRSA+IG5vaXNlX2Zsb29yKjE2MCkKLSAgICAg
ICAgICBiYW5kd2lkdGggPSAyMDsKLSAgICAgICAvKiBUaGlzIGRldGVjdG9yIGlzIHVucmVsaWFi
bGUsIHNvIGlmIHRoZSBiYW5kd2lkdGggaXMgY2xvc2UgdG8gU1dCLCBhc3N1bWUgaXQncyBGQi4g
Ki8KLSAgICAgICBpZiAoYmFuZHdpZHRoID49IDE3KQorICAgICAgIEVtID0gTUFYMzIoRSwgdG9u
YWwtPm1lYW5FW2JdKTsKKyAgICAgICBpZiAoRW0gPiAzKm5vaXNlX3JhdGlvKm5vaXNlX2Zsb29y
KjE2MCB8fCBFID4gbm9pc2VfcmF0aW8qbm9pc2VfZmxvb3IqMTYwKQogICAgICAgICAgIGJhbmR3
aWR0aCA9IDIwOworICAgICAgIC8qIENoZWNrIGlmIHRoZSBiYW5kIGlzIG1hc2tlZCAoc2VlIGJl
bG93KS4gKi8KKyAgICAgICBpc19tYXNrZWRbYl0gPSBFIDwgKHRvbmFsLT5wcmV2X2JhbmR3aWR0
aCA9PSAyMCAgPyAuMDFmIDogLjA1ZikqYmFuZHdpZHRoX21hc2s7CiAgICAgfQorICAgIGlmIChh
Ym92ZV9tYXhfcGl0Y2ggPiBiZWxvd19tYXhfcGl0Y2gpCisgICAgICAgaW5mby0+bWF4X3BpdGNo
X3JhdGlvID0gYmVsb3dfbWF4X3BpdGNoL2Fib3ZlX21heF9waXRjaDsKKyAgICBlbHNlCisgICAg
ICAgaW5mby0+bWF4X3BpdGNoX3JhdGlvID0gMTsKKyAgICAvKiBJbiBzb21lIGNhc2VzLCByZXNh
bXBsaW5nIGFsaWFzaW5nIGNhbiBjcmVhdGUgYSBzbWFsbCBhbW91bnQgb2YgZW5lcmd5IGluIHRo
ZSBmaXJzdCBiYW5kCisgICAgICAgYmVpbmcgY3V0LiBTbyBpZiB0aGUgbGFzdCBiYW5kIGlzIG1h
c2tlZCwgd2UgZG9uJ3QgaW5jbHVkZSBpdC4gICovCisgICAgaWYgKGJhbmR3aWR0aCA9PSAyMCAm
JiBpc19tYXNrZWRbTkJfVEJBTkRTXSkKKyAgICAgICBiYW5kd2lkdGgtPTI7CisgICAgZWxzZSBp
ZiAoYmFuZHdpZHRoID4gMCAmJiBiYW5kd2lkdGggPD0gTkJfVEJBTkRTICYmIGlzX21hc2tlZFti
YW5kd2lkdGgtMV0pCisgICAgICAgYmFuZHdpZHRoLS07CiAgICAgaWYgKHRvbmFsLT5jb3VudDw9
MikKICAgICAgICBiYW5kd2lkdGggPSAyMDsKICAgICBmcmFtZV9sb3VkbmVzcyA9IDIwKihmbG9h
dClsb2cxMChmcmFtZV9sb3VkbmVzcyk7CkBAIC03NjEsMTM5ICs5MjcsMTUgQEAgc3RhdGljIHZv
aWQgdG9uYWxpdHlfYW5hbHlzaXMoVG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCwgY29uc3Qg
Q0VMVE1vZGUgKmNlbHQKICAgICBmZWF0dXJlc1syM10gPSBpbmZvLT50b25hbGl0eV9zbG9wZSAr
IDAuMDY5MjE2ZjsKICAgICBmZWF0dXJlc1syNF0gPSB0b25hbC0+bG93RUNvdW50IC0gMC4wNjc5
MzBmOwogCi0gICAgbWxwX3Byb2Nlc3MoJm5ldCwgZmVhdHVyZXMsIGZyYW1lX3Byb2JzKTsKLSAg
ICBmcmFtZV9wcm9ic1swXSA9IC41ZiooZnJhbWVfcHJvYnNbMF0rMSk7Ci0gICAgLyogQ3VydmUg
Zml0dGluZyBiZXR3ZWVuIHRoZSBNTFAgcHJvYmFiaWxpdHkgYW5kIHRoZSBhY3R1YWwgcHJvYmFi
aWxpdHkgKi8KLSAgICAvKmZyYW1lX3Byb2JzWzBdID0gLjAxZiArIDEuMjFmKmZyYW1lX3Byb2Jz
WzBdKmZyYW1lX3Byb2JzWzBdIC0gLjIzZiooZmxvYXQpcG93KGZyYW1lX3Byb2JzWzBdLCAxMCk7
Ki8KLSAgICAvKiBQcm9iYWJpbGl0eSBvZiBhY3RpdmUgYXVkaW8gKGFzIG9wcG9zZWQgdG8gc2ls
ZW5jZSkgKi8KLSAgICBmcmFtZV9wcm9ic1sxXSA9IC41ZipmcmFtZV9wcm9ic1sxXSsuNWY7Ci0g
ICAgZnJhbWVfcHJvYnNbMV0gKj0gZnJhbWVfcHJvYnNbMV07CisgICAgY29tcHV0ZV9kZW5zZSgm
bGF5ZXIwLCBsYXllcl9vdXQsIGZlYXR1cmVzKTsKKyAgICBjb21wdXRlX2dydSgmbGF5ZXIxLCB0
b25hbC0+cm5uX3N0YXRlLCBsYXllcl9vdXQpOworICAgIGNvbXB1dGVfZGVuc2UoJmxheWVyMiwg
ZnJhbWVfcHJvYnMsIHRvbmFsLT5ybm5fc3RhdGUpOwogCiAgICAgLyogUHJvYmFiaWxpdHkgb2Yg
c3BlZWNoIG9yIG11c2ljIHZzIG5vaXNlICovCiAgICAgaW5mby0+YWN0aXZpdHlfcHJvYmFiaWxp
dHkgPSBmcmFtZV9wcm9ic1sxXTsKKyAgICBpbmZvLT5tdXNpY19wcm9iID0gZnJhbWVfcHJvYnNb
MF07CiAKLSAgICAvKnByaW50ZigiJWYgJWZcbiIsIGZyYW1lX3Byb2JzWzBdLCBmcmFtZV9wcm9i
c1sxXSk7Ki8KLSAgICB7Ci0gICAgICAgLyogUHJvYmFiaWxpdHkgb2Ygc3RhdGUgdHJhbnNpdGlv
biAqLwotICAgICAgIGZsb2F0IHRhdTsKLSAgICAgICAvKiBSZXByZXNlbnRzIGluZGVwZW5kZW5j
ZSBvZiB0aGUgTUxQIHByb2JhYmlsaXRpZXMsIHdoZXJlCi0gICAgICAgICAgYmV0YT0xIG1lYW5z
IGZ1bGx5IGluZGVwZW5kZW50LiAqLwotICAgICAgIGZsb2F0IGJldGE7Ci0gICAgICAgLyogRGVu
b3JtYWxpemVkIHByb2JhYmlsaXR5IG9mIHNwZWVjaCAocDApIGFuZCBtdXNpYyAocDEpIGFmdGVy
IHVwZGF0ZSAqLwotICAgICAgIGZsb2F0IHAwLCBwMTsKLSAgICAgICAvKiBQcm9iYWJpbGl0aWVz
IGZvciAiYWxsIHNwZWVjaCIgYW5kICJhbGwgbXVzaWMiICovCi0gICAgICAgZmxvYXQgczAsIG0w
OwotICAgICAgIC8qIFByb2JhYmlsaXR5IHN1bSBmb3IgcmVub3JtYWxpc2F0aW9uICovCi0gICAg
ICAgZmxvYXQgcHN1bTsKLSAgICAgICAvKiBJbnN0YW50YW5lb3VzIHByb2JhYmlsaXR5IG9mIHNw
ZWVjaCBhbmQgbXVzaWMsIHdpdGggYmV0YSBwcmUtYXBwbGllZC4gKi8KLSAgICAgICBmbG9hdCBz
cGVlY2gwOwotICAgICAgIGZsb2F0IG11c2ljMDsKLSAgICAgICBmbG9hdCBwLCBxOwotCi0gICAg
ICAgLyogTW9yZSBzaWxlbmNlIHRyYW5zaXRpb25zIGZvciBzcGVlY2ggdGhhbiBmb3IgbXVzaWMu
ICovCi0gICAgICAgdGF1ID0gLjAwMWYqdG9uYWwtPm11c2ljX3Byb2IgKyAuMDFmKigxLXRvbmFs
LT5tdXNpY19wcm9iKTsKLSAgICAgICBwID0gTUFYMTYoLjA1ZixNSU4xNiguOTVmLGZyYW1lX3By
b2JzWzFdKSk7Ci0gICAgICAgcSA9IE1BWDE2KC4wNWYsTUlOMTYoLjk1Zix0b25hbC0+dmFkX3By
b2IpKTsKLSAgICAgICBiZXRhID0gLjAyZisuMDVmKkFCUzE2KHAtcSkvKHAqKDEtcSkrcSooMS1w
KSk7Ci0gICAgICAgLyogcDAgYW5kIHAxIGFyZSB0aGUgcHJvYmFiaWxpdGllcyBvZiBzcGVlY2gg
YW5kIG11c2ljIGF0IHRoaXMgZnJhbWUKLSAgICAgICAgICB1c2luZyBvbmx5IGluZm9ybWF0aW9u
IGZyb20gcHJldmlvdXMgZnJhbWUgYW5kIGFwcGx5aW5nIHRoZQotICAgICAgICAgIHN0YXRlIHRy
YW5zaXRpb24gbW9kZWwgKi8KLSAgICAgICBwMCA9ICgxLXRvbmFsLT52YWRfcHJvYikqKDEtdGF1
KSArICAgIHRvbmFsLT52YWRfcHJvYiAqdGF1OwotICAgICAgIHAxID0gICAgdG9uYWwtPnZhZF9w
cm9iICooMS10YXUpICsgKDEtdG9uYWwtPnZhZF9wcm9iKSp0YXU7Ci0gICAgICAgLyogV2UgYXBw
bHkgdGhlIGN1cnJlbnQgcHJvYmFiaWxpdHkgd2l0aCBleHBvbmVudCBiZXRhIHRvIHdvcmsgYXJv
dW5kCi0gICAgICAgICAgdGhlIGZhY3QgdGhhdCB0aGUgcHJvYmFiaWxpdHkgZXN0aW1hdGVzIGFy
ZW4ndCBpbmRlcGVuZGVudC4gKi8KLSAgICAgICBwMCAqPSAoZmxvYXQpcG93KDEtZnJhbWVfcHJv
YnNbMV0sIGJldGEpOwotICAgICAgIHAxICo9IChmbG9hdClwb3coZnJhbWVfcHJvYnNbMV0sIGJl
dGEpOwotICAgICAgIC8qIE5vcm1hbGlzZSB0aGUgcHJvYmFiaWxpdGllcyB0byBnZXQgdGhlIE1h
cm9rdiBwcm9iYWJpbGl0eSBvZiBtdXNpYy4gKi8KLSAgICAgICB0b25hbC0+dmFkX3Byb2IgPSBw
MS8ocDArcDEpOwotICAgICAgIGluZm8tPnZhZF9wcm9iID0gdG9uYWwtPnZhZF9wcm9iOwotICAg
ICAgIC8qIENvbnNpZGVyIHRoYXQgc2lsZW5jZSBoYXMgYSA1MC01MCBwcm9iYWJpbGl0eSBvZiBi
ZWluZyBzcGVlY2ggb3IgbXVzaWMuICovCi0gICAgICAgZnJhbWVfcHJvYnNbMF0gPSB0b25hbC0+
dmFkX3Byb2IqZnJhbWVfcHJvYnNbMF0gKyAoMS10b25hbC0+dmFkX3Byb2IpKi41ZjsKLQotICAg
ICAgIC8qIE9uZSB0cmFuc2l0aW9uIGV2ZXJ5IDMgbWludXRlcyBvZiBhY3RpdmUgYXVkaW8gKi8K
LSAgICAgICB0YXUgPSAuMDAwMWY7Ci0gICAgICAgLyogQWRhcHQgYmV0YSBiYXNlZCBvbiBob3cg
InVuZXhwZWN0ZWQiIHRoZSBuZXcgcHJvYiBpcyAqLwotICAgICAgIHAgPSBNQVgxNiguMDVmLE1J
TjE2KC45NWYsZnJhbWVfcHJvYnNbMF0pKTsKLSAgICAgICBxID0gTUFYMTYoLjA1ZixNSU4xNigu
OTVmLHRvbmFsLT5tdXNpY19wcm9iKSk7Ci0gICAgICAgYmV0YSA9IC4wMmYrLjA1ZipBQlMxNihw
LXEpLyhwKigxLXEpK3EqKDEtcCkpOwotICAgICAgIC8qIHAwIGFuZCBwMSBhcmUgdGhlIHByb2Jh
YmlsaXRpZXMgb2Ygc3BlZWNoIGFuZCBtdXNpYyBhdCB0aGlzIGZyYW1lCi0gICAgICAgICAgdXNp
bmcgb25seSBpbmZvcm1hdGlvbiBmcm9tIHByZXZpb3VzIGZyYW1lIGFuZCBhcHBseWluZyB0aGUK
LSAgICAgICAgICBzdGF0ZSB0cmFuc2l0aW9uIG1vZGVsICovCi0gICAgICAgcDAgPSAoMS10b25h
bC0+bXVzaWNfcHJvYikqKDEtdGF1KSArICAgIHRvbmFsLT5tdXNpY19wcm9iICp0YXU7Ci0gICAg
ICAgcDEgPSAgICB0b25hbC0+bXVzaWNfcHJvYiAqKDEtdGF1KSArICgxLXRvbmFsLT5tdXNpY19w
cm9iKSp0YXU7Ci0gICAgICAgLyogV2UgYXBwbHkgdGhlIGN1cnJlbnQgcHJvYmFiaWxpdHkgd2l0
aCBleHBvbmVudCBiZXRhIHRvIHdvcmsgYXJvdW5kCi0gICAgICAgICAgdGhlIGZhY3QgdGhhdCB0
aGUgcHJvYmFiaWxpdHkgZXN0aW1hdGVzIGFyZW4ndCBpbmRlcGVuZGVudC4gKi8KLSAgICAgICBw
MCAqPSAoZmxvYXQpcG93KDEtZnJhbWVfcHJvYnNbMF0sIGJldGEpOwotICAgICAgIHAxICo9IChm
bG9hdClwb3coZnJhbWVfcHJvYnNbMF0sIGJldGEpOwotICAgICAgIC8qIE5vcm1hbGlzZSB0aGUg
cHJvYmFiaWxpdGllcyB0byBnZXQgdGhlIE1hcm9rdiBwcm9iYWJpbGl0eSBvZiBtdXNpYy4gKi8K
LSAgICAgICB0b25hbC0+bXVzaWNfcHJvYiA9IHAxLyhwMCtwMSk7Ci0gICAgICAgaW5mby0+bXVz
aWNfcHJvYiA9IHRvbmFsLT5tdXNpY19wcm9iOwotCi0gICAgICAgLypwcmludGYoIiVmICVmICVm
ICVmXG4iLCBmcmFtZV9wcm9ic1swXSwgZnJhbWVfcHJvYnNbMV0sIHRvbmFsLT5tdXNpY19wcm9i
LCB0b25hbC0+dmFkX3Byb2IpOyovCi0gICAgICAgLyogVGhpcyBjaHVuayBvZiBjb2RlIGRlYWxz
IHdpdGggZGVsYXllZCBkZWNpc2lvbi4gKi8KLSAgICAgICBwc3VtPTFlLTIwZjsKLSAgICAgICAv
KiBJbnN0YW50YW5lb3VzIHByb2JhYmlsaXR5IG9mIHNwZWVjaCBhbmQgbXVzaWMsIHdpdGggYmV0
YSBwcmUtYXBwbGllZC4gKi8KLSAgICAgICBzcGVlY2gwID0gKGZsb2F0KXBvdygxLWZyYW1lX3By
b2JzWzBdLCBiZXRhKTsKLSAgICAgICBtdXNpYzAgID0gKGZsb2F0KXBvdyhmcmFtZV9wcm9ic1sw
XSwgYmV0YSk7Ci0gICAgICAgaWYgKHRvbmFsLT5jb3VudD09MSkKLSAgICAgICB7Ci0gICAgICAg
ICAgaWYgKHRvbmFsLT5hcHBsaWNhdGlvbiA9PSBPUFVTX0FQUExJQ0FUSU9OX1ZPSVApCi0gICAg
ICAgICAgICAgdG9uYWwtPnBtdXNpY1swXSA9IC4xZjsKLSAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgdG9uYWwtPnBtdXNpY1swXSA9IC42MjVmOwotICAgICAgICAgIHRvbmFsLT5wc3BlZWNo
WzBdID0gMS10b25hbC0+cG11c2ljWzBdOwotICAgICAgIH0KLSAgICAgICAvKiBVcGRhdGVkIHBy
b2JhYmlsaXR5IG9mIGhhdmluZyBvbmx5IHNwZWVjaCAoczApIG9yIG9ubHkgbXVzaWMgKG0wKSwK
LSAgICAgICAgICBiZWZvcmUgY29uc2lkZXJpbmcgdGhlIG5ldyBvYnNlcnZhdGlvbi4gKi8KLSAg
ICAgICBzMCA9IHRvbmFsLT5wc3BlZWNoWzBdICsgdG9uYWwtPnBzcGVlY2hbMV07Ci0gICAgICAg
bTAgPSB0b25hbC0+cG11c2ljIFswXSArIHRvbmFsLT5wbXVzaWMgWzFdOwotICAgICAgIC8qIFVw
ZGF0ZXMgczAgYW5kIG0wIHdpdGggaW5zdGFudGFuZW91cyBwcm9iYWJpbGl0eS4gKi8KLSAgICAg
ICB0b25hbC0+cHNwZWVjaFswXSA9IHMwKigxLXRhdSkqc3BlZWNoMDsKLSAgICAgICB0b25hbC0+
cG11c2ljIFswXSA9IG0wKigxLXRhdSkqbXVzaWMwOwotICAgICAgIC8qIFByb3BhZ2F0ZSB0aGUg
dHJhbnNpdGlvbiBwcm9iYWJpbGl0aWVzICovCi0gICAgICAgZm9yIChpPTE7aTxERVRFQ1RfU0la
RS0xO2krKykKLSAgICAgICB7Ci0gICAgICAgICAgdG9uYWwtPnBzcGVlY2hbaV0gPSB0b25hbC0+
cHNwZWVjaFtpKzFdKnNwZWVjaDA7Ci0gICAgICAgICAgdG9uYWwtPnBtdXNpYyBbaV0gPSB0b25h
bC0+cG11c2ljIFtpKzFdKm11c2ljMDsKLSAgICAgICB9Ci0gICAgICAgLyogUHJvYmFiaWxpdHkg
dGhhdCB0aGUgbGF0ZXN0IGZyYW1lIGlzIHNwZWVjaCwgd2hlbiBhbGwgdGhlIHByZXZpb3VzIG9u
ZXMgd2VyZSBtdXNpYy4gKi8KLSAgICAgICB0b25hbC0+cHNwZWVjaFtERVRFQ1RfU0laRS0xXSA9
IG0wKnRhdSpzcGVlY2gwOwotICAgICAgIC8qIFByb2JhYmlsaXR5IHRoYXQgdGhlIGxhdGVzdCBm
cmFtZSBpcyBtdXNpYywgd2hlbiBhbGwgdGhlIHByZXZpb3VzIG9uZXMgd2VyZSBzcGVlY2guICov
Ci0gICAgICAgdG9uYWwtPnBtdXNpYyBbREVURUNUX1NJWkUtMV0gPSBzMCp0YXUqbXVzaWMwOwot
Ci0gICAgICAgLyogUmVub3JtYWxpc2UgcHJvYmFiaWxpdGllcyB0byAxICovCi0gICAgICAgZm9y
IChpPTA7aTxERVRFQ1RfU0laRTtpKyspCi0gICAgICAgICAgcHN1bSArPSB0b25hbC0+cHNwZWVj
aFtpXSArIHRvbmFsLT5wbXVzaWNbaV07Ci0gICAgICAgcHN1bSA9IDEuZi9wc3VtOwotICAgICAg
IGZvciAoaT0wO2k8REVURUNUX1NJWkU7aSsrKQotICAgICAgIHsKLSAgICAgICAgICB0b25hbC0+
cHNwZWVjaFtpXSAqPSBwc3VtOwotICAgICAgICAgIHRvbmFsLT5wbXVzaWMgW2ldICo9IHBzdW07
Ci0gICAgICAgfQotICAgICAgIHBzdW0gPSB0b25hbC0+cG11c2ljWzBdOwotICAgICAgIGZvciAo
aT0xO2k8REVURUNUX1NJWkU7aSsrKQotICAgICAgICAgIHBzdW0gKz0gdG9uYWwtPnBzcGVlY2hb
aV07Ci0KLSAgICAgICAvKiBFc3RpbWF0ZSBvdXIgY29uZmlkZW5jZSBpbiB0aGUgc3BlZWNoL211
c2ljIGRlY2lzaW9ucyAqLwotICAgICAgIGlmIChmcmFtZV9wcm9ic1sxXT4uNzUpCi0gICAgICAg
ewotICAgICAgICAgIGlmICh0b25hbC0+bXVzaWNfcHJvYj4uOSkKLSAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgZmxvYXQgYWRhcHQ7Ci0gICAgICAgICAgICAgYWRhcHQgPSAxLmYvKCsrdG9uYWwt
Pm11c2ljX2NvbmZpZGVuY2VfY291bnQpOwotICAgICAgICAgICAgIHRvbmFsLT5tdXNpY19jb25m
aWRlbmNlX2NvdW50ID0gSU1JTih0b25hbC0+bXVzaWNfY29uZmlkZW5jZV9jb3VudCwgNTAwKTsK
LSAgICAgICAgICAgICB0b25hbC0+bXVzaWNfY29uZmlkZW5jZSArPSBhZGFwdCpNQVgxNigtLjJm
LGZyYW1lX3Byb2JzWzBdLXRvbmFsLT5tdXNpY19jb25maWRlbmNlKTsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgaWYgKHRvbmFsLT5tdXNpY19wcm9iPC4xKQotICAgICAgICAgIHsKLSAgICAgICAg
ICAgICBmbG9hdCBhZGFwdDsKLSAgICAgICAgICAgICBhZGFwdCA9IDEuZi8oKyt0b25hbC0+c3Bl
ZWNoX2NvbmZpZGVuY2VfY291bnQpOwotICAgICAgICAgICAgIHRvbmFsLT5zcGVlY2hfY29uZmlk
ZW5jZV9jb3VudCA9IElNSU4odG9uYWwtPnNwZWVjaF9jb25maWRlbmNlX2NvdW50LCA1MDApOwot
ICAgICAgICAgICAgIHRvbmFsLT5zcGVlY2hfY29uZmlkZW5jZSArPSBhZGFwdCpNSU4xNiguMmYs
ZnJhbWVfcHJvYnNbMF0tdG9uYWwtPnNwZWVjaF9jb25maWRlbmNlKTsKLSAgICAgICAgICB9Ci0g
ICAgICAgfQotICAgIH0KLSAgICB0b25hbC0+bGFzdF9tdXNpYyA9IHRvbmFsLT5tdXNpY19wcm9i
Pi41ZjsKKyAgICAvKnByaW50ZigiJWYgJWYgJWZcbiIsIGZyYW1lX3Byb2JzWzBdLCBmcmFtZV9w
cm9ic1sxXSwgaW5mby0+bXVzaWNfcHJvYik7Ki8KICNpZmRlZiBNTFBfVFJBSU5JTkcKICAgICBm
b3IgKGk9MDtpPDI1O2krKykKICAgICAgICBwcmludGYoIiVmICIsIGZlYXR1cmVzW2ldKTsKQEAg
LTkzMyw3ICs5NzUsNiBAQCB2b2lkIHJ1bl9hbmFseXNpcyhUb25hbGl0eUFuYWx5c2lzU3RhdGUg
KmFuYWx5c2lzLCBjb25zdCBDRUxUTW9kZSAqY2VsdF9tb2RlLCBjbwogICAgICAgYW5hbHlzaXMt
PmFuYWx5c2lzX29mZnNldCAtPSBmcmFtZV9zaXplOwogICAgfQogCi0gICBhbmFseXNpc19pbmZv
LT52YWxpZCA9IDA7CiAgICB0b25hbGl0eV9nZXRfaW5mbyhhbmFseXNpcywgYW5hbHlzaXNfaW5m
bywgZnJhbWVfc2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL2FuYWx5c2lzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9hbmFs
eXNpcy5oCmluZGV4IGNhYzUxZGZhNGViNTVkOGQxYWJiYjBkZWU5ZjA3MDQ2MzU0MmRmMWQuLjBi
NjY1NTVmMjE1M2JjMDM2YWFmYTgwYzlkNDUzZDMwMWU4NzkzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL2Fu
YWx5c2lzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zcmMvYW5hbHlzaXMuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiY2VsdC5oIgogI2luY2x1ZGUgIm9wdXNfcHJpdmF0ZS5oIgorI2luY2x1ZGUgIm1scC5oIgog
CiAjZGVmaW5lIE5CX0ZSQU1FUyA4CiAjZGVmaW5lIE5CX1RCQU5EUyAxOApAQCAtNjQsMjggKzY1
LDE3IEBAIHR5cGVkZWYgc3RydWN0IHsKICAgIGZsb2F0IG1lbVszMl07CiAgICBmbG9hdCBjbWVh
bls4XTsKICAgIGZsb2F0IHN0ZFs5XTsKLSAgIGZsb2F0IG11c2ljX3Byb2I7Ci0gICBmbG9hdCB2
YWRfcHJvYjsKICAgIGZsb2F0IEV0cmFja2VyOwogICAgZmxvYXQgbG93RUNvdW50OwogICAgaW50
IEVfY291bnQ7Ci0gICBpbnQgbGFzdF9tdXNpYzsKICAgIGludCBjb3VudDsKICAgIGludCBhbmFs
eXNpc19vZmZzZXQ7Ci0gICAvKiogUHJvYmFiaWxpdHkgb2YgaGF2aW5nIHNwZWVjaCBmb3IgdGlt
ZSBpIHRvIERFVEVDVF9TSVpFLTEgKGFuZCBtdXNpYyBiZWZvcmUpLgotICAgICAgIHBzcGVlY2hb
MF0gaXMgdGhlIHByb2JhYmlsaXR5IHRoYXQgYWxsIGZyYW1lcyBpbiB0aGUgd2luZG93IGFyZSBz
cGVlY2guICovCi0gICBmbG9hdCBwc3BlZWNoW0RFVEVDVF9TSVpFXTsKLSAgIC8qKiBQcm9iYWJp
bGl0eSBvZiBoYXZpbmcgbXVzaWMgZm9yIHRpbWUgaSB0byBERVRFQ1RfU0laRS0xIChhbmQgc3Bl
ZWNoIGJlZm9yZSkuCi0gICAgICAgcG11c2ljWzBdIGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGFs
bCBmcmFtZXMgaW4gdGhlIHdpbmRvdyBhcmUgbXVzaWMuICovCi0gICBmbG9hdCBwbXVzaWNbREVU
RUNUX1NJWkVdOwotICAgZmxvYXQgc3BlZWNoX2NvbmZpZGVuY2U7Ci0gICBmbG9hdCBtdXNpY19j
b25maWRlbmNlOwotICAgaW50IHNwZWVjaF9jb25maWRlbmNlX2NvdW50OwotICAgaW50IG11c2lj
X2NvbmZpZGVuY2VfY291bnQ7CiAgICBpbnQgd3JpdGVfcG9zOwogICAgaW50IHJlYWRfcG9zOwog
ICAgaW50IHJlYWRfc3ViZnJhbWU7CiAgICBmbG9hdCBocF9lbmVyX2FjY3VtOworICAgaW50IGlu
aXRpYWxpemVkOworICAgZmxvYXQgcm5uX3N0YXRlW01BWF9ORVVST05TXTsKICAgIG9wdXNfdmFs
MzIgZG93bm1peF9zdGF0ZVszXTsKICAgIEFuYWx5c2lzSW5mbyBpbmZvW0RFVEVDVF9TSVpFXTsK
IH0gVG9uYWxpdHlBbmFseXNpc1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWFwcGluZ19tYXRyaXgu
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc3JjL21hcHBpbmdfbWF0cml4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyOThhZjA1NzU1NzE1Zjg2YTEy
ODY1Mjc1YjEzZWI4OTMzMDhkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21hcHBpbmdfbWF0cml4
LmMKQEAgLTAsMCArMSwzNzggQEAKKy8qIENvcHlyaWdodCAoYykgMjAxNyBHb29nbGUgSW5jLgor
ICAgV3JpdHRlbiBieSBBbmRyZXcgQWxsZW4gKi8KKy8qCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICAgYXJlIG1ldDoKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgor
ICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZkZWYgSEFWRV9D
T05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJhcmNoLmgi
CisjaW5jbHVkZSAiZmxvYXRfY2FzdC5oIgorI2luY2x1ZGUgIm9wdXNfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIm9wdXNfZGVmaW5lcy5oIgorI2luY2x1ZGUgIm1hcHBpbmdfbWF0cml4LmgiCisKKyNk
ZWZpbmUgTUFUUklYX0lOREVYKG5iX3Jvd3MsIHJvdywgY29sKSAobmJfcm93cyAqIGNvbCArIHJv
dykKKworb3B1c19pbnQzMiBtYXBwaW5nX21hdHJpeF9nZXRfc2l6ZShpbnQgcm93cywgaW50IGNv
bHMpCit7CisgIG9wdXNfaW50MzIgc2l6ZTsKKworICAvKiBNYXBwaW5nIE1hdHJpeCBtdXN0IG9u
bHkgc3VwcG9ydCB1cCB0byAyNTUgY2hhbm5lbHMgaW4gb3Igb3V0LgorICAgKiBBZGRpdGlvbmFs
bHksIHRoZSB0b3RhbCBjZWxsIGNvdW50IG11c3QgYmUgPD0gNjUwMDQgb2N0ZXRzIGluIG9yZGVy
CisgICAqIGZvciB0aGUgbWF0cml4IHRvIGJlIHN0b3JlZCBpbiBhbiBPR0cgaGVhZGVyLgorICAg
Ki8KKyAgaWYgKHJvd3MgPiAyNTUgfHwgY29scyA+IDI1NSkKKyAgICAgIHJldHVybiAwOworICBz
aXplID0gcm93cyAqIChvcHVzX2ludDMyKWNvbHMgKiBzaXplb2Yob3B1c19pbnQxNik7CisgIGlm
IChzaXplID4gNjUwMDQpCisgICAgcmV0dXJuIDA7CisKKyAgcmV0dXJuIGFsaWduKHNpemVvZihN
YXBwaW5nTWF0cml4KSkgKyBhbGlnbihzaXplKTsKK30KKworb3B1c19pbnQxNiAqbWFwcGluZ19t
YXRyaXhfZ2V0X2RhdGEoY29uc3QgTWFwcGluZ01hdHJpeCAqbWF0cml4KQoreworICAvKiB2b2lk
KiBjYXN0IGF2b2lkcyBjbGFuZyAtV2Nhc3QtYWxpZ24gd2FybmluZyAqLworICByZXR1cm4gKG9w
dXNfaW50MTYqKSh2b2lkKikoKGNoYXIqKW1hdHJpeCArIGFsaWduKHNpemVvZihNYXBwaW5nTWF0
cml4KSkpOworfQorCit2b2lkIG1hcHBpbmdfbWF0cml4X2luaXQoTWFwcGluZ01hdHJpeCAqIGNv
bnN0IG1hdHJpeCwKKyAgaW50IHJvd3MsIGludCBjb2xzLCBpbnQgZ2FpbiwgY29uc3Qgb3B1c19p
bnQxNiAqZGF0YSwgb3B1c19pbnQzMiBkYXRhX3NpemUpCit7CisgIGludCBpOworICBvcHVzX2lu
dDE2ICpwdHI7CisKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVNTRVJUSU9OUykKKyAgKHZvaWQpZGF0
YV9zaXplOworI2VuZGlmCisgIGNlbHRfYXNzZXJ0KGFsaWduKGRhdGFfc2l6ZSkgPT0gYWxpZ24o
cm93cyAqIGNvbHMgKiBzaXplb2Yob3B1c19pbnQxNikpKTsKKworICBtYXRyaXgtPnJvd3MgPSBy
b3dzOworICBtYXRyaXgtPmNvbHMgPSBjb2xzOworICBtYXRyaXgtPmdhaW4gPSBnYWluOworICBw
dHIgPSBtYXBwaW5nX21hdHJpeF9nZXRfZGF0YShtYXRyaXgpOworICBmb3IgKGkgPSAwOyBpIDwg
cm93cyAqIGNvbHM7IGkrKykKKyAgeworICAgICBwdHJbaV0gPSBkYXRhW2ldOworICB9Cit9CisK
KyNpZm5kZWYgRElTQUJMRV9GTE9BVF9BUEkKK3ZvaWQgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlf
Y2hhbm5lbF9pbl9mbG9hdCgKKyAgICBjb25zdCBNYXBwaW5nTWF0cml4ICptYXRyaXgsCisgICAg
Y29uc3QgZmxvYXQgKmlucHV0LAorICAgIGludCBpbnB1dF9yb3dzLAorICAgIG9wdXNfdmFsMTYg
Km91dHB1dCwKKyAgICBpbnQgb3V0cHV0X3JvdywKKyAgICBpbnQgb3V0cHV0X3Jvd3MsCisgICAg
aW50IGZyYW1lX3NpemUpCit7CisgIC8qIE1hdHJpeCBkYXRhIGlzIG9yZGVyZWQgY29sLXdpc2Uu
ICovCisgIG9wdXNfaW50MTYqIG1hdHJpeF9kYXRhOworICBpbnQgaSwgY29sOworCisgIGNlbHRf
YXNzZXJ0KGlucHV0X3Jvd3MgPD0gbWF0cml4LT5jb2xzICYmIG91dHB1dF9yb3dzIDw9IG1hdHJp
eC0+cm93cyk7CisKKyAgbWF0cml4X2RhdGEgPSBtYXBwaW5nX21hdHJpeF9nZXRfZGF0YShtYXRy
aXgpOworCisgIGZvciAoaSA9IDA7IGkgPCBmcmFtZV9zaXplOyBpKyspCisgIHsKKyAgICBmbG9h
dCB0bXAgPSAwOworICAgIGZvciAoY29sID0gMDsgY29sIDwgaW5wdXRfcm93czsgY29sKyspCisg
ICAgeworICAgICAgdG1wICs9CisgICAgICAgIG1hdHJpeF9kYXRhW01BVFJJWF9JTkRFWChtYXRy
aXgtPnJvd3MsIG91dHB1dF9yb3csIGNvbCldICoKKyAgICAgICAgaW5wdXRbTUFUUklYX0lOREVY
KGlucHV0X3Jvd3MsIGNvbCwgaSldOworICAgIH0KKyNpZiBkZWZpbmVkKEZJWEVEX1BPSU5UKQor
ICAgIG91dHB1dFtvdXRwdXRfcm93cyAqIGldID0gRkxPQVQySU5UMTYoKDEvMzI3NjguZikqdG1w
KTsKKyNlbHNlCisgICAgb3V0cHV0W291dHB1dF9yb3dzICogaV0gPSAoMS8zMjc2OC5mKSp0bXA7
CisjZW5kaWYKKyAgfQorfQorCit2b2lkIG1hcHBpbmdfbWF0cml4X211bHRpcGx5X2NoYW5uZWxf
b3V0X2Zsb2F0KAorICAgIGNvbnN0IE1hcHBpbmdNYXRyaXggKm1hdHJpeCwKKyAgICBjb25zdCBv
cHVzX3ZhbDE2ICppbnB1dCwKKyAgICBpbnQgaW5wdXRfcm93LAorICAgIGludCBpbnB1dF9yb3dz
LAorICAgIGZsb2F0ICpvdXRwdXQsCisgICAgaW50IG91dHB1dF9yb3dzLAorICAgIGludCBmcmFt
ZV9zaXplCispCit7CisgIC8qIE1hdHJpeCBkYXRhIGlzIG9yZGVyZWQgY29sLXdpc2UuICovCisg
IG9wdXNfaW50MTYqIG1hdHJpeF9kYXRhOworICBpbnQgaSwgcm93OworICBmbG9hdCBpbnB1dF9z
YW1wbGU7CisKKyAgY2VsdF9hc3NlcnQoaW5wdXRfcm93cyA8PSBtYXRyaXgtPmNvbHMgJiYgb3V0
cHV0X3Jvd3MgPD0gbWF0cml4LT5yb3dzKTsKKworICBtYXRyaXhfZGF0YSA9IG1hcHBpbmdfbWF0
cml4X2dldF9kYXRhKG1hdHJpeCk7CisKKyAgZm9yIChpID0gMDsgaSA8IGZyYW1lX3NpemU7IGkr
KykKKyAgeworI2lmIGRlZmluZWQoRklYRURfUE9JTlQpCisgICAgaW5wdXRfc2FtcGxlID0gKDEv
MzI3NjguZikqaW5wdXRbaW5wdXRfcm93cyAqIGldOworI2Vsc2UKKyAgICBpbnB1dF9zYW1wbGUg
PSBpbnB1dFtpbnB1dF9yb3dzICogaV07CisjZW5kaWYKKyAgICBmb3IgKHJvdyA9IDA7IHJvdyA8
IG91dHB1dF9yb3dzOyByb3crKykKKyAgICB7CisgICAgICBmbG9hdCB0bXAgPQorICAgICAgICAo
MS8zMjc2OC5mKSptYXRyaXhfZGF0YVtNQVRSSVhfSU5ERVgobWF0cml4LT5yb3dzLCByb3csIGlu
cHV0X3JvdyldICoKKyAgICAgICAgaW5wdXRfc2FtcGxlOworICAgICAgb3V0cHV0W01BVFJJWF9J
TkRFWChvdXRwdXRfcm93cywgcm93LCBpKV0gKz0gdG1wOworICAgIH0KKyAgfQorfQorI2VuZGlm
IC8qIERJU0FCTEVfRkxPQVRfQVBJICovCisKK3ZvaWQgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlf
Y2hhbm5lbF9pbl9zaG9ydCgKKyAgICBjb25zdCBNYXBwaW5nTWF0cml4ICptYXRyaXgsCisgICAg
Y29uc3Qgb3B1c19pbnQxNiAqaW5wdXQsCisgICAgaW50IGlucHV0X3Jvd3MsCisgICAgb3B1c192
YWwxNiAqb3V0cHV0LAorICAgIGludCBvdXRwdXRfcm93LAorICAgIGludCBvdXRwdXRfcm93cywK
KyAgICBpbnQgZnJhbWVfc2l6ZSkKK3sKKyAgLyogTWF0cml4IGRhdGEgaXMgb3JkZXJlZCBjb2wt
d2lzZS4gKi8KKyAgb3B1c19pbnQxNiogbWF0cml4X2RhdGE7CisgIGludCBpLCBjb2w7CisKKyAg
Y2VsdF9hc3NlcnQoaW5wdXRfcm93cyA8PSBtYXRyaXgtPmNvbHMgJiYgb3V0cHV0X3Jvd3MgPD0g
bWF0cml4LT5yb3dzKTsKKworICBtYXRyaXhfZGF0YSA9IG1hcHBpbmdfbWF0cml4X2dldF9kYXRh
KG1hdHJpeCk7CisKKyAgZm9yIChpID0gMDsgaSA8IGZyYW1lX3NpemU7IGkrKykKKyAgeworICAg
IG9wdXNfdmFsMzIgdG1wID0gMDsKKyAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IGlucHV0X3Jvd3M7
IGNvbCsrKQorICAgIHsKKyNpZiBkZWZpbmVkKEZJWEVEX1BPSU5UKQorICAgICAgdG1wICs9Cisg
ICAgICAgICgob3B1c19pbnQzMiltYXRyaXhfZGF0YVtNQVRSSVhfSU5ERVgobWF0cml4LT5yb3dz
LCBvdXRwdXRfcm93LCBjb2wpXSAqCisgICAgICAgIChvcHVzX2ludDMyKWlucHV0W01BVFJJWF9J
TkRFWChpbnB1dF9yb3dzLCBjb2wsIGkpXSkgPj4gODsKKyNlbHNlCisgICAgICB0bXAgKz0KKyAg
ICAgICAgbWF0cml4X2RhdGFbTUFUUklYX0lOREVYKG1hdHJpeC0+cm93cywgb3V0cHV0X3Jvdywg
Y29sKV0gKgorICAgICAgICBpbnB1dFtNQVRSSVhfSU5ERVgoaW5wdXRfcm93cywgY29sLCBpKV07
CisjZW5kaWYKKyAgICB9CisjaWYgZGVmaW5lZChGSVhFRF9QT0lOVCkKKyAgICBvdXRwdXRbb3V0
cHV0X3Jvd3MgKiBpXSA9IChvcHVzX2ludDE2KSgodG1wICsgNjQpID4+IDcpOworI2Vsc2UKKyAg
ICBvdXRwdXRbb3V0cHV0X3Jvd3MgKiBpXSA9ICgxLygzMjc2OC5mKjMyNzY4LmYpKSp0bXA7Cisj
ZW5kaWYKKyAgfQorfQorCit2b2lkIG1hcHBpbmdfbWF0cml4X211bHRpcGx5X2NoYW5uZWxfb3V0
X3Nob3J0KAorICAgIGNvbnN0IE1hcHBpbmdNYXRyaXggKm1hdHJpeCwKKyAgICBjb25zdCBvcHVz
X3ZhbDE2ICppbnB1dCwKKyAgICBpbnQgaW5wdXRfcm93LAorICAgIGludCBpbnB1dF9yb3dzLAor
ICAgIG9wdXNfaW50MTYgKm91dHB1dCwKKyAgICBpbnQgb3V0cHV0X3Jvd3MsCisgICAgaW50IGZy
YW1lX3NpemUpCit7CisgIC8qIE1hdHJpeCBkYXRhIGlzIG9yZGVyZWQgY29sLXdpc2UuICovCisg
IG9wdXNfaW50MTYqIG1hdHJpeF9kYXRhOworICBpbnQgaSwgcm93OworICBvcHVzX2ludDMyIGlu
cHV0X3NhbXBsZTsKKworICBjZWx0X2Fzc2VydChpbnB1dF9yb3dzIDw9IG1hdHJpeC0+Y29scyAm
JiBvdXRwdXRfcm93cyA8PSBtYXRyaXgtPnJvd3MpOworCisgIG1hdHJpeF9kYXRhID0gbWFwcGlu
Z19tYXRyaXhfZ2V0X2RhdGEobWF0cml4KTsKKworICBmb3IgKGkgPSAwOyBpIDwgZnJhbWVfc2l6
ZTsgaSsrKQorICB7CisjaWYgZGVmaW5lZChGSVhFRF9QT0lOVCkKKyAgICBpbnB1dF9zYW1wbGUg
PSAob3B1c19pbnQzMilpbnB1dFtpbnB1dF9yb3dzICogaV07CisjZWxzZQorICAgIGlucHV0X3Nh
bXBsZSA9IChvcHVzX2ludDMyKUZMT0FUMklOVDE2KGlucHV0W2lucHV0X3Jvd3MgKiBpXSk7Cisj
ZW5kaWYKKyAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IG91dHB1dF9yb3dzOyByb3crKykKKyAgICB7
CisgICAgICBvcHVzX2ludDMyIHRtcCA9CisgICAgICAgIChvcHVzX2ludDMyKW1hdHJpeF9kYXRh
W01BVFJJWF9JTkRFWChtYXRyaXgtPnJvd3MsIHJvdywgaW5wdXRfcm93KV0gKgorICAgICAgICBp
bnB1dF9zYW1wbGU7CisgICAgICBvdXRwdXRbTUFUUklYX0lOREVYKG91dHB1dF9yb3dzLCByb3cs
IGkpXSArPSAodG1wICsgMTYzODQpID4+IDE1OworICAgIH0KKyAgfQorfQorCitjb25zdCBNYXBw
aW5nTWF0cml4IG1hcHBpbmdfbWF0cml4X2ZvYV9taXhpbmcgPSB7IDYsIDYsIDAgfTsKK2NvbnN0
IG9wdXNfaW50MTYgbWFwcGluZ19tYXRyaXhfZm9hX21peGluZ19kYXRhWzM2XSA9IHsKKyAgICAg
MTYzODQsICAgICAgMCwgLTE2Mzg0LCAgMjMxNzAsICAgICAgMCwgICAgICAwLCAgMTYzODQsICAy
MzE3MCwKKyAgICAgMTYzODQsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAxNjM4NCwgICAgICAw
LCAtMTYzODQsIC0yMzE3MCwKKyAgICAgICAgIDAsICAgICAgMCwgIDE2Mzg0LCAtMjMxNzAsICAx
NjM4NCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAzMjc2NywgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgMzI3NjcKK307CisKK2NvbnN0IE1hcHBpbmdNYXRyaXggbWFwcGluZ19t
YXRyaXhfc29hX21peGluZyA9IHsgMTEsIDExLCAwIH07Citjb25zdCBvcHVzX2ludDE2IG1hcHBp
bmdfbWF0cml4X3NvYV9taXhpbmdfZGF0YVsxMjFdID0geworICAgICAxMDkyMywgICA3NzIzLCAg
MTMzNzcsIC0xMzM3NywgIDExNTg1LCAgIDk0NTksICAgNzcyMywgLTE2Mzg0LAorICAgICAtNjY4
OSwgICAgICAwLCAgICAgIDAsICAxMDkyMywgICA3NzIzLCAgMTMzNzcsICAxMzM3NywgLTExNTg1
LAorICAgICAgOTQ1OSwgICA3NzIzLCAgMTYzODQsICAtNjY4OSwgICAgICAwLCAgICAgIDAsICAx
MDkyMywgLTE1NDQ3LAorICAgICAxMzM3NywgICAgICAwLCAgICAgIDAsIC0xODkxOSwgICA3NzIz
LCAgICAgIDAsICAxMzM3NywgICAgICAwLAorICAgICAgICAgMCwgIDEwOTIzLCAgIDc3MjMsIC0x
MzM3NywgLTEzMzc3LCAgMTE1ODUsICAtOTQ1OSwgICA3NzIzLAorICAgICAxNjM4NCwgIC02Njg5
LCAgICAgIDAsICAgICAgMCwgIDEwOTIzLCAgLTc3MjMsICAgICAgMCwgIDEzMzc3LAorICAgIC0x
NjM4NCwgICAgICAwLCAtMTU0NDcsICAgICAgMCwgICA5NDU5LCAgICAgIDAsICAgICAgMCwgIDEw
OTIzLAorICAgICAtNzcyMywgICAgICAwLCAtMTMzNzcsICAxNjM4NCwgICAgICAwLCAtMTU0NDcs
ICAgICAgMCwgICA5NDU5LAorICAgICAgICAgMCwgICAgICAwLCAgMTA5MjMsICAxNTQ0NywgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLAorICAgIC0xNTQ0NywgICAgICAwLCAtMTg5MTks
ICAgICAgMCwgICAgICAwLCAgMTA5MjMsICAgNzcyMywgLTEzMzc3LAorICAgICAxMzM3NywgLTEx
NTg1LCAgLTk0NTksICAgNzcyMywgLTE2Mzg0LCAgLTY2ODksICAgICAgMCwgICAgICAwLAorICAg
ICAxMDkyMywgLTE1NDQ3LCAtMTMzNzcsICAgICAgMCwgICAgICAwLCAgMTg5MTksICAgNzcyMywg
ICAgICAwLAorICAgICAxMzM3NywgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLAorICAgICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
IDMyNzY3LCAgICAgIDAsICAgICAgMCwgICAgICAwLAorICAgICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLAorICAgICAzMjc2Nwor
fTsKKworY29uc3QgTWFwcGluZ01hdHJpeCBtYXBwaW5nX21hdHJpeF90b2FfbWl4aW5nID0geyAx
OCwgMTgsIDAgfTsKK2NvbnN0IG9wdXNfaW50MTYgbWFwcGluZ19tYXRyaXhfdG9hX21peGluZ19k
YXRhWzMyNF0gPSB7CisgICAgICA4MjA4LCAgICAgIDAsICAgLTg4MSwgIDE0MzY5LCAgICAgIDAs
ICAgICAgMCwgIC04MTkyLCAgLTQxNjMsCisgICAgIDEzMjE4LCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgMTEwOTUsICAtODgzNiwgIC02MjE4LCAgMTQ4MzMsCisgICAgICAgICAwLCAgICAgIDAs
ICAgODIwOCwgLTEwMTYxLCAgICA4ODEsICAxMDE2MSwgLTEzMjE4LCAgLTI5NDQsCisgICAgIC04
MTkyLCAgIDI5NDQsICAgICAgMCwgLTEwNDg4LCAgLTYyMTgsICAgNjI0OCwgLTExMDk1LCAgLTYy
NDgsCisgICAgICAgICAwLCAtMTA0ODgsICAgICAgMCwgICAgICAwLCAgIDgyMDgsICAxMDE2MSwg
ICAgODgxLCAtMTAxNjEsCisgICAgLTEzMjE4LCAgIDI5NDQsICAtODE5MiwgIC0yOTQ0LCAgICAg
IDAsICAxMDQ4OCwgIC02MjE4LCAgLTYyNDgsCisgICAgLTExMDk1LCAgIDYyNDgsICAgICAgMCwg
IDEwNDg4LCAgICAgIDAsICAgICAgMCwgICA4MTc2LCAgIDU1NjYsCisgICAgLTExNTUyLCAgIDU1
NjYsICAgOTY4MSwgLTExMjA1LCAgIDgxOTIsIC0xMTIwNSwgICAgICAwLCAgIDQ5MjAsCisgICAg
LTE1MTU4LCAgIDk3NTYsICAtMzMzNCwgICA5NzU2LCAgICAgIDAsICAtNDkyMCwgICAgICAwLCAg
ICAgIDAsCisgICAgICA4MTc2LCAgIDc4NzEsICAxMTU1MiwgICAgICAwLCAgICAgIDAsICAxNTg0
NiwgICA4MTkyLCAgICAgIDAsCisgICAgIC05NjgxLCAgLTY5NTgsICAgICAgMCwgIDEzNzk3LCAg
IDMzMzQsICAgICAgMCwgLTE1MTU4LCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgODE3
NiwgICAgICAwLCAgMTE1NTIsICAgNzg3MSwgICAgICAwLCAgICAgIDAsCisgICAgICA4MTkyLCAg
MTU4NDYsICAgOTY4MSwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAzMzM0LCAgMTM3OTcsCisg
ICAgIDE1MTU4LCAgIDY5NTgsICAgICAgMCwgICAgICAwLCAgIDgxNzYsICAgNTU2NiwgLTExNTUy
LCAgLTU1NjYsCisgICAgIC05NjgxLCAtMTEyMDUsICAgODE5MiwgIDExMjA1LCAgICAgIDAsICAg
NDkyMCwgIDE1MTU4LCAgIDk3NTYsCisgICAgIC0zMzM0LCAgLTk3NTYsICAgICAgMCwgICA0OTIw
LCAgICAgIDAsICAgICAgMCwgICA4MjA4LCAgMTQzNjksCisgICAgICAtODgxLCAgICAgIDAsICAg
ICAgMCwgIC00MTYzLCAgLTgxOTIsICAgICAgMCwgLTEzMjE4LCAtMTQ4MzMsCisgICAgICAgICAw
LCAgLTg4MzYsICAxMTA5NSwgICAgICAwLCAgIDYyMTgsICAgICAgMCwgICAgICAwLCAgICAgIDAs
CisgICAgICA4MjA4LCAgMTAxNjEsICAgIDg4MSwgIDEwMTYxLCAgMTMyMTgsICAgMjk0NCwgIC04
MTkyLCAgIDI5NDQsCisgICAgICAgICAwLCAgMTA0ODgsICAgNjIxOCwgIC02MjQ4LCAtMTEwOTUs
ICAtNjI0OCwgICAgICAwLCAtMTA0ODgsCisgICAgICAgICAwLCAgICAgIDAsICAgODIwOCwgLTE0
MzY5LCAgIC04ODEsICAgICAgMCwgICAgICAwLCAgIDQxNjMsCisgICAgIC04MTkyLCAgICAgIDAs
IC0xMzIxOCwgIDE0ODMzLCAgICAgIDAsICAgODgzNiwgIDExMDk1LCAgICAgIDAsCisgICAgICA2
MjE4LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgIDgyMDgsICAgICAgMCwgICAtODgxLCAtMTQz
NjksCisgICAgICAgICAwLCAgICAgIDAsICAtODE5MiwgICA0MTYzLCAgMTMyMTgsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsCisgICAgIDExMDk1LCAgIDg4MzYsICAtNjIxOCwgLTE0ODMzLCAgICAg
IDAsICAgICAgMCwgICA4MTc2LCAgLTU1NjYsCisgICAgLTExNTUyLCAgIDU1NjYsICAtOTY4MSwg
IDExMjA1LCAgIDgxOTIsIC0xMTIwNSwgICAgICAwLCAgLTQ5MjAsCisgICAgIDE1MTU4LCAgLTk3
NTYsICAtMzMzNCwgICA5NzU2LCAgICAgIDAsICAtNDkyMCwgICAgICAwLCAgICAgIDAsCisgICAg
ICA4MTc2LCAgICAgIDAsICAxMTU1MiwgIC03ODcxLCAgICAgIDAsICAgICAgMCwgICA4MTkyLCAt
MTU4NDYsCisgICAgICA5NjgxLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgIDMzMzQsIC0xMzc5
NywgIDE1MTU4LCAgLTY5NTgsCisgICAgICAgICAwLCAgICAgIDAsICAgODE3NiwgIC03ODcxLCAg
MTE1NTIsICAgICAgMCwgICAgICAwLCAtMTU4NDYsCisgICAgICA4MTkyLCAgICAgIDAsICAtOTY4
MSwgICA2OTU4LCAgICAgIDAsIC0xMzc5NywgICAzMzM0LCAgICAgIDAsCisgICAgLTE1MTU4LCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgIDgxNzYsICAtNTU2NiwgLTExNTUyLCAgLTU1NjYsCisg
ICAgICA5NjgxLCAgMTEyMDUsICAgODE5MiwgIDExMjA1LCAgICAgIDAsICAtNDkyMCwgLTE1MTU4
LCAgLTk3NTYsCisgICAgIC0zMzM0LCAgLTk3NTYsICAgICAgMCwgICA0OTIwLCAgICAgIDAsICAg
ICAgMCwgICA4MjA4LCAtMTAxNjEsCisgICAgICAgODgxLCAtMTAxNjEsICAxMzIxOCwgIC0yOTQ0
LCAgLTgxOTIsICAtMjk0NCwgICAgICAwLCAtMTA0ODgsCisgICAgICA2MjE4LCAgIDYyNDgsIC0x
MTA5NSwgICA2MjQ4LCAgICAgIDAsICAxMDQ4OCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAw
LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
CisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsCisgICAgIDMyNzY3LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgIDMyNzY3Cit9OworCitjb25zdCBNYXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4
X2ZvYV9kZW1peGluZyA9IHsgNiwgNiwgMCB9OworY29uc3Qgb3B1c19pbnQxNiBtYXBwaW5nX21h
dHJpeF9mb2FfZGVtaXhpbmdfZGF0YVszNl0gPSB7CisgICAgIDE2Mzg0LCAgMTYzODQsICAxNjM4
NCwgIDE2Mzg0LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgMjMxNzAsCisgICAgICAgICAwLCAt
MjMxNzAsICAgICAgMCwgICAgICAwLCAtMTYzODQsICAxNjM4NCwgLTE2Mzg0LCAgMTYzODQsCisg
ICAgICAgICAwLCAgICAgIDAsICAyMzE3MCwgICAgICAwLCAtMjMxNzAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgMzI3NjcsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgIDMyNzY3
Cit9OworCitjb25zdCBNYXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4X3NvYV9kZW1peGluZyA9
IHsgMTEsIDExLCAzMDUwIH07Citjb25zdCBvcHVzX2ludDE2IG1hcHBpbmdfbWF0cml4X3NvYV9k
ZW1peGluZ19kYXRhWzEyMV0gPSB7CisgICAgICAyNzcxLCAgIDI3NzEsICAgMjc3MSwgICAyNzcx
LCAgIDI3NzEsICAgMjc3MSwgICAyNzcxLCAgIDI3NzEsCisgICAgICAyNzcxLCAgICAgIDAsICAg
ICAgMCwgIDEwMDMzLCAgMTAwMzMsIC0yMDA2NiwgIDEwMDMzLCAgMTQxODksCisgICAgIDE0MTg5
LCAtMjgzNzgsICAxMDAzMywgLTIwMDY2LCAgICAgIDAsICAgICAgMCwgICAzMzkzLCAgIDMzOTMs
CisgICAgICAzMzkzLCAgLTMzOTMsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAtMzM5MywgIC0z
MzkzLCAgICAgIDAsCisgICAgICAgICAwLCAtMTczNzgsICAxNzM3OCwgICAgICAwLCAtMTczNzgs
IC0yNDU3NiwgIDI0NTc2LCAgICAgIDAsCisgICAgIDE3Mzc4LCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAtMTQxODksICAxNDE4OSwgICAgICAwLCAtMTQxODksCisgICAgLTI4Mzc4LCAgMjgzNzgs
ICAgICAgMCwgIDE0MTg5LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgIDIzOTksCisgICAgICAy
Mzk5LCAgLTQ3OTksICAtMjM5OSwgICAgICAwLCAgICAgIDAsICAgICAgMCwgIC0yMzk5LCAgIDQ3
OTksCisgICAgICAgICAwLCAgICAgIDAsICAgMTk1OSwgICAxOTU5LCAgIDE5NTksICAgMTk1OSwg
IC0zOTE4LCAgLTM5MTgsCisgICAgIC0zOTE4LCAgIDE5NTksICAgMTk1OSwgICAgICAwLCAgICAg
IDAsICAtNDE1NiwgICA0MTU2LCAgICAgIDAsCisgICAgICA0MTU2LCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgLTQxNTYsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICA4MTkyLCAgIDgx
OTIsIC0xNjM4NCwgICA4MTkyLCAgMTYzODQsICAxNjM4NCwgLTMyNzY4LCAgIDgxOTIsCisgICAg
LTE2Mzg0LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgIDgzMTIsICAgICAg
MCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICA4MzEyCit9OworCitjb25zdCBN
YXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4X3RvYV9kZW1peGluZyA9IHsgMTgsIDE4LCAwIH07
Citjb25zdCBvcHVzX2ludDE2IG1hcHBpbmdfbWF0cml4X3RvYV9kZW1peGluZ19kYXRhWzMyNF0g
PSB7CisgICAgICA4MTkyLCAgIDgxOTIsICAgODE5MiwgICA4MTkyLCAgIDgxOTIsICAgODE5Miwg
ICA4MTkyLCAgIDgxOTIsCisgICAgICA4MTkyLCAgIDgxOTIsICAgODE5MiwgICA4MTkyLCAgIDgx
OTIsICAgODE5MiwgICA4MTkyLCAgIDgxOTIsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwg
IC05Nzc5LCAgIDk3NzksICAgNjI2MywgICA4ODU3LCAgICAgIDAsCisgICAgICA2MjYzLCAgMTM4
MjksICAgOTc3OSwgLTEzODI5LCAgICAgIDAsICAtNjI2MywgICAgICAwLCAgLTg4NTcsCisgICAg
IC02MjYzLCAgLTk3NzksICAgICAgMCwgICAgICAwLCAgLTM0MTMsICAgMzQxMywgICAzNDEzLCAt
MTEzNTksCisgICAgIDExMzU5LCAgMTEzNTksIC0xMTM1OSwgIC0zNDEzLCAgIDM0MTMsICAtMzQx
MywgIC0zNDEzLCAtMTEzNTksCisgICAgIDExMzU5LCAgMTEzNTksIC0xMTM1OSwgICAzNDEzLCAg
ICAgIDAsICAgICAgMCwgIDEzODI5LCAgIDk3NzksCisgICAgIC05Nzc5LCAgIDYyNjMsICAgICAg
MCwgICA4ODU3LCAgLTYyNjMsICAgICAgMCwgICA5Nzc5LCAgICAgIDAsCisgICAgLTEzODI5LCAg
IDYyNjMsICAtODg1NywgICAgICAwLCAgLTYyNjMsICAtOTc3OSwgICAgICAwLCAgICAgIDAsCisg
ICAgICAgICAwLCAtMTU2MTcsIC0xNTYxNywgICA2NDA2LCAgICAgIDAsICAgICAgMCwgIC02NDA2
LCAgICAgIDAsCisgICAgIDE1NjE3LCAgICAgIDAsICAgICAgMCwgIC02NDA2LCAgICAgIDAsICAg
ICAgMCwgICA2NDA2LCAgMTU2MTcsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgIC01MDAz
LCAgIDUwMDMsIC0xMDY2NCwgIDE1MDgxLCAgICAgIDAsCisgICAgLTEwNjY0LCAgLTcwNzUsICAg
NTAwMywgICA3MDc1LCAgICAgIDAsICAxMDY2NCwgICAgICAwLCAtMTUwODEsCisgICAgIDEwNjY0
LCAgLTUwMDMsICAgICAgMCwgICAgICAwLCAgLTgxNzYsICAtODE3NiwgIC04MTc2LCAgIDgyMDgs
CisgICAgICA4MjA4LCAgIDgyMDgsICAgODIwOCwgIC04MTc2LCAgLTgxNzYsICAtODE3NiwgIC04
MTc2LCAgIDgyMDgsCisgICAgICA4MjA4LCAgIDgyMDgsICAgODIwOCwgIC04MTc2LCAgICAgIDAs
ICAgICAgMCwgIC03MDc1LCAgIDUwMDMsCisgICAgIC01MDAzLCAtMTA2NjQsICAgICAgMCwgIDE1
MDgxLCAgMTA2NjQsICAgICAgMCwgICA1MDAzLCAgICAgIDAsCisgICAgICA3MDc1LCAtMTA2NjQs
IC0xNTA4MSwgICAgICAwLCAgMTA2NjQsICAtNTAwMywgICAgICAwLCAgICAgIDAsCisgICAgIDE1
NjE3LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgLTY0MDYsICAgNjQwNiwgICAgICAwLCAtMTU2
MTcsCisgICAgICAgICAwLCAtMTU2MTcsICAxNTYxNywgICAgICAwLCAgIDY0MDYsICAtNjQwNiwg
ICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgLTExMzkzLCAgMTEz
OTMsICAgMjk5MywgIC00MjMzLCAgICAgIDAsCisgICAgICAyOTkzLCAtMTYxMTIsICAxMTM5Mywg
IDE2MTEyLCAgICAgIDAsICAtMjk5MywgICAgICAwLCAgIDQyMzMsCisgICAgIC0yOTkzLCAtMTEz
OTMsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAtOTk3NCwgIC05OTc0LCAtMTM2MTcsCisgICAg
ICAgICAwLCAgICAgIDAsICAxMzYxNywgICAgICAwLCAgIDk5NzQsICAgICAgMCwgICAgICAwLCAg
MTM2MTcsCisgICAgICAgICAwLCAgICAgIDAsIC0xMzYxNywgICA5OTc0LCAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgIDU1NzksCisgICAgIC01NTc5LCAgMTAxODUsICAxNDQwMywgICAgICAwLCAg
MTAxODUsICAtNzg5MCwgIC01NTc5LCAgIDc4OTAsCisgICAgICAgICAwLCAtMTAxODUsICAgICAg
MCwgLTE0NDAzLCAtMTAxODUsICAgNTU3OSwgICAgICAwLCAgICAgIDAsCisgICAgIDExODI2LCAt
MTE4MjYsIC0xMTgyNiwgICAtOTAxLCAgICA5MDEsICAgIDkwMSwgICAtOTAxLCAgMTE4MjYsCisg
ICAgLTExODI2LCAgMTE4MjYsICAxMTgyNiwgICAtOTAxLCAgICA5MDEsICAgIDkwMSwgICAtOTAx
LCAtMTE4MjYsCisgICAgICAgICAwLCAgICAgIDAsICAtNzg5MCwgIC01NTc5LCAgIDU1NzksICAx
MDE4NSwgICAgICAwLCAgMTQ0MDMsCisgICAgLTEwMTg1LCAgICAgIDAsICAtNTU3OSwgICAgICAw
LCAgIDc4OTAsICAxMDE4NSwgLTE0NDAzLCAgICAgIDAsCisgICAgLTEwMTg1LCAgIDU1NzksICAg
ICAgMCwgICAgICAwLCAgLTk5NzQsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgLTEzNjE3
LCAgMTM2MTcsICAgICAgMCwgICA5OTc0LCAgICAgIDAsICAgOTk3NCwgIC05OTc0LCAgICAgIDAs
CisgICAgIDEzNjE3LCAtMTM2MTcsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgIDE2
MTEyLCAtMTEzOTMsCisgICAgIDExMzkzLCAgLTI5OTMsICAgICAgMCwgICA0MjMzLCAgIDI5OTMs
ICAgICAgMCwgLTExMzkzLCAgICAgIDAsCisgICAgLTE2MTEyLCAgLTI5OTMsICAtNDIzMywgICAg
ICAwLCAgIDI5OTMsICAxMTM5MywgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsCisgICAgIDMyNzY3LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwg
IDMyNzY3Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tYXBwaW5nX21hdHJpeC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWFwcGlu
Z19tYXRyaXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGJjODJkZjNlYmE1ZTNjYWQ4YTNkZTQ3OGM3ZjliMTUy
YjNkNGUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWFwcGluZ19tYXRyaXguaApAQCAtMCwwICsx
LDEzMyBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE3IEdvb2dsZSBJbmMuCisgICBXcml0dGVuIGJ5
IEFuZHJldyBBbGxlbiAqLworLyoKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUg
bWV0OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICAg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKy8qKgorICogQGZpbGUgbWFwcGluZ19tYXRy
aXguaAorICogQGJyaWVmIE9wdXMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG1hcHBpbmcgbWF0
cml4IEFQSQorICovCisKKyNpZm5kZWYgTUFQUElOR19NQVRSSVhfSAorI2RlZmluZSBNQVBQSU5H
X01BVFJJWF9ICisKKyNpbmNsdWRlICJvcHVzX3R5cGVzLmgiCisjaW5jbHVkZSAib3B1c19wcm9q
ZWN0aW9uLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
dHlwZWRlZiBzdHJ1Y3QgTWFwcGluZ01hdHJpeAoreworICAgIGludCByb3dzOyAvKiBudW1iZXIg
b2YgY2hhbm5lbHMgb3V0cHV0dGVkIGZyb20gbWF0cml4LiAqLworICAgIGludCBjb2xzOyAvKiBu
dW1iZXIgb2YgY2hhbm5lbHMgaW5wdXR0ZWQgdG8gbWF0cml4LiAqLworICAgIGludCBnYWluOyAv
KiBpbiBkQi4gUzcuOC1mb3JtYXQuICovCisgICAgLyogTWF0cml4IGNlbGwgZGF0YSBnb2VzIGhl
cmUgdXNpbmcgY29sLXdpc2Ugb3JkZXJpbmcuICovCit9IE1hcHBpbmdNYXRyaXg7CisKK29wdXNf
aW50MzIgbWFwcGluZ19tYXRyaXhfZ2V0X3NpemUoaW50IHJvd3MsIGludCBjb2xzKTsKKworb3B1
c19pbnQxNiAqbWFwcGluZ19tYXRyaXhfZ2V0X2RhdGEoY29uc3QgTWFwcGluZ01hdHJpeCAqbWF0
cml4KTsKKwordm9pZCBtYXBwaW5nX21hdHJpeF9pbml0KAorICAgIE1hcHBpbmdNYXRyaXggKiBj
b25zdCBtYXRyaXgsCisgICAgaW50IHJvd3MsCisgICAgaW50IGNvbHMsCisgICAgaW50IGdhaW4s
CisgICAgY29uc3Qgb3B1c19pbnQxNiAqZGF0YSwKKyAgICBvcHVzX2ludDMyIGRhdGFfc2l6ZQor
KTsKKworI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQordm9pZCBtYXBwaW5nX21hdHJpeF9tdWx0
aXBseV9jaGFubmVsX2luX2Zsb2F0KAorICAgIGNvbnN0IE1hcHBpbmdNYXRyaXggKm1hdHJpeCwK
KyAgICBjb25zdCBmbG9hdCAqaW5wdXQsCisgICAgaW50IGlucHV0X3Jvd3MsCisgICAgb3B1c192
YWwxNiAqb3V0cHV0LAorICAgIGludCBvdXRwdXRfcm93LAorICAgIGludCBvdXRwdXRfcm93cywK
KyAgICBpbnQgZnJhbWVfc2l6ZQorKTsKKwordm9pZCBtYXBwaW5nX21hdHJpeF9tdWx0aXBseV9j
aGFubmVsX291dF9mbG9hdCgKKyAgICBjb25zdCBNYXBwaW5nTWF0cml4ICptYXRyaXgsCisgICAg
Y29uc3Qgb3B1c192YWwxNiAqaW5wdXQsCisgICAgaW50IGlucHV0X3JvdywKKyAgICBpbnQgaW5w
dXRfcm93cywKKyAgICBmbG9hdCAqb3V0cHV0LAorICAgIGludCBvdXRwdXRfcm93cywKKyAgICBp
bnQgZnJhbWVfc2l6ZQorKTsKKyNlbmRpZiAvKiBESVNBQkxFX0ZMT0FUX0FQSSAqLworCit2b2lk
IG1hcHBpbmdfbWF0cml4X211bHRpcGx5X2NoYW5uZWxfaW5fc2hvcnQoCisgICAgY29uc3QgTWFw
cGluZ01hdHJpeCAqbWF0cml4LAorICAgIGNvbnN0IG9wdXNfaW50MTYgKmlucHV0LAorICAgIGlu
dCBpbnB1dF9yb3dzLAorICAgIG9wdXNfdmFsMTYgKm91dHB1dCwKKyAgICBpbnQgb3V0cHV0X3Jv
dywKKyAgICBpbnQgb3V0cHV0X3Jvd3MsCisgICAgaW50IGZyYW1lX3NpemUKKyk7CisKK3ZvaWQg
bWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5lbF9vdXRfc2hvcnQoCisgICAgY29uc3QgTWFw
cGluZ01hdHJpeCAqbWF0cml4LAorICAgIGNvbnN0IG9wdXNfdmFsMTYgKmlucHV0LAorICAgIGlu
dCBpbnB1dF9yb3csCisgICAgaW50IGlucHV0X3Jvd3MsCisgICAgb3B1c19pbnQxNiAqb3V0cHV0
LAorICAgIGludCBvdXRwdXRfcm93cywKKyAgICBpbnQgZnJhbWVfc2l6ZQorKTsKKworLyogUHJl
LWNvbXB1dGVkIG1peGluZyBhbmQgZGVtaXhpbmcgbWF0cmljZXMgZm9yIDFzdCB0byAzcmQtb3Jk
ZXIgYW1iaXNvbmljcy4KKyAqICAgZm9hOiBmaXJzdC1vcmRlciBhbWJpc29uaWNzCisgKiAgIHNv
YTogc2Vjb25kLW9yZGVyIGFtYmlzb25pY3MKKyAqICAgdG9hOiB0aGlyZC1vcmRlciBhbWJpc29u
aWNzCisgKi8KK2V4dGVybiBjb25zdCBNYXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4X2ZvYV9t
aXhpbmc7CitleHRlcm4gY29uc3Qgb3B1c19pbnQxNiBtYXBwaW5nX21hdHJpeF9mb2FfbWl4aW5n
X2RhdGFbMzZdOworCitleHRlcm4gY29uc3QgTWFwcGluZ01hdHJpeCBtYXBwaW5nX21hdHJpeF9z
b2FfbWl4aW5nOworZXh0ZXJuIGNvbnN0IG9wdXNfaW50MTYgbWFwcGluZ19tYXRyaXhfc29hX21p
eGluZ19kYXRhWzEyMV07CisKK2V4dGVybiBjb25zdCBNYXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0
cml4X3RvYV9taXhpbmc7CitleHRlcm4gY29uc3Qgb3B1c19pbnQxNiBtYXBwaW5nX21hdHJpeF90
b2FfbWl4aW5nX2RhdGFbMzI0XTsKKworZXh0ZXJuIGNvbnN0IE1hcHBpbmdNYXRyaXggbWFwcGlu
Z19tYXRyaXhfZm9hX2RlbWl4aW5nOworZXh0ZXJuIGNvbnN0IG9wdXNfaW50MTYgbWFwcGluZ19t
YXRyaXhfZm9hX2RlbWl4aW5nX2RhdGFbMzZdOworCitleHRlcm4gY29uc3QgTWFwcGluZ01hdHJp
eCBtYXBwaW5nX21hdHJpeF9zb2FfZGVtaXhpbmc7CitleHRlcm4gY29uc3Qgb3B1c19pbnQxNiBt
YXBwaW5nX21hdHJpeF9zb2FfZGVtaXhpbmdfZGF0YVsxMjFdOworCitleHRlcm4gY29uc3QgTWFw
cGluZ01hdHJpeCBtYXBwaW5nX21hdHJpeF90b2FfZGVtaXhpbmc7CitleHRlcm4gY29uc3Qgb3B1
c19pbnQxNiBtYXBwaW5nX21hdHJpeF90b2FfZGVtaXhpbmdfZGF0YVszMjRdOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTUFQUElOR19NQVRSSVhfSCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zcmMvbWxwLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHAuYwppbmRleCBmZjllNTBkZjQ3Mjk4MTJjM2Rh
OTA4NDA0NmJmMmVkOTkyOTgzYmU1Li45NjRjNmE5OGY2ZDQzMDFmMzc5MmRkZjA1NDJmYTI2NDgx
YTg3NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHAuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHAuYwpAQCAtMSw1ICsxLDUg
QEAKIC8qIENvcHlyaWdodCAoYykgMjAwOC0yMDExIE9jdGFzaWMgSW5jLgotICAgV3JpdHRlbiBi
eSBKZWFuLU1hcmMgVmFsaW4gKi8KKyAgICAgICAgICAgICAgICAgMjAxMi0yMDE3IEplYW4tTWFy
YyBWYWxpbiAqLwogLyoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw0MiArMjks
MTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8bWF0aC5oPgog
I2luY2x1ZGUgIm9wdXNfdHlwZXMuaCIKICNpbmNsdWRlICJvcHVzX2RlZmluZXMuaCIKLQotI2lu
Y2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlICJtbHAuaCIKICNpbmNsdWRlICJhcmNoLmgiCiAjaW5j
bHVkZSAidGFuc2lnX3RhYmxlLmgiCi0jZGVmaW5lIE1BWF9ORVVST05TIDEwMAorI2luY2x1ZGUg
Im1scC5oIgogCi0jaWYgMAotc3RhdGljIE9QVVNfSU5MSU5FIG9wdXNfdmFsMTYgdGFuc2lnX2Fw
cHJveChvcHVzX3ZhbDMyIF94KSAvKiBRMTkgKi8KLXsKLSAgICBpbnQgaTsKLSAgICBvcHVzX3Zh
bDE2IHh4OyAvKiBRMTEgKi8KLSAgICAvKmRvdWJsZSB4LCB5OyovCi0gICAgb3B1c192YWwxNiBk
eSwgeXk7IC8qIFExNCAqLwotICAgIC8qeCA9IDEuOTA3M2UtMDYqX3g7Ki8KLSAgICBpZiAoX3g+
PVFDT05TVDMyKDgsMTkpKQotICAgICAgICByZXR1cm4gUUNPTlNUMzIoMS4sMTQpOwotICAgIGlm
IChfeDw9LVFDT05TVDMyKDgsMTkpKQotICAgICAgICByZXR1cm4gLVFDT05TVDMyKDEuLDE0KTsK
LSAgICB4eCA9IEVYVFJBQ1QxNihTSFIzMihfeCwgOCkpOwotICAgIC8qaSA9IGxyaW50KDI1Kngp
OyovCi0gICAgaSA9IFNIUjMyKEFERDMyKDEwMjQsTVVMVDE2XzE2KDI1LCB4eCkpLDExKTsKLSAg
ICAvKnggLT0gLjA0Kmk7Ki8KLSAgICB4eCAtPSBFWFRSQUNUMTYoU0hSMzIoTVVMVDE2XzE2KDIw
OTcyLGkpLDgpKTsKLSAgICAvKnggPSB4eCooMS4vMjA0OCk7Ki8KLSAgICAvKnkgPSB0YW5zaWdf
dGFibGVbMjUwK2ldOyovCi0gICAgeXkgPSB0YW5zaWdfdGFibGVbMjUwK2ldOwotICAgIC8qeSA9
IHl5KigxLi8xNjM4NCk7Ki8KLSAgICBkeSA9IDE2Mzg0LU1VTFQxNl8xNl9RMTQoeXkseXkpOwot
ICAgIHl5ID0geXkgKyBNVUxUMTZfMTZfUTE0KE1VTFQxNl8xNl9RMTEoeHgsZHkpLCgxNjM4NCAt
IE1VTFQxNl8xNl9RMTEoeXkseHgpKSk7Ci0gICAgcmV0dXJuIHl5OwotfQotI2Vsc2UKLS8qZXh0
ZXJuIGNvbnN0IGZsb2F0IHRhbnNpZ190YWJsZVs1MDFdOyovCiBzdGF0aWMgT1BVU19JTkxJTkUg
ZmxvYXQgdGFuc2lnX2FwcHJveChmbG9hdCB4KQogewogICAgIGludCBpOwpAQCAtOTIsNTQgKzYz
LDgyIEBAIHN0YXRpYyBPUFVTX0lOTElORSBmbG9hdCB0YW5zaWdfYXBwcm94KGZsb2F0IHgpCiAg
ICAgeSA9IHkgKyB4KmR5KigxIC0geSp4KTsKICAgICByZXR1cm4gc2lnbip5OwogfQotI2VuZGlm
CiAKLSNpZiAwCi12b2lkIG1scF9wcm9jZXNzKGNvbnN0IE1MUCAqbSwgY29uc3Qgb3B1c192YWwx
NiAqaW4sIG9wdXNfdmFsMTYgKm91dCkKK3N0YXRpYyBPUFVTX0lOTElORSBmbG9hdCBzaWdtb2lk
X2FwcHJveChmbG9hdCB4KQogewotICAgIGludCBqOwotICAgIG9wdXNfdmFsMTYgaGlkZGVuW01B
WF9ORVVST05TXTsKLSAgICBjb25zdCBvcHVzX3ZhbDE2ICpXID0gbS0+d2VpZ2h0czsKLSAgICAv
KiBDb3B5IHRvIHRtcF9pbiAqLwotICAgIGZvciAoaj0wO2o8bS0+dG9wb1sxXTtqKyspCi0gICAg
ewotICAgICAgICBpbnQgazsKLSAgICAgICAgb3B1c192YWwzMiBzdW0gPSBTSEwzMihFWFRFTkQz
MigqVysrKSw4KTsKLSAgICAgICAgZm9yIChrPTA7azxtLT50b3BvWzBdO2srKykKLSAgICAgICAg
ICAgIHN1bSA9IE1BQzE2XzE2KHN1bSwgaW5ba10sKlcrKyk7Ci0gICAgICAgIGhpZGRlbltqXSA9
IHRhbnNpZ19hcHByb3goc3VtKTsKLSAgICB9Ci0gICAgZm9yIChqPTA7ajxtLT50b3BvWzJdO2or
KykKLSAgICB7Ci0gICAgICAgIGludCBrOwotICAgICAgICBvcHVzX3ZhbDMyIHN1bSA9IFNITDMy
KEVYVEVORDMyKCpXKyspLDE0KTsKLSAgICAgICAgZm9yIChrPTA7azxtLT50b3BvWzFdO2srKykK
LSAgICAgICAgICAgIHN1bSA9IE1BQzE2XzE2KHN1bSwgaGlkZGVuW2tdLCAqVysrKTsKLSAgICAg
ICAgb3V0W2pdID0gdGFuc2lnX2FwcHJveChFWFRSQUNUMTYoUFNIUjMyKHN1bSwxNykpKTsKLSAg
ICB9CisgICByZXR1cm4gLjVmICsgLjVmKnRhbnNpZ19hcHByb3goLjVmKngpOworfQorCitzdGF0
aWMgdm9pZCBnZW1tX2FjY3VtKGZsb2F0ICpvdXQsIGNvbnN0IG9wdXNfaW50OCAqd2VpZ2h0cywg
aW50IHJvd3MsIGludCBjb2xzLCBpbnQgY29sX3N0cmlkZSwgY29uc3QgZmxvYXQgKngpCit7Cisg
ICBpbnQgaSwgajsKKyAgIGZvciAoaT0wO2k8cm93cztpKyspCisgICB7CisgICAgICBmb3IgKGo9
MDtqPGNvbHM7aisrKQorICAgICAgICAgb3V0W2ldICs9IHdlaWdodHNbaipjb2xfc3RyaWRlICsg
aV0qeFtqXTsKKyAgIH0KIH0KLSNlbHNlCi12b2lkIG1scF9wcm9jZXNzKGNvbnN0IE1MUCAqbSwg
Y29uc3QgZmxvYXQgKmluLCBmbG9hdCAqb3V0KQorCit2b2lkIGNvbXB1dGVfZGVuc2UoY29uc3Qg
RGVuc2VMYXllciAqbGF5ZXIsIGZsb2F0ICpvdXRwdXQsIGNvbnN0IGZsb2F0ICppbnB1dCkKIHsK
LSAgICBpbnQgajsKLSAgICBmbG9hdCBoaWRkZW5bTUFYX05FVVJPTlNdOwotICAgIGNvbnN0IGZs
b2F0ICpXID0gbS0+d2VpZ2h0czsKLSAgICAvKiBDb3B5IHRvIHRtcF9pbiAqLwotICAgIGZvciAo
aj0wO2o8bS0+dG9wb1sxXTtqKyspCi0gICAgewotICAgICAgICBpbnQgazsKLSAgICAgICAgZmxv
YXQgc3VtID0gKlcrKzsKLSAgICAgICAgZm9yIChrPTA7azxtLT50b3BvWzBdO2srKykKLSAgICAg
ICAgICAgIHN1bSA9IHN1bSArIGluW2tdKipXKys7Ci0gICAgICAgIGhpZGRlbltqXSA9IHRhbnNp
Z19hcHByb3goc3VtKTsKLSAgICB9Ci0gICAgZm9yIChqPTA7ajxtLT50b3BvWzJdO2orKykKLSAg
ICB7Ci0gICAgICAgIGludCBrOwotICAgICAgICBmbG9hdCBzdW0gPSAqVysrOwotICAgICAgICBm
b3IgKGs9MDtrPG0tPnRvcG9bMV07aysrKQotICAgICAgICAgICAgc3VtID0gc3VtICsgaGlkZGVu
W2tdKipXKys7Ci0gICAgICAgIG91dFtqXSA9IHRhbnNpZ19hcHByb3goc3VtKTsKLSAgICB9Cisg
ICBpbnQgaTsKKyAgIGludCBOLCBNOworICAgaW50IHN0cmlkZTsKKyAgIE0gPSBsYXllci0+bmJf
aW5wdXRzOworICAgTiA9IGxheWVyLT5uYl9uZXVyb25zOworICAgc3RyaWRlID0gTjsKKyAgIGZv
ciAoaT0wO2k8TjtpKyspCisgICAgICBvdXRwdXRbaV0gPSBsYXllci0+Ymlhc1tpXTsKKyAgIGdl
bW1fYWNjdW0ob3V0cHV0LCBsYXllci0+aW5wdXRfd2VpZ2h0cywgTiwgTSwgc3RyaWRlLCBpbnB1
dCk7CisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgb3V0cHV0W2ldICo9IFdFSUdIVFNfU0NB
TEU7CisgICBpZiAobGF5ZXItPnNpZ21vaWQpIHsKKyAgICAgIGZvciAoaT0wO2k8TjtpKyspCisg
ICAgICAgICBvdXRwdXRbaV0gPSBzaWdtb2lkX2FwcHJveChvdXRwdXRbaV0pOworICAgfSBlbHNl
IHsKKyAgICAgIGZvciAoaT0wO2k8TjtpKyspCisgICAgICAgICBvdXRwdXRbaV0gPSB0YW5zaWdf
YXBwcm94KG91dHB1dFtpXSk7CisgICB9CiB9Ci0jZW5kaWYKKwordm9pZCBjb21wdXRlX2dydShj
b25zdCBHUlVMYXllciAqZ3J1LCBmbG9hdCAqc3RhdGUsIGNvbnN0IGZsb2F0ICppbnB1dCkKK3sK
KyAgIGludCBpOworICAgaW50IE4sIE07CisgICBpbnQgc3RyaWRlOworICAgZmxvYXQgdG1wW01B
WF9ORVVST05TXTsKKyAgIGZsb2F0IHpbTUFYX05FVVJPTlNdOworICAgZmxvYXQgcltNQVhfTkVV
Uk9OU107CisgICBmbG9hdCBoW01BWF9ORVVST05TXTsKKyAgIE0gPSBncnUtPm5iX2lucHV0czsK
KyAgIE4gPSBncnUtPm5iX25ldXJvbnM7CisgICBzdHJpZGUgPSAzKk47CisgICAvKiBDb21wdXRl
IHVwZGF0ZSBnYXRlLiAqLworICAgZm9yIChpPTA7aTxOO2krKykKKyAgICAgIHpbaV0gPSBncnUt
PmJpYXNbaV07CisgICBnZW1tX2FjY3VtKHosIGdydS0+aW5wdXRfd2VpZ2h0cywgTiwgTSwgc3Ry
aWRlLCBpbnB1dCk7CisgICBnZW1tX2FjY3VtKHosIGdydS0+cmVjdXJyZW50X3dlaWdodHMsIE4s
IE4sIHN0cmlkZSwgc3RhdGUpOworICAgZm9yIChpPTA7aTxOO2krKykKKyAgICAgIHpbaV0gPSBz
aWdtb2lkX2FwcHJveChXRUlHSFRTX1NDQUxFKnpbaV0pOworCisgICAvKiBDb21wdXRlIHJlc2V0
IGdhdGUuICovCisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgcltpXSA9IGdydS0+Ymlhc1tO
ICsgaV07CisgICBnZW1tX2FjY3VtKHIsICZncnUtPmlucHV0X3dlaWdodHNbTl0sIE4sIE0sIHN0
cmlkZSwgaW5wdXQpOworICAgZ2VtbV9hY2N1bShyLCAmZ3J1LT5yZWN1cnJlbnRfd2VpZ2h0c1tO
XSwgTiwgTiwgc3RyaWRlLCBzdGF0ZSk7CisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgcltp
XSA9IHNpZ21vaWRfYXBwcm94KFdFSUdIVFNfU0NBTEUqcltpXSk7CisKKyAgIC8qIENvbXB1dGUg
b3V0cHV0LiAqLworICAgZm9yIChpPTA7aTxOO2krKykKKyAgICAgIGhbaV0gPSBncnUtPmJpYXNb
MipOICsgaV07CisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgdG1wW2ldID0gc3RhdGVbaV0g
KiByW2ldOworICAgZ2VtbV9hY2N1bShoLCAmZ3J1LT5pbnB1dF93ZWlnaHRzWzIqTl0sIE4sIE0s
IHN0cmlkZSwgaW5wdXQpOworICAgZ2VtbV9hY2N1bShoLCAmZ3J1LT5yZWN1cnJlbnRfd2VpZ2h0
c1syKk5dLCBOLCBOLCBzdHJpZGUsIHRtcCk7CisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAg
aFtpXSA9IHpbaV0qc3RhdGVbaV0gKyAoMS16W2ldKSp0YW5zaWdfYXBwcm94KFdFSUdIVFNfU0NB
TEUqaFtpXSk7CisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgc3RhdGVbaV0gPSBoW2ldOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NyYy9tbHAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5oCmluZGV4IDYxOGUyNDZlMmM0YmJl
Zjk3NzIyM2RhOWM2NjI4MDYzMzFhYzgxMDcuLmQ3NjcwNTUwZmQ4ODllM2JmYTExZGE5Y2YzMzJk
ZTM4ZjAwYzhlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5oCkBAIC0xLDUg
KzEsNCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTEgT2N0YXNpYyBJbmMuCi0gICBXcml0
dGVuIGJ5IEplYW4tTWFyYyBWYWxpbiAqLworLyogQ29weXJpZ2h0IChjKSAyMDE3IEplYW4tTWFy
YyBWYWxpbiAqLwogLyoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxNiArMjcs
MzQgQEAKICNpZm5kZWYgX01MUF9IXwogI2RlZmluZSBfTUxQX0hfCiAKLSNpbmNsdWRlICJhcmNo
LmgiCisjaW5jbHVkZSAib3B1c190eXBlcy5oIgorCisjZGVmaW5lIFdFSUdIVFNfU0NBTEUgKDEu
Zi8xMjgpCisKKyNkZWZpbmUgTUFYX05FVVJPTlMgMzIKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAg
IGludCBsYXllcnM7Ci0gICAgY29uc3QgaW50ICp0b3BvOwotICAgIGNvbnN0IGZsb2F0ICp3ZWln
aHRzOwotfSBNTFA7CisgIGNvbnN0IG9wdXNfaW50OCAqYmlhczsKKyAgY29uc3Qgb3B1c19pbnQ4
ICppbnB1dF93ZWlnaHRzOworICBpbnQgbmJfaW5wdXRzOworICBpbnQgbmJfbmV1cm9uczsKKyAg
aW50IHNpZ21vaWQ7Cit9IERlbnNlTGF5ZXI7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgY29uc3Qg
b3B1c19pbnQ4ICpiaWFzOworICBjb25zdCBvcHVzX2ludDggKmlucHV0X3dlaWdodHM7CisgIGNv
bnN0IG9wdXNfaW50OCAqcmVjdXJyZW50X3dlaWdodHM7CisgIGludCBuYl9pbnB1dHM7CisgIGlu
dCBuYl9uZXVyb25zOworfSBHUlVMYXllcjsKKworZXh0ZXJuIGNvbnN0IERlbnNlTGF5ZXIgbGF5
ZXIwOworZXh0ZXJuIGNvbnN0IEdSVUxheWVyIGxheWVyMTsKK2V4dGVybiBjb25zdCBEZW5zZUxh
eWVyIGxheWVyMjsKIAotZXh0ZXJuIGNvbnN0IE1MUCBuZXQ7Cit2b2lkIGNvbXB1dGVfZGVuc2Uo
Y29uc3QgRGVuc2VMYXllciAqbGF5ZXIsIGZsb2F0ICpvdXRwdXQsIGNvbnN0IGZsb2F0ICppbnB1
dCk7CiAKLXZvaWQgbWxwX3Byb2Nlc3MoY29uc3QgTUxQICptLCBjb25zdCBmbG9hdCAqaW4sIGZs
b2F0ICpvdXQpOwordm9pZCBjb21wdXRlX2dydShjb25zdCBHUlVMYXllciAqZ3J1LCBmbG9hdCAq
c3RhdGUsIGNvbnN0IGZsb2F0ICppbnB1dCk7CiAKICNlbmRpZiAvKiBfTUxQX0hfICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NyYy9tbHBfZGF0YS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwX2RhdGEuYwppbmRleCBhODE5ODgwYmZmNWE4
OTk1ZDIxMWI3YmIzNDNhNzAzM2M5YzcxNjkyLi5hZTQxNzhkZjc2NGViZGU0NzJiYTI0OTU1ZGRl
OWE1ZmFlMDExODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHBfZGF0YS5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scF9kYXRh
LmMKQEAgLTEsMTEyICsxLDY3MiBAQAorLypUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBhIEtlcmFzIG1vZGVsKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICNpbmNs
dWRlICJjb25maWcuaCIKICNlbmRpZgogCiAjaW5jbHVkZSAibWxwLmgiCiAKLS8qIFJNUyBlcnJv
ciB3YXMgMC4yODA0OTIsIHNlZWQgd2FzIDE0ODA0NzgxNzMgKi8KLS8qIDAuMDA1OTc2IDAuMDMx
ODIxICgwLjI4MDQ5NCAwLjI4MDQ5MikgZG9uZSAqLworc3RhdGljIGNvbnN0IG9wdXNfaW50OCBs
YXllcjBfd2VpZ2h0c1s4MDBdID0geworICAgLTMwLCAtOSwgMiwgLTEyLCA1LCAtMSwgOCwgOSwK
KyAgIDksIDgsIC0xMywgMTgsIC0xNywgLTM0LCAtNSwgMTcsCisgICAtMTEsIDAsIC00LCAxMCwg
MiwgMTAsIDE1LCAtOCwKKyAgIDIsIC0xLCAwLCA1LCAxMywgLTMsIC0xNiwgMSwKKyAgIC01LCAz
LCA3LCAtMjgsIC0xMywgNiwgMzYsIC0zLAorICAgMTksIC02MCwgLTE3LCAtMjgsIDcsIC0xMSwg
LTMwLCAtNywKKyAgIDIsIC00MiwgLTIxLCAtMywgNiwgLTIyLCAzMywgLTksCisgICA3LCAtMzAs
IDIxLCAtMTQsIDI0LCAtMTEsIC0yMCwgLTE4LAorICAgLTUsIC0xMiwgMTIsIC00OSwgLTUwLCAt
NDksIDE2LCA5LAorICAgLTM3LCAtMSwgOSwgMzQsIC0xMywgLTMxLCAtMzEsIDEyLAorICAgMTYs
IDQ0LCAtNDIsIDIsIC05LCA4LCAtMTgsIC02LAorICAgOSwgMzYsIDE5LCAxMSwgMTMsIDEyLCAt
MjEsIDMsCisgICAtMjgsIC0xMiwgMywgMzMsIDI1LCAtMTQsIDExLCAxLAorICAgLTk0LCAtMzks
IDE4LCAtMTIsIC0xMSwgLTE1LCAtNywgNDksCisgICA1MiwgMTAsIC00MywgOSwgNTcsIDgsIDIx
LCAtNiwKKyAgIDE0LCAtMTUsIDQ0LCAtOCwgNywgLTMwLCAtMTMsIC0yLAorICAgLTksIDI1LCAt
MiwgLTEyNywgMTgsIC0xMSwgLTUyLCAyNiwKKyAgIC0yNywgMjcsIDEwLCAtMTAsIDcsIDQzLCA2
LCAtMjQsCisgICA0MSwgMTAsIC0xOCwgLTI3LCAxMCwgMTcsIDksIDEwLAorICAgLTE3LCAtMTAs
IDIwLCAtNiwgMjIsIDU1LCAzNSwgLTgwLAorICAgMzYsIDI1LCAtMjQsIC0zNiwgMTUsIDksIC0x
OSwgODgsCisgICAxOSwgNjQsIC01MSwgLTM1LCAxNywgMCwgLTcsIDQxLAorICAgLTE2LCAyNywg
NCwgMTUsIC0xLCAxOCwgLTE2LCA0NywKKyAgIC0zOSwgLTU0LCAtOCwgMTMsIC0yNSwgLTIwLCAx
MDIsIC0xOCwKKyAgIC01LCA0NCwgMTEsIC0yOCwgNzEsIDIsIC01MSwgLTUsCisgICA1LCAyLCAt
ODMsIC05LCAtMjksIDgsIDIxLCAtNTMsCisgICA1OCwgLTM3LCAtNywgMTMsIDM4LCA5LCAzNCwg
LTEsCisgICAtNDEsIDIxLCA0LCAtMjQsIC0zNiwgLTMzLCAtMjEsIDMyLAorICAgNzUsIC0yLCAx
LCAtNjgsIC0xLCA0NywgLTI5LCAzMiwKKyAgIDIwLCAxMiwgLTY1LCAtODcsIDUsIDE2LCAtMTIs
IDI0LAorICAgNDAsIDE1LCA3LCAxOSwgLTI2LCAtMTcsIDE3LCA2LAorICAgLTIsIC0zNywgLTMw
LCAtOSwgMzIsIC0xMjcsIC0zOSwgMCwKKyAgIC0zMSwgLTI3LCA0LCAtMjIsIDIzLCAtNiwgLTc3
LCAzNSwKKyAgIC02MSwgMzIsIC0zNywgLTI0LCAxMywgLTExLCAtMSwgLTQwLAorICAgLTMsIDE3
LCAtNywgMTMsIDExLCA1OSwgLTE5LCAxMCwKKyAgIDYsIC0xOCwgMCwgMTMsIDMsIC02LCAtMjMs
IDE5LAorICAgMTEsIC0xNywgMTMsIC0xLCAtODAsIDQwLCAtNTMsIDY5LAorICAgLTI5LCAtNTQs
IDAsIC00LCAzMywgLTI1LCAtMiwgMzgsCisgICAzNSwgMzYsIC0xNSwgNDYsIDIsIC0xMywgLTE2
LCAtOCwKKyAgIC04LCAxMiwgLTI0LCAtOSwgLTU1LCAtNSwgLTksIDMyLAorICAgMTEsIDcsIDEy
LCAtMTgsIC0xMCwgLTg2LCAtMzgsIDU0LAorICAgMzcsIC0yNSwgMTgsIC00MywgNywgLTI3LCAt
MjcsIC01NCwKKyAgIDEzLCA5LCAyMiwgNzAsIDYsIDM1LCAtNywgMjMsCisgICAtMTUsIC00NCwg
LTYsIDcsIC02NiwgLTg1LCAzMiwgNDAsCisgICAtMTksIC05LCAtNywgMTIsIC0xNSwgNywgMiwg
NiwKKyAgIC0zNSwgMTEsIDI4LCAwLCAyNiwgMTQsIDEsIDEsCisgICA0LCAxMiwgMTgsIDM1LCAy
MiwgLTE4LCAtMywgMTQsCisgICAtMSwgNywgMTQsIC04LCAtMTQsIC0zLCA0LCAtMywKKyAgIC0x
OSwgLTcsIC0xLCAtMjUsIC0yNywgMjUsIC0yNiwgLTIsCisgICAzMywgLTIyLCAtMjcsIC0yNSwg
NCwgLTksIDcsIDIxLAorICAgMjYsIC0zMCwgMTAsIC05LCAtMjAsIDExLCAyNywgMTAsCisgICA1
LCAtMTgsIDE0LCAtNCwgMiwgLTE3LCAtNSwgLTcsCisgICAtOSwgLTEzLCAxNSwgMjksIDEsIC0x
MCwgLTE2LCAtMTAsCisgICAzNSwgMzYsIC03LCAtMjIsIC00NCwgMTcsIDMwLCAyMiwKKyAgIDIx
LCAtMSwgMjIsIC0xMSwgMzIsIC04LCAtNywgNSwKKyAgIC0xMCwgNSwgMzAsIC0yMCwgMjksIC0y
MCwgLTM0LCAxMiwKKyAgIC00LCAtNiwgNiwgLTEzLCAxMCwgLTUsIC02OCwgLTEsCisgICAyNCwg
OSwgMTksIC0yNCwgLTY0LCAzMSwgMTksIDI3LAorICAgLTI2LCA3NSwgLTQ1LCA0MSwgMzksIC00
MiwgOCwgNiwKKyAgIDIzLCAtMzAsIDE2LCAtMjUsIDMwLCAzNCwgOCwgLTM4LAorICAgLTMsIDE4
LCAxNiwgLTMxLCAyMiwgLTQsIC05LCAxLAorICAgMjAsIDksIDM4LCAtMzIsIDAsIC00NSwgMCwg
LTYsCisgICAtMTMsIDExLCAtMjUsIC0zMiwgLTIyLCAzMSwgLTI0LCAtMTEsCisgICAtMTEsIC00
LCAtNCwgMjAsIC0zNCwgMjIsIDIwLCA5LAorICAgLTI1LCAyNywgLTUsIDI4LCAtMjksIDI5LCA2
LCAyMSwKKyAgIC02LCAtMTgsIDU0LCA0LCAtNDYsIDIzLCAyMSwgLTE0LAorICAgLTMxLCAzNiwg
LTQxLCAtMjQsIDQsIDIyLCAxMCwgMTEsCisgICA3LCAzNiwgLTMyLCAtMTMsIC01MiwgLTE3LCAy
NCwgMjgsCisgICAtMzcsIC0zNiwgLTEsIDI0LCA5LCAtMzgsIDM1LCA0OCwKKyAgIDE4LCAyLCAt
MSwgNDUsIDEwLCAzOSwgMjQsIC0zOCwKKyAgIDEzLCA4LCAtMTYsIDgsIDI1LCAxMSwgNywgLTI5
LAorICAgLTExLCA3LCAyMCwgLTMwLCAtMzgsIC00NSwgMTQsIC0xOCwKKyAgIC0yOCwgLTksIDY1
LCA2MSwgMjIsIC01MywgLTM4LCAtMTYsCisgICAzNiwgNDYsIDIwLCAtMzksIDMyLCAtNjEsIC02
LCAtNiwKKyAgIC0zNiwgLTMzLCAtMTgsIC0yOCwgNTYsIDEwMSwgNDUsIDExLAorICAgLTI4LCAt
MjMsIC0yOSwgLTYxLCAyMCwgLTQ3LCAyLCA0OCwKKyAgIDI3LCAtMTcsIDEsIDQwLCAxLCAzLCAt
NTEsIDE1LAorICAgMzUsIDI4LCAyMiwgMzUsIDUzLCAtNjEsIC0yOSwgMTIsCisgICAtNiwgLTIx
LCAxMCwgMywgLTIwLCAyLCAtMjUsIDEsCisgICAtNiwgMzEsIDExLCAtMywgMSwgLTEwLCAtNTIs
IDYsCisgICAxMjYsIC0xMDUsIDEyMiwgMTI3LCAtMTI4LCAxMjcsIDEyNywgLTEyOCwKKyAgIDEy
NywgMTA4LCAxMiwgMTI3LCA0OCwgLTEyOCwgLTM2LCAtMTI4LAorICAgMTI3LCAxMjcsIC0xMjgs
IC0xMjgsIDEyNywgODksIC0xMjgsIDEyNywKKyAgIC0xMjgsIC0xMjgsIC0xMjgsIDEyNywgMTI3
LCAtMTI4LCAtMTI4LCAtOTMsCisgICAtODIsIDIwLCAxMjUsIDY1LCAtODIsIDEyNywgMzgsIC03
NCwKKyAgIDgxLCA4OCwgLTg4LCA3OSwgNTEsIC00NywgLTExMSwgLTI2LAorICAgMTQsIDgzLCAt
ODgsIC0xMTIsIDI0LCAzNSwgLTEwMSwgOTgsCisgICAtOTksIC00OCwgLTQ1LCA0NiwgODMsIC02
MCwgLTc5LCA0NSwKKyAgIC0yMCwgLTQxLCA5LCA0LCA1MiwgNTQsIDkzLCAtMTAsCisgICA0LCAx
MywgMywgMTIzLCA2LCA5NCwgLTExMSwgLTY5LAorICAgLTE0LCAtMzEsIDEwLCAxMiwgNTMsIC03
OSwgLTExLCAtMjEsCisgICAtMiwgLTQ0LCAtNzIsIDkyLCA2NSwgLTU3LCA1NiwgLTM4LAorICAg
MTI3LCAtNTYsIC0xMjgsIDEyNywgMTI3LCAtMTI4LCA4NiwgMTE3LAorICAgLTc1LCAtMTI4LCAx
MjcsIC0xOSwgLTk5LCAtMTEyLCAxMjcsIC0xMjgsCisgICAxMjcsIC00OCwgMTE0LCAxMTgsIC0x
MjgsIC0xMjgsIDExNywgLTE3LAorICAgLTYsIDEyMSwgLTEyOCwgMTI3LCAtMTI4LCA4MiwgNTQs
IC0xMDYsCisgICAxMjcsIDEyNywgLTMzLCAxMDAsIC0zOSwgLTIzLCAxOCwgLTc4LAorICAgLTM0
LCAtMjksIC0xLCAtMzAsIDEyNywgLTI2LCAxMjcsIC0xMjgsCisgICAxMjYsIC0xMjgsIDI3LCAt
MjMsIC03OSwgLTEyMCwgLTEyNywgMTI3LAorICAgNzIsIDY2LCAyOSwgNywgLTY2LCAtNTYsIC0x
MTcsIC0xMjgKK307CisKK3N0YXRpYyBjb25zdCBvcHVzX2ludDggbGF5ZXIwX2JpYXNbMzJdID0g
eworICAgNTEsIC0xNiwgMSwgMTMsIC01LCAtNiwgLTE2LCAtNywKKyAgIDExLCAtNiwgMTA2LCAy
NiwgMjgsIC0xNCwgMjEsIC0yOSwKKyAgIDcsIDE4LCAtMTgsIC0xNywgMjEsIC0xNywgLTksIDIw
LAorICAgLTI1LCAtMywgLTM0LCA0OCwgMTEsIC0xMywgLTMxLCAtMjAKK307CisKK3N0YXRpYyBj
b25zdCBvcHVzX2ludDggbGF5ZXIxX3dlaWdodHNbMjMwNF0gPSB7CisgICAyMiwgLTEsIC03LCA3
LCAyOSwgLTI3LCAtMzEsIC0xNywKKyAgIC0xMywgMzMsIDQ0LCAtOCwgMTEsIDMzLCAyNCwgNzgs
CisgICAxNSwgMTksIDMwLCAtMiwgLTI0LCA1LCA0OSwgNSwKKyAgIDM2LCAyOSwgLTE0LCAtMTEs
IC00OCwgLTMzLCAyMSwgLTQyLAorICAgLTM4LCAtMTIsIDU1LCAtMzcsIDU0LCAtOCwgMSwgMzYs
CisgICAxNywgMCwgNTEsIDMxLCA1OSwgNywgLTEyLCA1MywKKyAgIDQsIDMyLCAtMTQsIDQ4LCA1
LCAtMTAsIC0xNiwgLTgsCisgICAxLCAtMTYsIC01NiwgLTI0LCAtNiwgMTgsIC0yLCAyMywKKyAg
IDYsIDQ2LCAtNiwgLTEwLCAyMCwgMzUsIC00NCwgLTE1LAorICAgLTQ5LCAzNiwgMTYsIDUsIC03
LCAtNzksIC02NywgMTIsCisgICA3MCwgLTMsIC03OSwgLTU0LCAtODUsIC0yNCwgNDcsIC0yMiwK
KyAgIDMzLCAyMSwgNjksIC0xLCAxMSwgMjIsIDE0LCAtMTYsCisgICAtMTYsIC0yMiwgLTI4LCAt
MTEsIDExLCAtNDEsIDMxLCAtMjYsCisgICAtMzMsIC0xOSwgLTQsIDI3LCAzMiwgLTUwLCA1LCAt
MTAsCisgICAtMzgsIC0yMiwgLTgsIDM1LCAtMzEsIDEsIC00MSwgLTE1LAorICAgLTExLCA0NCwg
MjgsIC0xNywgLTQxLCAtMjMsIDE3LCAyLAorICAgLTIzLCAtMjYsIC0xMywgLTEzLCAtMTcsIDYs
IDE0LCAtMzEsCisgICAtMjUsIDksIC0xOSwgMzksIC04LCA0LCAzMSwgLTEsCisgICAtNDUsIC0x
MSwgLTI4LCAtOTIsIC00NiwgLTE1LCAyMSwgMTE4LAorICAgLTIyLCA0NSwgLTUxLCAxMSwgLTIw
LCAtMjAsIC0xNSwgMTMsCisgICAtMjEsIC05NywgLTI5LCAtMzIsIC0yMywgLTQyLCA5NCwgMSwK
KyAgIDIzLCAtOCwgNjMsIC0zLCAtNDYsIDE5LCAtMjYsIDMyLAorICAgLTQwLCAtNzQsIC0yNiwg
MjYsIC00LCAtMTMsIDMwLCAtMjAsCisgICAtMzAsIC0yNSwgLTE0LCAtMzEsIC00NSwgLTQzLCA0
LCAtNjAsCisgICAtNDgsIC0xMiwgLTM0LCAyLCAyLCAzLCAxMywgMTUsCisgICAxMSwgMTYsIDUs
IDQ2LCAtOSwgLTU1LCAtMTYsIC01NywKKyAgIDI5LCAxNCwgMzgsIC01MCwgLTIsIC00NCwgLTEx
LCAtOCwKKyAgIDUyLCAtMjcsIC0zOCwgLTcsIDIwLCA0NywgMTcsIC01OSwKKyAgIDAsIDQ3LCA0
NiwgLTYzLCAzNSwgLTE3LCAxOSwgMzMsCisgICA2OCwgLTE5LCAyLCAxNSwgLTE2LCAyOCwgLTE2
LCAtMTAzLAorICAgMjYsIC0zNSwgNDcsIC0zOSwgLTYwLCAzMCwgMzEsIC0yMywKKyAgIC01Miwg
LTEzLCAxMTYsIDQ3LCAtMjUsIDMwLCA0MCwgMzAsCisgICAtMjIsIDIsIDEyLCAtMjcsIC0xOCwg
MzEsIC0xMCwgMjcsCisgICAtOCwgLTY2LCAxMiwgMTQsIDQsIC0yNiwgLTI4LCAtMTMsCisgICAz
LCAxMywgLTI2LCAtNTEsIDM3LCA1LCAyLCAtMjEsCisgICA0NywgMywgMTMsIDI1LCAtNDEsIC0y
NywgLTgsIC00LAorICAgNSwgLTc2LCAtMzMsIDI4LCAxMCwgOSwgLTQ2LCAtNzQsCisgICAxOSwg
MjgsIDI1LCAzMSwgNTQsIC01NSwgNjgsIDM4LAorICAgLTI0LCAtMzIsIDIsIDQsIDY4LCAxMSwg
LTEsIDk5LAorICAgNSwgMTYsIC0yLCAtNzQsIDQwLCAyNiwgLTI2LCAzMywKKyAgIDMxLCAtMSwg
LTY4LCAxNCwgLTYsIDI1LCA5LCAyOSwKKyAgIDYwLCA2MSwgNywgLTcsIDAsIC0yNCwgNywgNzcs
CisgICA0LCAtMSwgMTYsIC03LCAxMywgLTE1LCAtMTksIDI4LAorICAgLTMxLCAtMjQsIC0xNiwg
MzcsIDI0LCAxMywgMzAsIDEwLAorICAgLTMwLCAxMSwgMTEsIC0xMCwgMjIsIDYwLCAyOCwgNDUs
CisgICAtMywgLTQwLCAtNjIsIC01LCAtMTAyLCA5LCAtMzIsIC0yNywKKyAgIC01NCwgMjEsIDE1
LCAtNSwgMzcsIC00MywgLTExLCAzNywKKyAgIC0xOSwgNDcsIC02NCwgLTEyOCwgLTI3LCAtMTE0
LCAyMSwgLTY2LAorICAgNTksIDQ2LCAtMywgLTEyLCAtODcsIC05LCA0LCAxOSwKKyAgIC0xMTMs
IC0zNiwgNzgsIDU3LCAtMjYsIC0zOCwgLTc3LCAtMTAsCisgICA2LCA2LCAtNzUsIDI1LCAtOTcs
IC0xMSwgMzMsIC00NiwKKyAgIDEsIDEzLCAtMjEsIC0zMywgLTIwLCAxNiwgLTYsIC0zLAorICAg
LTExLCAtNCwgLTI3LCAzOCwgOCwgLTQxLCAtMiwgLTMzLAorICAgMTgsIDE5LCAtMjYsIDEsIC0y
OSwgLTIyLCAtNCwgLTE0LAorICAgLTU1LCAtMTEsIC04MCwgLTMsIDExLCAzNCwgOTAsIDUxLAor
ICAgMTEsIDE3LCA0MywgMzYsIDEyNywgLTMyLCAyOSwgMTAzLAorICAgOSwgMjcsIDEzLCA2NCwg
NTYsIDcwLCAtMTQsIDMsCisgICAtMTIsIDEwLCAzNywgMywgMTIsIC0yMiwgLTEwLCA0NiwKKyAg
IDI4LCAxMCwgMjAsIDI2LCAtMjQsIDE4LCA5LCA3LAorICAgMTQsIDM0LCAtNSwgLTcsIDMxLCAt
MTQsIC01NiwgMTEsCisgICAtMTgsIC04LCAtMTcsIC03LCAtMTAsIC00MCwgMTAsIC0zMywKKyAg
IC0zMiwgLTQzLCA1LCA5LCAxMSwgLTQsIDEwLCA1MCwKKyAgIC0xMiwgLTUsIDQ2LCA5LCA3LCAx
LCAxMSwgMTUsCisgICA5MSwgLTE3LCA3LCAtNTAsIDIzLCA2LCAtMzAsIC05OSwKKyAgIDAsIC0x
NywgMTQsIDgsIC0xMCwgLTI1LCAtMzAsIC02OSwKKyAgIC02MiwgMzEsIDEyNywgMTE0LCAtMjMs
IDEwMSwgLTUsIC01NCwKKyAgIC02LCAtMjIsIDcsIC01NiwgMzksIDE4LCAtMjksIDAsCisgICA0
NiwgOCwgLTc5LCA0LCAtMjEsIDE4LCAtMzIsIDYyLAorICAgLTEyLCAtOCwgLTEyLCAtNTgsIDMx
LCAtMzIsIDE3LCA2LAorICAgLTI0LCAyNSwgMjQsIDksIC00LCAtMTksIDQ1LCA2LAorICAgMTcs
IC0xNCwgNSwgLTI3LCAxNiwgLTQsIC00MSwgMjUsCisgICAtMzYsIDUsIDE1LCAxMiwgNTAsIDI3
LCAyNSwgMjMsCisgICAtNDQsIC02OSwgLTksIC0xOSwgLTQ4LCAtOCwgNCwgMTIsCisgICAtNiwg
MTMsIC0xOSwgLTMwLCAtMzYsIDI2LCAzNywgLTEsCisgICAtMywgLTMwLCAtNDIsIC0xNCwgLTEw
LCAtMjAsIDI2LCAtNTQsCisgICAtMjcsIC00NCwgNCwgNzMsIC0yNiwgOTAsIDMyLCAtNjksCisg
ICAtMjksIC0xNiwgMywgMTAzLCAxNSwgLTE3LCAzNywgMjQsCisgICAtMjMsIC0zMSwgMzMsIC0z
NywgLTY0LCAyNSwgMTMsIC04MSwKKyAgIC0yOCwgLTMyLCAyNywgNSwgLTM1LCAtMjMsIDE1LCAt
MjIsCisgICAxOSwgLTcsIDksIDMwLCAxOSwgLTIzLCAyNywgLTEzLAorICAgNDMsIDI5LCAtMjks
IC02LCA5LCAtNDAsIC0zMywgLTMzLAorICAgLTMyLCA5LCAxMSwgLTQ4LCAtOCwgLTIzLCAtNTIs
IDQ2LAorICAgMTcsIC0yMiwgLTQyLCAzNSwgLTE1LCAtNDEsIDE2LCAzNCwKKyAgIDMxLCAtNDIs
IC0xOSwgLTExLCA1NSwgNywgLTM5LCA4OSwKKyAgIC0xMSwgLTMzLCAyMCwgLTE0LCAyMiwgMzIs
IDMsIC0xNywKKyAgIC02LCAxNCwgMzQsIDEsIDU1LCAtMjEsIC05MCwgLTgsCisgICAxOCwgMjcs
IDEzLCAtMjksIDIxLCAxNSwgLTMzLCAtNTEsCisgICAtOSwgLTExLCA0LCAtMTYsIC0xOCwgMjMs
IC00LCAtNCwKKyAgIDQ4LCAxLCA3LCAyOSwgLTE0LCAtMTIsIC0xNiwgMTcsCisgICAzNSwgOCwg
MCwgLTcsIC0yLCA5LCA4LCAxNywKKyAgIC02LCA1MywgLTMyLCAtMjEsIC01MCwgNSwgOTksIC02
MCwKKyAgIC01LCAtNTMsIDEwLCAtMzEsIDEyLCAtNSwgNywgODAsCisgICAzNiwgMTgsIC0zMSwg
OSwgOTgsIDM2LCAtNjMsIC0zNSwKKyAgIDQsIC0xMywgLTI4LCAtMjQsIDI4LCAtMTMsIDE4LCAx
NiwKKyAgIC0xLCAtMTgsIC0zNCwgMTAsIDIwLCA3LCA0LCAyOSwKKyAgIDExLCAyNSwgLTcsIDM2
LCAxNCwgNDUsIDI0LCAxLAorICAgLTE2LCAzMCwgNiwgMzUsIC02LCAtMTEsIC0yNCwgMTMsCisg
ICAtMSwgMjcsIDM5LCAyMCwgNDgsIC0xMSwgLTQsIC0xMywKKyAgIDI4LCAxMSwgLTMxLCAtMTgs
IDMxLCAtMjksIDIyLCAtMiwKKyAgIC0yMCwgLTE2LCA1LCAzMCwgLTEyLCAtMjgsIC0zLCA5MywK
KyAgIC0xNiwgMjMsIDE4LCAtMjksIDYsIC01NCwgLTM3LCAyOCwKKyAgIC0zLCAtMywgLTQ3LCAt
MywgLTM2LCAtNTUsIC0zLCA0MSwKKyAgIC0xMCwgNDcsIC0yLCAyMywgNDIsIC03LCAtNzEsIC0y
NywKKyAgIDgzLCAtNjQsIDcsIC0yNCwgOCwgMjYsIC0xNywgMTUsCisgICAxMiwgMzEsIC0zMCwg
LTM4LCAtMTMsIC0zMywgLTU2LCA0LAorICAgLTE3LCAyMCwgMTgsIDEsIC0zMCwgLTUsIC02LCAt
MzEsCisgICAtMTQsIC0zNywgMCwgMjIsIDEwLCAtMzAsIDM3LCAtMTcsCisgICAxOCwgNiwgNSwg
MjMsIC0zNiwgLTMyLCAxNCwgMTgsCisgICAtMTMsIC02MSwgLTUyLCAtNjksIDQ0LCAtMzAsIDE2
LCAxOCwKKyAgIC00LCAtMjUsIDE0LCA4MSwgMjYsIC04LCAtMjMsIC01OSwKKyAgIDUyLCAtMTA0
LCAxNywgMTE5LCAtMzIsIDI2LCAxNywgMSwKKyAgIDIzLCA0NSwgMjksIC02NCwgLTU3LCAtMTQs
IDczLCAyMSwKKyAgIC0xMywgLTEzLCA5LCAtNjgsIC03LCAtNTIsIDMsIDI0LAorICAgLTM5LCA0
NCwgLTE1LCAyNywgMTQsIDE5LCAtOSwgLTI4LAorICAgLTExLCA1LCAzLCAtMzQsIC0yLCAyLCAy
MiwgLTYsCisgICAtMjMsIDQsIDMsIDEzLCAtMjIsIC0xMywgLTEwLCAtMTgsCisgICAyOSwgNiwg
NDQsIC0xMywgLTI0LCAtOCwgMiwgMzAsCisgICAxNCwgNDMsIDYsIDE3LCAtNzMsIC02LCAtNywg
MjAsCisgICAtODAsIC03LCAtNywgLTI4LCAxNSwgLTY5LCAtMzgsIC01LAorICAgLTEwMCwgLTM1
LCAxNSwgLTc5LCAyMywgMjksIC0xOCwgLTI3LAorICAgMjEsIC02NiwgLTM3LCA4LCAtMjIsIC0z
OSwgNDgsIDQsCisgICAtMTMsIDEsIC05LCAxMSwgLTI5LCAyMiwgNiwgLTQ5LAorICAgMzIsIC0x
NCwgNDcsIC0xOCwgLTQsIDQ0LCAtNTIsIC03NCwKKyAgIDQzLCAzMCwgMjMsIC0xNCwgNSwgMCwg
LTI3LCA0LAorICAgLTcsIDEwLCAtNCwgMTAsIDEsIC0xNiwgMTEsIC0xOCwKKyAgIC0yLCAtNSwg
MiwgLTExLCAwLCAtMjAsIC00LCAzOCwKKyAgIDc0LCA1OSwgMzksIDY0LCAtMTAsIDI2LCAtMywg
LTQwLAorICAgLTY4LCAzLCAtMzAsIC01MSwgOCwgLTE5LCAtMjcsIC00NiwKKyAgIDUxLCA1Miwg
NTQsIDM2LCA5MCwgOTIsIDE0LCAxMywKKyAgIC01LCAwLCAxNiwgLTYyLCAxNiwgMTEsIC00Nywg
LTM3LAorICAgLTYsIC01LCAyMSwgNTQsIC01NywgMzIsIDQyLCAtNiwKKyAgIDYyLCAtOSwgMTYs
IDIxLCAyNCwgOSwgLTEwLCAtNCwKKyAgIDMzLCA1MCwgMTMsIC0xNSwgMSwgLTM1LCAtNDgsIDE4
LAorICAgLTExLCAtMTcsIC02NywgLTEzLCAyMSwgMzgsIC00NCwgMzYsCisgICAtMTYsIDI5LCAx
NywgNSwgLTEwLCAxOCwgMTcsIC0zMiwKKyAgIDIsIDgsIDIyLCAtNTYsIC0xNSwgLTMyLCA0MCwg
NDMsCisgICAxOSwgNDYsIC03LCAtMTAwLCAtOTYsIDE5LCA1MywgMjQsCisgICAyMSwgLTI2LCAt
NDgsIC0xMDEsIC04MiwgNjEsIDM4LCAtODUsCisgICAtMjgsIC0zNCwgLTEsIDYzLCAtNSwgLTUs
IDM5LCAzOSwKKyAgIC0zOCwgMzIsIC0xMiwgLTI4LCAyMCwgNDAsIC04LCAyLAorICAgMzEsIDEy
LCAtMzUsIC0xMywgMjAsIC0yNSwgMzAsIDgsCisgICAzLCAtMTMsIC05LCAtMjAsIDIsIC0xMywg
MjQsIDM3LAorICAgLTEwLCAzMywgNiwgMjAsIC0xNiwgLTI0LCAtNiwgLTYsCisgICAtMTksIC01
LCAyMiwgMjEsIDEwLCAxMSwgLTQsIC0zOSwKKyAgIC0xLCA2LCA0OSwgNDEsIC0xNSwgLTU3LCAy
MSwgLTYyLAorICAgNzcsIC02OSwgLTEzLCAwLCAtNzQsIDEsIC03LCAtMzgsCisgICAtOCwgNiwg
NjMsIDI4LCA0LCAyNiwgLTUyLCA4MiwKKyAgIDYzLCAxMywgNDUsIC0zMywgNDQsIC01MiwgLTY1
LCAtMjEsCisgICAtNDYsIC00OSwgNjQsIC0xNywgMzIsIDI0LCA2OCwgLTM5LAorICAgLTE2LCAt
NSwgLTI2LCAyOCwgNSwgLTYxLCAtMjgsIDIsCisgICAyNCwgMTEsIC0xMiwgLTMzLCA5LCAtMzcs
IC0zLCAtMjgsCisgICAyMiwgLTM3LCAtMTIsIDE5LCAwLCAtMTgsIC0yLCAxNCwKKyAgIDEsIDQs
IDgsIC05LCAtMiwgNDMsIC0xNywgLTIsCisgICAtNjYsIC0zMSwgNTYsIC00MCwgLTg3LCAtMzYs
IC0yLCAtNCwKKyAgIC00MiwgLTQ1LCAtMSwgMzEsIC00MywgLTE1LCAyNywgNjMsCisgICAtMTEs
IDMyLCAtMTAsIC0zMywgMjcsIC0xOSwgNCwgMTUsCisgICAtMjYsIC0zNCwgMjksIC00LCAtMzks
IC02NSwgMTQsIC0yMCwKKyAgIC0yMSwgLTE3LCAtMzYsIDEzLCA1OSwgNDcsIC0zOCwgLTMzLAor
ICAgMTMsIC0zNywgLTgsIC0zNywgLTcsIC02LCAtNzYsIC0zMSwKKyAgIC0xMiwgLTQ2LCA3LCAy
NCwgLTIxLCAtMzAsIC0xNCwgOSwKKyAgIDE1LCAtMTIsIC0xMywgNDcsIC0yNywgLTI1LCAtMSwg
LTM5LAorICAgMCwgMjAsIC05LCA2LCA3LCA0LCAzLCA3LAorICAgMzksIDUwLCAyMiwgLTcsIDE0
LCAtMjAsIDEsIDcwLAorICAgLTI4LCAyOSwgLTQxLCAxMCwgLTE2LCAtNSwgLTI4LCAtMiwKKyAg
IC0zNywgMzIsIC0xOCwgMTcsIDYyLCAtMTEsIC0yMCwgLTUwLAorICAgMzYsIDIxLCAtNjIsIC0x
MiwgLTU2LCA1MiwgNTAsIDE3LAorICAgMywgNDgsIDQ0LCAtNDEsIC0yNSwgMywgMTYsIC0zLAor
ICAgMCwgMzMsIC02LCAxNSwgMjcsIDM0LCAtMjUsIDIyLAorICAgOSwgMTcsIC0xMSwgMzYsIDE2
LCAtMiwgMTIsIDIxLAorICAgLTUyLCA0NSwgLTIsIC0xMCwgNDYsIDIxLCAtMTgsIDY3LAorICAg
LTI4LCAtMTMsIDMwLCAzNywgNDIsIDE2LCAtOSwgMTEsCisgICA3NSwgNywgLTY0LCAtNDAsIC0x
MCwgMjksIDU3LCAtMjMsCisgICA1LCA1MywgLTc3LCAzLCAtMTcsIC01LCA0NywgLTU1LAorICAg
LTM1LCAtMzYsIC0xMywgNTIsIC01MywgLTcxLCA1MiwgLTExMSwKKyAgIC0yMywgLTI2LCAtMjgs
IDI5LCAtNDMsIDU1LCAtMTksIDQzLAorICAgLTE5LCA1NCwgLTEyLCAtMzMsIC00NCwgLTM5LCAt
MTksIC0xMCwKKyAgIC0zMSwgLTEwLCAyMSwgMzgsIC01NywgLTIwLCAyLCAtMjUsCisgICA4LCAt
NiwgNTAsIDEyLCAxNSwgMjUsIC0yNSwgMTUsCisgICAtMzAsIC02LCA5LCAyNSwgMzcsIDE5LCAt
NCwgMzEsCisgICAtMjIsIDIsIDQsIDIsIDM2LCA3LCAzLCAtMzQsCisgICAtODAsIDM2LCAtMTAs
IC0yLCAtNSwgMzEsIC0zNiwgNDksCisgICAtNzAsIDIwLCAtMzYsIDIxLCAyNCwgMjUsIC00Niwg
LTUxLAorICAgMzYsIC01OCwgLTQ4LCAtNDAsIC0xMCwgNTUsIDcxLCA0NywKKyAgIDEwLCAtMSwg
MSwgMiwgLTQ2LCAtNjgsIDE2LCAxMywKKyAgIDAsIC03NCwgLTI5LCA3MywgLTUyLCAtMTgsIC0x
MSwgNywKKyAgIC00NCwgLTgyLCAtMzIsIC03MCwgLTI4LCAtMSwgLTM5LCAtNjgsCisgICAtNiwg
LTQxLCAxMiwgLTIyLCAtMTYsIDQwLCAtMTEsIC0yNSwKKyAgIDUxLCAtOSwgMjEsIDQsIDQsIC0z
NCwgNywgLTc4LAorICAgMTYsIDYsIC0zOCwgLTMwLCAtMiwgLTQ0LCAzMiwgMCwKKyAgIDIyLCA2
NCwgNSwgLTcyLCAtMiwgLTE0LCAtMTAsIC0xNiwKKyAgIC04LCAtMjUsIDEyLCAxMDIsIC01OCwg
MzcsIC0xMCwgLTIzLAorICAgMTUsIDQ5LCA3LCAtNywgMiwgLTIwLCAtMzIsIDQ1LAorICAgLTYs
IDQ4LCAyOCwgMzAsIDMzLCAtMSwgMjIsIC02LAorICAgMzAsIDY1LCAtMTcsIDI5LCA3NCwgMzcs
IC0yNiwgLTEwLAorICAgMTUsIC0yNCwgMTksIC02NiwgMjIsIC0xMCwgLTMxLCAtMSwKKyAgIC0x
OCwgLTksIDExLCAzNywgLTQsIDQ1LCA1LCA0MSwKKyAgIDE3LCAxLCAxLCAyNCwgLTU4LCA0MSwg
NSwgLTUxLAorICAgMTQsIDgsIDQzLCAxNiwgLTEwLCAtMSwgNDUsIDMyLAorICAgLTY0LCAzLCAt
MzMsIC0yNSwgLTMsIC0yNywgLTY4LCAxMiwKKyAgIDIzLCAtMTEsIC0xMywgLTM3LCAtNDAsIDQs
IC0yMSwgLTEyLAorICAgMzIsIC0yMywgLTE5LCA3NiwgNDEsIC0yMywgLTI0LCAtNDQsCisgICAt
NjUsIC0xLCAtMTUsIDEsIDcxLCA2MywgNSwgMjAsCisgICAtMywgMjEsIC0yMywgMzEsIC0zMiwg
MTgsIC0yLCAyNywKKyAgIDMxLCA0NiwgLTUsIC0zOSwgLTUsIC0zNSwgMTgsIC0xOCwKKyAgIC00
MCwgLTEwLCAzLCAxMiwgMiwgLTIsIC0yMiwgNDAsCisgICA1LCAtNiwgNjAsIDM2LCAzLCAyOSwg
LTI3LCAxMCwKKyAgIDI1LCAtNTQsIDUsIDI2LCAzOSwgMzUsIC0yNCwgLTM3LAorICAgMzAsIC05
MSwgMjgsIC00LCAtMjEsIC0yNywgLTM5LCAtNiwKKyAgIDUsIDEyLCAtMTI4LCAzOCwgLTE2LCAy
OSwgLTk1LCAtMjksCisgICA4MiwgLTIsIDM1LCAyLCAxMiwgOCwgLTIyLCAxMCwKKyAgIDgwLCAt
NDcsIDIsIC0yNSwgLTczLCAtNzksIDE2LCAtMzAsCisgICAtMzIsIC02NiwgNDgsIDIxLCAtNDUs
IC0xMSwgLTQ3LCAxNCwKKyAgIC0yNywgLTE3LCAtNywgMTUsIC00NCwgLTE0LCAtNDQsIC0yNiwK
KyAgIC0zMiwgMjYsIC0yMywgMTcsIC03LCAtMjgsIDI2LCAtNiwKKyAgIDI4LCA2LCAtMjYsIDIs
IDEzLCAtMTQsIC0yMywgLTE0LAorICAgMTksIDQ2LCAxNiwgMiwgLTMzLCAtMjEsIDI4LCAtMTcs
CisgICAtNDIsIDQ0LCAtMzcsIDEsIC0zOSwgMjgsIDg0LCAtNDYsCisgICAxNSwgMTAsIDEzLCAt
NDQsIDcyLCAtMjYsIDI2LCAzMiwKKyAgIC0yOCwgLTEyLCAtODMsIDIsIDEwLCAtMzAsIC00NCwg
LTEwLAorICAgLTI4LCA1MywgNDUsIDY1LCAwLCAtMjUsIDU3LCAzNiwKKyAgIC0zMywgNiwgMjks
IDQ0LCAtNTMsIDExLCAxOSwgLTIsCisgICAtMjcsIDM1LCAzMiwgNDksIDQsIDIzLCAzOCwgMzYs
CisgICAyNCwgMTAsIDUxLCAtMzksIDQsIC03LCAyNiwgMzcsCisgICAtMzUsIDExLCAtNDcsIC0x
OCwgMjgsIDE2LCAtMzUsIDQyLAorICAgMTcsIC0yMSwgLTQxLCAyOCwgMTQsIC0xMiwgMTEsIC00
NSwKKyAgIDcsIC00MywgLTE1LCAxOCwgLTUsIDM4LCAtNDAsIC01MCwKKyAgIC0zMCwgLTIxLCA5
LCAtOTgsIDEzLCAxMiwgMjMsIDc1LAorICAgLTU2LCAtNywgLTMsIC00LCAtMSwgLTM0LCAxMiwg
LTQ5LAorICAgMTEsIDI2LCAtMTgsIC0yOCwgLTE3LCAzMywgMTMsIC0xNCwKKyAgIDQwLCAyNCwg
LTcyLCAtMzcsIDEwLCAxNywgLTYsIDIyLAorICAgMTYsIDE2LCAtNiwgLTEyLCAtMzAsIC0xNCwg
MTAsIDQwLAorICAgLTIzLCAxMiwgMTUsIC0zLCAtMTUsIDEzLCAtNTYsIC00LAorICAgLTMwLCAx
LCAtMywgLTE3LCAyNywgNTAsIC01LCA2NCwKKyAgIC0zNiwgLTE5LCA3LCAyOSwgMjIsIDI1LCA5
LCAtMTYsCisgICAtNTgsIC02OSwgLTQwLCAtNjEsIC03MSwgLTE0LCA0MiwgOTMsCisgICAyNiwg
MTEsIC02LCAtNTgsIC0xMSwgNzAsIC01MiwgMTksCisgICA5LCAtMzAsIC0zMywgMTEsIC0zNywg
LTQ3LCAtMjEsIC0yMiwKKyAgIC00MCwgMTAsIDQ3LCA0LCAtMjMsIDE3LCA0OCwgNDEsCisgICAt
NDgsIDE0LCAxMCwgMTUsIDM0LCAtMjMsIC0yLCAtNDcsCisgICAyMywgLTMyLCAtMTMsIC0xMCwg
LTI2LCAtMjYsIC00LCAxNiwKKyAgIDM4LCAtMTQsIDAsIC0xMiwgLTcsIC03LCAyMCwgNDQsCisg
ICAtMSwgLTMyLCAtMjcsIC0xNiwgNCwgLTYsIC0xOCwgMTQsCisgICA1LCA0LCAtMjksIDI4LCA3
LCAtNywgMTUsIC0xMSwKKyAgIC0yMCwgLTQ1LCAtMzYsIDE2LCA4NCwgMzQsIC01OSwgLTMwLAor
ICAgMjIsIDEyNiwgOCwgNjgsIDc5LCAtMTcsIDIxLCAtNjgsCisgICAzNywgNSwgMTUsIDYzLCA0
OSwgMTI3LCAtOTAsIDg1LAorICAgNDMsIDcsIDE2LCA5LCA2LCAtNDUsIC01NywgLTQzLAorICAg
NTcsIDExLCAtMjMsIC0xMSwgLTI5LCA2MCwgLTI2LCAwLAorICAgNywgNDIsIC0yNCwgMTAsIDIz
LCAtMjUsIDgsIC03LAorICAgLTQwLCAxOSwgLTE3LCAzNSwgNCwgMjcsIC0zOSwgLTkxLAorICAg
MjcsIC0zNiwgMzQsIDIsIDE2LCAtMjQsIDI1LCA3LAorICAgLTIxLCA1LCAxNywgMTAsIC0yMiwg
LTMwLCA5LCAtMTcsCisgICAtNjEsIC0yNiwgMzMsIDIxLCA1OCwgLTUxLCAtMTQsIDY5LAorICAg
LTM4LCAyMCwgNywgODAsIC00LCAtNjUsIC02LCAtMjcsCisgICA1MywgLTEyLCA0NywgLTEsIC0x
NSwgMSwgNjAsIDEwMiwKKyAgIC03OSwgLTQsIDEyLCA5LCAyMiwgMzcsIC04LCAtNCwKKyAgIDM3
LCAyLCAtMywgLTE1LCAtMTYsIC0xMSwgLTUsIDE5LAorICAgLTYsIC00MywgMjAsIC0yNSwgLTE4
LCAxMCwgLTI3LCAwLAorICAgLTI4LCAtMjcsIC0xMSwgMTAsIC0xOCwgLTIsIC00LCAtMTYsCisg
ICAyNiwgMTQsIC02LCA3LCAtNiwgMSwgNTMsIC0yLAorICAgLTI5LCAyMywgOSwgLTMwLCAtNiwg
LTQsIC02LCA1NiwKKyAgIDcwLCAwLCAtMzMsIC0yMCwgLTE3LCAtOSwgLTI0LCA0NiwKKyAgIC01
LCAtMTA1LCA0NywgLTQ2LCAtNTEsIDIwLCAyMCwgLTUzLAorICAgLTgxLCAtMSwgLTcsIDc1LCAt
NSwgLTIxLCAtNjUsIDEyLAorICAgLTUyLCAyMiwgLTUwLCAtMTIsIDQ5LCA1NCwgNzYsIC04MSwK
KyAgIDEwLCA0NSwgLTQxLCAtNTksIDE4LCAtMTksIDI1LCAxNCwKKyAgIC0zMSwgLTUzLCAtNSwg
MTIsIDMxLCA4NCwgLTIzLCAyLAorICAgNywgMiwgMTAsIC0zMiwgMzksIC0yLCAtMTIsIDEsCisg
ICAtOSwgMCwgLTEwLCAtMTEsIDksIDE1LCAtOCwgLTIsCisgICAyLCAtMSwgMTAsIDE0LCAtNSwg
LTQwLCAxOSwgLTcsCisgICAtNywgMjYsIC00LCAyLCAxLCAtMjcsIDM1LCAzMiwKKyAgIDIxLCAt
MzEsIDI2LCA0MywgLTksIDQsIC0zMiwgNDAsCisgICAtNjIsIC01MiwgMzYsIDIyLCAzOCwgMjIs
IDM2LCAtOTYsCisgICA2LCAtMTAsIC0yMywgLTQ5LCAxNSwgLTMzLCAtMTgsIC0zLAorICAgMCwg
NDEsIDIxLCAtMTksIDIxLCAyMywgLTM5LCAtMjMsCisgICAtNiwgNiwgNDcsIDU2LCA0LCA3NCwg
MCwgLTk4LAorICAgMjksIC00NywgLTE0LCAtMzYsIDIxLCAtMjIsIDIyLCAxNiwKKyAgIDEzLCAx
MiwgMTYsIC01LCAxMywgMTcsIC0xMywgLTE1LAorICAgMSwgLTM0LCAtMjYsIDI2LCAxMiwgMzIs
IDI3LCAxMywKKyAgIC02NywgMjcsIDIsIDgsIDEwLCAxOCwgMTYsIDIwLAorICAgLTE3LCAtMTcs
IDU3LCAtNjQsIDUsIDE0LCAxOSwgMzEsCisgICAtMTgsIC00NCwgLTQ2LCAtMTYsIDQsIC0yNSwg
MTcsIC0xMjYsCisgICAtMjQsIDM5LCA0LCA4LCA1NSwgLTI1LCAtMzQsIDM5LAorICAgLTE2LCAz
LCA5LCA3MSwgNzIsIC0zMSwgLTU1LCA2LAorICAgMTAsIC0yNSwgMzIsIC04NSwgLTIxLCAxOCwg
LTgsIDE1LAorICAgMTIsIC0yNywgLTcsIDEsIC0yMSwgLTIsIC01LCA0OCwKKyAgIC0xNiwgMTgs
IDEsIC0yMiwgLTI2LCAxNiwgMTQsIC0zMSwKKyAgIDI3LCAtNiwgLTE1LCAtMjEsIDQsIC0xNCwg
MTgsIC0zNgorfTsKKworc3RhdGljIGNvbnN0IG9wdXNfaW50OCBsYXllcjFfcmVjdXJfd2VpZ2h0
c1sxNzI4XSA9IHsKKyAgIDIwLCA2NywgLTk5LCAxMiwgNDEsIC0yNSwgNDksIC00NCwKKyAgIDM1
LCA4MSwgMTEwLCA0NywgMzQsIC02NiwgLTE0LCAxNCwKKyAgIC02MCwgMzQsIDI5LCAtNzMsIDEw
LCA0MSwgMzUsIDg5LAorICAgNywgLTM1LCAyMiwgNywgMjcsIC0yMCwgLTYsIDU2LAorICAgMjYs
IDY2LCA2LCAzMywgLTU1LCA1MywgMSwgLTIxLAorICAgMTQsIDE3LCA2OCwgNTUsIDU5LCAwLCAx
OCwgLTksCisgICA1LCAtNDEsIDYsIC01LCAtMTE0LCAtMTIsIDI5LCA0MiwKKyAgIC0yMywgMTAs
IDgxLCAtMjcsIDIwLCAtNTMsIC0zMCwgLTYyLAorICAgNDAsIDk1LCAyNSwgLTQsIDMsIDE4LCAt
OCwgLTE1LAorICAgLTI5LCAtODIsIDIsIC01NywgLTMsIC02MSwgLTI5LCAtMjksCisgICA0OSwg
MiwgLTU1LCA1LCAtNjksIC05OSwgLTQ5LCAtNTEsCisgICA2LCAtMjUsIDEyLCA4OSwgNDQsIC0z
MywgNSwgNDEsCisgICAxLCAyMywgLTM3LCAtMzcsIC0yOCwgLTQ4LCAzLCA0LAorICAgLTQxLCAt
MzAsIC01NywgLTM1LCAtMzksIC0xLCAtMTMsIC01NiwKKyAgIC01LCA1MCwgNDksIDQxLCAtNCwg
LTQsIDMzLCAtMjIsCisgICAtMSwgMzMsIDM0LCAxOCwgNDAsIC00MiwgMTIsIDEsCisgICAtNiwg
LTIsIDE4LCAxNywgMzksIDQ0LCAxMSwgNjUsCisgICAtNjAsIC00NSwgMTAsIDkxLCAyMSwgOSwg
LTYyLCAtMTEsCisgICA4LCA2OSwgMzcsIDI0LCAtMzAsIDIxLCAyNiwgLTI3LAorICAgMSwgLTI4
LCAyNCwgNjYsIC04LCA2LCAtNzEsIDM0LAorICAgMjQsIDQ0LCA1OCwgLTc4LCAtMTksIDU3LCAx
NywgLTYwLAorICAgMSwgMTIsIC0zLCAtMSwgLTQwLCAyMiwgMTEsIC01LAorICAgMjUsIDEyLCAx
LCA3MiwgNzksIDcsIC01MCwgMjMsCisgICAxOCwgMTMsIDIxLCAtMTEsIC0yMCwgNSwgNzcsIC05
NCwKKyAgIDI0LCAxNSwgNTcsIC01MSwgMywgMzYsIDUzLCAtMSwKKyAgIDQsIDE0LCAzMCwgLTMx
LCAyMiwgNDAsIDMyLCAtMTEsCisgICAtMzQsIC0zNiwgLTU5LCA1OCwgMjUsIDIxLCAtNTQsIC0y
MywKKyAgIDQwLCA0NiwgMTgsIDAsIDEyLCA1NCwgLTk2LCAtOTksCisgICAtNTksIDUsIDExOSwg
LTM4LCA1MCwgNTUsIDEyLCAtMTYsCisgICA2NywgMCwgMzQsIDM1LCAzOSwgMzUsIC0xLCA2OSwK
KyAgIDI0LCAyNywgLTMwLCAtMzUsIC00LCAtNzAsIDIsIC00NCwKKyAgIC03LCAtNiwgMTksIC05
LCA2MCwgNDQsIC0yMSwgLTEwLAorICAgMzcsIDQzLCAtMTYsIC0zLCAzMCwgLTE1LCAtNjUsIDMx
LAorICAgLTU1LCAxOCwgLTk4LCA3NiwgNjQsIDI1LCAyNCwgLTE4LAorICAgLTcsIC02OCwgLTEw
LCAzOCwgMjcsIC02MCwgMzYsIDMzLAorICAgMTYsIDMwLCAzNCwgLTM5LCAtMzcsIDMxLCAxMiwg
NTMsCisgICAtNTQsIDE0LCAtMjYsIC00OSwgLTEyOCwgLTEzLCAtNSwgLTIyLAorICAgLTExLCAt
ODUsIDU1LCAtOCwgLTUxLCAtMTEsIC0zMywgLTEwLAorICAgLTMxLCAtNzYsIC00MSwgMjMsIDQ0
LCAtNDAsIC01NCwgLTEyNywKKyAgIC0xMDEsIDE5LCAtMjMsIC0xNSwgMTUsIDI3LCA1OCwgLTYw
LAorICAgOCwgMTQsIC0zMywgMSwgNDgsIC05LCAtMTEsIC0xMjMsCisgICAzLCA1MywgMjMsIDQs
IC0yOCwgMjIsIDIsIC0yOSwKKyAgIC02NywgMzYsIDEyLCA3LCA1NSwgLTIxLCA4OCwgMjAsCisg
ICAtMSwgLTIxLCAtMTcsIDMsIDQxLCAzMiwgLTEwLCAtMTQsCisgICAtNSwgLTU3LCA2NywgNTcs
IDIxLCAyMywgLTIsIC0yNywKKyAgIC03MywgLTI0LCAxMjAsIDIxLCAxOCwgLTM1LCA0MiwgLTcs
CisgICAzLCAtNDUsIC0yNSwgNzYsIC0zNCwgNTAsIDExLCAtNTQsCisgICAtOTEsIDMsIC0xMTMs
IC0yMCwgLTUsIDQ3LCAxNSwgLTQ3LAorICAgMTcsIDI3LCAtMywgLTI2LCAtNywgMTAsIDcsIDc0
LAorICAgLTQwLCA2NCwgLTcsIC01LCAtMjQsIC00OSwgLTI0LCAtMywKKyAgIC0xMCwgMjcsIC0x
NywgLTgsIC0zLCAxNCwgLTI3LCAzMywKKyAgIDEzLCAzOSwgMjgsIC03LCAtMzgsIDI5LCAxNiwg
NDQsCisgICAxOSwgNTUsIC0zLCA5LCAtMTMsIC01NywgNDMsIDQzLAorICAgMzEsIDAsIC05Mywg
LTE3LCAxOSwgLTU2LCA0LCAtMTIsCisgICAtMjUsIDM3LCAtODUsIC0xMywgLTExOCwgMzMsIC0x
NywgNTYsCisgICA3MSwgLTgwLCAtNCwgNiwgLTExLCAtMTgsIDQ3LCAtNTIsCisgICAyNSwgOSwg
NDgsIC0xMDcsIDEsIDIxLCAyMCwgLTMsCisgICAxMCwgLTE2LCAtNCwgMjQsIDE3LCAzMSwgLTYx
LCAtMTgsCisgICAtNTAsIDI0LCAtMTAsIDEyLCA3MSwgMjYsIDExLCAtMywKKyAgIDQsIDEsIDAs
IC03LCAtNDAsIDE4LCAzOCwgLTM0LAorICAgMzgsIDE3LCA4LCAtMzQsIDIsIDIxLCAxMjMsIC0z
MiwKKyAgIC0yNiwgNDMsIDE0LCAtMzQsIC0xLCAtOSwgMzcsIC0xNiwKKyAgIDYsIC0xNywgLTYy
LCA2OCwgMjIsIDE3LCAxMSwgLTc1LAorICAgMzMsIC04MCwgNjIsIC05LCAtNzUsIDc2LCAzNiwg
LTQxLAorICAgLTgsIC00MCwgLTExLCAtNzEsIDQwLCAtMzksIDYyLCAtNDksCisgICAtODEsIDE2
LCAtOSwgLTUyLCA1MiwgNjEsIDE3LCAtMTAzLAorICAgLTI3LCAtMTAsIC04LCAtNTQsIC01Nywg
MjEsIDIzLCAtMTYsCisgICAtNTIsIDM2LCAxOCwgMTAsIC01LCA4LCAxNSwgLTI5LAorICAgNSwg
LTE5LCAtMzcsIDgsIC01MywgNiwgMTksIC0zNywKKyAgIDM4LCAtMTcsIDQ4LCAxMCwgMCwgODEs
IDQ2LCA3MCwKKyAgIC0yOSwgMTAxLCAxMSwgNDQsIC00NCwgLTMsIDI0LCAxMSwKKyAgIDMsIDE0
LCAtOSwgMTEsIDE0LCAtNDUsIDEzLCA0NiwKKyAgIC0zLCAtNTcsIDY4LCA0NCwgNjMsIDk4LCAy
NSwgLTI4LAorICAgLTIzLCAxNSwgMzIsIC0xMCwgNTMsIC02LCAtMiwgLTksCisgICAtNiwgMTYs
IC0xMDcsIC0xMSwgLTExLCAtMjgsIDU5LCA1NywKKyAgIC0yMiwgMzgsIDQyLCA4MywgMjcsIDUs
IDI5LCAtMzAsCisgICAxMiwgLTIxLCAtMTMsIDMxLCAzOCwgLTIxLCA1OCwgLTEwLAorICAgLTEw
LCAtMTUsIC0yLCAtNSwgMTEsIDEyLCAtNzMsIC0yOCwKKyAgIC0zOCwgMjIsIDIsIC0yNSwgNzMs
IC01MiwgLTEyLCAtNTUsCisgICAzMiwgLTYzLCAyMSwgNTEsIDMzLCA1MiwgLTI2LCA1NSwKKyAg
IC0yNiwgLTI2LCA1NywgLTMyLCAtNCwgLTUyLCAtNjEsIDIxLAorICAgLTMzLCAtOTEsIC01MSwg
NjksIC05MCwgLTUzLCAtMzgsIC00NCwKKyAgIDEyLCAtNzYsIC0yMCwgNzcsIC00NSwgLTcsIDg2
LCA0MywKKyAgIC0xMDksIC0zMywgLTEwNSwgLTQwLCAtMTIxLCAtMTAsIDAsIC03MiwKKyAgIDQ1
LCAtNTEsIC03NSwgLTQ5LCAtMzgsIC0xLCAtNjIsIDE4LAorICAgLTEsIDMwLCAtNDQsIC0xNCwg
LTEwLCAtNjcsIDQwLCAtMTAsCisgICAtMzQsIDQ2LCAtNjQsIC0zMiwgMjksIC0xMywgMzMsIDMs
CisgICAtMzIsIC01LCAyOCwgLTI3LCAtMjUsIDkzLCAyNCwgNjgsCisgICAtNDAsIDU3LCAyMywg
LTMsIC0yMSwgLTU4LCAxNywgLTM5LAorICAgLTE3LCAtMjIsIC04OSwgMTEsIDE4LCAtNDYsIDI3
LCAyNCwKKyAgIDQ2LCAxMjcsIDYxLCA4NywgMzEsIDEyNywgLTM2LCA0NywKKyAgIC0yMywgNDcs
IDEyNywgLTI0LCAxMTAsIDEyMiwgMzAsIDEwMCwKKyAgIDAsIDk2LCAtMTIsIDYsIDUwLCA0NCwg
LTEzLCA3MywKKyAgIDQsIDU1LCAtMTEsIC0xNSwgNDksIDQyLCAtNiwgMjAsCisgICAtMzUsIDU4
LCAxOCwgMzgsIDQyLCA3MiwgMTksIC0yMSwKKyAgIDExLCA5LCAtMzcsIDcsIDI5LCAzMSwgMTYs
IC0xNywKKyAgIDEzLCAtNTAsIDE5LCA1LCAtMjMsIDUxLCAtMTYsIC01LAorICAgNCwgLTI0LCA3
NiwgMTAsIC01MywgLTI4LCAtNywgLTY1LAorICAgNzQsIDQwLCAtMTYsIC0yOSwgMzIsIC0xNiwg
LTQ5LCAtMzUsCisgICAtMywgNTksIC05NiwgLTUwLCAtNDMsIC00MywgLTYxLCAtMTUsCisgICAt
OCwgLTM2LCAtMzQsIC0zMywgLTE0LCAxMSwgLTMsIC0zOSwKKyAgIDQsIC0xMTQsIC0xMjMsIC0x
MSwgLTQ5LCAtMjEsIDE0LCAtNTYsCisgICAxLCA0MywgLTYzLCAyNiwgNDAsIDE4LCAtMTAsIC0y
NiwKKyAgIC0xNCwgLTE1LCAtMzUsIC0zNSwgLTExLCAzMiwgLTQ0LCAtNjcsCisgICAyLCAyMiwg
NywgMywgLTksIC0zMCwgLTUxLCAtMjgsCisgICAyOCwgNiwgLTIyLCAxNiwgMzQsIC0yNSwgLTUy
LCAtNTQsCisgICAtOCwgLTYsIDUsIDgsIDIwLCAtMTYsIC0xNywgLTQ0LAorICAgMjcsIDMsIDMx
LCAtNSwgLTQ4LCAtMSwgLTMsIDExNiwKKyAgIDExLCA3MSwgLTMxLCAtNDcsIDEwOSwgNTAsIC0y
MiwgLTEyLAorICAgLTU3LCAzMiwgNjYsIDgsIC0yNSwgLTkzLCAtNTQsIC0xMCwKKyAgIDE5LCAt
NzYsIC0zNCwgOTcsIDQ4LCAtMzYsIC0xOCwgLTMwLAorICAgLTM5LCAtMjYsIC0xMiwgMjgsIDE0
LCAxMiwgLTEyLCAtMzEsCisgICAzOCwgMiwgMTAsIDQsIC00MCwgMjAsIDE2LCAtNjEsCisgICAy
LCA2NCwgMzksIDUsIDE1LCAzMywgNDAsIC02MSwKKyAgIC00OSwgOTMsIC0xMCwgMzMsIDI4LCAt
MTEsIC0yNywgLTE4LAorICAgMzksIC02MiwgLTYsIC02LCA2MiwgMTEsIC04LCAzOCwKKyAgIC02
NywgMTIsIDI3LCAzOSwgLTI3LCAxMjMsIC0xOCwgLTYsCisgICAtNjUsIDgzLCAtNjQsIDIwLCAx
OSwgLTExLCAzMywgMjQsCisgICAxNywgNTYsIDc4LCA3LCAtMTUsIDU0LCAtMTAxLCAtOSwKKyAg
IDExNSwgLTk2LCA1MCwgNTEsIDM1LCAzNCwgMjcsIDM3LAorICAgLTQwLCAtMTEsIDgsIC0zNiwg
NDIsIC00NSwgMiwgLTIzLAorICAgMCwgNjcsIC04LCAtOSwgLTEzLCA1MCwgLTE0LCAtMjcsCisg
ICA0LCAwLCAtOCwgLTE0LCAzMCwgLTksIDI5LCAxNSwKKyAgIDksIC0zOCwgMzcsIC04LCA1MCwg
LTQ2LCA1NCwgNDEsCisgICAtMTEsIC04LCAtMTEsIC0yNiwgMzksIDQ1LCAxNCwgLTI2LAorICAg
LTE3LCAtMjcsIDY5LCAzOCwgMzksIDk4LCA2NiwgMCwKKyAgIDQyLCAxMjMsIC0xMDEsIC0xOSwg
LTgzLCAxMTcsIC0zMiwgNTYsCisgICAxMCwgMTIsIC04OCwgNzksIC01MywgNTYsIDYzLCA5NSwK
KyAgIC02MiwgOSwgMzYsIC0xMywgLTc5LCAtMTYsIDM3LCAtNDYsCisgICAzNSwgLTM0LCAxNCwg
MTcsIC01NCwgNSwgMjEsIC03LAorICAgNywgNjMsIDU2LCAxNSwgMjcsIC03NiwgLTI1LCA0LAor
ICAgLTI2LCAtNjMsIDI4LCAtNjcsIC01MiwgNDMsIC00NywgLTcwLAorICAgNDAsIC0xMiwgNDAs
IC02NiwgLTM3LCAwLCAzNSwgMzcsCisgICAtNTMsIDQsIC0xNywgLTUxLCAxMSwgMjEsIDE0LCAt
MzQsCisgICAtNCwgMjQsIC00MiwgMjksIDIyLCA3LCAyOCwgMTIsCisgICAzNywgMzksIC0zOSwg
LTE5LCA2NSwgLTYwLCAtNTAsIC0yLAorICAgMSwgODIsIDM5LCAxOSwgLTIzLCAtNDMsIC0yMiwg
LTY3LAorICAgLTM1LCAtMzQsIDMyLCAxMDIsIDgxLCAxMjcsIDM2LCA2NywKKyAgIC00NSwgMSwg
LTY3LCAtNTIsIC00LCAzNSwgMjAsIDI4LAorICAgNzEsIDg2LCAtMzUsIC05LCAtODMsIC0zNCwg
MTIsIDksCisgICAtMjMsIDIsIDE0LCAyOCwgLTIzLCA3LCAtMjUsIDQ1LAorICAgNywgMTcsIC0z
NywgMCwgLTE5LCAzMSwgMjYsIDQwLAorICAgLTI3LCAtMTYsIDE3LCA1LCAtMjEsIDIzLCAyNCwg
OTYsCisgICAtNTUsIDUyLCAtMTksIC0xNCwgLTYsIDEsIDUwLCAtMzQsCisgICA4NiwgLTUzLCAz
OCwgMiwgLTUyLCAtMzYsIC0xMywgNjAsCisgICAtODUsIC0xMjAsIDMyLCA3LCAtMTIsIDIyLCA3
MCwgLTcsCisgICAtOTQsIDM4LCAtNzYsIC0zMSwgLTIwLCAxNSwgLTI4LCA3LAorICAgNiwgNDAs
IDUzLCA4OCwgMywgMzgsIDE4LCAtOCwKKyAgIC0yMiwgLTIzLCA1MSwgMzcsIC05LCAxMywgLTMy
LCAyNSwKKyAgIC0yMSwgMjcsIDMxLCAyMCwgMTgsIC05LCAtMTMsIDEsCisgICAyMSwgLTI0LCAt
MTMsIDM5LCAxNSwgLTExLCAtMjksIC0zNiwKKyAgIDE4LCAxNSwgOCwgMjcsIDIxLCAtOTQsIC0x
LCAtMjIsCisgICA0OSwgNjYsIC0xLCA2LCAtMywgLTQwLCAtMTgsIDYsCisgICAyOCwgMTIsIDMz
LCAtNTksIDYyLCA2MCwgLTQ4LCA5MCwKKyAgIC0xLCAxMDgsIDksIDE4LCAtMiwgMjcsIDc3LCAt
NjUsCisgICA4MiwgLTQ4LCAtMzgsIC0xOSwgLTExLCAxMjcsIDUwLCA2NiwKKyAgIDE4LCAtMTMs
IC0yMiwgNjAsIC0zOCwgNDAsIC0xNCwgLTI2LAorICAgLTEzLCAzOCwgNjcsIDU3LCAzMCwgMzMs
IDI2LCAzNiwKKyAgIDM4LCAtMTcsIDI3LCAtMjgsIDIwLCAxMiwgLTY0LCAxOCwKKyAgIDUsIC0z
MywgLTI3LCAxMywgLTI2LCAzMiwgMzUsIC01LAorICAgLTQ4LCAtMTQsIDkyLCA0MywgLTQ3LCAt
MTQsIDQwLCAxMSwKKyAgIDUxLCA2NiwgMjIsIC02MywgLTE2LCAtNjEsIDQsIC0yOCwKKyAgIDI3
LCAyMCwgLTMzLCAtMzAsIC0yMSwgLTI5LCAtNTMsIDMxLAorICAgLTQwLCAyNCwgNDMsIC00LCAt
MTksIDIxLCA2NywgMjAsCisgICAxMDAsIC0xNiwgLTkzLCA3OCwgLTYsIC0xOCwgLTUyLCAtMzcs
CisgICAtOSwgNjYsIC0zMSwgLTgsIDI2LCAxOCwgNCwgMjQsCisgICAtMjIsIDE3LCAtMiwgLTEz
LCAyNywgMCwgOCwgLTE4LAorICAgLTI1LCA1LCAtMjEsIC0yNCwgLTcsIDE4LCAtOTMsIDIxLAor
ICAgNywgMiwgLTc1LCA2OSwgNTAsIC01LCAtMTUsIC0xNywKKyAgIDYwLCAtNDIsIDU1LCAxLCAt
NCwgMywgMTAsIDQ2LAorICAgMTYsIC0xMywgNDUsIC03LCAtMTAsIC00NCwgLTEwOCwgNDksCisg
ICAyLCAtMTUsIC02NCwgLTEyLCAtNzIsIDMyLCAtMzgsIC00NSwKKyAgIDEwLCAtNTQsIDEzLCAt
MTMsIC0yNywgLTM2LCAtNjQsIDU4LAorICAgLTYyLCAtMTAxLCA4OCwgLTg2LCAtNzEsIC0zOSwg
LTksIC0xMjgsCisgICAzMiwgMTUsIC00LCA1NCwgLTE2LCAtMzksIC0yNiwgLTM2LAorICAgNDYs
IDQ4LCAtNjQsIC0xMCwgMTksIDMwLCAtMTMsIDM0LAorICAgLTgsIDUwLCA2MCwgLTIyLCAtNiwg
LTExLCAtMzAsIDUsCisgICA1MCwgMzIsIDU2LCAwLCAyNSwgNiwgNjgsIDExLAorICAgLTI5LCA0
NSwgLTksIC0xMiwgNCwgMSwgMTgsIC00OSwKKyAgIDAsIC0zOCwgLTE5LCA5MCwgMjksIDM1LCA1
MSwgOCwKKyAgIC00OCwgOTYsIC0xLCAtMTIsIC05LCAtMzIsIC02MywgLTY1LAorICAgLTcsIDM4
LCA4OSwgMjgsIC04NSwgLTI4LCAtMjMsIC0yNSwKKyAgIC0xMjgsIDU2LCA3OSwgLTM2LCA5OSwg
LTYsIC0zNywgNywKKyAgIC0xMywgLTY5LCAtNDYsIC0yOSwgMjUsIDY0LCAtMjEsIDE3LAorICAg
MSwgNDIsIC02NiwgMSwgODAsIDI2LCAtMzIsIDIxLAorICAgMTUsIDE1LCA2LCA2LCAtMTAsIDE1
LCAxMjcsIDUsCisgICAzOCwgMjcsIDg3LCAtNTcsIC0yNSwgMTEsIDcyLCAtMjEsCisgICAtNSwg
MTEsIC0xMywgLTY2LCA3OCwgMzYsIC0zLCA0MSwKKyAgIC0yMSwgOCwgLTMzLCAyMywgNzMsIDI4
LCA1NywgLTI1LAorICAgLTUsIDQsIC0yMiwgLTQ3LCAxNSwgNCwgLTU3LCAtNzIsCisgICAzMywg
MSwgMTgsIDIsIDUzLCAtNzEsIC05OSwgLTIxLAorICAgLTMsIC0xMTEsIDEwOCwgNzEsIC0xNCwg
ODIsIDI1LCA2MSwKKyAgIC00OCwgNSwgOSwgLTUxLCAtMjAsIC0yNSwgLTMsIDE0LAorICAgLTMz
LCAxNCwgLTMsIC0zNCwgMjIsIDEyLCAtMTksIC0zOCwKKyAgIC0xNiwgMiwgMjEsIDE2LCAyNiwg
LTMxLCA3NSwgNDQsCisgICAtMzEsIDE2LCAyNiwgNjYsIDE3LCAtOSwgLTIyLCAtMjIsCisgICAy
MiwgLTQ0LCAyMiwgMjcsIDIsIDU4LCAtMTQsIDEwLAorICAgLTczLCAtNDIsIDU1LCAtMjUsIC02
MSwgNzIsIC0xLCAzMCwKKyAgIC01OCwgLTI1LCA2MywgMjYsIC00OCwgLTQwLCAyNiwgLTMwLAor
ICAgNjAsIDgsIC0xNywgLTEsIC0xOCwgLTIwLCA0MywgLTIwLAorICAgLTQsIC0yOCwgMTI3LCAt
MTA2LCAyOSwgNzAsIDY0LCAtMjcsCisgICAzOSwgLTMzLCAtNSwgLTg4LCAtNDAsIC01MiwgMjYs
IDQ0LAorICAgLTE3LCAyMywgMiwgLTQ5LCAyMiwgLTksIC04LCA4NiwKKyAgIDQ5LCAtNDMsIC02
MCwgMSwgMTAsIDQ1LCAzNiwgLTUzLAorICAgLTQsIDMzLCAzOCwgNDgsIC03MiwgMSwgMTksIDIx
LAorICAgLTY1LCA0LCAtNSwgLTYyLCAyNywgLTI1LCAxNywgLTYsCisgICA2LCAtNDUsIC0zOSwg
LTQ2LCA0LCAyNiwgMTI3LCAtOSwKKyAgIDE4LCAtMzMsIC0xOCwgLTMsIDMzLCAyLCAtNSwgMTUs
CisgICAtMjYsIC0yMiwgLTExNywgLTYzLCAtMTcsIC01OSwgNjEsIC03NCwKKyAgIDcsIC00Nywg
LTU4LCAtMTI4LCAtNjcsIDE1LCAtMTYsIC0xMjgsCisgICAxMiwgMiwgMjAsIDksIC00OCwgLTQw
LCA0MywgMywKKyAgIC00MCwgLTE2LCAtMzgsIC02LCAtMjIsIC0yOCwgLTE2LCAtNTksCisgICAt
MjIsIDYsIC01LCAxMSwgLTEyLCAtNjYsIC00MCwgMjcsCisgICAtNjIsIC00NCwgLTE5LCAzOCwg
LTMsIDM5LCAtOCwgNDAsCisgICAtMjQsIDEzLCAyMSwgNTAsIC02MCwgLTIyLCA1MywgLTI5LAor
ICAgLTYsIDEsIDIyLCAtNTksIDAsIDE3LCAtMzksIDExNQorfTsKKworc3RhdGljIGNvbnN0IG9w
dXNfaW50OCBsYXllcjFfYmlhc1s3Ml0gPSB7CisgICAtNDIsIDIwLCAxNiwgMCwgMTA1LCA2MCwg
MSwgLTk3LAorICAgMjQsIDYwLCAxOCwgMTMsIDYyLCAyNSwgMTI3LCAzNCwKKyAgIDc5LCA1NSwg
MTE4LCAxMjcsIDk1LCAzMSwgLTQsIDg3LAorICAgMjEsIDEyLCAyLCAtMTQsIDE4LCAyMywgOCwg
MTcsCisgICAtMSwgLTgsIDUsIDQsIDI0LCAzNywgMjEsIDEzLAorICAgMzYsIDEzLCAxNywgMTgs
IDM3LCAzMCwgMzMsIDEsCisgICA4LCAtMTYsIC0xMSwgLTUsIC0zMSwgLTMsIC01LCAwLAorICAg
NiwgMywgNTgsIC03LCAtMSwgLTE2LCA1LCAtMTMsCisgICAxNiwgMTAsIC0yLCAtMTQsIDExLCAt
NCwgMywgLTExCit9OworCitzdGF0aWMgY29uc3Qgb3B1c19pbnQ4IGxheWVyMl93ZWlnaHRzWzQ4
XSA9IHsKKyAgIC0xMTMsIC04OCwgMzEsIC0xMjgsIC0xMjYsIC02MSwgODUsIC0zNSwKKyAgIDEx
OCwgLTEyOCwgLTYxLCAxMjcsIC0xMjgsIC0xNywgLTEyOCwgMTI3LAorICAgMTA0LCAtOSwgLTEy
OCwgMzMsIDQ1LCAxMjcsIDUsIDgzLAorICAgODQsIC0xMjgsIC04NSwgLTEyOCwgLTQ1LCA0OCwg
LTUzLCAtMTI4LAorICAgNDYsIDEyNywgLTE3LCAxMjUsIDExNywgLTQxLCAtMTE3LCAtOTEsCisg
ICAtMTI3LCAtNjgsIC0xLCAtODksIC04MCwgMzIsIDEwNiwgNworfTsKIAotc3RhdGljIGNvbnN0
IGZsb2F0IHdlaWdodHNbNDUwXSA9IHsKK3N0YXRpYyBjb25zdCBvcHVzX2ludDggbGF5ZXIyX2Jp
YXNbMl0gPSB7CisgICAxNCwgMTE3Cit9OwogCi0vKiBoaWRkZW4gbGF5ZXIgKi8KLS0wLjUxNDYy
NGYsIDAuMDIzNDIyN2YsIC0wLjE0MzI5ZiwgLTAuMDg3ODIxNmYsIC0wLjAwMTg3ODI3ZiwKLS0w
LjAyNTc0NDNmLCAwLjEwODUyNGYsIDAuMDAzMzM4ODFmLCAwLjAwNTg1MDE3ZiwgLTAuMDI0NjEz
MmYsCi0wLjE0MjcyM2YsIC0wLjAwNDM2NDk0ZiwgMC4wMTAxMzU0ZiwgLTAuMTExMjRmLCAtMC4w
ODA5MzY3ZiwKLS0wLjA3NTA3NzJmLCAwLjAyOTU1MjRmLCAwLjAwODIzOTQ0ZiwgMC4xNTAzOTJm
LCAwLjAzMjA4NzZmLAotLTAuMDcxMDU2NGYsIC0xLjQzODE4ZiwgMC42NTIwNzZmLCAwLjA2NTA3
NDRmLCAtMS41NDgyMWYsCi0wLjE2ODk0OWYsIC0xLjkyNzI0ZiwgMC4wNTE3OTc2ZiwgLTAuMDY3
MDczN2YsIC0wLjA2OTAxMjFmLAotMC4wMDI0NzUyOGYsIC0wLjA1MjIwMjRmLCAwLjA2MzEzNjhm
LCAwLjA1MzI3NzZmLCAwLjA0Nzc1MWYsCi0tMC4wMTE3MTVmLCAwLjE0MjM3NGYsIC0wLjAyOTA4
ODVmLCAtMC4yNzkyNjNmLCAtMC40MzM0OTlmLAotLTAuMDc5NTE3NGYsIC0wLjM4MDQ1OGYsIC0w
LjA1MTI2M2YsIDAuMjE4NTM3ZiwgLTAuMzIyNDc4ZiwKLTEuMDY2NjdmLCAtMC4xMDQ2MDdmLCAt
NC43MDEwOGYsIDAuMzEyMDM3ZiwgMC4yNzczOTdmLAotLTIuNzE4NTlmLCAxLjcwMDM3ZiwgLTAu
MTQxODQ1ZiwgMC4wMTE1NjE4ZiwgMC4wNjI5ODgzZiwKLTAuMDQwMzg3MWYsIDAuMDEzOTQyOGYs
IC0wLjAwNDMwNzMzZiwgLTAuMDQyOTAzOGYsIC0wLjA1OTAzMThmLAotLTAuMDUwMTUyNmYsIC0w
LjAyODQ4MDJmLCAtMC4wNDE1Njg2ZiwgLTAuMDQzODk5OWYsIDAuMDgyMjY2NmYsCi0wLjE5NzE5
NGYsIDAuMDM2MzI3NWYsIC0wLjA1ODQzMDdmLCAwLjA3NTIzNjRmLCAtMC4wNzk5Nzk2ZiwKLS0w
LjE0NjI3NWYsIDAuMTYxNjYxZiwgLTAuMTg0NTg1ZiwgMC4xNDU1NjhmLCAwLjQ0MjgyM2YsCi0x
LjYxMjIxZiwgMS4xMTE2MmYsIDIuNjIxNzdmLCAtMi40ODJmLCAtMC4xMTI1OTlmLAotLTAuMTEw
MzY2ZiwgLTAuMTQwNzk0ZiwgLTAuMTgxNjk0ZiwgMC4wNjQ4Njc0ZiwgMC4wODQyMjQ4ZiwKLTAu
MDkzMzk5M2YsIDAuMTUwMTIyZiwgMC4xMjkxNzFmLCAwLjE3Njg0OGYsIDAuMTQxNzU4ZiwKLS0w
LjI3MTgyMmYsIDAuMjM1MTEzZiwgMC4wNjY4NTc5ZiwgLTAuNDMzOTU3ZiwgMC4xMTM2MzNmLAot
LTAuMTY5MzQ4ZiwgLTEuNDAwOTFmLCAwLjYyODYxZiwgLTAuMTM0MjM2ZiwgMC40MDIxNzNmLAot
MS44NjM3M2YsIDEuNTM5OThmLCAtNC4zMjA4NGYsIDAuNzM1MzQzZiwgMC44MDAyMTRmLAotLTAu
MDA5Njg0MTVmLCAwLjA0MjU5MDRmLCAwLjAxOTY4MTFmLCAtMC4wMTg0MjZmLCAtMC4wMDAzNDM5
NTNmLAotLTAuMDA0MTYzODlmLCAwLjAwMTExNTU4ZiwgMC4wMTczMDY5ZiwgLTAuMDA5OTg1OTZm
LCAtMC4wMjU4OThmLAotMC4wMDEyMzc2NGYsIC0wLjAwNTIwMzczZiwgLTAuMDU2NTAzM2YsIDAu
MDYzNzM5NGYsIDAuMDA1MTIxM2YsCi0wLjAyMjEzNjFmLCAwLjAwODE5OTYyZiwgLTAuMDQ2NzA2
MWYsIC0wLjA1NDgyNThmLCAtMC4wMDMxNDA2M2YsCi0tMS4xODMzMmYsIDEuODgwOTFmLCAtMC40
MTE0OGYsIC0yLjk1NzI3ZiwgLTAuNTIxNDQ5ZiwKLS0wLjI3MTY0MWYsIDAuMTI0OTQ2ZiwgLTAu
MDUzMjkzNmYsIDAuMTAxNTE1ZiwgMC4wMDAyMDg1NjRmLAotLTAuMDQ4ODc0OGYsIDAuMDY0MjM4
OGYsIC0wLjAzODM4NDhmLCAwLjAxMzUwNDZmLCAtMC4wNDEzNTkyZiwKLS0wLjAzMjY0MDJmLCAt
MC4wMTM3NDIxZiwgLTAuMDIyNTIxOWYsIC0wLjA5MTcyOTRmLCAtMC4yNzc3NTlmLAotLTAuMTg1
NDE4ZiwgMC4wNDcxMTI4ZiwgLTAuMTI1ODc5ZiwgMC4yNjI0NjdmLCAtMC4yMTI3OTRmLAotLTAu
MTEyOTMxZiwgLTEuOTk4ODVmLCAtMC40MDQ3ODdmLCAwLjIyNDQwMmYsIDAuNjM3OTYyZiwKLS0w
LjI3ODA4ZiwgLTAuMDcyMzk1M2YsIC0wLjA1Mzc2NTVmLCAtMC4wMzM2MzU5ZiwgLTAuMDkwNjYw
MWYsCi0tMC4wNjQxMzA5ZiwgLTAuMDcxMzU0MmYsIDAuMDUyNDMxN2YsIDAuMDA2MDg4MTlmLCAw
LjA3NTQxMDFmLAotLTAuMDQ4ODQwMWYsIC0wLjAwNjcxODY1ZiwgMC4wNDE4MjM5ZiwgMC4wNTM2
Mjg0ZiwgLTAuMTMyNjM5ZiwKLTAuMDI2NzY0OGYsIC0wLjI0ODQzMmYsIC0wLjAxMDQxNTNmLCAw
LjAzNTU0NGYsIC0wLjIxMjc1M2YsCi0tMC4zMDI4OTVmLCAtMC4wMzU3ODU0ZiwgMC4zNzY4Mzhm
LCAwLjU5NzAyNWYsIC0wLjY2NDY0N2YsCi0wLjI2ODQyMmYsIC0wLjM3Njc3MmYsIC0xLjA1NDcy
ZiwgMC4wMTQ0MTc4ZiwgMC4xNzkxMjJmLAotMC4wMzYwMTU1ZiwgMC4yMjAyNjJmLCAtMC4wMDU2
MzgxZiwgMC4wMzE3MTk3ZiwgMC4wNjIxMDY2ZiwKLS0wLjAwNzc5Mjk4ZiwgMC4wMDc4OTM3OGYs
IDAuMDAzNTA2MDVmLCAwLjAxMDQ4MDlmLCAwLjAzNjI4NzFmLAotLTAuMTU3NzA4ZiwgLTAuMDY1
OTc3OWYsIC0wLjA5MjYyNzhmLCAwLjAwNzcwNzkxZiwgMC4wNjMxNjIxZiwKLTAuMDgxNzM0M2Ys
IC0wLjQyNDI5NWYsIC0wLjA0Mzc3MjdmLCAtMC4yNDI1MWYsIDAuNzExMjE3ZiwKLS0wLjczNjQ1
NWYsIC0yLjE5NGYsIC0wLjEwNzYxMmYsIC0wLjE3NTE1NmYsIC0wLjAzNjY1NzNmLAotLTAuMDEy
MzE1NmYsIC0wLjA2Mjg1MTZmLCAtMC4wMjE4OTc3ZiwgLTAuMDA2OTM2OTlmLCAwLjAwNjk1MTg1
ZiwKLTAuMDA1MDczNjJmLCAwLjAwMzU5MzM0ZiwgMC4wMDUyNjYxZiwgMC4wMzU1NjFmLCAwLjAz
ODI3MDFmLAotMC4wMzQyMTc5ZiwgLTAuMDA3OTAyNzFmLCAtMC4wMTcwOTI1ZiwgMC4wNDcwMjlm
LCAwLjAxOTczNjJmLAotLTAuMDE1MzQzNWYsIDAuMDY0NDE1MmYsIC0wLjM2ODYyZiwgLTAuMDY3
NDg3NmYsIC0yLjgyNjcyZiwKLTEuMzQxMjJmLCAtMC4wNzg4MDI5ZiwgLTMuNDc3OTJmLCAwLjUw
NzI0NmYsIC0wLjgxNjM3OGYsCi0tMC4wMTQyMzgzZiwgLTAuMTI3MzQ5ZiwgLTAuMTA2OTI2Ziwg
LTAuMDM1OTUyNGYsIDAuMTA1MDQ1ZiwKLTAuMjkxNTU0ZiwgMC4xOTU0MTNmLCAwLjA4NjYyMTRm
LCAtMC4wNjY1NzdmLCAtMC4xMDIxODhmLAotMC4wOTc5NDY2ZiwgLTAuMTI5ODJmLCAwLjQwMDE4
MWYsIC0wLjQwOTMzNmYsIC0wLjA1OTMzMjZmLAotLTAuMDY1NjIwM2YsIC0wLjIwNDQ3NGYsIDAu
MTc5ODAyZiwgMC4wMDA1MDkwODRmLCAwLjA5OTU5NTRmLAotLTIuMzc3ZiwgLTAuNjg2MzU5Ziwg
MC45MzQ4NjFmLCAxLjEwMjYxZiwgMS4zOTAxZiwKLS00LjMzNjE2ZiwgLTAuMDAyNjQwMTdmLCAw
LjAwNzEzMDQ1ZiwgMC4xMDYyNjRmLCAwLjE0MzcyNmYsCi0tMC4wNjg1MzA1ZiwgLTAuMDU0NjU2
ZiwgLTAuMDE3NjcyNWYsIC0wLjA3NzI2NjlmLCAtMC4wMjY0NTI2ZiwKLS0wLjAxMDM4MjRmLCAt
MC4wMjY5ODcyZiwgLTAuMDA2ODdmLCAwLjIyNTgwNGYsIDAuNDA3NzUxZiwKLS0wLjA2MTI2MTFm
LCAtMC4wNTc2ODYzZiwgLTAuMTgwMTMxZiwgLTAuMjIyNzcyZiwgLTAuNDYxNzQyZiwKLTAuMzM1
MjM2ZiwgMS4wMzM5OWYsIDQuMjQxMTJmLCAtMC4zNDU3OTZmLCAtMC41OTQ1NDlmLAotLTc2LjE0
MDdmLCAtMC4yNjUyNzZmLCAwLjA1MDc3MTlmLCAwLjA2NDMwNDRmLCAwLjAzODQ4MzJmLAotMC4w
NDI0NDU5ZiwgLTAuMDM4NzgxN2YsIC0wLjAyMzU5OTZmLCAtMC4wNzQwNTU2ZiwgLTAuMDI3MDAy
OWYsCi0wLjAwODgyMTc3ZiwgLTAuMDU1MjM3MWYsIC0wLjAwNDg1ODUxZiwgMC4zMTQyOTVmLCAw
LjM2MDQzMWYsCi0tMC4wNzg3MDg1ZiwgMC4xMTAzNTVmLCAtMC40MTU5NThmLCAtMC4zODUwODhm
LCAtMC4yNzIyMjRmLAotLTEuNTUxMDhmLCAtMC4xNDE4NDhmLCAwLjQ0ODg3N2YsIC0wLjU2MzQ0
N2YsIC0yLjMxNDAzZiwKLS0wLjEyMDA3N2YsIC0xLjQ5OTE4ZiwgLTAuODE3NzI2ZiwgLTAuMDQ5
NTg1NGYsIC0wLjAyMzA3ODJmLAotLTAuMDIyNDAxNGYsIDAuMTE3MDc2ZiwgMC4wMzkzMjE2Ziwg
MC4wNTE5OTdmLCAwLjAzMzA3NjNmLAotLTAuMTEwNzk2ZiwgMC4wMjExMTE3ZiwgLTAuMDE5NzI1
OGYsIDAuMDE4NzQ2MWYsIDAuMDEyNTE4M2YsCi0wLjE0ODc2ZiwgMC4wOTIwNTY1ZiwgLTAuMzQy
NDc1ZiwgMC4xMzUyNzJmLCAtMC4xNjgxNTVmLAotLTAuMDMzNDIzZiwgLTAuMDYwNDYxMWYsIC0w
LjEyODgzNWYsIDAuNjY0OTQ3ZiwgLTAuMTQ0OTk3ZiwKLTIuMjc2NDlmLCAxLjI4NjYzZiwgMC44
NDEyMTdmLCAtMi40MjgwN2YsIDAuMDIzMDQ3MWYsCi0wLjIyNjcwOWYsIC0wLjAzNzQ4MDNmLCAw
LjE1NTQzNmYsIDAuMDQwMDM0MmYsIC0wLjE4NDY4NmYsCi0wLjEyODQ4OGYsIC0wLjA5Mzk1MThm
LCAtMC4wNTc4NTU5ZiwgMC4wMjY1OTY3ZiwgLTAuMDk5OTMyMmYsCi0tMC4wMzIyNzY4ZiwgLTAu
MzIyOTk0ZiwgLTAuMTg5MzcxZiwgLTAuNzM4MDY5ZiwgLTAuMDc1NDkxNGYsCi0wLjIxNDcxN2Ys
IC0wLjA5MzcyOGYsIC0wLjY5NTc0MWYsIDAuMDg5OTI5OGYsIC0yLjA2MTg4ZiwKLS0wLjI3Mzcx
OWYsIC0wLjg5Njk3N2YsIDAuMTMwNTUzZiwgMC4xMzQ2MzhmLCAxLjI5MzU1ZiwKLTAuMDA1MjA3
NDlmLCAtMC4wMzI0MjI0ZiwgMC4wMDUzMDQ1MWYsIDAuMDE5MjM4NWYsIDAuMDAzMjg3MDhmLAot
MC4wMjUwODM4ZiwgMC4wMDUzMzY1ZiwgLTAuMDE3NzMyMWYsIDAuMDA2MTg3ODlmLCAwLjAwNTI1
MzY0ZiwKLTAuMDAxMDQ1OTZmLCAtMC4wMzYwNDU5ZiwgMC4wNDAyNDAzZiwgLTAuMDQwNjM1MWYs
IDAuMDEzNjg4M2YsCi0wLjA4ODA3MjJmLCAtMC4wMTk3NDQ5ZiwgMC4wODk5MzhmLCAwLjAxMDA0
NTZmLCAtMC4wNDc1NjM4ZiwKLS0wLjczMjY3ZiwgMC4wMzc0MzNmLCAtMC4xNDY1NTFmLCAtMC4y
MzAyMjFmLCAtMy4wNjQ4OWYsCi0tMS40MDE5NGYsIDAuMDE5ODQ4M2YsIDAuMDM5Nzk1M2YsIC0w
LjAxOTAyMzlmLCAwLjA0NzA3MTVmLAotLTAuMTMxMzYzZiwgLTAuMTkxNzIxZiwgLTAuMDE3NjIy
NGYsIC0wLjA0ODAzNTJmLCAtMC4yMjE3OTlmLAotLTAuMjY3OTRmLCAtMC4wMjkyNjE1ZiwgMC4w
NjEyMTI3ZiwgLTAuMTI5ODc3ZiwgMC4wMDYyODMzMmYsCi0tMC4wODU5MThmLCAwLjAxNzUzNzlm
LCAwLjA1NDEwMTFmLCAtMC4wODEwODc0ZiwgLTAuMzgwODA5ZiwKLS0wLjIyMjA1NmYsIC0wLjUw
ODg1OWYsIC0wLjQ3MzM2OWYsIDAuNDg0OTU4ZiwgLTIuMjg0MTFmLAotMC4wMTM5NTE2ZiwKLS8q
IG91dHB1dCBsYXllciAqLwotMy45MDAxN2YsIDEuNzE3ODlmLCAtMS40MzM3MmYsIC0yLjcwODM5
ZiwgMS43NzEwN2YsCi01LjQ4MDA2ZiwgMS40NDY2MWYsIDIuMDExMzRmLCAtMS44ODM4M2YsIC0z
LjY0OTU4ZiwKLS0xLjI2MzUxZiwgMC43Nzk0MjFmLCAyLjExMzU3ZiwgMy4xMDQwOWYsIDEuNjg4
NDZmLAotLTQuNDYxOTdmLCAtMS42MTQ1NWYsIDMuNTk4MzJmLCAyLjQzNTMxZiwgLTEuMjY0NThm
LAotMC40MTc5NDFmLCAxLjQ3NDM3ZiwgMi4xNjYzNWYsIC0xLjkwOWYsIC0wLjgyODg2OWYsCi0x
LjM4ODA1ZiwgLTIuNjc5NzVmLCAtMC4xMTAwNDRmLCAxLjk1NTk2ZiwgMC42OTc5MzFmLAotLTAu
MzEzMjI2ZiwgLTAuODg5MzE1ZiwgMC4yODMyMzZmLCAwLjk0NjEwMmYsIH07Citjb25zdCBEZW5z
ZUxheWVyIGxheWVyMCA9IHsKKyAgIGxheWVyMF9iaWFzLAorICAgbGF5ZXIwX3dlaWdodHMsCisg
ICAyNSwgMzIsIDAKK307CiAKLXN0YXRpYyBjb25zdCBpbnQgdG9wb1szXSA9IHsyNSwgMTYsIDJ9
OworY29uc3QgR1JVTGF5ZXIgbGF5ZXIxID0geworICAgbGF5ZXIxX2JpYXMsCisgICBsYXllcjFf
d2VpZ2h0cywKKyAgIGxheWVyMV9yZWN1cl93ZWlnaHRzLAorICAgMzIsIDI0Cit9OwogCi1jb25z
dCBNTFAgbmV0ID0gewotICAgIDMsCi0gICAgdG9wbywKLSAgICB3ZWlnaHRzCitjb25zdCBEZW5z
ZUxheWVyIGxheWVyMiA9IHsKKyAgIGxheWVyMl9iaWFzLAorICAgbGF5ZXIyX3dlaWdodHMsCisg
ICAyNCwgMiwgMQogfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwX3RyYWluLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHBfdHJh
aW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ5ZDEyN2E2ZGJiYjRlNTk2ZTlm
ZDI4YjVjMWFiMWFjNTMwN2YxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NyYy9tbHBfdHJhaW4uYworKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCwwIEBA
Ci0vKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMSBPY3Rhc2ljIEluYy4KLSAgIFdyaXR0ZW4gYnkg
SmVhbi1NYXJjIFZhbGluICovCi0vKgotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgIGFy
ZSBtZXQ6Ci0KLSAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICAgYGBBUyBJUycnIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICAg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SCi0gICBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAgIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotICAgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
LSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0KLSNpbmNsdWRlICJtbHBfdHJhaW4uaCIKLSNp
bmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5o
PgotI2luY2x1ZGUgPHNlbWFwaG9yZS5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNpbmNsdWRl
IDx0aW1lLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLWludCBzdG9wcGVkID0gMDsKLQotdm9p
ZCBoYW5kbGVyKGludCBzaWcpCi17Ci0gICAgc3RvcHBlZCA9IDE7Ci0gICAgc2lnbmFsKHNpZywg
aGFuZGxlcik7Ci19Ci0KLU1MUFRyYWluICogbWxwX2luaXQoaW50ICp0b3BvLCBpbnQgbmJMYXll
cnMsIGZsb2F0ICppbnB1dHMsIGZsb2F0ICpvdXRwdXRzLCBpbnQgbmJTYW1wbGVzKQotewotICAg
IGludCBpLCBqLCBrOwotICAgIE1MUFRyYWluICpuZXQ7Ci0gICAgaW50IGluRGltLCBvdXREaW07
Ci0gICAgbmV0ID0gbWFsbG9jKHNpemVvZigqbmV0KSk7Ci0gICAgbmV0LT50b3BvID0gbWFsbG9j
KG5iTGF5ZXJzKnNpemVvZihuZXQtPnRvcG9bMF0pKTsKLSAgICBmb3IgKGk9MDtpPG5iTGF5ZXJz
O2krKykKLSAgICAgICAgbmV0LT50b3BvW2ldID0gdG9wb1tpXTsKLSAgICBpbkRpbSA9IHRvcG9b
MF07Ci0gICAgb3V0RGltID0gdG9wb1tuYkxheWVycy0xXTsKLSAgICBuZXQtPmluX3JhdGUgPSBt
YWxsb2MoKGluRGltKzEpKnNpemVvZihuZXQtPmluX3JhdGVbMF0pKTsKLSAgICBuZXQtPndlaWdo
dHMgPSBtYWxsb2MoKG5iTGF5ZXJzLTEpKnNpemVvZihuZXQtPndlaWdodHMpKTsKLSAgICBuZXQt
PmJlc3Rfd2VpZ2h0cyA9IG1hbGxvYygobmJMYXllcnMtMSkqc2l6ZW9mKG5ldC0+d2VpZ2h0cykp
OwotICAgIGZvciAoaT0wO2k8bmJMYXllcnMtMTtpKyspCi0gICAgewotICAgICAgICBuZXQtPndl
aWdodHNbaV0gPSBtYWxsb2MoKHRvcG9baV0rMSkqdG9wb1tpKzFdKnNpemVvZihuZXQtPndlaWdo
dHNbMF1bMF0pKTsKLSAgICAgICAgbmV0LT5iZXN0X3dlaWdodHNbaV0gPSBtYWxsb2MoKHRvcG9b
aV0rMSkqdG9wb1tpKzFdKnNpemVvZihuZXQtPndlaWdodHNbMF1bMF0pKTsKLSAgICB9Ci0gICAg
ZG91YmxlIGluTWVhbltpbkRpbV07Ci0gICAgZm9yIChqPTA7ajxpbkRpbTtqKyspCi0gICAgewot
ICAgICAgICBkb3VibGUgc3RkPTA7Ci0gICAgICAgIGluTWVhbltqXSA9IDA7Ci0gICAgICAgIGZv
ciAoaT0wO2k8bmJTYW1wbGVzO2krKykKLSAgICAgICAgewotICAgICAgICAgICAgaW5NZWFuW2pd
ICs9IGlucHV0c1tpKmluRGltK2pdOwotICAgICAgICAgICAgc3RkICs9IGlucHV0c1tpKmluRGlt
K2pdKmlucHV0c1tpKmluRGltK2pdOwotICAgICAgICB9Ci0gICAgICAgIGluTWVhbltqXSAvPSBu
YlNhbXBsZXM7Ci0gICAgICAgIHN0ZCAvPSBuYlNhbXBsZXM7Ci0gICAgICAgIG5ldC0+aW5fcmF0
ZVsxK2pdID0gLjUvKC4wMDAxK3N0ZCk7Ci0gICAgICAgIHN0ZCA9IHN0ZC1pbk1lYW5bal0qaW5N
ZWFuW2pdOwotICAgICAgICBpZiAoc3RkPC4wMDEpCi0gICAgICAgICAgICBzdGQgPSAuMDAxOwot
ICAgICAgICBzdGQgPSAxL3NxcnQoaW5EaW0qc3RkKTsKLSAgICAgICAgZm9yIChrPTA7azx0b3Bv
WzFdO2srKykKLSAgICAgICAgICAgIG5ldC0+d2VpZ2h0c1swXVtrKih0b3BvWzBdKzEpK2orMV0g
PSByYW5kbihzdGQpOwotICAgIH0KLSAgICBuZXQtPmluX3JhdGVbMF0gPSAxOwotICAgIGZvciAo
aj0wO2o8dG9wb1sxXTtqKyspCi0gICAgewotICAgICAgICBkb3VibGUgc3VtID0gMDsKLSAgICAg
ICAgZm9yIChrPTA7azxpbkRpbTtrKyspCi0gICAgICAgICAgICBzdW0gKz0gaW5NZWFuW2tdKm5l
dC0+d2VpZ2h0c1swXVtqKih0b3BvWzBdKzEpK2srMV07Ci0gICAgICAgIG5ldC0+d2VpZ2h0c1sw
XVtqKih0b3BvWzBdKzEpXSA9IC1zdW07Ci0gICAgfQotICAgIGZvciAoaj0wO2o8b3V0RGltO2or
KykKLSAgICB7Ci0gICAgICAgIGRvdWJsZSBtZWFuID0gMDsKLSAgICAgICAgZG91YmxlIHN0ZDsK
LSAgICAgICAgZm9yIChpPTA7aTxuYlNhbXBsZXM7aSsrKQotICAgICAgICAgICAgbWVhbiArPSBv
dXRwdXRzW2kqb3V0RGltK2pdOwotICAgICAgICBtZWFuIC89IG5iU2FtcGxlczsKLSAgICAgICAg
c3RkID0gMS9zcXJ0KHRvcG9bbmJMYXllcnMtMl0pOwotICAgICAgICBuZXQtPndlaWdodHNbbmJM
YXllcnMtMl1baioodG9wb1tuYkxheWVycy0yXSsxKV0gPSBtZWFuOwotICAgICAgICBmb3IgKGs9
MDtrPHRvcG9bbmJMYXllcnMtMl07aysrKQotICAgICAgICAgICAgbmV0LT53ZWlnaHRzW25iTGF5
ZXJzLTJdW2oqKHRvcG9bbmJMYXllcnMtMl0rMSkraysxXSA9IHJhbmRuKHN0ZCk7Ci0gICAgfQot
ICAgIHJldHVybiBuZXQ7Ci19Ci0KLSNkZWZpbmUgTUFYX05FVVJPTlMgMTAwCi0jZGVmaW5lIE1B
WF9PVVQgMTAKLQotZG91YmxlIGNvbXB1dGVfZ3JhZGllbnQoTUxQVHJhaW4gKm5ldCwgZmxvYXQg
KmlucHV0cywgZmxvYXQgKm91dHB1dHMsIGludCBuYlNhbXBsZXMsIGRvdWJsZSAqVzBfZ3JhZCwg
ZG91YmxlICpXMV9ncmFkLCBkb3VibGUgKmVycm9yX3JhdGUpCi17Ci0gICAgaW50IGksajsKLSAg
ICBpbnQgczsKLSAgICBpbnQgaW5EaW0sIG91dERpbSwgaGlkZGVuRGltOwotICAgIGludCAqdG9w
bzsKLSAgICBkb3VibGUgKlcwLCAqVzE7Ci0gICAgZG91YmxlIHJtcz0wOwotICAgIGludCBXMF9z
aXplLCBXMV9zaXplOwotICAgIGRvdWJsZSBoaWRkZW5bTUFYX05FVVJPTlNdOwotICAgIGRvdWJs
ZSBuZXRPdXRbTUFYX05FVVJPTlNdOwotICAgIGRvdWJsZSBlcnJvcltNQVhfTkVVUk9OU107Ci0K
LSAgICB0b3BvID0gbmV0LT50b3BvOwotICAgIGluRGltID0gbmV0LT50b3BvWzBdOwotICAgIGhp
ZGRlbkRpbSA9IG5ldC0+dG9wb1sxXTsKLSAgICBvdXREaW0gPSBuZXQtPnRvcG9bMl07Ci0gICAg
VzBfc2l6ZSA9ICh0b3BvWzBdKzEpKnRvcG9bMV07Ci0gICAgVzFfc2l6ZSA9ICh0b3BvWzFdKzEp
KnRvcG9bMl07Ci0gICAgVzAgPSBuZXQtPndlaWdodHNbMF07Ci0gICAgVzEgPSBuZXQtPndlaWdo
dHNbMV07Ci0gICAgbWVtc2V0KFcwX2dyYWQsIDAsIFcwX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwot
ICAgIG1lbXNldChXMV9ncmFkLCAwLCBXMV9zaXplKnNpemVvZihkb3VibGUpKTsKLSAgICBmb3Ig
KGk9MDtpPG91dERpbTtpKyspCi0gICAgICAgIG5ldE91dFtpXSA9IG91dHB1dHNbaV07Ci0gICAg
Zm9yIChpPTA7aTxvdXREaW07aSsrKQotICAgICAgICBlcnJvcl9yYXRlW2ldID0gMDsKLSAgICBm
b3IgKHM9MDtzPG5iU2FtcGxlcztzKyspCi0gICAgewotICAgICAgICBmbG9hdCAqaW4sICpvdXQ7
Ci0gICAgICAgIGZsb2F0IGlucFtpbkRpbV07Ci0gICAgICAgIGluID0gaW5wdXRzK3MqaW5EaW07
Ci0gICAgICAgIG91dCA9IG91dHB1dHMgKyBzKm91dERpbTsKLSAgICAgICAgZm9yIChqPTA7ajxp
bkRpbTtqKyspCi0gICAgICAgICAgIGlucFtqXSA9IGluW2pdOwotICAgICAgICBmb3IgKGk9MDtp
PGhpZGRlbkRpbTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBzdW0gPSBXMFtp
KihpbkRpbSsxKV07Ci0gICAgICAgICAgICBmb3IgKGo9MDtqPGluRGltO2orKykKLSAgICAgICAg
ICAgICAgICBzdW0gKz0gVzBbaSooaW5EaW0rMSkraisxXSppbnBbal07Ci0gICAgICAgICAgICBo
aWRkZW5baV0gPSB0YW5zaWdfYXBwcm94KHN1bSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChp
PTA7aTxvdXREaW07aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgc3VtID0gVzFb
aSooaGlkZGVuRGltKzEpXTsKLSAgICAgICAgICAgIGZvciAoaj0wO2o8aGlkZGVuRGltO2orKykK
LSAgICAgICAgICAgICAgICBzdW0gKz0gVzFbaSooaGlkZGVuRGltKzEpK2orMV0qaGlkZGVuW2pd
OwotICAgICAgICAgICAgbmV0T3V0W2ldID0gdGFuc2lnX2FwcHJveChzdW0pOwotICAgICAgICAg
ICAgZXJyb3JbaV0gPSBvdXRbaV0gLSBuZXRPdXRbaV07Ci0gICAgICAgICAgICBpZiAob3V0W2ld
ID09IDApIGVycm9yW2ldICo9IC4wOwotICAgICAgICAgICAgZXJyb3JfcmF0ZVtpXSArPSBmYWJz
KGVycm9yW2ldKT4xOwotICAgICAgICAgICAgaWYgKGk9PTApIGVycm9yW2ldICo9IDU7Ci0gICAg
ICAgICAgICBybXMgKz0gZXJyb3JbaV0qZXJyb3JbaV07Ci0gICAgICAgICAgICAvKmVycm9yW2ld
ID0gZXJyb3JbaV0vKDErZmFicyhlcnJvcltpXSkpOyovCi0gICAgICAgIH0KLSAgICAgICAgLyog
QmFjay1wcm9wYWdhdGUgZXJyb3IgKi8KLSAgICAgICAgZm9yIChpPTA7aTxvdXREaW07aSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgZ3JhZCA9IDEtbmV0T3V0W2ldKm5ldE91dFtp
XTsKLSAgICAgICAgICAgIFcxX2dyYWRbaSooaGlkZGVuRGltKzEpXSArPSBlcnJvcltpXSpncmFk
OwotICAgICAgICAgICAgZm9yIChqPTA7ajxoaWRkZW5EaW07aisrKQotICAgICAgICAgICAgICAg
IFcxX2dyYWRbaSooaGlkZGVuRGltKzEpK2orMV0gKz0gZ3JhZCplcnJvcltpXSpoaWRkZW5bal07
Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpPTA7aTxoaWRkZW5EaW07aSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBkb3VibGUgZ3JhZDsKLSAgICAgICAgICAgIGdyYWQgPSAwOwotICAgICAg
ICAgICAgZm9yIChqPTA7ajxvdXREaW07aisrKQotICAgICAgICAgICAgICAgIGdyYWQgKz0gZXJy
b3Jbal0qVzFbaiooaGlkZGVuRGltKzEpK2krMV07Ci0gICAgICAgICAgICBncmFkICo9IDEtaGlk
ZGVuW2ldKmhpZGRlbltpXTsKLSAgICAgICAgICAgIFcwX2dyYWRbaSooaW5EaW0rMSldICs9IGdy
YWQ7Ci0gICAgICAgICAgICBmb3IgKGo9MDtqPGluRGltO2orKykKLSAgICAgICAgICAgICAgICBX
MF9ncmFkW2kqKGluRGltKzEpK2orMV0gKz0gZ3JhZCppbnBbal07Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIHJtczsKLX0KLQotI2RlZmluZSBOQl9USFJFQURTIDgKLQotc2VtX3Qgc2Vt
X2JlZ2luW05CX1RIUkVBRFNdOwotc2VtX3Qgc2VtX2VuZFtOQl9USFJFQURTXTsKLQotc3RydWN0
IEdyYWRpZW50QXJnIHsKLSAgICBpbnQgaWQ7Ci0gICAgaW50IGRvbmU7Ci0gICAgTUxQVHJhaW4g
Km5ldDsKLSAgICBmbG9hdCAqaW5wdXRzOwotICAgIGZsb2F0ICpvdXRwdXRzOwotICAgIGludCBu
YlNhbXBsZXM7Ci0gICAgZG91YmxlICpXMF9ncmFkOwotICAgIGRvdWJsZSAqVzFfZ3JhZDsKLSAg
ICBkb3VibGUgcm1zOwotICAgIGRvdWJsZSBlcnJvcl9yYXRlW01BWF9PVVRdOwotfTsKLQotdm9p
ZCAqZ3JhZGllbnRfdGhyZWFkX3Byb2Nlc3Modm9pZCAqX2FyZykKLXsKLSAgICBpbnQgVzBfc2l6
ZSwgVzFfc2l6ZTsKLSAgICBzdHJ1Y3QgR3JhZGllbnRBcmcgKmFyZyA9IF9hcmc7Ci0gICAgaW50
ICp0b3BvID0gYXJnLT5uZXQtPnRvcG87Ci0gICAgVzBfc2l6ZSA9ICh0b3BvWzBdKzEpKnRvcG9b
MV07Ci0gICAgVzFfc2l6ZSA9ICh0b3BvWzFdKzEpKnRvcG9bMl07Ci0gICAgZG91YmxlIFcwX2dy
YWRbVzBfc2l6ZV07Ci0gICAgZG91YmxlIFcxX2dyYWRbVzFfc2l6ZV07Ci0gICAgYXJnLT5XMF9n
cmFkID0gVzBfZ3JhZDsKLSAgICBhcmctPlcxX2dyYWQgPSBXMV9ncmFkOwotICAgIHdoaWxlICgx
KQotICAgIHsKLSAgICAgICAgc2VtX3dhaXQoJnNlbV9iZWdpblthcmctPmlkXSk7Ci0gICAgICAg
IGlmIChhcmctPmRvbmUpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXJnLT5ybXMgPSBj
b21wdXRlX2dyYWRpZW50KGFyZy0+bmV0LCBhcmctPmlucHV0cywgYXJnLT5vdXRwdXRzLCBhcmct
Pm5iU2FtcGxlcywgYXJnLT5XMF9ncmFkLCBhcmctPlcxX2dyYWQsIGFyZy0+ZXJyb3JfcmF0ZSk7
Ci0gICAgICAgIHNlbV9wb3N0KCZzZW1fZW5kW2FyZy0+aWRdKTsKLSAgICB9Ci0gICAgZnByaW50
ZihzdGRlcnIsICJkb25lXG4iKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotZmxvYXQgbWxwX3Ry
YWluX2JhY2twcm9wKE1MUFRyYWluICpuZXQsIGZsb2F0ICppbnB1dHMsIGZsb2F0ICpvdXRwdXRz
LCBpbnQgbmJTYW1wbGVzLCBpbnQgbmJFcG9jaCwgZmxvYXQgcmF0ZSkKLXsKLSAgICBpbnQgaSwg
ajsKLSAgICBpbnQgZTsKLSAgICBmbG9hdCBiZXN0X3JtcyA9IDFlMTA7Ci0gICAgaW50IGluRGlt
LCBvdXREaW0sIGhpZGRlbkRpbTsKLSAgICBpbnQgKnRvcG87Ci0gICAgZG91YmxlICpXMCwgKlcx
LCAqYmVzdF9XMCwgKmJlc3RfVzE7Ci0gICAgZG91YmxlICpXMF9ncmFkLCAqVzFfZ3JhZDsKLSAg
ICBkb3VibGUgKlcwX29sZGdyYWQsICpXMV9vbGRncmFkOwotICAgIGRvdWJsZSAqVzBfcmF0ZSwg
KlcxX3JhdGU7Ci0gICAgZG91YmxlICpiZXN0X1cwX3JhdGUsICpiZXN0X1cxX3JhdGU7Ci0gICAg
aW50IFcwX3NpemUsIFcxX3NpemU7Ci0gICAgdG9wbyA9IG5ldC0+dG9wbzsKLSAgICBXMF9zaXpl
ID0gKHRvcG9bMF0rMSkqdG9wb1sxXTsKLSAgICBXMV9zaXplID0gKHRvcG9bMV0rMSkqdG9wb1sy
XTsKLSAgICBzdHJ1Y3QgR3JhZGllbnRBcmcgYXJnc1tOQl9USFJFQURTXTsKLSAgICBwdGhyZWFk
X3QgdGhyZWFkW05CX1RIUkVBRFNdOwotICAgIGludCBzYW1wbGVQZXJQYXJ0ID0gbmJTYW1wbGVz
L05CX1RIUkVBRFM7Ci0gICAgaW50IGNvdW50X3dvcnNlPTA7Ci0gICAgaW50IGNvdW50X3JldHJp
ZXM9MDsKLQotICAgIHRvcG8gPSBuZXQtPnRvcG87Ci0gICAgaW5EaW0gPSBuZXQtPnRvcG9bMF07
Ci0gICAgaGlkZGVuRGltID0gbmV0LT50b3BvWzFdOwotICAgIG91dERpbSA9IG5ldC0+dG9wb1sy
XTsKLSAgICBXMCA9IG5ldC0+d2VpZ2h0c1swXTsKLSAgICBXMSA9IG5ldC0+d2VpZ2h0c1sxXTsK
LSAgICBiZXN0X1cwID0gbmV0LT5iZXN0X3dlaWdodHNbMF07Ci0gICAgYmVzdF9XMSA9IG5ldC0+
YmVzdF93ZWlnaHRzWzFdOwotICAgIFcwX2dyYWQgPSBtYWxsb2MoVzBfc2l6ZSpzaXplb2YoZG91
YmxlKSk7Ci0gICAgVzFfZ3JhZCA9IG1hbGxvYyhXMV9zaXplKnNpemVvZihkb3VibGUpKTsKLSAg
ICBXMF9vbGRncmFkID0gbWFsbG9jKFcwX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwotICAgIFcxX29s
ZGdyYWQgPSBtYWxsb2MoVzFfc2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0gICAgVzBfcmF0ZSA9IG1h
bGxvYyhXMF9zaXplKnNpemVvZihkb3VibGUpKTsKLSAgICBXMV9yYXRlID0gbWFsbG9jKFcxX3Np
emUqc2l6ZW9mKGRvdWJsZSkpOwotICAgIGJlc3RfVzBfcmF0ZSA9IG1hbGxvYyhXMF9zaXplKnNp
emVvZihkb3VibGUpKTsKLSAgICBiZXN0X1cxX3JhdGUgPSBtYWxsb2MoVzFfc2l6ZSpzaXplb2Yo
ZG91YmxlKSk7Ci0gICAgbWVtc2V0KFcwX2dyYWQsIDAsIFcwX3NpemUqc2l6ZW9mKGRvdWJsZSkp
OwotICAgIG1lbXNldChXMF9vbGRncmFkLCAwLCBXMF9zaXplKnNpemVvZihkb3VibGUpKTsKLSAg
ICBtZW1zZXQoVzFfZ3JhZCwgMCwgVzFfc2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0gICAgbWVtc2V0
KFcxX29sZGdyYWQsIDAsIFcxX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwotCi0gICAgcmF0ZSAvPSBu
YlNhbXBsZXM7Ci0gICAgZm9yIChpPTA7aTxoaWRkZW5EaW07aSsrKQotICAgICAgICBmb3IgKGo9
MDtqPGluRGltKzE7aisrKQotICAgICAgICAgICAgVzBfcmF0ZVtpKihpbkRpbSsxKStqXSA9IHJh
dGUqbmV0LT5pbl9yYXRlW2pdOwotICAgIGZvciAoaT0wO2k8VzFfc2l6ZTtpKyspCi0gICAgICAg
IFcxX3JhdGVbaV0gPSByYXRlOwotCi0gICAgZm9yIChpPTA7aTxOQl9USFJFQURTO2krKykKLSAg
ICB7Ci0gICAgICAgIGFyZ3NbaV0ubmV0ID0gbmV0OwotICAgICAgICBhcmdzW2ldLmlucHV0cyA9
IGlucHV0cytpKnNhbXBsZVBlclBhcnQqaW5EaW07Ci0gICAgICAgIGFyZ3NbaV0ub3V0cHV0cyA9
IG91dHB1dHMraSpzYW1wbGVQZXJQYXJ0Km91dERpbTsKLSAgICAgICAgYXJnc1tpXS5uYlNhbXBs
ZXMgPSBzYW1wbGVQZXJQYXJ0OwotICAgICAgICBhcmdzW2ldLmlkID0gaTsKLSAgICAgICAgYXJn
c1tpXS5kb25lID0gMDsKLSAgICAgICAgc2VtX2luaXQoJnNlbV9iZWdpbltpXSwgMCwgMCk7Ci0g
ICAgICAgIHNlbV9pbml0KCZzZW1fZW5kW2ldLCAwLCAwKTsKLSAgICAgICAgcHRocmVhZF9jcmVh
dGUoJnRocmVhZFtpXSwgTlVMTCwgZ3JhZGllbnRfdGhyZWFkX3Byb2Nlc3MsICZhcmdzW2ldKTsK
LSAgICB9Ci0gICAgZm9yIChlPTA7ZTxuYkVwb2NoO2UrKykKLSAgICB7Ci0gICAgICAgIGRvdWJs
ZSBybXM9MDsKLSAgICAgICAgZG91YmxlIGVycm9yX3JhdGVbMl0gPSB7MCwwfTsKLSAgICAgICAg
Zm9yIChpPTA7aTxOQl9USFJFQURTO2krKykKLSAgICAgICAgewotICAgICAgICAgICAgc2VtX3Bv
c3QoJnNlbV9iZWdpbltpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgbWVtc2V0KFcwX2dyYWQsIDAs
IFcwX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwotICAgICAgICBtZW1zZXQoVzFfZ3JhZCwgMCwgVzFf
c2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0gICAgICAgIGZvciAoaT0wO2k8TkJfVEhSRUFEUztpKysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNlbV93YWl0KCZzZW1fZW5kW2ldKTsKLSAgICAgICAg
ICAgIHJtcyArPSBhcmdzW2ldLnJtczsKLSAgICAgICAgICAgIGVycm9yX3JhdGVbMF0gKz0gYXJn
c1tpXS5lcnJvcl9yYXRlWzBdOwotICAgICAgICAgICAgZXJyb3JfcmF0ZVsxXSArPSBhcmdzW2ld
LmVycm9yX3JhdGVbMV07Ci0gICAgICAgICAgICBmb3IgKGo9MDtqPFcwX3NpemU7aisrKQotICAg
ICAgICAgICAgICAgIFcwX2dyYWRbal0gKz0gYXJnc1tpXS5XMF9ncmFkW2pdOwotICAgICAgICAg
ICAgZm9yIChqPTA7ajxXMV9zaXplO2orKykKLSAgICAgICAgICAgICAgICBXMV9ncmFkW2pdICs9
IGFyZ3NbaV0uVzFfZ3JhZFtqXTsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IG1lYW5fcmF0
ZSA9IDAsIG1pbl9yYXRlID0gMWUxMDsKLSAgICAgICAgcm1zID0gKHJtcy8ob3V0RGltKm5iU2Ft
cGxlcykpOwotICAgICAgICBlcnJvcl9yYXRlWzBdID0gKGVycm9yX3JhdGVbMF0vKG5iU2FtcGxl
cykpOwotICAgICAgICBlcnJvcl9yYXRlWzFdID0gKGVycm9yX3JhdGVbMV0vKG5iU2FtcGxlcykp
OwotICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIlZiAlZiAoJWYgJWYpICIsIGVycm9yX3JhdGVb
MF0sIGVycm9yX3JhdGVbMV0sIHJtcywgYmVzdF9ybXMpOwotICAgICAgICBpZiAocm1zIDwgYmVz
dF9ybXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJlc3Rfcm1zID0gcm1zOwotICAgICAgICAg
ICAgZm9yIChpPTA7aTxXMF9zaXplO2krKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBiZXN0X1cwW2ldID0gVzBbaV07Ci0gICAgICAgICAgICAgICAgYmVzdF9XMF9yYXRlW2ldID0g
VzBfcmF0ZVtpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoaT0wO2k8VzFfc2l6
ZTtpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYmVzdF9XMVtpXSA9IFcxW2ld
OwotICAgICAgICAgICAgICAgIGJlc3RfVzFfcmF0ZVtpXSA9IFcxX3JhdGVbaV07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBjb3VudF93b3JzZT0wOwotICAgICAgICAgICAgY291bnRfcmV0
cmllcz0wOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY291bnRfd29yc2UrKzsKLSAg
ICAgICAgICAgIGlmIChjb3VudF93b3JzZT4zMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb3VudF9yZXRyaWVzKys7Ci0gICAgICAgICAgICAgICAgY291bnRfd29yc2U9MDsKLSAg
ICAgICAgICAgICAgICBmb3IgKGk9MDtpPFcwX3NpemU7aSsrKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgVzBbaV0gPSBiZXN0X1cwW2ldOwotICAgICAgICAgICAgICAg
ICAgICBiZXN0X1cwX3JhdGVbaV0gKj0gLjc7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiZXN0
X1cwX3JhdGVbaV08MWUtMTUpIGJlc3RfVzBfcmF0ZVtpXT0xZS0xNTsKLSAgICAgICAgICAgICAg
ICAgICAgVzBfcmF0ZVtpXSA9IGJlc3RfVzBfcmF0ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAg
VzBfZ3JhZFtpXSA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAo
aT0wO2k8VzFfc2l6ZTtpKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBXMVtpXSA9IGJlc3RfVzFbaV07Ci0gICAgICAgICAgICAgICAgICAgIGJlc3RfVzFfcmF0ZVtp
XSAqPSAuODsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RfVzFfcmF0ZVtpXTwxZS0xNSkg
YmVzdF9XMV9yYXRlW2ldPTFlLTE1OwotICAgICAgICAgICAgICAgICAgICBXMV9yYXRlW2ldID0g
YmVzdF9XMV9yYXRlW2ldOwotICAgICAgICAgICAgICAgICAgICBXMV9ncmFkW2ldID0gMDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNv
dW50X3JldHJpZXM+MTApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZm9yIChpPTA7aTxX
MF9zaXplO2krKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKFcwX29sZGdyYWRbaV0qVzBf
Z3JhZFtpXSA+IDApCi0gICAgICAgICAgICAgICAgVzBfcmF0ZVtpXSAqPSAxLjAxOwotICAgICAg
ICAgICAgZWxzZSBpZiAoVzBfb2xkZ3JhZFtpXSpXMF9ncmFkW2ldIDwgMCkKLSAgICAgICAgICAg
ICAgICBXMF9yYXRlW2ldICo9IC45OwotICAgICAgICAgICAgbWVhbl9yYXRlICs9IFcwX3JhdGVb
aV07Ci0gICAgICAgICAgICBpZiAoVzBfcmF0ZVtpXSA8IG1pbl9yYXRlKQotICAgICAgICAgICAg
ICAgIG1pbl9yYXRlID0gVzBfcmF0ZVtpXTsKLSAgICAgICAgICAgIGlmIChXMF9yYXRlW2ldIDwg
MWUtMTUpCi0gICAgICAgICAgICAgICAgVzBfcmF0ZVtpXSA9IDFlLTE1OwotICAgICAgICAgICAg
LyppZiAoVzBfcmF0ZVtpXSA+IC4wMSkKLSAgICAgICAgICAgICAgICBXMF9yYXRlW2ldID0gLjAx
OyovCi0gICAgICAgICAgICBXMF9vbGRncmFkW2ldID0gVzBfZ3JhZFtpXTsKLSAgICAgICAgICAg
IFcwW2ldICs9IFcwX2dyYWRbaV0qVzBfcmF0ZVtpXTsKLSAgICAgICAgfQotICAgICAgICBmb3Ig
KGk9MDtpPFcxX3NpemU7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoVzFfb2xkZ3Jh
ZFtpXSpXMV9ncmFkW2ldID4gMCkKLSAgICAgICAgICAgICAgICBXMV9yYXRlW2ldICo9IDEuMDE7
Ci0gICAgICAgICAgICBlbHNlIGlmIChXMV9vbGRncmFkW2ldKlcxX2dyYWRbaV0gPCAwKQotICAg
ICAgICAgICAgICAgIFcxX3JhdGVbaV0gKj0gLjk7Ci0gICAgICAgICAgICBtZWFuX3JhdGUgKz0g
VzFfcmF0ZVtpXTsKLSAgICAgICAgICAgIGlmIChXMV9yYXRlW2ldIDwgbWluX3JhdGUpCi0gICAg
ICAgICAgICAgICAgbWluX3JhdGUgPSBXMV9yYXRlW2ldOwotICAgICAgICAgICAgaWYgKFcxX3Jh
dGVbaV0gPCAxZS0xNSkKLSAgICAgICAgICAgICAgICBXMV9yYXRlW2ldID0gMWUtMTU7Ci0gICAg
ICAgICAgICBXMV9vbGRncmFkW2ldID0gVzFfZ3JhZFtpXTsKLSAgICAgICAgICAgIFcxW2ldICs9
IFcxX2dyYWRbaV0qVzFfcmF0ZVtpXTsKLSAgICAgICAgfQotICAgICAgICBtZWFuX3JhdGUgLz0g
KHRvcG9bMF0rMSkqdG9wb1sxXSArICh0b3BvWzFdKzEpKnRvcG9bMl07Ci0gICAgICAgIGZwcmlu
dGYgKHN0ZGVyciwgIiVnICVkIiwgbWVhbl9yYXRlLCBlKTsKLSAgICAgICAgaWYgKGNvdW50X3Jl
dHJpZXMpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAlZCIsIGNvdW50X3JldHJpZXMp
OwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0gICAgICAgIGlmIChzdG9wcGVkKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGZvciAoaT0wO2k8TkJfVEhSRUFEUztpKysp
Ci0gICAgewotICAgICAgICBhcmdzW2ldLmRvbmUgPSAxOwotICAgICAgICBzZW1fcG9zdCgmc2Vt
X2JlZ2luW2ldKTsKLSAgICAgICAgcHRocmVhZF9qb2luKHRocmVhZFtpXSwgTlVMTCk7Ci0gICAg
ICAgIGZwcmludGYgKHN0ZGVyciwgImpvaW5lZCAlZFxuIiwgaSk7Ci0gICAgfQotICAgIGZyZWUo
VzBfZ3JhZCk7Ci0gICAgZnJlZShXMF9vbGRncmFkKTsKLSAgICBmcmVlKFcxX2dyYWQpOwotICAg
IGZyZWUoVzFfb2xkZ3JhZCk7Ci0gICAgZnJlZShXMF9yYXRlKTsKLSAgICBmcmVlKGJlc3RfVzBf
cmF0ZSk7Ci0gICAgZnJlZShXMV9yYXRlKTsKLSAgICBmcmVlKGJlc3RfVzFfcmF0ZSk7Ci0gICAg
cmV0dXJuIGJlc3Rfcm1zOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17
Ci0gICAgaW50IGksIGo7Ci0gICAgaW50IG5iSW5wdXRzOwotICAgIGludCBuYk91dHB1dHM7Ci0g
ICAgaW50IG5iSGlkZGVuOwotICAgIGludCBuYlNhbXBsZXM7Ci0gICAgaW50IG5iRXBvY2g7Ci0g
ICAgaW50IG5iUmVhbElucHV0czsKLSAgICB1bnNpZ25lZCBpbnQgc2VlZDsKLSAgICBpbnQgcmV0
OwotICAgIGZsb2F0IHJtczsKLSAgICBmbG9hdCAqaW5wdXRzOwotICAgIGZsb2F0ICpvdXRwdXRz
OwotICAgIGlmIChhcmdjIT02KQotICAgIHsKLSAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAidXNh
Z2U6IG1scF90cmFpbiA8aW5wdXRzPiA8aGlkZGVuPiA8b3V0cHV0cz4gPG5iIHNhbXBsZXM+IDxu
YiBlcG9jaD5cbiIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgbmJJbnB1dHMgPSBh
dG9pKGFyZ3ZbMV0pOwotICAgIG5iSGlkZGVuID0gYXRvaShhcmd2WzJdKTsKLSAgICBuYk91dHB1
dHMgPSBhdG9pKGFyZ3ZbM10pOwotICAgIG5iU2FtcGxlcyA9IGF0b2koYXJndls0XSk7Ci0gICAg
bmJFcG9jaCA9IGF0b2koYXJndls1XSk7Ci0gICAgbmJSZWFsSW5wdXRzID0gbmJJbnB1dHM7Ci0g
ICAgaW5wdXRzID0gbWFsbG9jKG5iSW5wdXRzKm5iU2FtcGxlcypzaXplb2YoKmlucHV0cykpOwot
ICAgIG91dHB1dHMgPSBtYWxsb2MobmJPdXRwdXRzKm5iU2FtcGxlcypzaXplb2YoKm91dHB1dHMp
KTsKLQotICAgIHNlZWQgPSB0aW1lKE5VTEwpOwotICAgIC8qc2VlZCA9IDE0NTIyMDkwNDA7Ki8K
LSAgICBmcHJpbnRmIChzdGRlcnIsICJTZWVkIGlzICV1XG4iLCBzZWVkKTsKLSAgICBzcmFuZChz
ZWVkKTsKLSAgICBidWlsZF90YW5zaWdfdGFibGUoKTsKLSAgICBzaWduYWwoU0lHVEVSTSwgaGFu
ZGxlcik7Ci0gICAgc2lnbmFsKFNJR0lOVCwgaGFuZGxlcik7Ci0gICAgc2lnbmFsKFNJR0hVUCwg
aGFuZGxlcik7Ci0gICAgZm9yIChpPTA7aTxuYlNhbXBsZXM7aSsrKQotICAgIHsKLSAgICAgICAg
Zm9yIChqPTA7ajxuYlJlYWxJbnB1dHM7aisrKQotICAgICAgICAgICAgcmV0ID0gc2NhbmYoIiAl
ZiIsICZpbnB1dHNbaSpuYklucHV0cytqXSk7Ci0gICAgICAgIGZvciAoaj0wO2o8bmJPdXRwdXRz
O2orKykKLSAgICAgICAgICAgIHJldCA9IHNjYW5mKCIgJWYiLCAmb3V0cHV0c1tpKm5iT3V0cHV0
cytqXSk7Ci0gICAgICAgIGlmIChmZW9mKHN0ZGluKSkKLSAgICAgICAgewotICAgICAgICAgICAg
bmJTYW1wbGVzID0gaTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAg
IGludCB0b3BvWzNdID0ge25iSW5wdXRzLCBuYkhpZGRlbiwgbmJPdXRwdXRzfTsKLSAgICBNTFBU
cmFpbiAqbmV0OwotCi0gICAgZnByaW50ZiAoc3RkZXJyLCAiR290ICVkIHNhbXBsZXNcbiIsIG5i
U2FtcGxlcyk7Ci0gICAgbmV0ID0gbWxwX2luaXQodG9wbywgMywgaW5wdXRzLCBvdXRwdXRzLCBu
YlNhbXBsZXMpOwotICAgIHJtcyA9IG1scF90cmFpbl9iYWNrcHJvcChuZXQsIGlucHV0cywgb3V0
cHV0cywgbmJTYW1wbGVzLCBuYkVwb2NoLCAxKTsKLSAgICBwcmludGYgKCIjaWZkZWYgSEFWRV9D
T05GSUdfSFxuIik7Ci0gICAgcHJpbnRmICgiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iKTsKLSAg
ICBwcmludGYgKCIjZW5kaWZcblxuIik7Ci0gICAgcHJpbnRmICgiI2luY2x1ZGUgXCJtbHAuaFwi
XG5cbiIpOwotICAgIHByaW50ZiAoIi8qIFJNUyBlcnJvciB3YXMgJWYsIHNlZWQgd2FzICV1ICov
XG5cbiIsIHJtcywgc2VlZCk7Ci0gICAgcHJpbnRmICgic3RhdGljIGNvbnN0IGZsb2F0IHdlaWdo
dHNbJWRdID0ge1xuIiwgKHRvcG9bMF0rMSkqdG9wb1sxXSArICh0b3BvWzFdKzEpKnRvcG9bMl0p
OwotICAgIHByaW50ZiAoIlxuLyogaGlkZGVuIGxheWVyICovXG4iKTsKLSAgICBmb3IgKGk9MDtp
PCh0b3BvWzBdKzEpKnRvcG9bMV07aSsrKQotICAgIHsKLSAgICAgICAgcHJpbnRmICgiJWdmLCIs
IG5ldC0+d2VpZ2h0c1swXVtpXSk7Ci0gICAgICAgIGlmIChpJTU9PTQpCi0gICAgICAgICAgICBw
cmludGYoIlxuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiICIpOwotICAg
IH0KLSAgICBwcmludGYgKCJcbi8qIG91dHB1dCBsYXllciAqL1xuIik7Ci0gICAgZm9yIChpPTA7
aTwodG9wb1sxXSsxKSp0b3BvWzJdO2krKykKLSAgICB7Ci0gICAgICAgIHByaW50ZiAoIiVnZiwi
LCBuZXQtPndlaWdodHNbMV1baV0pOwotICAgICAgICBpZiAoaSU1PT00KQotICAgICAgICAgICAg
cHJpbnRmKCJcbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGYoIiAiKTsKLSAg
ICB9Ci0gICAgcHJpbnRmICgifTtcblxuIik7Ci0gICAgcHJpbnRmICgic3RhdGljIGNvbnN0IGlu
dCB0b3BvWzNdID0geyVkLCAlZCwgJWR9O1xuXG4iLCB0b3BvWzBdLCB0b3BvWzFdLCB0b3BvWzJd
KTsKLSAgICBwcmludGYgKCJjb25zdCBNTFAgbmV0ID0ge1xuIik7Ci0gICAgcHJpbnRmICgiICAg
IDMsXG4iKTsKLSAgICBwcmludGYgKCIgICAgdG9wbyxcbiIpOwotICAgIHByaW50ZiAoIiAgICB3
ZWlnaHRzXG59O1xuIik7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHBfdHJh
aW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc3JjL21scF90cmFpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTQw
NDE1ODVhM2Y5Y2I2NDMzNDhhOTkyMTQ1YWJjZTA2ZmU3ZWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scF90cmFpbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsODYgKzAsMCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTEgT2N0YXNpYyBJbmMu
Ci0gICBXcml0dGVuIGJ5IEplYW4tTWFyYyBWYWxpbiAqLwotLyoKLSAgIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSAgIC0gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSAgIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAg
IGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUgotICAgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YK
LSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lmbmRlZiBfTUxQ
X1RSQUlOX0hfCi0jZGVmaW5lIF9NTFBfVFJBSU5fSF8KLQotI2luY2x1ZGUgPG1hdGguaD4KLSNp
bmNsdWRlIDxzdGRsaWIuaD4KLQotZG91YmxlIHRhbnNpZ190YWJsZVs1MDFdOwotc3RhdGljIGlu
bGluZSBkb3VibGUgdGFuc2lnX2RvdWJsZShkb3VibGUgeCkKLXsKLSAgICByZXR1cm4gMi4vKDEu
K2V4cCgtMi4qeCkpIC0gMS47Ci19Ci1zdGF0aWMgaW5saW5lIHZvaWQgYnVpbGRfdGFuc2lnX3Rh
YmxlKHZvaWQpCi17Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpPTA7aTw1MDE7aSsrKQotICAgICAg
ICB0YW5zaWdfdGFibGVbaV0gPSB0YW5zaWdfZG91YmxlKC4wNCooaS0yNTApKTsKLX0KLQotc3Rh
dGljIGlubGluZSBkb3VibGUgdGFuc2lnX2FwcHJveChkb3VibGUgeCkKLXsKLSAgICBpbnQgaTsK
LSAgICBkb3VibGUgeSwgZHk7Ci0gICAgaWYgKHg+PTEwKQotICAgICAgICByZXR1cm4gMTsKLSAg
ICBpZiAoeDw9LTEwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaSA9IGxyaW50KDI1KngpOwot
ICAgIHggLT0gLjA0Kmk7Ci0gICAgeSA9IHRhbnNpZ190YWJsZVsyNTAraV07Ci0gICAgZHkgPSAx
LXkqeTsKLSAgICB5ID0geSArIHgqZHkqKDEgLSB5KngpOwotICAgIHJldHVybiB5OwotfQotCi1z
dGF0aWMgaW5saW5lIGZsb2F0IHJhbmRuKGZsb2F0IHNkKQotewotICAgZmxvYXQgVTEsIFUyLCBT
LCB4OwotICAgZG8gewotICAgICAgVTEgPSAoKGZsb2F0KXJhbmQoKSkvUkFORF9NQVg7Ci0gICAg
ICBVMiA9ICgoZmxvYXQpcmFuZCgpKS9SQU5EX01BWDsKLSAgICAgIFUxID0gMipVMS0xOwotICAg
ICAgVTIgPSAyKlUyLTE7Ci0gICAgICBTID0gVTEqVTEgKyBVMipVMjsKLSAgIH0gd2hpbGUgKFMg
Pj0gMSB8fCBTID09IDAuMGYpOwotICAgeCA9IHNkKnNxcnQoLTIgKiBsb2coUykgLyBTKSAqIFUx
OwotICAgcmV0dXJuIHg7Ci19Ci0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBsYXllcnM7
Ci0gICAgaW50ICp0b3BvOwotICAgIGRvdWJsZSAqKndlaWdodHM7Ci0gICAgZG91YmxlICoqYmVz
dF93ZWlnaHRzOwotICAgIGRvdWJsZSAqaW5fcmF0ZTsKLX0gTUxQVHJhaW47Ci0KLQotI2VuZGlm
IC8qIF9NTFBfVFJBSU5fSF8gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXMuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXMuYwpp
bmRleCBjZGJkMTNhMTFjZDc4ZDQ3MGE5ODE1NGZjMWVhMWU4YTZjM2RjZWYzLi41MzhiNWVhNzRl
YmVlN2RmYWUyZGM4OWUwYmM5MDEyYTFlMjRmZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzLmMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zcmMvb3B1cy5jCkBAIC0yNTIsNyArMjUyLDcgQEAgaW50IG9wdXNfcGFja2V0X3BhcnNlX2lt
cGwoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgb3B1c19pbnQzMiBsZW4sCiAgICAgICAvKiBO
dW1iZXIgb2YgZnJhbWVzIGVuY29kZWQgaW4gYml0cyAwIHRvIDUgKi8KICAgICAgIGNoID0gKmRh
dGErKzsKICAgICAgIGNvdW50ID0gY2gmMHgzRjsKLSAgICAgIGlmIChjb3VudCA8PSAwIHx8IGZy
YW1lc2l6ZSpjb3VudCA+IDU3NjApCisgICAgICBpZiAoY291bnQgPD0gMCB8fCBmcmFtZXNpemUq
KG9wdXNfaW50MzIpY291bnQgPiA1NzYwKQogICAgICAgICAgcmV0dXJuIE9QVVNfSU5WQUxJRF9Q
QUNLRVQ7CiAgICAgICBsZW4tLTsKICAgICAgIC8qIFBhZGRpbmcgZmxhZyBpcyBiaXQgNiAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zcmMvb3B1c19jb21wYXJlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX2NvbXBhcmUuYwppbmRleCA5
NDhmZWVhMjAzODUyZjBiMzNiYTYxZjRhNTY5NDlmOGQyNWExZjM3Li4xOTU2ZTA4ZmE1Y2VlMGU5
Yjg3ZTVmMmFiNTIxN2UyNGVhYzk4ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX2NvbXBhcmUuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NyYy9vcHVzX2NvbXBhcmUuYwpAQCAtMjM4LDE1ICsyMzgsMTEgQEAgaW50IG1haW4oaW50
IF9hcmdjLGNvbnN0IGNoYXIgKipfYXJndil7CiAgIGlmKHhsZW5ndGghPXlsZW5ndGgqZG93bnNh
bXBsZSl7CiAgICAgZnByaW50ZihzdGRlcnIsIlNhbXBsZSBjb3VudHMgZG8gbm90IG1hdGNoICgl
bHUhPSVsdSkuXG4iLAogICAgICAodW5zaWduZWQgbG9uZyl4bGVuZ3RoLCh1bnNpZ25lZCBsb25n
KXlsZW5ndGgqZG93bnNhbXBsZSk7Ci0gICAgZnJlZSh4KTsKLSAgICBmcmVlKHkpOwogICAgIHJl
dHVybiBFWElUX0ZBSUxVUkU7CiAgIH0KICAgaWYoeGxlbmd0aDxURVNUX1dJTl9TSVpFKXsKICAg
ICBmcHJpbnRmKHN0ZGVyciwiSW5zdWZmaWNpZW50IHNhbXBsZSBkYXRhICglbHU8JWkpLlxuIiwK
ICAgICAgKHVuc2lnbmVkIGxvbmcpeGxlbmd0aCxURVNUX1dJTl9TSVpFKTsKLSAgICBmcmVlKHgp
OwotICAgIGZyZWUoeSk7CiAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgfQogICBuZnJhbWVz
PSh4bGVuZ3RoLVRFU1RfV0lOX1NJWkUrVEVTVF9XSU5fU1RFUCkvVEVTVF9XSU5fU1RFUDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc3JjL29wdXNfZGVjb2Rlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19kZWNvZGVyLmMKaW5kZXggMTQ5
YWU3ZjIxZDhiYjQxNjdmY2M5MjYyZDMyZDQzOTNiMzE5ZjQ2MC4uOTExMzYzOGEwMDBiYWIyYTAx
OTc3YjgxYzhmZDdmYjAzMjgxNzUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19kZWNvZGVyLmMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zcmMvb3B1c19kZWNvZGVyLmMKQEAgLTc4LDYgKzc4LDI2IEBAIHN0cnVjdCBPcHVzRGVjb2Rl
ciB7CiAgICBvcHVzX3VpbnQzMiAgcmFuZ2VGaW5hbDsKIH07CiAKKyNpZiBkZWZpbmVkKEVOQUJM
RV9IQVJERU5JTkcpIHx8IGRlZmluZWQoRU5BQkxFX0FTU0VSVElPTlMpCitzdGF0aWMgdm9pZCB2
YWxpZGF0ZV9vcHVzX2RlY29kZXIoT3B1c0RlY29kZXIgKnN0KQoreworICAgY2VsdF9hc3NlcnQo
c3QtPmNoYW5uZWxzID09IDEgfHwgc3QtPmNoYW5uZWxzID09IDIpOworICAgY2VsdF9hc3NlcnQo
c3QtPkZzID09IDQ4MDAwIHx8IHN0LT5GcyA9PSAyNDAwMCB8fCBzdC0+RnMgPT0gMTYwMDAgfHwg
c3QtPkZzID09IDEyMDAwIHx8IHN0LT5GcyA9PSA4MDAwKTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5E
ZWNDb250cm9sLkFQSV9zYW1wbGVSYXRlID09IHN0LT5Gcyk7CisgICBjZWx0X2Fzc2VydChzdC0+
RGVjQ29udHJvbC5pbnRlcm5hbFNhbXBsZVJhdGUgPT0gMCB8fCBzdC0+RGVjQ29udHJvbC5pbnRl
cm5hbFNhbXBsZVJhdGUgPT0gMTYwMDAgfHwgc3QtPkRlY0NvbnRyb2wuaW50ZXJuYWxTYW1wbGVS
YXRlID09IDEyMDAwIHx8IHN0LT5EZWNDb250cm9sLmludGVybmFsU2FtcGxlUmF0ZSA9PSA4MDAw
KTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5EZWNDb250cm9sLm5DaGFubmVsc0FQSSA9PSBzdC0+Y2hh
bm5lbHMpOworICAgY2VsdF9hc3NlcnQoc3QtPkRlY0NvbnRyb2wubkNoYW5uZWxzSW50ZXJuYWwg
PT0gMCB8fCBzdC0+RGVjQ29udHJvbC5uQ2hhbm5lbHNJbnRlcm5hbCA9PSAxIHx8IHN0LT5EZWND
b250cm9sLm5DaGFubmVsc0ludGVybmFsID09IDIpOworICAgY2VsdF9hc3NlcnQoc3QtPkRlY0Nv
bnRyb2wucGF5bG9hZFNpemVfbXMgPT0gMCB8fCBzdC0+RGVjQ29udHJvbC5wYXlsb2FkU2l6ZV9t
cyA9PSAxMCB8fCBzdC0+RGVjQ29udHJvbC5wYXlsb2FkU2l6ZV9tcyA9PSAyMCB8fCBzdC0+RGVj
Q29udHJvbC5wYXlsb2FkU2l6ZV9tcyA9PSA0MCB8fCBzdC0+RGVjQ29udHJvbC5wYXlsb2FkU2l6
ZV9tcyA9PSA2MCk7CisjaWZkZWYgT1BVU19BUkNITUFTSworICAgY2VsdF9hc3NlcnQoc3QtPmFy
Y2ggPj0gMCk7CisgICBjZWx0X2Fzc2VydChzdC0+YXJjaCA8PSBPUFVTX0FSQ0hNQVNLKTsKKyNl
bmRpZgorICAgY2VsdF9hc3NlcnQoc3QtPnN0cmVhbV9jaGFubmVscyA9PSAxIHx8IHN0LT5zdHJl
YW1fY2hhbm5lbHMgPT0gMik7Cit9CisjZGVmaW5lIFZBTElEQVRFX09QVVNfREVDT0RFUihzdCkg
dmFsaWRhdGVfb3B1c19kZWNvZGVyKHN0KQorI2Vsc2UKKyNkZWZpbmUgVkFMSURBVEVfT1BVU19E
RUNPREVSKHN0KQorI2VuZGlmCiAKIGludCBvcHVzX2RlY29kZXJfZ2V0X3NpemUoaW50IGNoYW5u
ZWxzKQogewpAQCAtMTA0LDcgKzEyNCw3IEBAIGludCBvcHVzX2RlY29kZXJfaW5pdChPcHVzRGVj
b2RlciAqc3QsIG9wdXNfaW50MzIgRnMsIGludCBjaGFubmVscykKICAgICAgIHJldHVybiBPUFVT
X0JBRF9BUkc7CiAKICAgIE9QVVNfQ0xFQVIoKGNoYXIqKXN0LCBvcHVzX2RlY29kZXJfZ2V0X3Np
emUoY2hhbm5lbHMpKTsKLSAgIC8qIEluaXRpYWxpemUgU0lMSyBlbmNvZGVyICovCisgICAvKiBJ
bml0aWFsaXplIFNJTEsgZGVjb2RlciAqLwogICAgcmV0ID0gc2lsa19HZXRfRGVjb2Rlcl9TaXpl
KCZzaWxrRGVjU2l6ZUJ5dGVzKTsKICAgIGlmIChyZXQpCiAgICAgICByZXR1cm4gT1BVU19JTlRF
Uk5BTF9FUlJPUjsKQEAgLTIxNyw2ICsyMzcsNyBAQCBzdGF0aWMgaW50IG9wdXNfZGVjb2RlX2Zy
YW1lKE9wdXNEZWNvZGVyICpzdCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKIAogICAgaW50
IGF1ZGlvc2l6ZTsKICAgIGludCBtb2RlOworICAgaW50IGJhbmR3aWR0aDsKICAgIGludCB0cmFu
c2l0aW9uPTA7CiAgICBpbnQgc3RhcnRfYmFuZDsKICAgIGludCByZWR1bmRhbmN5PTA7CkBAIC0y
NTMsMTAgKzI3NCwxMiBAQCBzdGF0aWMgaW50IG9wdXNfZGVjb2RlX2ZyYW1lKE9wdXNEZWNvZGVy
ICpzdCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKICAgIHsKICAgICAgIGF1ZGlvc2l6ZSA9
IHN0LT5mcmFtZV9zaXplOwogICAgICAgbW9kZSA9IHN0LT5tb2RlOworICAgICAgYmFuZHdpZHRo
ID0gc3QtPmJhbmR3aWR0aDsKICAgICAgIGVjX2RlY19pbml0KCZkZWMsKHVuc2lnbmVkIGNoYXIq
KWRhdGEsbGVuKTsKICAgIH0gZWxzZSB7CiAgICAgICBhdWRpb3NpemUgPSBmcmFtZV9zaXplOwog
ICAgICAgbW9kZSA9IHN0LT5wcmV2X21vZGU7CisgICAgICBiYW5kd2lkdGggPSAwOwogCiAgICAg
ICBpZiAobW9kZSA9PSAwKQogICAgICAgewpAQCAtMzU1LDE1ICszNzgsMTUgQEAgc3RhdGljIGlu
dCBvcHVzX2RlY29kZV9mcmFtZShPcHVzRGVjb2RlciAqc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmRhdGEsCiAgICAgICB7CiAgICAgICAgIHN0LT5EZWNDb250cm9sLm5DaGFubmVsc0ludGVybmFs
ID0gc3QtPnN0cmVhbV9jaGFubmVsczsKICAgICAgICAgaWYoIG1vZGUgPT0gTU9ERV9TSUxLX09O
TFkgKSB7Ci0gICAgICAgICAgIGlmKCBzdC0+YmFuZHdpZHRoID09IE9QVVNfQkFORFdJRFRIX05B
UlJPV0JBTkQgKSB7CisgICAgICAgICAgIGlmKCBiYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhf
TkFSUk9XQkFORCApIHsKICAgICAgICAgICAgICAgc3QtPkRlY0NvbnRyb2wuaW50ZXJuYWxTYW1w
bGVSYXRlID0gODAwMDsKLSAgICAgICAgICAgfSBlbHNlIGlmKCBzdC0+YmFuZHdpZHRoID09IE9Q
VVNfQkFORFdJRFRIX01FRElVTUJBTkQgKSB7CisgICAgICAgICAgIH0gZWxzZSBpZiggYmFuZHdp
ZHRoID09IE9QVVNfQkFORFdJRFRIX01FRElVTUJBTkQgKSB7CiAgICAgICAgICAgICAgIHN0LT5E
ZWNDb250cm9sLmludGVybmFsU2FtcGxlUmF0ZSA9IDEyMDAwOwotICAgICAgICAgICB9IGVsc2Ug
aWYoIHN0LT5iYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhfV0lERUJBTkQgKSB7CisgICAgICAg
ICAgIH0gZWxzZSBpZiggYmFuZHdpZHRoID09IE9QVVNfQkFORFdJRFRIX1dJREVCQU5EICkgewog
ICAgICAgICAgICAgICBzdC0+RGVjQ29udHJvbC5pbnRlcm5hbFNhbXBsZVJhdGUgPSAxNjAwMDsK
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgc3QtPkRlY0NvbnRyb2wuaW50ZXJu
YWxTYW1wbGVSYXRlID0gMTYwMDA7Ci0gICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7Cisg
ICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgLyogSHlicmlkIG1vZGUgKi8KQEAgLTQyNywxMCArNDUwLDI2IEBA
IHN0YXRpYyBpbnQgb3B1c19kZWNvZGVfZnJhbWUoT3B1c0RlY29kZXIgKnN0LCBjb25zdCB1bnNp
Z25lZCBjaGFyICpkYXRhLAogICAgaWYgKG1vZGUgIT0gTU9ERV9DRUxUX09OTFkpCiAgICAgICBz
dGFydF9iYW5kID0gMTc7CiAKKyAgIGlmIChyZWR1bmRhbmN5KQorICAgeworICAgICAgdHJhbnNp
dGlvbiA9IDA7CisgICAgICBwY21fdHJhbnNpdGlvbl9zaWxrX3NpemU9QUxMT0NfTk9ORTsKKyAg
IH0KKworICAgQUxMT0MocGNtX3RyYW5zaXRpb25fc2lsaywgcGNtX3RyYW5zaXRpb25fc2lsa19z
aXplLCBvcHVzX3ZhbDE2KTsKKworICAgaWYgKHRyYW5zaXRpb24gJiYgbW9kZSAhPSBNT0RFX0NF
TFRfT05MWSkKKyAgIHsKKyAgICAgIHBjbV90cmFuc2l0aW9uID0gcGNtX3RyYW5zaXRpb25fc2ls
azsKKyAgICAgIG9wdXNfZGVjb2RlX2ZyYW1lKHN0LCBOVUxMLCAwLCBwY21fdHJhbnNpdGlvbiwg
SU1JTihGNSwgYXVkaW9zaXplKSwgMCk7CisgICB9CisKKworICAgaWYgKGJhbmR3aWR0aCkKICAg
IHsKICAgICAgIGludCBlbmRiYW5kPTIxOwogCi0gICAgICBzd2l0Y2goc3QtPmJhbmR3aWR0aCkK
KyAgICAgIHN3aXRjaChiYW5kd2lkdGgpCiAgICAgICB7CiAgICAgICBjYXNlIE9QVVNfQkFORFdJ
RFRIX05BUlJPV0JBTkQ6CiAgICAgICAgICBlbmRiYW5kID0gMTM7CkBAIC00NDUsMjQgKzQ4NCwx
MyBAQCBzdGF0aWMgaW50IG9wdXNfZGVjb2RlX2ZyYW1lKE9wdXNEZWNvZGVyICpzdCwgY29uc3Qg
dW5zaWduZWQgY2hhciAqZGF0YSwKICAgICAgIGNhc2UgT1BVU19CQU5EV0lEVEhfRlVMTEJBTkQ6
CiAgICAgICAgICBlbmRiYW5kID0gMjE7CiAgICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6
CisgICAgICAgICBjZWx0X2Fzc2VydCgwKTsKKyAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAg
ICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRfRU5EX0JBTkQoZW5kYmFuZCkp
OwotICAgICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRfQ0hBTk5FTFMoc3Qt
PnN0cmVhbV9jaGFubmVscykpOwotICAgfQotCi0gICBpZiAocmVkdW5kYW5jeSkKLSAgIHsKLSAg
ICAgIHRyYW5zaXRpb24gPSAwOwotICAgICAgcGNtX3RyYW5zaXRpb25fc2lsa19zaXplPUFMTE9D
X05PTkU7Ci0gICB9Ci0KLSAgIEFMTE9DKHBjbV90cmFuc2l0aW9uX3NpbGssIHBjbV90cmFuc2l0
aW9uX3NpbGtfc2l6ZSwgb3B1c192YWwxNik7Ci0KLSAgIGlmICh0cmFuc2l0aW9uICYmIG1vZGUg
IT0gTU9ERV9DRUxUX09OTFkpCi0gICB7Ci0gICAgICBwY21fdHJhbnNpdGlvbiA9IHBjbV90cmFu
c2l0aW9uX3NpbGs7Ci0gICAgICBvcHVzX2RlY29kZV9mcmFtZShzdCwgTlVMTCwgMCwgcGNtX3Ry
YW5zaXRpb24sIElNSU4oRjUsIGF1ZGlvc2l6ZSksIDApOworICAgICAgTVVTVF9TVUNDRUVEKGNl
bHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENFTFRfU0VUX0VORF9CQU5EKGVuZGJhbmQpKSk7CiAg
ICB9CisgICBNVVNUX1NVQ0NFRUQoY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRf
Q0hBTk5FTFMoc3QtPnN0cmVhbV9jaGFubmVscykpKTsKIAogICAgLyogT25seSBhbGxvY2F0aW9u
IG1lbW9yeSBmb3IgcmVkdW5kYW5jeSBpZi93aGVuIG5lZWRlZCAqLwogICAgcmVkdW5kYW50X2F1
ZGlvX3NpemUgPSByZWR1bmRhbmN5ID8gRjUqc3QtPmNoYW5uZWxzIDogQUxMT0NfTk9ORTsKQEAg
LTQ3MSwyMSArNDk5LDIxIEBAIHN0YXRpYyBpbnQgb3B1c19kZWNvZGVfZnJhbWUoT3B1c0RlY29k
ZXIgKnN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgLyogNSBtcyByZWR1bmRhbnQg
ZnJhbWUgZm9yIENFTFQtPlNJTEsqLwogICAgaWYgKHJlZHVuZGFuY3kgJiYgY2VsdF90b19zaWxr
KQogICAgewotICAgICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRfU1RBUlRf
QkFORCgwKSk7CisgICAgICBNVVNUX1NVQ0NFRUQoY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywg
Q0VMVF9TRVRfU1RBUlRfQkFORCgwKSkpOwogICAgICAgY2VsdF9kZWNvZGVfd2l0aF9lYyhjZWx0
X2RlYywgZGF0YStsZW4sIHJlZHVuZGFuY3lfYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZHVuZGFudF9hdWRpbywgRjUsIE5VTEwsIDApOwotICAgICAgY2VsdF9kZWNvZGVyX2N0
bChjZWx0X2RlYywgT1BVU19HRVRfRklOQUxfUkFOR0UoJnJlZHVuZGFudF9ybmcpKTsKKyAgICAg
IE1VU1RfU1VDQ0VFRChjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBPUFVTX0dFVF9GSU5BTF9S
QU5HRSgmcmVkdW5kYW50X3JuZykpKTsKICAgIH0KIAogICAgLyogTVVTVCBiZSBhZnRlciBQTEMg
Ki8KLSAgIGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENFTFRfU0VUX1NUQVJUX0JBTkQoc3Rh
cnRfYmFuZCkpOworICAgTVVTVF9TVUNDRUVEKGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENF
TFRfU0VUX1NUQVJUX0JBTkQoc3RhcnRfYmFuZCkpKTsKIAogICAgaWYgKG1vZGUgIT0gTU9ERV9T
SUxLX09OTFkpCiAgICB7CiAgICAgICBpbnQgY2VsdF9mcmFtZV9zaXplID0gSU1JTihGMjAsIGZy
YW1lX3NpemUpOwogICAgICAgLyogTWFrZSBzdXJlIHRvIGRpc2NhcmQgYW55IHByZXZpb3VzIENF
TFQgc3RhdGUgKi8KICAgICAgIGlmIChtb2RlICE9IHN0LT5wcmV2X21vZGUgJiYgc3QtPnByZXZf
bW9kZSA+IDAgJiYgIXN0LT5wcmV2X3JlZHVuZGFuY3kpCi0gICAgICAgICBjZWx0X2RlY29kZXJf
Y3RsKGNlbHRfZGVjLCBPUFVTX1JFU0VUX1NUQVRFKTsKKyAgICAgICAgIE1VU1RfU1VDQ0VFRChj
ZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBPUFVTX1JFU0VUX1NUQVRFKSk7CiAgICAgICAvKiBE
ZWNvZGUgQ0VMVCAqLwogICAgICAgY2VsdF9yZXQgPSBjZWx0X2RlY29kZV93aXRoX2VjKGNlbHRf
ZGVjLCBkZWNvZGVfZmVjID8gTlVMTCA6IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGVuLCBwY20sIGNlbHRfZnJhbWVfc2l6ZSwgJmRlYywgY2VsdF9hY2N1bSk7
CkBAIC01MDAsNyArNTI4LDcgQEAgc3RhdGljIGludCBvcHVzX2RlY29kZV9mcmFtZShPcHVzRGVj
b2RlciAqc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCiAgICAgICAgICBkbyBhIGZhZGUt
b3V0IGJ5IGRlY29kaW5nIGEgc2lsZW5jZSBmcmFtZSAqLwogICAgICAgaWYgKHN0LT5wcmV2X21v
ZGUgPT0gTU9ERV9IWUJSSUQgJiYgIShyZWR1bmRhbmN5ICYmIGNlbHRfdG9fc2lsayAmJiBzdC0+
cHJldl9yZWR1bmRhbmN5KSApCiAgICAgICB7Ci0gICAgICAgICBjZWx0X2RlY29kZXJfY3RsKGNl
bHRfZGVjLCBDRUxUX1NFVF9TVEFSVF9CQU5EKDApKTsKKyAgICAgICAgIE1VU1RfU1VDQ0VFRChj
ZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX1NFVF9TVEFSVF9CQU5EKDApKSk7CiAgICAg
ICAgICBjZWx0X2RlY29kZV93aXRoX2VjKGNlbHRfZGVjLCBzaWxlbmNlLCAyLCBwY20sIEYyXzUs
IE5VTEwsIGNlbHRfYWNjdW0pOwogICAgICAgfQogICAgfQpAQCAtNTE4LDE4ICs1NDYsMTggQEAg
c3RhdGljIGludCBvcHVzX2RlY29kZV9mcmFtZShPcHVzRGVjb2RlciAqc3QsIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKmRhdGEsCiAKICAgIHsKICAgICAgIGNvbnN0IENFTFRNb2RlICpjZWx0X21vZGU7
Ci0gICAgICBjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX0dFVF9NT0RFKCZjZWx0X21v
ZGUpKTsKKyAgICAgIE1VU1RfU1VDQ0VFRChjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxU
X0dFVF9NT0RFKCZjZWx0X21vZGUpKSk7CiAgICAgICB3aW5kb3cgPSBjZWx0X21vZGUtPndpbmRv
dzsKICAgIH0KIAogICAgLyogNSBtcyByZWR1bmRhbnQgZnJhbWUgZm9yIFNJTEstPkNFTFQgKi8K
ICAgIGlmIChyZWR1bmRhbmN5ICYmICFjZWx0X3RvX3NpbGspCiAgICB7Ci0gICAgICBjZWx0X2Rl
Y29kZXJfY3RsKGNlbHRfZGVjLCBPUFVTX1JFU0VUX1NUQVRFKTsKLSAgICAgIGNlbHRfZGVjb2Rl
cl9jdGwoY2VsdF9kZWMsIENFTFRfU0VUX1NUQVJUX0JBTkQoMCkpOworICAgICAgTVVTVF9TVUND
RUVEKGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfUkVTRVRfU1RBVEUpKTsKKyAgICAg
IE1VU1RfU1VDQ0VFRChjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX1NFVF9TVEFSVF9C
QU5EKDApKSk7CiAKICAgICAgIGNlbHRfZGVjb2RlX3dpdGhfZWMoY2VsdF9kZWMsIGRhdGErbGVu
LCByZWR1bmRhbmN5X2J5dGVzLCByZWR1bmRhbnRfYXVkaW8sIEY1LCBOVUxMLCAwKTsKLSAgICAg
IGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfR0VUX0ZJTkFMX1JBTkdFKCZyZWR1bmRh
bnRfcm5nKSk7CisgICAgICBNVVNUX1NVQ0NFRUQoY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywg
T1BVU19HRVRfRklOQUxfUkFOR0UoJnJlZHVuZGFudF9ybmcpKSk7CiAgICAgICBzbW9vdGhfZmFk
ZShwY20rc3QtPmNoYW5uZWxzKihmcmFtZV9zaXplLUYyXzUpLCByZWR1bmRhbnRfYXVkaW8rc3Qt
PmNoYW5uZWxzKkYyXzUsCiAgICAgICAgICAgICAgICAgICBwY20rc3QtPmNoYW5uZWxzKihmcmFt
ZV9zaXplLUYyXzUpLCBGMl81LCBzdC0+Y2hhbm5lbHMsIHdpbmRvdywgc3QtPkZzKTsKICAgIH0K
QEAgLTYwNSw2ICs2MzMsNyBAQCBpbnQgb3B1c19kZWNvZGVfbmF0aXZlKE9wdXNEZWNvZGVyICpz
dCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKICAgIGludCBwYWNrZXRfZnJhbWVfc2l6ZSwg
cGFja2V0X2JhbmR3aWR0aCwgcGFja2V0X21vZGUsIHBhY2tldF9zdHJlYW1fY2hhbm5lbHM7CiAg
ICAvKiA0OCB4IDIuNSBtcyA9IDEyMCBtcyAqLwogICAgb3B1c19pbnQxNiBzaXplWzQ4XTsKKyAg
IFZBTElEQVRFX09QVVNfREVDT0RFUihzdCk7CiAgICBpZiAoZGVjb2RlX2ZlYzwwIHx8IGRlY29k
ZV9mZWM+MSkKICAgICAgIHJldHVybiBPUFVTX0JBRF9BUkc7CiAgICAvKiBGb3IgRkVDL1BMQywg
ZnJhbWVfc2l6ZSBoYXMgdG8gYmUgdG8gaGF2ZSBhIG11bHRpcGxlIG9mIDIuNSBtcyAqLwpAQCAt
NzQwLDYgKzc2OSw3IEBAIGludCBvcHVzX2RlY29kZV9mbG9hdChPcHVzRGVjb2RlciAqc3QsIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCiAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gT1BV
U19JTlZBTElEX1BBQ0tFVDsKICAgIH0KKyAgIGNlbHRfYXNzZXJ0KHN0LT5jaGFubmVscyA9PSAx
IHx8IHN0LT5jaGFubmVscyA9PSAyKTsKICAgIEFMTE9DKG91dCwgZnJhbWVfc2l6ZSpzdC0+Y2hh
bm5lbHMsIG9wdXNfaW50MTYpOwogCiAgICByZXQgPSBvcHVzX2RlY29kZV9uYXRpdmUoc3QsIGRh
dGEsIGxlbiwgb3V0LCBmcmFtZV9zaXplLCBkZWNvZGVfZmVjLCAwLCBOVUxMLCAwKTsKQEAgLTc3
Nyw2ICs4MDcsNyBAQCBpbnQgb3B1c19kZWNvZGUoT3B1c0RlY29kZXIgKnN0LCBjb25zdCB1bnNp
Z25lZCBjaGFyICpkYXRhLAogICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIE9QVVNfSU5WQUxJ
RF9QQUNLRVQ7CiAgICB9CisgICBjZWx0X2Fzc2VydChzdC0+Y2hhbm5lbHMgPT0gMSB8fCBzdC0+
Y2hhbm5lbHMgPT0gMik7CiAgICBBTExPQyhvdXQsIGZyYW1lX3NpemUqc3QtPmNoYW5uZWxzLCBm
bG9hdCk7CiAKICAgIHJldCA9IG9wdXNfZGVjb2RlX25hdGl2ZShzdCwgZGF0YSwgbGVuLCBvdXQs
IGZyYW1lX3NpemUsIGRlY29kZV9mZWMsIDAsIE5VTEwsIDEpOwpAQCAtODY0LDcgKzg5NSw3IEBA
IGludCBvcHVzX2RlY29kZXJfY3RsKE9wdXNEZWNvZGVyICpzdCwgaW50IHJlcXVlc3QsIC4uLikK
ICAgICAgICAgIGdvdG8gYmFkX2FyZzsKICAgICAgIH0KICAgICAgIGlmIChzdC0+cHJldl9tb2Rl
ID09IE1PREVfQ0VMVF9PTkxZKQotICAgICAgICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywg
T1BVU19HRVRfUElUQ0godmFsdWUpKTsKKyAgICAgICAgIHJldCA9IGNlbHRfZGVjb2Rlcl9jdGwo
Y2VsdF9kZWMsIE9QVVNfR0VUX1BJVENIKHZhbHVlKSk7CiAgICAgICBlbHNlCiAgICAgICAgICAq
dmFsdWUgPSBzdC0+RGVjQ29udHJvbC5wcmV2UGl0Y2hMYWc7CiAgICB9CkBAIC05MDYsNyArOTM3
LDcgQEAgaW50IG9wdXNfZGVjb2Rlcl9jdGwoT3B1c0RlY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwg
Li4uKQogICAgICAgIHsKICAgICAgICAgICBnb3RvIGJhZF9hcmc7CiAgICAgICAgfQotICAgICAg
IGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfU0VUX1BIQVNFX0lOVkVSU0lPTl9ESVNB
QkxFRCh2YWx1ZSkpOworICAgICAgIHJldCA9IGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9Q
VVNfU0VUX1BIQVNFX0lOVkVSU0lPTl9ESVNBQkxFRCh2YWx1ZSkpOwogICAgfQogICAgYnJlYWs7
CiAgICBjYXNlIE9QVVNfR0VUX1BIQVNFX0lOVkVSU0lPTl9ESVNBQkxFRF9SRVFVRVNUOgpAQCAt
OTE2LDcgKzk0Nyw3IEBAIGludCBvcHVzX2RlY29kZXJfY3RsKE9wdXNEZWNvZGVyICpzdCwgaW50
IHJlcXVlc3QsIC4uLikKICAgICAgICB7CiAgICAgICAgICAgZ290byBiYWRfYXJnOwogICAgICAg
IH0KLSAgICAgICBjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBPUFVTX0dFVF9QSEFTRV9JTlZF
UlNJT05fRElTQUJMRUQodmFsdWUpKTsKKyAgICAgICByZXQgPSBjZWx0X2RlY29kZXJfY3RsKGNl
bHRfZGVjLCBPUFVTX0dFVF9QSEFTRV9JTlZFUlNJT05fRElTQUJMRUQodmFsdWUpKTsKICAgIH0K
ICAgIGJyZWFrOwogICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfZGVtby5jIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMv
b3B1c19kZW1vLmMKaW5kZXggODM2YTdiZTZhZWJlZjk4YzZlMjhlOGY4ZWM0ZTE3N2E0YTRiYTVi
Yy4uNGNjMjZhNmM3NzFmZDAyNmY5MDUyMDYzNmQwYmI4NTllYTcwNTE3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
cmMvb3B1c19kZW1vLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19kZW1vLmMKQEAgLTc5LDE0ICs3OSw3IEBAIHN0
YXRpYyBvcHVzX3VpbnQzMiBjaGFyX3RvX2ludCh1bnNpZ25lZCBjaGFyIGNoWzRdKQogICAgICAg
ICAgfCAoKG9wdXNfdWludDMyKWNoWzJdPDwgOCkgfCAgKG9wdXNfdWludDMyKWNoWzNdOwogfQog
Ci1zdGF0aWMgdm9pZCBjaGVja19lbmNvZGVyX29wdGlvbihpbnQgZGVjb2RlX29ubHksIGNvbnN0
IGNoYXIgKm9wdCkKLXsKLSAgIGlmIChkZWNvZGVfb25seSkKLSAgIHsKLSAgICAgIGZwcmludGYo
c3RkZXJyLCAib3B0aW9uICVzIGlzIG9ubHkgZm9yIGVuY29kaW5nXG4iLCBvcHQpOwotICAgICAg
ZXhpdChFWElUX0ZBSUxVUkUpOwotICAgfQotfQorI2RlZmluZSBjaGVja19lbmNvZGVyX29wdGlv
bihkZWNvZGVfb25seSwgb3B0KSBkbyB7aWYgKGRlY29kZV9vbmx5KSB7ZnByaW50ZihzdGRlcnIs
ICJvcHRpb24gJXMgaXMgb25seSBmb3IgZW5jb2RpbmdcbiIsIG9wdCk7IGdvdG8gZmFpbHVyZTt9
fSB3aGlsZSgwKQogCiBzdGF0aWMgY29uc3QgaW50IHNpbGs4X3Rlc3RbXVs0XSA9IHsKICAgICAg
IHtNT0RFX1NJTEtfT05MWSwgT1BVU19CQU5EV0lEVEhfTkFSUk9XQkFORCwgOTYwKjMsIDF9LApA
QCAtMjE4LDE1ICsyMTEsMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsK
ICAgICBpbnQgZXJyOwogICAgIGNoYXIgKmluRmlsZSwgKm91dEZpbGU7Ci0gICAgRklMRSAqZmlu
LCAqZm91dDsKKyAgICBGSUxFICpmaW49TlVMTDsKKyAgICBGSUxFICpmb3V0PU5VTEw7CiAgICAg
T3B1c0VuY29kZXIgKmVuYz1OVUxMOwogICAgIE9wdXNEZWNvZGVyICpkZWM9TlVMTDsKICAgICBp
bnQgYXJnczsKICAgICBpbnQgbGVuWzJdOwogICAgIGludCBmcmFtZV9zaXplLCBjaGFubmVsczsK
ICAgICBvcHVzX2ludDMyIGJpdHJhdGVfYnBzPTA7Ci0gICAgdW5zaWduZWQgY2hhciAqZGF0YVsy
XTsKLSAgICB1bnNpZ25lZCBjaGFyICpmYnl0ZXM7CisgICAgdW5zaWduZWQgY2hhciAqZGF0YVsy
XSA9IHtOVUxMLCBOVUxMfTsKKyAgICB1bnNpZ25lZCBjaGFyICpmYnl0ZXM9TlVMTDsKICAgICBv
cHVzX2ludDMyIHNhbXBsaW5nX3JhdGU7CiAgICAgaW50IHVzZV92YnI7CiAgICAgaW50IG1heF9w
YXlsb2FkX2J5dGVzOwpAQCAtMjQwLDcgKzIzNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCiAgICAgaW50IGs7CiAgICAgb3B1c19pbnQzMiBza2lwPTA7CiAgICAgaW50IHN0
b3A9MDsKLSAgICBzaG9ydCAqaW4sICpvdXQ7CisgICAgc2hvcnQgKmluPU5VTEw7CisgICAgc2hv
cnQgKm91dD1OVUxMOwogICAgIGludCBhcHBsaWNhdGlvbj1PUFVTX0FQUExJQ0FUSU9OX0FVRElP
OwogICAgIGRvdWJsZSBiaXRzPTAuMCwgYml0c19tYXg9MC4wLCBiaXRzX2FjdD0wLjAsIGJpdHMy
PTAuMCwgbnJnOwogICAgIGRvdWJsZSB0b3Rfc2FtcGxlcz0wOwpAQCAtMjY4LDExICsyNjMsMTIg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpbnQgcmVtYWluaW5nPTA7
CiAgICAgaW50IHZhcmlhYmxlX2R1cmF0aW9uPU9QVVNfRlJBTUVTSVpFX0FSRzsKICAgICBpbnQg
ZGVsYXllZF9kZWNpc2lvbj0wOworICAgIGludCByZXQgPSBFWElUX0ZBSUxVUkU7CiAKICAgICBp
ZiAoYXJnYyA8IDUgKQogICAgIHsKICAgICAgICBwcmludF91c2FnZSggYXJndiApOwotICAgICAg
IHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KIAogICAg
IHRvdF9pbj10b3Rfb3V0PTA7CkBAIC0yOTEsNyArMjg3LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAoIWRlY29kZV9vbmx5ICYmIGFyZ2MgPCA3ICkKICAgICB7
CiAgICAgICAgcHJpbnRfdXNhZ2UoIGFyZ3YgKTsKLSAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJF
OworICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZV9vbmx5KQpA
QCAtMzAzLDcgKzI5OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAg
ICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbYXJnc10sICJhdWRpbyIpIT0wKSB7CiAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGFwcGxpY2F0aW9uOiAlc1xuIiwgYXJndlthcmdzXSk7
CiAgICAgICAgICAgcHJpbnRfdXNhZ2UoYXJndik7Ci0gICAgICAgICAgcmV0dXJuIEVYSVRfRkFJ
TFVSRTsKKyAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgfQogICAgICAgIGFyZ3MrKzsK
ICAgICB9CkBAIC0zMTYsNyArMzEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKICAgICB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3VwcG9ydGVkIHNhbXBsaW5nIHJh
dGVzIGFyZSA4MDAwLCAxMjAwMCwgIgogICAgICAgICAgICAgICAgICIxNjAwMCwgMjQwMDAgYW5k
IDQ4MDAwLlxuIik7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8g
ZmFpbHVyZTsKICAgICB9CiAgICAgZnJhbWVfc2l6ZSA9IHNhbXBsaW5nX3JhdGUvNTA7CiAKQEAg
LTMyNiw3ICszMjIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGlm
IChjaGFubmVscyA8IDEgfHwgY2hhbm5lbHMgPiAyKQogICAgIHsKICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJPcHVzX2RlbW8gc3VwcG9ydHMgb25seSAxIG9yIDIgY2hhbm5lbHMuXG4iKTsKLSAg
ICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBmYWlsdXJlOwogICAgIH0K
IAogICAgIGlmICghZGVjb2RlX29ubHkpCkBAIC0zNjYsNyArMzYyLDcgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVu
a25vd24gYmFuZHdpZHRoICVzLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJT
dXBwb3J0ZWQgYXJlIE5CLCBNQiwgV0IsIFNXQiwgRkIuXG4iLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd2WyBhcmdzICsgMSBdKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
RVhJVF9GQUlMVVJFOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGFyZ3MgKz0gMjsKICAgICAgICAgfSBlbHNlIGlmKCBzdHJjbXAoIGFy
Z3ZbIGFyZ3MgXSwgIi1mcmFtZXNpemUiICkgPT0gMCApIHsKQEAgLTM5Myw3ICszODksNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiVW5zdXBwb3J0ZWQgZnJhbWUgc2l6ZTogJXMgbXMuICIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlN1cHBvcnRlZCBhcmUgMi41LCA1LCAxMCwgMjAsIDQwLCA2MCwg
ODAsIDEwMCwgMTIwLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndlsg
YXJncyArIDEgXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAg
ICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhcmdz
ICs9IDI7CiAgICAgICAgIH0gZWxzZSBpZiggc3RyY21wKCBhcmd2WyBhcmdzIF0sICItbWF4X3Bh
eWxvYWQiICkgPT0gMCApIHsKQEAgLTQ4MCw3ICs0NzYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJpbnRmKCAiRXJy
b3I6IHVucmVjb2duaXplZCBzZXR0aW5nOiAlc1xuXG4iLCBhcmd2WyBhcmdzIF0gKTsKICAgICAg
ICAgICAgIHByaW50X3VzYWdlKCBhcmd2ICk7Ci0gICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOworICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgICAgICB9CiAgICAgfQogCkBAIC00
OTEsNyArNDg3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB7CiAg
ICAgICAgIGZwcmludGYgKHN0ZGVyciwgIm1heF9wYXlsb2FkX2J5dGVzIG11c3QgYmUgYmV0d2Vl
biAwIGFuZCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1BBQ0tFVCk7Ci0g
ICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICB9
CiAKICAgICBpbkZpbGUgPSBhcmd2W2FyZ2MtMl07CkBAIC00OTksNyArNDk1LDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAoIWZpbikKICAgICB7CiAgICAgICAg
IGZwcmludGYgKHN0ZGVyciwgIkNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgJXNcbiIsIGFyZ3Zb
YXJnYy0yXSk7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8gZmFp
bHVyZTsKICAgICB9CiAgICAgaWYgKG1vZGVfbGlzdCkKICAgICB7CkBAIC01MTcsOCArNTEzLDcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAoIWZvdXQpCiAgICAg
ewogICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSAl
c1xuIiwgYXJndlthcmdjLTFdKTsKLSAgICAgICAgZmNsb3NlKGZpbik7Ci0gICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICB9CiAKICAgICBpZiAo
IWRlY29kZV9vbmx5KQpAQCAtNTI3LDkgKzUyMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCiAgICAgICAgaWYgKGVyciAhPSBPUFVTX09LKQogICAgICAgIHsKICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBjcmVhdGUgZW5jb2RlcjogJXNcbiIsIG9wdXNfc3Ry
ZXJyb3IoZXJyKSk7Ci0gICAgICAgICAgZmNsb3NlKGZpbik7Ci0gICAgICAgICAgZmNsb3NlKGZv
dXQpOwotICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgICAgZ290byBmYWls
dXJlOwogICAgICAgIH0KICAgICAgICBvcHVzX2VuY29kZXJfY3RsKGVuYywgT1BVU19TRVRfQklU
UkFURShiaXRyYXRlX2JwcykpOwogICAgICAgIG9wdXNfZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NF
VF9CQU5EV0lEVEgoYmFuZHdpZHRoKSk7CkBAIC01NTEsOSArNTQ0LDcgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICBpZiAoZXJyICE9IE9QVVNfT0spCiAgICAgICAg
ewogICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGNyZWF0ZSBkZWNvZGVyOiAlc1xu
Iiwgb3B1c19zdHJlcnJvcihlcnIpKTsKLSAgICAgICAgICBmY2xvc2UoZmluKTsKLSAgICAgICAg
ICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAg
ICBnb3RvIGZhaWx1cmU7CiAgICAgICAgfQogICAgIH0KIApAQCAtNzI5LDE1ICs3MjAsNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgaWYgKGxlblt0b2dn
bGVdIDwgMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIs
ICJvcHVzX2VuY29kZSgpIHJldHVybmVkICVkXG4iLCBsZW5bdG9nZ2xlXSk7Ci0gICAgICAgICAg
ICAgICAgZnJlZShkYXRhWzBdKTsKLSAgICAgICAgICAgICAgICBpZiAodXNlX2luYmFuZGZlYykK
LSAgICAgICAgICAgICAgICAgICAgZnJlZShkYXRhWzFdKTsKLSAgICAgICAgICAgICAgICBmY2xv
c2UoZmluKTsKLSAgICAgICAgICAgICAgICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAgICAgICAg
ZnJlZShpbik7Ci0gICAgICAgICAgICAgICAgZnJlZShvdXQpOwotICAgICAgICAgICAgICAgIGZy
ZWUoZmJ5dGVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAg
ICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGN1cnJf
bW9kZV9jb3VudCArPSBmcmFtZV9zaXplOwogICAgICAgICAgICAgaWYgKGN1cnJfbW9kZV9jb3Vu
dCA+IG1vZGVfc3dpdGNoX3RpbWUgJiYgY3Vycl9tb2RlIDwgbmJfbW9kZXNfaW5fbGlzdC0xKQpA
QCAtNzU0LDE1ICs3MzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAg
ICAgICAgICBpZiAoKGVyciA9IG9wdXNfcGFja2V0X3BhZChkYXRhW3RvZ2dsZV0sIGxlblt0b2dn
bGVdLCBuZXdfbGVuKSkgIT0gT1BVU19PSykKICAgICAgICAgICAgewogICAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgInBhZGRpbmcgZmFpbGVkOiAlc1xuIiwgb3B1c19zdHJlcnJvcihlcnIp
KTsKLSAgICAgICAgICAgICAgZnJlZShkYXRhWzBdKTsKLSAgICAgICAgICAgICAgaWYgKHVzZV9p
bmJhbmRmZWMpCi0gICAgICAgICAgICAgICAgICBmcmVlKGRhdGFbMV0pOwotICAgICAgICAgICAg
ICBmY2xvc2UoZmluKTsKLSAgICAgICAgICAgICAgZmNsb3NlKGZvdXQpOwotICAgICAgICAgICAg
ICBmcmVlKGluKTsKLSAgICAgICAgICAgICAgZnJlZShvdXQpOwotICAgICAgICAgICAgICBmcmVl
KGZieXRlcyk7Ci0gICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgICAg
ICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZW5bdG9nZ2xlXSA9
IG5ld19sZW47CiAgICAgICAgIH0KQEAgLTc3Myw0MCArNzQ4LDE2IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICBpbnRfdG9fY2hhcihsZW5bdG9nZ2xlXSwg
aW50X2ZpZWxkKTsKICAgICAgICAgICAgIGlmIChmd3JpdGUoaW50X2ZpZWxkLCAxLCA0LCBmb3V0
KSAhPSA0KSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHdyaXRpbmcu
XG4iKTsKLSAgICAgICAgICAgICAgIGZyZWUoZGF0YVswXSk7Ci0gICAgICAgICAgICAgICBpZiAo
dXNlX2luYmFuZGZlYykKLSAgICAgICAgICAgICAgICAgICBmcmVlKGRhdGFbMV0pOwotICAgICAg
ICAgICAgICAgZmNsb3NlKGZpbik7Ci0gICAgICAgICAgICAgICBmY2xvc2UoZm91dCk7Ci0gICAg
ICAgICAgICAgICBmcmVlKGluKTsKLSAgICAgICAgICAgICAgIGZyZWUob3V0KTsKLSAgICAgICAg
ICAgICAgIGZyZWUoZmJ5dGVzKTsKLSAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7
CisgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpbnRfdG9fY2hhcihlbmNfZmluYWxfcmFuZ2VbdG9nZ2xlXSwgaW50X2ZpZWxkKTsKICAgICAg
ICAgICAgIGlmIChmd3JpdGUoaW50X2ZpZWxkLCAxLCA0LCBmb3V0KSAhPSA0KSB7CiAgICAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHdyaXRpbmcuXG4iKTsKLSAgICAgICAgICAg
ICAgIGZyZWUoZGF0YVswXSk7Ci0gICAgICAgICAgICAgICBpZiAodXNlX2luYmFuZGZlYykKLSAg
ICAgICAgICAgICAgICAgICBmcmVlKGRhdGFbMV0pOwotICAgICAgICAgICAgICAgZmNsb3NlKGZp
bik7Ci0gICAgICAgICAgICAgICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAgICAgICBmcmVlKGlu
KTsKLSAgICAgICAgICAgICAgIGZyZWUob3V0KTsKLSAgICAgICAgICAgICAgIGZyZWUoZmJ5dGVz
KTsKLSAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgICAgICAgICBn
b3RvIGZhaWx1cmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZndyaXRlKGRhdGFb
dG9nZ2xlXSwgMSwgbGVuW3RvZ2dsZV0sIGZvdXQpICE9ICh1bnNpZ25lZClsZW5bdG9nZ2xlXSkg
ewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciB3cml0aW5nLlxuIik7Ci0g
ICAgICAgICAgICAgICBmcmVlKGRhdGFbMF0pOwotICAgICAgICAgICAgICAgaWYgKHVzZV9pbmJh
bmRmZWMpCi0gICAgICAgICAgICAgICAgICAgZnJlZShkYXRhWzFdKTsKLSAgICAgICAgICAgICAg
IGZjbG9zZShmaW4pOwotICAgICAgICAgICAgICAgZmNsb3NlKGZvdXQpOwotICAgICAgICAgICAg
ICAgZnJlZShpbik7Ci0gICAgICAgICAgICAgICBmcmVlKG91dCk7Ci0gICAgICAgICAgICAgICBm
cmVlKGZieXRlcyk7Ci0gICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAg
ICAgICAgICAgZ290byBmYWlsdXJlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG90X3Nh
bXBsZXMgKz0gbmJfZW5jb2RlZDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTg0OSwxNSArODAwLDcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZndyaXRlKGZieXRlcywgc2l6ZW9mKHNo
b3J0KSpjaGFubmVscywgb3V0cHV0X3NhbXBsZXMtc2tpcCwgZm91dCkgIT0gKHVuc2lnbmVkKShv
dXRwdXRfc2FtcGxlcy1za2lwKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiRXJyb3Igd3JpdGluZy5cbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmVlKGRhdGFbMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlX2luYmFuZGZl
YykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoZGF0YVsxXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGZjbG9zZShmaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoaW4pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmVlKG91dCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyZWUoZmJ5dGVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRf
RkFJTFVSRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRvdF9vdXQgKz0gb3V0
cHV0X3NhbXBsZXMtc2tpcDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODgzLDE1ICs4MjYs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgICAg
ICAgICAgIChsb25nKWNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKWVuY19maW5hbF9yYW5nZVt0b2dnbGVedXNlX2luYmFuZGZlY10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpZGVjX2ZpbmFsX3JhbmdlKTsKLSAgICAgICAgICAg
IGZyZWUoZGF0YVswXSk7Ci0gICAgICAgICAgICBpZiAodXNlX2luYmFuZGZlYykKLSAgICAgICAg
ICAgICAgICBmcmVlKGRhdGFbMV0pOwotICAgICAgICAgICAgZmNsb3NlKGZpbik7Ci0gICAgICAg
ICAgICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAgICBmcmVlKGluKTsKLSAgICAgICAgICAgIGZy
ZWUob3V0KTsKLSAgICAgICAgICAgIGZyZWUoZmJ5dGVzKTsKLSAgICAgICAgICAgIHJldHVybiBF
WElUX0ZBSUxVUkU7CisgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgIH0KIAogICAg
ICAgICBsb3N0X3ByZXYgPSBsb3N0OwpAQCAtOTE3LDI5ICs4NTIsNDEgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgdG9nZ2xlID0gKHRvZ2dsZSArIHVzZV9pbmJh
bmRmZWMpICYgMTsKICAgICB9CiAKLSAgICAvKiBQcmludCBvdXQgYml0cmF0ZSBzdGF0aXN0aWNz
ICovCi0gICAgaWYoZGVjb2RlX29ubHkpCisgICAgaWYoZGVjb2RlX29ubHkgJiYgY291bnQgPiAw
KQogICAgICAgICBmcmFtZV9zaXplID0gKGludCkodG90X3NhbXBsZXMgLyBjb3VudCk7CiAgICAg
Y291bnQgLT0gdXNlX2luYmFuZGZlYzsKLSAgICBmcHJpbnRmIChzdGRlcnIsICJhdmVyYWdlIGJp
dHJhdGU6ICAgICAgICAgICAgICU3LjNmIGtiL3NcbiIsCi0gICAgICAgICAgICAgICAgICAgICAx
ZS0zKmJpdHMqc2FtcGxpbmdfcmF0ZS90b3Rfc2FtcGxlcyk7Ci0gICAgZnByaW50ZiAoc3RkZXJy
LCAibWF4aW11bSBiaXRyYXRlOiAgICAgICAgICAgICAlNy4zZiBrYi9zXG4iLAotICAgICAgICAg
ICAgICAgICAgICAgMWUtMypiaXRzX21heCpzYW1wbGluZ19yYXRlL2ZyYW1lX3NpemUpOwotICAg
IGlmICghZGVjb2RlX29ubHkpCi0gICAgICAgZnByaW50ZiAoc3RkZXJyLCAiYWN0aXZlIGJpdHJh
dGU6ICAgICAgICAgICAgICAlNy4zZiBrYi9zXG4iLAotICAgICAgICAgICAgICAgMWUtMypiaXRz
X2FjdCpzYW1wbGluZ19yYXRlLygxZS0xNStmcmFtZV9zaXplKihkb3VibGUpY291bnRfYWN0KSk7
Ci0gICAgZnByaW50ZiAoc3RkZXJyLCAiYml0cmF0ZSBzdGFuZGFyZCBkZXZpYXRpb246ICAlNy4z
ZiBrYi9zXG4iLAotICAgICAgICAgICAgMWUtMypzcXJ0KGJpdHMyL2NvdW50IC0gYml0cypiaXRz
Lyhjb3VudCooZG91YmxlKWNvdW50KSkqc2FtcGxpbmdfcmF0ZS9mcmFtZV9zaXplKTsKKyAgICBp
ZiAodG90X3NhbXBsZXMgPj0gMSAmJiBjb3VudCA+IDAgJiYgZnJhbWVfc2l6ZSkKKyAgICB7Cisg
ICAgICAgLyogUHJpbnQgb3V0IGJpdHJhdGUgc3RhdGlzdGljcyAqLworICAgICAgIGRvdWJsZSB2
YXI7CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiYXZlcmFnZSBiaXRyYXRlOiAgICAgICAgICAg
ICAlNy4zZiBrYi9zXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgMWUtMypiaXRzKnNhbXBs
aW5nX3JhdGUvdG90X3NhbXBsZXMpOworICAgICAgIGZwcmludGYgKHN0ZGVyciwgIm1heGltdW0g
Yml0cmF0ZTogICAgICAgICAgICAgJTcuM2Yga2Ivc1xuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIDFlLTMqYml0c19tYXgqc2FtcGxpbmdfcmF0ZS9mcmFtZV9zaXplKTsKKyAgICAgICBpZiAo
IWRlY29kZV9vbmx5KQorICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgImFjdGl2ZSBiaXRyYXRl
OiAgICAgICAgICAgICAgJTcuM2Yga2Ivc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDFlLTMqYml0c19hY3Qqc2FtcGxpbmdfcmF0ZS8oMWUtMTUrZnJhbWVfc2l6ZSooZG91YmxlKWNv
dW50X2FjdCkpOworICAgICAgIHZhciA9IGJpdHMyL2NvdW50IC0gYml0cypiaXRzLyhjb3VudCoo
ZG91YmxlKWNvdW50KTsKKyAgICAgICBpZiAodmFyIDwgMCkKKyAgICAgICAgICB2YXIgPSAwOwor
ICAgICAgIGZwcmludGYgKHN0ZGVyciwgImJpdHJhdGUgc3RhbmRhcmQgZGV2aWF0aW9uOiAgJTcu
M2Yga2Ivc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDFlLTMqc3FydCh2YXIpKnNhbXBs
aW5nX3JhdGUvZnJhbWVfc2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgImJpdHJhdGUgc3RhdGlzdGljcyBhcmUgdW5kZWZpbmVkXG4iKTsKKyAgICB9CiAgICAgc2ls
a19UaW1lclNhdmUoIm9wdXNfdGltaW5nLnR4dCIpOworICAgIHJldCA9IEVYSVRfU1VDQ0VTUzsK
K2ZhaWx1cmU6CiAgICAgb3B1c19lbmNvZGVyX2Rlc3Ryb3koZW5jKTsKICAgICBvcHVzX2RlY29k
ZXJfZGVzdHJveShkZWMpOwogICAgIGZyZWUoZGF0YVswXSk7Ci0gICAgaWYgKHVzZV9pbmJhbmRm
ZWMpCi0gICAgICAgIGZyZWUoZGF0YVsxXSk7Ci0gICAgZmNsb3NlKGZpbik7Ci0gICAgZmNsb3Nl
KGZvdXQpOworICAgIGZyZWUoZGF0YVsxXSk7CisgICAgaWYgKGZpbikKKyAgICAgICAgZmNsb3Nl
KGZpbik7CisgICAgaWYgKGZvdXQpCisgICAgICAgIGZjbG9zZShmb3V0KTsKICAgICBmcmVlKGlu
KTsKICAgICBmcmVlKG91dCk7CiAgICAgZnJlZShmYnl0ZXMpOwotICAgIHJldHVybiBFWElUX1NV
Q0NFU1M7CisgICAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfZW5jb2Rlci5j
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zcmMvb3B1c19lbmNvZGVyLmMKaW5kZXggN2ZhNmJlMGMwMzJjZDY1MjFhYzZmMDY1OTRlZjVk
MmM4NDBiYjI2NS4uODQ0YjA4ZGQ5ZTQ5ZDgxMDNjMzdiZjJjYjgyYTM3MGU0NDNiNjM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zcmMvb3B1c19lbmNvZGVyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19lbmNvZGVyLmMKQEAgLTEy
MywzOCArMTIzLDM4IEBAIHN0cnVjdCBPcHVzRW5jb2RlciB7CiAgICBtaWRkbGUgKG1lbW9yaWxl
c3MpIHRocmVzaG9sZC4gVGhlIHNlY29uZCBjb2x1bW4gaXMgdGhlIGh5c3RlcmVzaXMKICAgIChk
aWZmZXJlbmNlIHdpdGggdGhlIG1pZGRsZSkgKi8KIHN0YXRpYyBjb25zdCBvcHVzX2ludDMyIG1v
bm9fdm9pY2VfYmFuZHdpZHRoX3RocmVzaG9sZHNbOF0gPSB7Ci0gICAgICAgIDEwMDAwLCAxMDAw
LCAvKiBOQjwtPk1CICovCi0gICAgICAgIDExMDAwLCAxMDAwLCAvKiBNQjwtPldCICovCisgICAg
ICAgICA5MDAwLCAgNzAwLCAvKiBOQjwtPk1CICovCisgICAgICAgICA5MDAwLCAgNzAwLCAvKiBN
QjwtPldCICovCiAgICAgICAgIDEzNTAwLCAxMDAwLCAvKiBXQjwtPlNXQiAqLwogICAgICAgICAx
NDAwMCwgMjAwMCwgLyogU1dCPC0+RkIgKi8KIH07CiBzdGF0aWMgY29uc3Qgb3B1c19pbnQzMiBt
b25vX211c2ljX2JhbmR3aWR0aF90aHJlc2hvbGRzWzhdID0gewotICAgICAgICAxMDAwMCwgMTAw
MCwgLyogTkI8LT5NQiAqLwotICAgICAgICAxMTAwMCwgMTAwMCwgLyogTUI8LT5XQiAqLwotICAg
ICAgICAxMzUwMCwgMTAwMCwgLyogV0I8LT5TV0IgKi8KLSAgICAgICAgMTQwMDAsIDIwMDAsIC8q
IFNXQjwtPkZCICovCisgICAgICAgICA5MDAwLCAgNzAwLCAvKiBOQjwtPk1CICovCisgICAgICAg
ICA5MDAwLCAgNzAwLCAvKiBNQjwtPldCICovCisgICAgICAgIDExMDAwLCAxMDAwLCAvKiBXQjwt
PlNXQiAqLworICAgICAgICAxMjAwMCwgMjAwMCwgLyogU1dCPC0+RkIgKi8KIH07CiBzdGF0aWMg
Y29uc3Qgb3B1c19pbnQzMiBzdGVyZW9fdm9pY2VfYmFuZHdpZHRoX3RocmVzaG9sZHNbOF0gPSB7
Ci0gICAgICAgIDEwMDAwLCAxMDAwLCAvKiBOQjwtPk1CICovCi0gICAgICAgIDExMDAwLCAxMDAw
LCAvKiBNQjwtPldCICovCisgICAgICAgICA5MDAwLCAgNzAwLCAvKiBOQjwtPk1CICovCisgICAg
ICAgICA5MDAwLCAgNzAwLCAvKiBNQjwtPldCICovCiAgICAgICAgIDEzNTAwLCAxMDAwLCAvKiBX
QjwtPlNXQiAqLwogICAgICAgICAxNDAwMCwgMjAwMCwgLyogU1dCPC0+RkIgKi8KIH07CiBzdGF0
aWMgY29uc3Qgb3B1c19pbnQzMiBzdGVyZW9fbXVzaWNfYmFuZHdpZHRoX3RocmVzaG9sZHNbOF0g
PSB7Ci0gICAgICAgIDEwMDAwLCAxMDAwLCAvKiBOQjwtPk1CICovCi0gICAgICAgIDExMDAwLCAx
MDAwLCAvKiBNQjwtPldCICovCi0gICAgICAgIDEzNTAwLCAxMDAwLCAvKiBXQjwtPlNXQiAqLwot
ICAgICAgICAxNDAwMCwgMjAwMCwgLyogU1dCPC0+RkIgKi8KKyAgICAgICAgIDkwMDAsICA3MDAs
IC8qIE5CPC0+TUIgKi8KKyAgICAgICAgIDkwMDAsICA3MDAsIC8qIE1CPC0+V0IgKi8KKyAgICAg
ICAgMTEwMDAsIDEwMDAsIC8qIFdCPC0+U1dCICovCisgICAgICAgIDEyMDAwLCAyMDAwLCAvKiBT
V0I8LT5GQiAqLwogfTsKIC8qIFRocmVzaG9sZCBiaXQtcmF0ZXMgZm9yIHN3aXRjaGluZyBiZXR3
ZWVuIG1vbm8gYW5kIHN0ZXJlbyAqLwotc3RhdGljIGNvbnN0IG9wdXNfaW50MzIgc3RlcmVvX3Zv
aWNlX3RocmVzaG9sZCA9IDI0MDAwOwotc3RhdGljIGNvbnN0IG9wdXNfaW50MzIgc3RlcmVvX211
c2ljX3RocmVzaG9sZCA9IDI0MDAwOworc3RhdGljIGNvbnN0IG9wdXNfaW50MzIgc3RlcmVvX3Zv
aWNlX3RocmVzaG9sZCA9IDE5MDAwOworc3RhdGljIGNvbnN0IG9wdXNfaW50MzIgc3RlcmVvX211
c2ljX3RocmVzaG9sZCA9IDE3MDAwOwogCiAvKiBUaHJlc2hvbGQgYml0LXJhdGUgZm9yIHN3aXRj
aGluZyBiZXR3ZWVuIFNJTEsvaHlicmlkIGFuZCBDRUxULW9ubHkgKi8KIHN0YXRpYyBjb25zdCBv
cHVzX2ludDMyIG1vZGVfdGhyZXNob2xkc1syXVsyXSA9IHsKICAgICAgIC8qIHZvaWNlICovIC8q
IG11c2ljICovCi0gICAgICB7ICA2NDAwMCwgICAgICAxNjAwMH0sIC8qIG1vbm8gKi8KLSAgICAg
IHsgIDM2MDAwLCAgICAgIDE2MDAwfSwgLyogc3RlcmVvICovCisgICAgICB7ICA2NDAwMCwgICAg
ICAxMDAwMH0sIC8qIG1vbm8gKi8KKyAgICAgIHsgIDQ0MDAwLCAgICAgIDEwMDAwfSwgLyogc3Rl
cmVvICovCiB9OwogCiBzdGF0aWMgY29uc3Qgb3B1c19pbnQzMiBmZWNfdGhyZXNob2xkc1tdID0g
ewpAQCAtMzg1LDIwICszODUsMTYgQEAgc3RhdGljIHZvaWQgZGNfcmVqZWN0KGNvbnN0IG9wdXNf
dmFsMTYgKmluLCBvcHVzX2ludDMyIGN1dG9mZl9Ieiwgb3B1c192YWwxNiAqb3UKICAgIGludCBj
LCBpOwogICAgaW50IHNoaWZ0OwogCi0gICAvKiBBcHByb3hpbWF0ZXMgLXJvdW5kKGxvZzIoNC4q
Y3V0b2ZmX0h6L0ZzKSkgKi8KLSAgIHNoaWZ0PWNlbHRfaWxvZzIoRnMvKGN1dG9mZl9IeiozKSk7
CisgICAvKiBBcHByb3hpbWF0ZXMgLXJvdW5kKGxvZzIoNi4zKmN1dG9mZl9Iei9GcykpICovCisg
ICBzaGlmdD1jZWx0X2lsb2cyKEZzLyhjdXRvZmZfSHoqNCkpOwogICAgZm9yIChjPTA7YzxjaGFu
bmVscztjKyspCiAgICB7CiAgICAgICBmb3IgKGk9MDtpPGxlbjtpKyspCiAgICAgICB7Ci0gICAg
ICAgICBvcHVzX3ZhbDMyIHgsIHRtcCwgeTsKKyAgICAgICAgIG9wdXNfdmFsMzIgeCwgeTsKICAg
ICAgICAgIHggPSBTSEwzMihFWFRFTkQzMihpbltjaGFubmVscyppK2NdKSwgMTQpOwotICAgICAg
ICAgLyogRmlyc3Qgc3RhZ2UgKi8KLSAgICAgICAgIHRtcCA9IHgtaHBfbWVtWzIqY107CisgICAg
ICAgICB5ID0geC1ocF9tZW1bMipjXTsKICAgICAgICAgIGhwX21lbVsyKmNdID0gaHBfbWVtWzIq
Y10gKyBQU0hSMzIoeCAtIGhwX21lbVsyKmNdLCBzaGlmdCk7Ci0gICAgICAgICAvKiBTZWNvbmQg
c3RhZ2UgKi8KLSAgICAgICAgIHkgPSB0bXAgLSBocF9tZW1bMipjKzFdOwotICAgICAgICAgaHBf
bWVtWzIqYysxXSA9IGhwX21lbVsyKmMrMV0gKyBQU0hSMzIodG1wIC0gaHBfbWVtWzIqYysxXSwg
c2hpZnQpOwogICAgICAgICAgb3V0W2NoYW5uZWxzKmkrY10gPSBFWFRSQUNUMTYoU0FUVVJBVEUo
UFNIUjMyKHksIDE0KSwgMzI3NjcpKTsKICAgICAgIH0KICAgIH0KQEAgLTQwOSw1NSArNDA1LDM5
IEBAIHN0YXRpYyB2b2lkIGRjX3JlamVjdChjb25zdCBvcHVzX3ZhbDE2ICppbiwgb3B1c19pbnQz
MiBjdXRvZmZfSHosIG9wdXNfdmFsMTYgKm91CiB7CiAgICBpbnQgaTsKICAgIGZsb2F0IGNvZWYs
IGNvZWYyOwotICAgY29lZiA9IDQuMGYqY3V0b2ZmX0h6L0ZzOworICAgY29lZiA9IDYuM2YqY3V0
b2ZmX0h6L0ZzOwogICAgY29lZjIgPSAxLWNvZWY7CiAgICBpZiAoY2hhbm5lbHM9PTIpCiAgICB7
Ci0gICAgICBmbG9hdCBtMCwgbTEsIG0yLCBtMzsKKyAgICAgIGZsb2F0IG0wLCBtMjsKICAgICAg
IG0wID0gaHBfbWVtWzBdOwotICAgICAgbTEgPSBocF9tZW1bMV07CiAgICAgICBtMiA9IGhwX21l
bVsyXTsKLSAgICAgIG0zID0gaHBfbWVtWzNdOwogICAgICAgZm9yIChpPTA7aTxsZW47aSsrKQog
ICAgICAgewotICAgICAgICAgb3B1c192YWwzMiB4MCwgeDEsIHRtcDAsIHRtcDEsIG91dDAsIG91
dDE7CisgICAgICAgICBvcHVzX3ZhbDMyIHgwLCB4MSwgb3V0MCwgb3V0MTsKICAgICAgICAgIHgw
ID0gaW5bMippKzBdOwogICAgICAgICAgeDEgPSBpblsyKmkrMV07Ci0gICAgICAgICAvKiBGaXJz
dCBzdGFnZSAqLwotICAgICAgICAgdG1wMCA9IHgwLW0wOwotICAgICAgICAgdG1wMSA9IHgxLW0y
OworICAgICAgICAgb3V0MCA9IHgwLW0wOworICAgICAgICAgb3V0MSA9IHgxLW0yOwogICAgICAg
ICAgbTAgPSBjb2VmKngwICsgVkVSWV9TTUFMTCArIGNvZWYyKm0wOwogICAgICAgICAgbTIgPSBj
b2VmKngxICsgVkVSWV9TTUFMTCArIGNvZWYyKm0yOwotICAgICAgICAgLyogU2Vjb25kIHN0YWdl
ICovCi0gICAgICAgICBvdXQwID0gdG1wMCAtIG0xOwotICAgICAgICAgb3V0MSA9IHRtcDEgLSBt
MzsKLSAgICAgICAgIG0xID0gY29lZip0bXAwICsgVkVSWV9TTUFMTCArIGNvZWYyKm0xOwotICAg
ICAgICAgbTMgPSBjb2VmKnRtcDEgKyBWRVJZX1NNQUxMICsgY29lZjIqbTM7CiAgICAgICAgICBv
dXRbMippKzBdID0gb3V0MDsKICAgICAgICAgIG91dFsyKmkrMV0gPSBvdXQxOwogICAgICAgfQog
ICAgICAgaHBfbWVtWzBdID0gbTA7Ci0gICAgICBocF9tZW1bMV0gPSBtMTsKICAgICAgIGhwX21l
bVsyXSA9IG0yOwotICAgICAgaHBfbWVtWzNdID0gbTM7CiAgICB9IGVsc2UgewotICAgICAgZmxv
YXQgbTAsIG0xOworICAgICAgZmxvYXQgbTA7CiAgICAgICBtMCA9IGhwX21lbVswXTsKLSAgICAg
IG0xID0gaHBfbWVtWzFdOwogICAgICAgZm9yIChpPTA7aTxsZW47aSsrKQogICAgICAgewotICAg
ICAgICAgb3B1c192YWwzMiB4LCB0bXAsIHk7CisgICAgICAgICBvcHVzX3ZhbDMyIHgsIHk7CiAg
ICAgICAgICB4ID0gaW5baV07Ci0gICAgICAgICAvKiBGaXJzdCBzdGFnZSAqLwotICAgICAgICAg
dG1wID0geC1tMDsKKyAgICAgICAgIHkgPSB4LW0wOwogICAgICAgICAgbTAgPSBjb2VmKnggKyBW
RVJZX1NNQUxMICsgY29lZjIqbTA7Ci0gICAgICAgICAvKiBTZWNvbmQgc3RhZ2UgKi8KLSAgICAg
ICAgIHkgPSB0bXAgLSBtMTsKLSAgICAgICAgIG0xID0gY29lZip0bXAgKyBWRVJZX1NNQUxMICsg
Y29lZjIqbTE7CiAgICAgICAgICBvdXRbaV0gPSB5OwogICAgICAgfQogICAgICAgaHBfbWVtWzBd
ID0gbTA7Ci0gICAgICBocF9tZW1bMV0gPSBtMTsKICAgIH0KIH0KICNlbmRpZgpAQCAtNjk5LDYg
KzY3OSwxMiBAQCBvcHVzX3ZhbDE2IGNvbXB1dGVfc3RlcmVvX3dpZHRoKGNvbnN0IG9wdXNfdmFs
MTYgKnBjbSwgaW50IGZyYW1lX3NpemUsIG9wdXNfaW50MwogICAgICAgeHkgKz0gU0hSMzIocHh5
LCAxMCk7CiAgICAgICB5eSArPSBTSFIzMihweXksIDEwKTsKICAgIH0KKyNpZm5kZWYgRklYRURf
UE9JTlQKKyAgIGlmICghKHh4IDwgMWU5ZikgfHwgY2VsdF9pc25hbih4eCkgfHwgISh5eSA8IDFl
OWYpIHx8IGNlbHRfaXNuYW4oeXkpKQorICAgeworICAgICAgeHkgPSB4eCA9IHl5ID0gMDsKKyAg
IH0KKyNlbmRpZgogICAgbWVtLT5YWCArPSBNVUxUMTZfMzJfUTE1KHNob3J0X2FscGhhLCB4eC1t
ZW0tPlhYKTsKICAgIG1lbS0+WFkgKz0gTVVMVDE2XzMyX1ExNShzaG9ydF9hbHBoYSwgeHktbWVt
LT5YWSk7CiAgICBtZW0tPllZICs9IE1VTFQxNl8zMl9RMTUoc2hvcnRfYWxwaGEsIHl5LW1lbS0+
WVkpOwpAQCAtNzYyLDcgKzc0OCw3IEBAIHN0YXRpYyBpbnQgZGVjaWRlX2ZlYyhpbnQgdXNlSW5C
YW5kRkVDLCBpbnQgUGFja2V0TG9zc19wZXJjLCBpbnQgbGFzdF9mZWMsIGludCBtCiAgICByZXR1
cm4gMDsKIH0KIAotc3RhdGljIGludCBjb21wdXRlX3NpbGtfcmF0ZV9mb3JfaHlicmlkKGludCBy
YXRlLCBpbnQgYmFuZHdpZHRoLCBpbnQgZnJhbWUyMG1zLCBpbnQgdmJyLCBpbnQgZmVjKSB7Citz
dGF0aWMgaW50IGNvbXB1dGVfc2lsa19yYXRlX2Zvcl9oeWJyaWQoaW50IHJhdGUsIGludCBiYW5k
d2lkdGgsIGludCBmcmFtZTIwbXMsIGludCB2YnIsIGludCBmZWMsIGludCBjaGFubmVscykgewog
ICAgaW50IGVudHJ5OwogICAgaW50IGk7CiAgICBpbnQgTjsKQEAgLTc3OSw2ICs3NjUsOCBAQCBz
dGF0aWMgaW50IGNvbXB1dGVfc2lsa19yYXRlX2Zvcl9oeWJyaWQoaW50IHJhdGUsIGludCBiYW5k
d2lkdGgsIGludCBmcmFtZTIwbXMsCiAgICAgICB7MzIwMDAsIDIyMDAwLCAyMjAwMCwgMjgwMDAs
IDI4MDAwfSwKICAgICAgIHs2NDAwMCwgMzgwMDAsIDM4MDAwLCA1MDAwMCwgNTAwMDB9CiAgICB9
OworICAgLyogRG8gdGhlIGFsbG9jYXRpb24gcGVyLWNoYW5uZWwuICovCisgICByYXRlIC89IGNo
YW5uZWxzOwogICAgZW50cnkgPSAxICsgZnJhbWUyMG1zICsgMipmZWM7CiAgICBOID0gc2l6ZW9m
KHJhdGVfdGFibGUpL3NpemVvZihyYXRlX3RhYmxlWzBdKTsKICAgIGZvciAoaT0xO2k8TjtpKysp
CkBAIC04MDUsNiArNzkzLDEwIEBAIHN0YXRpYyBpbnQgY29tcHV0ZV9zaWxrX3JhdGVfZm9yX2h5
YnJpZChpbnQgcmF0ZSwgaW50IGJhbmR3aWR0aCwgaW50IGZyYW1lMjBtcywKICAgIH0KICAgIGlm
IChiYW5kd2lkdGg9PU9QVVNfQkFORFdJRFRIX1NVUEVSV0lERUJBTkQpCiAgICAgICBzaWxrX3Jh
dGUgKz0gMzAwOworICAgc2lsa19yYXRlICo9IGNoYW5uZWxzOworICAgLyogU21hbGwgYWRqdXN0
bWVudCBmb3Igc3RlcmVvIChjYWxpYnJhdGVkIGZvciAzMiBrYi9zLCBoYXZlbid0IHRyaWVkIG90
aGVyIGJpdHJhdGVzKS4gKi8KKyAgIGlmIChjaGFubmVscyA9PSAyICYmIHJhdGUgPj0gMTIwMDAp
CisgICAgICBzaWxrX3JhdGUgLT0gMTAwMDsKICAgIHJldHVybiBzaWxrX3JhdGU7CiB9CiAKQEAg
LTgxNiw3ICs4MDgsOCBAQCBzdGF0aWMgb3B1c19pbnQzMiBjb21wdXRlX2VxdWl2X3JhdGUob3B1
c19pbnQzMiBiaXRyYXRlLCBpbnQgY2hhbm5lbHMsCiAgICBvcHVzX2ludDMyIGVxdWl2OwogICAg
ZXF1aXYgPSBiaXRyYXRlOwogICAgLyogVGFrZSBpbnRvIGFjY291bnQgb3ZlcmhlYWQgZnJvbSBz
bWFsbGVyIGZyYW1lcy4gKi8KLSAgIGVxdWl2IC09ICg0MCpjaGFubmVscysyMCkqKGZyYW1lX3Jh
dGUgLSA1MCk7CisgICBpZiAoZnJhbWVfcmF0ZSA+IDUwKQorICAgICAgZXF1aXYgLT0gKDQwKmNo
YW5uZWxzKzIwKSooZnJhbWVfcmF0ZSAtIDUwKTsKICAgIC8qIENCUiBpcyBhYm91dCBhIDglIHBl
bmFsdHkgZm9yIGJvdGggU0lMSyBhbmQgQ0VMVC4gKi8KICAgIGlmICghdmJyKQogICAgICAgZXF1
aXYgLT0gZXF1aXYvMTI7CkBAIC04NDQsNyArODM3LDcgQEAgc3RhdGljIG9wdXNfaW50MzIgY29t
cHV0ZV9lcXVpdl9yYXRlKG9wdXNfaW50MzIgYml0cmF0ZSwgaW50IGNoYW5uZWxzLAogCiAjaWZu
ZGVmIERJU0FCTEVfRkxPQVRfQVBJCiAKLXN0YXRpYyBpbnQgaXNfZGlnaXRhbF9zaWxlbmNlKGNv
bnN0IG9wdXNfdmFsMTYqIHBjbSwgaW50IGZyYW1lX3NpemUsIGludCBjaGFubmVscywgaW50IGxz
Yl9kZXB0aCkKK2ludCBpc19kaWdpdGFsX3NpbGVuY2UoY29uc3Qgb3B1c192YWwxNiogcGNtLCBp
bnQgZnJhbWVfc2l6ZSwgaW50IGNoYW5uZWxzLCBpbnQgbHNiX2RlcHRoKQogewogICAgaW50IHNp
bGVuY2UgPSAwOwogICAgb3B1c192YWwzMiBzYW1wbGVfbWF4ID0gMDsKQEAgLTExNDcsMjEgKzEx
NDAsMTkgQEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRpdmUoT3B1c0VuY29kZXIgKnN0LCBj
b25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAgICBpZiAoc3QtPnNpbGtfbW9kZS5j
b21wbGV4aXR5ID49IDcgJiYgc3QtPkZzPj0xNjAwMCkKICNlbmRpZgogICAgIHsKLSAgICAgICBp
ZiAoaXNfZGlnaXRhbF9zaWxlbmNlKHBjbSwgZnJhbWVfc2l6ZSwgc3QtPmNoYW5uZWxzLCBsc2Jf
ZGVwdGgpKQotICAgICAgIHsKLSAgICAgICAgICBpc19zaWxlbmNlID0gMTsKLSAgICAgICB9IGVs
c2UgewotICAgICAgICAgIGFuYWx5c2lzX3JlYWRfcG9zX2JhayA9IHN0LT5hbmFseXNpcy5yZWFk
X3BvczsKLSAgICAgICAgICBhbmFseXNpc19yZWFkX3N1YmZyYW1lX2JhayA9IHN0LT5hbmFseXNp
cy5yZWFkX3N1YmZyYW1lOwotICAgICAgICAgIHJ1bl9hbmFseXNpcygmc3QtPmFuYWx5c2lzLCBj
ZWx0X21vZGUsIGFuYWx5c2lzX3BjbSwgYW5hbHlzaXNfc2l6ZSwgZnJhbWVfc2l6ZSwKLSAgICAg
ICAgICAgICAgICBjMSwgYzIsIGFuYWx5c2lzX2NoYW5uZWxzLCBzdC0+RnMsCi0gICAgICAgICAg
ICAgICAgbHNiX2RlcHRoLCBkb3dubWl4LCAmYW5hbHlzaXNfaW5mbyk7Ci0gICAgICAgfQorICAg
ICAgIGlzX3NpbGVuY2UgPSBpc19kaWdpdGFsX3NpbGVuY2UocGNtLCBmcmFtZV9zaXplLCBzdC0+
Y2hhbm5lbHMsIGxzYl9kZXB0aCk7CisgICAgICAgYW5hbHlzaXNfcmVhZF9wb3NfYmFrID0gc3Qt
PmFuYWx5c2lzLnJlYWRfcG9zOworICAgICAgIGFuYWx5c2lzX3JlYWRfc3ViZnJhbWVfYmFrID0g
c3QtPmFuYWx5c2lzLnJlYWRfc3ViZnJhbWU7CisgICAgICAgcnVuX2FuYWx5c2lzKCZzdC0+YW5h
bHlzaXMsIGNlbHRfbW9kZSwgYW5hbHlzaXNfcGNtLCBhbmFseXNpc19zaXplLCBmcmFtZV9zaXpl
LAorICAgICAgICAgICAgIGMxLCBjMiwgYW5hbHlzaXNfY2hhbm5lbHMsIHN0LT5GcywKKyAgICAg
ICAgICAgICBsc2JfZGVwdGgsIGRvd25taXgsICZhbmFseXNpc19pbmZvKTsKIAogICAgICAgIC8q
IFRyYWNrIHRoZSBwZWFrIHNpZ25hbCBlbmVyZ3kgKi8KICAgICAgICBpZiAoIWlzX3NpbGVuY2Ug
JiYgYW5hbHlzaXNfaW5mby5hY3Rpdml0eV9wcm9iYWJpbGl0eSA+IERUWF9BQ1RJVklUWV9USFJF
U0hPTEQpCiAgICAgICAgICAgc3QtPnBlYWtfc2lnbmFsX2VuZXJneSA9IE1BWDMyKE1VTFQxNl8z
Ml9RMTUoUUNPTlNUMTYoMC45OTlmLCAxNSksIHN0LT5wZWFrX3NpZ25hbF9lbmVyZ3kpLAogICAg
ICAgICAgICAgICAgIGNvbXB1dGVfZnJhbWVfZW5lcmd5KHBjbSwgZnJhbWVfc2l6ZSwgc3QtPmNo
YW5uZWxzLCBzdC0+YXJjaCkpOworICAgIH0gZWxzZSBpZiAoc3QtPmFuYWx5c2lzLmluaXRpYWxp
emVkKSB7CisgICAgICAgdG9uYWxpdHlfYW5hbHlzaXNfcmVzZXQoJnN0LT5hbmFseXNpcyk7CiAg
ICAgfQogI2Vsc2UKICAgICAodm9pZClhbmFseXNpc19wY207CkBAIC0xMTgzLDcgKzExNzQsMTYg
QEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRpdmUoT3B1c0VuY29kZXIgKnN0LCBjb25zdCBv
cHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAgICB7CiAgICAgICAgaW50IGFuYWx5c2lzX2Jh
bmR3aWR0aDsKICAgICAgICBpZiAoc3QtPnNpZ25hbF90eXBlID09IE9QVVNfQVVUTykKLSAgICAg
ICAgICBzdC0+dm9pY2VfcmF0aW8gPSAoaW50KWZsb29yKC41KzEwMCooMS1hbmFseXNpc19pbmZv
Lm11c2ljX3Byb2IpKTsKKyAgICAgICB7CisgICAgICAgICAgZmxvYXQgcHJvYjsKKyAgICAgICAg
ICBpZiAoc3QtPnByZXZfbW9kZSA9PSAwKQorICAgICAgICAgICAgIHByb2IgPSBhbmFseXNpc19p
bmZvLm11c2ljX3Byb2I7CisgICAgICAgICAgZWxzZSBpZiAoc3QtPnByZXZfbW9kZSA9PSBNT0RF
X0NFTFRfT05MWSkKKyAgICAgICAgICAgICBwcm9iID0gYW5hbHlzaXNfaW5mby5tdXNpY19wcm9i
X21heDsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgcHJvYiA9IGFuYWx5c2lzX2luZm8u
bXVzaWNfcHJvYl9taW47CisgICAgICAgICAgc3QtPnZvaWNlX3JhdGlvID0gKGludClmbG9vcigu
NSsxMDAqKDEtcHJvYikpOworICAgICAgIH0KIAogICAgICAgIGFuYWx5c2lzX2JhbmR3aWR0aCA9
IGFuYWx5c2lzX2luZm8uYmFuZHdpZHRoOwogICAgICAgIGlmIChhbmFseXNpc19iYW5kd2lkdGg8
PTEyKQpAQCAtMTMzNiw2ICsxMzM2LDE0IEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZl
KE9wdXNFbmNvZGVyICpzdCwgY29uc3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAg
ZXF1aXZfcmF0ZSA9IGNvbXB1dGVfZXF1aXZfcmF0ZShzdC0+Yml0cmF0ZV9icHMsIHN0LT5zdHJl
YW1fY2hhbm5lbHMsIHN0LT5Gcy9mcmFtZV9zaXplLAogICAgICAgICAgIHN0LT51c2VfdmJyLCAw
LCBzdC0+c2lsa19tb2RlLmNvbXBsZXhpdHksIHN0LT5zaWxrX21vZGUucGFja2V0TG9zc1BlcmNl
bnRhZ2UpOwogCisgICAgLyogQWxsb3cgU0lMSyBEVFggaWYgRFRYIGlzIGVuYWJsZWQgYnV0IHRo
ZSBnZW5lcmFsaXplZCBEVFggY2Fubm90IGJlIHVzZWQsCisgICAgICAgZS5nLiBiZWNhdXNlIG9m
IHRoZSBjb21wbGV4aXR5IHNldHRpbmcgb3Igc2FtcGxlIHJhdGUuICovCisjaWZuZGVmIERJU0FC
TEVfRkxPQVRfQVBJCisgICAgc3QtPnNpbGtfbW9kZS51c2VEVFggPSBzdC0+dXNlX2R0eCAmJiAh
KGFuYWx5c2lzX2luZm8udmFsaWQgfHwgaXNfc2lsZW5jZSk7CisjZWxzZQorICAgIHN0LT5zaWxr
X21vZGUudXNlRFRYID0gc3QtPnVzZV9kdHg7CisjZW5kaWYKKwogICAgIC8qIE1vZGUgc2VsZWN0
aW9uIGRlcGVuZGluZyBvbiBhcHBsaWNhdGlvbiBhbmQgc2lnbmFsIHR5cGUgKi8KICAgICBpZiAo
c3QtPmFwcGxpY2F0aW9uID09IE9QVVNfQVBQTElDQVRJT05fUkVTVFJJQ1RFRF9MT1dERUxBWSkK
ICAgICB7CkBAIC0xMzg0LDEzICsxMzkyLDcgQEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRp
dmUoT3B1c0VuY29kZXIgKnN0LCBjb25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAg
ICAgICBpZiAoc3QtPnNpbGtfbW9kZS51c2VJbkJhbmRGRUMgJiYgc3QtPnNpbGtfbW9kZS5wYWNr
ZXRMb3NzUGVyY2VudGFnZSA+ICgxMjgtdm9pY2VfZXN0KT4+NCkKICAgICAgICAgICBzdC0+bW9k
ZSA9IE1PREVfU0lMS19PTkxZOwogICAgICAgIC8qIFdoZW4gZW5jb2Rpbmcgdm9pY2UgYW5kIERU
WCBpcyBlbmFibGVkIGJ1dCB0aGUgZ2VuZXJhbGl6ZWQgRFRYIGNhbm5vdCBiZSB1c2VkLAotICAg
ICAgICAgIGJlY2F1c2Ugb2YgY29tcGxleGl0eSBhbmQgc2FtcGxpbmcgZnJlcXVlbmN5IHNldHRp
bmdzLCBzd2l0Y2ggdG8gU0lMSyBEVFggYW5kCi0gICAgICAgICAgc2V0IHRoZSBlbmNvZGVyIHRv
IFNJTEsgbW9kZSAqLwotI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQotICAgICAgIHN0LT5zaWxr
X21vZGUudXNlRFRYID0gc3QtPnVzZV9kdHggJiYgIShhbmFseXNpc19pbmZvLnZhbGlkIHx8IGlz
X3NpbGVuY2UpOwotI2Vsc2UKLSAgICAgICBzdC0+c2lsa19tb2RlLnVzZURUWCA9IHN0LT51c2Vf
ZHR4OwotI2VuZGlmCisgICAgICAgICAgdXNlIFNJTEsgaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2Yg
aXRzIERUWC4gKi8KICAgICAgICBpZiAoc3QtPnNpbGtfbW9kZS51c2VEVFggJiYgdm9pY2VfZXN0
ID4gMTAwKQogICAgICAgICAgIHN0LT5tb2RlID0gTU9ERV9TSUxLX09OTFk7CiAjZW5kaWYKQEAg
LTE0ODUsNiArMTQ4NywxMCBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5j
b2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAgICAgICAgICAg
aWYgKGVxdWl2X3JhdGUgPj0gdGhyZXNob2xkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9IHdoaWxlICgtLWJhbmR3aWR0aD5PUFVTX0JBTkRXSURUSF9OQVJST1dCQU5EKTsKKyAg
ICAgICAgLyogV2UgZG9uJ3QgdXNlIG1lZGl1bWJhbmQgYW55bW9yZSwgZXhjZXB0IHdoZW4gZXhw
bGljaXRseSByZXF1ZXN0ZWQgb3IgZHVyaW5nCisgICAgICAgICAgIG1vZGUgdHJhbnNpdGlvbnMu
ICovCisgICAgICAgIGlmIChiYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhfTUVESVVNQkFORCkK
KyAgICAgICAgICAgYmFuZHdpZHRoID0gT1BVU19CQU5EV0lEVEhfV0lERUJBTkQ7CiAgICAgICAg
IHN0LT5iYW5kd2lkdGggPSBzdC0+YXV0b19iYW5kd2lkdGggPSBiYW5kd2lkdGg7CiAgICAgICAg
IC8qIFByZXZlbnRzIGFueSB0cmFuc2l0aW9uIHRvIFNXQi9GQiB1bnRpbCB0aGUgU0lMSyBsYXll
ciBoYXMgZnVsbHkKICAgICAgICAgICAgc3dpdGNoZWQgdG8gV0IgbW9kZSBhbmQgdHVybmVkIHRo
ZSB2YXJpYWJsZSBMUCBmaWx0ZXIgb2ZmICovCkBAIC0xNTk4LDcgKzE2MDQsOCBAQCBvcHVzX2lu
dDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5jb2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYg
KnBjbSwgaW50IGZyYW1lXwogICAgICAgIHJlZHVuZGFuY3kgPSAxOwogICAgICAgIGNlbHRfdG9f
c2lsayA9IDE7CiAgICAgICAgc3QtPnNpbGtfYndfc3dpdGNoID0gMDsKLSAgICAgICBwcmVmaWxs
PTE7CisgICAgICAgLyogRG8gYSBwcmVmaWxsIHdpdGhvdXQgcmVzZXRpbmcgdGhlIHNhbXBsaW5n
IHJhdGUgY29udHJvbC4gKi8KKyAgICAgICBwcmVmaWxsPTI7CiAgICAgfQogCiAgICAgLyogSWYg
d2UgZGVjaWRlZCB0byBnbyB3aXRoIENFTFQsIG1ha2Ugc3VyZSByZWR1bmRhbmN5IGlzIG9mZiwg
bm8gbWF0dGVyIHdoYXQKQEAgLTE2ODIsMTggKzE2ODksMTMgQEAgb3B1c19pbnQzMiBvcHVzX2Vu
Y29kZV9uYXRpdmUoT3B1c0VuY29kZXIgKnN0LCBjb25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBm
cmFtZV8KICAgICAgICAgaWYoIHN0LT5tb2RlID09IE1PREVfSFlCUklEICkgewogICAgICAgICAg
ICAgLyogQmFzZSByYXRlIGZvciBTSUxLICovCiAgICAgICAgICAgICBzdC0+c2lsa19tb2RlLmJp
dFJhdGUgPSBjb21wdXRlX3NpbGtfcmF0ZV9mb3JfaHlicmlkKHRvdGFsX2JpdFJhdGUsCi0gICAg
ICAgICAgICAgICAgICBjdXJyX2JhbmR3aWR0aCwgc3QtPkZzID09IDUwICogZnJhbWVfc2l6ZSwg
c3QtPnVzZV92YnIsIHN0LT5zaWxrX21vZGUuTEJSUl9jb2RlZCk7CisgICAgICAgICAgICAgICAg
ICBjdXJyX2JhbmR3aWR0aCwgc3QtPkZzID09IDUwICogZnJhbWVfc2l6ZSwgc3QtPnVzZV92YnIs
IHN0LT5zaWxrX21vZGUuTEJSUl9jb2RlZCwKKyAgICAgICAgICAgICAgICAgIHN0LT5zdHJlYW1f
Y2hhbm5lbHMpOwogICAgICAgICAgICAgaWYgKCFzdC0+ZW5lcmd5X21hc2tpbmcpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAvKiBJbmNyZWFzaW5nbHkgYXR0ZW51YXRlIGhpZ2ggYmFu
ZCB3aGVuIGl0IGdldHMgYWxsb2NhdGVkIGZld2VyIGJpdHMgKi8KICAgICAgICAgICAgICAgIGNl
bHRfcmF0ZSA9IHRvdGFsX2JpdFJhdGUgLSBzdC0+c2lsa19tb2RlLmJpdFJhdGU7CiAgICAgICAg
ICAgICAgICBIQl9nYWluID0gUTE1T05FIC0gU0hSMzIoY2VsdF9leHAyKC1jZWx0X3JhdGUgKiBR
Q09OU1QxNigxLmYvMTAyNCwgMTApKSwgMSk7Ci0jaWZuZGVmIEZJWEVEX1BPSU5UCi0gICAgICAg
ICAgICAgICAvKiBTYW5pdHkgY2hlY2sgb2YgaGlnaCBiYW5kIGdhaW4gKi8KLSAgICAgICAgICAg
ICAgIGlmIChjZWx0X2lzbmFuKEhCX2dhaW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgSEJfZ2Fp
biA9IFExNU9ORTsKLSAgICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogU0lMSyBnZXRzIGFsbCBiaXRzICovCkBAIC0x
NzUwLDcgKzE3NTIsNyBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5jb2Rl
ciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAgICAgICB9IGVsc2Ug
aWYgKGN1cnJfYmFuZHdpZHRoID09IE9QVVNfQkFORFdJRFRIX01FRElVTUJBTkQpIHsKICAgICAg
ICAgICAgIHN0LT5zaWxrX21vZGUuZGVzaXJlZEludGVybmFsU2FtcGxlUmF0ZSA9IDEyMDAwOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2lsa19hc3NlcnQoIHN0LT5tb2RlID09IE1P
REVfSFlCUklEIHx8IGN1cnJfYmFuZHdpZHRoID09IE9QVVNfQkFORFdJRFRIX1dJREVCQU5EICk7
CisgICAgICAgICAgICBjZWx0X2Fzc2VydCggc3QtPm1vZGUgPT0gTU9ERV9IWUJSSUQgfHwgY3Vy
cl9iYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhfV0lERUJBTkQgKTsKICAgICAgICAgICAgIHN0
LT5zaWxrX21vZGUuZGVzaXJlZEludGVybmFsU2FtcGxlUmF0ZSA9IDE2MDAwOwogICAgICAgICB9
CiAgICAgICAgIGlmKCBzdC0+bW9kZSA9PSBNT0RFX0hZQlJJRCApIHsKQEAgLTE4MDMsNyArMTgw
NSw4IEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNFbmNvZGVyICpzdCwgY29u
c3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgLyogQ29tcHV0ZSBTSUxLIGJpdHJhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgbWF4IHRvdGFs
IGJpdHMgYXZhaWxhYmxlICovCiAgICAgICAgICAgICAgIG9wdXNfaW50MzIgbWF4Qml0UmF0ZSA9
IGNvbXB1dGVfc2lsa19yYXRlX2Zvcl9oeWJyaWQoc3QtPnNpbGtfbW9kZS5tYXhCaXRzKnN0LT5G
cyAvIGZyYW1lX3NpemUsCi0gICAgICAgICAgICAgICAgICAgIGN1cnJfYmFuZHdpZHRoLCBzdC0+
RnMgPT0gNTAgKiBmcmFtZV9zaXplLCBzdC0+dXNlX3Ziciwgc3QtPnNpbGtfbW9kZS5MQlJSX2Nv
ZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgY3Vycl9iYW5kd2lkdGgsIHN0LT5GcyA9PSA1MCAq
IGZyYW1lX3NpemUsIHN0LT51c2VfdmJyLCBzdC0+c2lsa19tb2RlLkxCUlJfY29kZWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0LT5zdHJlYW1fY2hhbm5lbHMpOwogICAgICAgICAgICAgICBzdC0+
c2lsa19tb2RlLm1heEJpdHMgPSBtYXhCaXRSYXRlICogZnJhbWVfc2l6ZSAvIHN0LT5GczsKICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xODI4LDcgKzE4MzEsOSBAQCBvcHVzX2ludDMyIG9w
dXNfZW5jb2RlX25hdGl2ZShPcHVzRW5jb2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwg
aW50IGZyYW1lXwogICAgICAgICAgICAgZm9yIChpPTA7aTxzdC0+ZW5jb2Rlcl9idWZmZXIqc3Qt
PmNoYW5uZWxzO2krKykKICAgICAgICAgICAgICAgICBwY21fc2lsa1tpXSA9IEZMT0FUMklOVDE2
KHN0LT5kZWxheV9idWZmZXJbaV0pOwogI2VuZGlmCi0gICAgICAgICAgICBzaWxrX0VuY29kZSgg
c2lsa19lbmMsICZzdC0+c2lsa19tb2RlLCBwY21fc2lsaywgc3QtPmVuY29kZXJfYnVmZmVyLCBO
VUxMLCAmemVybywgMSwgYWN0aXZpdHkgKTsKKyAgICAgICAgICAgIHNpbGtfRW5jb2RlKCBzaWxr
X2VuYywgJnN0LT5zaWxrX21vZGUsIHBjbV9zaWxrLCBzdC0+ZW5jb2Rlcl9idWZmZXIsIE5VTEws
ICZ6ZXJvLCBwcmVmaWxsLCBhY3Rpdml0eSApOworICAgICAgICAgICAgLyogUHJldmVudCBhIHNl
Y29uZCBzd2l0Y2ggaW4gdGhlIHJlYWwgZW5jb2RlIGNhbGwuICovCisgICAgICAgICAgICBzdC0+
c2lsa19tb2RlLm9wdXNDYW5Td2l0Y2ggPSAwOwogICAgICAgICB9CiAKICNpZmRlZiBGSVhFRF9Q
T0lOVApAQCAtMTg1NSw3ICsxODYwLDcgQEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRpdmUo
T3B1c0VuY29kZXIgKnN0LCBjb25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAgICAg
ICAgICAgICAgIGN1cnJfYmFuZHdpZHRoID0gT1BVU19CQU5EV0lEVEhfV0lERUJBTkQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggc3Qt
PnNpbGtfbW9kZS5pbnRlcm5hbFNhbXBsZVJhdGUgPT0gMTYwMDAgKTsKKyAgICAgICAgICAgIGNl
bHRfYXNzZXJ0KCBzdC0+c2lsa19tb2RlLmludGVybmFsU2FtcGxlUmF0ZSA9PSAxNjAwMCApOwog
ICAgICAgICB9CiAKICAgICAgICAgc3QtPnNpbGtfbW9kZS5vcHVzQ2FuU3dpdGNoID0gc3QtPnNp
bGtfbW9kZS5zd2l0Y2hSZWFkeSAmJiAhc3QtPm5vbmZpbmFsX2ZyYW1lOwpAQCAtMTk1MCw3ICsx
OTU1LDE0IEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNFbmNvZGVyICpzdCwg
Y29uc3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgfQogICAgIHN0LT5wcmV2X0hC
X2dhaW4gPSBIQl9nYWluOwogICAgIGlmIChzdC0+bW9kZSAhPSBNT0RFX0hZQlJJRCB8fCBzdC0+
c3RyZWFtX2NoYW5uZWxzPT0xKQotICAgICAgIHN0LT5zaWxrX21vZGUuc3RlcmVvV2lkdGhfUTE0
ID0gSU1JTigoMTw8MTQpLDIqSU1BWCgwLGVxdWl2X3JhdGUtMjQwMDApKTsKKyAgICB7CisgICAg
ICAgaWYgKGVxdWl2X3JhdGUgPiAzMjAwMCkKKyAgICAgICAgICBzdC0+c2lsa19tb2RlLnN0ZXJl
b1dpZHRoX1ExNCA9IDE2Mzg0OworICAgICAgIGVsc2UgaWYgKGVxdWl2X3JhdGUgPCAxNjAwMCkK
KyAgICAgICAgICBzdC0+c2lsa19tb2RlLnN0ZXJlb1dpZHRoX1ExNCA9IDA7CisgICAgICAgZWxz
ZQorICAgICAgICAgIHN0LT5zaWxrX21vZGUuc3RlcmVvV2lkdGhfUTE0ID0gMTYzODQgLSAyMDQ4
KihvcHVzX2ludDMyKSgzMjAwMC1lcXVpdl9yYXRlKS8oZXF1aXZfcmF0ZS0xNDAwMCk7CisgICAg
fQogICAgIGlmKCAhc3QtPmVuZXJneV9tYXNraW5nICYmIHN0LT5jaGFubmVscyA9PSAyICkgewog
ICAgICAgICAvKiBBcHBseSBzdGVyZW8gd2lkdGggcmVkdWN0aW9uIChhdCBsb3cgYml0cmF0ZXMp
ICovCiAgICAgICAgIGlmKCBzdC0+aHlicmlkX3N0ZXJlb193aWR0aF9RMTQgPCAoMSA8PCAxNCkg
fHwgc3QtPnNpbGtfbW9kZS5zdGVyZW9XaWR0aF9RMTQgPCAoMSA8PCAxNCkgKSB7CkBAIC0yMDI0
LDggKzIwMzYsNiBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5jb2RlciAq
c3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAgICAgIGluZm8uc2lnbmFs
VHlwZSA9IHN0LT5zaWxrX21vZGUuc2lnbmFsVHlwZTsKICAgICAgICBpbmZvLm9mZnNldCA9IHN0
LT5zaWxrX21vZGUub2Zmc2V0OwogICAgICAgIGNlbHRfZW5jb2Rlcl9jdGwoY2VsdF9lbmMsIENF
TFRfU0VUX1NJTEtfSU5GTygmaW5mbykpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgY2VsdF9lbmNv
ZGVyX2N0bChjZWx0X2VuYywgQ0VMVF9TRVRfU0lMS19JTkZPKChTSUxLSW5mbyopTlVMTCkpOwog
ICAgIH0KIAogICAgIC8qIDUgbXMgcmVkdW5kYW50IGZyYW1lIGZvciBDRUxULT5TSUxLICovCkBA
IC0yMTQyLDYgKzIxNTIsOCBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5j
b2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAgICAgICAgIFJF
U1RPUkVfU1RBQ0s7CiAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgc3QtPm5iX25vX2FjdGl2aXR5X2ZyYW1lcyA9IDA7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTI2MTksNyArMjYzMSw2IEBAIGludCBvcHVzX2VuY29kZXJfY3RsKE9wdXNFbmNvZGVyICpz
dCwgaW50IHJlcXVlc3QsIC4uLikKICAgICAgICAgICAgICAgIGdvdG8gYmFkX2FyZzsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN0LT52YXJpYWJsZV9kdXJhdGlvbiA9IHZhbHVlOwotICAg
ICAgICAgICAgY2VsdF9lbmNvZGVyX2N0bChjZWx0X2VuYywgT1BVU19TRVRfRVhQRVJUX0ZSQU1F
X0RVUkFUSU9OKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgT1BVU19HRVRfRVhQRVJUX0ZSQU1FX0RVUkFUSU9OX1JFUVVFU1Q6CkBAIC0yNzI1LDExICsy
NzM2LDExIEBAIGludCBvcHVzX2VuY29kZXJfY3RsKE9wdXNFbmNvZGVyICpzdCwgaW50IHJlcXVl
c3QsIC4uLikKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChzdC0+c2lsa19tb2RlLnVz
ZURUWCAmJiAoc3QtPnByZXZfbW9kZSA9PSBNT0RFX1NJTEtfT05MWSB8fCBzdC0+cHJldl9tb2Rl
ID09IE1PREVfSFlCUklEKSkgewogICAgICAgICAgICAgICAgIC8qIERUWCBkZXRlcm1pbmVkIGJ5
IFNpbGsuICovCi0gICAgICAgICAgICAgICAgaW50IG47Ci0gICAgICAgICAgICAgICAgdm9pZCAq
c2lsa19lbmMgPSAoY2hhciopc3Qrc3QtPnNpbGtfZW5jX29mZnNldDsKLSAgICAgICAgICAgICAg
ICAqdmFsdWUgPSAxOwotICAgICAgICAgICAgICAgIGZvciAobj0wO248c3QtPnNpbGtfbW9kZS5u
Q2hhbm5lbHNJbnRlcm5hbDtuKyspIHsKLSAgICAgICAgICAgICAgICAgICAgKnZhbHVlID0gKnZh
bHVlICYmICgoc2lsa19lbmNvZGVyKilzaWxrX2VuYyktPnN0YXRlX0Z4eFtuXS5zQ21uLm5vU3Bl
ZWNoQ291bnRlciA+PSBOQl9TUEVFQ0hfRlJBTUVTX0JFRk9SRV9EVFg7CisgICAgICAgICAgICAg
ICAgc2lsa19lbmNvZGVyICpzaWxrX2VuYyA9IChzaWxrX2VuY29kZXIqKSgoY2hhciopc3Qrc3Qt
PnNpbGtfZW5jX29mZnNldCk7CisgICAgICAgICAgICAgICAgKnZhbHVlID0gc2lsa19lbmMtPnN0
YXRlX0Z4eFswXS5zQ21uLm5vU3BlZWNoQ291bnRlciA+PSBOQl9TUEVFQ0hfRlJBTUVTX0JFRk9S
RV9EVFg7CisgICAgICAgICAgICAgICAgLyogU3RlcmVvOiBjaGVjayBzZWNvbmQgY2hhbm5lbCB1
bmxlc3Mgb25seSB0aGUgbWlkZGxlIGNoYW5uZWwgd2FzIGVuY29kZWQuICovCisgICAgICAgICAg
ICAgICAgaWYoKnZhbHVlID09IDEgJiYgc3QtPnNpbGtfbW9kZS5uQ2hhbm5lbHNJbnRlcm5hbCA9
PSAyICYmIHNpbGtfZW5jLT5wcmV2X2RlY29kZV9vbmx5X21pZGRsZSA9PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICp2YWx1ZSA9IHNpbGtfZW5jLT5zdGF0ZV9GeHhbMV0uc0Ntbi5ub1NwZWVj
aENvdW50ZXIgPj0gTkJfU1BFRUNIX0ZSQU1FU19CRUZPUkVfRFRYOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICNpZm5kZWYgRElTQUJMRV9GTE9BVF9BUEkKQEAgLTI3NDMsNyAr
Mjc1NCw2IEBAIGludCBvcHVzX2VuY29kZXJfY3RsKE9wdXNFbmNvZGVyICpzdCwgaW50IHJlcXVl
c3QsIC4uLikKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLQogICAg
ICAgICBjYXNlIENFTFRfR0VUX01PREVfUkVRVUVTVDoKICAgICAgICAgewogICAgICAgICAgICBj
b25zdCBDRUxUTW9kZSAqKiB2YWx1ZSA9IHZhX2FyZyhhcCwgY29uc3QgQ0VMVE1vZGUqKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NyYy9vcHVzX211bHRpc3RyZWFtX2RlY29kZXIuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfbXVsdGlz
dHJlYW1fZGVjb2Rlci5jCmluZGV4IGU0MjE3MjZmMmI0MjdkZDJkZGQ0ZDIwZjFkZmI5OWMyYWZi
NzAwOGIuLmEyODM3YzM1NDk1MDU0OTkwNzUyMGEzYTQ4YmJjNGRjMjRmYjM5YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc3JjL29wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfbXVsdGlzdHJl
YW1fZGVjb2Rlci5jCkBAIC0zNywxNSArMzcsMTggQEAKICNpbmNsdWRlICJmbG9hdF9jYXN0Lmgi
CiAjaW5jbHVkZSAib3Nfc3VwcG9ydC5oIgogCi1zdHJ1Y3QgT3B1c01TRGVjb2RlciB7Ci0gICBD
aGFubmVsTGF5b3V0IGxheW91dDsKLSAgIC8qIERlY29kZXIgc3RhdGVzIGdvIGhlcmUgKi8KLX07
Ci0KLQorLyogREVDT0RFUiAqLwogCisjaWYgZGVmaW5lZChFTkFCTEVfSEFSREVOSU5HKSB8fCBk
ZWZpbmVkKEVOQUJMRV9BU1NFUlRJT05TKQorc3RhdGljIHZvaWQgdmFsaWRhdGVfbXNfZGVjb2Rl
cihPcHVzTVNEZWNvZGVyICpzdCkKK3sKKyAgIHZhbGlkYXRlX2xheW91dCgmc3QtPmxheW91dCk7
Cit9CisjZGVmaW5lIFZBTElEQVRFX01TX0RFQ09ERVIoc3QpIHZhbGlkYXRlX21zX2RlY29kZXIo
c3QpCisjZWxzZQorI2RlZmluZSBWQUxJREFURV9NU19ERUNPREVSKHN0KQorI2VuZGlmCiAKLS8q
IERFQ09ERVIgKi8KIAogb3B1c19pbnQzMiBvcHVzX211bHRpc3RyZWFtX2RlY29kZXJfZ2V0X3Np
emUoaW50IG5iX3N0cmVhbXMsIGludCBuYl9jb3VwbGVkX3N0cmVhbXMpCiB7CkBAIC0xNDMsMTUg
KzE0Niw2IEBAIE9wdXNNU0RlY29kZXIgKm9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jcmVhdGUo
CiAgICByZXR1cm4gc3Q7CiB9CiAKLXR5cGVkZWYgdm9pZCAoKm9wdXNfY29weV9jaGFubmVsX291
dF9mdW5jKSgKLSAgdm9pZCAqZHN0LAotICBpbnQgZHN0X3N0cmlkZSwKLSAgaW50IGRzdF9jaGFu
bmVsLAotICBjb25zdCBvcHVzX3ZhbDE2ICpzcmMsCi0gIGludCBzcmNfc3RyaWRlLAotICBpbnQg
ZnJhbWVfc2l6ZQotKTsKLQogc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX3BhY2tldF92YWxp
ZGF0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgICAgb3B1c19pbnQzMiBsZW4sIGlu
dCBuYl9zdHJlYW1zLCBvcHVzX2ludDMyIEZzKQogewpAQCAtMTgxLDcgKzE3NSw3IEBAIHN0YXRp
YyBpbnQgb3B1c19tdWx0aXN0cmVhbV9wYWNrZXRfdmFsaWRhdGUoY29uc3QgdW5zaWduZWQgY2hh
ciAqZGF0YSwKICAgIHJldHVybiBzYW1wbGVzOwogfQogCi1zdGF0aWMgaW50IG9wdXNfbXVsdGlz
dHJlYW1fZGVjb2RlX25hdGl2ZSgKK2ludCBvcHVzX211bHRpc3RyZWFtX2RlY29kZV9uYXRpdmUo
CiAgICAgICBPcHVzTVNEZWNvZGVyICpzdCwKICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRh
dGEsCiAgICAgICBvcHVzX2ludDMyIGxlbiwKQEAgLTE4OSw3ICsxODMsOCBAQCBzdGF0aWMgaW50
IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2ZSgKICAgICAgIG9wdXNfY29weV9jaGFubmVs
X291dF9mdW5jIGNvcHlfY2hhbm5lbF9vdXQsCiAgICAgICBpbnQgZnJhbWVfc2l6ZSwKICAgICAg
IGludCBkZWNvZGVfZmVjLAotICAgICAgaW50IHNvZnRfY2xpcAorICAgICAgaW50IHNvZnRfY2xp
cCwKKyAgICAgIHZvaWQgKnVzZXJfZGF0YQogKQogewogICAgb3B1c19pbnQzMiBGczsKQEAgLTIw
MSw4ICsxOTYsMTQgQEAgc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX2RlY29kZV9uYXRpdmUo
CiAgICBWQVJERUNMKG9wdXNfdmFsMTYsIGJ1Zik7CiAgICBBTExPQ19TVEFDSzsKIAorICAgVkFM
SURBVEVfTVNfREVDT0RFUihzdCk7CisgICBpZiAoZnJhbWVfc2l6ZSA8PSAwKQorICAgeworICAg
ICAgUkVTVE9SRV9TVEFDSzsKKyAgICAgIHJldHVybiBPUFVTX0JBRF9BUkc7CisgICB9CiAgICAv
KiBMaW1pdCBmcmFtZV9zaXplIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBzdGFjayBhbGxvY2F0aW9ucy4g
Ki8KLSAgIG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGwoc3QsIE9QVVNfR0VUX1NBTVBMRV9S
QVRFKCZGcykpOworICAgTVVTVF9TVUNDRUVEKG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGwo
c3QsIE9QVVNfR0VUX1NBTVBMRV9SQVRFKCZGcykpKTsKICAgIGZyYW1lX3NpemUgPSBJTUlOKGZy
YW1lX3NpemUsIEZzLzI1KjMpOwogICAgQUxMT0MoYnVmLCAyKmZyYW1lX3NpemUsIG9wdXNfdmFs
MTYpOwogICAgcHRyID0gKGNoYXIqKXN0ICsgYWxpZ24oc2l6ZW9mKE9wdXNNU0RlY29kZXIpKTsK
QEAgLTI1MCw4ICsyNTEsMTEgQEAgc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX2RlY29kZV9u
YXRpdmUoCiAgICAgICB9CiAgICAgICBwYWNrZXRfb2Zmc2V0ID0gMDsKICAgICAgIHJldCA9IG9w
dXNfZGVjb2RlX25hdGl2ZShkZWMsIGRhdGEsIGxlbiwgYnVmLCBmcmFtZV9zaXplLCBkZWNvZGVf
ZmVjLCBzIT1zdC0+bGF5b3V0Lm5iX3N0cmVhbXMtMSwgJnBhY2tldF9vZmZzZXQsIHNvZnRfY2xp
cCk7Ci0gICAgICBkYXRhICs9IHBhY2tldF9vZmZzZXQ7Ci0gICAgICBsZW4gLT0gcGFja2V0X29m
ZnNldDsKKyAgICAgIGlmICghZG9fcGxjKQorICAgICAgeworICAgICAgICBkYXRhICs9IHBhY2tl
dF9vZmZzZXQ7CisgICAgICAgIGxlbiAtPSBwYWNrZXRfb2Zmc2V0OworICAgICAgfQogICAgICAg
aWYgKHJldCA8PSAwKQogICAgICAgewogICAgICAgICAgUkVTVE9SRV9TVEFDSzsKQEAgLTI2Niw3
ICsyNzAsNyBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2ZSgKICAg
ICAgICAgIHdoaWxlICggKGNoYW4gPSBnZXRfbGVmdF9jaGFubmVsKCZzdC0+bGF5b3V0LCBzLCBw
cmV2KSkgIT0gLTEpCiAgICAgICAgICB7CiAgICAgICAgICAgICAoKmNvcHlfY2hhbm5lbF9vdXQp
KHBjbSwgc3QtPmxheW91dC5uYl9jaGFubmVscywgY2hhbiwKLSAgICAgICAgICAgICAgIGJ1Ziwg
MiwgZnJhbWVfc2l6ZSk7CisgICAgICAgICAgICAgICBidWYsIDIsIGZyYW1lX3NpemUsIHVzZXJf
ZGF0YSk7CiAgICAgICAgICAgICBwcmV2ID0gY2hhbjsKICAgICAgICAgIH0KICAgICAgICAgIHBy
ZXYgPSAtMTsKQEAgLTI3NCw3ICsyNzgsNyBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1f
ZGVjb2RlX25hdGl2ZSgKICAgICAgICAgIHdoaWxlICggKGNoYW4gPSBnZXRfcmlnaHRfY2hhbm5l
bCgmc3QtPmxheW91dCwgcywgcHJldikpICE9IC0xKQogICAgICAgICAgewogICAgICAgICAgICAg
KCpjb3B5X2NoYW5uZWxfb3V0KShwY20sIHN0LT5sYXlvdXQubmJfY2hhbm5lbHMsIGNoYW4sCi0g
ICAgICAgICAgICAgICBidWYrMSwgMiwgZnJhbWVfc2l6ZSk7CisgICAgICAgICAgICAgICBidWYr
MSwgMiwgZnJhbWVfc2l6ZSwgdXNlcl9kYXRhKTsKICAgICAgICAgICAgIHByZXYgPSBjaGFuOwog
ICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKQEAgLTI4NCw3ICsyODgsNyBAQCBzdGF0aWMgaW50
IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2ZSgKICAgICAgICAgIHdoaWxlICggKGNoYW4g
PSBnZXRfbW9ub19jaGFubmVsKCZzdC0+bGF5b3V0LCBzLCBwcmV2KSkgIT0gLTEpCiAgICAgICAg
ICB7CiAgICAgICAgICAgICAoKmNvcHlfY2hhbm5lbF9vdXQpKHBjbSwgc3QtPmxheW91dC5uYl9j
aGFubmVscywgY2hhbiwKLSAgICAgICAgICAgICAgIGJ1ZiwgMSwgZnJhbWVfc2l6ZSk7CisgICAg
ICAgICAgICAgICBidWYsIDEsIGZyYW1lX3NpemUsIHVzZXJfZGF0YSk7CiAgICAgICAgICAgICBw
cmV2ID0gY2hhbjsKICAgICAgICAgIH0KICAgICAgIH0KQEAgLTI5NSw3ICsyOTksNyBAQCBzdGF0
aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2ZSgKICAgICAgIGlmIChzdC0+bGF5
b3V0Lm1hcHBpbmdbY10gPT0gMjU1KQogICAgICAgewogICAgICAgICAgKCpjb3B5X2NoYW5uZWxf
b3V0KShwY20sIHN0LT5sYXlvdXQubmJfY2hhbm5lbHMsIGMsCi0gICAgICAgICAgICBOVUxMLCAw
LCBmcmFtZV9zaXplKTsKKyAgICAgICAgICAgIE5VTEwsIDAsIGZyYW1lX3NpemUsIHVzZXJfZGF0
YSk7CiAgICAgICB9CiAgICB9CiAgICBSRVNUT1JFX1NUQUNLOwpAQCAtMzA5LDExICszMTMsMTMg
QEAgc3RhdGljIHZvaWQgb3B1c19jb3B5X2NoYW5uZWxfb3V0X2Zsb2F0KAogICBpbnQgZHN0X2No
YW5uZWwsCiAgIGNvbnN0IG9wdXNfdmFsMTYgKnNyYywKICAgaW50IHNyY19zdHJpZGUsCi0gIGlu
dCBmcmFtZV9zaXplCisgIGludCBmcmFtZV9zaXplLAorICB2b2lkICp1c2VyX2RhdGEKICkKIHsK
ICAgIGZsb2F0ICpmbG9hdF9kc3Q7CiAgICBvcHVzX2ludDMyIGk7CisgICAodm9pZCl1c2VyX2Rh
dGE7CiAgICBmbG9hdF9kc3QgPSAoZmxvYXQqKWRzdDsKICAgIGlmIChzcmMgIT0gTlVMTCkKICAg
IHsKQEAgLTMzOCwxMSArMzQ0LDEzIEBAIHN0YXRpYyB2b2lkIG9wdXNfY29weV9jaGFubmVsX291
dF9zaG9ydCgKICAgaW50IGRzdF9jaGFubmVsLAogICBjb25zdCBvcHVzX3ZhbDE2ICpzcmMsCiAg
IGludCBzcmNfc3RyaWRlLAotICBpbnQgZnJhbWVfc2l6ZQorICBpbnQgZnJhbWVfc2l6ZSwKKyAg
dm9pZCAqdXNlcl9kYXRhCiApCiB7CiAgICBvcHVzX2ludDE2ICpzaG9ydF9kc3Q7CiAgICBvcHVz
X2ludDMyIGk7CisgICAodm9pZCl1c2VyX2RhdGE7CiAgICBzaG9ydF9kc3QgPSAob3B1c19pbnQx
NiopZHN0OwogICAgaWYgKHNyYyAhPSBOVUxMKQogICAgewpAQCAtMzczLDcgKzM4MSw3IEBAIGlu
dCBvcHVzX211bHRpc3RyZWFtX2RlY29kZSgKICkKIHsKICAgIHJldHVybiBvcHVzX211bHRpc3Ry
ZWFtX2RlY29kZV9uYXRpdmUoc3QsIGRhdGEsIGxlbiwKLSAgICAgICBwY20sIG9wdXNfY29weV9j
aGFubmVsX291dF9zaG9ydCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywgMCk7CisgICAgICAgcGNt
LCBvcHVzX2NvcHlfY2hhbm5lbF9vdXRfc2hvcnQsIGZyYW1lX3NpemUsIGRlY29kZV9mZWMsIDAs
IE5VTEwpOwogfQogCiAjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCkBAIC0zODEsNyArMzg5LDcg
QEAgaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX2Zsb2F0KE9wdXNNU0RlY29kZXIgKnN0LCBj
b25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgICAgb3B1c19pbnQzMiBsZW4sIGZsb2F0ICpw
Y20sIGludCBmcmFtZV9zaXplLCBpbnQgZGVjb2RlX2ZlYykKIHsKICAgIHJldHVybiBvcHVzX211
bHRpc3RyZWFtX2RlY29kZV9uYXRpdmUoc3QsIGRhdGEsIGxlbiwKLSAgICAgICBwY20sIG9wdXNf
Y29weV9jaGFubmVsX291dF9mbG9hdCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywgMCk7CisgICAg
ICAgcGNtLCBvcHVzX2NvcHlfY2hhbm5lbF9vdXRfZmxvYXQsIGZyYW1lX3NpemUsIGRlY29kZV9m
ZWMsIDAsIE5VTEwpOwogfQogI2VuZGlmCiAKQEAgLTM5MSwzMiArMzk5LDMwIEBAIGludCBvcHVz
X211bHRpc3RyZWFtX2RlY29kZShPcHVzTVNEZWNvZGVyICpzdCwgY29uc3QgdW5zaWduZWQgY2hh
ciAqZGF0YSwKICAgICAgIG9wdXNfaW50MzIgbGVuLCBvcHVzX2ludDE2ICpwY20sIGludCBmcmFt
ZV9zaXplLCBpbnQgZGVjb2RlX2ZlYykKIHsKICAgIHJldHVybiBvcHVzX211bHRpc3RyZWFtX2Rl
Y29kZV9uYXRpdmUoc3QsIGRhdGEsIGxlbiwKLSAgICAgICBwY20sIG9wdXNfY29weV9jaGFubmVs
X291dF9zaG9ydCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywgMSk7CisgICAgICAgcGNtLCBvcHVz
X2NvcHlfY2hhbm5lbF9vdXRfc2hvcnQsIGZyYW1lX3NpemUsIGRlY29kZV9mZWMsIDEsIE5VTEwp
OwogfQogCiBpbnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfZmxvYXQoCiAgICAgICBPcHVzTVNE
ZWNvZGVyICpzdCwKICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCiAgICAgICBvcHVz
X2ludDMyIGxlbiwKLSAgICAgIGZsb2F0ICpwY20sCisgICAgICBvcHVzX3ZhbDE2ICpwY20sCiAg
ICAgICBpbnQgZnJhbWVfc2l6ZSwKICAgICAgIGludCBkZWNvZGVfZmVjCiApCiB7CiAgICByZXR1
cm4gb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfbmF0aXZlKHN0LCBkYXRhLCBsZW4sCi0gICAgICAg
cGNtLCBvcHVzX2NvcHlfY2hhbm5lbF9vdXRfZmxvYXQsIGZyYW1lX3NpemUsIGRlY29kZV9mZWMs
IDApOworICAgICAgIHBjbSwgb3B1c19jb3B5X2NoYW5uZWxfb3V0X2Zsb2F0LCBmcmFtZV9zaXpl
LCBkZWNvZGVfZmVjLCAwLCBOVUxMKTsKIH0KICNlbmRpZgogCi1pbnQgb3B1c19tdWx0aXN0cmVh
bV9kZWNvZGVyX2N0bChPcHVzTVNEZWNvZGVyICpzdCwgaW50IHJlcXVlc3QsIC4uLikKK2ludCBv
cHVzX211bHRpc3RyZWFtX2RlY29kZXJfY3RsX3ZhX2xpc3QoT3B1c01TRGVjb2RlciAqc3QsIGlu
dCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9s
aXN0IGFwKQogewotICAgdmFfbGlzdCBhcDsKICAgIGludCBjb3VwbGVkX3NpemUsIG1vbm9fc2l6
ZTsKICAgIGNoYXIgKnB0cjsKICAgIGludCByZXQgPSBPUFVTX09LOwogCi0gICB2YV9zdGFydChh
cCwgcmVxdWVzdCk7Ci0KICAgIGNvdXBsZWRfc2l6ZSA9IG9wdXNfZGVjb2Rlcl9nZXRfc2l6ZSgy
KTsKICAgIG1vbm9fc2l6ZSA9IG9wdXNfZGVjb2Rlcl9nZXRfc2l6ZSgxKTsKICAgIHB0ciA9IChj
aGFyKilzdCArIGFsaWduKHNpemVvZihPcHVzTVNEZWNvZGVyKSk7CkBAIC00ODQsNyArNDkwLDcg
QEAgaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGwoT3B1c01TRGVjb2RlciAqc3QsIGlu
dCByZXF1ZXN0LCAuLi4pCiAgICAgICAgICAgT3B1c0RlY29kZXIgKip2YWx1ZTsKICAgICAgICAg
ICBzdHJlYW1faWQgPSB2YV9hcmcoYXAsIG9wdXNfaW50MzIpOwogICAgICAgICAgIGlmIChzdHJl
YW1faWQ8MCB8fCBzdHJlYW1faWQgPj0gc3QtPmxheW91dC5uYl9zdHJlYW1zKQotICAgICAgICAg
ICAgIHJldCA9IE9QVVNfQkFEX0FSRzsKKyAgICAgICAgICAgICBnb3RvIGJhZF9hcmc7CiAgICAg
ICAgICAgdmFsdWUgPSB2YV9hcmcoYXAsIE9wdXNEZWNvZGVyKiopOwogICAgICAgICAgIGlmICgh
dmFsdWUpCiAgICAgICAgICAgewpAQCAtNTI1LDE0ICs1MzEsMjAgQEAgaW50IG9wdXNfbXVsdGlz
dHJlYW1fZGVjb2Rlcl9jdGwoT3B1c01TRGVjb2RlciAqc3QsIGludCByZXF1ZXN0LCAuLi4pCiAg
ICAgICAgICAgcmV0ID0gT1BVU19VTklNUExFTUVOVEVEOwogICAgICAgIGJyZWFrOwogICAgfQot
Ci0gICB2YV9lbmQoYXApOwogICAgcmV0dXJuIHJldDsKIGJhZF9hcmc6Ci0gICB2YV9lbmQoYXAp
OwogICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKIH0KIAoraW50IG9wdXNfbXVsdGlzdHJlYW1fZGVj
b2Rlcl9jdGwoT3B1c01TRGVjb2RlciAqc3QsIGludCByZXF1ZXN0LCAuLi4pCit7CisgICBpbnQg
cmV0OworICAgdmFfbGlzdCBhcDsKKyAgIHZhX3N0YXJ0KGFwLCByZXF1ZXN0KTsKKyAgIHJldCA9
IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGxfdmFfbGlzdChzdCwgcmVxdWVzdCwgYXApOwor
ICAgdmFfZW5kKGFwKTsKKyAgIHJldHVybiByZXQ7Cit9CiAKIHZvaWQgb3B1c19tdWx0aXN0cmVh
bV9kZWNvZGVyX2Rlc3Ryb3koT3B1c01TRGVjb2RlciAqc3QpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9v
cHVzX211bHRpc3RyZWFtX2VuY29kZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlci5j
CmluZGV4IDAzMmZjMDAzOWI5MTMxMmU3NTZiZjg5YzZiZjBkZTA1MmY2OGFjZjEuLjkzMjA0YTE0
YzEyMzUxOGFjZTVlN2JmMGI5ZGI3ZWY2Y2MxZTBhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfbXVs
dGlzdHJlYW1fZW5jb2Rlci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlci5jCkBA
IC02MSwzNyArNjEsNiBAQCBzdGF0aWMgY29uc3QgVm9yYmlzTGF5b3V0IHZvcmJpc19tYXBwaW5n
c1s4XSA9IHsKICAgICAgIHs1LCAzLCB7MCwgNiwgMSwgMiwgMywgNCwgNSwgN319LCAvKiA4OiA3
LjEgc3Vycm91bmQgKi8KIH07CiAKLXR5cGVkZWYgdm9pZCAoKm9wdXNfY29weV9jaGFubmVsX2lu
X2Z1bmMpKAotICBvcHVzX3ZhbDE2ICpkc3QsCi0gIGludCBkc3Rfc3RyaWRlLAotICBjb25zdCB2
b2lkICpzcmMsCi0gIGludCBzcmNfc3RyaWRlLAotICBpbnQgc3JjX2NoYW5uZWwsCi0gIGludCBm
cmFtZV9zaXplCi0pOwotCi10eXBlZGVmIGVudW0gewotICBNQVBQSU5HX1RZUEVfTk9ORSwKLSAg
TUFQUElOR19UWVBFX1NVUlJPVU5ECi0jaWZkZWYgRU5BQkxFX0VYUEVSSU1FTlRBTF9BTUJJU09O
SUNTCi0gICwgIC8qIERvIG5vdCBpbmNsdWRlIGNvbW1hIGF0IGVuZCBvZiBlbnVtZXJhdG9yIGxp
c3QgKi8KLSAgTUFQUElOR19UWVBFX0FNQklTT05JQ1MKLSNlbmRpZgotfSBNYXBwaW5nVHlwZTsK
LQotc3RydWN0IE9wdXNNU0VuY29kZXIgewotICAgQ2hhbm5lbExheW91dCBsYXlvdXQ7Ci0gICBp
bnQgYXJjaDsKLSAgIGludCBsZmVfc3RyZWFtOwotICAgaW50IGFwcGxpY2F0aW9uOwotICAgaW50
IHZhcmlhYmxlX2R1cmF0aW9uOwotICAgTWFwcGluZ1R5cGUgbWFwcGluZ190eXBlOwotICAgb3B1
c19pbnQzMiBiaXRyYXRlX2JwczsKLSAgIC8qIEVuY29kZXIgc3RhdGVzIGdvIGhlcmUgKi8KLSAg
IC8qIHRoZW4gb3B1c192YWwzMiB3aW5kb3dfbWVtW2NoYW5uZWxzKjEyMF07ICovCi0gICAvKiB0
aGVuIG9wdXNfdmFsMzIgcHJlZW1waF9tZW1bY2hhbm5lbHNdOyAqLwotfTsKLQogc3RhdGljIG9w
dXNfdmFsMzIgKm1zX2dldF9wcmVlbXBoX21lbShPcHVzTVNFbmNvZGVyICpzdCkKIHsKICAgIGlu
dCBzOwpAQCAtMTMyLDE5ICsxMDEsMjAgQEAgc3RhdGljIG9wdXNfdmFsMzIgKm1zX2dldF93aW5k
b3dfbWVtKE9wdXNNU0VuY29kZXIgKnN0KQogICAgcmV0dXJuIChvcHVzX3ZhbDMyKikodm9pZCop
cHRyOwogfQogCi0jaWZkZWYgRU5BQkxFX0VYUEVSSU1FTlRBTF9BTUJJU09OSUNTCiBzdGF0aWMg
aW50IHZhbGlkYXRlX2FtYmlzb25pY3MoaW50IG5iX2NoYW5uZWxzLCBpbnQgKm5iX3N0cmVhbXMs
IGludCAqbmJfY291cGxlZF9zdHJlYW1zKQogewogICAgaW50IG9yZGVyX3BsdXNfb25lOwogICAg
aW50IGFjbl9jaGFubmVsczsKICAgIGludCBub25kaWVnZXRpY19jaGFubmVsczsKIAorICAgaWYg
KG5iX2NoYW5uZWxzIDwgMSB8fCBuYl9jaGFubmVscyA+IDIyNykKKyAgICAgIHJldHVybiAwOwor
CiAgICBvcmRlcl9wbHVzX29uZSA9IGlzcXJ0MzIobmJfY2hhbm5lbHMpOwogICAgYWNuX2NoYW5u
ZWxzID0gb3JkZXJfcGx1c19vbmUgKiBvcmRlcl9wbHVzX29uZTsKICAgIG5vbmRpZWdldGljX2No
YW5uZWxzID0gbmJfY2hhbm5lbHMgLSBhY25fY2hhbm5lbHM7CiAKLSAgIGlmIChvcmRlcl9wbHVz
X29uZSA8IDEgfHwgb3JkZXJfcGx1c19vbmUgPiAxNSB8fAotICAgICAgIChub25kaWVnZXRpY19j
aGFubmVscyAhPSAwICYmIG5vbmRpZWdldGljX2NoYW5uZWxzICE9IDIpKQorICAgaWYgKG5vbmRp
ZWdldGljX2NoYW5uZWxzICE9IDAgJiYgbm9uZGllZ2V0aWNfY2hhbm5lbHMgIT0gMikKICAgICAg
IHJldHVybiAwOwogCiAgICBpZiAobmJfc3RyZWFtcykKQEAgLTE1Myw3ICsxMjMsNiBAQCBzdGF0
aWMgaW50IHZhbGlkYXRlX2FtYmlzb25pY3MoaW50IG5iX2NoYW5uZWxzLCBpbnQgKm5iX3N0cmVh
bXMsIGludCAqbmJfY291cGxlZAogICAgICAgKm5iX2NvdXBsZWRfc3RyZWFtcyA9IG5vbmRpZWdl
dGljX2NoYW5uZWxzICE9IDA7CiAgICByZXR1cm4gMTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgaW50
IHZhbGlkYXRlX2VuY29kZXJfbGF5b3V0KGNvbnN0IENoYW5uZWxMYXlvdXQgKmxheW91dCkKIHsK
QEAgLTI5Niw3ICsyNjUsNyBAQCB2b2lkIHN1cnJvdW5kX2FuYWx5c2lzKGNvbnN0IENFTFRNb2Rl
ICpjZWx0X21vZGUsIGNvbnN0IHZvaWQgKnBjbSwgb3B1c192YWwxNiAqYgogICAgICAgaW50IG5i
X2ZyYW1lcyA9IGZyYW1lX3NpemUvZnJlcV9zaXplOwogICAgICAgY2VsdF9hc3NlcnQobmJfZnJh
bWVzKmZyZXFfc2l6ZSA9PSBmcmFtZV9zaXplKTsKICAgICAgIE9QVVNfQ09QWShpbiwgbWVtK2Mq
b3ZlcmxhcCwgb3ZlcmxhcCk7Ci0gICAgICAoKmNvcHlfY2hhbm5lbF9pbikoeCwgMSwgcGNtLCBj
aGFubmVscywgYywgbGVuKTsKKyAgICAgICgqY29weV9jaGFubmVsX2luKSh4LCAxLCBwY20sIGNo
YW5uZWxzLCBjLCBsZW4sIE5VTEwpOwogICAgICAgY2VsdF9wcmVlbXBoYXNpcyh4LCBpbitvdmVy
bGFwLCBmcmFtZV9zaXplLCAxLCB1cHNhbXBsZSwgY2VsdF9tb2RlLT5wcmVlbXBoLCBwcmVlbXBo
X21lbStjLCAwKTsKICNpZm5kZWYgRklYRURfUE9JTlQKICAgICAgIHsKQEAgLTQ0MywxMiArNDEy
LDEwIEBAIG9wdXNfaW50MzIgb3B1c19tdWx0aXN0cmVhbV9zdXJyb3VuZF9lbmNvZGVyX2dldF9z
aXplKGludCBjaGFubmVscywgaW50IG1hcHBpbmdfCiAgICB7CiAgICAgICBuYl9zdHJlYW1zPWNo
YW5uZWxzOwogICAgICAgbmJfY291cGxlZF9zdHJlYW1zPTA7Ci0jaWZkZWYgRU5BQkxFX0VYUEVS
SU1FTlRBTF9BTUJJU09OSUNTCi0gICB9IGVsc2UgaWYgKG1hcHBpbmdfZmFtaWx5PT0yNTQpCisg
ICB9IGVsc2UgaWYgKG1hcHBpbmdfZmFtaWx5PT0yKQogICAgewogICAgICAgaWYgKCF2YWxpZGF0
ZV9hbWJpc29uaWNzKGNoYW5uZWxzLCAmbmJfc3RyZWFtcywgJm5iX2NvdXBsZWRfc3RyZWFtcykp
CiAgICAgICAgICByZXR1cm4gMDsKLSNlbmRpZgogICAgfSBlbHNlCiAgICAgICByZXR1cm4gMDsK
ICAgIHNpemUgPSBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfZ2V0X3NpemUobmJfc3RyZWFtcywg
bmJfY291cGxlZF9zdHJlYW1zKTsKQEAgLTQ5NSwxMSArNDYyLDkgQEAgc3RhdGljIGludCBvcHVz
X211bHRpc3RyZWFtX2VuY29kZXJfaW5pdF9pbXBsKAogICAgaWYgKG1hcHBpbmdfdHlwZSA9PSBN
QVBQSU5HX1RZUEVfU1VSUk9VTkQgJiYKICAgICAgICAhdmFsaWRhdGVfZW5jb2Rlcl9sYXlvdXQo
JnN0LT5sYXlvdXQpKQogICAgICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKLSNpZmRlZiBFTkFCTEVf
RVhQRVJJTUVOVEFMX0FNQklTT05JQ1MKICAgIGlmIChtYXBwaW5nX3R5cGUgPT0gTUFQUElOR19U
WVBFX0FNQklTT05JQ1MgJiYKICAgICAgICAhdmFsaWRhdGVfYW1iaXNvbmljcyhzdC0+bGF5b3V0
Lm5iX2NoYW5uZWxzLCBOVUxMLCBOVUxMKSkKICAgICAgIHJldHVybiBPUFVTX0JBRF9BUkc7Ci0j
ZW5kaWYKICAgIHB0ciA9IChjaGFyKilzdCArIGFsaWduKHNpemVvZihPcHVzTVNFbmNvZGVyKSk7
CiAgICBjb3VwbGVkX3NpemUgPSBvcHVzX2VuY29kZXJfZ2V0X3NpemUoMik7CiAgICBtb25vX3Np
emUgPSBvcHVzX2VuY29kZXJfZ2V0X3NpemUoMSk7CkBAIC01OTEsOCArNTU2LDcgQEAgaW50IG9w
dXNfbXVsdGlzdHJlYW1fc3Vycm91bmRfZW5jb2Rlcl9pbml0KAogICAgICAgKmNvdXBsZWRfc3Ry
ZWFtcz0wOwogICAgICAgZm9yKGk9MDtpPGNoYW5uZWxzO2krKykKICAgICAgICAgIG1hcHBpbmdb
aV0gPSBpOwotI2lmZGVmIEVOQUJMRV9FWFBFUklNRU5UQUxfQU1CSVNPTklDUwotICAgfSBlbHNl
IGlmIChtYXBwaW5nX2ZhbWlseT09MjU0KQorICAgfSBlbHNlIGlmIChtYXBwaW5nX2ZhbWlseT09
MikKICAgIHsKICAgICAgIGludCBpOwogICAgICAgaWYgKCF2YWxpZGF0ZV9hbWJpc29uaWNzKGNo
YW5uZWxzLCBzdHJlYW1zLCBjb3VwbGVkX3N0cmVhbXMpKQpAQCAtNjAxLDE3ICs1NjUsMTQgQEAg
aW50IG9wdXNfbXVsdGlzdHJlYW1fc3Vycm91bmRfZW5jb2Rlcl9pbml0KAogICAgICAgICAgbWFw
cGluZ1tpXSA9IGkgKyAoKmNvdXBsZWRfc3RyZWFtcyAqIDIpOwogICAgICAgZm9yKGkgPSAwOyBp
IDwgKmNvdXBsZWRfc3RyZWFtcyAqIDI7IGkrKykKICAgICAgICAgIG1hcHBpbmdbaSArICgqc3Ry
ZWFtcyAtICpjb3VwbGVkX3N0cmVhbXMpXSA9IGk7Ci0jZW5kaWYKICAgIH0gZWxzZQogICAgICAg
cmV0dXJuIE9QVVNfVU5JTVBMRU1FTlRFRDsKIAogICAgaWYgKGNoYW5uZWxzPjIgJiYgbWFwcGlu
Z19mYW1pbHk9PTEpIHsKICAgICAgIG1hcHBpbmdfdHlwZSA9IE1BUFBJTkdfVFlQRV9TVVJST1VO
RDsKLSNpZmRlZiBFTkFCTEVfRVhQRVJJTUVOVEFMX0FNQklTT05JQ1MKLSAgIH0gZWxzZSBpZiAo
bWFwcGluZ19mYW1pbHk9PTI1NCkKKyAgIH0gZWxzZSBpZiAobWFwcGluZ19mYW1pbHk9PTIpCiAg
ICB7CiAgICAgICBtYXBwaW5nX3R5cGUgPSBNQVBQSU5HX1RZUEVfQU1CSVNPTklDUzsKLSNlbmRp
ZgogICAgfSBlbHNlCiAgICB7CiAgICAgICBtYXBwaW5nX3R5cGUgPSBNQVBQSU5HX1RZUEVfTk9O
RTsKQEAgLTc3Miw3ICs3MzMsNiBAQCBzdGF0aWMgdm9pZCBzdXJyb3VuZF9yYXRlX2FsbG9jYXRp
b24oCiAgICB9CiB9CiAKLSNpZmRlZiBFTkFCTEVfRVhQRVJJTUVOVEFMX0FNQklTT05JQ1MKIHN0
YXRpYyB2b2lkIGFtYmlzb25pY3NfcmF0ZV9hbGxvY2F0aW9uKAogICAgICAgT3B1c01TRW5jb2Rl
ciAqc3QsCiAgICAgICBvcHVzX2ludDMyICpyYXRlLApAQCAtNzgxLDI0ICs3NDEsMTUgQEAgc3Rh
dGljIHZvaWQgYW1iaXNvbmljc19yYXRlX2FsbG9jYXRpb24oCiAgICAgICApCiB7CiAgICBpbnQg
aTsKLSAgIGludCB0b3RhbF9yYXRlOwotICAgaW50IGRpcmVjdGlvbmFsX3JhdGU7Ci0gICBpbnQg
bm9uZGlyZWN0aW9uYWxfcmF0ZTsKLSAgIGludCBsZWZ0b3Zlcl9iaXRzOwotCi0gICAvKiBFYWNo
IG5vbmRpcmVjdGlvbmFsIGNoYW5uZWwgZ2V0cyAocmF0ZV9yYXRpb19udW0gLyByYXRlX3JhdGlv
X2RlbikgdGltZXMKLSAgICAqIGFzIG1hbnkgYml0cyBhcyBhbGwgb3RoZXIgYW1iaXNvbmljcyBj
aGFubmVscy4KLSAgICAqLwotICAgY29uc3QgaW50IHJhdGVfcmF0aW9fbnVtID0gNDsKLSAgIGNv
bnN0IGludCByYXRlX3JhdGlvX2RlbiA9IDM7CisgICBvcHVzX2ludDMyIHRvdGFsX3JhdGU7Cisg
ICBvcHVzX2ludDMyIHBlcl9zdHJlYW1fcmF0ZTsKKwogICAgY29uc3QgaW50IG5iX2NoYW5uZWxz
ID0gc3QtPmxheW91dC5uYl9zdHJlYW1zICsgc3QtPmxheW91dC5uYl9jb3VwbGVkX3N0cmVhbXM7
Ci0gICBjb25zdCBpbnQgbmJfbm9uZGlyZWN0aW9uYWxfY2hhbm5lbHMgPSBzdC0+bGF5b3V0Lm5i
X2NvdXBsZWRfc3RyZWFtcyAqIDIgKyAxOwotICAgY29uc3QgaW50IG5iX2RpcmVjdGlvbmFsX2No
YW5uZWxzID0gc3QtPmxheW91dC5uYl9zdHJlYW1zIC0gMTsKIAogICAgaWYgKHN0LT5iaXRyYXRl
X2Jwcz09T1BVU19BVVRPKQogICAgewogICAgICAgdG90YWxfcmF0ZSA9IChzdC0+bGF5b3V0Lm5i
X2NvdXBsZWRfc3RyZWFtcyArIHN0LT5sYXlvdXQubmJfc3RyZWFtcykgKgotICAgICAgICAgKEZz
KzYwKkZzL2ZyYW1lX3NpemUpICsgc3QtPmxheW91dC5uYl9zdHJlYW1zICogMTUwMDA7CisgICAg
ICAgICAoRnMrNjAqRnMvZnJhbWVfc2l6ZSkgKyBzdC0+bGF5b3V0Lm5iX3N0cmVhbXMgKiAob3B1
c19pbnQzMikxNTAwMDsKICAgIH0gZWxzZSBpZiAoc3QtPmJpdHJhdGVfYnBzPT1PUFVTX0JJVFJB
VEVfTUFYKQogICAgewogICAgICAgdG90YWxfcmF0ZSA9IG5iX2NoYW5uZWxzICogMzIwMDAwOwpA
QCAtODA3LDQ5ICs3NTgsMTQgQEAgc3RhdGljIHZvaWQgYW1iaXNvbmljc19yYXRlX2FsbG9jYXRp
b24oCiAgICAgICB0b3RhbF9yYXRlID0gc3QtPmJpdHJhdGVfYnBzOwogICAgfQogCi0gICAvKiBM
ZXQgeSBiZSB0aGUgZGlyZWN0aW9uYWwgcmF0ZSwgbSBiZSB0aGUgbnVtIG9mIG5vbmRpcmVjdGlv
bmFsIGNoYW5uZWxzCi0gICAgKiAgIG0gPSAocyArIDEpCi0gICAgKiBhbmQgbGV0IHAsIHEgYmUg
aW50ZWdlcnMgc3VjaCB0aGF0IHRoZSBub25kaXJlY3Rpb25hbCByYXRlIGlzCi0gICAgKiAgIG1f
cmF0ZSA9IChwIC8gcSkgKiB5Ci0gICAgKiBBbHNvIGxldCBUIGJlIHRoZSB0b3RhbCBiaXRyYXRl
IHRvIGFsbG9jYXRlLiBUaGVuCi0gICAgKiAgIFQgPSAobiAtIG0pICogeSArIG0gKiBtX3JhdGUK
LSAgICAqIFNvbHZpbmcgZm9yIHksCi0gICAgKiAgIHkgPSAocSAqIFQpIC8gKG0gKiAocCAtIHEp
ICsgbiAqIHEpCi0gICAgKi8KLSAgIGRpcmVjdGlvbmFsX3JhdGUgPQotICAgICAgdG90YWxfcmF0
ZSAqIHJhdGVfcmF0aW9fZGVuCi0gICAgICAvIChuYl9ub25kaXJlY3Rpb25hbF9jaGFubmVscyAq
IChyYXRlX3JhdGlvX251bSAtIHJhdGVfcmF0aW9fZGVuKQotICAgICAgICsgbmJfY2hhbm5lbHMg
KiByYXRlX3JhdGlvX2Rlbik7Ci0KLSAgIC8qIENhbGN1bGF0ZSB0aGUgbm9uZGlyZWN0aW9uYWwg
cmF0ZS4KLSAgICAqICAgbV9yYXRlID0geSAqIChwIC8gcSkKLSAgICAqLwotICAgbm9uZGlyZWN0
aW9uYWxfcmF0ZSA9IGRpcmVjdGlvbmFsX3JhdGUgKiByYXRlX3JhdGlvX251bSAvIHJhdGVfcmF0
aW9fZGVuOwotCi0gICAvKiBDYWxjdWxhdGUgdGhlIGxlZnRvdmVyIGZyb20gdHJ1bmNhdGlvbiBl
cnJvci4KLSAgICAqICAgbGVmdG92ZXIgPSBUIC0geSAqIChuIC0gbSkgLSBtX3JhdGUgKiBtCi0g
ICAgKiBQbGFjZSBsZWZ0b3ZlciBiaXRzIGluIG9tbmlkaXJlY3Rpb25hbCBjaGFubmVsLgotICAg
ICovCi0gICBsZWZ0b3Zlcl9iaXRzID0gdG90YWxfcmF0ZQotICAgICAgLSBkaXJlY3Rpb25hbF9y
YXRlICogbmJfZGlyZWN0aW9uYWxfY2hhbm5lbHMKLSAgICAgIC0gbm9uZGlyZWN0aW9uYWxfcmF0
ZSAqIG5iX25vbmRpcmVjdGlvbmFsX2NoYW5uZWxzOwotCi0gICAvKiBDYWxjdWxhdGUgcmF0ZXMg
Zm9yIGVhY2ggY2hhbm5lbCAqLworICAgLyogQWxsb2NhdGUgZXF1YWwgbnVtYmVyIG9mIGJpdHMg
dG8gQW1iaXNvbmljICh1bmNvdXBsZWQpIGFuZCBub24tZGllZ2V0aWMKKyAgICAqIChjb3VwbGVk
KSBzdHJlYW1zICovCisgICBwZXJfc3RyZWFtX3JhdGUgPSB0b3RhbF9yYXRlIC8gc3QtPmxheW91
dC5uYl9zdHJlYW1zOwogICAgZm9yIChpID0gMDsgaSA8IHN0LT5sYXlvdXQubmJfc3RyZWFtczsg
aSsrKQogICAgewotICAgICAgaWYgKGkgPCBzdC0+bGF5b3V0Lm5iX2NvdXBsZWRfc3RyZWFtcykK
LSAgICAgIHsKLSAgICAgICAgIHJhdGVbaV0gPSBub25kaXJlY3Rpb25hbF9yYXRlICogMjsKLSAg
ICAgIH0gZWxzZSBpZiAoaSA9PSBzdC0+bGF5b3V0Lm5iX2NvdXBsZWRfc3RyZWFtcykKLSAgICAg
IHsKLSAgICAgICAgIHJhdGVbaV0gPSBub25kaXJlY3Rpb25hbF9yYXRlICsgbGVmdG92ZXJfYml0
czsKLSAgICAgIH0gZWxzZQotICAgICAgewotICAgICAgICAgcmF0ZVtpXSA9IGRpcmVjdGlvbmFs
X3JhdGU7Ci0gICAgICB9CisgICAgIHJhdGVbaV0gPSBwZXJfc3RyZWFtX3JhdGU7CiAgICB9CiB9
Ci0jZW5kaWYgLyogRU5BQkxFX0VYUEVSSU1FTlRBTF9BTUJJU09OSUNTICovCiAKIHN0YXRpYyBv
cHVzX2ludDMyIHJhdGVfYWxsb2NhdGlvbigKICAgICAgIE9wdXNNU0VuY29kZXIgKnN0LApAQCAt
ODY1LDExICs3ODEsOSBAQCBzdGF0aWMgb3B1c19pbnQzMiByYXRlX2FsbG9jYXRpb24oCiAgICBw
dHIgPSAoY2hhciopc3QgKyBhbGlnbihzaXplb2YoT3B1c01TRW5jb2RlcikpOwogICAgb3B1c19l
bmNvZGVyX2N0bCgoT3B1c0VuY29kZXIqKXB0ciwgT1BVU19HRVRfU0FNUExFX1JBVEUoJkZzKSk7
CiAKLSNpZmRlZiBFTkFCTEVfRVhQRVJJTUVOVEFMX0FNQklTT05JQ1MKICAgIGlmIChzdC0+bWFw
cGluZ190eXBlID09IE1BUFBJTkdfVFlQRV9BTUJJU09OSUNTKSB7CiAgICAgIGFtYmlzb25pY3Nf
cmF0ZV9hbGxvY2F0aW9uKHN0LCByYXRlLCBmcmFtZV9zaXplLCBGcyk7CiAgICB9IGVsc2UKLSNl
bmRpZgogICAgewogICAgICBzdXJyb3VuZF9yYXRlX2FsbG9jYXRpb24oc3QsIHJhdGUsIGZyYW1l
X3NpemUsIEZzKTsKICAgIH0KQEAgLTg4NCw3ICs3OTgsNyBAQCBzdGF0aWMgb3B1c19pbnQzMiBy
YXRlX2FsbG9jYXRpb24oCiAKIC8qIE1heCBzaXplIGluIGNhc2UgdGhlIGVuY29kZXIgZGVjaWRl
cyB0byByZXR1cm4gc2l4IGZyYW1lcyAoNiB4IDIwIG1zID0gMTIwIG1zKSAqLwogI2RlZmluZSBN
U19GUkFNRV9UTVAgKDYqMTI3NSsxMikKLXN0YXRpYyBpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNv
ZGVfbmF0aXZlCitpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVfbmF0aXZlCiAoCiAgICAgT3B1
c01TRW5jb2RlciAqc3QsCiAgICAgb3B1c19jb3B5X2NoYW5uZWxfaW5fZnVuYyBjb3B5X2NoYW5u
ZWxfaW4sCkBAIC04OTQsNyArODA4LDggQEAgc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX2Vu
Y29kZV9uYXRpdmUKICAgICBvcHVzX2ludDMyIG1heF9kYXRhX2J5dGVzLAogICAgIGludCBsc2Jf
ZGVwdGgsCiAgICAgZG93bm1peF9mdW5jIGRvd25taXgsCi0gICAgaW50IGZsb2F0X2FwaQorICAg
IGludCBmbG9hdF9hcGksCisgICAgdm9pZCAqdXNlcl9kYXRhCiApCiB7CiAgICBvcHVzX2ludDMy
IEZzOwpAQCAtMTAwMSwxMSArOTE2LDkgQEAgc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX2Vu
Y29kZV9uYXRpdmUKICAgICAgICAgICAgIG9wdXNfZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NFVF9G
T1JDRV9DSEFOTkVMUygyKSk7CiAgICAgICAgICB9CiAgICAgICB9Ci0jaWZkZWYgRU5BQkxFX0VY
UEVSSU1FTlRBTF9BTUJJU09OSUNTCiAgICAgICBlbHNlIGlmIChzdC0+bWFwcGluZ190eXBlID09
IE1BUFBJTkdfVFlQRV9BTUJJU09OSUNTKSB7CiAgICAgICAgIG9wdXNfZW5jb2Rlcl9jdGwoZW5j
LCBPUFVTX1NFVF9GT1JDRV9NT0RFKE1PREVfQ0VMVF9PTkxZKSk7CiAgICAgICB9Ci0jZW5kaWYK
ICAgIH0KIAogICAgcHRyID0gKGNoYXIqKXN0ICsgYWxpZ24oc2l6ZW9mKE9wdXNNU0VuY29kZXIp
KTsKQEAgLTEwMjgsOSArOTQxLDkgQEAgc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX2VuY29k
ZV9uYXRpdmUKICAgICAgICAgIGxlZnQgPSBnZXRfbGVmdF9jaGFubmVsKCZzdC0+bGF5b3V0LCBz
LCAtMSk7CiAgICAgICAgICByaWdodCA9IGdldF9yaWdodF9jaGFubmVsKCZzdC0+bGF5b3V0LCBz
LCAtMSk7CiAgICAgICAgICAoKmNvcHlfY2hhbm5lbF9pbikoYnVmLCAyLAotICAgICAgICAgICAg
cGNtLCBzdC0+bGF5b3V0Lm5iX2NoYW5uZWxzLCBsZWZ0LCBmcmFtZV9zaXplKTsKKyAgICAgICAg
ICAgIHBjbSwgc3QtPmxheW91dC5uYl9jaGFubmVscywgbGVmdCwgZnJhbWVfc2l6ZSwgdXNlcl9k
YXRhKTsKICAgICAgICAgICgqY29weV9jaGFubmVsX2luKShidWYrMSwgMiwKLSAgICAgICAgICAg
IHBjbSwgc3QtPmxheW91dC5uYl9jaGFubmVscywgcmlnaHQsIGZyYW1lX3NpemUpOworICAgICAg
ICAgICAgcGNtLCBzdC0+bGF5b3V0Lm5iX2NoYW5uZWxzLCByaWdodCwgZnJhbWVfc2l6ZSwgdXNl
cl9kYXRhKTsKICAgICAgICAgIHB0ciArPSBhbGlnbihjb3VwbGVkX3NpemUpOwogICAgICAgICAg
aWYgKHN0LT5tYXBwaW5nX3R5cGUgPT0gTUFQUElOR19UWVBFX1NVUlJPVU5EKQogICAgICAgICAg
ewpAQCAtMTA0Niw3ICs5NTksNyBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rl
X25hdGl2ZQogICAgICAgICAgaW50IGk7CiAgICAgICAgICBpbnQgY2hhbiA9IGdldF9tb25vX2No
YW5uZWwoJnN0LT5sYXlvdXQsIHMsIC0xKTsKICAgICAgICAgICgqY29weV9jaGFubmVsX2luKShi
dWYsIDEsCi0gICAgICAgICAgICBwY20sIHN0LT5sYXlvdXQubmJfY2hhbm5lbHMsIGNoYW4sIGZy
YW1lX3NpemUpOworICAgICAgICAgICAgcGNtLCBzdC0+bGF5b3V0Lm5iX2NoYW5uZWxzLCBjaGFu
LCBmcmFtZV9zaXplLCB1c2VyX2RhdGEpOwogICAgICAgICAgcHRyICs9IGFsaWduKG1vbm9fc2l6
ZSk7CiAgICAgICAgICBpZiAoc3QtPm1hcHBpbmdfdHlwZSA9PSBNQVBQSU5HX1RZUEVfU1VSUk9V
TkQpCiAgICAgICAgICB7CkBAIC0xMTA1LDExICsxMDE4LDEzIEBAIHN0YXRpYyB2b2lkIG9wdXNf
Y29weV9jaGFubmVsX2luX2Zsb2F0KAogICBjb25zdCB2b2lkICpzcmMsCiAgIGludCBzcmNfc3Ry
aWRlLAogICBpbnQgc3JjX2NoYW5uZWwsCi0gIGludCBmcmFtZV9zaXplCisgIGludCBmcmFtZV9z
aXplLAorICB2b2lkICp1c2VyX2RhdGEKICkKIHsKICAgIGNvbnN0IGZsb2F0ICpmbG9hdF9zcmM7
CiAgICBvcHVzX2ludDMyIGk7CisgICAodm9pZCl1c2VyX2RhdGE7CiAgICBmbG9hdF9zcmMgPSAo
Y29uc3QgZmxvYXQgKilzcmM7CiAgICBmb3IgKGk9MDtpPGZyYW1lX3NpemU7aSsrKQogI2lmIGRl
ZmluZWQoRklYRURfUE9JTlQpCkBAIC0xMTI2LDExICsxMDQxLDEzIEBAIHN0YXRpYyB2b2lkIG9w
dXNfY29weV9jaGFubmVsX2luX3Nob3J0KAogICBjb25zdCB2b2lkICpzcmMsCiAgIGludCBzcmNf
c3RyaWRlLAogICBpbnQgc3JjX2NoYW5uZWwsCi0gIGludCBmcmFtZV9zaXplCisgIGludCBmcmFt
ZV9zaXplLAorICB2b2lkICp1c2VyX2RhdGEKICkKIHsKICAgIGNvbnN0IG9wdXNfaW50MTYgKnNo
b3J0X3NyYzsKICAgIG9wdXNfaW50MzIgaTsKKyAgICh2b2lkKXVzZXJfZGF0YTsKICAgIHNob3J0
X3NyYyA9IChjb25zdCBvcHVzX2ludDE2ICopc3JjOwogICAgZm9yIChpPTA7aTxmcmFtZV9zaXpl
O2krKykKICNpZiBkZWZpbmVkKEZJWEVEX1BPSU5UKQpAQCAtMTE1MSw3ICsxMDY4LDcgQEAgaW50
IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlKAogKQogewogICAgcmV0dXJuIG9wdXNfbXVsdGlzdHJl
YW1fZW5jb2RlX25hdGl2ZShzdCwgb3B1c19jb3B5X2NoYW5uZWxfaW5fc2hvcnQsCi0gICAgICBw
Y20sIGZyYW1lX3NpemUsIGRhdGEsIG1heF9kYXRhX2J5dGVzLCAxNiwgZG93bm1peF9pbnQsIDAp
OworICAgICAgcGNtLCBmcmFtZV9zaXplLCBkYXRhLCBtYXhfZGF0YV9ieXRlcywgMTYsIGRvd25t
aXhfaW50LCAwLCBOVUxMKTsKIH0KIAogI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQpAQCAtMTE2
NCw3ICsxMDgxLDcgQEAgaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlX2Zsb2F0KAogKQogewog
ICAgcmV0dXJuIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlX25hdGl2ZShzdCwgb3B1c19jb3B5X2No
YW5uZWxfaW5fZmxvYXQsCi0gICAgICBwY20sIGZyYW1lX3NpemUsIGRhdGEsIG1heF9kYXRhX2J5
dGVzLCAxNiwgZG93bm1peF9mbG9hdCwgMSk7CisgICAgICBwY20sIGZyYW1lX3NpemUsIGRhdGEs
IG1heF9kYXRhX2J5dGVzLCAxNiwgZG93bm1peF9mbG9hdCwgMSwgTlVMTCk7CiB9CiAjZW5kaWYK
IApAQCAtMTE4MCw3ICsxMDk3LDcgQEAgaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlX2Zsb2F0
CiApCiB7CiAgICByZXR1cm4gb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVfbmF0aXZlKHN0LCBvcHVz
X2NvcHlfY2hhbm5lbF9pbl9mbG9hdCwKLSAgICAgIHBjbSwgZnJhbWVfc2l6ZSwgZGF0YSwgbWF4
X2RhdGFfYnl0ZXMsIDI0LCBkb3dubWl4X2Zsb2F0LCAxKTsKKyAgICAgIHBjbSwgZnJhbWVfc2l6
ZSwgZGF0YSwgbWF4X2RhdGFfYnl0ZXMsIDI0LCBkb3dubWl4X2Zsb2F0LCAxLCBOVUxMKTsKIH0K
IAogaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlKApAQCAtMTE5MiwxOSArMTEwOSwxNyBAQCBp
bnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGUoCiApCiB7CiAgICByZXR1cm4gb3B1c19tdWx0aXN0
cmVhbV9lbmNvZGVfbmF0aXZlKHN0LCBvcHVzX2NvcHlfY2hhbm5lbF9pbl9zaG9ydCwKLSAgICAg
IHBjbSwgZnJhbWVfc2l6ZSwgZGF0YSwgbWF4X2RhdGFfYnl0ZXMsIDE2LCBkb3dubWl4X2ludCwg
MCk7CisgICAgICBwY20sIGZyYW1lX3NpemUsIGRhdGEsIG1heF9kYXRhX2J5dGVzLCAxNiwgZG93
bm1peF9pbnQsIDAsIE5VTEwpOwogfQogI2VuZGlmCiAKLWludCBvcHVzX211bHRpc3RyZWFtX2Vu
Y29kZXJfY3RsKE9wdXNNU0VuY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwgLi4uKQoraW50IG9wdXNf
bXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGxfdmFfbGlzdChPcHVzTVNFbmNvZGVyICpzdCwgaW50IHJl
cXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3Qg
YXApCiB7Ci0gICB2YV9saXN0IGFwOwogICAgaW50IGNvdXBsZWRfc2l6ZSwgbW9ub19zaXplOwog
ICAgY2hhciAqcHRyOwogICAgaW50IHJldCA9IE9QVVNfT0s7CiAKLSAgIHZhX3N0YXJ0KGFwLCBy
ZXF1ZXN0KTsKLQogICAgY291cGxlZF9zaXplID0gb3B1c19lbmNvZGVyX2dldF9zaXplKDIpOwog
ICAgbW9ub19zaXplID0gb3B1c19lbmNvZGVyX2dldF9zaXplKDEpOwogICAgcHRyID0gKGNoYXIq
KXN0ICsgYWxpZ24oc2l6ZW9mKE9wdXNNU0VuY29kZXIpKTsKQEAgLTEzMzQsNyArMTI0OSw3IEBA
IGludCBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsKE9wdXNNU0VuY29kZXIgKnN0LCBpbnQg
cmVxdWVzdCwgLi4uKQogICAgICAgT3B1c0VuY29kZXIgKip2YWx1ZTsKICAgICAgIHN0cmVhbV9p
ZCA9IHZhX2FyZyhhcCwgb3B1c19pbnQzMik7CiAgICAgICBpZiAoc3RyZWFtX2lkPDAgfHwgc3Ry
ZWFtX2lkID49IHN0LT5sYXlvdXQubmJfc3RyZWFtcykKLSAgICAgICAgIHJldCA9IE9QVVNfQkFE
X0FSRzsKKyAgICAgICAgIGdvdG8gYmFkX2FyZzsKICAgICAgIHZhbHVlID0gdmFfYXJnKGFwLCBP
cHVzRW5jb2RlcioqKTsKICAgICAgIGlmICghdmFsdWUpCiAgICAgICB7CkBAIC0xMzkyLDE0ICsx
MzA3LDIxIEBAIGludCBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsKE9wdXNNU0VuY29kZXIg
KnN0LCBpbnQgcmVxdWVzdCwgLi4uKQogICAgICAgcmV0ID0gT1BVU19VTklNUExFTUVOVEVEOwog
ICAgICAgYnJlYWs7CiAgICB9Ci0KLSAgIHZhX2VuZChhcCk7CiAgICByZXR1cm4gcmV0OwogYmFk
X2FyZzoKLSAgIHZhX2VuZChhcCk7CiAgICByZXR1cm4gT1BVU19CQURfQVJHOwogfQogCitpbnQg
b3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bChPcHVzTVNFbmNvZGVyICpzdCwgaW50IHJlcXVl
c3QsIC4uLikKK3sKKyAgIGludCByZXQ7CisgICB2YV9saXN0IGFwOworICAgdmFfc3RhcnQoYXAs
IHJlcXVlc3QpOworICAgcmV0ID0gb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bF92YV9saXN0
KHN0LCByZXF1ZXN0LCBhcCk7CisgICB2YV9lbmQoYXApOworICAgcmV0dXJuIHJldDsKK30KKwog
dm9pZCBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfZGVzdHJveShPcHVzTVNFbmNvZGVyICpzdCkK
IHsKICAgICBvcHVzX2ZyZWUoc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19wcml2YXRlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Ny
Yy9vcHVzX3ByaXZhdGUuaAppbmRleCBhNzMxY2M1NTBlYTQzNzI0ZDUyYmViNjUwYzQ5NzBkYTlh
ZGJkYTAxLi41ZTI0NjNmNTQ2ZmU3ZDg3ZDFmNWU4ODVmNGY2YWQ4MWZmNzFiMGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NyYy9vcHVzX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX3ByaXZhdGUuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIm9wdXMuaCIKICNpbmNsdWRlICJjZWx0LmgiCiAKKyNpbmNsdWRl
IDxzdGRhcmcuaD4gLyogdmFfbGlzdCAqLwogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBvZmZzZXRv
ZiAqLwogCiBzdHJ1Y3QgT3B1c1JlcGFja2V0aXplciB7CkBAIC01MCwxMiArNTEsNTkgQEAgdHlw
ZWRlZiBzdHJ1Y3QgQ2hhbm5lbExheW91dCB7CiAgICB1bnNpZ25lZCBjaGFyIG1hcHBpbmdbMjU2
XTsKIH0gQ2hhbm5lbExheW91dDsKIAordHlwZWRlZiBlbnVtIHsKKyAgTUFQUElOR19UWVBFX05P
TkUsCisgIE1BUFBJTkdfVFlQRV9TVVJST1VORCwKKyAgTUFQUElOR19UWVBFX0FNQklTT05JQ1MK
K30gTWFwcGluZ1R5cGU7CisKK3N0cnVjdCBPcHVzTVNFbmNvZGVyIHsKKyAgIENoYW5uZWxMYXlv
dXQgbGF5b3V0OworICAgaW50IGFyY2g7CisgICBpbnQgbGZlX3N0cmVhbTsKKyAgIGludCBhcHBs
aWNhdGlvbjsKKyAgIGludCB2YXJpYWJsZV9kdXJhdGlvbjsKKyAgIE1hcHBpbmdUeXBlIG1hcHBp
bmdfdHlwZTsKKyAgIG9wdXNfaW50MzIgYml0cmF0ZV9icHM7CisgICAvKiBFbmNvZGVyIHN0YXRl
cyBnbyBoZXJlICovCisgICAvKiB0aGVuIG9wdXNfdmFsMzIgd2luZG93X21lbVtjaGFubmVscyox
MjBdOyAqLworICAgLyogdGhlbiBvcHVzX3ZhbDMyIHByZWVtcGhfbWVtW2NoYW5uZWxzXTsgKi8K
K307CisKK3N0cnVjdCBPcHVzTVNEZWNvZGVyIHsKKyAgIENoYW5uZWxMYXlvdXQgbGF5b3V0Owor
ICAgLyogRGVjb2RlciBzdGF0ZXMgZ28gaGVyZSAqLworfTsKKworaW50IG9wdXNfbXVsdGlzdHJl
YW1fZW5jb2Rlcl9jdGxfdmFfbGlzdChzdHJ1Y3QgT3B1c01TRW5jb2RlciAqc3QsIGludCByZXF1
ZXN0LAorICB2YV9saXN0IGFwKTsKK2ludCBvcHVzX211bHRpc3RyZWFtX2RlY29kZXJfY3RsX3Zh
X2xpc3Qoc3RydWN0IE9wdXNNU0RlY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwKKyAgdmFfbGlzdCBh
cCk7CisKIGludCB2YWxpZGF0ZV9sYXlvdXQoY29uc3QgQ2hhbm5lbExheW91dCAqbGF5b3V0KTsK
IGludCBnZXRfbGVmdF9jaGFubmVsKGNvbnN0IENoYW5uZWxMYXlvdXQgKmxheW91dCwgaW50IHN0
cmVhbV9pZCwgaW50IHByZXYpOwogaW50IGdldF9yaWdodF9jaGFubmVsKGNvbnN0IENoYW5uZWxM
YXlvdXQgKmxheW91dCwgaW50IHN0cmVhbV9pZCwgaW50IHByZXYpOwogaW50IGdldF9tb25vX2No
YW5uZWwoY29uc3QgQ2hhbm5lbExheW91dCAqbGF5b3V0LCBpbnQgc3RyZWFtX2lkLCBpbnQgcHJl
dik7CiAKLQordHlwZWRlZiB2b2lkICgqb3B1c19jb3B5X2NoYW5uZWxfaW5fZnVuYykoCisgIG9w
dXNfdmFsMTYgKmRzdCwKKyAgaW50IGRzdF9zdHJpZGUsCisgIGNvbnN0IHZvaWQgKnNyYywKKyAg
aW50IHNyY19zdHJpZGUsCisgIGludCBzcmNfY2hhbm5lbCwKKyAgaW50IGZyYW1lX3NpemUsCisg
IHZvaWQgKnVzZXJfZGF0YQorKTsKKwordHlwZWRlZiB2b2lkICgqb3B1c19jb3B5X2NoYW5uZWxf
b3V0X2Z1bmMpKAorICB2b2lkICpkc3QsCisgIGludCBkc3Rfc3RyaWRlLAorICBpbnQgZHN0X2No
YW5uZWwsCisgIGNvbnN0IG9wdXNfdmFsMTYgKnNyYywKKyAgaW50IHNyY19zdHJpZGUsCisgIGlu
dCBmcmFtZV9zaXplLAorICB2b2lkICp1c2VyX2RhdGEKKyk7CiAKICNkZWZpbmUgTU9ERV9TSUxL
X09OTFkgICAgICAgICAgMTAwMAogI2RlZmluZSBNT0RFX0hZQlJJRCAgICAgICAgICAgICAxMDAx
CkBAIC04Nyw2ICsxMzUsNyBAQCBpbnQgZ2V0X21vbm9fY2hhbm5lbChjb25zdCBDaGFubmVsTGF5
b3V0ICpsYXlvdXQsIGludCBzdHJlYW1faWQsIGludCBwcmV2KTsKIHR5cGVkZWYgdm9pZCAoKmRv
d25taXhfZnVuYykoY29uc3Qgdm9pZCAqLCBvcHVzX3ZhbDMyICosIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KTsKIHZvaWQgZG93bm1peF9mbG9hdChjb25zdCB2b2lkICpfeCwgb3B1c192YWwzMiAq
c3ViLCBpbnQgc3ViZnJhbWUsIGludCBvZmZzZXQsIGludCBjMSwgaW50IGMyLCBpbnQgQyk7CiB2
b2lkIGRvd25taXhfaW50KGNvbnN0IHZvaWQgKl94LCBvcHVzX3ZhbDMyICpzdWIsIGludCBzdWJm
cmFtZSwgaW50IG9mZnNldCwgaW50IGMxLCBpbnQgYzIsIGludCBDKTsKK2ludCBpc19kaWdpdGFs
X3NpbGVuY2UoY29uc3Qgb3B1c192YWwxNiogcGNtLCBpbnQgZnJhbWVfc2l6ZSwgaW50IGNoYW5u
ZWxzLCBpbnQgbHNiX2RlcHRoKTsKIAogaW50IGVuY29kZV9zaXplKGludCBzaXplLCB1bnNpZ25l
ZCBjaGFyICpkYXRhKTsKIApAQCAtMTIzLDQgKzE3MiwzMCBAQCBvcHVzX2ludDMyIG9wdXNfcmVw
YWNrZXRpemVyX291dF9yYW5nZV9pbXBsKE9wdXNSZXBhY2tldGl6ZXIgKnJwLCBpbnQgYmVnaW4s
IGludAogCiBpbnQgcGFkX2ZyYW1lKHVuc2lnbmVkIGNoYXIgKmRhdGEsIG9wdXNfaW50MzIgbGVu
LCBvcHVzX2ludDMyIG5ld19sZW4pOwogCitpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVfbmF0
aXZlCisoCisgIHN0cnVjdCBPcHVzTVNFbmNvZGVyICpzdCwKKyAgb3B1c19jb3B5X2NoYW5uZWxf
aW5fZnVuYyBjb3B5X2NoYW5uZWxfaW4sCisgIGNvbnN0IHZvaWQgKnBjbSwKKyAgaW50IGFuYWx5
c2lzX2ZyYW1lX3NpemUsCisgIHVuc2lnbmVkIGNoYXIgKmRhdGEsCisgIG9wdXNfaW50MzIgbWF4
X2RhdGFfYnl0ZXMsCisgIGludCBsc2JfZGVwdGgsCisgIGRvd25taXhfZnVuYyBkb3dubWl4LAor
ICBpbnQgZmxvYXRfYXBpLAorICB2b2lkICp1c2VyX2RhdGEKKyk7CisKK2ludCBvcHVzX211bHRp
c3RyZWFtX2RlY29kZV9uYXRpdmUoCisgIHN0cnVjdCBPcHVzTVNEZWNvZGVyICpzdCwKKyAgY29u
c3QgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgb3B1c19pbnQzMiBsZW4sCisgIHZvaWQgKnBjbSwK
KyAgb3B1c19jb3B5X2NoYW5uZWxfb3V0X2Z1bmMgY29weV9jaGFubmVsX291dCwKKyAgaW50IGZy
YW1lX3NpemUsCisgIGludCBkZWNvZGVfZmVjLAorICBpbnQgc29mdF9jbGlwLAorICB2b2lkICp1
c2VyX2RhdGEKKyk7CisKICNlbmRpZiAvKiBPUFVTX1BSSVZBVEVfSCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
cmMvb3B1c19wcm9qZWN0aW9uX2RlY29kZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfcHJvamVjdGlvbl9kZWNvZGVy
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzJlMDdkNWJjZjdhNjgwZDMxODMxZWQzOTVkODg2YzhmZWQ5NjBjNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfcHJvamVjdGlvbl9kZWNvZGVyLmMKQEAgLTAsMCAr
MSwyNTggQEAKKy8qIENvcHlyaWdodCAoYykgMjAxNyBHb29nbGUgSW5jLgorICAgV3JpdHRlbiBi
eSBBbmRyZXcgQWxsZW4gKi8KKy8qCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJl
IG1ldDoKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFTIElTJycgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAg
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICAgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJtYXRob3BzLmgiCisjaW5jbHVk
ZSAib3Nfc3VwcG9ydC5oIgorI2luY2x1ZGUgIm9wdXNfcHJpdmF0ZS5oIgorI2luY2x1ZGUgIm9w
dXNfZGVmaW5lcy5oIgorI2luY2x1ZGUgIm9wdXNfcHJvamVjdGlvbi5oIgorI2luY2x1ZGUgIm9w
dXNfbXVsdGlzdHJlYW0uaCIKKyNpbmNsdWRlICJtYXBwaW5nX21hdHJpeC5oIgorI2luY2x1ZGUg
InN0YWNrX2FsbG9jLmgiCisKK3N0cnVjdCBPcHVzUHJvamVjdGlvbkRlY29kZXIKK3sKKyAgb3B1
c19pbnQzMiBkZW1peGluZ19tYXRyaXhfc2l6ZV9pbl9ieXRlczsKKyAgLyogRW5jb2RlciBzdGF0
ZXMgZ28gaGVyZSAqLworfTsKKworI2lmICFkZWZpbmVkKERJU0FCTEVfRkxPQVRfQVBJKQorc3Rh
dGljIHZvaWQgb3B1c19wcm9qZWN0aW9uX2NvcHlfY2hhbm5lbF9vdXRfZmxvYXQoCisgIHZvaWQg
KmRzdCwKKyAgaW50IGRzdF9zdHJpZGUsCisgIGludCBkc3RfY2hhbm5lbCwKKyAgY29uc3Qgb3B1
c192YWwxNiAqc3JjLAorICBpbnQgc3JjX3N0cmlkZSwKKyAgaW50IGZyYW1lX3NpemUsCisgIHZv
aWQgKnVzZXJfZGF0YSkKK3sKKyAgZmxvYXQgKmZsb2F0X2RzdDsKKyAgY29uc3QgTWFwcGluZ01h
dHJpeCAqbWF0cml4OworICBmbG9hdF9kc3QgPSAoZmxvYXQgKilkc3Q7CisgIG1hdHJpeCA9IChj
b25zdCBNYXBwaW5nTWF0cml4ICopdXNlcl9kYXRhOworCisgIGlmIChkc3RfY2hhbm5lbCA9PSAw
KQorICAgIE9QVVNfQ0xFQVIoZmxvYXRfZHN0LCBmcmFtZV9zaXplICogZHN0X3N0cmlkZSk7CisK
KyAgaWYgKHNyYyAhPSBOVUxMKQorICAgIG1hcHBpbmdfbWF0cml4X211bHRpcGx5X2NoYW5uZWxf
b3V0X2Zsb2F0KG1hdHJpeCwgc3JjLCBkc3RfY2hhbm5lbCwKKyAgICAgIHNyY19zdHJpZGUsIGZs
b2F0X2RzdCwgZHN0X3N0cmlkZSwgZnJhbWVfc2l6ZSk7Cit9CisjZW5kaWYKKworc3RhdGljIHZv
aWQgb3B1c19wcm9qZWN0aW9uX2NvcHlfY2hhbm5lbF9vdXRfc2hvcnQoCisgIHZvaWQgKmRzdCwK
KyAgaW50IGRzdF9zdHJpZGUsCisgIGludCBkc3RfY2hhbm5lbCwKKyAgY29uc3Qgb3B1c192YWwx
NiAqc3JjLAorICBpbnQgc3JjX3N0cmlkZSwKKyAgaW50IGZyYW1lX3NpemUsCisgIHZvaWQgKnVz
ZXJfZGF0YSkKK3sKKyAgb3B1c19pbnQxNiAqc2hvcnRfZHN0OworICBjb25zdCBNYXBwaW5nTWF0
cml4ICptYXRyaXg7CisgIHNob3J0X2RzdCA9IChvcHVzX2ludDE2ICopZHN0OworICBtYXRyaXgg
PSAoY29uc3QgTWFwcGluZ01hdHJpeCAqKXVzZXJfZGF0YTsKKyAgaWYgKGRzdF9jaGFubmVsID09
IDApCisgICAgT1BVU19DTEVBUihzaG9ydF9kc3QsIGZyYW1lX3NpemUgKiBkc3Rfc3RyaWRlKTsK
KworICBpZiAoc3JjICE9IE5VTEwpCisgICAgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5l
bF9vdXRfc2hvcnQobWF0cml4LCBzcmMsIGRzdF9jaGFubmVsLAorICAgICAgc3JjX3N0cmlkZSwg
c2hvcnRfZHN0LCBkc3Rfc3RyaWRlLCBmcmFtZV9zaXplKTsKK30KKworc3RhdGljIE1hcHBpbmdN
YXRyaXggKmdldF9kZWNfZGVtaXhpbmdfbWF0cml4KE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3Qp
Cit7CisgIC8qIHZvaWQqIGNhc3QgYXZvaWRzIGNsYW5nIC1XY2FzdC1hbGlnbiB3YXJuaW5nICov
CisgIHJldHVybiAoTWFwcGluZ01hdHJpeCopKHZvaWQqKSgoY2hhciopc3QgKworICAgIGFsaWdu
KHNpemVvZihPcHVzUHJvamVjdGlvbkRlY29kZXIpKSk7Cit9CisKK3N0YXRpYyBPcHVzTVNEZWNv
ZGVyICpnZXRfbXVsdGlzdHJlYW1fZGVjb2RlcihPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0KQor
eworICAvKiB2b2lkKiBjYXN0IGF2b2lkcyBjbGFuZyAtV2Nhc3QtYWxpZ24gd2FybmluZyAqLwor
ICByZXR1cm4gKE9wdXNNU0RlY29kZXIqKSh2b2lkKikoKGNoYXIqKXN0ICsKKyAgICBhbGlnbihz
aXplb2YoT3B1c1Byb2plY3Rpb25EZWNvZGVyKSArCisgICAgc3QtPmRlbWl4aW5nX21hdHJpeF9z
aXplX2luX2J5dGVzKSk7Cit9CisKK29wdXNfaW50MzIgb3B1c19wcm9qZWN0aW9uX2RlY29kZXJf
Z2V0X3NpemUoaW50IGNoYW5uZWxzLCBpbnQgc3RyZWFtcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdXBsZWRfc3RyZWFtcykKK3sKKyAgb3B1c19p
bnQzMiBtYXRyaXhfc2l6ZTsKKyAgb3B1c19pbnQzMiBkZWNvZGVyX3NpemU7CisKKyAgbWF0cml4
X3NpemUgPQorICAgIG1hcHBpbmdfbWF0cml4X2dldF9zaXplKHN0cmVhbXMgKyBjb3VwbGVkX3N0
cmVhbXMsIGNoYW5uZWxzKTsKKyAgaWYgKCFtYXRyaXhfc2l6ZSkKKyAgICByZXR1cm4gMDsKKwor
ICBkZWNvZGVyX3NpemUgPSBvcHVzX211bHRpc3RyZWFtX2RlY29kZXJfZ2V0X3NpemUoc3RyZWFt
cywgY291cGxlZF9zdHJlYW1zKTsKKyAgaWYgKCFkZWNvZGVyX3NpemUpCisgICAgcmV0dXJuIDA7
CisKKyAgcmV0dXJuIGFsaWduKHNpemVvZihPcHVzUHJvamVjdGlvbkRlY29kZXIpKSArIG1hdHJp
eF9zaXplICsgZGVjb2Rlcl9zaXplOworfQorCitpbnQgb3B1c19wcm9qZWN0aW9uX2RlY29kZXJf
aW5pdChPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0LCBvcHVzX2ludDMyIEZzLAorICBpbnQgY2hh
bm5lbHMsIGludCBzdHJlYW1zLCBpbnQgY291cGxlZF9zdHJlYW1zLAorICB1bnNpZ25lZCBjaGFy
ICpkZW1peGluZ19tYXRyaXgsIG9wdXNfaW50MzIgZGVtaXhpbmdfbWF0cml4X3NpemUpCit7Cisg
IGludCBuYl9pbnB1dF9zdHJlYW1zOworICBvcHVzX2ludDMyIGV4cGVjdGVkX21hdHJpeF9zaXpl
OworICBpbnQgaSwgcmV0OworICB1bnNpZ25lZCBjaGFyIG1hcHBpbmdbMjU1XTsKKyAgVkFSREVD
TChvcHVzX2ludDE2LCBidWYpOworICBBTExPQ19TVEFDSzsKKworICAvKiBWZXJpZnkgc3VwcGxp
ZWQgbWF0cml4IHNpemUuICovCisgIG5iX2lucHV0X3N0cmVhbXMgPSBzdHJlYW1zICsgY291cGxl
ZF9zdHJlYW1zOworICBleHBlY3RlZF9tYXRyaXhfc2l6ZSA9IG5iX2lucHV0X3N0cmVhbXMgKiBj
aGFubmVscyAqIHNpemVvZihvcHVzX2ludDE2KTsKKyAgaWYgKGV4cGVjdGVkX21hdHJpeF9zaXpl
ICE9IGRlbWl4aW5nX21hdHJpeF9zaXplKQorICB7CisgICAgUkVTVE9SRV9TVEFDSzsKKyAgICBy
ZXR1cm4gT1BVU19CQURfQVJHOworICB9CisKKyAgLyogQ29udmVydCBkZW1peGluZyBtYXRyaXgg
aW5wdXQgaW50byBpbnRlcm5hbCBmb3JtYXQuICovCisgIEFMTE9DKGJ1ZiwgbmJfaW5wdXRfc3Ry
ZWFtcyAqIGNoYW5uZWxzLCBvcHVzX2ludDE2KTsKKyAgZm9yIChpID0gMDsgaSA8IG5iX2lucHV0
X3N0cmVhbXMgKiBjaGFubmVsczsgaSsrKQorICB7CisgICAgaW50IHMgPSBkZW1peGluZ19tYXRy
aXhbMippICsgMV0gPDwgOCB8IGRlbWl4aW5nX21hdHJpeFsyKmldOworICAgIHMgPSAoKHMgJiAw
eEZGRkYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKKyAgICBidWZbaV0gPSAob3B1c19pbnQxNilzOwor
ICB9CisKKyAgLyogQXNzaWduIGRlbWl4aW5nIG1hdHJpeC4gKi8KKyAgc3QtPmRlbWl4aW5nX21h
dHJpeF9zaXplX2luX2J5dGVzID0KKyAgICBtYXBwaW5nX21hdHJpeF9nZXRfc2l6ZShjaGFubmVs
cywgbmJfaW5wdXRfc3RyZWFtcyk7CisgIGlmICghc3QtPmRlbWl4aW5nX21hdHJpeF9zaXplX2lu
X2J5dGVzKQorICB7CisgICAgUkVTVE9SRV9TVEFDSzsKKyAgICByZXR1cm4gT1BVU19CQURfQVJH
OworICB9CisKKyAgbWFwcGluZ19tYXRyaXhfaW5pdChnZXRfZGVjX2RlbWl4aW5nX21hdHJpeChz
dCksIGNoYW5uZWxzLCBuYl9pbnB1dF9zdHJlYW1zLCAwLAorICAgIGJ1ZiwgZGVtaXhpbmdfbWF0
cml4X3NpemUpOworCisgIC8qIFNldCB0cml2aWFsIG1hcHBpbmcgc28gZWFjaCBpbnB1dCBjaGFu
bmVsIHBhaXJzIHdpdGggYSBtYXRyaXggY29sdW1uLiAqLworICBmb3IgKGkgPSAwOyBpIDwgY2hh
bm5lbHM7IGkrKykKKyAgICBtYXBwaW5nW2ldID0gaTsKKworICByZXQgPSBvcHVzX211bHRpc3Ry
ZWFtX2RlY29kZXJfaW5pdCgKKyAgICBnZXRfbXVsdGlzdHJlYW1fZGVjb2RlcihzdCksIEZzLCBj
aGFubmVscywgc3RyZWFtcywgY291cGxlZF9zdHJlYW1zLCBtYXBwaW5nKTsKKyAgUkVTVE9SRV9T
VEFDSzsKKyAgcmV0dXJuIHJldDsKK30KKworT3B1c1Byb2plY3Rpb25EZWNvZGVyICpvcHVzX3By
b2plY3Rpb25fZGVjb2Rlcl9jcmVhdGUoCisgIG9wdXNfaW50MzIgRnMsIGludCBjaGFubmVscywg
aW50IHN0cmVhbXMsIGludCBjb3VwbGVkX3N0cmVhbXMsCisgIHVuc2lnbmVkIGNoYXIgKmRlbWl4
aW5nX21hdHJpeCwgb3B1c19pbnQzMiBkZW1peGluZ19tYXRyaXhfc2l6ZSwgaW50ICplcnJvcikK
K3sKKyAgaW50IHNpemU7CisgIGludCByZXQ7CisgIE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3Q7
CisKKyAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBwcm9qZWN0aW9uIGRlY29kZXIuICovCisg
IHNpemUgPSBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9nZXRfc2l6ZShjaGFubmVscywgc3RyZWFt
cywgY291cGxlZF9zdHJlYW1zKTsKKyAgaWYgKCFzaXplKSB7CisgICAgaWYgKGVycm9yKQorICAg
ICAgKmVycm9yID0gT1BVU19BTExPQ19GQUlMOworICAgIHJldHVybiBOVUxMOworICB9CisgIHN0
ID0gKE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqKW9wdXNfYWxsb2Moc2l6ZSk7CisgIGlmICghc3Qp
CisgIHsKKyAgICBpZiAoZXJyb3IpCisgICAgICAqZXJyb3IgPSBPUFVTX0FMTE9DX0ZBSUw7Cisg
ICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvKiBJbml0aWFsaXplIHByb2plY3Rpb24gZGVjb2Rl
ciB3aXRoIHByb3ZpZGVkIHNldHRpbmdzLiAqLworICByZXQgPSBvcHVzX3Byb2plY3Rpb25fZGVj
b2Rlcl9pbml0KHN0LCBGcywgY2hhbm5lbHMsIHN0cmVhbXMsIGNvdXBsZWRfc3RyZWFtcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW1peGluZ19tYXRyaXgsIGRlbWl4
aW5nX21hdHJpeF9zaXplKTsKKyAgaWYgKHJldCAhPSBPUFVTX09LKQorICB7CisgICAgb3B1c19m
cmVlKHN0KTsKKyAgICBzdCA9IE5VTEw7CisgIH0KKyAgaWYgKGVycm9yKQorICAgICplcnJvciA9
IHJldDsKKyAgcmV0dXJuIHN0OworfQorCisjaWZkZWYgRklYRURfUE9JTlQKK2ludCBvcHVzX3By
b2plY3Rpb25fZGVjb2RlKE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QsIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHVzX2ludDMyIGxlbiwg
b3B1c19pbnQxNiAqcGNtLCBpbnQgZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBkZWNvZGVfZmVjKQoreworICByZXR1cm4gb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVf
bmF0aXZlKGdldF9tdWx0aXN0cmVhbV9kZWNvZGVyKHN0KSwgZGF0YSwgbGVuLAorICAgIHBjbSwg
b3B1c19wcm9qZWN0aW9uX2NvcHlfY2hhbm5lbF9vdXRfc2hvcnQsIGZyYW1lX3NpemUsIGRlY29k
ZV9mZWMsIDAsCisgICAgZ2V0X2RlY19kZW1peGluZ19tYXRyaXgoc3QpKTsKK30KKyNlbHNlCitp
bnQgb3B1c19wcm9qZWN0aW9uX2RlY29kZShPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0LCBjb25z
dCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B1c19p
bnQzMiBsZW4sIG9wdXNfaW50MTYgKnBjbSwgaW50IGZyYW1lX3NpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZGVjb2RlX2ZlYykKK3sKKyAgcmV0dXJuIG9wdXNfbXVsdGlzdHJl
YW1fZGVjb2RlX25hdGl2ZShnZXRfbXVsdGlzdHJlYW1fZGVjb2RlcihzdCksIGRhdGEsIGxlbiwK
KyAgICBwY20sIG9wdXNfcHJvamVjdGlvbl9jb3B5X2NoYW5uZWxfb3V0X3Nob3J0LCBmcmFtZV9z
aXplLCBkZWNvZGVfZmVjLCAxLAorICAgIGdldF9kZWNfZGVtaXhpbmdfbWF0cml4KHN0KSk7Cit9
CisjZW5kaWYKKworI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQoraW50IG9wdXNfcHJvamVjdGlv
bl9kZWNvZGVfZmxvYXQoT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdCwgY29uc3QgdW5zaWduZWQg
Y2hhciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdXNfaW50MzIg
bGVuLCBmbG9hdCAqcGNtLCBpbnQgZnJhbWVfc2l6ZSwgaW50IGRlY29kZV9mZWMpCit7CisgIHJl
dHVybiBvcHVzX211bHRpc3RyZWFtX2RlY29kZV9uYXRpdmUoZ2V0X211bHRpc3RyZWFtX2RlY29k
ZXIoc3QpLCBkYXRhLCBsZW4sCisgICAgcGNtLCBvcHVzX3Byb2plY3Rpb25fY29weV9jaGFubmVs
X291dF9mbG9hdCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywgMCwKKyAgICBnZXRfZGVjX2RlbWl4
aW5nX21hdHJpeChzdCkpOworfQorI2VuZGlmCisKK2ludCBvcHVzX3Byb2plY3Rpb25fZGVjb2Rl
cl9jdGwoT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdCwgaW50IHJlcXVlc3QsIC4uLikKK3sKKyAg
dmFfbGlzdCBhcDsKKyAgaW50IHJldCA9IE9QVVNfT0s7CisKKyAgdmFfc3RhcnQoYXAsIHJlcXVl
c3QpOworICByZXQgPSBvcHVzX211bHRpc3RyZWFtX2RlY29kZXJfY3RsX3ZhX2xpc3QoZ2V0X211
bHRpc3RyZWFtX2RlY29kZXIoc3QpLAorICAgIHJlcXVlc3QsIGFwKTsKKyAgdmFfZW5kKGFwKTsK
KyAgcmV0dXJuIHJldDsKK30KKwordm9pZCBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9kZXN0cm95
KE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QpCit7CisgIG9wdXNfZnJlZShzdCk7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc3JjL29wdXNfcHJvamVjdGlvbl9lbmNvZGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX3Byb2plY3Rp
b25fZW5jb2Rlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZmIyZDI1MjZjNmUzMGUxYzdmMWUyMjJjMGZkNDU4
YTMzNGRlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX3Byb2plY3Rpb25fZW5jb2Rlci5j
CkBAIC0wLDAgKzEsNDY4IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTcgR29vZ2xlIEluYy4KKyAg
IFdyaXR0ZW4gYnkgQW5kcmV3IEFsbGVuICovCisvKgorICAgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAgIGFyZSBtZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJ
UycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAg
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09O
RklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAibWF0aG9wcy5o
IgorI2luY2x1ZGUgIm9zX3N1cHBvcnQuaCIKKyNpbmNsdWRlICJvcHVzX3ByaXZhdGUuaCIKKyNp
bmNsdWRlICJvcHVzX2RlZmluZXMuaCIKKyNpbmNsdWRlICJvcHVzX3Byb2plY3Rpb24uaCIKKyNp
bmNsdWRlICJvcHVzX211bHRpc3RyZWFtLmgiCisjaW5jbHVkZSAic3RhY2tfYWxsb2MuaCIKKyNp
bmNsdWRlICJtYXBwaW5nX21hdHJpeC5oIgorCitzdHJ1Y3QgT3B1c1Byb2plY3Rpb25FbmNvZGVy
Cit7CisgIG9wdXNfaW50MzIgbWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzOworICBvcHVzX2lu
dDMyIGRlbWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzOworICAvKiBFbmNvZGVyIHN0YXRlcyBn
byBoZXJlICovCit9OworCisjaWYgIWRlZmluZWQoRElTQUJMRV9GTE9BVF9BUEkpCitzdGF0aWMg
dm9pZCBvcHVzX3Byb2plY3Rpb25fY29weV9jaGFubmVsX2luX2Zsb2F0KAorICBvcHVzX3ZhbDE2
ICpkc3QsCisgIGludCBkc3Rfc3RyaWRlLAorICBjb25zdCB2b2lkICpzcmMsCisgIGludCBzcmNf
c3RyaWRlLAorICBpbnQgc3JjX2NoYW5uZWwsCisgIGludCBmcmFtZV9zaXplLAorICB2b2lkICp1
c2VyX2RhdGEKKykKK3sKKyAgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5lbF9pbl9mbG9h
dCgoY29uc3QgTWFwcGluZ01hdHJpeCopdXNlcl9kYXRhLAorICAgIChjb25zdCBmbG9hdCopc3Jj
LCBzcmNfc3RyaWRlLCBkc3QsIHNyY19jaGFubmVsLCBkc3Rfc3RyaWRlLCBmcmFtZV9zaXplKTsK
K30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBvcHVzX3Byb2plY3Rpb25fY29weV9jaGFubmVsX2lu
X3Nob3J0KAorICBvcHVzX3ZhbDE2ICpkc3QsCisgIGludCBkc3Rfc3RyaWRlLAorICBjb25zdCB2
b2lkICpzcmMsCisgIGludCBzcmNfc3RyaWRlLAorICBpbnQgc3JjX2NoYW5uZWwsCisgIGludCBm
cmFtZV9zaXplLAorICB2b2lkICp1c2VyX2RhdGEKKykKK3sKKyAgbWFwcGluZ19tYXRyaXhfbXVs
dGlwbHlfY2hhbm5lbF9pbl9zaG9ydCgoY29uc3QgTWFwcGluZ01hdHJpeCopdXNlcl9kYXRhLAor
ICAgIChjb25zdCBvcHVzX2ludDE2KilzcmMsIHNyY19zdHJpZGUsIGRzdCwgc3JjX2NoYW5uZWws
IGRzdF9zdHJpZGUsIGZyYW1lX3NpemUpOworfQorCitzdGF0aWMgaW50IGdldF9vcmRlcl9wbHVz
X29uZV9mcm9tX2NoYW5uZWxzKGludCBjaGFubmVscywgaW50ICpvcmRlcl9wbHVzX29uZSkKK3sK
KyAgaW50IG9yZGVyX3BsdXNfb25lXzsKKyAgaW50IGFjbl9jaGFubmVsczsKKyAgaW50IG5vbmRp
ZWdldGljX2NoYW5uZWxzOworCisgIC8qIEFsbG93ZWQgbnVtYmVycyBvZiBjaGFubmVsczoKKyAg
ICogKDEgKyBuKV4yICsgMmosIGZvciBuID0gMC4uLjE0IGFuZCBqID0gMCBvciAxLgorICAgKi8K
KyAgaWYgKGNoYW5uZWxzIDwgMSB8fCBjaGFubmVscyA+IDIyNykKKyAgICByZXR1cm4gT1BVU19C
QURfQVJHOworCisgIG9yZGVyX3BsdXNfb25lXyA9IGlzcXJ0MzIoY2hhbm5lbHMpOworICBhY25f
Y2hhbm5lbHMgPSBvcmRlcl9wbHVzX29uZV8gKiBvcmRlcl9wbHVzX29uZV87CisgIG5vbmRpZWdl
dGljX2NoYW5uZWxzID0gY2hhbm5lbHMgLSBhY25fY2hhbm5lbHM7CisgIGlmIChub25kaWVnZXRp
Y19jaGFubmVscyAhPSAwICYmIG5vbmRpZWdldGljX2NoYW5uZWxzICE9IDIpCisgICAgcmV0dXJu
IE9QVVNfQkFEX0FSRzsKKworICBpZiAob3JkZXJfcGx1c19vbmUpCisgICAgKm9yZGVyX3BsdXNf
b25lID0gb3JkZXJfcGx1c19vbmVfOworICByZXR1cm4gT1BVU19PSzsKK30KKworc3RhdGljIGlu
dCBnZXRfc3RyZWFtc19mcm9tX2NoYW5uZWxzKGludCBjaGFubmVscywgaW50IG1hcHBpbmdfZmFt
aWx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3RyZWFtcywg
aW50ICpjb3VwbGVkX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICpvcmRlcl9wbHVzX29uZSkKK3sKKyAgaWYgKG1hcHBpbmdfZmFtaWx5ID09IDMpCisg
IHsKKyAgICBpZiAoZ2V0X29yZGVyX3BsdXNfb25lX2Zyb21fY2hhbm5lbHMoY2hhbm5lbHMsIG9y
ZGVyX3BsdXNfb25lKSAhPSBPUFVTX09LKQorICAgICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKKyAg
ICBpZiAoc3RyZWFtcykKKyAgICAgICpzdHJlYW1zID0gKGNoYW5uZWxzICsgMSkgLyAyOworICAg
IGlmIChjb3VwbGVkX3N0cmVhbXMpCisgICAgICAqY291cGxlZF9zdHJlYW1zID0gY2hhbm5lbHMg
LyAyOworICAgIHJldHVybiBPUFVTX09LOworICB9CisgIHJldHVybiBPUFVTX0JBRF9BUkc7Cit9
CisKK3N0YXRpYyBNYXBwaW5nTWF0cml4ICpnZXRfbWl4aW5nX21hdHJpeChPcHVzUHJvamVjdGlv
bkVuY29kZXIgKnN0KQoreworICAvKiB2b2lkKiBjYXN0IGF2b2lkcyBjbGFuZyAtV2Nhc3QtYWxp
Z24gd2FybmluZyAqLworICByZXR1cm4gKE1hcHBpbmdNYXRyaXggKikodm9pZCopKChjaGFyKilz
dCArCisgICAgYWxpZ24oc2l6ZW9mKE9wdXNQcm9qZWN0aW9uRW5jb2RlcikpKTsKK30KKworc3Rh
dGljIE1hcHBpbmdNYXRyaXggKmdldF9lbmNfZGVtaXhpbmdfbWF0cml4KE9wdXNQcm9qZWN0aW9u
RW5jb2RlciAqc3QpCit7CisgIC8qIHZvaWQqIGNhc3QgYXZvaWRzIGNsYW5nIC1XY2FzdC1hbGln
biB3YXJuaW5nICovCisgIHJldHVybiAoTWFwcGluZ01hdHJpeCAqKSh2b2lkKikoKGNoYXIqKXN0
ICsKKyAgICBhbGlnbihzaXplb2YoT3B1c1Byb2plY3Rpb25FbmNvZGVyKSArCisgICAgc3QtPm1p
eGluZ19tYXRyaXhfc2l6ZV9pbl9ieXRlcykpOworfQorCitzdGF0aWMgT3B1c01TRW5jb2RlciAq
Z2V0X211bHRpc3RyZWFtX2VuY29kZXIoT3B1c1Byb2plY3Rpb25FbmNvZGVyICpzdCkKK3sKKyAg
Lyogdm9pZCogY2FzdCBhdm9pZHMgY2xhbmcgLVdjYXN0LWFsaWduIHdhcm5pbmcgKi8KKyAgcmV0
dXJuIChPcHVzTVNFbmNvZGVyICopKHZvaWQqKSgoY2hhciopc3QgKworICAgIGFsaWduKHNpemVv
ZihPcHVzUHJvamVjdGlvbkVuY29kZXIpICsKKyAgICBzdC0+bWl4aW5nX21hdHJpeF9zaXplX2lu
X2J5dGVzICsKKyAgICBzdC0+ZGVtaXhpbmdfbWF0cml4X3NpemVfaW5fYnl0ZXMpKTsKK30KKwor
b3B1c19pbnQzMiBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2dldF9zaXplKGlu
dCBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWFwcGluZ19mYW1pbHkpCit7CisgIGludCBuYl9zdHJlYW1zOworICBp
bnQgbmJfY291cGxlZF9zdHJlYW1zOworICBpbnQgb3JkZXJfcGx1c19vbmU7CisgIGludCBtaXhp
bmdfbWF0cml4X3Jvd3MsIG1peGluZ19tYXRyaXhfY29sczsKKyAgaW50IGRlbWl4aW5nX21hdHJp
eF9yb3dzLCBkZW1peGluZ19tYXRyaXhfY29sczsKKyAgb3B1c19pbnQzMiBtaXhpbmdfbWF0cml4
X3NpemUsIGRlbWl4aW5nX21hdHJpeF9zaXplOworICBvcHVzX2ludDMyIGVuY29kZXJfc2l6ZTsK
KyAgaW50IHJldDsKKworICByZXQgPSBnZXRfc3RyZWFtc19mcm9tX2NoYW5uZWxzKGNoYW5uZWxz
LCBtYXBwaW5nX2ZhbWlseSwgJm5iX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm5iX2NvdXBsZWRfc3RyZWFtcywgJm9yZGVyX3BsdXNfb25lKTsKKyAgaWYgKHJl
dCAhPSBPUFVTX09LKQorICAgIHJldHVybiAwOworCisgIGlmIChvcmRlcl9wbHVzX29uZSA9PSAy
KQorICB7CisgICAgbWl4aW5nX21hdHJpeF9yb3dzID0gbWFwcGluZ19tYXRyaXhfZm9hX21peGlu
Zy5yb3dzOworICAgIG1peGluZ19tYXRyaXhfY29scyA9IG1hcHBpbmdfbWF0cml4X2ZvYV9taXhp
bmcuY29sczsKKyAgICBkZW1peGluZ19tYXRyaXhfcm93cyA9IG1hcHBpbmdfbWF0cml4X2ZvYV9k
ZW1peGluZy5yb3dzOworICAgIGRlbWl4aW5nX21hdHJpeF9jb2xzID0gbWFwcGluZ19tYXRyaXhf
Zm9hX2RlbWl4aW5nLmNvbHM7CisgIH0KKyAgZWxzZSBpZiAob3JkZXJfcGx1c19vbmUgPT0gMykK
KyAgeworICAgIG1peGluZ19tYXRyaXhfcm93cyA9IG1hcHBpbmdfbWF0cml4X3NvYV9taXhpbmcu
cm93czsKKyAgICBtaXhpbmdfbWF0cml4X2NvbHMgPSBtYXBwaW5nX21hdHJpeF9zb2FfbWl4aW5n
LmNvbHM7CisgICAgZGVtaXhpbmdfbWF0cml4X3Jvd3MgPSBtYXBwaW5nX21hdHJpeF9zb2FfZGVt
aXhpbmcucm93czsKKyAgICBkZW1peGluZ19tYXRyaXhfY29scyA9IG1hcHBpbmdfbWF0cml4X3Nv
YV9kZW1peGluZy5jb2xzOworICB9CisgIGVsc2UgaWYgKG9yZGVyX3BsdXNfb25lID09IDQpCisg
IHsKKyAgICBtaXhpbmdfbWF0cml4X3Jvd3MgPSBtYXBwaW5nX21hdHJpeF90b2FfbWl4aW5nLnJv
d3M7CisgICAgbWl4aW5nX21hdHJpeF9jb2xzID0gbWFwcGluZ19tYXRyaXhfdG9hX21peGluZy5j
b2xzOworICAgIGRlbWl4aW5nX21hdHJpeF9yb3dzID0gbWFwcGluZ19tYXRyaXhfdG9hX2RlbWl4
aW5nLnJvd3M7CisgICAgZGVtaXhpbmdfbWF0cml4X2NvbHMgPSBtYXBwaW5nX21hdHJpeF90b2Ff
ZGVtaXhpbmcuY29sczsKKyAgfQorICBlbHNlCisgICAgcmV0dXJuIDA7CisKKyAgbWl4aW5nX21h
dHJpeF9zaXplID0KKyAgICBtYXBwaW5nX21hdHJpeF9nZXRfc2l6ZShtaXhpbmdfbWF0cml4X3Jv
d3MsIG1peGluZ19tYXRyaXhfY29scyk7CisgIGlmICghbWl4aW5nX21hdHJpeF9zaXplKQorICAg
IHJldHVybiAwOworCisgIGRlbWl4aW5nX21hdHJpeF9zaXplID0KKyAgICBtYXBwaW5nX21hdHJp
eF9nZXRfc2l6ZShkZW1peGluZ19tYXRyaXhfcm93cywgZGVtaXhpbmdfbWF0cml4X2NvbHMpOwor
ICBpZiAoIWRlbWl4aW5nX21hdHJpeF9zaXplKQorICAgIHJldHVybiAwOworCisgIGVuY29kZXJf
c2l6ZSA9CisgICAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfZ2V0X3NpemUobmJfc3RyZWFt
cywgbmJfY291cGxlZF9zdHJlYW1zKTsKKyAgaWYgKCFlbmNvZGVyX3NpemUpCisgICAgcmV0dXJu
IDA7CisKKyAgcmV0dXJuIGFsaWduKHNpemVvZihPcHVzUHJvamVjdGlvbkVuY29kZXIpKSArCisg
ICAgbWl4aW5nX21hdHJpeF9zaXplICsgZGVtaXhpbmdfbWF0cml4X3NpemUgKyBlbmNvZGVyX3Np
emU7Cit9CisKK2ludCBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2luaXQoT3B1
c1Byb2plY3Rpb25FbmNvZGVyICpzdCwgb3B1c19pbnQzMiBGcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxzLCBpbnQgbWFwcGluZ19mYW1p
bHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3Ry
ZWFtcywgaW50ICpjb3VwbGVkX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBhcHBsaWNhdGlvbikKK3sKKyAgTWFwcGluZ01hdHJpeCAqbWl4
aW5nX21hdHJpeDsKKyAgTWFwcGluZ01hdHJpeCAqZGVtaXhpbmdfbWF0cml4OworICBPcHVzTVNF
bmNvZGVyICptc19lbmNvZGVyOworICBpbnQgaTsKKyAgaW50IHJldDsKKyAgaW50IG9yZGVyX3Bs
dXNfb25lOworICB1bnNpZ25lZCBjaGFyIG1hcHBpbmdbMjU1XTsKKworICBpZiAoc3RyZWFtcyA9
PSBOVUxMIHx8IGNvdXBsZWRfc3RyZWFtcyA9PSBOVUxMKSB7CisgICAgcmV0dXJuIE9QVVNfQkFE
X0FSRzsKKyAgfQorCisgIGlmIChnZXRfc3RyZWFtc19mcm9tX2NoYW5uZWxzKGNoYW5uZWxzLCBt
YXBwaW5nX2ZhbWlseSwgc3RyZWFtcywKKyAgICBjb3VwbGVkX3N0cmVhbXMsICZvcmRlcl9wbHVz
X29uZSkgIT0gT1BVU19PSykKKyAgICByZXR1cm4gT1BVU19CQURfQVJHOworCisgIGlmIChtYXBw
aW5nX2ZhbWlseSA9PSAzKQorICB7CisgICAgLyogQXNzaWduIG1peGluZyBtYXRyaXggYmFzZWQg
b24gYXZhaWxhYmxlIHByZS1jb21wdXRlZCBtYXRyaWNlcy4gKi8KKyAgICBtaXhpbmdfbWF0cml4
ID0gZ2V0X21peGluZ19tYXRyaXgoc3QpOworICAgIGlmIChvcmRlcl9wbHVzX29uZSA9PSAyKQor
ICAgIHsKKyAgICAgIG1hcHBpbmdfbWF0cml4X2luaXQobWl4aW5nX21hdHJpeCwgbWFwcGluZ19t
YXRyaXhfZm9hX21peGluZy5yb3dzLAorICAgICAgICBtYXBwaW5nX21hdHJpeF9mb2FfbWl4aW5n
LmNvbHMsIG1hcHBpbmdfbWF0cml4X2ZvYV9taXhpbmcuZ2FpbiwKKyAgICAgICAgbWFwcGluZ19t
YXRyaXhfZm9hX21peGluZ19kYXRhLAorICAgICAgICBzaXplb2YobWFwcGluZ19tYXRyaXhfZm9h
X21peGluZ19kYXRhKSk7CisgICAgfQorICAgIGVsc2UgaWYgKG9yZGVyX3BsdXNfb25lID09IDMp
CisgICAgeworICAgICAgbWFwcGluZ19tYXRyaXhfaW5pdChtaXhpbmdfbWF0cml4LCBtYXBwaW5n
X21hdHJpeF9zb2FfbWl4aW5nLnJvd3MsCisgICAgICAgIG1hcHBpbmdfbWF0cml4X3NvYV9taXhp
bmcuY29scywgbWFwcGluZ19tYXRyaXhfc29hX21peGluZy5nYWluLAorICAgICAgICBtYXBwaW5n
X21hdHJpeF9zb2FfbWl4aW5nX2RhdGEsCisgICAgICAgIHNpemVvZihtYXBwaW5nX21hdHJpeF9z
b2FfbWl4aW5nX2RhdGEpKTsKKyAgICB9CisgICAgZWxzZSBpZiAob3JkZXJfcGx1c19vbmUgPT0g
NCkKKyAgICB7CisgICAgICBtYXBwaW5nX21hdHJpeF9pbml0KG1peGluZ19tYXRyaXgsIG1hcHBp
bmdfbWF0cml4X3RvYV9taXhpbmcucm93cywKKyAgICAgICAgbWFwcGluZ19tYXRyaXhfdG9hX21p
eGluZy5jb2xzLCBtYXBwaW5nX21hdHJpeF90b2FfbWl4aW5nLmdhaW4sCisgICAgICAgIG1hcHBp
bmdfbWF0cml4X3RvYV9taXhpbmdfZGF0YSwKKyAgICAgICAgc2l6ZW9mKG1hcHBpbmdfbWF0cml4
X3RvYV9taXhpbmdfZGF0YSkpOworICAgIH0KKyAgICBlbHNlCisgICAgICByZXR1cm4gT1BVU19C
QURfQVJHOworCisgICAgc3QtPm1peGluZ19tYXRyaXhfc2l6ZV9pbl9ieXRlcyA9IG1hcHBpbmdf
bWF0cml4X2dldF9zaXplKAorICAgICAgbWl4aW5nX21hdHJpeC0+cm93cywgbWl4aW5nX21hdHJp
eC0+Y29scyk7CisgICAgaWYgKCFzdC0+bWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzKQorICAg
ICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKKworICAgIC8qIEFzc2lnbiBkZW1peGluZyBtYXRyaXgg
YmFzZWQgb24gYXZhaWxhYmxlIHByZS1jb21wdXRlZCBtYXRyaWNlcy4gKi8KKyAgICBkZW1peGlu
Z19tYXRyaXggPSBnZXRfZW5jX2RlbWl4aW5nX21hdHJpeChzdCk7CisgICAgaWYgKG9yZGVyX3Bs
dXNfb25lID09IDIpCisgICAgeworICAgICAgbWFwcGluZ19tYXRyaXhfaW5pdChkZW1peGluZ19t
YXRyaXgsIG1hcHBpbmdfbWF0cml4X2ZvYV9kZW1peGluZy5yb3dzLAorICAgICAgICBtYXBwaW5n
X21hdHJpeF9mb2FfZGVtaXhpbmcuY29scywgbWFwcGluZ19tYXRyaXhfZm9hX2RlbWl4aW5nLmdh
aW4sCisgICAgICAgIG1hcHBpbmdfbWF0cml4X2ZvYV9kZW1peGluZ19kYXRhLAorICAgICAgICBz
aXplb2YobWFwcGluZ19tYXRyaXhfZm9hX2RlbWl4aW5nX2RhdGEpKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAob3JkZXJfcGx1c19vbmUgPT0gMykKKyAgICB7CisgICAgICBtYXBwaW5nX21hdHJpeF9p
bml0KGRlbWl4aW5nX21hdHJpeCwgbWFwcGluZ19tYXRyaXhfc29hX2RlbWl4aW5nLnJvd3MsCisg
ICAgICAgIG1hcHBpbmdfbWF0cml4X3NvYV9kZW1peGluZy5jb2xzLCBtYXBwaW5nX21hdHJpeF9z
b2FfZGVtaXhpbmcuZ2FpbiwKKyAgICAgICAgbWFwcGluZ19tYXRyaXhfc29hX2RlbWl4aW5nX2Rh
dGEsCisgICAgICAgIHNpemVvZihtYXBwaW5nX21hdHJpeF9zb2FfZGVtaXhpbmdfZGF0YSkpOwor
ICAgIH0KKyAgICBlbHNlIGlmIChvcmRlcl9wbHVzX29uZSA9PSA0KQorICAgIHsKKyAgICAgIG1h
cHBpbmdfbWF0cml4X2luaXQoZGVtaXhpbmdfbWF0cml4LCBtYXBwaW5nX21hdHJpeF90b2FfZGVt
aXhpbmcucm93cywKKyAgICAgICAgbWFwcGluZ19tYXRyaXhfdG9hX2RlbWl4aW5nLmNvbHMsIG1h
cHBpbmdfbWF0cml4X3RvYV9kZW1peGluZy5nYWluLAorICAgICAgICBtYXBwaW5nX21hdHJpeF90
b2FfZGVtaXhpbmdfZGF0YSwKKyAgICAgICAgc2l6ZW9mKG1hcHBpbmdfbWF0cml4X3RvYV9kZW1p
eGluZ19kYXRhKSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHJldHVybiBPUFVTX0JBRF9BUkc7
CisKKyAgICBzdC0+ZGVtaXhpbmdfbWF0cml4X3NpemVfaW5fYnl0ZXMgPSBtYXBwaW5nX21hdHJp
eF9nZXRfc2l6ZSgKKyAgICAgIGRlbWl4aW5nX21hdHJpeC0+cm93cywgZGVtaXhpbmdfbWF0cml4
LT5jb2xzKTsKKyAgICBpZiAoIXN0LT5kZW1peGluZ19tYXRyaXhfc2l6ZV9pbl9ieXRlcykKKyAg
ICAgIHJldHVybiBPUFVTX0JBRF9BUkc7CisgIH0KKyAgZWxzZQorICAgIHJldHVybiBPUFVTX1VO
SU1QTEVNRU5URUQ7CisKKyAgLyogRW5zdXJlIG1hdHJpY2VzIGFyZSBsYXJnZSBlbm91Z2ggZm9y
IGRlc2lyZWQgY29kaW5nIHNjaGVtZS4gKi8KKyAgaWYgKCpzdHJlYW1zICsgKmNvdXBsZWRfc3Ry
ZWFtcyA+IG1peGluZ19tYXRyaXgtPnJvd3MgfHwKKyAgICAgIGNoYW5uZWxzID4gbWl4aW5nX21h
dHJpeC0+Y29scyB8fAorICAgICAgY2hhbm5lbHMgPiBkZW1peGluZ19tYXRyaXgtPnJvd3MgfHwK
KyAgICAgICpzdHJlYW1zICsgKmNvdXBsZWRfc3RyZWFtcyA+IGRlbWl4aW5nX21hdHJpeC0+Y29s
cykKKyAgICByZXR1cm4gT1BVU19CQURfQVJHOworCisgIC8qIFNldCB0cml2aWFsIG1hcHBpbmcg
c28gZWFjaCBpbnB1dCBjaGFubmVsIHBhaXJzIHdpdGggYSBtYXRyaXggY29sdW1uLiAqLworICBm
b3IgKGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykKKyAgICBtYXBwaW5nW2ldID0gaTsKKworICAv
KiBJbml0aWFsaXplIG11bHRpc3RyZWFtIGVuY29kZXIgd2l0aCBwcm92aWRlZCBzZXR0aW5ncy4g
Ki8KKyAgbXNfZW5jb2RlciA9IGdldF9tdWx0aXN0cmVhbV9lbmNvZGVyKHN0KTsKKyAgcmV0ID0g
b3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2luaXQobXNfZW5jb2RlciwgRnMsIGNoYW5uZWxzLCAq
c3RyZWFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvdXBsZWRf
c3RyZWFtcywgbWFwcGluZywgYXBwbGljYXRpb24pOworICByZXR1cm4gcmV0OworfQorCitPcHVz
UHJvamVjdGlvbkVuY29kZXIgKm9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfY3Jl
YXRlKAorICAgIG9wdXNfaW50MzIgRnMsIGludCBjaGFubmVscywgaW50IG1hcHBpbmdfZmFtaWx5
LCBpbnQgKnN0cmVhbXMsCisgICAgaW50ICpjb3VwbGVkX3N0cmVhbXMsIGludCBhcHBsaWNhdGlv
biwgaW50ICplcnJvcikKK3sKKyAgaW50IHNpemU7CisgIGludCByZXQ7CisgIE9wdXNQcm9qZWN0
aW9uRW5jb2RlciAqc3Q7CisKKyAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBwcm9qZWN0aW9u
IGVuY29kZXIuICovCisgIHNpemUgPSBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVy
X2dldF9zaXplKGNoYW5uZWxzLCBtYXBwaW5nX2ZhbWlseSk7CisgIGlmICghc2l6ZSkgeworICAg
IGlmIChlcnJvcikKKyAgICAgICplcnJvciA9IE9QVVNfQUxMT0NfRkFJTDsKKyAgICByZXR1cm4g
TlVMTDsKKyAgfQorICBzdCA9IChPcHVzUHJvamVjdGlvbkVuY29kZXIgKilvcHVzX2FsbG9jKHNp
emUpOworICBpZiAoIXN0KQorICB7CisgICAgaWYgKGVycm9yKQorICAgICAgKmVycm9yID0gT1BV
U19BTExPQ19GQUlMOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLyogSW5pdGlhbGl6ZSBw
cm9qZWN0aW9uIGVuY29kZXIgd2l0aCBwcm92aWRlZCBzZXR0aW5ncy4gKi8KKyAgcmV0ID0gb3B1
c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9pbml0KHN0LCBGcywgY2hhbm5lbHMsCisg
ICAgIG1hcHBpbmdfZmFtaWx5LCBzdHJlYW1zLCBjb3VwbGVkX3N0cmVhbXMsIGFwcGxpY2F0aW9u
KTsKKyAgaWYgKHJldCAhPSBPUFVTX09LKQorICB7CisgICAgb3B1c19mcmVlKHN0KTsKKyAgICBz
dCA9IE5VTEw7CisgIH0KKyAgaWYgKGVycm9yKQorICAgICplcnJvciA9IHJldDsKKyAgcmV0dXJu
IHN0OworfQorCitpbnQgb3B1c19wcm9qZWN0aW9uX2VuY29kZShPcHVzUHJvamVjdGlvbkVuY29k
ZXIgKnN0LCBjb25zdCBvcHVzX2ludDE2ICpwY20sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZnJhbWVfc2l6ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdXNfaW50MzIgbWF4X2RhdGFfYnl0ZXMpCit7CisgIHJldHVybiBvcHVzX211
bHRpc3RyZWFtX2VuY29kZV9uYXRpdmUoZ2V0X211bHRpc3RyZWFtX2VuY29kZXIoc3QpLAorICAg
IG9wdXNfcHJvamVjdGlvbl9jb3B5X2NoYW5uZWxfaW5fc2hvcnQsIHBjbSwgZnJhbWVfc2l6ZSwg
ZGF0YSwKKyAgICBtYXhfZGF0YV9ieXRlcywgMTYsIGRvd25taXhfaW50LCAwLCBnZXRfbWl4aW5n
X21hdHJpeChzdCkpOworfQorCisjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCisjaWZkZWYgRklY
RURfUE9JTlQKK2ludCBvcHVzX3Byb2plY3Rpb25fZW5jb2RlX2Zsb2F0KE9wdXNQcm9qZWN0aW9u
RW5jb2RlciAqc3QsIGNvbnN0IGZsb2F0ICpwY20sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgZnJhbWVfc2l6ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdXNfaW50MzIgbWF4X2RhdGFfYnl0ZXMpCit7CisgIHJl
dHVybiBvcHVzX211bHRpc3RyZWFtX2VuY29kZV9uYXRpdmUoZ2V0X211bHRpc3RyZWFtX2VuY29k
ZXIoc3QpLAorICAgIG9wdXNfcHJvamVjdGlvbl9jb3B5X2NoYW5uZWxfaW5fZmxvYXQsIHBjbSwg
ZnJhbWVfc2l6ZSwgZGF0YSwKKyAgICBtYXhfZGF0YV9ieXRlcywgMTYsIGRvd25taXhfZmxvYXQs
IDEsIGdldF9taXhpbmdfbWF0cml4KHN0KSk7Cit9CisjZWxzZQoraW50IG9wdXNfcHJvamVjdGlv
bl9lbmNvZGVfZmxvYXQoT3B1c1Byb2plY3Rpb25FbmNvZGVyICpzdCwgY29uc3QgZmxvYXQgKnBj
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZV9zaXplLCB1bnNp
Z25lZCBjaGFyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B1c19p
bnQzMiBtYXhfZGF0YV9ieXRlcykKK3sKKyAgcmV0dXJuIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rl
X25hdGl2ZShnZXRfbXVsdGlzdHJlYW1fZW5jb2RlcihzdCksCisgICAgb3B1c19wcm9qZWN0aW9u
X2NvcHlfY2hhbm5lbF9pbl9mbG9hdCwgcGNtLCBmcmFtZV9zaXplLCBkYXRhLAorICAgIG1heF9k
YXRhX2J5dGVzLCAyNCwgZG93bm1peF9mbG9hdCwgMSwgZ2V0X21peGluZ19tYXRyaXgoc3QpKTsK
K30KKyNlbmRpZgorI2VuZGlmCisKK3ZvaWQgb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfZGVzdHJv
eShPcHVzUHJvamVjdGlvbkVuY29kZXIgKnN0KQoreworICBvcHVzX2ZyZWUoc3QpOworfQorCitp
bnQgb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfY3RsKE9wdXNQcm9qZWN0aW9uRW5jb2RlciAqc3Qs
IGludCByZXF1ZXN0LCAuLi4pCit7CisgIHZhX2xpc3QgYXA7CisgIE1hcHBpbmdNYXRyaXggKmRl
bWl4aW5nX21hdHJpeDsKKyAgT3B1c01TRW5jb2RlciAqbXNfZW5jb2RlcjsKKyAgaW50IHJldCA9
IE9QVVNfT0s7CisKKyAgbXNfZW5jb2RlciA9IGdldF9tdWx0aXN0cmVhbV9lbmNvZGVyKHN0KTsK
KyAgZGVtaXhpbmdfbWF0cml4ID0gZ2V0X2VuY19kZW1peGluZ19tYXRyaXgoc3QpOworCisgIHZh
X3N0YXJ0KGFwLCByZXF1ZXN0KTsKKyAgc3dpdGNoKHJlcXVlc3QpCisgIHsKKyAgY2FzZSBPUFVT
X1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9TSVpFX1JFUVVFU1Q6CisgIHsKKyAgICBv
cHVzX2ludDMyICp2YWx1ZSA9IHZhX2FyZyhhcCwgb3B1c19pbnQzMiopOworICAgIGlmICghdmFs
dWUpCisgICAgeworICAgICAgZ290byBiYWRfYXJnOworICAgIH0KKyAgICAqdmFsdWUgPQorICAg
ICAgbXNfZW5jb2Rlci0+bGF5b3V0Lm5iX2NoYW5uZWxzICogKG1zX2VuY29kZXItPmxheW91dC5u
Yl9zdHJlYW1zCisgICAgICArIG1zX2VuY29kZXItPmxheW91dC5uYl9jb3VwbGVkX3N0cmVhbXMp
ICogc2l6ZW9mKG9wdXNfaW50MTYpOworICB9CisgIGJyZWFrOworICBjYXNlIE9QVVNfUFJPSkVD
VElPTl9HRVRfREVNSVhJTkdfTUFUUklYX0dBSU5fUkVRVUVTVDoKKyAgeworICAgIG9wdXNfaW50
MzIgKnZhbHVlID0gdmFfYXJnKGFwLCBvcHVzX2ludDMyKik7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICB7CisgICAgICBnb3RvIGJhZF9hcmc7CisgICAgfQorICAgICp2YWx1ZSA9IGRlbWl4aW5nX21h
dHJpeC0+Z2FpbjsKKyAgfQorICBicmVhazsKKyAgY2FzZSBPUFVTX1BST0pFQ1RJT05fR0VUX0RF
TUlYSU5HX01BVFJJWF9SRVFVRVNUOgorICB7CisgICAgaW50IGksIGosIGssIGw7CisgICAgaW50
IG5iX2lucHV0X3N0cmVhbXM7CisgICAgaW50IG5iX291dHB1dF9zdHJlYW1zOworICAgIHVuc2ln
bmVkIGNoYXIgKmV4dGVybmFsX2NoYXI7CisgICAgb3B1c19pbnQxNiAqaW50ZXJuYWxfc2hvcnQ7
CisgICAgb3B1c19pbnQzMiBleHRlcm5hbF9zaXplOworICAgIG9wdXNfaW50MzIgaW50ZXJuYWxf
c2l6ZTsKKworICAgIC8qIChJL08gaXMgaW4gcmVsYXRpb24gdG8gdGhlIGRlY29kZXIncyBwZXJz
cGVjdGl2ZSkuICovCisgICAgbmJfaW5wdXRfc3RyZWFtcyA9IG1zX2VuY29kZXItPmxheW91dC5u
Yl9zdHJlYW1zICsKKyAgICAgIG1zX2VuY29kZXItPmxheW91dC5uYl9jb3VwbGVkX3N0cmVhbXM7
CisgICAgbmJfb3V0cHV0X3N0cmVhbXMgPSBtc19lbmNvZGVyLT5sYXlvdXQubmJfY2hhbm5lbHM7
CisKKyAgICBleHRlcm5hbF9jaGFyID0gdmFfYXJnKGFwLCB1bnNpZ25lZCBjaGFyICopOworICAg
IGV4dGVybmFsX3NpemUgPSB2YV9hcmcoYXAsIG9wdXNfaW50MzIpOworICAgIGlmICghZXh0ZXJu
YWxfY2hhcikKKyAgICB7CisgICAgICBnb3RvIGJhZF9hcmc7CisgICAgfQorICAgIGludGVybmFs
X3Nob3J0ID0gbWFwcGluZ19tYXRyaXhfZ2V0X2RhdGEoZGVtaXhpbmdfbWF0cml4KTsKKyAgICBp
bnRlcm5hbF9zaXplID0gbmJfaW5wdXRfc3RyZWFtcyAqIG5iX291dHB1dF9zdHJlYW1zICogc2l6
ZW9mKG9wdXNfaW50MTYpOworICAgIGlmIChleHRlcm5hbF9zaXplICE9IGludGVybmFsX3NpemUp
CisgICAgeworICAgICAgZ290byBiYWRfYXJnOworICAgIH0KKworICAgIC8qIENvcHkgZGVtaXhp
bmcgbWF0cml4IHN1YnNldCB0byBvdXRwdXQgZGVzdGluYXRpb24uICovCisgICAgbCA9IDA7Cisg
ICAgZm9yIChpID0gMDsgaSA8IG5iX2lucHV0X3N0cmVhbXM7IGkrKykgeworICAgICAgZm9yIChq
ID0gMDsgaiA8IG5iX291dHB1dF9zdHJlYW1zOyBqKyspIHsKKyAgICAgICAgayA9IGRlbWl4aW5n
X21hdHJpeC0+cm93cyAqIGkgKyBqOworICAgICAgICBleHRlcm5hbF9jaGFyWzIqbF0gPSAodW5z
aWduZWQgY2hhcilpbnRlcm5hbF9zaG9ydFtrXTsKKyAgICAgICAgZXh0ZXJuYWxfY2hhclsyKmwr
MV0gPSAodW5zaWduZWQgY2hhcikoaW50ZXJuYWxfc2hvcnRba10gPj4gOCk7CisgICAgICAgIGwr
KzsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgYnJlYWs7CisgIGRlZmF1bHQ6CisgIHsKKyAgICBy
ZXQgPSBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsX3ZhX2xpc3QobXNfZW5jb2RlciwgcmVx
dWVzdCwgYXApOworICB9CisgIGJyZWFrOworICB9CisgIHZhX2VuZChhcCk7CisgIHJldHVybiBy
ZXQ7CisKK2JhZF9hcmc6CisgIHZhX2VuZChhcCk7CisgIHJldHVybiBPUFVTX0JBRF9BUkc7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc3JjL3JlcGFja2V0aXplci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvcmVwYWNrZXRpemVyLmMKaW5k
ZXggYzgwZWU3ZjAwMTQ4NjEyNjFiMjc2NTVhOGM2ZDVhYTkxOGI0ZmJmNy4uYmRhNDRhMTQ4YWI3
OTE2OGNkMTRjN2NhMzI0MDY5M2Y4YWI0N2ExYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvcmVwYWNrZXRpemVy
LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zcmMvcmVwYWNrZXRpemVyLmMKQEAgLTIxMyw3ICsyMTMsOCBAQCBvcHVzX2ludDMy
IG9wdXNfcmVwYWNrZXRpemVyX291dF9yYW5nZV9pbXBsKE9wdXNSZXBhY2tldGl6ZXIgKnJwLCBp
bnQgYmVnaW4sIGludAogICAgewogICAgICAgLyogVXNpbmcgT1BVU19NT1ZFKCkgaW5zdGVhZCBv
ZiBPUFVTX0NPUFkoKSBpbiBjYXNlIHdlJ3JlIGRvaW5nIGluLXBsYWNlCiAgICAgICAgICBwYWRk
aW5nIGZyb20gb3B1c19wYWNrZXRfcGFkIG9yIG9wdXNfcGFja2V0X3VucGFkKCkuICovCi0gICAg
ICBjZWx0X2Fzc2VydChmcmFtZXNbaV0gKyBsZW5baV0gPD0gZGF0YSB8fCBwdHIgPD0gZnJhbWVz
W2ldKTsKKyAgICAgIC8qIGFzc2VydCBkaXNhYmxlZCBiZWNhdXNlIGl0J3Mgbm90IHZhbGlkIGlu
IEMuICovCisgICAgICAvKiBjZWx0X2Fzc2VydChmcmFtZXNbaV0gKyBsZW5baV0gPD0gZGF0YSB8
fCBwdHIgPD0gZnJhbWVzW2ldKTsgKi8KICAgICAgIE9QVVNfTU9WRShwdHIsIGZyYW1lc1tpXSwg
bGVuW2ldKTsKICAgICAgIHB0ciArPSBsZW5baV07CiAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Rlc3RzL3Rl
c3Rfb3B1c19hcGkuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvdGVzdHMvdGVzdF9vcHVzX2FwaS5jCmluZGV4IDFkMDA5NTA1OGY4MGEx
MjEzYjAxNTU2MTk4NGMzYmNjN2NmOGU1NDIuLmZiMzg1YzYzMDQ0ZGU2MWQzMjFhM2Q0MjA1NmZm
ZjdjOTFlODhjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdGVzdHMvdGVzdF9vcHVzX2FwaS5jCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdGVzdHMv
dGVzdF9vcHVzX2FwaS5jCkBAIC03OCw2ICs3OCw5IEBAIHZvaWQgKm1hbGxvY19ob29rKF9fYXR0
cmlidXRlX18oKHVudXNlZCkpIHNpemVfdCBzaXplLAogfQogI2VuZGlmCiAKK29wdXNfaW50MzIg
Km51bGxfaW50X3B0ciA9IChvcHVzX2ludDMyICopTlVMTDsKK29wdXNfdWludDMyICpudWxsX3Vp
bnRfcHRyID0gKG9wdXNfdWludDMyICopTlVMTDsKKwogc3RhdGljIGNvbnN0IG9wdXNfaW50MzIg
b3B1c19yYXRlc1s1XSA9IHs0ODAwMCwyNDAwMCwxNjAwMCwxMjAwMCw4MDAwfTsKIAogb3B1c19p
bnQzMiB0ZXN0X2RlY19hcGkodm9pZCkKQEAgLTkyLDggKzk1LDYgQEAgb3B1c19pbnQzMiB0ZXN0
X2RlY19hcGkodm9pZCkKICNlbmRpZgogICAgc2hvcnQgc2J1Zls5NjAqMl07CiAgICBpbnQgYyxl
cnI7Ci0gICBvcHVzX2ludDMyICpudWxsdmFsdWU7Ci0gICBudWxsdmFsdWU9MDsKIAogICAgY2Zn
cz0wOwogICAgLypGaXJzdCB0ZXN0IGludmFsaWQgY29uZmlndXJhdGlvbnMgd2hpY2ggc2hvdWxk
IGZhaWwqLwpAQCAtMTQ3LDcgKzE0OCw3IEBAIG9wdXNfaW50MzIgdGVzdF9kZWNfYXBpKHZvaWQp
CiAgICBmcHJpbnRmKHN0ZG91dCwiICAgIG9wdXNfZGVjb2Rlcl9jcmVhdGUoKSAuLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4gT0suXG4iKTsKICAgIGZwcmludGYoc3Rkb3V0LCIgICAgb3B1c19kZWNv
ZGVyX2luaXQoKSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpOwogCi0gICBlcnI9
b3B1c19kZWNvZGVyX2N0bChkZWMsIE9QVVNfR0VUX0ZJTkFMX1JBTkdFKChvcHVzX3VpbnQzMiAq
KU5VTEwpKTsKKyAgIGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfRklOQUxfUkFO
R0UobnVsbF91aW50X3B0cikpOwogICAgaWYoZXJyICE9IE9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxl
ZCgpOwogICAgVkdfVU5ERUYoJmRlY19maW5hbF9yYW5nZSxzaXplb2YoZGVjX2ZpbmFsX3Jhbmdl
KSk7CiAgICBlcnI9b3B1c19kZWNvZGVyX2N0bChkZWMsIE9QVVNfR0VUX0ZJTkFMX1JBTkdFKCZk
ZWNfZmluYWxfcmFuZ2UpKTsKQEAgLTE2MSw3ICsxNjIsNyBAQCBvcHVzX2ludDMyIHRlc3RfZGVj
X2FwaSh2b2lkKQogICAgZnByaW50ZihzdGRvdXQsIiAgICBPUFVTX1VOSU1QTEVNRU5URUQgLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIik7CiAgICBjZmdzKys7CiAKLSAgIGVycj1v
cHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfQkFORFdJRFRIKChvcHVzX2ludDMyICopTlVM
TCkpOworICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9CQU5EV0lEVEgobnVs
bF9pbnRfcHRyKSk7CiAgICBpZihlcnIgIT0gT1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAg
ICBWR19VTkRFRigmaSxzaXplb2YoaSkpOwogICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBP
UFVTX0dFVF9CQU5EV0lEVEgoJmkpKTsKQEAgLTE2OSw3ICsxNzAsNyBAQCBvcHVzX2ludDMyIHRl
c3RfZGVjX2FwaSh2b2lkKQogICAgZnByaW50ZihzdGRvdXQsIiAgICBPUFVTX0dFVF9CQU5EV0lE
VEggLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIik7CiAgICBjZmdzKys7CiAKLSAg
IGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfU0FNUExFX1JBVEUoKG9wdXNfaW50
MzIgKilOVUxMKSk7CisgICBlcnI9b3B1c19kZWNvZGVyX2N0bChkZWMsIE9QVVNfR0VUX1NBTVBM
RV9SQVRFKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyICE9IE9QVVNfQkFEX0FSRyl0ZXN0X2Zh
aWxlZCgpOwogICAgVkdfVU5ERUYoJmksc2l6ZW9mKGkpKTsKICAgIGVycj1vcHVzX2RlY29kZXJf
Y3RsKGRlYywgT1BVU19HRVRfU0FNUExFX1JBVEUoJmkpKTsKQEAgLTE3OCw3ICsxNzksNyBAQCBv
cHVzX2ludDMyIHRlc3RfZGVjX2FwaSh2b2lkKQogICAgY2ZncysrOwogCiAgICAvKkdFVF9QSVRD
SCBoYXMgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocyBkZXBlbmRpbmcgb24gdGhlIHByZXZpb3Vz
bHkgZGVjb2RlZCBmcmFtZS4qLwotICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dF
VF9QSVRDSChudWxsdmFsdWUpKTsKKyAgIGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19H
RVRfUElUQ0gobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFEX0FSRyl0ZXN0X2Zh
aWxlZCgpOwogICAgY2ZncysrOwogICAgVkdfVU5ERUYoJmksc2l6ZW9mKGkpKTsKQEAgLTIwMiw3
ICsyMDMsNyBAQCBvcHVzX2ludDMyIHRlc3RfZGVjX2FwaSh2b2lkKQogICAgY2ZncysrOwogICAg
ZnByaW50ZihzdGRvdXQsIiAgICBPUFVTX0dFVF9QSVRDSCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uIE9LLlxuIik7CiAKLSAgIGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19H
RVRfTEFTVF9QQUNLRVRfRFVSQVRJT04oKG9wdXNfaW50MzIgKilOVUxMKSk7CisgICBlcnI9b3B1
c19kZWNvZGVyX2N0bChkZWMsIE9QVVNfR0VUX0xBU1RfUEFDS0VUX0RVUkFUSU9OKG51bGxfaW50
X3B0cikpOwogICAgaWYoZXJyICE9IE9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAgVkdf
VU5ERUYoJmksc2l6ZW9mKGkpKTsKICAgIGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19H
RVRfTEFTVF9QQUNLRVRfRFVSQVRJT04oJmkpKTsKQEAgLTIxNSw3ICsyMTYsNyBAQCBvcHVzX2lu
dDMyIHRlc3RfZGVjX2FwaSh2b2lkKQogICAgVkdfQ0hFQ0soJmksc2l6ZW9mKGkpKTsKICAgIGlm
KGVyciAhPSBPUFVTX09LIHx8IGkhPTApdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKLSAgIGVy
cj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfR0FJTihudWxsdmFsdWUpKTsKKyAgIGVy
cj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfR0FJTihudWxsX2ludF9wdHIpKTsKICAg
IGlmKGVyciAhPSBPUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIGVy
cj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19TRVRfR0FJTigtMzI3NjkpKTsKQEAgLTM1Miwx
MSArMzUzLDYgQEAgb3B1c19pbnQzMiB0ZXN0X21zZGVjX2FwaSh2b2lkKQogI2VuZGlmCiAgICBz
aG9ydCBzYnVmWzk2MCoyXTsKICAgIGludCBhLGIsYyxlcnI7Ci0jaWYgMAotICAgLypSZWxldmFu
dCB0ZXN0IG5vdCBlbmFibGVkIGZvciBtdWx0aXN0cmVhbSovCi0gICBpbnQgKm51bGx2YWx1ZTsK
LSAgIG51bGx2YWx1ZT0wOwotI2VuZGlmCiAKICAgIG1hcHBpbmdbMF09MDsKICAgIG1hcHBpbmdb
MV09MTsKQEAgLTYxMCw3ICs2MDYsNyBAQCBvcHVzX2ludDMyIHRlc3RfbXNkZWNfYXBpKHZvaWQp
CiAjaWYgMAogICAgLypDdXJyZW50bHkgdW5pbXBsZW1lbnRlZCBmb3IgbXVsdGlzdHJlYW0qLwog
ICAgLypHRVRfUElUQ0ggaGFzIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMgZGVwZW5kaW5nIG9u
IHRoZSBwcmV2aW91c2x5IGRlY29kZWQgZnJhbWUuKi8KLSAgIGVycj1vcHVzX211bHRpc3RyZWFt
X2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfUElUQ0gobnVsbHZhbHVlKSk7CisgICBlcnI9b3B1
c19tdWx0aXN0cmVhbV9kZWNvZGVyX2N0bChkZWMsIE9QVVNfR0VUX1BJVENIKG51bGxfaW50X3B0
cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsK
ICAgIFZHX1VOREVGKCZpLHNpemVvZihpKSk7CkBAIC02NTcsNiArNjUzLDggQEAgb3B1c19pbnQz
MiB0ZXN0X21zZGVjX2FwaSh2b2lkKQogICAgcGFja2V0WzFdPXBhY2tldFsyXT0wOwogICAgaWYo
b3B1c19tdWx0aXN0cmVhbV9kZWNvZGUoZGVjLCBwYWNrZXQsIC0xLCBzYnVmLCA5NjAsIDApIT1P
UFVTX0JBRF9BUkcpe3ByaW50ZigiJWRcbiIsb3B1c19tdWx0aXN0cmVhbV9kZWNvZGUoZGVjLCBw
YWNrZXQsIC0xLCBzYnVmLCA5NjAsIDApKTt0ZXN0X2ZhaWxlZCgpO30KICAgIGNmZ3MrKzsKKyAg
IGlmKG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlKGRlYywgcGFja2V0LCAzLCBzYnVmLCAtOTYwLCAw
KSE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CisgICBjZmdzKys7CiAgICBpZihvcHVzX211
bHRpc3RyZWFtX2RlY29kZShkZWMsIHBhY2tldCwgMywgc2J1ZiwgNjAsIDApIT1PUFVTX0JVRkZF
Ul9UT09fU01BTEwpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIGlmKG9wdXNfbXVsdGlz
dHJlYW1fZGVjb2RlKGRlYywgcGFja2V0LCAzLCBzYnVmLCA0ODAsIDApIT1PUFVTX0JVRkZFUl9U
T09fU01BTEwpdGVzdF9mYWlsZWQoKTsKQEAgLTExNjYsNyArMTE2NCw3IEBAIG9wdXNfaW50MzIg
dGVzdF9lbmNfYXBpKHZvaWQpCiAgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRf
TE9PS0FIRUFEKCZpKSk7CiAgICBpZihlcnIhPU9QVVNfT0sgfHwgaTwwIHx8IGk+MzI3NjYpdGVz
dF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVT
X0dFVF9MT09LQUhFQUQoKG9wdXNfaW50MzIgKilOVUxMKSk7CisgICBlcnI9b3B1c19lbmNvZGVy
X2N0bChlbmMsT1BVU19HRVRfTE9PS0FIRUFEKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1P
UFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIGZwcmludGYoc3Rkb3V0
LCIgICAgT1BVU19HRVRfTE9PS0FIRUFEIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5c
biIpOwpAQCAtMTE3NCw3ICsxMTcyLDcgQEAgb3B1c19pbnQzMiB0ZXN0X2VuY19hcGkodm9pZCkK
ICAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9TQU1QTEVfUkFURSgmaSkpOwog
ICAgaWYoZXJyIT1PUFVTX09LIHx8IGkhPTQ4MDAwKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7
Ci0gICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfU0FNUExFX1JBVEUoKG9wdXNf
aW50MzIgKilOVUxMKSk7CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfU0FN
UExFX1JBVEUobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFEX0FSRyl0ZXN0X2Zh
aWxlZCgpOwogICAgY2ZncysrOwogICAgZnByaW50ZihzdGRvdXQsIiAgICBPUFVTX0dFVF9TQU1Q
TEVfUkFURSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIik7CkBAIC0xMTgzLDcgKzEx
ODEsNyBAQCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAgZnByaW50ZihzdGRvdXQs
IiAgICBPUFVTX1VOSU1QTEVNRU5URUQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxu
Iik7CiAgICBjZmdzKys7CiAKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9B
UFBMSUNBVElPTigob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29kZXJfY3Rs
KGVuYyxPUFVTX0dFVF9BUFBMSUNBVElPTihudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BV
U19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQoT1BV
U19TRVRfQVBQTElDQVRJT04oaSksT1BVU19HRVRfQVBQTElDQVRJT04oJmkpLC0xLE9QVVNfQVVU
TywKQEAgLTExOTEsNyArMTE4OSw3IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAg
ICAgICIgICAgT1BVU19TRVRfQVBQTElDQVRJT04gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBP
Sy5cbiIsCiAgICAgICIgICAgT1BVU19HRVRfQVBQTElDQVRJT04gLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLiBPSy5cbiIpCiAKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9C
SVRSQVRFKChvcHVzX2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5j
LE9QVVNfR0VUX0JJVFJBVEUobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFEX0FS
Ryl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwogICAgaWYob3B1c19lbmNvZGVyX2N0bChlbmMs
T1BVU19TRVRfQklUUkFURSgxMDczNzQxODMyKSkhPU9QVVNfT0spdGVzdF9mYWlsZWQoKTsKQEAg
LTEyMDUsNyArMTIwMyw3IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIg
ICAgT1BVU19TRVRfQklUUkFURSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIs
CiAgICAgICIgICAgT1BVU19HRVRfQklUUkFURSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LiBPSy5cbiIpCiAKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9GT1JDRV9D
SEFOTkVMUygob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVu
YyxPUFVTX0dFVF9GT1JDRV9DSEFOTkVMUyhudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BV
U19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQoT1BV
U19TRVRfRk9SQ0VfQ0hBTk5FTFMoaSksT1BVU19HRVRfRk9SQ0VfQ0hBTk5FTFMoJmkpLC0xLDMs
CkBAIC0xMjQzLDcgKzEyNDEsNyBAQCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAg
Y2ZncysrOwogICAgaWYob3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19TRVRfQkFORFdJRFRIKE9Q
VVNfQVVUTykpIT1PUFVTX09LKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7Ci0gICBlcnI9b3B1
c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfQkFORFdJRFRIKChvcHVzX2ludDMyICopTlVMTCkp
OworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0JBTkRXSURUSChudWxsX2lu
dF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdz
Kys7CiAgICBmcHJpbnRmKHN0ZG91dCwiICAgIE9QVVNfR0VUX0JBTkRXSURUSCAuLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKTsKQEAgLTEyNzYsMTIgKzEyNzQsMTIgQEAgb3B1c19p
bnQzMiB0ZXN0X2VuY19hcGkodm9pZCkKICAgICAgIGkhPU9QVVNfQkFORFdJRFRIX01FRElVTUJB
TkQmJmkhPU9QVVNfQkFORFdJRFRIX1dJREVCQU5EJiYKICAgICAgIGkhPU9QVVNfQkFORFdJRFRI
X0ZVTExCQU5EKSl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwotICAgZXJyPW9wdXNfZW5jb2Rl
cl9jdGwoZW5jLE9QVVNfR0VUX01BWF9CQU5EV0lEVEgoKG9wdXNfaW50MzIgKilOVUxMKSk7Cisg
ICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfTUFYX0JBTkRXSURUSChudWxsX2lu
dF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdz
Kys7CiAgICBmcHJpbnRmKHN0ZG91dCwiICAgIE9QVVNfR0VUX01BWF9CQU5EV0lEVEggLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKTsKIAotICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5j
LE9QVVNfR0VUX0RUWCgob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29kZXJf
Y3RsKGVuYyxPUFVTX0dFVF9EVFgobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFE
X0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwogICAgQ0hFQ0tfU0VUR0VUKE9QVVNfU0VU
X0RUWChpKSxPUFVTX0dFVF9EVFgoJmkpLC0xLDIsCkBAIC0xMjg5LDcgKzEyODcsNyBAQCBvcHVz
X2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAgICAiICAgIE9QVVNfU0VUX0RUWCAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNfR0VUX0RU
WCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKQogCi0gICBlcnI9b3B1
c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfQ09NUExFWElUWSgob3B1c19pbnQzMiAqKU5VTEwp
KTsKKyAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9DT01QTEVYSVRZKG51bGxf
aW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNm
Z3MrKzsKICAgIENIRUNLX1NFVEdFVChPUFVTX1NFVF9DT01QTEVYSVRZKGkpLE9QVVNfR0VUX0NP
TVBMRVhJVFkoJmkpLC0xLDExLApAQCAtMTI5Nyw3ICsxMjk1LDcgQEAgb3B1c19pbnQzMiB0ZXN0
X2VuY19hcGkodm9pZCkKICAgICAgIiAgICBPUFVTX1NFVF9DT01QTEVYSVRZIC4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uIE9LLlxuIiwKICAgICAgIiAgICBPUFVTX0dFVF9DT01QTEVYSVRZIC4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIikKIAotICAgZXJyPW9wdXNfZW5jb2Rlcl9j
dGwoZW5jLE9QVVNfR0VUX0lOQkFORF9GRUMoKG9wdXNfaW50MzIgKilOVUxMKSk7CisgICBlcnI9
b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfSU5CQU5EX0ZFQyhudWxsX2ludF9wdHIpKTsK
ICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBD
SEVDS19TRVRHRVQoT1BVU19TRVRfSU5CQU5EX0ZFQyhpKSxPUFVTX0dFVF9JTkJBTkRfRkVDKCZp
KSwtMSwyLApAQCAtMTMwNSw3ICsxMzAzLDcgQEAgb3B1c19pbnQzMiB0ZXN0X2VuY19hcGkodm9p
ZCkKICAgICAgIiAgICBPUFVTX1NFVF9JTkJBTkRfRkVDIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uIE9LLlxuIiwKICAgICAgIiAgICBPUFVTX0dFVF9JTkJBTkRfRkVDIC4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uIE9LLlxuIikKIAotICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNf
R0VUX1BBQ0tFVF9MT1NTX1BFUkMoKG9wdXNfaW50MzIgKilOVUxMKSk7CisgICBlcnI9b3B1c19l
bmNvZGVyX2N0bChlbmMsT1BVU19HRVRfUEFDS0VUX0xPU1NfUEVSQyhudWxsX2ludF9wdHIpKTsK
ICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBD
SEVDS19TRVRHRVQoT1BVU19TRVRfUEFDS0VUX0xPU1NfUEVSQyhpKSxPUFVTX0dFVF9QQUNLRVRf
TE9TU19QRVJDKCZpKSwtMSwxMDEsCkBAIC0xMzEzLDcgKzEzMTEsNyBAQCBvcHVzX2ludDMyIHRl
c3RfZW5jX2FwaSh2b2lkKQogICAgICAiICAgIE9QVVNfU0VUX1BBQ0tFVF9MT1NTX1BFUkMgLi4u
Li4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNfR0VUX1BBQ0tFVF9MT1NT
X1BFUkMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKQogCi0gICBlcnI9b3B1c19lbmNvZGVy
X2N0bChlbmMsT1BVU19HRVRfVkJSKChvcHVzX2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNf
ZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1ZCUihudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9
T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQo
T1BVU19TRVRfVkJSKGkpLE9QVVNfR0VUX1ZCUigmaSksLTEsMiwKQEAgLTEzMjEsNyArMTMxOSw3
IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIgICAgT1BVU19TRVRfVkJS
IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIgICAgT1BV
U19HRVRfVkJSIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpCiAKLS8q
ICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1ZPSUNFX1JBVElPKChvcHVzX2lu
dDMyICopTlVMTCkpOworLyogICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfVk9J
Q0VfUkFUSU8obnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFEX0FSRyl0ZXN0X2Zh
aWxlZCgpOwogICAgY2ZncysrOwogICAgQ0hFQ0tfU0VUR0VUKE9QVVNfU0VUX1ZPSUNFX1JBVElP
KGkpLE9QVVNfR0VUX1ZPSUNFX1JBVElPKCZpKSwtMiwxMDEsCkBAIC0xMzI5LDcgKzEzMjcsNyBA
QCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAgICAiICAgIE9QVVNfU0VUX1ZPSUNF
X1JBVElPIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNf
R0VUX1ZPSUNFX1JBVElPIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKSovCiAKLSAg
IGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9WQlJfQ09OU1RSQUlOVCgob3B1c19p
bnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9WQlJf
Q09OU1RSQUlOVChudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3Rf
ZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQoT1BVU19TRVRfVkJSX0NPTlNU
UkFJTlQoaSksT1BVU19HRVRfVkJSX0NPTlNUUkFJTlQoJmkpLC0xLDIsCkBAIC0xMzM3LDcgKzEz
MzUsNyBAQCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAgICAiICAgIE9QVVNfU0VU
X1ZCUl9DT05TVFJBSU5UIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAg
IE9QVVNfR0VUX1ZCUl9DT05TVFJBSU5UIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKQog
Ci0gICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfU0lHTkFMKChvcHVzX2ludDMy
ICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1NJR05BTChu
dWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAg
ICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQoT1BVU19TRVRfU0lHTkFMKGkpLE9QVVNfR0VUX1NJ
R05BTCgmaSksLTEyMzQ1LDB4N0ZGRkZGRkYsCkBAIC0xMzQ1LDcgKzEzNDMsNyBAQCBvcHVzX2lu
dDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAgICAiICAgIE9QVVNfU0VUX1NJR05BTCAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNfR0VUX1NJR05B
TCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKQogCi0gICBlcnI9b3B1c19l
bmNvZGVyX2N0bChlbmMsT1BVU19HRVRfTFNCX0RFUFRIKChvcHVzX2ludDMyICopTlVMTCkpOwor
ICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0xTQl9ERVBUSChudWxsX2ludF9w
dHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7
CiAgICBDSEVDS19TRVRHRVQoT1BVU19TRVRfTFNCX0RFUFRIKGkpLE9QVVNfR0VUX0xTQl9ERVBU
SCgmaSksNywyNSwxNiwyNCwKQEAgLTEzNTUsMTQgKzEzNTMsMTQgQEAgb3B1c19pbnQzMiB0ZXN0
X2VuY19hcGkodm9pZCkKICAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9QUkVE
SUNUSU9OX0RJU0FCTEVEKCZpKSk7CiAgICBpZihpIT0wKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdz
Kys7Ci0gICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfUFJFRElDVElPTl9ESVNB
QkxFRCgob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxP
UFVTX0dFVF9QUkVESUNUSU9OX0RJU0FCTEVEKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1P
UFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIENIRUNLX1NFVEdFVChP
UFVTX1NFVF9QUkVESUNUSU9OX0RJU0FCTEVEKGkpLE9QVVNfR0VUX1BSRURJQ1RJT05fRElTQUJM
RUQoJmkpLC0xLDIsMSwwLAogICAgICAiICAgIE9QVVNfU0VUX1BSRURJQ1RJT05fRElTQUJMRUQg
Li4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNfR0VUX1BSRURJQ1RJT05f
RElTQUJMRUQgLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKQogCi0gICBlcnI9b3B1c19lbmNvZGVy
X2N0bChlbmMsT1BVU19HRVRfRVhQRVJUX0ZSQU1FX0RVUkFUSU9OKChvcHVzX2ludDMyICopTlVM
TCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0VYUEVSVF9GUkFNRV9E
VVJBVElPTihudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFp
bGVkKCk7CiAgICBjZmdzKys7CiAgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19TRVRf
RVhQRVJUX0ZSQU1FX0RVUkFUSU9OKE9QVVNfRlJBTUVTSVpFXzJfNV9NUykpOwpAQCAtMTM5OSw3
ICsxMzk3LDcgQEAgb3B1c19pbnQzMiB0ZXN0X2VuY19hcGkodm9pZCkKIAogICAgLypPUFVTX1NF
VF9GT1JDRV9NT0RFIGlzIG5vdCB0ZXN0ZWQgaGVyZSBiZWNhdXNlIGl0J3Mgbm90IGEgcHVibGlj
IEFQSSwgaG93ZXZlciB0aGUgZW5jb2RlciB0ZXN0cyB1c2UgaXQqLwogCi0gICBlcnI9b3B1c19l
bmNvZGVyX2N0bChlbmMsT1BVU19HRVRfRklOQUxfUkFOR0UoKG9wdXNfdWludDMyICopTlVMTCkp
OworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0ZJTkFMX1JBTkdFKG51bGxf
dWludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBj
ZmdzKys7CiAgICBpZihvcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9GSU5BTF9SQU5HRSgm
ZW5jX2ZpbmFsX3JhbmdlKSkhPU9QVVNfT0spdGVzdF9mYWlsZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdGVz
dHMvdGVzdF9vcHVzX2VuY29kZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfZW5jb2RlLmMKaW5kZXggZGFl
NDljM2Q1MzUxYmQ1NTZjMDNkNzRlZDhhZTY5YzIxOTUyMDYyYS4uMDA3OTVhMWUyOWYxZDk2Y2Uw
ZDFhMjAyYjBhMjg1MDU3M2Y3YWJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfZW5jb2Rl
LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfZW5jb2RlLmMKQEAgLTE0MCw3ICsxNDAsNyBAQCBpbnQg
Z2V0X2ZyYW1lX3NpemVfZW51bShpbnQgZnJhbWVfc2l6ZSwgaW50IHNhbXBsaW5nX3JhdGUpCiAg
ICByZXR1cm4gZnJhbWVfc2l6ZV9lbnVtOwogfQogCi12b2lkIHRlc3RfZW5jb2RlKE9wdXNFbmNv
ZGVyICplbmMsIGludCBjaGFubmVscywgaW50IGZyYW1lX3NpemUsIE9wdXNEZWNvZGVyICpkZWMs
IGNvbnN0IGNoYXIqIGRlYnVnX2luZm8pCitpbnQgdGVzdF9lbmNvZGUoT3B1c0VuY29kZXIgKmVu
YywgaW50IGNoYW5uZWxzLCBpbnQgZnJhbWVfc2l6ZSwgT3B1c0RlY29kZXIgKmRlYykKIHsKICAg
IGludCBzYW1wX2NvdW50ID0gMDsKICAgIG9wdXNfaW50MTYgKmluYnVmOwpAQCAtMTQ4LDYgKzE0
OCw3IEBAIHZvaWQgdGVzdF9lbmNvZGUoT3B1c0VuY29kZXIgKmVuYywgaW50IGNoYW5uZWxzLCBp
bnQgZnJhbWVfc2l6ZSwgT3B1c0RlY29kZXIgKmRlCiAgICBpbnQgbGVuOwogICAgb3B1c19pbnQx
NiAqb3V0YnVmOwogICAgaW50IG91dF9zYW1wbGVzOworICAgaW50IHJldCA9IDA7CiAKICAgIC8q
IEdlbmVyYXRlIGlucHV0IGRhdGEgKi8KICAgIGluYnVmID0gKG9wdXNfaW50MTYqKW1hbGxvYyhz
aXplb2YoKmluYnVmKSpTU0FNUExFUyk7CkBAIC0xNjAsMTYgKzE2MSwxNiBAQCB2b2lkIHRlc3Rf
ZW5jb2RlKE9wdXNFbmNvZGVyICplbmMsIGludCBjaGFubmVscywgaW50IGZyYW1lX3NpemUsIE9w
dXNEZWNvZGVyICpkZQogICAgZG8gewogICAgICAgbGVuID0gb3B1c19lbmNvZGUoZW5jLCAmaW5i
dWZbc2FtcF9jb3VudCpjaGFubmVsc10sIGZyYW1lX3NpemUsIHBhY2tldCwgTUFYX1BBQ0tFVCk7
CiAgICAgICBpZihsZW48MCB8fCBsZW4+TUFYX1BBQ0tFVCkgewotICAgICAgICAgZnByaW50Zihz
dGRlcnIsIiVzXG4iLGRlYnVnX2luZm8pOwogICAgICAgICAgZnByaW50ZihzdGRlcnIsIm9wdXNf
ZW5jb2RlKCkgcmV0dXJuZWQgJWRcbiIsbGVuKTsKLSAgICAgICAgIHRlc3RfZmFpbGVkKCk7Cisg
ICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgIGJyZWFrOwogICAgICAgfQogCiAgICAgICBvdXRf
c2FtcGxlcyA9IG9wdXNfZGVjb2RlKGRlYywgcGFja2V0LCBsZW4sIG91dGJ1ZiwgTUFYX0ZSQU1F
X1NBTVAsIDApOwogICAgICAgaWYob3V0X3NhbXBsZXMhPWZyYW1lX3NpemUpIHsKLSAgICAgICAg
IGZwcmludGYoc3RkZXJyLCIlc1xuIixkZWJ1Z19pbmZvKTsKICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCJvcHVzX2RlY29kZSgpIHJldHVybmVkICVkXG4iLG91dF9zYW1wbGVzKTsKLSAgICAgICAg
IHRlc3RfZmFpbGVkKCk7CisgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgIGJyZWFrOwogICAg
ICAgfQogCiAgICAgICBzYW1wX2NvdW50ICs9IGZyYW1lX3NpemU7CkBAIC0xNzgsNiArMTc5LDcg
QEAgdm9pZCB0ZXN0X2VuY29kZShPcHVzRW5jb2RlciAqZW5jLCBpbnQgY2hhbm5lbHMsIGludCBm
cmFtZV9zaXplLCBPcHVzRGVjb2RlciAqZGUKICAgIC8qIENsZWFuIHVwICovCiAgICBmcmVlKGlu
YnVmKTsKICAgIGZyZWUob3V0YnVmKTsKKyAgIHJldHVybiByZXQ7CiB9CiAKIHZvaWQgZnV6el9l
bmNvZGVyX3NldHRpbmdzKGNvbnN0IGludCBudW1fZW5jb2RlcnMsIGNvbnN0IGludCBudW1fc2V0
dGluZ19jaGFuZ2VzKQpAQCAtMjA1LDcgKzIwNyw2IEBAIHZvaWQgZnV6el9lbmNvZGVyX3NldHRp
bmdzKGNvbnN0IGludCBudW1fZW5jb2RlcnMsIGNvbnN0IGludCBudW1fc2V0dGluZ19jaGFuZ2Vz
CiAgICBpbnQgcHJlZGljdGlvbl9kaXNhYmxlZFszXSA9IHswLCAwLCAxfTsKICAgIGludCB1c2Vf
ZHR4WzJdID0gezAsIDF9OwogICAgaW50IGZyYW1lX3NpemVzX21zX3gyWzldID0gezUsIDEwLCAy
MCwgNDAsIDgwLCAxMjAsIDE2MCwgMjAwLCAyNDB9OyAgLyogeDIgdG8gYXZvaWQgMi41IG1zICov
Ci0gICBjaGFyIGRlYnVnX2luZm9bNTEyXTsKIAogICAgZm9yIChpPTA7IGk8bnVtX2VuY29kZXJz
OyBpKyspIHsKICAgICAgIGludCBzYW1wbGluZ19yYXRlID0gUkFORF9TQU1QTEUoc2FtcGxpbmdf
cmF0ZXMpOwpAQCAtMjM2LDE1ICsyMzcsNiBAQCB2b2lkIGZ1enpfZW5jb2Rlcl9zZXR0aW5ncyhj
b25zdCBpbnQgbnVtX2VuY29kZXJzLCBjb25zdCBpbnQgbnVtX3NldHRpbmdfY2hhbmdlcwogICAg
ICAgICAgaW50IGZyYW1lX3NpemVfZW51bSA9IGdldF9mcmFtZV9zaXplX2VudW0oZnJhbWVfc2l6
ZSwgc2FtcGxpbmdfcmF0ZSk7CiAgICAgICAgICBmb3JjZV9jaGFubmVsID0gSU1JTihmb3JjZV9j
aGFubmVsLCBudW1fY2hhbm5lbHMpOwogCi0gICAgICAgICBzcHJpbnRmKGRlYnVnX2luZm8sCi0g
ICAgICAgICAgICAgICAgICJmdXp6X2VuY29kZXJfc2V0dGluZ3M6ICVkIGtIeiwgJWQgY2gsIGFw
cGxpY2F0aW9uOiAlZCwgIgotICAgICAgICAgICAgICAgICAiJWQgYnBzLCBmb3JjZSBjaDogJWQs
IHZicjogJWQsIHZiciBjb25zdHJhaW50OiAlZCwgY29tcGxleGl0eTogJWQsICIKLSAgICAgICAg
ICAgICAgICAgIm1heCBidzogJWQsIHNpZ25hbDogJWQsIGluYmFuZCBmZWM6ICVkLCBwa3QgbG9z
czogJWQlJSwgbHNiIGRlcHRoOiAlZCwgIgotICAgICAgICAgICAgICAgICAicHJlZCBkaXNhYmxl
ZDogJWQsIGR0eDogJWQsICglZC8yKSBtc1xuIiwKLSAgICAgICAgICAgICAgICAgc2FtcGxpbmdf
cmF0ZS8xMDAwLCBudW1fY2hhbm5lbHMsIGFwcGxpY2F0aW9uLCBiaXRyYXRlLAotICAgICAgICAg
ICAgICAgICBmb3JjZV9jaGFubmVsLCB2YnIsIHZicl9jb25zdHJhaW50LCBjb21wbGV4aXR5LCBt
YXhfYncsIHNpZywgaW5iYW5kX2ZlYywKLSAgICAgICAgICAgICAgICAgcGt0X2xvc3MsIGxzYl9k
ZXB0aCwgcHJlZF9kaXNhYmxlZCwgZHR4LCBmcmFtZV9zaXplX21zX3gyKTsKLQogICAgICAgICAg
aWYob3B1c19lbmNvZGVyX2N0bChlbmMsIE9QVVNfU0VUX0JJVFJBVEUoYml0cmF0ZSkpICE9IE9Q
VVNfT0spIHRlc3RfZmFpbGVkKCk7CiAgICAgICAgICBpZihvcHVzX2VuY29kZXJfY3RsKGVuYywg
T1BVU19TRVRfRk9SQ0VfQ0hBTk5FTFMoZm9yY2VfY2hhbm5lbCkpICE9IE9QVVNfT0spIHRlc3Rf
ZmFpbGVkKCk7CiAgICAgICAgICBpZihvcHVzX2VuY29kZXJfY3RsKGVuYywgT1BVU19TRVRfVkJS
KHZicikpICE9IE9QVVNfT0spIHRlc3RfZmFpbGVkKCk7CkBAIC0yNTksNyArMjUxLDE3IEBAIHZv
aWQgZnV6el9lbmNvZGVyX3NldHRpbmdzKGNvbnN0IGludCBudW1fZW5jb2RlcnMsIGNvbnN0IGlu
dCBudW1fc2V0dGluZ19jaGFuZ2VzCiAgICAgICAgICBpZihvcHVzX2VuY29kZXJfY3RsKGVuYywg
T1BVU19TRVRfRFRYKGR0eCkpICE9IE9QVVNfT0spIHRlc3RfZmFpbGVkKCk7CiAgICAgICAgICBp
ZihvcHVzX2VuY29kZXJfY3RsKGVuYywgT1BVU19TRVRfRVhQRVJUX0ZSQU1FX0RVUkFUSU9OKGZy
YW1lX3NpemVfZW51bSkpICE9IE9QVVNfT0spIHRlc3RfZmFpbGVkKCk7CiAKLSAgICAgICAgIHRl
c3RfZW5jb2RlKGVuYywgbnVtX2NoYW5uZWxzLCBmcmFtZV9zaXplLCBkZWMsIGRlYnVnX2luZm8p
OworICAgICAgICAgaWYodGVzdF9lbmNvZGUoZW5jLCBudW1fY2hhbm5lbHMsIGZyYW1lX3NpemUs
IGRlYykpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgImZ1
enpfZW5jb2Rlcl9zZXR0aW5nczogJWQga0h6LCAlZCBjaCwgYXBwbGljYXRpb246ICVkLCAiCisg
ICAgICAgICAgICAgICAiJWQgYnBzLCBmb3JjZSBjaDogJWQsIHZicjogJWQsIHZiciBjb25zdHJh
aW50OiAlZCwgY29tcGxleGl0eTogJWQsICIKKyAgICAgICAgICAgICAgICJtYXggYnc6ICVkLCBz
aWduYWw6ICVkLCBpbmJhbmQgZmVjOiAlZCwgcGt0IGxvc3M6ICVkJSUsIGxzYiBkZXB0aDogJWQs
ICIKKyAgICAgICAgICAgICAgICJwcmVkIGRpc2FibGVkOiAlZCwgZHR4OiAlZCwgKCVkLzIpIG1z
XG4iLAorICAgICAgICAgICAgICAgc2FtcGxpbmdfcmF0ZS8xMDAwLCBudW1fY2hhbm5lbHMsIGFw
cGxpY2F0aW9uLCBiaXRyYXRlLAorICAgICAgICAgICAgICAgZm9yY2VfY2hhbm5lbCwgdmJyLCB2
YnJfY29uc3RyYWludCwgY29tcGxleGl0eSwgbWF4X2J3LCBzaWcsIGluYmFuZF9mZWMsCisgICAg
ICAgICAgICAgICBwa3RfbG9zcywgbHNiX2RlcHRoLCBwcmVkX2Rpc2FibGVkLCBkdHgsIGZyYW1l
X3NpemVfbXNfeDIpOworICAgICAgICAgICAgdGVzdF9mYWlsZWQoKTsKKyAgICAgICAgIH0KICAg
ICAgIH0KIAogICAgICAgb3B1c19lbmNvZGVyX2Rlc3Ryb3koZW5jKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdGVz
dHMvdGVzdF9vcHVzX3Byb2plY3Rpb24uYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdGVzdHMvdGVzdF9vcHVzX3Byb2plY3Rpb24uYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZjBkNjcyYzExYWQ0OGMzNDJiYzM2Njk5MTk1MjY0M2U0NmI1NDYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfcHJvamVjdGlvbi5jCkBAIC0wLDAgKzEsMzk0
IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTcgR29vZ2xlIEluYy4KKyAgIFdyaXR0ZW4gYnkgQW5k
cmV3IEFsbGVuICovCisvKgorICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBtZXQ6
CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
ICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRl
IDxzdHJpbmcuaD4KKyNpbmNsdWRlICJmbG9hdF9jYXN0LmgiCisjaW5jbHVkZSAib3B1cy5oIgor
I2luY2x1ZGUgInRlc3Rfb3B1c19jb21tb24uaCIKKyNpbmNsdWRlICJvcHVzX3Byb2plY3Rpb24u
aCIKKyNpbmNsdWRlICJtYXRob3BzLmgiCisjaW5jbHVkZSAiLi4vc3JjL21hcHBpbmdfbWF0cml4
LmgiCisjaW5jbHVkZSAibWF0aG9wcy5oIgorCisjZGVmaW5lIEJVRkZFUl9TSVpFIDk2MAorI2Rl
ZmluZSBNQVhfREFUQV9CWVRFUyAzMjc2OAorI2RlZmluZSBNQVhfRlJBTUVfU0FNUExFUyA1NzYw
CisjZGVmaW5lIEVSUk9SX1RPTEVSQU5DRSAxCisKKyNkZWZpbmUgU0lNUExFX01BVFJJWF9TSVpF
IDEyCisjZGVmaW5lIFNJTVBMRV9NQVRSSVhfRlJBTUVfU0laRSAxMAorI2RlZmluZSBTSU1QTEVf
TUFUUklYX0lOUFVUX1NJWkUgMzAKKyNkZWZpbmUgU0lNUExFX01BVFJJWF9PVVRQVVRfU0laRSA0
MAorCitpbnQgYXNzZXJ0X2lzX2VxdWFsKAorICBjb25zdCBvcHVzX3ZhbDE2ICphLCBjb25zdCBv
cHVzX2ludDE2ICpiLCBpbnQgc2l6ZSwgb3B1c19pbnQxNiB0b2xlcmFuY2UpCit7CisgIGludCBp
OworICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICB7CisjaWZkZWYgRklYRURfUE9JTlQK
KyAgICBvcHVzX2ludDE2IHZhbCA9IGFbaV07CisjZWxzZQorICAgIG9wdXNfaW50MTYgdmFsID0g
RkxPQVQySU5UMTYoYVtpXSk7CisjZW5kaWYKKyAgICBpZiAoYWJzKHZhbCAtIGJbaV0pID4gdG9s
ZXJhbmNlKQorICAgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK2ludCBhc3Nl
cnRfaXNfZXF1YWxfc2hvcnQoCisgIGNvbnN0IG9wdXNfaW50MTYgKmEsIGNvbnN0IG9wdXNfaW50
MTYgKmIsIGludCBzaXplLCBvcHVzX2ludDE2IHRvbGVyYW5jZSkKK3sKKyAgaW50IGk7CisgIGZv
ciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgaWYgKGFicyhhW2ldIC0gYltpXSkgPiB0b2xl
cmFuY2UpCisgICAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgdGVzdF9zaW1w
bGVfbWF0cml4KHZvaWQpCit7CisgIGNvbnN0IE1hcHBpbmdNYXRyaXggc2ltcGxlX21hdHJpeF9w
YXJhbXMgPSB7NCwgMywgMH07CisgIGNvbnN0IG9wdXNfaW50MTYgc2ltcGxlX21hdHJpeF9kYXRh
W1NJTVBMRV9NQVRSSVhfU0laRV0gPSB7MCwgMzI3NjcsIDAsIDAsIDMyNzY3LCAwLCAwLCAwLCAw
LCAwLCAwLCAzMjc2N307CisgIGNvbnN0IG9wdXNfaW50MTYgaW5wdXRfaW50MTZbU0lNUExFX01B
VFJJWF9JTlBVVF9TSVpFXSA9IHsKKyAgICAzMjc2NywgMCwgLTMyNzY4LCAyOTQ5MSwgLTMyNzcs
IC0yOTQ5MSwgMjYyMTQsIC02NTU0LCAtMjYyMTQsIDIyOTM4LCAtOTgzMCwKKyAgICAtMjI5Mzgs
IDE5NjYxLCAtMTMxMDcsIC0xOTY2MSwgMTYzODQsIC0xNjM4NCwgLTE2Mzg0LCAxMzEwNywgLTE5
NjYxLCAtMTMxMDcsCisgICAgOTgzMCwgLTIyOTM4LCAtOTgzMCwgNjU1NCwgLTI2MjE0LCAtNjU1
NCwgMzI3NywgLTI5NDkxLCAtMzI3N307CisgIGNvbnN0IG9wdXNfaW50MTYgZXhwZWN0ZWRfb3V0
cHV0X2ludDE2W1NJTVBMRV9NQVRSSVhfT1VUUFVUX1NJWkVdID0geworICAgIDAsIDMyNzY3LCAw
LCAtMzI3NjgsIC0zMjc3LCAyOTQ5MSwgMCwgLTI5NDkxLCAtNjU1NCwgMjYyMTQsIDAsIC0yNjIx
NCwKKyAgICAtOTgzMCwgMjI5MzgsIDAsIC0yMjkzOCwgLTEzMTA3LCAxOTY2MSwgMCwgLTE5NjYx
LCAtMTYzODQsIDE2Mzg0LCAwLCAtMTYzODQsCisgICAgLTE5NjYxLCAxMzEwNywgMCwgLTEzMTA3
LCAtMjI5MzgsIDk4MzAsIDAsIC05ODMwLCAtMjYyMTQsIDY1NTQsIDAsIC02NTU0LAorICAgIC0y
OTQ5MSwgMzI3NywgMCwgLTMyNzd9OworCisgIGludCBpLCByZXQ7CisgIG9wdXNfaW50MzIgc2lt
cGxlX21hdHJpeF9zaXplOworICBvcHVzX3ZhbDE2ICppbnB1dF92YWwxNjsKKyAgb3B1c192YWwx
NiAqb3V0cHV0X3ZhbDE2OworICBvcHVzX2ludDE2ICpvdXRwdXRfaW50MTY7CisgIE1hcHBpbmdN
YXRyaXggKnNpbXBsZV9tYXRyaXg7CisKKyAgLyogQWxsb2NhdGUgaW5wdXQvb3V0cHV0IGJ1ZmZl
cnMuICovCisgIGlucHV0X3ZhbDE2ID0gKG9wdXNfdmFsMTYgKilvcHVzX2FsbG9jKHNpemVvZihv
cHVzX3ZhbDE2KSAqIFNJTVBMRV9NQVRSSVhfSU5QVVRfU0laRSk7CisgIG91dHB1dF9pbnQxNiA9
IChvcHVzX2ludDE2ICopb3B1c19hbGxvYyhzaXplb2Yob3B1c19pbnQxNikgKiBTSU1QTEVfTUFU
UklYX09VVFBVVF9TSVpFKTsKKyAgb3V0cHV0X3ZhbDE2ID0gKG9wdXNfdmFsMTYgKilvcHVzX2Fs
bG9jKHNpemVvZihvcHVzX3ZhbDE2KSAqIFNJTVBMRV9NQVRSSVhfT1VUUFVUX1NJWkUpOworCisg
IC8qIEluaXRpYWxpemUgbWF0cml4ICovCisgIHNpbXBsZV9tYXRyaXhfc2l6ZSA9IG1hcHBpbmdf
bWF0cml4X2dldF9zaXplKHNpbXBsZV9tYXRyaXhfcGFyYW1zLnJvd3MsCisgICAgc2ltcGxlX21h
dHJpeF9wYXJhbXMuY29scyk7CisgIGlmICghc2ltcGxlX21hdHJpeF9zaXplKQorICAgIHRlc3Rf
ZmFpbGVkKCk7CisKKyAgc2ltcGxlX21hdHJpeCA9IChNYXBwaW5nTWF0cml4ICopb3B1c19hbGxv
YyhzaW1wbGVfbWF0cml4X3NpemUpOworICBtYXBwaW5nX21hdHJpeF9pbml0KHNpbXBsZV9tYXRy
aXgsIHNpbXBsZV9tYXRyaXhfcGFyYW1zLnJvd3MsCisgICAgc2ltcGxlX21hdHJpeF9wYXJhbXMu
Y29scywgc2ltcGxlX21hdHJpeF9wYXJhbXMuZ2Fpbiwgc2ltcGxlX21hdHJpeF9kYXRhLAorICAg
IHNpemVvZihzaW1wbGVfbWF0cml4X2RhdGEpKTsKKworICAvKiBDb3B5IGlucHV0cy4gKi8KKyAg
Zm9yIChpID0gMDsgaSA8IFNJTVBMRV9NQVRSSVhfSU5QVVRfU0laRTsgaSsrKQorICB7CisjaWZk
ZWYgRklYRURfUE9JTlQKKyAgICBpbnB1dF92YWwxNltpXSA9IGlucHV0X2ludDE2W2ldOworI2Vs
c2UKKyAgICBpbnB1dF92YWwxNltpXSA9ICgxLzMyNzY4LmYpKmlucHV0X2ludDE2W2ldOworI2Vu
ZGlmCisgIH0KKworICAvKiBfaW5fc2hvcnQgKi8KKyAgZm9yIChpID0gMDsgaSA8IFNJTVBMRV9N
QVRSSVhfT1VUUFVUX1NJWkU7IGkrKykKKyAgICBvdXRwdXRfdmFsMTZbaV0gPSAwOworICBmb3Ig
KGkgPSAwOyBpIDwgc2ltcGxlX21hdHJpeC0+cm93czsgaSsrKQorICB7CisgICAgbWFwcGluZ19t
YXRyaXhfbXVsdGlwbHlfY2hhbm5lbF9pbl9zaG9ydChzaW1wbGVfbWF0cml4LAorICAgICAgaW5w
dXRfaW50MTYsIHNpbXBsZV9tYXRyaXgtPmNvbHMsICZvdXRwdXRfdmFsMTZbaV0sIGksCisgICAg
ICBzaW1wbGVfbWF0cml4LT5yb3dzLCBTSU1QTEVfTUFUUklYX0ZSQU1FX1NJWkUpOworICB9Cisg
IHJldCA9IGFzc2VydF9pc19lcXVhbChvdXRwdXRfdmFsMTYsIGV4cGVjdGVkX291dHB1dF9pbnQx
NiwgU0lNUExFX01BVFJJWF9PVVRQVVRfU0laRSwgRVJST1JfVE9MRVJBTkNFKTsKKyAgaWYgKHJl
dCkKKyAgICB0ZXN0X2ZhaWxlZCgpOworCisgIC8qIF9vdXRfc2hvcnQgKi8KKyAgZm9yIChpID0g
MDsgaSA8IFNJTVBMRV9NQVRSSVhfT1VUUFVUX1NJWkU7IGkrKykKKyAgICBvdXRwdXRfaW50MTZb
aV0gPSAwOworICBmb3IgKGkgPSAwOyBpIDwgc2ltcGxlX21hdHJpeC0+Y29sczsgaSsrKQorICB7
CisgICAgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5lbF9vdXRfc2hvcnQoc2ltcGxlX21h
dHJpeCwKKyAgICAgICZpbnB1dF92YWwxNltpXSwgaSwgc2ltcGxlX21hdHJpeC0+Y29scywgb3V0
cHV0X2ludDE2LAorICAgICAgc2ltcGxlX21hdHJpeC0+cm93cywgU0lNUExFX01BVFJJWF9GUkFN
RV9TSVpFKTsKKyAgfQorICByZXQgPSBhc3NlcnRfaXNfZXF1YWxfc2hvcnQob3V0cHV0X2ludDE2
LCBleHBlY3RlZF9vdXRwdXRfaW50MTYsIFNJTVBMRV9NQVRSSVhfT1VUUFVUX1NJWkUsIEVSUk9S
X1RPTEVSQU5DRSk7CisgIGlmIChyZXQpCisgICAgdGVzdF9mYWlsZWQoKTsKKworI2lmICFkZWZp
bmVkKERJU0FCTEVfRkxPQVRfQVBJKSAmJiAhZGVmaW5lZChGSVhFRF9QT0lOVCkKKyAgLyogX2lu
X2Zsb2F0ICovCisgIGZvciAoaSA9IDA7IGkgPCBTSU1QTEVfTUFUUklYX09VVFBVVF9TSVpFOyBp
KyspCisgICAgb3V0cHV0X3ZhbDE2W2ldID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IHNpbXBsZV9t
YXRyaXgtPnJvd3M7IGkrKykKKyAgeworICAgIG1hcHBpbmdfbWF0cml4X211bHRpcGx5X2NoYW5u
ZWxfaW5fZmxvYXQoc2ltcGxlX21hdHJpeCwKKyAgICAgIGlucHV0X3ZhbDE2LCBzaW1wbGVfbWF0
cml4LT5jb2xzLCAmb3V0cHV0X3ZhbDE2W2ldLCBpLAorICAgICAgc2ltcGxlX21hdHJpeC0+cm93
cywgU0lNUExFX01BVFJJWF9GUkFNRV9TSVpFKTsKKyAgfQorICByZXQgPSBhc3NlcnRfaXNfZXF1
YWwob3V0cHV0X3ZhbDE2LCBleHBlY3RlZF9vdXRwdXRfaW50MTYsIFNJTVBMRV9NQVRSSVhfT1VU
UFVUX1NJWkUsIEVSUk9SX1RPTEVSQU5DRSk7CisgIGlmIChyZXQpCisgICAgdGVzdF9mYWlsZWQo
KTsKKworICAvKiBfb3V0X2Zsb2F0ICovCisgIGZvciAoaSA9IDA7IGkgPCBTSU1QTEVfTUFUUklY
X09VVFBVVF9TSVpFOyBpKyspCisgICAgb3V0cHV0X3ZhbDE2W2ldID0gMDsKKyAgZm9yIChpID0g
MDsgaSA8IHNpbXBsZV9tYXRyaXgtPmNvbHM7IGkrKykKKyAgeworICAgIG1hcHBpbmdfbWF0cml4
X211bHRpcGx5X2NoYW5uZWxfb3V0X2Zsb2F0KHNpbXBsZV9tYXRyaXgsCisgICAgICAmaW5wdXRf
dmFsMTZbaV0sIGksIHNpbXBsZV9tYXRyaXgtPmNvbHMsIG91dHB1dF92YWwxNiwKKyAgICAgIHNp
bXBsZV9tYXRyaXgtPnJvd3MsIFNJTVBMRV9NQVRSSVhfRlJBTUVfU0laRSk7CisgIH0KKyAgcmV0
ID0gYXNzZXJ0X2lzX2VxdWFsKG91dHB1dF92YWwxNiwgZXhwZWN0ZWRfb3V0cHV0X2ludDE2LCBT
SU1QTEVfTUFUUklYX09VVFBVVF9TSVpFLCBFUlJPUl9UT0xFUkFOQ0UpOworICBpZiAocmV0KQor
ICAgIHRlc3RfZmFpbGVkKCk7CisjZW5kaWYKKworICBvcHVzX2ZyZWUoaW5wdXRfdmFsMTYpOwor
ICBvcHVzX2ZyZWUob3V0cHV0X2ludDE2KTsKKyAgb3B1c19mcmVlKG91dHB1dF92YWwxNik7Cisg
IG9wdXNfZnJlZShzaW1wbGVfbWF0cml4KTsKK30KKwordm9pZCB0ZXN0X2NyZWF0aW9uX2FyZ3Vt
ZW50cyhjb25zdCBpbnQgY2hhbm5lbHMsIGNvbnN0IGludCBtYXBwaW5nX2ZhbWlseSkKK3sKKyAg
aW50IHN0cmVhbXM7CisgIGludCBjb3VwbGVkX3N0cmVhbXM7CisgIGludCBlbmNfZXJyb3I7Cisg
IGludCBkZWNfZXJyb3I7CisgIGludCByZXQ7CisgIE9wdXNQcm9qZWN0aW9uRW5jb2RlciAqc3Rf
ZW5jID0gTlVMTDsKKyAgT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdF9kZWMgPSBOVUxMOworCisg
IGNvbnN0IG9wdXNfaW50MzIgRnMgPSA0ODAwMDsKKyAgY29uc3QgaW50IGFwcGxpY2F0aW9uID0g
T1BVU19BUFBMSUNBVElPTl9BVURJTzsKKworICBpbnQgb3JkZXJfcGx1c19vbmUgPSAoaW50KWZs
b29yKHNxcnQoKGZsb2F0KWNoYW5uZWxzKSk7CisgIGludCBub25kaWVnZXRpY19jaGFubmVscyA9
IGNoYW5uZWxzIC0gb3JkZXJfcGx1c19vbmUgKiBvcmRlcl9wbHVzX29uZTsKKworICBpbnQgaXNf
Y2hhbm5lbHNfdmFsaWQgPSAwOworICBpbnQgaXNfcHJvamVjdGlvbl92YWxpZCA9IDA7CisKKyAg
c3RfZW5jID0gb3B1c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9jcmVhdGUoRnMsIGNo
YW5uZWxzLAorICAgIG1hcHBpbmdfZmFtaWx5LCAmc3RyZWFtcywgJmNvdXBsZWRfc3RyZWFtcywg
YXBwbGljYXRpb24sICZlbmNfZXJyb3IpOworICBpZiAoc3RfZW5jICE9IE5VTEwpCisgIHsKKyAg
ICBvcHVzX2ludDMyIG1hdHJpeF9zaXplOworICAgIHVuc2lnbmVkIGNoYXIgKm1hdHJpeDsKKwor
ICAgIHJldCA9IG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2N0bChzdF9lbmMsCisgICAgICBPUFVT
X1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9TSVpFX1JFUVVFU1QsICZtYXRyaXhfc2l6
ZSk7CisgICAgaWYgKHJldCAhPSBPUFVTX09LIHx8ICFtYXRyaXhfc2l6ZSkKKyAgICAgIHRlc3Rf
ZmFpbGVkKCk7CisKKyAgICBtYXRyaXggPSAodW5zaWduZWQgY2hhciAqKW9wdXNfYWxsb2MobWF0
cml4X3NpemUpOworICAgIHJldCA9IG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2N0bChzdF9lbmMs
CisgICAgICBPUFVTX1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9SRVFVRVNULCBtYXRy
aXgsIG1hdHJpeF9zaXplKTsKKworICAgIG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2Rlc3Ryb3ko
c3RfZW5jKTsKKworICAgIHN0X2RlYyA9IG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2NyZWF0ZShG
cywgY2hhbm5lbHMsIHN0cmVhbXMsCisgICAgICBjb3VwbGVkX3N0cmVhbXMsIG1hdHJpeCwgbWF0
cml4X3NpemUsICZkZWNfZXJyb3IpOworICAgIGlmIChzdF9kZWMgIT0gTlVMTCkKKyAgICB7Cisg
ICAgICBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9kZXN0cm95KHN0X2RlYyk7CisgICAgfQorICAg
IG9wdXNfZnJlZShtYXRyaXgpOworICB9CisKKyAgaXNfY2hhbm5lbHNfdmFsaWQgPSAob3JkZXJf
cGx1c19vbmUgPj0gMiAmJiBvcmRlcl9wbHVzX29uZSA8PSA0KSAmJgorICAgIChub25kaWVnZXRp
Y19jaGFubmVscyA9PSAwIHx8IG5vbmRpZWdldGljX2NoYW5uZWxzID09IDIpOworICBpc19wcm9q
ZWN0aW9uX3ZhbGlkID0gKGVuY19lcnJvciA9PSBPUFVTX09LICYmIGRlY19lcnJvciA9PSBPUFVT
X09LKTsKKyAgaWYgKGlzX2NoYW5uZWxzX3ZhbGlkIF4gaXNfcHJvamVjdGlvbl92YWxpZCkKKyAg
eworICAgIGZwcmludGYoc3RkZXJyLCAiQ2hhbm5lbHM6ICVkLCBGYW1pbHk6ICVkXG4iLCBjaGFu
bmVscywgbWFwcGluZ19mYW1pbHkpOworICAgIGZwcmludGYoc3RkZXJyLCAiT3JkZXIrMTogJWQs
IE5vbi1kaWVnZXRpYyBDaGFubmVsczogJWRcbiIsCisgICAgICBvcmRlcl9wbHVzX29uZSwgbm9u
ZGllZ2V0aWNfY2hhbm5lbHMpOworICAgIGZwcmludGYoc3RkZXJyLCAiU3RyZWFtczogJWQsIENv
dXBsZWQgU3RyZWFtczogJWRcbiIsCisgICAgICBzdHJlYW1zLCBjb3VwbGVkX3N0cmVhbXMpOwor
ICAgIHRlc3RfZmFpbGVkKCk7CisgIH0KK30KKwordm9pZCBnZW5lcmF0ZV9tdXNpYyhzaG9ydCAq
YnVmLCBvcHVzX2ludDMyIGxlbiwgb3B1c19pbnQzMiBjaGFubmVscykKK3sKKyAgIG9wdXNfaW50
MzIgaSxqLGs7CisgICBvcHVzX2ludDMyICphLCpiLCpjLCpkOworICAgYSA9IChvcHVzX2ludDMy
ICopbWFsbG9jKHNpemVvZihvcHVzX2ludDMyKSAqIGNoYW5uZWxzKTsKKyAgIGIgPSAob3B1c19p
bnQzMiAqKW1hbGxvYyhzaXplb2Yob3B1c19pbnQzMikgKiBjaGFubmVscyk7CisgICBjID0gKG9w
dXNfaW50MzIgKiltYWxsb2Moc2l6ZW9mKG9wdXNfaW50MzIpICogY2hhbm5lbHMpOworICAgZCA9
IChvcHVzX2ludDMyICopbWFsbG9jKHNpemVvZihvcHVzX2ludDMyKSAqIGNoYW5uZWxzKTsKKyAg
IG1lbXNldChhLCAwLCBzaXplb2Yob3B1c19pbnQzMikgKiBjaGFubmVscyk7CisgICBtZW1zZXQo
YiwgMCwgc2l6ZW9mKG9wdXNfaW50MzIpICogY2hhbm5lbHMpOworICAgbWVtc2V0KGMsIDAsIHNp
emVvZihvcHVzX2ludDMyKSAqIGNoYW5uZWxzKTsKKyAgIG1lbXNldChkLCAwLCBzaXplb2Yob3B1
c19pbnQzMikgKiBjaGFubmVscyk7CisgICBqPTA7CisKKyAgIGZvcihpPTA7aTxsZW47aSsrKQor
ICAgeworICAgICBmb3Ioaz0wO2s8Y2hhbm5lbHM7aysrKQorICAgICB7CisgICAgICBvcHVzX3Vp
bnQzMiByOworICAgICAgb3B1c19pbnQzMiB2OworICAgICAgdj0oKChqKigoaj4+MTIpXigoaj4+
MTB8aj4+MTIpJjI2Jmo+PjcpKSkmMTI4KSsxMjgpPDwxNTsKKyAgICAgIHI9ZmFzdF9yYW5kKCk7
dis9ciY2NTUzNTt2LT1yPj4xNjsKKyAgICAgIGJba109di1hW2tdKygoYltrXSo2MSszMik+PjYp
O2Fba109djsKKyAgICAgIGNba109KDMwKihjW2tdK2Jba10rZFtrXSkrMzIpPj42O2Rba109Yltr
XTsKKyAgICAgIHY9KGNba10rMTI4KT4+ODsKKyAgICAgIGJ1ZltpKmNoYW5uZWxzK2tdPXY+MzI3
Njc/MzI3Njc6KHY8LTMyNzY4Py0zMjc2ODp2KTsKKyAgICAgIGlmKGklNj09MClqKys7CisgICAg
IH0KKyAgIH0KKworICAgZnJlZShhKTsKKyAgIGZyZWUoYik7CisgICBmcmVlKGMpOworICAgZnJl
ZShkKTsKK30KKwordm9pZCB0ZXN0X2VuY29kZV9kZWNvZGUob3B1c19pbnQzMiBiaXRyYXRlLCBv
cHVzX2ludDMyIGNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IG1h
cHBpbmdfZmFtaWx5KQoreworICBjb25zdCBvcHVzX2ludDMyIEZzID0gNDgwMDA7CisgIGNvbnN0
IGludCBhcHBsaWNhdGlvbiA9IE9QVVNfQVBQTElDQVRJT05fQVVESU87CisKKyAgT3B1c1Byb2pl
Y3Rpb25FbmNvZGVyICpzdF9lbmM7CisgIE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3RfZGVjOwor
ICBpbnQgc3RyZWFtczsKKyAgaW50IGNvdXBsZWQ7CisgIGludCBlcnJvcjsKKyAgc2hvcnQgKmJ1
ZmZlcl9pbjsKKyAgc2hvcnQgKmJ1ZmZlcl9vdXQ7CisgIHVuc2lnbmVkIGNoYXIgZGF0YVtNQVhf
REFUQV9CWVRFU10gPSB7IDAgfTsKKyAgaW50IGxlbjsKKyAgaW50IG91dF9zYW1wbGVzOworICBv
cHVzX2ludDMyIG1hdHJpeF9zaXplID0gMDsKKyAgdW5zaWduZWQgY2hhciAqbWF0cml4ID0gTlVM
TDsKKworICBidWZmZXJfaW4gPSAoc2hvcnQgKiltYWxsb2Moc2l6ZW9mKHNob3J0KSAqIEJVRkZF
Ul9TSVpFICogY2hhbm5lbHMpOworICBidWZmZXJfb3V0ID0gKHNob3J0ICopbWFsbG9jKHNpemVv
ZihzaG9ydCkgKiBCVUZGRVJfU0laRSAqIGNoYW5uZWxzKTsKKworICBzdF9lbmMgPSBvcHVzX3By
b2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2NyZWF0ZShGcywgY2hhbm5lbHMsCisgICAgbWFw
cGluZ19mYW1pbHksICZzdHJlYW1zLCAmY291cGxlZCwgYXBwbGljYXRpb24sICZlcnJvcik7Cisg
IGlmIChlcnJvciAhPSBPUFVTX09LKSB7CisgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAiQ291
bGRuXCd0IGNyZWF0ZSBlbmNvZGVyIHdpdGggJWQgY2hhbm5lbHMgYW5kIG1hcHBpbmcgZmFtaWx5
ICVkLlxuIiwKKyAgICAgIGNoYW5uZWxzLCBtYXBwaW5nX2ZhbWlseSk7CisgICAgZnJlZShidWZm
ZXJfaW4pOworICAgIGZyZWUoYnVmZmVyX291dCk7CisgICAgdGVzdF9mYWlsZWQoKTsKKyAgfQor
CisgIGVycm9yID0gb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfY3RsKHN0X2VuYywKKyAgICBPUFVT
X1NFVF9CSVRSQVRFKGJpdHJhdGUgKiAxMDAwICogKHN0cmVhbXMgKyBjb3VwbGVkKSkpOworICBp
ZiAoZXJyb3IgIT0gT1BVU19PSykKKyAgeworICAgIGdvdG8gYmFkX2NsZWFudXA7CisgIH0KKwor
ICBlcnJvciA9IG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2N0bChzdF9lbmMsCisgICAgT1BVU19Q
Uk9KRUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfU0laRV9SRVFVRVNULCAmbWF0cml4X3NpemUp
OworICBpZiAoZXJyb3IgIT0gT1BVU19PSyB8fCAhbWF0cml4X3NpemUpCisgIHsKKyAgICBnb3Rv
IGJhZF9jbGVhbnVwOworICB9CisKKyAgbWF0cml4ID0gKHVuc2lnbmVkIGNoYXIgKilvcHVzX2Fs
bG9jKG1hdHJpeF9zaXplKTsKKyAgZXJyb3IgPSBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9jdGwo
c3RfZW5jLAorICAgIE9QVVNfUFJPSkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX1JFUVVFU1Qs
IG1hdHJpeCwgbWF0cml4X3NpemUpOworCisgIHN0X2RlYyA9IG9wdXNfcHJvamVjdGlvbl9kZWNv
ZGVyX2NyZWF0ZShGcywgY2hhbm5lbHMsIHN0cmVhbXMsIGNvdXBsZWQsCisgICAgbWF0cml4LCBt
YXRyaXhfc2l6ZSwgJmVycm9yKTsKKyAgb3B1c19mcmVlKG1hdHJpeCk7CisKKyAgaWYgKGVycm9y
ICE9IE9QVVNfT0spIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICJDb3VsZG5cJ3QgY3Jl
YXRlIGRlY29kZXIgd2l0aCAlZCBjaGFubmVscywgJWQgc3RyZWFtcyAiCisgICAgICAiYW5kICVk
IGNvdXBsZWQgc3RyZWFtcy5cbiIsIGNoYW5uZWxzLCBzdHJlYW1zLCBjb3VwbGVkKTsKKyAgICBn
b3RvIGJhZF9jbGVhbnVwOworICB9CisKKyAgZ2VuZXJhdGVfbXVzaWMoYnVmZmVyX2luLCBCVUZG
RVJfU0laRSwgY2hhbm5lbHMpOworCisgIGxlbiA9IG9wdXNfcHJvamVjdGlvbl9lbmNvZGUoCisg
ICAgc3RfZW5jLCBidWZmZXJfaW4sIEJVRkZFUl9TSVpFLCBkYXRhLCBNQVhfREFUQV9CWVRFUyk7
CisgIGlmKGxlbjwwIHx8IGxlbj5NQVhfREFUQV9CWVRFUykgeworICAgIGZwcmludGYoc3RkZXJy
LCJvcHVzX2VuY29kZSgpIHJldHVybmVkICVkXG4iLCBsZW4pOworICAgIGdvdG8gYmFkX2NsZWFu
dXA7CisgIH0KKworICBvdXRfc2FtcGxlcyA9IG9wdXNfcHJvamVjdGlvbl9kZWNvZGUoCisgICAg
c3RfZGVjLCBkYXRhLCBsZW4sIGJ1ZmZlcl9vdXQsIE1BWF9GUkFNRV9TQU1QTEVTLCAwKTsKKyAg
aWYob3V0X3NhbXBsZXMhPUJVRkZFUl9TSVpFKSB7CisgICAgZnByaW50ZihzdGRlcnIsIm9wdXNf
ZGVjb2RlKCkgcmV0dXJuZWQgJWRcbiIsIG91dF9zYW1wbGVzKTsKKyAgICBnb3RvIGJhZF9jbGVh
bnVwOworICB9CisKKyAgb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfZGVzdHJveShzdF9kZWMpOwor
ICBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9kZXN0cm95KHN0X2VuYyk7CisgIGZyZWUoYnVmZmVy
X2luKTsKKyAgZnJlZShidWZmZXJfb3V0KTsKKyAgcmV0dXJuOworYmFkX2NsZWFudXA6CisgIGZy
ZWUoYnVmZmVyX2luKTsKKyAgZnJlZShidWZmZXJfb3V0KTsKKyAgdGVzdF9mYWlsZWQoKTsKK30K
KworaW50IG1haW4oaW50IF9hcmdjLCBjaGFyICoqX2FyZ3YpCit7CisgIHVuc2lnbmVkIGludCBp
OworCisgICh2b2lkKV9hcmdjOworICAodm9pZClfYXJndjsKKworICAvKiBUZXN0IHNpbXBsZSBt
YXRyaXggbXVsdGlwbGljYXRpb24gcm91dGluZXMuICovCisgIHRlc3Rfc2ltcGxlX21hdHJpeCgp
OworCisgIC8qIFRlc3QgZnVsbCByYW5nZSBvZiBjaGFubmVscyBpbiBjcmVhdGlvbiBhcmd1bWVu
dHMuICovCisgIGZvciAoaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAgICB0ZXN0X2NyZWF0aW9uX2Fy
Z3VtZW50cyhpLCAzKTsKKworICAvKiBUZXN0IGVuY29kZS9kZWNvZGUgcGlwZWxpbmUuICovCisg
IHRlc3RfZW5jb2RlX2RlY29kZSg2NCAqIDE4LCAxOCwgMyk7CisKKyAgZnByaW50ZihzdGRlcnIs
ICJBbGwgcHJvamVjdGlvbiB0ZXN0cyBwYXNzZWQuXG4iKTsKKyAgcmV0dXJuIDA7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvdHJhaW5pbmcvcm5uX2R1bXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3RyYWluaW5nL3Jubl9kdW1wLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMzMTIwODhlODJhMWE3Y2UwMTY4OGI5YTAzNTA2Y2JiMmI1ZjcyODUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3RyYWluaW5nL3Jubl9kdW1wLnB5CkBAIC0wLDAgKzEsNjYgQEAKKyMhL3Vzci9i
aW4vcHl0aG9uCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworZnJv
bSBrZXJhcy5tb2RlbHMgaW1wb3J0IFNlcXVlbnRpYWwKK2Zyb20ga2VyYXMubW9kZWxzIGltcG9y
dCBNb2RlbAorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0IElucHV0Citmcm9tIGtlcmFzLmxheWVy
cyBpbXBvcnQgRGVuc2UKK2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBMU1RNCitmcm9tIGtlcmFz
LmxheWVycyBpbXBvcnQgR1JVCitmcm9tIGtlcmFzLm1vZGVscyBpbXBvcnQgbG9hZF9tb2RlbAor
ZnJvbSBrZXJhcyBpbXBvcnQgYmFja2VuZCBhcyBLCitpbXBvcnQgc3lzCisKK2ltcG9ydCBudW1w
eSBhcyBucAorCitkZWYgcHJpbnRWZWN0b3IoZiwgdmVjdG9yLCBuYW1lKToKKyAgICB2ID0gbnAu
cmVzaGFwZSh2ZWN0b3IsICgtMSkpOworICAgICNwcmludCgnc3RhdGljIGNvbnN0IGZsb2F0ICcs
IG5hbWUsICdbJywgbGVuKHYpLCAnXSA9IFxuJywgZmlsZT1mKQorICAgIGYud3JpdGUoJ3N0YXRp
YyBjb25zdCBvcHVzX2ludDgge31be31dID0ge3tcbiAgICcuZm9ybWF0KG5hbWUsIGxlbih2KSkp
CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHYpKToKKyAgICAgICAgZi53cml0ZSgne30nLmZv
cm1hdChtYXgoLTEyOCxtaW4oMTI3LGludChyb3VuZCgxMjgqdltpXSkpKSkpKQorICAgICAgICBp
ZiAoaSE9bGVuKHYpLTEpOgorICAgICAgICAgICAgZi53cml0ZSgnLCcpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGklOD09Nyk6CisgICAgICAgICAgICBm
LndyaXRlKCJcbiAgICIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmLndyaXRlKCIgIikK
KyAgICAjcHJpbnQodiwgZmlsZT1mKQorICAgIGYud3JpdGUoJ1xufTtcblxuJykKKyAgICByZXR1
cm47CisKK2RlZiBiaW5hcnlfY3Jvc3NlbnRyb3AyKHlfdHJ1ZSwgeV9wcmVkKToKKyAgICAgICAg
cmV0dXJuIEsubWVhbigyKksuYWJzKHlfdHJ1ZS0wLjUpICogSy5iaW5hcnlfY3Jvc3NlbnRyb3B5
KHlfcHJlZCwgeV90cnVlKSwgYXhpcz0tMSkKKworCisjbW9kZWwgPSBsb2FkX21vZGVsKHN5cy5h
cmd2WzFdLCBjdXN0b21fb2JqZWN0cz17J2JpbmFyeV9jcm9zc2VudHJvcDInOiBiaW5hcnlfY3Jv
c3NlbnRyb3AyfSkKK21haW5faW5wdXQgPSBJbnB1dChzaGFwZT0oTm9uZSwgMjUpLCBuYW1lPSdt
YWluX2lucHV0JykKK3ggPSBEZW5zZSgzMiwgYWN0aXZhdGlvbj0ndGFuaCcpKG1haW5faW5wdXQp
Cit4ID0gR1JVKDI0LCBhY3RpdmF0aW9uPSd0YW5oJywgcmVjdXJyZW50X2FjdGl2YXRpb249J3Np
Z21vaWQnLCByZXR1cm5fc2VxdWVuY2VzPVRydWUpKHgpCit4ID0gRGVuc2UoMiwgYWN0aXZhdGlv
bj0nc2lnbW9pZCcpKHgpCittb2RlbCA9IE1vZGVsKGlucHV0cz1tYWluX2lucHV0LCBvdXRwdXRz
PXgpCittb2RlbC5sb2FkX3dlaWdodHMoc3lzLmFyZ3ZbMV0pCisKK3dlaWdodHMgPSBtb2RlbC5n
ZXRfd2VpZ2h0cygpCisKK2YgPSBvcGVuKHN5cy5hcmd2WzJdLCAndycpCisKK2Yud3JpdGUoJy8q
VGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gYSBLZXJhcyBtb2RlbCov
XG5cbicpCitmLndyaXRlKCcjaWZkZWYgSEFWRV9DT05GSUdfSFxuI2luY2x1ZGUgImNvbmZpZy5o
IlxuI2VuZGlmXG5cbiNpbmNsdWRlICJtbHAuaCJcblxuJykKKworcHJpbnRWZWN0b3IoZiwgd2Vp
Z2h0c1swXSwgJ2xheWVyMF93ZWlnaHRzJykKK3ByaW50VmVjdG9yKGYsIHdlaWdodHNbMV0sICds
YXllcjBfYmlhcycpCitwcmludFZlY3RvcihmLCB3ZWlnaHRzWzJdLCAnbGF5ZXIxX3dlaWdodHMn
KQorcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1szXSwgJ2xheWVyMV9yZWN1cl93ZWlnaHRzJykKK3By
aW50VmVjdG9yKGYsIHdlaWdodHNbNF0sICdsYXllcjFfYmlhcycpCitwcmludFZlY3RvcihmLCB3
ZWlnaHRzWzVdLCAnbGF5ZXIyX3dlaWdodHMnKQorcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1s2XSwg
J2xheWVyMl9iaWFzJykKKworZi53cml0ZSgnY29uc3QgRGVuc2VMYXllciBsYXllcjAgPSB7XG4g
ICBsYXllcjBfYmlhcyxcbiAgIGxheWVyMF93ZWlnaHRzLFxuICAgMjUsIDMyLCAwXG59O1xuXG4n
KQorZi53cml0ZSgnY29uc3QgR1JVTGF5ZXIgbGF5ZXIxID0ge1xuICAgbGF5ZXIxX2JpYXMsXG4g
ICBsYXllcjFfd2VpZ2h0cyxcbiAgIGxheWVyMV9yZWN1cl93ZWlnaHRzLFxuICAgMzIsIDI0XG59
O1xuXG4nKQorZi53cml0ZSgnY29uc3QgRGVuc2VMYXllciBsYXllcjIgPSB7XG4gICBsYXllcjJf
YmlhcyxcbiAgIGxheWVyMl93ZWlnaHRzLFxuICAgMjQsIDIsIDFcbn07XG5cbicpCisKK2YuY2xv
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy90cmFpbmluZy9ybm5fdHJhaW4ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3RyYWluaW5nL3Jubl90cmFp
bi5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOWJjYjAzNDYzMzM3MTc3OTM5MDFhMWFkOWY0NDVkNGUzMzc4YmUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy90cmFpbmluZy9ybm5fdHJhaW4ucHkKQEAgLTAsMCArMSwxNzcg
QEAKKyMhL3Vzci9iaW4vcHl0aG9uMworCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1
bmN0aW9uCisKK2Zyb20ga2VyYXMubW9kZWxzIGltcG9ydCBTZXF1ZW50aWFsCitmcm9tIGtlcmFz
Lm1vZGVscyBpbXBvcnQgTW9kZWwKK2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBJbnB1dAorZnJv
bSBrZXJhcy5sYXllcnMgaW1wb3J0IERlbnNlCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgTFNU
TQorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0IEdSVQorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0
IEN1RE5OR1JVCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgU2ltcGxlUk5OCitmcm9tIGtlcmFz
LmxheWVycyBpbXBvcnQgRHJvcG91dAorZnJvbSBrZXJhcyBpbXBvcnQgbG9zc2VzCitpbXBvcnQg
aDVweQorZnJvbSBrZXJhcy5vcHRpbWl6ZXJzIGltcG9ydCBBZGFtCisKK2Zyb20ga2VyYXMuY29u
c3RyYWludHMgaW1wb3J0IENvbnN0cmFpbnQKK2Zyb20ga2VyYXMgaW1wb3J0IGJhY2tlbmQgYXMg
SworaW1wb3J0IG51bXB5IGFzIG5wCisKK2ltcG9ydCB0ZW5zb3JmbG93IGFzIHRmCitmcm9tIGtl
cmFzLmJhY2tlbmQudGVuc29yZmxvd19iYWNrZW5kIGltcG9ydCBzZXRfc2Vzc2lvbgorY29uZmln
ID0gdGYuQ29uZmlnUHJvdG8oKQorY29uZmlnLmdwdV9vcHRpb25zLnBlcl9wcm9jZXNzX2dwdV9t
ZW1vcnlfZnJhY3Rpb24gPSAwLjQ0CitzZXRfc2Vzc2lvbih0Zi5TZXNzaW9uKGNvbmZpZz1jb25m
aWcpKQorCitkZWYgYmluYXJ5X2Nyb3NzZW50cm9wMih5X3RydWUsIHlfcHJlZCk6CisgICAgcmV0
dXJuIEsubWVhbigyKksuYWJzKHlfdHJ1ZS0wLjUpICogSy5iaW5hcnlfY3Jvc3NlbnRyb3B5KHlf
dHJ1ZSwgeV9wcmVkKSwgYXhpcz0tMSkKKworZGVmIGJpbmFyeV9hY2N1cmFjeTIoeV90cnVlLCB5
X3ByZWQpOgorICAgIHJldHVybiBLLm1lYW4oSy5jYXN0KEsuZXF1YWwoeV90cnVlLCBLLnJvdW5k
KHlfcHJlZCkpLCAnZmxvYXQzMicpICsgSy5jYXN0KEsuZXF1YWwoeV90cnVlLCAwLjUpLCAnZmxv
YXQzMicpLCBheGlzPS0xKQorCitkZWYgcXVhbnRfbW9kZWwobW9kZWwpOgorICAgIHdlaWdodHMg
PSBtb2RlbC5nZXRfd2VpZ2h0cygpCisgICAgZm9yIGsgaW4gcmFuZ2UobGVuKHdlaWdodHMpKToK
KyAgICAgICAgd2VpZ2h0c1trXSA9IG5wLm1heGltdW0oLTEyOCwgbnAubWluaW11bSgxMjcsIG5w
LnJvdW5kKDEyOCp3ZWlnaHRzW2tdKSowLjAwNzgxMjUpKQorICAgIG1vZGVsLnNldF93ZWlnaHRz
KHdlaWdodHMpCisKK2NsYXNzIFdlaWdodENsaXAoQ29uc3RyYWludCk6CisgICAgJycnQ2xpcHMg
dGhlIHdlaWdodHMgaW5jaWRlbnQgdG8gZWFjaCBoaWRkZW4gdW5pdCB0byBiZSBpbnNpZGUgYSBy
YW5nZQorICAgICcnJworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjPTIpOgorICAgICAgICBzZWxm
LmMgPSBjCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcCk6CisgICAgICAgIHJldHVybiBLLmNs
aXAocCwgLXNlbGYuYywgc2VsZi5jKQorCisgICAgZGVmIGdldF9jb25maWcoc2VsZik6CisgICAg
ICAgIHJldHVybiB7J25hbWUnOiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAg
ICdjJzogc2VsZi5jfQorCityZWcgPSAwLjAwMDAwMQorY29uc3RyYWludCA9IFdlaWdodENsaXAo
Ljk5OCkKKworcHJpbnQoJ0J1aWxkIG1vZGVsLi4uJykKKworbWFpbl9pbnB1dCA9IElucHV0KHNo
YXBlPShOb25lLCAyNSksIG5hbWU9J21haW5faW5wdXQnKQoreCA9IERlbnNlKDMyLCBhY3RpdmF0
aW9uPSd0YW5oJywga2VybmVsX2NvbnN0cmFpbnQ9Y29uc3RyYWludCwgYmlhc19jb25zdHJhaW50
PWNvbnN0cmFpbnQpKG1haW5faW5wdXQpCisjeCA9IEN1RE5OR1JVKDI0LCByZXR1cm5fc2VxdWVu
Y2VzPVRydWUsIGtlcm5lbF9jb25zdHJhaW50PWNvbnN0cmFpbnQsIHJlY3VycmVudF9jb25zdHJh
aW50PWNvbnN0cmFpbnQsIGJpYXNfY29uc3RyYWludD1jb25zdHJhaW50KSh4KQoreCA9IEdSVSgy
NCwgcmVjdXJyZW50X2FjdGl2YXRpb249J3NpZ21vaWQnLCBhY3RpdmF0aW9uPSd0YW5oJywgcmV0
dXJuX3NlcXVlbmNlcz1UcnVlLCBrZXJuZWxfY29uc3RyYWludD1jb25zdHJhaW50LCByZWN1cnJl
bnRfY29uc3RyYWludD1jb25zdHJhaW50LCBiaWFzX2NvbnN0cmFpbnQ9Y29uc3RyYWludCkoeCkK
K3ggPSBEZW5zZSgyLCBhY3RpdmF0aW9uPSdzaWdtb2lkJywga2VybmVsX2NvbnN0cmFpbnQ9Y29u
c3RyYWludCwgYmlhc19jb25zdHJhaW50PWNvbnN0cmFpbnQpKHgpCittb2RlbCA9IE1vZGVsKGlu
cHV0cz1tYWluX2lucHV0LCBvdXRwdXRzPXgpCisKK2JhdGNoX3NpemUgPSAyMDQ4CisKK3ByaW50
KCdMb2FkaW5nIGRhdGEuLi4nKQord2l0aCBoNXB5LkZpbGUoJ2ZlYXR1cmVzMTBiLmg1JywgJ3In
KSBhcyBoZjoKKyAgICBhbGxfZGF0YSA9IGhmWydkYXRhJ11bOl0KK3ByaW50KCdkb25lLicpCisK
K3dpbmRvd19zaXplID0gMTUwMAorCituYl9zZXF1ZW5jZXMgPSBsZW4oYWxsX2RhdGEpLy93aW5k
b3dfc2l6ZQorcHJpbnQobmJfc2VxdWVuY2VzLCAnIHNlcXVlbmNlcycpCit4X3RyYWluID0gYWxs
X2RhdGFbOm5iX3NlcXVlbmNlcyp3aW5kb3dfc2l6ZSwgOi0yXQoreF90cmFpbiA9IG5wLnJlc2hh
cGUoeF90cmFpbiwgKG5iX3NlcXVlbmNlcywgd2luZG93X3NpemUsIDI1KSkKKworeV90cmFpbiA9
IG5wLmNvcHkoYWxsX2RhdGFbOm5iX3NlcXVlbmNlcyp3aW5kb3dfc2l6ZSwgLTI6XSkKK3lfdHJh
aW4gPSBucC5yZXNoYXBlKHlfdHJhaW4sIChuYl9zZXF1ZW5jZXMsIHdpbmRvd19zaXplLCAyKSkK
KworcHJpbnQoIk1hcmtpbmcgaWdub3JlcyIpCitmb3IgcyBpbiB5X3RyYWluOgorICAgIGZvciBl
IGluIHM6CisgICAgICAgIGlmIChlWzFdID49IDEpOgorICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgZVswXSA9IDAuNQorCithbGxfZGF0YSA9IDA7Cit4X3RyYWluID0geF90cmFpbi5hc3R5cGUo
J2Zsb2F0MzInKQoreV90cmFpbiA9IHlfdHJhaW4uYXN0eXBlKCdmbG9hdDMyJykKKworcHJpbnQo
bGVuKHhfdHJhaW4pLCAndHJhaW4gc2VxdWVuY2VzLiB4IHNoYXBlID0nLCB4X3RyYWluLnNoYXBl
LCAneSBzaGFwZSA9ICcsIHlfdHJhaW4uc2hhcGUpCisKK21vZGVsLmxvYWRfd2VpZ2h0cygnbmV3
d2VpZ2h0czEwYTFiX2VwMjA2LmhkZjUnKQorCisjd2VpZ2h0cyA9IG1vZGVsLmdldF93ZWlnaHRz
KCkKKyNmb3IgayBpbiByYW5nZShsZW4od2VpZ2h0cykpOgorIyAgICB3ZWlnaHRzW2tdID0gbnAu
cm91bmQoMTI4KndlaWdodHNba10pKjAuMDA3ODEyNQorI21vZGVsLnNldF93ZWlnaHRzKHdlaWdo
dHMpCisKKyMgdHJ5IHVzaW5nIGRpZmZlcmVudCBvcHRpbWl6ZXJzIGFuZCBkaWZmZXJlbnQgb3B0
aW1pemVyIGNvbmZpZ3MKK21vZGVsLmNvbXBpbGUobG9zcz1iaW5hcnlfY3Jvc3NlbnRyb3AyLAor
ICAgICAgICAgICAgICBvcHRpbWl6ZXI9QWRhbSgwLjAwMDEpLAorICAgICAgICAgICAgICBtZXRy
aWNzPVtiaW5hcnlfYWNjdXJhY3kyXSkKKworcHJpbnQoJ1RyYWluLi4uJykKK3F1YW50X21vZGVs
KG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisgICAgICAgICAgYmF0Y2hfc2l6
ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0xMCwgdmFsaWRhdGlvbl9kYXRhPSh4X3Ry
YWluLCB5X3RyYWluKSkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMxMGExY19lcDEwLmhkZjUiKQor
CitxdWFudF9tb2RlbChtb2RlbCkKK21vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAorICAgICAg
ICAgIGJhdGNoX3NpemU9YmF0Y2hfc2l6ZSwKKyAgICAgICAgICBlcG9jaHM9NTAsIGluaXRpYWxf
ZXBvY2g9MTApCittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXA1MC5oZGY1IikKKworbW9k
ZWwuY29tcGlsZShsb3NzPWJpbmFyeV9jcm9zc2VudHJvcDIsCisgICAgICAgICAgICAgIG9wdGlt
aXplcj1BZGFtKDAuMDAwMSksCisgICAgICAgICAgICAgIG1ldHJpY3M9W2JpbmFyeV9hY2N1cmFj
eTJdKQorCitxdWFudF9tb2RlbChtb2RlbCkKK21vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAor
ICAgICAgICAgIGJhdGNoX3NpemU9YmF0Y2hfc2l6ZSwKKyAgICAgICAgICBlcG9jaHM9MTAwLCBp
bml0aWFsX2Vwb2NoPTUwKQorbW9kZWwuc2F2ZSgibmV3d2VpZ2h0czEwYTFjX2VwMTAwLmhkZjUi
KQorCitxdWFudF9tb2RlbChtb2RlbCkKK21vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAorICAg
ICAgICAgIGJhdGNoX3NpemU9YmF0Y2hfc2l6ZSwKKyAgICAgICAgICBlcG9jaHM9MTUwLCBpbml0
aWFsX2Vwb2NoPTEwMCkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMxMGExY19lcDE1MC5oZGY1IikK
KworcXVhbnRfbW9kZWwobW9kZWwpCittb2RlbC5maXQoeF90cmFpbiwgeV90cmFpbiwKKyAgICAg
ICAgICBiYXRjaF9zaXplPWJhdGNoX3NpemUsCisgICAgICAgICAgZXBvY2hzPTIwMCwgaW5pdGlh
bF9lcG9jaD0xNTApCittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXAyMDAuaGRmNSIpCisK
K3F1YW50X21vZGVsKG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisgICAgICAg
ICAgYmF0Y2hfc2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0yMDEsIGluaXRpYWxf
ZXBvY2g9MjAwKQorbW9kZWwuc2F2ZSgibmV3d2VpZ2h0czEwYTFjX2VwMjAxLmhkZjUiKQorCitx
dWFudF9tb2RlbChtb2RlbCkKK21vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAorICAgICAgICAg
IGJhdGNoX3NpemU9YmF0Y2hfc2l6ZSwKKyAgICAgICAgICBlcG9jaHM9MjAyLCBpbml0aWFsX2Vw
b2NoPTIwMSwgdmFsaWRhdGlvbl9kYXRhPSh4X3RyYWluLCB5X3RyYWluKSkKK21vZGVsLnNhdmUo
Im5ld3dlaWdodHMxMGExY19lcDIwMi5oZGY1IikKKworcXVhbnRfbW9kZWwobW9kZWwpCittb2Rl
bC5maXQoeF90cmFpbiwgeV90cmFpbiwKKyAgICAgICAgICBiYXRjaF9zaXplPWJhdGNoX3NpemUs
CisgICAgICAgICAgZXBvY2hzPTIwMywgaW5pdGlhbF9lcG9jaD0yMDIsIHZhbGlkYXRpb25fZGF0
YT0oeF90cmFpbiwgeV90cmFpbikpCittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXAyMDMu
aGRmNSIpCisKK3F1YW50X21vZGVsKG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4s
CisgICAgICAgICAgYmF0Y2hfc2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0yMDQs
IGluaXRpYWxfZXBvY2g9MjAzLCB2YWxpZGF0aW9uX2RhdGE9KHhfdHJhaW4sIHlfdHJhaW4pKQor
bW9kZWwuc2F2ZSgibmV3d2VpZ2h0czEwYTFjX2VwMjA0LmhkZjUiKQorCitxdWFudF9tb2RlbCht
b2RlbCkKK21vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAorICAgICAgICAgIGJhdGNoX3NpemU9
YmF0Y2hfc2l6ZSwKKyAgICAgICAgICBlcG9jaHM9MjA1LCBpbml0aWFsX2Vwb2NoPTIwNCwgdmFs
aWRhdGlvbl9kYXRhPSh4X3RyYWluLCB5X3RyYWluKSkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMx
MGExY19lcDIwNS5oZGY1IikKKworcXVhbnRfbW9kZWwobW9kZWwpCittb2RlbC5maXQoeF90cmFp
biwgeV90cmFpbiwKKyAgICAgICAgICBiYXRjaF9zaXplPWJhdGNoX3NpemUsCisgICAgICAgICAg
ZXBvY2hzPTIwNiwgaW5pdGlhbF9lcG9jaD0yMDUsIHZhbGlkYXRpb25fZGF0YT0oeF90cmFpbiwg
eV90cmFpbikpCittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXAyMDYuaGRmNSIpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvdHJhaW5pbmcvdHh0MmhkZjUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3RyYWluaW5nL3R4dDJoZGY1LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjljNjAyODc3ZWM4ODExZmI2YTQ4OTc4Mjk4NWI1ZjFiMDk4NjBkZWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3RyYWluaW5nL3R4dDJoZGY1LnB5CkBAIC0wLDAgKzEsMTIgQEAKKyMhL3Vzci9i
aW4vcHl0aG9uCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1w
b3J0IG51bXB5IGFzIG5wCitpbXBvcnQgaDVweQoraW1wb3J0IHN5cworCitkYXRhID0gbnAubG9h
ZHR4dChzeXMuYXJndlsxXSwgZHR5cGU9J2Zsb2F0MzInKQoraDVmID0gaDVweS5GaWxlKHN5cy5h
cmd2WzJdLCAndycpOworaDVmLmNyZWF0ZV9kYXRhc2V0KCdkYXRhJywgZGF0YT1kYXRhKQoraDVm
LmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvd2luMzIvZ2VudmVyc2lvbi5iYXQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3dpbjMyL2dlbnZlcnNp
b24uYmF0CmluZGV4IDFkZWY3NDYwYjVlMDJmYTE4OTk4YTU3ZTBlMGVmYzVhYjMxMzRlZDUuLmFl
YTU1NzM5MzQyZGFmOTUzZjc4MmNhMjE4NTUxMzRjMDQxMDE4MzkgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvd2luMzIv
Z2VudmVyc2lvbi5iYXQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy93aW4zMi9nZW52ZXJzaW9uLmJhdApAQCAtMSwzNyArMSwzNyBA
QAotQGVjaG8gb2ZmCi0KLXNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgZW5hYmxlZGVsYXllZGV4
cGFuc2lvbgotCi1mb3IgL2YgJSV2IGluICgnY2QgIiV+ZHAwLi4iIF4mXiYgZ2l0IHN0YXR1cyBe
Pk5VTCAyXj5OVUwgXiZeJiBnaXQgZGVzY3JpYmUgLS10YWdzIC0tbWF0Y2ggInYqIiAtLWRpcnR5
IDJePk5VTCcpIGRvIHNldCB2ZXJzaW9uPSUldgotCi1pZiBub3QgIiV2ZXJzaW9uJSI9PSIiIHNl
dCB2ZXJzaW9uPSF2ZXJzaW9uOn4xISAmJiBnb3RvIDpnb3R2ZXJzaW9uCi0KLWlmIGV4aXN0ICIl
fmRwMC4uXHBhY2thZ2VfdmVyc2lvbiIgZ290byA6Z2V0dmVyc2lvbgotCi1lY2hvIEdpdCBjYW5u
b3QgYmUgZm91bmQsIG5vciBjYW4gcGFja2FnZV92ZXJzaW9uLiBHZW5lcmF0aW5nIHVua25vd24g
dmVyc2lvbi4KLQotc2V0IHZlcnNpb249dW5rbm93bgotCi1nb3RvIDpnb3R2ZXJzaW9uCi0KLTpn
ZXR2ZXJzaW9uCi0KLWZvciAvZiAiZGVsaW1zPT0gdG9rZW5zPTIiICUldiBpbiAoJX5kcHMwLi5c
cGFja2FnZV92ZXJzaW9uKSBkbyBzZXQgdmVyc2lvbj0lJXYKLXNldCB2ZXJzaW9uPSF2ZXJzaW9u
OiI9IQotCi06Z290dmVyc2lvbgotCi1zZXQgdmVyc2lvbj0hdmVyc2lvbjogPSEKLXNldCB2ZXJz
aW9uX291dD0jZGVmaW5lICV+MiAiJXZlcnNpb24lIgotCi1lY2hvICV2ZXJzaW9uX291dCU+ICIl
fjFfdGVtcCIKLQotZWNobyBuIHwgY29tcCAiJX4xX3RlbXAiICIlfjEiID4gTlVMIDI+IE5VTAot
Ci1pZiBub3QgZXJyb3JsZXZlbCAxIGdvdG8gZXhpdAotCi1jb3B5IC95ICIlfjFfdGVtcCIgIiV+
MSIKLQotOmV4aXQKLQotZGVsICIlfjFfdGVtcCIKK0BlY2hvIG9mZg0KKw0KK3NldGxvY2FsIGVu
YWJsZWV4dGVuc2lvbnMgZW5hYmxlZGVsYXllZGV4cGFuc2lvbg0KKw0KK2ZvciAvZiAlJXYgaW4g
KCdjZCAiJX5kcDAuLiIgXiZeJiBnaXQgc3RhdHVzIF4+TlVMIDJePk5VTCBeJl4mIGdpdCBkZXNj
cmliZSAtLXRhZ3MgLS1tYXRjaCAidioiIC0tZGlydHkgMl4+TlVMJykgZG8gc2V0IHZlcnNpb249
JSV2DQorDQoraWYgbm90ICIldmVyc2lvbiUiPT0iIiBzZXQgdmVyc2lvbj0hdmVyc2lvbjp+MSEg
JiYgZ290byA6Z290dmVyc2lvbg0KKw0KK2lmIGV4aXN0ICIlfmRwMC4uXHBhY2thZ2VfdmVyc2lv
biIgZ290byA6Z2V0dmVyc2lvbg0KKw0KK2VjaG8gR2l0IGNhbm5vdCBiZSBmb3VuZCwgbm9yIGNh
biBwYWNrYWdlX3ZlcnNpb24uIEdlbmVyYXRpbmcgdW5rbm93biB2ZXJzaW9uLg0KKw0KK3NldCB2
ZXJzaW9uPXVua25vd24NCisNCitnb3RvIDpnb3R2ZXJzaW9uDQorDQorOmdldHZlcnNpb24NCisN
Citmb3IgL2YgImRlbGltcz09IHRva2Vucz0yIiAlJXYgaW4gKCV+ZHBzMC4uXHBhY2thZ2VfdmVy
c2lvbikgZG8gc2V0IHZlcnNpb249JSV2DQorc2V0IHZlcnNpb249IXZlcnNpb246Ij0hDQorDQor
OmdvdHZlcnNpb24NCisNCitzZXQgdmVyc2lvbj0hdmVyc2lvbjogPSENCitzZXQgdmVyc2lvbl9v
dXQ9I2RlZmluZSAlfjIgIiV2ZXJzaW9uJSINCisNCitlY2hvICV2ZXJzaW9uX291dCU+ICIlfjFf
dGVtcCINCisNCitlY2hvIG4gfCBjb21wICIlfjFfdGVtcCIgIiV+MSIgPiBOVUwgMj4gTlVMDQor
DQoraWYgbm90IGVycm9ybGV2ZWwgMSBnb3RvIGV4aXQNCisNCitjb3B5IC95ICIlfjFfdGVtcCIg
IiV+MSINCisNCis6ZXhpdA0KKw0KK2RlbCAiJX4xX3RlbXAiDQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Rlc3RzL29wdXNf
YmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3Rlc3RzL29wdXNfYmVuY2htYXJrLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZGMxMGZlNWU5
MTliMWFhYjgyYzRmZDY5ZDJlNmE2NzkyOTA3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvdGVzdHMvb3B1c19i
ZW5jaG1hcmsuY2MKQEAgLTAsMCArMSwyMjQgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUg
PGNzdGRpbz4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGN0aW1lPgorI2luY2x1ZGUg
PGxpbWl0cz4KKworI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCisjaW5jbHVkZSAi
YmFzZS9wYXRoX3NlcnZpY2UuaCIKKyNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9vcHVzL3NyYy9pbmNsdWRlL29wdXMu
aCIKKworLy8gU2V0IHRvIDEgdG8gZ2VuZXJhdGUgZ29sZGVuIHZhbHVlcyBpbnN0ZWFkIG9mIGNo
ZWNraW5nIGFnYWluc3QgdGhlbS4KKy8vIFVzZWQgdG8gZWFzZSB1cGRhdGluZyB3aGVuIG5ldyBy
ZWZlcmVuY2VzIGFyZSBiZXR0ZXIgb3IgYWNjZXB0YWJsZS4KKyNkZWZpbmUgUkVHRU5FUkFURV9S
RUZFUkVOQ0VTIDAKKworbmFtZXNwYWNlIHsKKworY29uc3RleHByIGludCBSRVRSSUVTID0gMzsK
K2NvbnN0ZXhwciBpbnQgTUFYX0ZSQU1FX1NBTVAgPSA1NzYwOyAgLy8gMTIwbXMgKiA0OGtIegor
CitiYXNlOjpGaWxlUGF0aCBHZXREYXRhUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUp
IHsKKyAgYmFzZTo6RmlsZVBhdGggcGF0aDsKKyAgRENIRUNLKGJhc2U6OlBhdGhTZXJ2aWNlOjpH
ZXQoYmFzZTo6RElSX1NPVVJDRV9ST09ULCAmcGF0aCkpOworICByZXR1cm4gcGF0aC5BcHBlbmRB
U0NJSSgidGhpcmRfcGFydHkiKQorICAgICAgLkFwcGVuZEFTQ0lJKCJvcHVzIikKKyAgICAgIC5B
cHBlbmRBU0NJSSgidGVzdHMiKQorICAgICAgLkFwcGVuZEFTQ0lJKCJyZXNvdXJjZXMiKQorICAg
ICAgLkFwcGVuZEFTQ0lJKGZpbGVuYW1lKTsKK30KKwordm9pZCBvcHVzX3J1bihpbnQgZnJhbWVf
c2l6ZV9tcywKKyAgICAgICAgICAgICAgaW50IHNhbXBsaW5nX2toeiwKKyAgICAgICAgICAgICAg
aW50IGNoYW5uZWxzLAorICAgICAgICAgICAgICBpbnQgYml0X3JhdGUsCisgICAgICAgICAgICAg
IGludCBjb21wbGV4aXR5LAorICAgICAgICAgICAgICBzaXplX3QgYXVkaW9fZHVyYXRpb25fc2Vj
LAorICAgICAgICAgICAgICBmbG9hdCogZW5jb2RpbmdfcnRmLAorICAgICAgICAgICAgICBmbG9h
dCogZGVjb2RpbmdfcnRmKSB7CisgIGNvbnN0IGludCBmcmFtZV9zaXplID0gZnJhbWVfc2l6ZV9t
cyAqIHNhbXBsaW5nX2toejsKKyAgY29uc3QgaW50IGFwcGxpY2F0aW9uID0KKyAgICAgIGNoYW5u
ZWxzID09IDEgPyBPUFVTX0FQUExJQ0FUSU9OX1ZPSVAgOiBPUFVTX0FQUExJQ0FUSU9OX0FVRElP
OworCisgIC8qIFJlYWQgUENNICovCisgIGF1dG8gaW5fZmlsZW5hbWUgPSBHZXREYXRhUGF0aCgi
c3BlZWNoX21vbm9fMzJfNDhrSHoucGNtIikudmFsdWUoKTsKKyAgRklMRSogZnAgPSBmb3Blbihp
bl9maWxlbmFtZS5jX3N0cigpLCAicmIiKTsKKworICAvLyBUT0RPKGIvMTAwMjk3Myk6IFJldmll
dyBlcnJvciBoYW5kbGluZy4gQVNTRVJUXyoganVzdCByZXR1cm4gZnJvbSBmdW5jdGlvbiwKKyAg
Ly8gICAgICAgICAgICAgICAgICBtZWFuaW5nIGNhbGxpbmcgY29kZSBpcyBleGVjdXRlZC4KKyAg
Ly8gV2UgbWlnaHQgd2FudCB0byBmYWN0b3JpemUgZW5jb2RlciBjcmVhdGlvbiBhbnl3YXkgKHJl
YWQgcGNtIG9uY2UgaW5zdGVhZAorICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBy
ZS1vcGVuaW5nIGl0IGZvciBlYWNoIGJpdHJhdGUgLyBjb21wbGV4aXR5KS4KKyAgQVNTRVJUX05F
KGZwLCBudWxscHRyKSA8PCAiQ291bGQgbm90IG9wZW46ICIgPDwgaW5fZmlsZW5hbWU7CisKKyAg
ZnNlZWsoZnAsIDAsIFNFRUtfRU5EKTsKKyAgY29uc3Qgc2l6ZV90IHRvdGFsX3NhbXAgPSBmdGVs
bChmcCkgLyBzaXplb2YoaW50MTZfdCk7CisgIHJld2luZChmcCk7CisKKyAgaW50MTZfdCogaW5f
ZGF0YSA9CisgICAgICAoaW50MTZfdCopbWFsbG9jKCh0b3RhbF9zYW1wICsgZnJhbWVfc2l6ZSAq
IGNoYW5uZWxzKSAqIHNpemVvZigqaW5fZGF0YSkpOworICBjb25zdCBzaXplX3QgY2hlY2tfdG90
YWxfc2FtcCA9CisgICAgICBmcmVhZCgmaW5fZGF0YVswXSwgc2l6ZW9mKGludDE2X3QpLCB0b3Rh
bF9zYW1wLCBmcCk7CisgIEFTU0VSVF9FUShjaGVja190b3RhbF9zYW1wLCB0b3RhbF9zYW1wKSA8
PCAiRXJyb3IgcmVhZGluZyBpbnB1dCBwY20gZmlsZS4iOworICBmY2xvc2UoZnApOworCisgIGNv
bnN0IG9wdXNfaW50MzIgbWF4X2J5dGVzID0gZnJhbWVfc2l6ZSAqIGNoYW5uZWxzICogc2l6ZW9m
KGludDE2X3QpOworICBpbnQxNl90KiBvdXRfZGF0YSA9CisgICAgICAoaW50MTZfdCopbWFsbG9j
KChmcmFtZV9zaXplICogY2hhbm5lbHMpICogc2l6ZW9mKGludDE2X3QpKTsKKyAgdWludDhfdCog
Yml0X3N0cmVhbSA9ICh1aW50OF90KiltYWxsb2MobWF4X2J5dGVzICogc2l6ZW9mKCpiaXRfc3Ry
ZWFtKSk7CisKKyAgLyogQ3JlYXRlIGFuIGVuY29kZXIgKi8KKyAgb3B1c19pbnQzMiByZXM7Cisg
IE9wdXNFbmNvZGVyKiBlbmMgPQorICAgICAgb3B1c19lbmNvZGVyX2NyZWF0ZShzYW1wbGluZ19r
aHogKiAxMDAwLCBjaGFubmVscywgYXBwbGljYXRpb24sICZyZXMpOworICBBU1NFUlRfVFJVRShy
ZXMgPT0gT1BVU19PSyAmJiBlbmMgIT0gbnVsbHB0cikKKyAgICAgIDw8ICJDb3VsZCBub3QgaW5z
dGFudGlhdGUgYW4gT3B1cyBlbmNvZGVyLiBFcnJvciBjb2RlOiAiIDw8IHJlczsKKworICBvcHVz
X2VuY29kZXJfY3RsKGVuYywgT1BVU19TRVRfQklUUkFURShiaXRfcmF0ZSkpOworICBvcHVzX2Vu
Y29kZXJfY3RsKGVuYywgT1BVU19TRVRfQ09NUExFWElUWShjb21wbGV4aXR5KSk7CisKKyAgLyog
Q3JlYXRlIGEgZGVjb2RlciAqLworICBPcHVzRGVjb2RlciogZGVjID0gb3B1c19kZWNvZGVyX2Ny
ZWF0ZShzYW1wbGluZ19raHogKiAxMDAwLCBjaGFubmVscywgJnJlcyk7CisgIEFTU0VSVF9UUlVF
KHJlcyA9PSBPUFVTX09LICYmIGRlYyAhPSBudWxscHRyKQorICAgICAgPDwgIkNvdWxkIG5vdCBp
bnN0YW50aWF0ZSBhbiBPcHVzIGRlY29kZXIuIEVycm9yIGNvZGU6ICIgPDwgcmVzOworCisgIC8q
IFRyYW5zY29kZSB1cCB0byB8YXVkaW9fZHVyYXRpb25fc2VjfCBvbmx5ICovCisgIHNpemVfdCBk
YXRhX3BvaW50ZXIgPSAwOworICBzaXplX3QgZGVjb2RlZF9tcyA9IDA7CisgIGZsb2F0IGVuY29k
aW5nX3NlYyA9IDA7CisgIGZsb2F0IGRlY29kaW5nX3NlYyA9IDA7CisgIHdoaWxlIChkZWNvZGVk
X21zIDwgYXVkaW9fZHVyYXRpb25fc2VjICogMTAwMCkgeworICAgIC8qIEVuY29kZSAqLworICAg
IGNsb2NrX3QgY2xvY2tzID0gY2xvY2soKTsKKyAgICByZXMgPSBvcHVzX2VuY29kZShlbmMsICZp
bl9kYXRhW2RhdGFfcG9pbnRlcl0sIGZyYW1lX3NpemUsICZiaXRfc3RyZWFtWzBdLAorICAgICAg
ICAgICAgICAgICAgICAgIG1heF9ieXRlcyk7CisgICAgY2xvY2tzID0gY2xvY2soKSAtIGNsb2Nr
czsKKyAgICBFWFBFQ1RfR1QocmVzLCAwKSA8PCAiTm8gYnl0ZXMgd2VyZSBlbmNvZGVkIHN1Y2Nl
c3NmdWxseS4iOworCisgICAgZW5jb2Rpbmdfc2VjICs9IDEuICogY2xvY2tzIC8gQ0xPQ0tTX1BF
Ul9TRUM7CisKKyAgICAvKiBEZWNvZGUgKi8KKyAgICBjbG9ja3MgPSBjbG9jaygpOworICAgIHJl
cyA9CisgICAgICAgIG9wdXNfZGVjb2RlKGRlYywgJmJpdF9zdHJlYW1bMF0sIHJlcywgJm91dF9k
YXRhWzBdLCBNQVhfRlJBTUVfU0FNUCwgMCk7CisgICAgY2xvY2tzID0gY2xvY2soKSAtIGNsb2Nr
czsKKyAgICBFWFBFQ1RfRVEocmVzLCBmcmFtZV9zaXplKSA8PCAiV3JvbmcgbnVtYmVyIG9mIHNh
bXBsZXMgcmV0dXJuZWQgYnkgZGVjb2RlciI7CisKKyAgICBkZWNvZGluZ19zZWMgKz0gMS4gKiBj
bG9ja3MgLyBDTE9DS1NfUEVSX1NFQzsKKworICAgIC8qIFVwZGF0ZSBkYXRhIHBvaW50ZXIgYW5k
IHRpbWUgdHJhY2tlciAqLworICAgIGRhdGFfcG9pbnRlciArPSBmcmFtZV9zaXplICogY2hhbm5l
bHM7CisgICAgZGVjb2RlZF9tcyArPSBmcmFtZV9zaXplX21zOworICB9CisKKyAgKmVuY29kaW5n
X3J0ZiA9IGVuY29kaW5nX3NlYyAvIGF1ZGlvX2R1cmF0aW9uX3NlYzsKKyAgKmRlY29kaW5nX3J0
ZiA9IGRlY29kaW5nX3NlYyAvIGF1ZGlvX2R1cmF0aW9uX3NlYzsKKworICAvKiBDbGVhbiB1cCAq
LworICBvcHVzX2VuY29kZXJfZGVzdHJveShlbmMpOworICBvcHVzX2RlY29kZXJfZGVzdHJveShk
ZWMpOworICBmcmVlKGluX2RhdGEpOworICBmcmVlKG91dF9kYXRhKTsKKyAgZnJlZShiaXRfc3Ry
ZWFtKTsKK30KK30gIC8vIG5hbWVzcGFjZQorCitURVNUKE9wdXNCZW5jaG1hcmssIFNwZWVjaE1v
bm80OGtIek5leHVzNSkgeworICBjb25zdCBpbnQgc2FtcGxpbmdfa2h6ID0gNDg7CisgIGNvbnN0
IGludCBjaGFubmVscyA9IDE7CisgIHNpemVfdCBhdWRpb19kdXJhdGlvbl9zZWMgPSAyNDA7Cisg
IGNvbnN0IGludCBmcmFtZV9zaXplX21zID0gMjA7CisgIGNvbnN0ZXhwciBpbnQgbnJfYml0X3Jh
dGVzID0gODsKKyAgaW50MzJfdCBiaXRfcmF0ZXNbbnJfYml0X3JhdGVzXSA9IHs2NDAwMCwgMzIw
MDAsIDI0MDAwLCAxNjAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MjAwMCwgMTAwMDAsIDgwMDAsICA2MDAwfTsKKyAgY29uc3RleHByIGludCBucl9jb21wbGV4aXRp
ZXMgPSAxMTsKKyAgaW50MzJfdCBjb21wbGV4aXRpZXNbbnJfY29tcGxleGl0aWVzXSA9IHswLCAx
LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH07CisKKyNpZiBSRUdFTkVSQVRFX1JFRkVSRU5D
RVMKKyAgZnByaW50ZihzdGRlcnIsICJiaXRyYXRlLGNvbXBsZXhpdHksZW5jb2RpbmdfcnRmLGRl
Y29kaW5nX3J0ZlxuIik7CisjZWxzZQorICAvLyBSZWFsLXRpbWUgZmFjdG9ycywgc2NhbGVkICox
MDAwIGZvciBjb3NtZXRpYyBwdXJwb3NlLgorICAvLyBMb3dlciBpcyBiZXN0LCBhbnkgdmFsdWUg
PD0gMTAwMCBpcyByZWFsLXRpbWUuCisKKyAgLy8gVGhpcyByZWZlcmVuY2UgbnVtYmVycyB3ZXJl
IGdlbmVyYXRlZCBvbiBhIE5FWFVTIDUuCisgIC8vIFRoaXMgbWVhbnMgdGhleSBhcmUgaXJyZWxl
dmFudCBpZiB5b3UgcnVuIHRoZSB0ZXN0IG9uIGEgbGludXggd29ya3N0YXRpb24uCisgIC8vIFRP
RE8oYi8xMDAyOTczKTogSGF2ZSBhIHNldCBvZiByZWZlcmVuY2VzIGJ5IGFyY2hpdGVjdHVyZT8K
KyAgLy8gICAgICAgICAgICAgIE9yIGF0IGxlYXN0LCBkaXNhYmxlIHRoZSB0ZXN0cyBpZiBub3Qg
cnVuIG9uIGV4cGVjdGVkIHRhcmdldC4KKyAgZmxvYXQgZW5jb2RpbmdfcmVmZXJlbmNlW25yX2Jp
dF9yYXRlc11bbnJfY29tcGxleGl0aWVzXSA9IHsKKyAgICAgIC8vIE5COiBSVEYgaXMgZHJvcHBp
bmcgZm9yIGNvbXBsZXhpdGllcyA5IGFuZCAxMCBhdCBiaXRfcmF0ZSA2NDAwMC4KKyAgICAgIC8v
IE9uIGxpbnV4IHg2NCwgaXQgZHJvcHMgZm9yIGNvbXBsZXhpdGllcyA3LCA4LCA5LCAxMC4KKyAg
ICAgIC8vIFRoYXQgc2VlbXMgb2ssIHNhbml0aXplcnMgZG9uJ3QgcmVwb3J0IGFueXRoaW5nLgor
ICAgICAgLy8gSXQgbG9va3MgdG8gYmUgb3BlcmF0aW5nIG1vcmUgb2Z0ZW4gaW4gQ0VMVC1vbmx5
IG1vZGUgY29tcGFyZWQgdG8KKyAgICAgIC8vIEh5YnJpZCBtb2RlIGZvciB0aGlzIHBhcnRpY3Vs
YXIgYXVkaW8gZmlsZSAocG9zc2libHkgYmVjYXVzZSBvZgorICAgICAgLy8gdGhlIHByZXNlbmNl
IG9mIHRoZSBiYWNrZ3JvdW5kIG11c2ljKS4KKyAgICAgIHsxOC4wLCAyMC4yLCAyMi44LCAyNC4x
LCAyOS4zLCAyOS4yLCAzMS41LCAzMS41LCAzNS42LCAxNS41LCAyMS42fSwKKyAgICAgIHsxNi45
LCAxOS4yLCAyMS43LCAyMy4wLCAyOC4xLCAyOC4xLCAzMC4xLCAzMC4xLCAzNC4yLCAzNC4yLCAz
Mi42fSwKKyAgICAgIHsxNi42LCAxOC44LCAyMS4zLCAyMi42LCAyNy44LCAyNy44LCAyOS43LCAy
OS43LCAzMy43LCAzMy43LCAzOS45fSwKKyAgICAgIHsxMi43LCAxMy42LCAyMC45LCAyMi4yLCAy
Ny40LCAyNy4zLCAyOS4yLCAyOS4yLCAzMy4xLCAzMy4wLCAzOS4xfSwKKyAgICAgIHs4LjQsIDku
MSwgMTYuMCwgMTcuMywgMjIuNCwgMjIuNCwgMjQuMiwgMjQuMywgMjcuNywgMjcuNywgMzMuOH0s
CisgICAgICB7OC40LCA5LjEsIDEwLjMsIDExLjIsIDEzLjgsIDEzLjgsIDE0LjcsIDE0LjcsIDE2
LjYsIDE2LjYsIDI2LjZ9LAorICAgICAgezguNCwgOS4wLCAxMC4zLCAxMS4xLCAxMy43LCAxMy43
LCAxNC42LCAxNC42LCAxNi41LCAxNi41LCAyMi42fSwKKyAgICAgIHs4LjMsIDkuMCwgMTAuMiwg
MTEuMSwgMTMuNywgMTMuNywgMTQuNiwgMTQuNiwgMTYuNCwgMTYuNCwgMjIuNX19OworCisgIGZs
b2F0IGRlY29kaW5nX3JlZmVyZW5jZVtucl9iaXRfcmF0ZXNdW25yX2NvbXBsZXhpdGllc10gPSB7
CisgICAgICB7Ny4xLCA3LjUsIDcuNSwgNy41LCA3LjUsIDcuNSwgNy41LCA3LjUsIDcuNSwgNS44
LCA1Ljh9LAorICAgICAgezYuNSwgNi44LCA2LjgsIDYuOCwgNi45LCA2LjksIDYuOSwgNi45LCA2
LjksIDYuOSwgNi4yfSwKKyAgICAgIHs2LjMsIDYuNiwgNi42LCA2LjYsIDYuNywgNi43LCA2Ljcs
IDYuNywgNi43LCA2LjcsIDYuN30sCisgICAgICB7My4yLCAzLjIsIDYuNCwgNi40LCA2LjUsIDYu
NCwgNi40LCA2LjUsIDYuNSwgNi40LCA2LjV9LAorICAgICAgezIuMiwgMi4yLCAzLjEsIDMuMSwg
My4yLCAzLjIsIDMuMiwgMy4yLCAzLjIsIDMuMiwgMy4yfSwKKyAgICAgIHsyLjEsIDIuMSwgMi4x
LCAyLjEsIDIuMiwgMi4yLCAyLjIsIDIuMiwgMi4yLCAxLjksIDIuNX0sCisgICAgICB7Mi4xLCAy
LjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjF9LAorICAgICAg
ezIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xfX07
CisjZW5kaWYKKworICBmb3IgKGludCBpID0gMDsgaSA8IG5yX2JpdF9yYXRlczsgaSsrKSB7Cisg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCBucl9jb21wbGV4aXRpZXM7IGorKykgeworICAgICAgLy8g
VG8gcmVkdWNlIGJyaXR0bGVuZXNzLCBlYWNoIHRlc3QgaXMgcmV0cmllZCBpbmRlcGVuZGVudGx5
LgorI2lmIFJFR0VORVJBVEVfUkVGRVJFTkNFUworICAgICAgZmxvYXQgZW5jb2RpbmdfYmVzdCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgICAgZmxvYXQgZGVj
b2RpbmdfYmVzdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworI2Vu
ZGlmCisgICAgICBmb3IgKGludCBrID0gMDsgayA8IFJFVFJJRVM7IGsrKykgeworICAgICAgICBm
bG9hdCBlbmNvZGluZ19ydGY7CisgICAgICAgIGZsb2F0IGRlY29kaW5nX3J0ZjsKKyAgICAgICAg
b3B1c19ydW4oZnJhbWVfc2l6ZV9tcywgc2FtcGxpbmdfa2h6LCBjaGFubmVscywgYml0X3JhdGVz
W2ldLAorICAgICAgICAgICAgICAgICBjb21wbGV4aXRpZXNbal0sIGF1ZGlvX2R1cmF0aW9uX3Nl
YywgJmVuY29kaW5nX3J0ZiwKKyAgICAgICAgICAgICAgICAgJmRlY29kaW5nX3J0Zik7CisgICAg
ICAgIC8vIFNjYWxlIHRvIG1hdGNoIHJlZmVyZW5jZSB1bml0LgorICAgICAgICBlbmNvZGluZ19y
dGYgKj0gMTAwMDsKKyAgICAgICAgZGVjb2RpbmdfcnRmICo9IDEwMDA7CisKKyNpZiBSRUdFTkVS
QVRFX1JFRkVSRU5DRVMKKyAgICAgICAgZW5jb2RpbmdfYmVzdCA9IHN0ZDo6bWluKGVuY29kaW5n
X2Jlc3QsIGVuY29kaW5nX3J0Zik7CisgICAgICAgIGRlY29kaW5nX2Jlc3QgPSBzdGQ6Om1pbihk
ZWNvZGluZ19iZXN0LCBkZWNvZGluZ19ydGYpOworI2Vsc2UKKyAgICAgICAgLy8gQWxsb3cgNSUg
cmVsYXRpdmUgZXJyb3IuCisgICAgICAgIGF1dG8gZW5jb2RpbmdfcmVmID0gZW5jb2RpbmdfcmVm
ZXJlbmNlW2ldW2pdOworICAgICAgICBhdXRvIGRlY29kaW5nX3JlZiA9IGRlY29kaW5nX3JlZmVy
ZW5jZVtpXVtqXTsKKyAgICAgICAgY29uc3QgZmxvYXQgZW5jb2RpbmdfYWJzX2Vycm9yID0gLjA1
ICogZW5jb2RpbmdfcmVmOworICAgICAgICBjb25zdCBmbG9hdCBkZWNvZGluZ19hYnNfZXJyb3Ig
PSAuMDUgKiBkZWNvZGluZ19yZWY7CisgICAgICAgIGlmIChzdGQ6OmFicyhlbmNvZGluZ19ydGYg
LSBlbmNvZGluZ19yZWYpIDwgZW5jb2RpbmdfYWJzX2Vycm9yKSB7CisgICAgICAgICAgU1VDQ0VF
RCgpOworICAgICAgICAgIGJyZWFrOyAgLy8gTm8gbmVlZCBmb3IgcmV0cnkuCisgICAgICAgIH0g
ZWxzZSBpZiAoayA9PSBSRVRSSUVTIC0gMSkgeworICAgICAgICAgIC8vIE5iOiBJZiByZXR1cm5l
ZCB2YWx1ZSBpcyBjb25zaXN0ZW50bHkgbG93ZXIgKGJldHRlciksCisgICAgICAgICAgLy8gICAg
IG9uZSBqdXN0IGhhdmUgdG8gdXBkYXRlIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgRVhQRUNU
X05FQVIoZW5jb2RpbmdfcnRmLCBlbmNvZGluZ19yZWYsIGVuY29kaW5nX2Fic19lcnJvcikKKyAg
ICAgICAgICAgICAgPDwgIk1pc21hdGNoIGZvciBiaXRyYXRlICIgPDwgYml0X3JhdGVzW2ldIDw8
ICIgYW5kIGNvbXBsZXhpdHkgIgorICAgICAgICAgICAgICA8PCBjb21wbGV4aXRpZXNbal07Cisg
ICAgICAgICAgRVhQRUNUX05FQVIoZGVjb2RpbmdfcnRmLCBkZWNvZGluZ19yZWYsIGRlY29kaW5n
X2Fic19lcnJvcikKKyAgICAgICAgICAgICAgPDwgIk1pc21hdGNoIGZvciBiaXRyYXRlICIgPDwg
Yml0X3JhdGVzW2ldIDw8ICIgYW5kIGNvbXBsZXhpdHkgIgorICAgICAgICAgICAgICA8PCBjb21w
bGV4aXRpZXNbal07CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgfQorI2lmIFJFR0VORVJBVEVf
UkVGRVJFTkNFUworICAgICAgZnByaW50ZihzdGRlcnIsICIlZCwgJWQsICUuMmYsICUuMmZcbiIs
IGJpdF9yYXRlc1tpXSwgY29tcGxleGl0aWVzW2pdLAorICAgICAgICAgICAgICBlbmNvZGluZ19i
ZXN0LCBkZWNvZGluZ19iZXN0KTsKKyNlbmRpZgorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Rlc3Rz
L3Jlc291cmNlcy8uZ2l0aWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3Rlc3RzL3Jlc291cmNlcy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZjNTAyZmZhNDk5MzVlMWQwYzZkOGIyNjNiYjFkMzZmZTI5NDBiMGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
dGVzdHMvcmVzb3VyY2VzLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorKiovKi5wY20KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy90ZXN0cy9yZXNvdXJjZXMvc3BlZWNoX21vbm9fMzJfNDhrSHoucGNtLnNoYTEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvdGVzdHMvcmVzb3Vy
Y2VzL3NwZWVjaF9tb25vXzMyXzQ4a0h6LnBjbS5zaGExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzZTM1NjBlNDc0
MDlmM2U2NmY3ZmFjNTVjZmFmMTM2ZThkNTRkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvdGVzdHMvcmVzb3Vy
Y2VzL3NwZWVjaF9tb25vXzMyXzQ4a0h6LnBjbS5zaGExCkBAIC0wLDAgKzEgQEAKKzAwOWEzZWU3
Nzg3NjdjMjQwMmIxZDJjOTIwYmMyNDQ5MjY1ZjVhMmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394489</attachid>
            <date>2020-03-25 06:57:43 -0700</date>
            <delta_ts>2020-03-25 08:59:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209540-20200325145741.patch</filename>
            <type>text/plain</type>
            <size>836609</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzYjliZjZmODE4NzkyZDFlNmM5ZjRlMTBlZmYxZWUwNGVhMGQ5NDYyLi5hMDk1
ODc1ZDA5N2JhNTkwYTg0ZTBmOTlkYmExMDBhYThkOTc1ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMy0yNSAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQnVtcCBvcHVzIHRvIE04MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvdGhp
cmRfcGFydHkvb3B1czogVXBkYXRlZC4KKwogMjAyMC0wMy0xOSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENoZXJyeSBwaWNrIHVzcnNjdHAg
Y29tbWl0IDc5MGE3YTI1NTVhZWZiMzkyYTVhNjk5MjNmMWU5ZDE3YjQ5Njg0NjcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9C
VUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9CVUlMRC5nbgppbmRleCBiNTRmODU2ODgyMzBlM2IxN2MxYWRmZTAxMzBlODVmYWQ0OWUw
YTJhLi5hM2M5ODYxODFmNjNjYmU2MGE1M2NhOWNlOWUzNzkxN2NiZDViZmJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL0JVSUxELmduCkBAIC0zNSw2ICszNSw3IEBAIGNvbmZpZygib3B1c19wcml2YXRlX2Nv
bmZpZyIpIHsKICAgZGVmaW5lcyA9IFsKICAgICAiT1BVU19CVUlMRCIsCiAgICAgIk9QVVNfRVhQ
T1JUPSIsCisgICAgIkVOQUJMRV9IQVJERU5JTkciLAogCiAgICAgIyBQcmVmZXIgYWxsb2NhKCkg
b3ZlciB2YXJpYWJsZSBsZW5ndGggYXJyYXlzIHdoaWNoIGFyZSBvZnRlbiBpbmVmZmljaWVudDsK
ICAgICAjIHRoZSBvcHVzIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IGhhbmRsZSB0aGlzIGNvcnJl
Y3RseSBwZXItcGxhdGZvcm0uCkBAIC02NCw2ICs2NSwxMSBAQCBjb25maWcoIm9wdXNfcHJpdmF0
ZV9jb25maWciKSB7CiAgICAgXQogICB9CiAKKyAgaWYgKGlzX29mZmljaWFsX2J1aWxkKSB7Cisg
ICAgIyBEaXNhYmxlIGFzc2VydGlvbiBtZXNzYWdlcyBmcm9tIEVOQUJMRV9IQVJERU5JTkcsIHNh
dmluZyAxNi40IGtiLgorICAgIGRlZmluZXMgKz0gWyAiQ0hST01JVU1fTk9fTE9HR0lORyIgXQor
ICB9CisKICAgaWYgKGlzX2RlYnVnKSB7CiAgICAgIyBUdXJuIG9mZiBhIHdhcm5pbmcgaW4gb3B1
c19kZWNvZGVyLmMgd2hlbiBjb21waWxpbmcgd2l0aG91dCBvcHRpbWl6YXRpb24uCiAgICAgZGVm
aW5lcyArPSBbICJPUFVTX1dJTExfQkVfU0xPVyIgXQpAQCAtMTQ4LDEyICsxNTQsMjMgQEAgY29u
ZmlnKCJvcHVzX3Rlc3RfY29uZmlnIikgewogICB9CiB9CiAKKyMgR04gb3JkZXJzIGZsYWdzIG9u
IGEgdGFyZ2V0IGJlZm9yZSBmbGFncyBmcm9tIGNvbmZpZ3MuIFRoZSBkZWZhdWx0IGNvbmZpZwor
IyBhZGRzIC1XYWxsLCBhbmQgdGhpcyBmbGFnIGhhcyB0byBiZSBhZnRlciAtV2FsbCAtLSBzbyB0
aGV5IG5lZWQgdG8KKyMgY29tZSBmcm9tIGEgY29uZmlnIGFuZCBjYW4ndCBiZSBvbiB0aGUgdGFy
Z2V0IGRpcmVjdGx5LgorY29uZmlnKCJvcHVzX3Rlc3Rfbm9fbm9ubnVsbF9jb25maWciKSB7Cisg
ICMgdGVzdHMgbWF5IHBhc3MgYSBudWxsIHBvaW50ZXIgdG8gZnVuY3Rpb25zIGZvciBhbiBhcmd1
bWVudCBtYXJrZWQgYXMKKyAgIyByZXF1aXJpbmcgYSBub24tbnVsbCB2YWx1ZSBieSB0aGUgbm9u
bnVsbCBmdW5jdGlvbiBhdHRyaWJ1dGUsIGFuZCBleHBlY3RzCisgICMgdGhlIGZ1bmN0aW9uIGNh
bGwgdG8gZmFpbC4gRGlzYWJsZSB0aGUgLVdub25udWxsIG9wdGlvbiB0byBhdm9pZCBhCisgICMg
Y29tcGlsYXRpb24gZXJyb3IgaWYgLVdlcnJvciBpcyBzcGVjaWZpZWQuCisgIGlmIChpc19jbGFu
ZykgeworICAgIGNmbGFncyA9IFsgIi1Xbm8tbm9ubnVsbCIgXQorICB9Cit9CisKIGlmICh1c2Vf
b3B1c19hcm1fcnRjZCkgewogICBhY3Rpb24oImNvbnZlcnRfcnRjZF9hc3NlbWJsZXIiKSB7CiAg
ICAgc2NyaXB0ID0gImNvbnZlcnRfcnRjZF9hc3NlbWJsZXIucHkiCi0gICAgb3V0cHV0cyA9IFsK
LSAgICAgICIkdGFyZ2V0X2dlbl9kaXIvY2VsdF9waXRjaF94Y29ycl9hcm1fZ251LlMiLAotICAg
IF0KKyAgICBvdXRwdXRzID0gWyAiJHRhcmdldF9nZW5fZGlyL2NlbHRfcGl0Y2hfeGNvcnJfYXJt
X2dudS5TIiBdCiAgICAgYXJncyA9IFsKICAgICAgIHJlYmFzZV9wYXRoKCIvL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NlbHQvYXJtL2FybTJnbnUucGwiLCByb290X2J1aWxkX2RpciksCiAgICAgICBy
ZWJhc2VfcGF0aCgiLy90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X3BpdGNoX3hj
b3JyX2FybS5zIiwKQEAgLTE2Nyw5ICsxODQsMTAgQEAgaWYgKHVzZV9vcHVzX3g4Nl9vcHRpbWl6
YXRpb24pIHsKICAgc291cmNlX3NldCgib3B1c19zc2U0MSIpIHsKICAgICBzb3VyY2VzID0gWwog
ICAgICAgInNyYy9jZWx0L3g4Ni9waXRjaF9zc2U0XzEuYyIsCi0gICAgICAic3JjL3NpbGsveDg2
L05TUV9kZWxfZGVjX3NzZS5jIiwKLSAgICAgICJzcmMvc2lsay94ODYvTlNRX3NzZS5jIiwKLSAg
ICAgICJzcmMvc2lsay94ODYvVkFEX3NzZS5jIiwKKyAgICAgICJzcmMvc2lsay94ODYvTlNRX2Rl
bF9kZWNfc3NlNF8xLmMiLAorICAgICAgInNyYy9zaWxrL3g4Ni9OU1Ffc3NlNF8xLmMiLAorICAg
ICAgInNyYy9zaWxrL3g4Ni9WQURfc3NlNF8xLmMiLAorICAgICAgInNyYy9zaWxrL3g4Ni9WUV9X
TWF0X0VDX3NzZTRfMS5jIiwKICAgICBdCiAKICAgICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KQEAgLTI0MCw2ICsyNTgsNyBAQCBzdGF0aWNf
bGlicmFyeSgib3B1cyIpIHsKICAgICAic3JjL2luY2x1ZGUvb3B1c19jdXN0b20uaCIsCiAgICAg
InNyYy9pbmNsdWRlL29wdXNfZGVmaW5lcy5oIiwKICAgICAic3JjL2luY2x1ZGUvb3B1c19tdWx0
aXN0cmVhbS5oIiwKKyAgICAic3JjL2luY2x1ZGUvb3B1c19wcm9qZWN0aW9uLmgiLAogICAgICJz
cmMvaW5jbHVkZS9vcHVzX3R5cGVzLmgiLAogICAgICJzcmMvc2lsay9BMk5MU0YuYyIsCiAgICAg
InNyYy9zaWxrL0FQSS5oIiwKQEAgLTM0MSw2ICszNjAsOCBAQCBzdGF0aWNfbGlicmFyeSgib3B1
cyIpIHsKICAgICAic3JjL3NpbGsvdHlwZWRlZi5oIiwKICAgICAic3JjL3NyYy9hbmFseXNpcy5j
IiwKICAgICAic3JjL3NyYy9hbmFseXNpcy5oIiwKKyAgICAic3JjL3NyYy9tYXBwaW5nX21hdHJp
eC5jIiwKKyAgICAic3JjL3NyYy9tYXBwaW5nX21hdHJpeC5oIiwKICAgICAic3JjL3NyYy9tbHAu
YyIsCiAgICAgInNyYy9zcmMvbWxwLmgiLAogICAgICJzcmMvc3JjL21scF9kYXRhLmMiLApAQCAt
MzUwLDYgKzM3MSw5IEBAIHN0YXRpY19saWJyYXJ5KCJvcHVzIikgewogICAgICJzcmMvc3JjL29w
dXNfbXVsdGlzdHJlYW0uYyIsCiAgICAgInNyYy9zcmMvb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVy
LmMiLAogICAgICJzcmMvc3JjL29wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlci5jIiwKKyAgICAic3Jj
L3NyYy9vcHVzX3ByaXZhdGUuaCIsCisgICAgInNyYy9zcmMvb3B1c19wcm9qZWN0aW9uX2VuY29k
ZXIuYyIsCisgICAgInNyYy9zcmMvb3B1c19wcm9qZWN0aW9uX2RlY29kZXIuYyIsCiAgICAgInNy
Yy9zcmMvcmVwYWNrZXRpemVyLmMiLAogICAgICJzcmMvc3JjL3RhbnNpZ190YWJsZS5oIiwKICAg
XQpAQCAtMzc0LDYgKzM5OCw3IEBAIHN0YXRpY19saWJyYXJ5KCJvcHVzIikgewogICBpZiAodXNl
X29wdXNfeDg2X29wdGltaXphdGlvbikgewogICAgIHNvdXJjZXMgKz0gWwogICAgICAgInNyYy9j
ZWx0L3g4Ni9jZWx0X2xwY19zc2UuaCIsCisgICAgICAic3JjL2NlbHQveDg2L2NlbHRfbHBjX3Nz
ZTRfMS5jIiwKICAgICAgICJzcmMvY2VsdC94ODYvcGl0Y2hfc3NlLmMiLAogICAgICAgInNyYy9j
ZWx0L3g4Ni9waXRjaF9zc2UuaCIsCiAgICAgICAic3JjL2NlbHQveDg2L3BpdGNoX3NzZTIuYyIs
CkBAIC01MDIsOSArNTI3LDcgQEAgc3RhdGljX2xpYnJhcnkoIm9wdXMiKSB7CiB9CiAKIGV4ZWN1
dGFibGUoIm9wdXNfY29tcGFyZSIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAic3JjL3NyYy9vcHVz
X2NvbXBhcmUuYyIsCi0gIF0KKyAgc291cmNlcyA9IFsgInNyYy9zcmMvb3B1c19jb21wYXJlLmMi
IF0KIAogICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2Nv
ZGUiIF0KICAgY29uZmlncyArPSBbCkBAIC01MTksOSArNTQyLDcgQEAgZXhlY3V0YWJsZSgib3B1
c19jb21wYXJlIikgewogfQogCiBleGVjdXRhYmxlKCJvcHVzX2RlbW8iKSB7Ci0gIHNvdXJjZXMg
PSBbCi0gICAgInNyYy9zcmMvb3B1c19kZW1vLmMiLAotICBdCisgIHNvdXJjZXMgPSBbICJzcmMv
c3JjL29wdXNfZGVtby5jIiBdCiAKICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpjaHJvbWl1bV9jb2RlIiBdCiAgIGNvbmZpZ3MgKz0gWwpAQCAtNTM2LDE5ICs1NTcsMTYg
QEAgZXhlY3V0YWJsZSgib3B1c19kZW1vIikgewogfQogCiB0ZXN0KCJ0ZXN0X29wdXNfYXBpIikg
ewotICBzb3VyY2VzID0gWwotICAgICJzcmMvdGVzdHMvdGVzdF9vcHVzX2FwaS5jIiwKLSAgXQor
ICBzb3VyY2VzID0gWyAic3JjL3Rlc3RzL3Rlc3Rfb3B1c19hcGkuYyIgXQogCiAgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdz
ICs9IFsKICAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCiAg
ICAgIjpvcHVzX3Rlc3RfY29uZmlnIiwKKyAgICAiOm9wdXNfdGVzdF9ub19ub25udWxsX2NvbmZp
ZyIsCiAgIF0KIAotICBkZXBzID0gWwotICAgICI6b3B1cyIsCi0gIF0KKyAgZGVwcyA9IFsgIjpv
cHVzIiBdCiB9CiAKIHRlc3QoInRlc3Rfb3B1c19lbmNvZGUiKSB7CkBAIC01NjMsNDUgKzU4MSwy
NCBAQCB0ZXN0KCJ0ZXN0X29wdXNfZW5jb2RlIikgewogICAgICI6b3B1c190ZXN0X2NvbmZpZyIs
CiAgIF0KIAotICBkZXBzID0gWwotICAgICI6b3B1cyIsCi0gIF0KLX0KLQotIyBHTiBvcmRlcnMg
ZmxhZ3Mgb24gYSB0YXJnZXQgYmVmb3JlIGZsYWdzIGZyb20gY29uZmlncy4gVGhlIGRlZmF1bHQg
Y29uZmlnCi0jIGFkZHMgLVdhbGwsIGFuZCB0aGlzIGZsYWcgaGF2ZSB0byBiZSBhZnRlciAtV2Fs
bCAtLSBzbyB0aGV5IG5lZWQgdG8KLSMgY29tZSBmcm9tIGEgY29uZmlnIGFuZCBjYW4ndCBiZSBv
biB0aGUgdGFyZ2V0IGRpcmVjdGx5LgotY29uZmlnKCJ0ZXN0X29wdXNfZGVjb2RlX2NvbmZpZyIp
IHsKLSAgIyB0ZXN0X29wdXNfZGVjb2RlIHBhc3NlcyBhIG51bGwgcG9pbnRlciB0byBvcHVzX2Rl
Y29kZSgpIGZvciBhbiBhcmd1bWVudAotICAjIG1hcmtlZCBhcyByZXF1aXJpbmcgYSBub24tbnVs
bCB2YWx1ZSBieSB0aGUgbm9ubnVsbCBmdW5jdGlvbiBhdHRyaWJ1dGUsCi0gICMgYW5kIGV4cGVj
dHMgb3B1c19kZWNvZGUoKSB0byBmYWlsLiBEaXNhYmxlIHRoZSAtV25vbm51bGwgb3B0aW9uIHRv
IGF2b2lkCi0gICMgYSBjb21waWxhdGlvbiBlcnJvciBpZiAtV2Vycm9yIGlzIHNwZWNpZmllZC4K
LSAgaWYgKGlzX2NsYW5nKSB7Ci0gICAgY2ZsYWdzID0gWyAiLVduby1ub25udWxsIiBdCi0gIH0K
KyAgZGVwcyA9IFsgIjpvcHVzIiBdCiB9CiAKIHRlc3QoInRlc3Rfb3B1c19kZWNvZGUiKSB7Ci0g
IHNvdXJjZXMgPSBbCi0gICAgInNyYy90ZXN0cy90ZXN0X29wdXNfZGVjb2RlLmMiLAotICBdCisg
IHNvdXJjZXMgPSBbICJzcmMvdGVzdHMvdGVzdF9vcHVzX2RlY29kZS5jIiBdCiAKICAgY29uZmln
cyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCiAgIGNvbmZp
Z3MgKz0gWwogICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwK
ICAgICAiOm9wdXNfdGVzdF9jb25maWciLAotICAgICI6dGVzdF9vcHVzX2RlY29kZV9jb25maWci
LAorICAgICI6b3B1c190ZXN0X25vX25vbm51bGxfY29uZmlnIiwKICAgXQogCi0gIGRlcHMgPSBb
Ci0gICAgIjpvcHVzIiwKLSAgXQorICBkZXBzID0gWyAiOm9wdXMiIF0KIH0KIAogdGVzdCgidGVz
dF9vcHVzX3BhZGRpbmciKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgInNyYy90ZXN0cy90ZXN0X29w
dXNfcGFkZGluZy5jIiwKLSAgXQorICBzb3VyY2VzID0gWyAic3JjL3Rlc3RzL3Rlc3Rfb3B1c19w
YWRkaW5nLmMiIF0KIAogICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNo
cm9taXVtX2NvZGUiIF0KICAgY29uZmlncyArPSBbCkBAIC02MDksNyArNjA2LDIzIEBAIHRlc3Qo
InRlc3Rfb3B1c19wYWRkaW5nIikgewogICAgICI6b3B1c190ZXN0X2NvbmZpZyIsCiAgIF0KIAot
ICBkZXBzID0gWwotICAgICI6b3B1cyIsCi0gIF0KKyAgZGVwcyA9IFsgIjpvcHVzIiBdCit9CisK
KyMgQ29tcGlsYXRpb24gZmFpbHMgb24gd2luZG93cyBkdWUgdG8gd3N0cmluZy9zdHJpbmcgbWlz
dG1hdGNoLgorIyBUaGlzIGlzIG5vdCB3b3J0aCBsb29raW5nIGF0IGl0IHNpbmNlIHRoZSBiZW5j
aG1hcmsgaXMgdGFpbG9yZWQgZm9yIGFuZHJvaWQuCisjIEl0IGlzIG9rIHRvIHJ1biBpdCBvbiBs
aW51eCB0aG91Z2gsIGZvciBleHBlcmltZW50YXRpb24gcHVycG9zZS4KK2lmICghaXNfd2luKSB7
CisgIHRlc3QoIm9wdXNfdGVzdHMiKSB7CisgICAgc291cmNlcyA9IFsgInRlc3RzL29wdXNfYmVu
Y2htYXJrLmNjIiBdCisKKyAgICBkYXRhID0gWyAidGVzdHMvcmVzb3VyY2VzL3NwZWVjaF9tb25v
XzMyXzQ4a0h6LnBjbSIgXQorCisgICAgZGVwcyA9IFsKKyAgICAgICI6b3B1cyIsCisgICAgICAi
Ly9iYXNlIiwKKyAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICAgICAgIi8vdGVzdGluZy9ndGVz
dDpndGVzdF9tYWluIiwKKyAgICBdCisgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9ERVBTIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL0RFUFMKaW5kZXggZmZmY2Fh
NWZmYzM1MjU4MjdkNGM4N2IyMmVhNzIyY2U5YzAyM2E4Zi4uMzJiYWQ0ZTFjNjQyNDhlNWE0MTUz
YjExYjJhMmIzNGVjNDhjZmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL0RFUFMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL0RFUFMKQEAgLTUsMyArNSwxMSBAQCBp
bmNsdWRlX3J1bGVzID0gWwogICAiK21pcHMiLAogICAiK3g4NiIsCiBdCisKKyMgRm9yIG91ciBv
d24gdW5pdCB0ZXN0cy4KK3NwZWNpZmljX2luY2x1ZGVfcnVsZXMgPSB7CisgICIuKihiZW5jaG1h
cmt8dGVzdHMpXC5jYyI6IFsKKyAgICAiK2Jhc2UiLAorICAgICIrdGVzdGluZyIsCisgIF0KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9SRUFETUUuY2hyb21pdW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvUkVBRE1FLmNocm9taXVtCmluZGV4IGVjOTdjZDIyMjQzODIx
NzNhMzA4NDdiMTE2YjZiY2ZiMWU2MDI0YjYuLmJhNjQwODI4Mjc5YTE4M2E5NmFlOWUwZWY0MTg2
NDg4Njk5MWM5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9SRUFETUUuY2hyb21pdW0KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL1JFQURNRS5jaHJvbWl1bQpAQCAt
MSw2ICsxLDYgQEAKIE5hbWU6IG9wdXMKLVVSTDogaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9b3B1
cy5naXQ7YT1zbmFwc2hvdDtoPTNmZTc0NGVhMDRmZGNjNDE4ZmI4NWMyYzEzM2QxMzM3MmViYjAx
OWI7c2Y9dGd6Ci1WZXJzaW9uOiAzZmU3NDRlYTA0ZmRjYzQxOGZiODVjMmMxMzNkMTMzNzJlYmIw
MTliCitVUkw6IGh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPW9wdXMuZ2l0CitWZXJzaW9uOiA2ZDI5
ZjUxYTQwYmU2NGUwM2FjYzI2MTlmMzViNDk3MWJhMDA2MTdjCiBMaWNlbnNlOiBCU0QKIExpY2Vu
c2UgRmlsZTogc3JjL0NPUFlJTkcKIFNlY3VyaXR5IENyaXRpY2FsOiB5ZXMKQEAgLTE0LDEyICsx
NCw4IEBAIGVuY29kaW5nL2RlY29kaW5nLgogTG9jYWwgY2hhbmdlczoKICogY29weSAuZ2l0aWdu
b3JlIGZyb20gaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9b3B1cy5naXQ7YT10cmVlCiAqIHNldCAn
eCcgZmxhZ3M6ICJjaG1vZCA3NTAgd2luMzIvZ2VudmVyc2lvbi5iYXQiCi0qIEFwcGx5IGh0dHBz
Oi8vZ2l0LnhpcGgub3JnLz9wPW9wdXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTQ2NTYwNTM0ZmNiNTcx
MGE4OTRhMzQxYzJmOTUyNmRiNThmZDcwODcjcGF0Y2gxCi0qIEFwcGx5IGh0dHBzOi8vZ2l0aHVi
LmNvbS94aXBoL29wdXMvcHVsbC83MwotKiBBcHBseSBodHRwczovL2dpdGh1Yi5jb20veGlwaC9v
cHVzL3B1bGwvODcKLSogTWFrZSBzdXJlIEhCX2dhaW4gaXMgbm90IE5hTiBpbiBhbiBhdHRlbXB0
IHRvIGZpeCBjaHJvbWl1bTo4MjY5MTQKLSogU2F0dXJhdGUgYWRkIHRvIGF2b2lkIGludCBvdmVy
ZmxvdyB0byBmaXggY2hyb21pdW06ODQyNTI4LiBUaGlzIHNob3VsZCBiZQotICByZXZlcnRlZCB3
aGVuIHVwZGF0aW5nIHRvIHYxLjMKLSogQXBwbHkgaHR0cHM6Ly9naXRodWIuY29tL3hpcGgvb3B1
cy9jb21taXQvNGY0YjExYzIzOThlOTYxMzRkYzYyZWU3OTRiZmUzM2VjZDZlOWJkMgotKiBBcHBs
eSBodHRwczovL2dpdC54aXBoLm9yZy8/cD1vcHVzLmdpdDthPWNvbW1pdDtoPTgxMmFlM2ZiNWM1
ODlhYWFmZTc2MWI4ZWJmODZiY2JiYjhmMGVkNzYKLSogQXBwbHkgaHR0cHM6Ly9naXQueGlwaC5v
cmcvP3A9b3B1cy5naXQ7YT1jb21taXQ7aD1jZDUyOWVkCisqIHJlbW92ZSBhc3NlcnRpb24gbWVz
c2FnZXMgaW4gcmVsZWFzZSBidWlsZHMgKHNlZSBjcmJ1Zy8xMDUzNTcyKQorKiBhcHBseSBwYXRj
aCB0byBmaXggaW50LW92ZXJmbG93IGluIHNpbGsgKGh0dHBzOi8vZ2l0bGFiLnhpcGgub3JnL3hp
cGgvb3B1cy8tL2NvbW1pdC85MjNiZWJkZSkKKworT3B1cycgb3duIHVuaXQgdGVzdHMgYXJlIGxv
Y2F0ZWQgaW4gLi9zcmMvdGVzdHMKK0FkZGl0aW9uYWwgY2hyb21pdW0gdGVzdHMgYXJlIGxvY2F0
ZWQgaW4gLi90ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy8uZ2l0aWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy8uZ2l0aWdub3JlCmluZGV4IDMz
MTI3YzlmZTBhNjYzYjYwNjY5NTMwYjdiZGI2NWE2N2QxYmVjYTUuLjMxZTI5MDE0M2M2NWFjYzRk
NTVlODNlZTZjMmM1MTM4NzAxOTEzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvLmdpdGlnbm9yZQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjLy5naXRp
Z25vcmUKQEAgLTQ5LDYgKzQ5LDcgQEAgdGVzdHMvdGVzdF9vcHVzX2FwaQogdGVzdHMvdGVzdF9v
cHVzX2RlY29kZQogdGVzdHMvdGVzdF9vcHVzX2VuY29kZQogdGVzdHMvdGVzdF9vcHVzX3BhZGRp
bmcKK3Rlc3RzL3Rlc3Rfb3B1c19wcm9qZWN0aW9uCiBjZWx0L2FybS9hcm1vcHRzLnMKIGNlbHQv
ZHVtcF9tb2Rlcy9kdW1wX21vZGVzCiBjZWx0L3Rlc3RzL3Rlc3RfdW5pdF9jd3JzMzIKQEAgLTc4
LDYgKzc5LDExIEBAIHNpbGsvZml4ZWQveDY0CiBzaWxrL2Zsb2F0L0RlYnVnCiBzaWxrL2Zsb2F0
L1JlbGVhc2UKIHNpbGsvZmxvYXQveDY0CitzaWxrL3Rlc3RzL3Rlc3RfdW5pdF9MUENfaW52X3By
ZWRfZ2Fpbgogc3JjL0RlYnVnCiBzcmMvUmVsZWFzZQogc3JjL3g2NAorLypbQmJddWlsZCovCisu
dnMvCisudnNjb2RlLworQ01ha2VTZXR0aW5ncy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTg2OTM5YTljMWFkMTE2NDBlYzcwYmQ0
N2Q0MmNhYTQzODRhZGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9DTWFrZUxpc3RzLnR4dApAQCAtMCww
ICsxLDQyMCBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMSkKKworaW5jbHVk
ZShvcHVzX2Z1bmN0aW9ucy5jbWFrZSkKKworZ2V0X2xpYnJhcnlfdmVyc2lvbihPUFVTX0xJQlJB
UllfVkVSU0lPTiBPUFVTX0xJQlJBUllfVkVSU0lPTl9NQUpPUikKK21lc3NhZ2UoU1RBVFVTICJP
cHVzIGxpYnJhcnkgdmVyc2lvbjogJHtPUFVTX0xJQlJBUllfVkVSU0lPTn0iKQorCitnZXRfcGFj
a2FnZV92ZXJzaW9uKFBBQ0tBR0VfVkVSU0lPTikKK21lc3NhZ2UoU1RBVFVTICJPcHVzIHBhY2th
Z2UgdmVyc2lvbjogJHtQQUNLQUdFX1ZFUlNJT059IikKKworc3RyaW5nKFJFR0VYCisgICAgICAg
UkVQTEFDRSAiXihbMC05XSsuWzAtOV0rXFwuPyhbMC05XSspPykuKiIKKyAgICAgICAgICAgICAg
ICJcXDEiCisgICAgICAgICAgICAgICBQUk9KRUNUX1ZFUlNJT04KKyAgICAgICAgICAgICAgICR7
UEFDS0FHRV9WRVJTSU9OfSkKK21lc3NhZ2UoU1RBVFVTICJPcHVzIHByb2plY3QgdmVyc2lvbjog
JHtQUk9KRUNUX1ZFUlNJT059IikKKworcHJvamVjdChPcHVzIExBTkdVQUdFUyBDIFZFUlNJT04g
JHtQUk9KRUNUX1ZFUlNJT059KQoraW5jbHVkZShvcHVzX2J1aWxkdHlwZS5jbWFrZSkKKworb3B0
aW9uKE9QVVNfQlVJTERfU0hBUkVEX0xJQlJBUlkgIkJ1aWxkIHNoYXJlZCBsaWJyYXJ5IiBPRkYp
CitvcHRpb24oT1BVU19TVEFDS19QUk9URUNUT1IgIlVzZSBzdGFjayBwcm90ZWN0aW9uIiBPTikK
K29wdGlvbihPUFVTX1VTRV9BTExPQ0EgIlVzZSBhbGxvY2EgZm9yIHN0YWNrIGFycmF5cyAob24g
bm9uLUM5OSBjb21waWxlcnMpIiBPRkYpCitvcHRpb24oT1BVU19DVVNUT01fTU9ERVMgIkVuYWJs
ZSBub24tT3B1cyBtb2RlcywgZS5nLiA0NC4xIGtIeiAmIDJebiBmcmFtZXMiCisgICAgICAgT0ZG
KQorb3B0aW9uKE9QVVNfQlVJTERfUFJPR1JBTVMgIkJ1aWxkIHByb2dyYW1zIiBPRkYpCitvcHRp
b24oT1BVU19GSVhFRF9QT0lOVAorICAgICAgICJDb21waWxlIGFzIGZpeGVkLXBvaW50IChmb3Ig
bWFjaGluZXMgd2l0aG91dCBhIGZhc3QgZW5vdWdoIEZQVSkiIE9GRikKK29wdGlvbihPUFVTX0VO
QUJMRV9GTE9BVF9BUEkKKyAgICAgICAiQ29tcGlsZSB3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBB
UEkgKGZvciBtYWNoaW5lcyB3aXRoIGZsb2F0IGxpYnJhcnkiCisgICAgICAgT04pCitvcHRpb24o
T1BVU19JTlNUQUxMX1BLR19DT05GSUdfTU9EVUxFICJJbnN0YWxsIFBrZ0NvbmZpZyBtb2R1bGUi
IE9OKQorb3B0aW9uKE9QVVNfSU5TVEFMTF9DTUFLRV9DT05GSUdfTU9EVUxFICJJbnN0YWxsIENN
YWtlIHBhY2thZ2UgY29uZmlnIG1vZHVsZSIKKyAgICAgICBPTikKKworaW5jbHVkZShvcHVzX2Nv
bmZpZy5jbWFrZSkKK2luY2x1ZGUob3B1c19zb3VyY2VzLmNtYWtlKQoraW5jbHVkZShHTlVJbnN0
YWxsRGlycykKK2luY2x1ZGUoQ01ha2VEZXBlbmRlbnRPcHRpb24pCitpbmNsdWRlKEZlYXR1cmVT
dW1tYXJ5KQorCitpZihPUFVTX0JVSUxEX1NIQVJFRF9MSUJSQVJZIE9SIEJVSUxEX1NIQVJFRF9M
SUJTKQorICAjIEdsb2JhbCBmbGFnIHRvIGNhdXNlIGFkZF9saWJyYXJ5KCkgdG8gY3JlYXRlIHNo
YXJlZCBsaWJyYXJpZXMgaWYgb24uCisgIHNldChCVUlMRF9TSEFSRURfTElCUyBPTikKKyAgc2V0
KE9QVVNfQlVJTERfU0hBUkVEX0xJQlJBUlkgT04pCitlbmRpZigpCisKK2lmKE9QVVNfU1RBQ0tf
UFJPVEVDVE9SKQorICBpZihOT1QgTVNWQykgIyBHQyBvbiBieSBkZWZhdWx0IG9uIE1TVkMKKyAg
ICBjaGVja19hbmRfc2V0X2ZsYWcoU1RBQ0tfUFJPVEVDVElPTl9TVFJPTkcgLWZzdGFjay1wcm90
ZWN0b3Itc3Ryb25nKQorICBlbmRpZigpCitlbHNlKCkKKyAgaWYoTVNWQykKKyAgICBjaGVja19h
bmRfc2V0X2ZsYWcoQlVGRkVSX1NFQ1VSSVRZX0NIRUNLIC9HUy0pCisgIGVuZGlmKCkKK2VuZGlm
KCkKKworaWYoT1BVU19DUFVfWDg2IE9SIE9QVVNfQ1BVX1g2NCkKKyAgY21ha2VfZGVwZW5kZW50
X29wdGlvbihPUFVTX1g4Nl9NQVlfSEFWRV9TU0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAi
RG9lcyBydW50aW1lIGNoZWNrIGZvciBTU0UxIHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgT04KKyAgICAgICAgICAgICAgICAgICAgICAgICAiU1NFMV9TVVBQT1JURUQiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgT0ZGKQorICBjbWFrZV9kZXBlbmRlbnRfb3B0aW9uKE9QVVNf
WDg2X01BWV9IQVZFX1NTRTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRG9lcyBydW50aW1l
IGNoZWNrIGZvciBTU0UyIHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgT04KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAiU1NFMl9TVVBQT1JURUQiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgT0ZGKQorICBjbWFrZV9kZXBlbmRlbnRfb3B0aW9uKE9QVVNfWDg2X01BWV9IQVZF
X1NTRTRfMQorICAgICAgICAgICAgICAgICAgICAgICAgICJEb2VzIHJ1bnRpbWUgY2hlY2sgZm9y
IFNTRTQuMSBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgIE9OCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNTRTRfMV9TVVBQT1JURUQiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgT0ZGKQorICBjbWFrZV9kZXBlbmRlbnRfb3B0aW9uKE9QVVNfWDg2X01BWV9IQVZFX0FWWAor
ICAgICAgICAgICAgICAgICAgICAgICAgICJEb2VzIHJ1bnRpbWUgY2hlY2sgZm9yIEFWWCBzdXBw
b3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgIE9OCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIkFWWF9TVVBQT1JURUQiCisgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGKQorCisgIGlm
KE9QVVNfQ1BVX1g2NCkgIyBBc3N1bWUgNjQgYml0IGhhcyBTU0UyIHN1cHBvcnQKKyAgICBjbWFr
ZV9kZXBlbmRlbnRfb3B0aW9uKE9QVVNfWDg2X1BSRVNVTUVfU1NFCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQXNzdW1lIHRhcmdldCBDUFUgaGFzIFNTRTEgc3VwcG9ydCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE9OCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiT1BVU19Y
ODZfTUFZX0hBVkVfU1NFIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGKQorICAgIGNt
YWtlX2RlcGVuZGVudF9vcHRpb24oT1BVU19YODZfUFJFU1VNRV9TU0UyCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQXNzdW1lIHRhcmdldCBDUFUgaGFzIFNTRTIgc3VwcG9ydCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9OCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiT1BV
U19YODZfTUFZX0hBVkVfU1NFMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9GRikKKyAg
ZWxzZSgpCisgICAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVTX1g4Nl9QUkVTVU1FX1NTRQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFzc3VtZSB0YXJnZXQgQ1BVIGhhcyBTU0UxIHN1
cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPRkYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJPUFVTX1g4Nl9NQVlfSEFWRV9TU0UiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPRkYpCisgICAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVTX1g4Nl9QUkVTVU1FX1NT
RTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJBc3N1bWUgdGFyZ2V0IENQVSBoYXMgU1NF
MiBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiT1BVU19YODZfTUFZX0hBVkVfU1NFMiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9GRikKKyAgZW5kaWYoKQorICBjbWFrZV9kZXBlbmRlbnRfb3B0aW9uKE9QVVNf
WDg2X1BSRVNVTUVfU1NFNF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgIkFzc3VtZSB0YXJn
ZXQgQ1BVIGhhcyBTU0U0LjEgc3VwcG9ydCIKKyAgICAgICAgICAgICAgICAgICAgICAgICBPRkYK
KyAgICAgICAgICAgICAgICAgICAgICAgICAiT1BVU19YODZfTUFZX0hBVkVfU1NFNF8xIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIE9GRikKKyAgY21ha2VfZGVwZW5kZW50X29wdGlvbihPUFVT
X1g4Nl9QUkVTVU1FX0FWWAorICAgICAgICAgICAgICAgICAgICAgICAgICJBc3N1bWUgdGFyZ2V0
IENQVSBoYXMgQVZYIHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIk9QVVNfWDg2X01BWV9IQVZFX0FWWCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBPRkYpCitlbmRpZigpCisKK3NldF9wYWNrYWdlX3Byb3BlcnRpZXMoR2l0
CisgICAgICAgICAgICAgICAgICAgICAgIFBST1BFUlRJRVMKKyAgICAgICAgICAgICAgICAgICAg
ICAgVFlQRQorICAgICAgICAgICAgICAgICAgICAgICBSRVFVSVJFRAorICAgICAgICAgICAgICAg
ICAgICAgICBERVNDUklQVElPTgorICAgICAgICAgICAgICAgICAgICAgICAiZmFzdCwgc2NhbGFi
bGUsIGRpc3RyaWJ1dGVkIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtIgorICAgICAgICAgICAgICAg
ICAgICAgICBVUkwKKyAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZ2l0LXNjbS5jb20v
IgorICAgICAgICAgICAgICAgICAgICAgICBQVVJQT1NFCisgICAgICAgICAgICAgICAgICAgICAg
ICJyZXF1aXJlZCB0byBzZXQgdXAgcGFja2FnZSB2ZXJzaW9uIikKKworYWRkX2ZlYXR1cmVfaW5m
byhCVUlMRF9TSEFSRURfTElCUkFSWSBPUFVTX0JVSUxEX1NIQVJFRF9MSUJSQVJZICJCdWlsZCBz
aGFyZWQgbGlicmFyeSIpCithZGRfZmVhdHVyZV9pbmZvKFNUQUNLX1BST1RFQ1RPUiBPUFVTX1NU
QUNLX1BST1RFQ1RPUiAiVXNlIHN0YWNrIHByb3RlY3Rpb24iKQorYWRkX2ZlYXR1cmVfaW5mbyhV
U0VfQUxMT0NBIE9QVVNfVVNFX0FMTE9DQQorICAgICAgICAgICAgICAgICAiVXNlIGFsbG9jYSBm
b3Igc3RhY2sgYXJyYXlzIChvbiBub24tQzk5IGNvbXBpbGVycykiKQorYWRkX2ZlYXR1cmVfaW5m
byhDVVNUT01fTU9ERVMgT1BVU19DVVNUT01fTU9ERVMKKyAgICAgICAgICAgICAgICAgIkVuYWJs
ZSBub24tT3B1cyBtb2RlcywgZS5nLiA0NC4xIGtIeiAmIDJebiBmcmFtZXMiKQorYWRkX2ZlYXR1
cmVfaW5mbyhCVUlMRF9QUk9HUkFNUyBPUFVTX0JVSUxEX1BST0dSQU1TICJCdWlsZCBwcm9ncmFt
cyIpCithZGRfZmVhdHVyZV9pbmZvKAorICBGSVhFRF9QT0lOVCBPUFVTX0ZJWEVEX1BPSU5UCisg
ICJjb21waWxlIGFzIGZpeGVkLXBvaW50IChmb3IgbWFjaGluZXMgd2l0aG91dCBhIGZhc3QgZW5v
dWdoIEZQVSkiKQorYWRkX2ZlYXR1cmVfaW5mbygKKyAgRkxPQVRfQVBJIE9QVVNfRU5BQkxFX0ZM
T0FUX0FQSQorICAiY29tcGlsZSB3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBBUEkgKGZvciBtYWNo
aW5lcyB3aXRoIGZsb2F0IGxpYnJhcnkpIikKKworYWRkX2ZlYXR1cmVfaW5mbyhJTlNUQUxMX1BL
R19DT05GSUdfTU9EVUxFIE9QVVNfSU5TVEFMTF9QS0dfQ09ORklHX01PRFVMRQorICAgICAgICAg
ICAgICAgICAiaW5zdGFsbCBQa2dDb25maWcgbW9kdWxlIikKK2FkZF9mZWF0dXJlX2luZm8oSU5T
VEFMTF9DTUFLRV9DT05GSUdfTU9EVUxFIE9QVVNfSU5TVEFMTF9DTUFLRV9DT05GSUdfTU9EVUxF
CisgICAgICAgICAgICAgICAgICJpbnN0YWxsIENNYWtlIHBhY2thZ2UgY29uZmlnIG1vZHVsZSIp
CisKK2lmKE9QVVNfQ1BVX1g4NiBPUiBPUFVTX0NQVV9YNjQpCisgIGFkZF9mZWF0dXJlX2luZm8o
WDg2X01BWV9IQVZFX1NTRSBPUFVTX1g4Nl9NQVlfSEFWRV9TU0UKKyAgICAgICAgICAgICAgICAg
ICAiZG9lcyBydW50aW1lIGNoZWNrIGZvciBTU0UxIHN1cHBvcnQiKQorICBhZGRfZmVhdHVyZV9p
bmZvKFg4Nl9NQVlfSEFWRV9TU0UyIE9QVVNfWDg2X01BWV9IQVZFX1NTRTIKKyAgICAgICAgICAg
ICAgICAgICAiZG9lcyBydW50aW1lIGNoZWNrIGZvciBTU0UyIHN1cHBvcnQiKQorICBhZGRfZmVh
dHVyZV9pbmZvKFg4Nl9NQVlfSEFWRV9TU0U0XzEgT1BVU19YODZfTUFZX0hBVkVfU1NFNF8xCisg
ICAgICAgICAgICAgICAgICAgImRvZXMgcnVudGltZSBjaGVjayBmb3IgU1NFNF8xIHN1cHBvcnQi
KQorICBhZGRfZmVhdHVyZV9pbmZvKFg4Nl9NQVlfSEFWRV9BVlggT1BVU19YODZfTUFZX0hBVkVf
QVZYCisgICAgICAgICAgICAgICAgICAgImRvZXMgcnVudGltZSBjaGVjayBmb3IgQVZYIHN1cHBv
cnQiKQorICBhZGRfZmVhdHVyZV9pbmZvKFg4Nl9QUkVTVU1FX1NTRSBPUFVTX1g4Nl9QUkVTVU1F
X1NTRQorICAgICAgICAgICAgICAgICAgICJhc3N1bWUgdGFyZ2V0IENQVSBoYXMgU1NFMSBzdXBw
b3J0IikKKyAgYWRkX2ZlYXR1cmVfaW5mbyhYODZfUFJFU1VNRV9TU0UyIE9QVVNfWDg2X1BSRVNV
TUVfU1NFMgorICAgICAgICAgICAgICAgICAgICJhc3N1bWUgdGFyZ2V0IENQVSBoYXMgU1NFMiBz
dXBwb3J0IikKKyAgYWRkX2ZlYXR1cmVfaW5mbyhYODZfUFJFU1VNRV9TU0U0XzEgT1BVU19YODZf
UFJFU1VNRV9TU0U0XzEKKyAgICAgICAgICAgICAgICAgICAiYXNzdW1lIHRhcmdldCBDUFUgaGFz
IFNTRTRfMSBzdXBwb3J0IikKKyAgYWRkX2ZlYXR1cmVfaW5mbyhYODZfUFJFU1VNRV9BVlggT1BV
U19YODZfUFJFU1VNRV9BVlgKKyAgICAgICAgICAgICAgICAgICAiYXNzdW1lIHRhcmdldCBDUFUg
aGFzIEFWWCBzdXBwb3J0IikKK2VuZGlmKCkKKworZmVhdHVyZV9zdW1tYXJ5KFdIQVQgQUxMKQor
CithZGRfbGlicmFyeShvcHVzICR7b3B1c19zb3VyY2VzfSAke29wdXNfc291cmNlc19mbG9hdH0p
CisKK2FkZF9saWJyYXJ5KE9wdXM6Om9wdXMgQUxJQVMgb3B1cykKKworc2V0KE9wdXNfUFVCTElD
X0hFQURFUgorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlL29wdXMuaAor
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlL29wdXNfY3VzdG9tLmgKKyAg
ICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZS9vcHVzX2RlZmluZXMuaAorICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlL29wdXNfbXVsdGlzdHJlYW0uaAor
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlL29wdXNfcHJvamVjdGlvbi5o
CisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUvb3B1c190eXBlcy5oKQor
CitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob3B1cworICAgICAgICAgICAgICAgICAgICAgIFBST1BF
UlRJRVMgU09WRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke09QVVNf
TElCUkFSWV9WRVJTSU9OX01BSk9SfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtPUFVTX0xJQlJBUllf
VkVSU0lPTn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVQkxJQ19IRUFERVIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke09wdXNfUFVCTElDX0hFQURFUn0i
KQorCit0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcygKKyAgb3B1cworICBQVUJMSUMgJDxCVUlM
RF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CisgICAgICAg
ICAkPElOU1RBTExfSU5URVJGQUNFOiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfT4KKyAgUFJJ
VkFURSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0KKyAgICAgICAgICAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0KKyAgICAgICAgICBjZWx0CisgICAgICAgICAgc2lsaykKKwordGFyZ2V0
X2xpbmtfbGlicmFyaWVzKG9wdXMgUFJJVkFURSAke09QVVNfUkVRVUlSRURfTElCUkFSSUVTfSkK
K3RhcmdldF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJVkFURSBPUFVTX0JVSUxEIEVOQUJM
RV9IQVJERU5JTkcpCisKK2lmKE5PVCBNU1ZDKQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9u
cyhvcHVzIFBSSVZBVEUgX0ZPUlRJRllfU09VUkNFPTIpCitlbmRpZigpCisKKyMgSXQgaXMgc3Ry
b25nbHkgcmVjb21tZW5kZWQgdG8gdW5jb21tZW50IG9uZSBvZiB0aGVzZSBWQVJfQVJSQVlTOiBV
c2UgQzk5CisjIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgZm9yIHN0YWNrIGFsbG9jYXRpb24gVVNF
X0FMTE9DQTogVXNlIGFsbG9jYSgpIGZvciBzdGFjaworIyBhbGxvY2F0aW9uIElmIG5vbmUgaXMg
ZGVmaW5lZCwgdGhlbiB0aGUgZmFsbGJhY2sgaXMgYSBub24tdGhyZWFkc2FmZSBnbG9iYWwKKyMg
YXJyYXkKK2lmKE9QVVNfVVNFX0FMTE9DQSBPUiBNU1ZDKQorICB0YXJnZXRfY29tcGlsZV9kZWZp
bml0aW9ucyhvcHVzIFBSSVZBVEUgVVNFX0FMTE9DQSkKK2Vsc2UoKQorICB0YXJnZXRfY29tcGls
ZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUgVkFSX0FSUkFZUykKK2VuZGlmKCkKKworaWYoT1BV
U19DVVNUT01fTU9ERVMpCisgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJVkFU
RSBDVVNUT01fTU9ERVMpCitlbmRpZigpCisKK2lmKEJVSUxEX1NIQVJFRF9MSUJTKQorICBpZihX
SU4zMikKKyAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUgRExMX0VY
UE9SVCkKKyAgZWxzZSgpCisgICAgaW5jbHVkZShDaGVja0NDb21waWxlckZsYWcpCisgICAgY2hl
Y2tfY19jb21waWxlcl9mbGFnKC1mdmlzaWJpbGl0eT1oaWRkZW4gQ09NUElMRVJfSEFTX0hJRERF
Tl9WSVNJQklMSVRZKQorICAgIGlmKENPTVBJTEVSX0hBU19ISURERU5fVklTSUJJTElUWSkKKyAg
ICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhvcHVzIFBST1BFUlRJRVMgQ19WSVNJQklMSVRZX1BS
RVNFVCBoaWRkZW4pCisgICAgZW5kaWYoKQorICBlbmRpZigpCitlbmRpZigpCisKK2FkZF9zb3Vy
Y2VzX2dyb3VwKG9wdXMgc2lsayAke3NpbGtfc291cmNlc30pCithZGRfc291cmNlc19ncm91cChv
cHVzIGNlbHQgJHtjZWx0X3NvdXJjZXN9KQorCitpZihPUFVTX0ZJWEVEX1BPSU5UKQorICBhZGRf
c291cmNlc19ncm91cChvcHVzIHNpbGsgJHtzaWxrX3NvdXJjZXNfZml4ZWR9KQorICB0YXJnZXRf
aW5jbHVkZV9kaXJlY3RvcmllcyhvcHVzIFBSSVZBVEUgc2lsay9maXhlZCkKKyAgdGFyZ2V0X2Nv
bXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIEZJWEVEX1BPSU5UPTEpCitlbHNlKCkKKyAg
YWRkX3NvdXJjZXNfZ3JvdXAob3B1cyBzaWxrICR7c2lsa19zb3VyY2VzX2Zsb2F0fSkKKyAgdGFy
Z2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMob3B1cyBQUklWQVRFIHNpbGsvZmxvYXQpCitlbmRpZigp
CisKK2lmKE5PVCBPUFVTX0VOQUJMRV9GTE9BVF9BUEkpCisgIHRhcmdldF9jb21waWxlX2RlZmlu
aXRpb25zKG9wdXMgUFJJVkFURSBESVNBQkxFX0ZMT0FUX0FQSSkKK2VuZGlmKCkKKworaWYoT1BV
U19YODZfTUFZX0hBVkVfU1NFCisgICBPUiBPUFVTX1g4Nl9NQVlfSEFWRV9TU0UyCisgICBPUiBP
UFVTX1g4Nl9NQVlfSEFWRV9TU0U0XzEKKyAgIE9SIE9QVVNfWDg2X01BWV9IQVZFX0FWWCkKKyAg
dGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIE9QVVNfSEFWRV9SVENEKQor
ZW5kaWYoKQorCitpZihPUFVTX1g4Nl9NQVlfSEFWRV9TU0UpCisgIGFkZF9zb3VyY2VzX2dyb3Vw
KG9wdXMgY2VsdCAke2NlbHRfc291cmNlc19zc2V9KQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0
aW9ucyhvcHVzIFBSSVZBVEUgT1BVU19YODZfTUFZX0hBVkVfU1NFKQorZW5kaWYoKQoraWYoT1BV
U19YODZfUFJFU1VNRV9TU0UpCisgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJ
VkFURSBPUFVTX1g4Nl9QUkVTVU1FX1NTRSkKK2VuZGlmKCkKKworaWYoT1BVU19YODZfTUFZX0hB
VkVfU1NFMikKKyAgYWRkX3NvdXJjZXNfZ3JvdXAob3B1cyBjZWx0ICR7Y2VsdF9zb3VyY2VzX3Nz
ZTJ9KQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUgT1BVU19YODZf
TUFZX0hBVkVfU1NFMikKK2VuZGlmKCkKK2lmKE9QVVNfWDg2X1BSRVNVTUVfU1NFMikKKyAgdGFy
Z2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQUklWQVRFIE9QVVNfWDg2X1BSRVNVTUVfU1NF
MikKK2VuZGlmKCkKKworaWYoT1BVU19YODZfTUFZX0hBVkVfU1NFKQorICBhZGRfc291cmNlc19n
cm91cChvcHVzIGNlbHQgJHtjZWx0X3NvdXJjZXNfc3NlNF8xfSkKKyAgYWRkX3NvdXJjZXNfZ3Jv
dXAob3B1cyBzaWxrICR7c2lsa19zb3VyY2VzX3NzZTRfMX0pCisgIGlmKE9QVVNfRklYRURfUE9J
TlQpCisgICAgYWRkX3NvdXJjZXNfZ3JvdXAob3B1cyBzaWxrICR7c2lsa19zb3VyY2VzX2ZpeGVk
X3NzZTRfMX0pCisgIGVuZGlmKCkKKyAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob3B1cyBQ
UklWQVRFIE9QVVNfWDg2X01BWV9IQVZFX1NTRTRfMSkKK2VuZGlmKCkKK2lmKE9QVVNfWDg2X1BS
RVNVTUVfU1NFNF8xKQorICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzIFBSSVZBVEUg
T1BVU19YODZfUFJFU1VNRV9TU0U0XzEpCitlbmRpZigpCisKK2lmKENNQUtFX1NZU1RFTV9QUk9D
RVNTT1IgTUFUQ0hFUyAiKGFybXY3LWEpIikKKyAgYWRkX3NvdXJjZXNfZ3JvdXAob3B1cyBjZWx0
ICR7Y2VsdF9zb3VyY2VzX2FybX0pCitlbmRpZigpCisKK2lmKENPTVBJTEVSX1NVUFBPUlRfTkVP
TiBBTkQgT1BVU19VU0VfTkVPTikKKworICBpZihPUFVTX01BWV9IQVZFX05FT04pCisgICAgaWYo
UlVOVElNRV9DUFVfQ0FQQUJJTElUWV9ERVRFQ1RJT04pCisgICAgICBtZXNzYWdlKFNUQVRVUyAi
T1BVU19NQVlfSEFWRV9ORU9OIGVuYWJsaW5nIHJ1bnRpbWUgZGV0ZWN0aW9uIikKKyAgICAgIHRh
cmdldF9jb21waWxlX2RlZmluaXRpb25zKG9wdXMgUFJJVkFURSBPUFVTX0hBVkVfUlRDRCkKKyAg
ICBlbHNlKCkKKyAgICAgIG1lc3NhZ2UoRVJST1IgIlJ1bnRpbWUgY3B1IGNhcGFiaWxpdHkgZGV0
ZWN0aW9uIG5lZWRlZCBmb3IgTUFZX0hBVkVfTkVPTiIpCisgICAgZW5kaWYoKQorICAgICMgRG8g
cnVudGltZSBjaGVjayBmb3IgTkVPTgorICAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKG9w
dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklWQVRFCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT1BVU19BUk1fTUFZX0hBVkVfTkVPTgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE9QVVNfQVJNX01BWV9IQVZFX05FT05fSU5UUikKKyAgZW5kaWYoKQor
CisgIGFkZF9zb3VyY2VzX2dyb3VwKG9wdXMgY2VsdCAke2NlbHRfc291cmNlc19hcm1fbmVvbl9p
bnRyfSkKKyAgYWRkX3NvdXJjZXNfZ3JvdXAob3B1cyBzaWxrICR7c2lsa19zb3VyY2VzX2FybV9u
ZW9uX2ludHJ9KQorCisgICMgc2lsayBhcm0gbmVvbiBkZXBlbmRzIG9uIG1haW5fRml4LmgKKyAg
dGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMob3B1cyBQUklWQVRFIHNpbGsvZml4ZWQpCisKKyAg
aWYoT1BVU19GSVhFRF9QT0lOVCkKKyAgICBhZGRfc291cmNlc19ncm91cChvcHVzIHNpbGsgJHtz
aWxrX3NvdXJjZXNfZml4ZWRfYXJtX25lb25faW50cn0pCisgIGVuZGlmKCkKKworICBpZihPUFVT
X1BSRVNVTUVfTkVPTikKKyAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhvcHVzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJVkFURQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9QVVNfQVJNX1BSRVNVTUVfTkVPTgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE9QVVNfQVJNX1BSRVNVTUVfTkVPTl9JTlRSKQorICBlbmRpZigpCitlbmRpZigpCisK
K2luc3RhbGwoVEFSR0VUUyBvcHVzCisgICAgICAgIEVYUE9SVCBPcHVzVGFyZ2V0cworICAgICAg
ICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgICAgICAgIExJ
QlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgICAgICAgUlVOVElN
RSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICAgICAgICBQVUJMSUNfSEVB
REVSIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS9vcHVzKQorCitpZihP
UFVTX0lOU1RBTExfUEtHX0NPTkZJR19NT0RVTEUpCisgIHNldChwcmVmaXggJHtDTUFLRV9JTlNU
QUxMX1BSRUZJWH0pCisgIHNldChleGVjX3ByZWZpeCAke0NNQUtFX0lOU1RBTExfUFJFRklYfSkK
KyAgc2V0KGxpYmRpciAke0NNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJ9KQorICBzZXQoaW5jbHVk
ZWRpciAke0NNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURFRElSfSkKKyAgc2V0KFZFUlNJT04gJHtQ
QUNLQUdFX1ZFUlNJT059KQorICBpZihIQVZFX0xJQk0pCisgICAgc2V0KExJQk0gIi1sbSIpCisg
IGVuZGlmKCkKKyAgY29uZmlndXJlX2ZpbGUob3B1cy5wYy5pbiBvcHVzLnBjKQorICBpbnN0YWxs
KEZJTEVTICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9vcHVzLnBjCisgICAgICAgICAgREVT
VElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnKQorZW5kaWYoKQorCitp
ZihPUFVTX0lOU1RBTExfQ01BS0VfQ09ORklHX01PRFVMRSkKKyAgc2V0KENNQUtFX0lOU1RBTExf
UEFDS0FHRURJUiAke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS8ke1BST0pFQ1RfTkFNRX0p
CisgIGluc3RhbGwoRVhQT1JUIE9wdXNUYXJnZXRzCisgICAgICAgICAgTkFNRVNQQUNFIE9wdXM6
OgorICAgICAgICAgIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9QQUNLQUdFRElSfSkKKwor
ICBpbmNsdWRlKENNYWtlUGFja2FnZUNvbmZpZ0hlbHBlcnMpCisKKyAgc2V0KElOQ0xVREVfSU5T
VEFMTF9ESVIgJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9KQorICBjb25maWd1cmVfcGFja2Fn
ZV9jb25maWdfZmlsZShPcHVzQ29uZmlnLmNtYWtlLmluCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9wdXNDb25maWcuY21ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSU5TVEFMTF9ERVNUSU5BVElPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
e0NNQUtFX0lOU1RBTExfUEFDS0FHRURJUn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUEFUSF9WQVJTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOQ0xVREVfSU5T
VEFMTF9ESVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5TVEFMTF9QUkVGSVgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0p
CisgIHdyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlKE9wdXNDb25maWdWZXJzaW9uLmNt
YWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT04gJHtQUk9KRUNU
X1ZFUlNJT059CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTVBBVElCSUxJ
VFkgU2FtZU1ham9yVmVyc2lvbikKKyAgaW5zdGFsbChGSUxFUyAke0NNQUtFX0NVUlJFTlRfQklO
QVJZX0RJUn0vT3B1c0NvbmZpZy5jbWFrZQorICAgICAgICAgICAgICAgICR7Q01BS0VfQ1VSUkVO
VF9CSU5BUllfRElSfS9PcHVzQ29uZmlnVmVyc2lvbi5jbWFrZQorICAgICAgICAgIERFU1RJTkFU
SU9OICR7Q01BS0VfSU5TVEFMTF9QQUNLQUdFRElSfSkKK2VuZGlmKCkKKworaWYoT1BVU19CVUlM
RF9QUk9HUkFNUykKKyAgIyBkZW1vCisgIGlmKE9QVVNfQ1VTVE9NX01PREVTKQorICAgIGFkZF9l
eGVjdXRhYmxlKG9wdXNfY3VzdG9tX2RlbW8gJHtvcHVzX2N1c3RvbV9kZW1vX3NvdXJjZXN9KQor
ICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9wdXNfY3VzdG9tX2RlbW8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElS
fSkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMob3B1c19jdXN0b21fZGVtbyBQUklWQVRFIG9w
dXMpCisgIGVuZGlmKCkKKworICBhZGRfZXhlY3V0YWJsZShvcHVzX2RlbW8gJHtvcHVzX2RlbW9f
c291cmNlc30pCisgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9wdXNfZGVtbyBQUklWQVRF
ICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSkKKyAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3Jp
ZXMob3B1c19kZW1vIFBSSVZBVEUgc2lsaykgIyBkZWJ1Zy5oCisgIHRhcmdldF9pbmNsdWRlX2Rp
cmVjdG9yaWVzKG9wdXNfZGVtbyBQUklWQVRFIGNlbHQpICMgYXJjaC5oCisgIHRhcmdldF9saW5r
X2xpYnJhcmllcyhvcHVzX2RlbW8gUFJJVkFURSBvcHVzKQorCisgICMgY29tcGFyZQorICBhZGRf
ZXhlY3V0YWJsZShvcHVzX2NvbXBhcmUgJHtvcHVzX2NvbXBhcmVfc291cmNlc30pCisgIHRhcmdl
dF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9wdXNfY29tcGFyZSBQUklWQVRFICR7Q01BS0VfQ1VSUkVO
VF9CSU5BUllfRElSfSkKKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKG9wdXNfY29tcGFyZSBQUklW
QVRFIG9wdXMpCitlbmRpZigpCisKK2lmKEJVSUxEX1RFU1RJTkcpCisgIGVuYWJsZV90ZXN0aW5n
KCkKKworICAjIHRlc3RzCisgIGFkZF9leGVjdXRhYmxlKHRlc3Rfb3B1c19kZWNvZGUgJHt0ZXN0
X29wdXNfZGVjb2RlX3NvdXJjZXN9KQorICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcyh0ZXN0
X29wdXNfZGVjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSVZBVEUgJHtDTUFL
RV9DVVJSRU5UX0JJTkFSWV9ESVJ9KQorICB0YXJnZXRfbGlua19saWJyYXJpZXModGVzdF9vcHVz
X2RlY29kZSBQUklWQVRFIG9wdXMpCisgIGlmKE9QVVNfRklYRURfUE9JTlQpCisgICAgdGFyZ2V0
X2NvbXBpbGVfZGVmaW5pdGlvbnModGVzdF9vcHVzX2RlY29kZSBQUklWQVRFIERJU0FCTEVfRkxP
QVRfQVBJKQorICBlbmRpZigpCisgIGFkZF90ZXN0KHRlc3Rfb3B1c19kZWNvZGUgdGVzdF9vcHVz
X2RlY29kZSkKKworICBhZGRfZXhlY3V0YWJsZSh0ZXN0X29wdXNfcGFkZGluZyAke3Rlc3Rfb3B1
c19wYWRkaW5nX3NvdXJjZXN9KQorICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcyh0ZXN0X29w
dXNfcGFkZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklWQVRFICR7Q01BS0Vf
Q1VSUkVOVF9CSU5BUllfRElSfSkKKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfb3B1c19w
YWRkaW5nIFBSSVZBVEUgb3B1cykKKyAgYWRkX3Rlc3QodGVzdF9vcHVzX3BhZGRpbmcgdGVzdF9v
cHVzX3BhZGRpbmcpCisKKyAgaWYoTk9UIEJVSUxEX1NIQVJFRF9MSUJTKQorICAgICMgZGlzYWJs
ZSB0ZXN0cyB0aGF0IGRlcGVuZHMgb24gcHJpdmF0ZSBBUEkgd2hlbiBidWlsZGluZyBzaGFyZWQg
bGliCisgICAgYWRkX2V4ZWN1dGFibGUodGVzdF9vcHVzX2FwaSAke3Rlc3Rfb3B1c19hcGlfc291
cmNlc30pCisgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXModGVzdF9vcHVzX2FwaQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFS
WV9ESVJ9IGNlbHQpCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfb3B1c19hcGkgUFJJ
VkFURSBvcHVzKQorICAgIGlmKE9QVVNfRklYRURfUE9JTlQpCisgICAgICB0YXJnZXRfY29tcGls
ZV9kZWZpbml0aW9ucyh0ZXN0X29wdXNfYXBpIFBSSVZBVEUgRElTQUJMRV9GTE9BVF9BUEkpCisg
ICAgZW5kaWYoKQorICAgIGFkZF90ZXN0KHRlc3Rfb3B1c19hcGkgdGVzdF9vcHVzX2FwaSkKKwor
ICAgIGFkZF9leGVjdXRhYmxlKHRlc3Rfb3B1c19lbmNvZGUgJHt0ZXN0X29wdXNfZW5jb2RlX3Nv
dXJjZXN9KQorICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKHRlc3Rfb3B1c19lbmNvZGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9C
SU5BUllfRElSfSBjZWx0KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0X29wdXNfZW5j
b2RlIFBSSVZBVEUgb3B1cykKKyAgICBhZGRfdGVzdCh0ZXN0X29wdXNfZW5jb2RlIHRlc3Rfb3B1
c19lbmNvZGUpCisgIGVuZGlmKCkKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvTWFrZWZpbGUuYW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL01h
a2VmaWxlLmFtCmluZGV4IDViNTdiMzM3MmU1NmNjYTU5OWM0ZDQ1YWFhMDFmZTNkMzcxODYyMzIu
LjdmOTA1YjA5Njk3MjI3M2M1MDk0MTA4MjQyMTE3NTEyMGE4NGRmOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvTWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9NYWtlZmlsZS5hbQpAQCAtODIsNyArODIsNyBAQCBpZiBPUFVTX0FSTV9F
WFRFUk5BTF9BU00KIGxpYm9wdXNfbGFfTElCQUREICs9IGxpYmFybWFzbS5sYQogZW5kaWYKIAot
cGtnaW5jbHVkZV9IRUFERVJTID0gaW5jbHVkZS9vcHVzLmggaW5jbHVkZS9vcHVzX211bHRpc3Ry
ZWFtLmggaW5jbHVkZS9vcHVzX3R5cGVzLmggaW5jbHVkZS9vcHVzX2RlZmluZXMuaAorcGtnaW5j
bHVkZV9IRUFERVJTID0gaW5jbHVkZS9vcHVzLmggaW5jbHVkZS9vcHVzX211bHRpc3RyZWFtLmgg
aW5jbHVkZS9vcHVzX3R5cGVzLmggaW5jbHVkZS9vcHVzX2RlZmluZXMuaCBpbmNsdWRlL29wdXNf
cHJvamVjdGlvbi5oCiAKIG5vaW5zdF9IRUFERVJTID0gJChPUFVTX0hFQUQpICQoU0lMS19IRUFE
KSAkKENFTFRfSEVBRCkKIApAQCAtMTAyLDcgKzEwMiw4IEBAIG5vaW5zdF9QUk9HUkFNUyA9IGNl
bHQvdGVzdHMvdGVzdF91bml0X2N3cnMzMiBcCiAgICAgICAgICAgICAgICAgICB0ZXN0cy90ZXN0
X29wdXNfYXBpIFwKICAgICAgICAgICAgICAgICAgIHRlc3RzL3Rlc3Rfb3B1c19kZWNvZGUgXAog
ICAgICAgICAgICAgICAgICAgdGVzdHMvdGVzdF9vcHVzX2VuY29kZSBcCi0gICAgICAgICAgICAg
ICAgICB0ZXN0cy90ZXN0X29wdXNfcGFkZGluZworICAgICAgICAgICAgICAgICAgdGVzdHMvdGVz
dF9vcHVzX3BhZGRpbmcgXAorICAgICAgICAgICAgICAgICAgdGVzdHMvdGVzdF9vcHVzX3Byb2pl
Y3Rpb24KIAogVEVTVFMgPSBjZWx0L3Rlc3RzL3Rlc3RfdW5pdF9jd3JzMzIgXAogICAgICAgICBj
ZWx0L3Rlc3RzL3Rlc3RfdW5pdF9kZnQgXApAQCAtMTE2LDcgKzExNyw4IEBAIFRFU1RTID0gY2Vs
dC90ZXN0cy90ZXN0X3VuaXRfY3dyczMyIFwKICAgICAgICAgdGVzdHMvdGVzdF9vcHVzX2FwaSBc
CiAgICAgICAgIHRlc3RzL3Rlc3Rfb3B1c19kZWNvZGUgXAogICAgICAgICB0ZXN0cy90ZXN0X29w
dXNfZW5jb2RlIFwKLSAgICAgICAgdGVzdHMvdGVzdF9vcHVzX3BhZGRpbmcKKyAgICAgICAgdGVz
dHMvdGVzdF9vcHVzX3BhZGRpbmcgXAorICAgICAgICB0ZXN0cy90ZXN0X29wdXNfcHJvamVjdGlv
bgogCiBvcHVzX2RlbW9fU09VUkNFUyA9IHNyYy9vcHVzX2RlbW8uYwogCkBAIC0xNDMsNiArMTQ1
LDEzIEBAIHRlc3RzX3Rlc3Rfb3B1c19wYWRkaW5nX0xEQUREID0gbGlib3B1cy5sYSAkKE5FMTBf
TElCUykgJChMSUJNKQogCiBDRUxUX09CSiA9ICQoQ0VMVF9TT1VSQ0VTOi5jPS5sbykKIFNJTEtf
T0JKID0gJChTSUxLX1NPVVJDRVM6LmM9LmxvKQorT1BVU19PQkogPSAkKE9QVVNfU09VUkNFUzou
Yz0ubG8pCisKK3Rlc3RzX3Rlc3Rfb3B1c19wcm9qZWN0aW9uX1NPVVJDRVMgPSB0ZXN0cy90ZXN0
X29wdXNfcHJvamVjdGlvbi5jIHRlc3RzL3Rlc3Rfb3B1c19jb21tb24uaAordGVzdHNfdGVzdF9v
cHVzX3Byb2plY3Rpb25fTERBREQgPSAkKE9QVVNfT0JKKSAkKFNJTEtfT0JKKSAkKENFTFRfT0JK
KSAkKE5FMTBfTElCUykgJChMSUJNKQoraWYgT1BVU19BUk1fRVhURVJOQUxfQVNNCit0ZXN0c190
ZXN0X29wdXNfcHJvamVjdGlvbl9MREFERCArPSBsaWJhcm1hc20ubGEKK2VuZGlmCiAKIHNpbGtf
dGVzdHNfdGVzdF91bml0X0xQQ19pbnZfcHJlZF9nYWluX1NPVVJDRVMgPSBzaWxrL3Rlc3RzL3Rl
c3RfdW5pdF9MUENfaW52X3ByZWRfZ2Fpbi5jCiBzaWxrX3Rlc3RzX3Rlc3RfdW5pdF9MUENfaW52
X3ByZWRfZ2Fpbl9MREFERCA9ICQoU0lMS19PQkopICQoQ0VMVF9PQkopICQoTkUxMF9MSUJTKSAk
KExJQk0pCkBAIC0yMDEsNiArMjEwLDEzIEBAIEVYVFJBX0RJU1QgPSBvcHVzLnBjLmluIFwKICAg
ICAgICAgICAgICBvcHVzLm00IFwKICAgICAgICAgICAgICBNYWtlZmlsZS5taXBzIFwKICAgICAg
ICAgICAgICBNYWtlZmlsZS51bml4IFwKKyAgICAgICAgICAgICBDTWFrZUxpc3RzLnR4dCBcCisg
ICAgICAgICAgICAgY29uZmlnLmguY21ha2UuaW4gXAorICAgICAgICAgICAgIG9wdXNfYnVpbGR0
eXBlLmNtYWtlIFwKKyAgICAgICAgICAgICBvcHVzX2NvbmZpZy5jbWFrZSBcCisgICAgICAgICAg
ICAgb3B1c19mdW5jdGlvbnMuY21ha2UgXAorICAgICAgICAgICAgIG9wdXNfc291cmNlcy5jbWFr
ZSBcCisgICAgICAgICAgICAgT3B1c0NvbmZpZy5jbWFrZS5pbiBcCiAgICAgICAgICAgICAgdGVz
dHMvcnVuX3ZlY3RvcnMuc2ggXAogICAgICAgICAgICAgIGNlbHQvYXJtL2FybTJnbnUucGwgXAog
ICAgICAgICAgICAgIGNlbHQvYXJtL2NlbHRfcGl0Y2hfeGNvcnJfYXJtLnMgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9NYWtlZmlsZS5taXBzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9NYWtlZmlsZS5taXBzCmluZGV4IGQyNWFmOGNiYzI4ZTVlNjlmNTNm
ZTg3YjI1ZjI1OGJhMzg1ZjVkMjkuLmU5YmZjMjJlODVjMWJkMjQ3NDk4ZmViNzMxMmI2ZjljY2Rj
NjlhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvTWFrZWZpbGUubWlwcworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL01ha2VmaWxlLm1pcHMKQEAgLTEy
LDcgKzEyLDcgQEAgQ0ZMQUdTIDo9IC1EVVNFX0FMTE9DQSAkKENGTEFHUykKIAogIyBUaGVzZSBv
cHRpb25zIGFmZmVjdCBwZXJmb3JtYW5jZQogIyBIQVZFX0xSSU5URjogVXNlIEM5OSBpbnRyaW5z
aWNzIHRvIHNwZWVkIHVwIGZsb2F0LXRvLWludCBjb252ZXJzaW9uCi0jQ0ZMQUdTIDo9IC1ESEFW
RV9MUklOVEYgJChDRkxBR1MpCitDRkxBR1MgOj0gLURIQVZFX0xSSU5URiAkKENGTEFHUykKIAog
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBFTkQgT0YgT1BUSU9OUyAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvT3B1c0NvbmZpZy5jbWFrZS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvT3B1c0NvbmZpZy5jbWFrZS5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNTc3MTc0M2FmODMxNWE1YzBiNDhmOThkMjIwZWY1ZmU3ODAyNjY1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9PcHVzQ29uZmlnLmNtYWtlLmluCkBAIC0wLDAgKzEsMTkgQEAKK3Nl
dChPUFVTX1ZFUlNJT04gQFBST0pFQ1RfVkVSU0lPTkApCitzZXQoT1BVU19WRVJTSU9OX1NUUklO
RyBAUFJPSkVDVF9WRVJTSU9OQCkKK3NldChPUFVTX1ZFUlNJT05fTUFKT1IgQFBST0pFQ1RfVkVS
U0lPTl9NQUpPUkApCitzZXQoT1BVU19WRVJTSU9OX01JTk9SIEBQUk9KRUNUX1ZFUlNJT05fTUlO
T1JAKQorc2V0KE9QVVNfVkVSU0lPTl9QQVRDSCBAUFJPSkVDVF9WRVJTSU9OX1BBVENIQCkKKwor
QFBBQ0tBR0VfSU5JVEAKKworc2V0X2FuZF9jaGVjayhPUFVTX0lOQ0xVREVfRElSICJAUEFDS0FH
RV9JTkNMVURFX0lOU1RBTExfRElSQCIpCitzZXRfYW5kX2NoZWNrKE9QVVNfSU5DTFVERV9ESVJT
ICJAUEFDS0FHRV9JTkNMVURFX0lOU1RBTExfRElSQCIpCisKK2luY2x1ZGUoJHtDTUFLRV9DVVJS
RU5UX0xJU1RfRElSfS9PcHVzVGFyZ2V0cy5jbWFrZSkKKworc2V0KE9QVVNfTElCUkFSWSBPcHVz
OjpvcHVzKQorc2V0KE9QVVNfTElCUkFSSUVTIE9wdXM6Om9wdXMpCisKK2NoZWNrX3JlcXVpcmVk
X2NvbXBvbmVudHMoT3B1cykKKworc2V0KE9QVVNfRk9VTkQgMSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvUkVBRE1F
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9SRUFETUUKaW5kZXggOWEwNjgxMTY1NGI1YzIzMzgyM2EwOTc0MjY2ODM1MzEzNDFhNmQyMi4u
MjdmZGRmOTZlOTAxM2I4NzNiMmEzOWM3MDc2MmUzOGQzOWIyMjQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9SRUFE
TUUKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9SRUFETUUKQEAgLTI5LDcgKzI5LDcgQEAgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgZGF0
YSBhbmQgY2Fubm90IHN1cHBvcnQgc2Vla2luZy4KIAogT3B1cyBzdG9yZWQgaW4gZmlsZXMgc2hv
dWxkIHVzZSB0aGUgT2dnIGVuY2Fwc3VsYXRpb24gZm9yIE9wdXMgd2hpY2ggaXMKIGRlc2NyaWJl
ZCBhdDoKLSBodHRwczovL3dpa2kueGlwaC5vcmcvT2dnT3B1cworIGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM3ODQ1CiAKIEFuIG9wdXMtdG9vbHMgcGFja2FnZSBpcyBhdmFpbGFibGUg
d2hpY2ggcHJvdmlkZXMgZW5jb2RpbmcgYW5kIGRlY29kaW5nIG9mCiBPZ2cgZW5jYXBzdWxhdGVk
IE9wdXMgZmlsZXMgYW5kIGluY2x1ZGVzIGEgbnVtYmVyIG9mIHVzZWZ1bCBmZWF0dXJlcy4KQEAg
LTEyNSwxMyArMTI1LDEzIEBAIFRvIHJ1biB0aGUgaW50ZWdyYXRlZCB0ZXN0czoKIAogVGhlcmUg
aXMgYWxzbyBjb2xsZWN0aW9uIG9mIHN0YW5kYXJkIHRlc3QgdmVjdG9ycyB3aGljaCBhcmUgbm90
CiBpbmNsdWRlZCBpbiB0aGlzIHBhY2thZ2UgZm9yIHNpemUgcmVhc29ucyBidXQgY2FuIGJlIG9i
dGFpbmVkIGZyb206Ci1odHRwczovL29wdXMtY29kZWMub3JnL3Rlc3R2ZWN0b3JzL29wdXNfdGVz
dHZlY3RvcnMudGFyLmd6CitodHRwczovL29wdXMtY29kZWMub3JnL2RvY3Mvb3B1c190ZXN0dmVj
dG9ycy1yZmM4MjUxLnRhci5negogCiBUbyBydW4gY29tcGFyZSB0aGUgY29kZSB0byB0aGVzZSB0
ZXN0IHZlY3RvcnM6CiAKLSAgICAlIGN1cmwgLU9MIGh0dHBzOi8vb3B1cy1jb2RlYy5vcmcvdGVz
dHZlY3RvcnMvb3B1c190ZXN0dmVjdG9ycy50YXIuZ3oKLSAgICAlIHRhciAtenhmIG9wdXNfdGVz
dHZlY3RvcnMudGFyLmd6Ci0gICAgJSAuL3Rlc3RzL3J1bl92ZWN0b3JzLnNoIC4vIG9wdXNfdGVz
dHZlY3RvcnMgNDgwMDAKKyAgICAlIGN1cmwgLU9MIGh0dHBzOi8vb3B1cy1jb2RlYy5vcmcvZG9j
cy9vcHVzX3Rlc3R2ZWN0b3JzLXJmYzgyNTEudGFyLmd6CisgICAgJSB0YXIgLXp4ZiBvcHVzX3Rl
c3R2ZWN0b3JzLXJmYzgyNTEudGFyLmd6CisgICAgJSAuL3Rlc3RzL3J1bl92ZWN0b3JzLnNoIC4v
IG9wdXNfbmV3dmVjdG9ycyA0ODAwMAogCiA9PSBQb3J0YWJpbGl0eSBub3RlcyA9PQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvYXJjaC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FyY2guaAppbmRleCBkMWU2NDU3YzU0YTA3YzZlYzVj
M2EwMzA1MTBkYThhYjQyMzU1MDA4Li41YzQ5NTc5ZjAxOGNjZmJlNTYwMmQ1MDFiZWZlOTFjM2Zi
MzhiODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJjaC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcmNoLmgKQEAgLTU2LDIz
ICs1Niw0MiBAQAogCiAjZGVmaW5lIENFTFRfU0lHX1NDQUxFIDMyNzY4LmYKIAotI2RlZmluZSBj
ZWx0X2ZhdGFsKHN0cikgX2NlbHRfZmF0YWwoc3RyLCBfX0ZJTEVfXywgX19MSU5FX18pOwotI2lm
ZGVmIEVOQUJMRV9BU1NFUlRJT05TCisjZGVmaW5lIENFTFRfRkFUQUwoc3RyKSBjZWx0X2ZhdGFs
KHN0ciwgX19GSUxFX18sIF9fTElORV9fKTsKKworI2lmIGRlZmluZWQoRU5BQkxFX0FTU0VSVElP
TlMpIHx8IGRlZmluZWQoRU5BQkxFX0hBUkRFTklORykKKyNpZmRlZiBfX0dOVUNfXworX19hdHRy
aWJ1dGVfXygobm9yZXR1cm4pKQorI2VuZGlmCit2b2lkIGNlbHRfZmF0YWwoY29uc3QgY2hhciAq
c3RyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSk7CisKKyNpZiBkZWZpbmVkKENFTFRfQykg
JiYgIWRlZmluZWQoT1ZFUlJJREVfY2VsdF9mYXRhbCkKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2lmZGVmIF9fR05VQ19fCiBfX2F0dHJpYnV0ZV9fKChub3JldHVy
bikpCiAjZW5kaWYKLXN0YXRpYyBPUFVTX0lOTElORSB2b2lkIF9jZWx0X2ZhdGFsKGNvbnN0IGNo
YXIgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpCit2b2lkIGNlbHRfZmF0YWwoY29u
c3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSkKIHsKKyNpZiAhZGVmaW5l
ZChDSFJPTUlVTV9OT19MT0dHSU5HKQogICAgZnByaW50ZiAoc3RkZXJyLCAiRmF0YWwgKGludGVy
bmFsKSBlcnJvciBpbiAlcywgbGluZSAlZDogJXNcbiIsIGZpbGUsIGxpbmUsIHN0cik7CisjZW5k
aWYKICAgIGFib3J0KCk7CiB9Ci0jZGVmaW5lIGNlbHRfYXNzZXJ0KGNvbmQpIHtpZiAoIShjb25k
KSkge2NlbHRfZmF0YWwoImFzc2VydGlvbiBmYWlsZWQ6ICIgI2NvbmQpO319Ci0jZGVmaW5lIGNl
bHRfYXNzZXJ0Mihjb25kLCBtZXNzYWdlKSB7aWYgKCEoY29uZCkpIHtjZWx0X2ZhdGFsKCJhc3Nl
cnRpb24gZmFpbGVkOiAiICNjb25kICJcbiIgbWVzc2FnZSk7fX0KKyNlbmRpZgorCisjZGVmaW5l
IGNlbHRfYXNzZXJ0KGNvbmQpIHtpZiAoIShjb25kKSkge0NFTFRfRkFUQUwoImFzc2VydGlvbiBm
YWlsZWQ6ICIgI2NvbmQpO319CisjZGVmaW5lIGNlbHRfYXNzZXJ0Mihjb25kLCBtZXNzYWdlKSB7
aWYgKCEoY29uZCkpIHtDRUxUX0ZBVEFMKCJhc3NlcnRpb24gZmFpbGVkOiAiICNjb25kICJcbiIg
bWVzc2FnZSk7fX0KKyNkZWZpbmUgTVVTVF9TVUNDRUVEKGNhbGwpIGNlbHRfYXNzZXJ0KChjYWxs
KSA9PSBPUFVTX09LKQogI2Vsc2UKICNkZWZpbmUgY2VsdF9hc3NlcnQoY29uZCkKICNkZWZpbmUg
Y2VsdF9hc3NlcnQyKGNvbmQsIG1lc3NhZ2UpCisjZGVmaW5lIE1VU1RfU1VDQ0VFRChjYWxsKSBk
byB7aWYoKGNhbGwpICE9IE9QVVNfT0spIHtSRVNUT1JFX1NUQUNLOyByZXR1cm4gT1BVU19JTlRF
Uk5BTF9FUlJPUjt9IH0gd2hpbGUgKDApCisjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0FT
U0VSVElPTlMpCisjZGVmaW5lIGNlbHRfc2lnX2Fzc2VydChjb25kKSB7aWYgKCEoY29uZCkpIHtD
RUxUX0ZBVEFMKCJzaWduYWwgYXNzZXJ0aW9uIGZhaWxlZDogIiAjY29uZCk7fX0KKyNlbHNlCisj
ZGVmaW5lIGNlbHRfc2lnX2Fzc2VydChjb25kKQogI2VuZGlmCiAKICNkZWZpbmUgSU1VTDMyKGEs
YikgKChhKSooYikpCkBAIC0xMDcsNiArMTI2LDggQEAgdHlwZWRlZiBvcHVzX3ZhbDMyIGNlbHRf
c2lnOwogdHlwZWRlZiBvcHVzX3ZhbDE2IGNlbHRfbm9ybTsKIHR5cGVkZWYgb3B1c192YWwzMiBj
ZWx0X2VuZXI7CiAKKyNkZWZpbmUgY2VsdF9pc25hbih4KSAwCisKICNkZWZpbmUgUTE1T05FIDMy
NzY3CiAKICNkZWZpbmUgU0lHX1NISUZUIDEyCkBAIC0xNDEsNyArMTYyLDcgQEAgc3RhdGljIE9Q
VVNfSU5MSU5FIG9wdXNfaW50MTYgU0FUMTYob3B1c19pbnQzMiB4KSB7CiAKICNpZmRlZiBPUFVT
X0FSTV9QUkVTVU1FX0FBUkNINjRfTkVPTl9JTlRSCiAjaW5jbHVkZSAiYXJtL2ZpeGVkX2FybTY0
LmgiCi0jZWxpZiBPUFVTX0FSTV9JTkxJTkVfRURTUAorI2VsaWYgZGVmaW5lZCAoT1BVU19BUk1f
SU5MSU5FX0VEU1ApCiAjaW5jbHVkZSAiYXJtL2ZpeGVkX2FybXY1ZS5oIgogI2VsaWYgZGVmaW5l
ZCAoT1BVU19BUk1fSU5MSU5FX0FTTSkKICNpbmNsdWRlICJhcm0vZml4ZWRfYXJtdjQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9mZnRfbmUxMC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X2ZmdF9uZTEw
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWE1ZmQ3ODA4YjA4OWM5NjU4NDBmNjFmYjYwOTE5MzU4ZjlhZjNjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9mZnRfbmUxMC5jCkBAIC0wLDAgKzEsMTcz
IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTUgWGlwaC5PcmcgRm91bmRhdGlvbgorICAgV3JpdHRl
biBieSBWaXN3YW5hdGggUHV0dGFndW50YSAqLworLyoqCisgICBAZmlsZSBjZWx0X2ZmdF9uZTEw
LmMKKyAgIEBicmllZiBBUk0gTmVvbiBvcHRpbWl6YXRpb25zIGZvciBmZnQgdXNpbmcgTkUxMCBs
aWJyYXJ5CisgKi8KKworLyoKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUgbWV0
OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICAgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
ICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgU0tJUF9DT05GSUdfSAorI2lmZGVm
IEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorI2VuZGlmCisKKyNp
bmNsdWRlIDxORTEwX2RzcC5oPgorI2luY2x1ZGUgIm9zX3N1cHBvcnQuaCIKKyNpbmNsdWRlICJr
aXNzX2ZmdC5oIgorI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgiCisKKyNpZiAhZGVmaW5lZChGSVhF
RF9QT0lOVCkKKyMgZGVmaW5lIE5FMTBfRkZUX0FMTE9DX0MyQ19UWVBFX05FT04gbmUxMF9mZnRf
YWxsb2NfYzJjX2Zsb2F0MzJfbmVvbgorIyBkZWZpbmUgTkUxMF9GRlRfQ0ZHX1RZUEVfVCBuZTEw
X2ZmdF9jZmdfZmxvYXQzMl90CisjIGRlZmluZSBORTEwX0ZGVF9TVEFURV9UWVBFX1QgbmUxMF9m
ZnRfc3RhdGVfZmxvYXQzMl90CisjIGRlZmluZSBORTEwX0ZGVF9ERVNUUk9ZX0MyQ19UWVBFIG5l
MTBfZmZ0X2Rlc3Ryb3lfYzJjX2Zsb2F0MzIKKyMgZGVmaW5lIE5FMTBfRkZUX0NQWF9UWVBFX1Qg
bmUxMF9mZnRfY3B4X2Zsb2F0MzJfdAorIyBkZWZpbmUgTkUxMF9GRlRfQzJDXzFEX1RZUEVfTkVP
TiBuZTEwX2ZmdF9jMmNfMWRfZmxvYXQzMl9uZW9uCisjZWxzZQorIyBkZWZpbmUgTkUxMF9GRlRf
QUxMT0NfQzJDX1RZUEVfTkVPTihuZmZ0KSBuZTEwX2ZmdF9hbGxvY19jMmNfaW50MzJfbmVvbihu
ZmZ0KQorIyBkZWZpbmUgTkUxMF9GRlRfQ0ZHX1RZUEVfVCBuZTEwX2ZmdF9jZmdfaW50MzJfdAor
IyBkZWZpbmUgTkUxMF9GRlRfU1RBVEVfVFlQRV9UIG5lMTBfZmZ0X3N0YXRlX2ludDMyX3QKKyMg
ZGVmaW5lIE5FMTBfRkZUX0RFU1RST1lfQzJDX1RZUEUgbmUxMF9mZnRfZGVzdHJveV9jMmNfaW50
MzIKKyMgZGVmaW5lIE5FMTBfRkZUX0RFU1RST1lfQzJDX1RZUEUgbmUxMF9mZnRfZGVzdHJveV9j
MmNfaW50MzIKKyMgZGVmaW5lIE5FMTBfRkZUX0NQWF9UWVBFX1QgbmUxMF9mZnRfY3B4X2ludDMy
X3QKKyMgZGVmaW5lIE5FMTBfRkZUX0MyQ18xRF9UWVBFX05FT04gbmUxMF9mZnRfYzJjXzFkX2lu
dDMyX25lb24KKyNlbmRpZgorCisjaWYgZGVmaW5lZChDVVNUT01fTU9ERVMpCisKKy8qIG5mZnQg
bGVuZ3RocyBpbiBORTEwIHRoYXQgc3VwcG9ydCBzY2FsZWQgZmZ0ICovCisjIGRlZmluZSBORTEw
X0ZGVFNDQUxFRF9TVVBQT1JUX01BWCA0CitzdGF0aWMgY29uc3QgaW50IG5lMTBfZmZ0X3NjYWxl
ZF9zdXBwb3J0W05FMTBfRkZUU0NBTEVEX1NVUFBPUlRfTUFYXSA9IHsKKyAgIDQ4MCwgMjQwLCAx
MjAsIDYwCit9OworCitpbnQgb3B1c19mZnRfYWxsb2NfYXJtX25lb24oa2lzc19mZnRfc3RhdGUg
KnN0KQoreworICAgaW50IGk7CisgICBzaXplX3QgbWVtbmVlZGVkID0gc2l6ZW9mKHN0cnVjdCBh
cmNoX2ZmdF9zdGF0ZSk7CisKKyAgIHN0LT5hcmNoX2ZmdCA9IChhcmNoX2ZmdF9zdGF0ZSAqKW9w
dXNfYWxsb2MobWVtbmVlZGVkKTsKKyAgIGlmICghc3QtPmFyY2hfZmZ0KQorICAgICAgcmV0dXJu
IC0xOworCisgICBmb3IgKGkgPSAwOyBpIDwgTkUxMF9GRlRTQ0FMRURfU1VQUE9SVF9NQVg7IGkr
KykgeworICAgICAgaWYoc3QtPm5mZnQgPT0gbmUxMF9mZnRfc2NhbGVkX3N1cHBvcnRbaV0pCisg
ICAgICAgICBicmVhazsKKyAgIH0KKyAgIGlmIChpID09IE5FMTBfRkZUU0NBTEVEX1NVUFBPUlRf
TUFYKSB7CisgICAgICAvKiBUaGlzIG5mZnQgbGVuZ3RoIChzY2FsZWQgZmZ0KSBpcyBub3Qgc3Vw
cG9ydGVkIGluIE5FMTAgKi8KKyAgICAgIHN0LT5hcmNoX2ZmdC0+aXNfc3VwcG9ydGVkID0gMDsK
KyAgICAgIHN0LT5hcmNoX2ZmdC0+cHJpdiA9IE5VTEw7CisgICB9CisgICBlbHNlIHsKKyAgICAg
IHN0LT5hcmNoX2ZmdC0+aXNfc3VwcG9ydGVkID0gMTsKKyAgICAgIHN0LT5hcmNoX2ZmdC0+cHJp
diA9ICh2b2lkICopTkUxMF9GRlRfQUxMT0NfQzJDX1RZUEVfTkVPTihzdC0+bmZmdCk7CisgICAg
ICBpZiAoc3QtPmFyY2hfZmZ0LT5wcml2ID09IE5VTEwpIHsKKyAgICAgICAgIHJldHVybiAtMTsK
KyAgICAgIH0KKyAgIH0KKyAgIHJldHVybiAwOworfQorCit2b2lkIG9wdXNfZmZ0X2ZyZWVfYXJt
X25lb24oa2lzc19mZnRfc3RhdGUgKnN0KQoreworICAgTkUxMF9GRlRfQ0ZHX1RZUEVfVCBjZmc7
CisKKyAgIGlmICghc3QtPmFyY2hfZmZ0KQorICAgICAgcmV0dXJuOworCisgICBjZmcgPSAoTkUx
MF9GRlRfQ0ZHX1RZUEVfVClzdC0+YXJjaF9mZnQtPnByaXY7CisgICBpZiAoY2ZnKQorICAgICAg
TkUxMF9GRlRfREVTVFJPWV9DMkNfVFlQRShjZmcpOworICAgb3B1c19mcmVlKHN0LT5hcmNoX2Zm
dCk7Cit9CisjZW5kaWYKKwordm9pZCBvcHVzX2ZmdF9uZW9uKGNvbnN0IGtpc3NfZmZ0X3N0YXRl
ICpzdCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBraXNzX2ZmdF9jcHggKmZpbiwKKyAgICAg
ICAgICAgICAgICAgICBraXNzX2ZmdF9jcHggKmZvdXQpCit7CisgICBORTEwX0ZGVF9TVEFURV9U
WVBFX1Qgc3RhdGU7CisgICBORTEwX0ZGVF9DRkdfVFlQRV9UIGNmZyA9ICZzdGF0ZTsKKyAgIFZB
UkRFQ0woTkUxMF9GRlRfQ1BYX1RZUEVfVCwgYnVmZmVyKTsKKyAgIFNBVkVfU1RBQ0s7CisgICBB
TExPQyhidWZmZXIsIHN0LT5uZmZ0LCBORTEwX0ZGVF9DUFhfVFlQRV9UKTsKKworICAgaWYgKCFz
dC0+YXJjaF9mZnQtPmlzX3N1cHBvcnRlZCkgeworICAgICAgLyogVGhpcyBuZmZ0IGxlbmd0aCAo
c2NhbGVkIGZmdCkgbm90IHN1cHBvcnRlZCBpbiBORTEwICovCisgICAgICBvcHVzX2ZmdF9jKHN0
LCBmaW4sIGZvdXQpOworICAgfQorICAgZWxzZSB7CisgICAgICBtZW1jcHkoKHZvaWQgKiljZmcs
IHN0LT5hcmNoX2ZmdC0+cHJpdiwgc2l6ZW9mKE5FMTBfRkZUX1NUQVRFX1RZUEVfVCkpOworICAg
ICAgc3RhdGUuYnVmZmVyID0gKE5FMTBfRkZUX0NQWF9UWVBFX1QgKikmYnVmZmVyWzBdOworI2lm
ICFkZWZpbmVkKEZJWEVEX1BPSU5UKQorICAgICAgc3RhdGUuaXNfZm9yd2FyZF9zY2FsZWQgPSAx
OworCisgICAgICBORTEwX0ZGVF9DMkNfMURfVFlQRV9ORU9OKChORTEwX0ZGVF9DUFhfVFlQRV9U
ICopZm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5FMTBfRkZUX0NQWF9U
WVBFX1QgKilmaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmZywgMCk7Cisj
ZWxzZQorICAgICAgTkUxMF9GRlRfQzJDXzFEX1RZUEVfTkVPTigoTkUxMF9GRlRfQ1BYX1RZUEVf
VCAqKWZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChORTEwX0ZGVF9DUFhf
VFlQRV9UICopZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmcsIDAsIDEp
OworI2VuZGlmCisgICB9CisgICBSRVNUT1JFX1NUQUNLOworfQorCit2b2lkIG9wdXNfaWZmdF9u
ZW9uKGNvbnN0IGtpc3NfZmZ0X3N0YXRlICpzdCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
a2lzc19mZnRfY3B4ICpmaW4sCisgICAgICAgICAgICAgICAgICAgIGtpc3NfZmZ0X2NweCAqZm91
dCkKK3sKKyAgIE5FMTBfRkZUX1NUQVRFX1RZUEVfVCBzdGF0ZTsKKyAgIE5FMTBfRkZUX0NGR19U
WVBFX1QgY2ZnID0gJnN0YXRlOworICAgVkFSREVDTChORTEwX0ZGVF9DUFhfVFlQRV9ULCBidWZm
ZXIpOworICAgU0FWRV9TVEFDSzsKKyAgIEFMTE9DKGJ1ZmZlciwgc3QtPm5mZnQsIE5FMTBfRkZU
X0NQWF9UWVBFX1QpOworCisgICBpZiAoIXN0LT5hcmNoX2ZmdC0+aXNfc3VwcG9ydGVkKSB7Cisg
ICAgICAvKiBUaGlzIG5mZnQgbGVuZ3RoIChzY2FsZWQgZmZ0KSBub3Qgc3VwcG9ydGVkIGluIE5F
MTAgKi8KKyAgICAgIG9wdXNfaWZmdF9jKHN0LCBmaW4sIGZvdXQpOworICAgfQorICAgZWxzZSB7
CisgICAgICBtZW1jcHkoKHZvaWQgKiljZmcsIHN0LT5hcmNoX2ZmdC0+cHJpdiwgc2l6ZW9mKE5F
MTBfRkZUX1NUQVRFX1RZUEVfVCkpOworICAgICAgc3RhdGUuYnVmZmVyID0gKE5FMTBfRkZUX0NQ
WF9UWVBFX1QgKikmYnVmZmVyWzBdOworI2lmICFkZWZpbmVkKEZJWEVEX1BPSU5UKQorICAgICAg
c3RhdGUuaXNfYmFja3dhcmRfc2NhbGVkID0gMDsKKworICAgICAgTkUxMF9GRlRfQzJDXzFEX1RZ
UEVfTkVPTigoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZvdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChORTEwX0ZGVF9DUFhfVFlQRV9UICopZmluLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjZmcsIDEpOworI2Vsc2UKKyAgICAgIE5FMTBfRkZUX0MyQ18xRF9U
WVBFX05FT04oKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmb3V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2ZnLCAxLCAwKTsKKyNlbmRpZgorICAgfQorICAgUkVTVE9SRV9T
VEFDSzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9tZGN0X25lMTAuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0v
Y2VsdF9tZGN0X25lMTAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTMxZDAyZDEwMDY2NDI4ZTZmZTZiOWEyMGVk
MTFmMDUxMGNhNWFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X21kY3RfbmUxMC5j
CkBAIC0wLDAgKzEsMjU4IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTUgWGlwaC5PcmcgRm91bmRh
dGlvbgorICAgV3JpdHRlbiBieSBWaXN3YW5hdGggUHV0dGFndW50YSAqLworLyoqCisgICBAZmls
ZSBjZWx0X21kY3RfbmUxMC5jCisgICBAYnJpZWYgQVJNIE5lb24gb3B0aW1pemF0aW9ucyBmb3Ig
bWRjdCB1c2luZyBORTEwIGxpYnJhcnkKKyAqLworCisvKgorICAgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAgIGFyZSBtZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBB
UyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YK
KyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBTS0lQ
X0NPTkZJR19ICisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2Vu
ZGlmCisjZW5kaWYKKworI2luY2x1ZGUgImtpc3NfZmZ0LmgiCisjaW5jbHVkZSAiX2tpc3NfZmZ0
X2d1dHMuaCIKKyNpbmNsdWRlICJtZGN0LmgiCisjaW5jbHVkZSAic3RhY2tfYWxsb2MuaCIKKwor
dm9pZCBjbHRfbWRjdF9mb3J3YXJkX25lb24oY29uc3QgbWRjdF9sb29rdXAgKmwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBraXNzX2ZmdF9zY2FsYXIgKmluLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCBvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHVzX3ZhbDE2ICp3aW5kb3csCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgb3ZlcmxhcCwgaW50IHNoaWZ0LCBpbnQgc3RyaWRlLCBpbnQg
YXJjaCkKK3sKKyAgIGludCBpOworICAgaW50IE4sIE4yLCBONDsKKyAgIFZBUkRFQ0woa2lzc19m
ZnRfc2NhbGFyLCBmKTsKKyAgIFZBUkRFQ0woa2lzc19mZnRfY3B4LCBmMik7CisgICBjb25zdCBr
aXNzX2ZmdF9zdGF0ZSAqc3QgPSBsLT5rZmZ0W3NoaWZ0XTsKKyAgIGNvbnN0IGtpc3NfdHdpZGRs
ZV9zY2FsYXIgKnRyaWc7CisKKyAgIFNBVkVfU1RBQ0s7CisKKyAgIE4gPSBsLT5uOworICAgdHJp
ZyA9IGwtPnRyaWc7CisgICBmb3IgKGk9MDtpPHNoaWZ0O2krKykKKyAgIHsKKyAgICAgIE4gPj49
IDE7CisgICAgICB0cmlnICs9IE47CisgICB9CisgICBOMiA9IE4+PjE7CisgICBONCA9IE4+PjI7
CisKKyAgIEFMTE9DKGYsIE4yLCBraXNzX2ZmdF9zY2FsYXIpOworICAgQUxMT0MoZjIsIE40LCBr
aXNzX2ZmdF9jcHgpOworCisgICAvKiBDb25zaWRlciB0aGUgaW5wdXQgdG8gYmUgY29tcG9zZWQg
b2YgZm91ciBibG9ja3M6IFthLCBiLCBjLCBkXSAqLworICAgLyogV2luZG93LCBzaHVmZmxlLCBm
b2xkICovCisgICB7CisgICAgICAvKiBUZW1wIHBvaW50ZXJzIHRvIG1ha2UgaXQgcmVhbGx5IGNs
ZWFyIHRvIHRoZSBjb21waWxlciB3aGF0IHdlJ3JlIGRvaW5nICovCisgICAgICBjb25zdCBraXNz
X2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHhwMSA9IGluKyhvdmVybGFwPj4xKTsKKyAgICAg
IGNvbnN0IGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVTVFJJQ1QgeHAyID0gaW4rTjItMSsob3Zl
cmxhcD4+MSk7CisgICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHlwID0gZjsK
KyAgICAgIGNvbnN0IG9wdXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNUIHdwMSA9IHdpbmRvdysob3Zl
cmxhcD4+MSk7CisgICAgICBjb25zdCBvcHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB3cDIgPSB3
aW5kb3crKG92ZXJsYXA+PjEpLTE7CisgICAgICBmb3IoaT0wO2k8KChvdmVybGFwKzMpPj4yKTtp
KyspCisgICAgICB7CisgICAgICAgICAvKiBSZWFsIHBhcnQgYXJyYW5nZWQgYXMgLWQtY1IsIElt
YWcgcGFydCBhcnJhbmdlZCBhcyAtYithUiovCisgICAgICAgICAqeXArKyA9IE1VTFQxNl8zMl9R
MTUoKndwMiwgeHAxW04yXSkgKyBNVUxUMTZfMzJfUTE1KCp3cDEsKnhwMik7CisgICAgICAgICAq
eXArKyA9IE1VTFQxNl8zMl9RMTUoKndwMSwgKnhwMSkgICAgLSBNVUxUMTZfMzJfUTE1KCp3cDIs
IHhwMlstTjJdKTsKKyAgICAgICAgIHhwMSs9MjsKKyAgICAgICAgIHhwMi09MjsKKyAgICAgICAg
IHdwMSs9MjsKKyAgICAgICAgIHdwMi09MjsKKyAgICAgIH0KKyAgICAgIHdwMSA9IHdpbmRvdzsK
KyAgICAgIHdwMiA9IHdpbmRvdytvdmVybGFwLTE7CisgICAgICBmb3IoO2k8TjQtKChvdmVybGFw
KzMpPj4yKTtpKyspCisgICAgICB7CisgICAgICAgICAvKiBSZWFsIHBhcnQgYXJyYW5nZWQgYXMg
YS1iUiwgSW1hZyBwYXJ0IGFycmFuZ2VkIGFzIC1jLWRSICovCisgICAgICAgICAqeXArKyA9ICp4
cDI7CisgICAgICAgICAqeXArKyA9ICp4cDE7CisgICAgICAgICB4cDErPTI7CisgICAgICAgICB4
cDItPTI7CisgICAgICB9CisgICAgICBmb3IoO2k8TjQ7aSsrKQorICAgICAgeworICAgICAgICAg
LyogUmVhbCBwYXJ0IGFycmFuZ2VkIGFzIGEtYlIsIEltYWcgcGFydCBhcnJhbmdlZCBhcyAtYy1k
UiAqLworICAgICAgICAgKnlwKysgPSAgLU1VTFQxNl8zMl9RMTUoKndwMSwgeHAxWy1OMl0pICsg
TVVMVDE2XzMyX1ExNSgqd3AyLCAqeHAyKTsKKyAgICAgICAgICp5cCsrID0gTVVMVDE2XzMyX1Ex
NSgqd3AyLCAqeHAxKSAgICAgKyBNVUxUMTZfMzJfUTE1KCp3cDEsIHhwMltOMl0pOworICAgICAg
ICAgeHAxKz0yOworICAgICAgICAgeHAyLT0yOworICAgICAgICAgd3AxKz0yOworICAgICAgICAg
d3AyLT0yOworICAgICAgfQorICAgfQorICAgLyogUHJlLXJvdGF0aW9uICovCisgICB7CisgICAg
ICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHlwID0gZjsKKyAgICAgIGNvbnN0IGtp
c3NfdHdpZGRsZV9zY2FsYXIgKnQgPSAmdHJpZ1swXTsKKyAgICAgIGZvcihpPTA7aTxONDtpKysp
CisgICAgICB7CisgICAgICAgICBraXNzX2ZmdF9jcHggeWM7CisgICAgICAgICBraXNzX3R3aWRk
bGVfc2NhbGFyIHQwLCB0MTsKKyAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciByZSwgaW0sIHlyLCB5
aTsKKyAgICAgICAgIHQwID0gdFtpXTsKKyAgICAgICAgIHQxID0gdFtONCtpXTsKKyAgICAgICAg
IHJlID0gKnlwKys7CisgICAgICAgICBpbSA9ICp5cCsrOworICAgICAgICAgeXIgPSBTX01VTChy
ZSx0MCkgIC0gIFNfTVVMKGltLHQxKTsKKyAgICAgICAgIHlpID0gU19NVUwoaW0sdDApICArICBT
X01VTChyZSx0MSk7CisgICAgICAgICB5Yy5yID0geXI7CisgICAgICAgICB5Yy5pID0geWk7Cisg
ICAgICAgICBmMltpXSA9IHljOworICAgICAgfQorICAgfQorCisgICBvcHVzX2ZmdChzdCwgZjIs
IChraXNzX2ZmdF9jcHggKilmLCBhcmNoKTsKKworICAgLyogUG9zdC1yb3RhdGUgKi8KKyAgIHsK
KyAgICAgIC8qIFRlbXAgcG9pbnRlcnMgdG8gbWFrZSBpdCByZWFsbHkgY2xlYXIgdG8gdGhlIGNv
bXBpbGVyIHdoYXQgd2UncmUgZG9pbmcgKi8KKyAgICAgIGNvbnN0IGtpc3NfZmZ0X2NweCAqIE9Q
VVNfUkVTVFJJQ1QgZnAgPSAoa2lzc19mZnRfY3B4ICopZjsKKyAgICAgIGtpc3NfZmZ0X3NjYWxh
ciAqIE9QVVNfUkVTVFJJQ1QgeXAxID0gb3V0OworICAgICAga2lzc19mZnRfc2NhbGFyICogT1BV
U19SRVNUUklDVCB5cDIgPSBvdXQrc3RyaWRlKihOMi0xKTsKKyAgICAgIGNvbnN0IGtpc3NfdHdp
ZGRsZV9zY2FsYXIgKnQgPSAmdHJpZ1swXTsKKyAgICAgIC8qIFRlbXAgcG9pbnRlcnMgdG8gbWFr
ZSBpdCByZWFsbHkgY2xlYXIgdG8gdGhlIGNvbXBpbGVyIHdoYXQgd2UncmUgZG9pbmcgKi8KKyAg
ICAgIGZvcihpPTA7aTxONDtpKyspCisgICAgICB7CisgICAgICAgICBraXNzX2ZmdF9zY2FsYXIg
eXIsIHlpOworICAgICAgICAgeXIgPSBTX01VTChmcC0+aSx0W040K2ldKSAtIFNfTVVMKGZwLT5y
LHRbaV0pOworICAgICAgICAgeWkgPSBTX01VTChmcC0+cix0W040K2ldKSArIFNfTVVMKGZwLT5p
LHRbaV0pOworICAgICAgICAgKnlwMSA9IHlyOworICAgICAgICAgKnlwMiA9IHlpOworICAgICAg
ICAgZnArKzsKKyAgICAgICAgIHlwMSArPSAyKnN0cmlkZTsKKyAgICAgICAgIHlwMiAtPSAyKnN0
cmlkZTsKKyAgICAgIH0KKyAgIH0KKyAgIFJFU1RPUkVfU1RBQ0s7Cit9CisKK3ZvaWQgY2x0X21k
Y3RfYmFja3dhcmRfbmVvbihjb25zdCBtZGN0X2xvb2t1cCAqbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBraXNzX2ZmdF9zY2FsYXIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVTVFJJQ1Qgb3V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IG9wdXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNUIHdpbmRvdywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcmxhcCwgaW50IHNoaWZ0LCBpbnQgc3Ry
aWRlLCBpbnQgYXJjaCkKK3sKKyAgIGludCBpOworICAgaW50IE4sIE4yLCBONDsKKyAgIFZBUkRF
Q0woa2lzc19mZnRfc2NhbGFyLCBmKTsKKyAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKnRy
aWc7CisgICBjb25zdCBraXNzX2ZmdF9zdGF0ZSAqc3QgPSBsLT5rZmZ0W3NoaWZ0XTsKKworICAg
TiA9IGwtPm47CisgICB0cmlnID0gbC0+dHJpZzsKKyAgIGZvciAoaT0wO2k8c2hpZnQ7aSsrKQor
ICAgeworICAgICAgTiA+Pj0gMTsKKyAgICAgIHRyaWcgKz0gTjsKKyAgIH0KKyAgIE4yID0gTj4+
MTsKKyAgIE40ID0gTj4+MjsKKworICAgQUxMT0MoZiwgTjIsIGtpc3NfZmZ0X3NjYWxhcik7CisK
KyAgIC8qIFByZS1yb3RhdGUgKi8KKyAgIHsKKyAgICAgIC8qIFRlbXAgcG9pbnRlcnMgdG8gbWFr
ZSBpdCByZWFsbHkgY2xlYXIgdG8gdGhlIGNvbXBpbGVyIHdoYXQgd2UncmUgZG9pbmcgKi8KKyAg
ICAgIGNvbnN0IGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVTVFJJQ1QgeHAxID0gaW47CisgICAg
ICBjb25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHhwMiA9IGluK3N0cmlkZSoo
TjItMSk7CisgICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHlwID0gZjsKKyAg
ICAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHQgPSAmdHJpZ1sw
XTsKKyAgICAgIGZvcihpPTA7aTxONDtpKyspCisgICAgICB7CisgICAgICAgICBraXNzX2ZmdF9z
Y2FsYXIgeXIsIHlpOworICAgICAgICAgeXIgPSBTX01VTCgqeHAyLCB0W2ldKSArIFNfTVVMKCp4
cDEsIHRbTjQraV0pOworICAgICAgICAgeWkgPSBTX01VTCgqeHAxLCB0W2ldKSAtIFNfTVVMKCp4
cDIsIHRbTjQraV0pOworICAgICAgICAgeXBbMippXSA9IHlyOworICAgICAgICAgeXBbMippKzFd
ID0geWk7CisgICAgICAgICB4cDErPTIqc3RyaWRlOworICAgICAgICAgeHAyLT0yKnN0cmlkZTsK
KyAgICAgIH0KKyAgIH0KKworICAgb3B1c19pZmZ0KHN0LCAoa2lzc19mZnRfY3B4ICopZiwgKGtp
c3NfZmZ0X2NweCopKG91dCsob3ZlcmxhcD4+MSkpLCBhcmNoKTsKKworICAgLyogUG9zdC1yb3Rh
dGUgYW5kIGRlLXNodWZmbGUgZnJvbSBib3RoIGVuZHMgb2YgdGhlIGJ1ZmZlciBhdCBvbmNlIHRv
IG1ha2UKKyAgICAgIGl0IGluLXBsYWNlLiAqLworICAgeworICAgICAga2lzc19mZnRfc2NhbGFy
ICogeXAwID0gb3V0KyhvdmVybGFwPj4xKTsKKyAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIHlwMSA9
IG91dCsob3ZlcmxhcD4+MSkrTjItMjsKKyAgICAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIg
KnQgPSAmdHJpZ1swXTsKKyAgICAgIC8qIExvb3AgdG8gKE40KzEpPj4xIHRvIGhhbmRsZSBvZGQg
TjQuIFdoZW4gTjQgaXMgb2RkLCB0aGUKKyAgICAgICAgIG1pZGRsZSBwYWlyIHdpbGwgYmUgY29t
cHV0ZWQgdHdpY2UuICovCisgICAgICBmb3IoaT0wO2k8KE40KzEpPj4xO2krKykKKyAgICAgIHsK
KyAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciByZSwgaW0sIHlyLCB5aTsKKyAgICAgICAgIGtpc3Nf
dHdpZGRsZV9zY2FsYXIgdDAsIHQxOworICAgICAgICAgcmUgPSB5cDBbMF07CisgICAgICAgICBp
bSA9IHlwMFsxXTsKKyAgICAgICAgIHQwID0gdFtpXTsKKyAgICAgICAgIHQxID0gdFtONCtpXTsK
KyAgICAgICAgIC8qIFdlJ2Qgc2NhbGUgdXAgYnkgMiBoZXJlLCBidXQgaW5zdGVhZCBpdCdzIGRv
bmUgd2hlbiBtaXhpbmcgdGhlIHdpbmRvd3MgKi8KKyAgICAgICAgIHlyID0gU19NVUwocmUsdDAp
ICsgU19NVUwoaW0sdDEpOworICAgICAgICAgeWkgPSBTX01VTChyZSx0MSkgLSBTX01VTChpbSx0
MCk7CisgICAgICAgICByZSA9IHlwMVswXTsKKyAgICAgICAgIGltID0geXAxWzFdOworICAgICAg
ICAgeXAwWzBdID0geXI7CisgICAgICAgICB5cDFbMV0gPSB5aTsKKworICAgICAgICAgdDAgPSB0
WyhONC1pLTEpXTsKKyAgICAgICAgIHQxID0gdFsoTjItaS0xKV07CisgICAgICAgICAvKiBXZSdk
IHNjYWxlIHVwIGJ5IDIgaGVyZSwgYnV0IGluc3RlYWQgaXQncyBkb25lIHdoZW4gbWl4aW5nIHRo
ZSB3aW5kb3dzICovCisgICAgICAgICB5ciA9IFNfTVVMKHJlLHQwKSArIFNfTVVMKGltLHQxKTsK
KyAgICAgICAgIHlpID0gU19NVUwocmUsdDEpIC0gU19NVUwoaW0sdDApOworICAgICAgICAgeXAx
WzBdID0geXI7CisgICAgICAgICB5cDBbMV0gPSB5aTsKKyAgICAgICAgIHlwMCArPSAyOworICAg
ICAgICAgeXAxIC09IDI7CisgICAgICB9CisgICB9CisKKyAgIC8qIE1pcnJvciBvbiBib3RoIHNp
ZGVzIGZvciBUREFDICovCisgICB7CisgICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RS
SUNUIHhwMSA9IG91dCtvdmVybGFwLTE7CisgICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JF
U1RSSUNUIHlwMSA9IG91dDsKKyAgICAgIGNvbnN0IG9wdXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNU
IHdwMSA9IHdpbmRvdzsKKyAgICAgIGNvbnN0IG9wdXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNUIHdw
MiA9IHdpbmRvdytvdmVybGFwLTE7CisKKyAgICAgIGZvcihpID0gMDsgaSA8IG92ZXJsYXAvMjsg
aSsrKQorICAgICAgeworICAgICAgICAga2lzc19mZnRfc2NhbGFyIHgxLCB4MjsKKyAgICAgICAg
IHgxID0gKnhwMTsKKyAgICAgICAgIHgyID0gKnlwMTsKKyAgICAgICAgICp5cDErKyA9IE1VTFQx
Nl8zMl9RMTUoKndwMiwgeDIpIC0gTVVMVDE2XzMyX1ExNSgqd3AxLCB4MSk7CisgICAgICAgICAq
eHAxLS0gPSBNVUxUMTZfMzJfUTE1KCp3cDEsIHgyKSArIE1VTFQxNl8zMl9RMTUoKndwMiwgeDEp
OworICAgICAgICAgd3AxKys7CisgICAgICAgICB3cDItLTsKKyAgICAgIH0KKyAgIH0KKyAgIFJF
U1RPUkVfU1RBQ0s7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRfbmUxMF9mZnQuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2Vs
dC9hcm0vY2VsdF9uZTEwX2ZmdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGM2
MGFiZTk4YjgzNTcxYTBiYzg1ODUwODFhNTdmYWNiNWE1NmE5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9uZTEwX2ZmdC5jCisrKyAv
ZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNSBYaXBoLk9y
ZyBGb3VuZGF0aW9uCi0gICBXcml0dGVuIGJ5IFZpc3dhbmF0aCBQdXR0YWd1bnRhICovCi0vKioK
LSAgIEBmaWxlIGNlbHRfbmUxMF9mZnQuYwotICAgQGJyaWVmIEFSTSBOZW9uIG9wdGltaXphdGlv
bnMgZm9yIGZmdCB1c2luZyBORTEwIGxpYnJhcnkKLSAqLwotCi0vKgotICAgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
ICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotICAgLSBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICAgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgotICAg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YKLSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAgIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lmbmRl
ZiBTS0lQX0NPTkZJR19ICi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2VuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPE5FMTBfZHNwLmg+Ci0jaW5jbHVkZSAib3Nf
c3VwcG9ydC5oIgotI2luY2x1ZGUgImtpc3NfZmZ0LmgiCi0jaW5jbHVkZSAic3RhY2tfYWxsb2Mu
aCIKLQotI2lmICFkZWZpbmVkKEZJWEVEX1BPSU5UKQotIyBkZWZpbmUgTkUxMF9GRlRfQUxMT0Nf
QzJDX1RZUEVfTkVPTiBuZTEwX2ZmdF9hbGxvY19jMmNfZmxvYXQzMl9uZW9uCi0jIGRlZmluZSBO
RTEwX0ZGVF9DRkdfVFlQRV9UIG5lMTBfZmZ0X2NmZ19mbG9hdDMyX3QKLSMgZGVmaW5lIE5FMTBf
RkZUX1NUQVRFX1RZUEVfVCBuZTEwX2ZmdF9zdGF0ZV9mbG9hdDMyX3QKLSMgZGVmaW5lIE5FMTBf
RkZUX0RFU1RST1lfQzJDX1RZUEUgbmUxMF9mZnRfZGVzdHJveV9jMmNfZmxvYXQzMgotIyBkZWZp
bmUgTkUxMF9GRlRfQ1BYX1RZUEVfVCBuZTEwX2ZmdF9jcHhfZmxvYXQzMl90Ci0jIGRlZmluZSBO
RTEwX0ZGVF9DMkNfMURfVFlQRV9ORU9OIG5lMTBfZmZ0X2MyY18xZF9mbG9hdDMyX25lb24KLSNl
bHNlCi0jIGRlZmluZSBORTEwX0ZGVF9BTExPQ19DMkNfVFlQRV9ORU9OKG5mZnQpIG5lMTBfZmZ0
X2FsbG9jX2MyY19pbnQzMl9uZW9uKG5mZnQpCi0jIGRlZmluZSBORTEwX0ZGVF9DRkdfVFlQRV9U
IG5lMTBfZmZ0X2NmZ19pbnQzMl90Ci0jIGRlZmluZSBORTEwX0ZGVF9TVEFURV9UWVBFX1QgbmUx
MF9mZnRfc3RhdGVfaW50MzJfdAotIyBkZWZpbmUgTkUxMF9GRlRfREVTVFJPWV9DMkNfVFlQRSBu
ZTEwX2ZmdF9kZXN0cm95X2MyY19pbnQzMgotIyBkZWZpbmUgTkUxMF9GRlRfREVTVFJPWV9DMkNf
VFlQRSBuZTEwX2ZmdF9kZXN0cm95X2MyY19pbnQzMgotIyBkZWZpbmUgTkUxMF9GRlRfQ1BYX1RZ
UEVfVCBuZTEwX2ZmdF9jcHhfaW50MzJfdAotIyBkZWZpbmUgTkUxMF9GRlRfQzJDXzFEX1RZUEVf
TkVPTiBuZTEwX2ZmdF9jMmNfMWRfaW50MzJfbmVvbgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKENV
U1RPTV9NT0RFUykKLQotLyogbmZmdCBsZW5ndGhzIGluIE5FMTAgdGhhdCBzdXBwb3J0IHNjYWxl
ZCBmZnQgKi8KLSMgZGVmaW5lIE5FMTBfRkZUU0NBTEVEX1NVUFBPUlRfTUFYIDQKLXN0YXRpYyBj
b25zdCBpbnQgbmUxMF9mZnRfc2NhbGVkX3N1cHBvcnRbTkUxMF9GRlRTQ0FMRURfU1VQUE9SVF9N
QVhdID0gewotICAgNDgwLCAyNDAsIDEyMCwgNjAKLX07Ci0KLWludCBvcHVzX2ZmdF9hbGxvY19h
cm1fbmVvbihraXNzX2ZmdF9zdGF0ZSAqc3QpCi17Ci0gICBpbnQgaTsKLSAgIHNpemVfdCBtZW1u
ZWVkZWQgPSBzaXplb2Yoc3RydWN0IGFyY2hfZmZ0X3N0YXRlKTsKLQotICAgc3QtPmFyY2hfZmZ0
ID0gKGFyY2hfZmZ0X3N0YXRlICopb3B1c19hbGxvYyhtZW1uZWVkZWQpOwotICAgaWYgKCFzdC0+
YXJjaF9mZnQpCi0gICAgICByZXR1cm4gLTE7Ci0KLSAgIGZvciAoaSA9IDA7IGkgPCBORTEwX0ZG
VFNDQUxFRF9TVVBQT1JUX01BWDsgaSsrKSB7Ci0gICAgICBpZihzdC0+bmZmdCA9PSBuZTEwX2Zm
dF9zY2FsZWRfc3VwcG9ydFtpXSkKLSAgICAgICAgIGJyZWFrOwotICAgfQotICAgaWYgKGkgPT0g
TkUxMF9GRlRTQ0FMRURfU1VQUE9SVF9NQVgpIHsKLSAgICAgIC8qIFRoaXMgbmZmdCBsZW5ndGgg
KHNjYWxlZCBmZnQpIGlzIG5vdCBzdXBwb3J0ZWQgaW4gTkUxMCAqLwotICAgICAgc3QtPmFyY2hf
ZmZ0LT5pc19zdXBwb3J0ZWQgPSAwOwotICAgICAgc3QtPmFyY2hfZmZ0LT5wcml2ID0gTlVMTDsK
LSAgIH0KLSAgIGVsc2UgewotICAgICAgc3QtPmFyY2hfZmZ0LT5pc19zdXBwb3J0ZWQgPSAxOwot
ICAgICAgc3QtPmFyY2hfZmZ0LT5wcml2ID0gKHZvaWQgKilORTEwX0ZGVF9BTExPQ19DMkNfVFlQ
RV9ORU9OKHN0LT5uZmZ0KTsKLSAgICAgIGlmIChzdC0+YXJjaF9mZnQtPnByaXYgPT0gTlVMTCkg
ewotICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIDA7Ci19Ci0K
LXZvaWQgb3B1c19mZnRfZnJlZV9hcm1fbmVvbihraXNzX2ZmdF9zdGF0ZSAqc3QpCi17Ci0gICBO
RTEwX0ZGVF9DRkdfVFlQRV9UIGNmZzsKLQotICAgaWYgKCFzdC0+YXJjaF9mZnQpCi0gICAgICBy
ZXR1cm47Ci0KLSAgIGNmZyA9IChORTEwX0ZGVF9DRkdfVFlQRV9UKXN0LT5hcmNoX2ZmdC0+cHJp
djsKLSAgIGlmIChjZmcpCi0gICAgICBORTEwX0ZGVF9ERVNUUk9ZX0MyQ19UWVBFKGNmZyk7Ci0g
ICBvcHVzX2ZyZWUoc3QtPmFyY2hfZmZ0KTsKLX0KLSNlbmRpZgotCi12b2lkIG9wdXNfZmZ0X25l
b24oY29uc3Qga2lzc19mZnRfc3RhdGUgKnN0LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGtp
c3NfZmZ0X2NweCAqZmluLAotICAgICAgICAgICAgICAgICAgIGtpc3NfZmZ0X2NweCAqZm91dCkK
LXsKLSAgIE5FMTBfRkZUX1NUQVRFX1RZUEVfVCBzdGF0ZTsKLSAgIE5FMTBfRkZUX0NGR19UWVBF
X1QgY2ZnID0gJnN0YXRlOwotICAgVkFSREVDTChORTEwX0ZGVF9DUFhfVFlQRV9ULCBidWZmZXIp
OwotICAgU0FWRV9TVEFDSzsKLSAgIEFMTE9DKGJ1ZmZlciwgc3QtPm5mZnQsIE5FMTBfRkZUX0NQ
WF9UWVBFX1QpOwotCi0gICBpZiAoIXN0LT5hcmNoX2ZmdC0+aXNfc3VwcG9ydGVkKSB7Ci0gICAg
ICAvKiBUaGlzIG5mZnQgbGVuZ3RoIChzY2FsZWQgZmZ0KSBub3Qgc3VwcG9ydGVkIGluIE5FMTAg
Ki8KLSAgICAgIG9wdXNfZmZ0X2Moc3QsIGZpbiwgZm91dCk7Ci0gICB9Ci0gICBlbHNlIHsKLSAg
ICAgIG1lbWNweSgodm9pZCAqKWNmZywgc3QtPmFyY2hfZmZ0LT5wcml2LCBzaXplb2YoTkUxMF9G
RlRfU1RBVEVfVFlQRV9UKSk7Ci0gICAgICBzdGF0ZS5idWZmZXIgPSAoTkUxMF9GRlRfQ1BYX1RZ
UEVfVCAqKSZidWZmZXJbMF07Ci0jaWYgIWRlZmluZWQoRklYRURfUE9JTlQpCi0gICAgICBzdGF0
ZS5pc19mb3J3YXJkX3NjYWxlZCA9IDE7Ci0KLSAgICAgIE5FMTBfRkZUX0MyQ18xRF9UWVBFX05F
T04oKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZpbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2ZnLCAwKTsKLSNlbHNlCi0gICAgICBORTEwX0ZGVF9DMkNfMURfVFlQRV9O
RU9OKChORTEwX0ZGVF9DUFhfVFlQRV9UICopZm91dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKE5FMTBfRkZUX0NQWF9UWVBFX1QgKilmaW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNmZywgMCwgMSk7Ci0jZW5kaWYKLSAgIH0KLSAgIFJFU1RPUkVfU1RBQ0s7
Ci19Ci0KLXZvaWQgb3B1c19pZmZ0X25lb24oY29uc3Qga2lzc19mZnRfc3RhdGUgKnN0LAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBraXNzX2ZmdF9jcHggKmZpbiwKLSAgICAgICAgICAgICAg
ICAgICAga2lzc19mZnRfY3B4ICpmb3V0KQotewotICAgTkUxMF9GRlRfU1RBVEVfVFlQRV9UIHN0
YXRlOwotICAgTkUxMF9GRlRfQ0ZHX1RZUEVfVCBjZmcgPSAmc3RhdGU7Ci0gICBWQVJERUNMKE5F
MTBfRkZUX0NQWF9UWVBFX1QsIGJ1ZmZlcik7Ci0gICBTQVZFX1NUQUNLOwotICAgQUxMT0MoYnVm
ZmVyLCBzdC0+bmZmdCwgTkUxMF9GRlRfQ1BYX1RZUEVfVCk7Ci0KLSAgIGlmICghc3QtPmFyY2hf
ZmZ0LT5pc19zdXBwb3J0ZWQpIHsKLSAgICAgIC8qIFRoaXMgbmZmdCBsZW5ndGggKHNjYWxlZCBm
ZnQpIG5vdCBzdXBwb3J0ZWQgaW4gTkUxMCAqLwotICAgICAgb3B1c19pZmZ0X2Moc3QsIGZpbiwg
Zm91dCk7Ci0gICB9Ci0gICBlbHNlIHsKLSAgICAgIG1lbWNweSgodm9pZCAqKWNmZywgc3QtPmFy
Y2hfZmZ0LT5wcml2LCBzaXplb2YoTkUxMF9GRlRfU1RBVEVfVFlQRV9UKSk7Ci0gICAgICBzdGF0
ZS5idWZmZXIgPSAoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKSZidWZmZXJbMF07Ci0jaWYgIWRlZmlu
ZWQoRklYRURfUE9JTlQpCi0gICAgICBzdGF0ZS5pc19iYWNrd2FyZF9zY2FsZWQgPSAwOwotCi0g
ICAgICBORTEwX0ZGVF9DMkNfMURfVFlQRV9ORU9OKChORTEwX0ZGVF9DUFhfVFlQRV9UICopZm91
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5FMTBfRkZUX0NQWF9UWVBFX1Qg
KilmaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmZywgMSk7Ci0jZWxzZQot
ICAgICAgTkUxMF9GRlRfQzJDXzFEX1RZUEVfTkVPTigoTkUxMF9GRlRfQ1BYX1RZUEVfVCAqKWZv
dXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChORTEwX0ZGVF9DUFhfVFlQRV9U
ICopZmluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmcsIDEsIDApOwotI2Vu
ZGlmCi0gICB9Ci0gICBSRVNUT1JFX1NUQUNLOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0
X25lMTBfbWRjdC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X25lMTBfbWRjdC5jCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyOTNjM2VmZDdhMjQyYTM1ZGYyYWUyNmZkODkwY2U4YzI2NzYxOTMwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9hcm0vY2Vs
dF9uZTEwX21kY3QuYworKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vKiBDb3B5cmln
aHQgKGMpIDIwMTUgWGlwaC5PcmcgRm91bmRhdGlvbgotICAgV3JpdHRlbiBieSBWaXN3YW5hdGgg
UHV0dGFndW50YSAqLwotLyoqCi0gICBAZmlsZSBjZWx0X25lMTBfbWRjdC5jCi0gICBAYnJpZWYg
QVJNIE5lb24gb3B0aW1pemF0aW9ucyBmb3IgbWRjdCB1c2luZyBORTEwIGxpYnJhcnkKLSAqLwot
Ci0vKgotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICAgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUgotICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKLSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotKi8KLQotI2lmbmRlZiBTS0lQX0NPTkZJR19ICi0jaWZkZWYgSEFWRV9DT05GSUdf
SAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgImtpc3Nf
ZmZ0LmgiCi0jaW5jbHVkZSAiX2tpc3NfZmZ0X2d1dHMuaCIKLSNpbmNsdWRlICJtZGN0LmgiCi0j
aW5jbHVkZSAic3RhY2tfYWxsb2MuaCIKLQotdm9pZCBjbHRfbWRjdF9mb3J3YXJkX25lb24oY29u
c3QgbWRjdF9sb29rdXAgKmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBraXNzX2ZmdF9z
Y2FsYXIgKmluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAga2lzc19mZnRfc2NhbGFyICog
T1BVU19SRVNUUklDVCBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHVz
X3ZhbDE2ICp3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcmxhcCwg
aW50IHNoaWZ0LCBpbnQgc3RyaWRlLCBpbnQgYXJjaCkKLXsKLSAgIGludCBpOwotICAgaW50IE4s
IE4yLCBONDsKLSAgIFZBUkRFQ0woa2lzc19mZnRfc2NhbGFyLCBmKTsKLSAgIFZBUkRFQ0woa2lz
c19mZnRfY3B4LCBmMik7Ci0gICBjb25zdCBraXNzX2ZmdF9zdGF0ZSAqc3QgPSBsLT5rZmZ0W3No
aWZ0XTsKLSAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKnRyaWc7Ci0KLSAgIFNBVkVfU1RB
Q0s7Ci0KLSAgIE4gPSBsLT5uOwotICAgdHJpZyA9IGwtPnRyaWc7Ci0gICBmb3IgKGk9MDtpPHNo
aWZ0O2krKykKLSAgIHsKLSAgICAgIE4gPj49IDE7Ci0gICAgICB0cmlnICs9IE47Ci0gICB9Ci0g
ICBOMiA9IE4+PjE7Ci0gICBONCA9IE4+PjI7Ci0KLSAgIEFMTE9DKGYsIE4yLCBraXNzX2ZmdF9z
Y2FsYXIpOwotICAgQUxMT0MoZjIsIE40LCBraXNzX2ZmdF9jcHgpOwotCi0gICAvKiBDb25zaWRl
ciB0aGUgaW5wdXQgdG8gYmUgY29tcG9zZWQgb2YgZm91ciBibG9ja3M6IFthLCBiLCBjLCBkXSAq
LwotICAgLyogV2luZG93LCBzaHVmZmxlLCBmb2xkICovCi0gICB7Ci0gICAgICAvKiBUZW1wIHBv
aW50ZXJzIHRvIG1ha2UgaXQgcmVhbGx5IGNsZWFyIHRvIHRoZSBjb21waWxlciB3aGF0IHdlJ3Jl
IGRvaW5nICovCi0gICAgICBjb25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHhw
MSA9IGluKyhvdmVybGFwPj4xKTsKLSAgICAgIGNvbnN0IGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNf
UkVTVFJJQ1QgeHAyID0gaW4rTjItMSsob3ZlcmxhcD4+MSk7Ci0gICAgICBraXNzX2ZmdF9zY2Fs
YXIgKiBPUFVTX1JFU1RSSUNUIHlwID0gZjsKLSAgICAgIGNvbnN0IG9wdXNfdmFsMTYgKiBPUFVT
X1JFU1RSSUNUIHdwMSA9IHdpbmRvdysob3ZlcmxhcD4+MSk7Ci0gICAgICBjb25zdCBvcHVzX3Zh
bDE2ICogT1BVU19SRVNUUklDVCB3cDIgPSB3aW5kb3crKG92ZXJsYXA+PjEpLTE7Ci0gICAgICBm
b3IoaT0wO2k8KChvdmVybGFwKzMpPj4yKTtpKyspCi0gICAgICB7Ci0gICAgICAgICAvKiBSZWFs
IHBhcnQgYXJyYW5nZWQgYXMgLWQtY1IsIEltYWcgcGFydCBhcnJhbmdlZCBhcyAtYithUiovCi0g
ICAgICAgICAqeXArKyA9IE1VTFQxNl8zMl9RMTUoKndwMiwgeHAxW04yXSkgKyBNVUxUMTZfMzJf
UTE1KCp3cDEsKnhwMik7Ci0gICAgICAgICAqeXArKyA9IE1VTFQxNl8zMl9RMTUoKndwMSwgKnhw
MSkgICAgLSBNVUxUMTZfMzJfUTE1KCp3cDIsIHhwMlstTjJdKTsKLSAgICAgICAgIHhwMSs9MjsK
LSAgICAgICAgIHhwMi09MjsKLSAgICAgICAgIHdwMSs9MjsKLSAgICAgICAgIHdwMi09MjsKLSAg
ICAgIH0KLSAgICAgIHdwMSA9IHdpbmRvdzsKLSAgICAgIHdwMiA9IHdpbmRvdytvdmVybGFwLTE7
Ci0gICAgICBmb3IoO2k8TjQtKChvdmVybGFwKzMpPj4yKTtpKyspCi0gICAgICB7Ci0gICAgICAg
ICAvKiBSZWFsIHBhcnQgYXJyYW5nZWQgYXMgYS1iUiwgSW1hZyBwYXJ0IGFycmFuZ2VkIGFzIC1j
LWRSICovCi0gICAgICAgICAqeXArKyA9ICp4cDI7Ci0gICAgICAgICAqeXArKyA9ICp4cDE7Ci0g
ICAgICAgICB4cDErPTI7Ci0gICAgICAgICB4cDItPTI7Ci0gICAgICB9Ci0gICAgICBmb3IoO2k8
TjQ7aSsrKQotICAgICAgewotICAgICAgICAgLyogUmVhbCBwYXJ0IGFycmFuZ2VkIGFzIGEtYlIs
IEltYWcgcGFydCBhcnJhbmdlZCBhcyAtYy1kUiAqLwotICAgICAgICAgKnlwKysgPSAgLU1VTFQx
Nl8zMl9RMTUoKndwMSwgeHAxWy1OMl0pICsgTVVMVDE2XzMyX1ExNSgqd3AyLCAqeHAyKTsKLSAg
ICAgICAgICp5cCsrID0gTVVMVDE2XzMyX1ExNSgqd3AyLCAqeHAxKSAgICAgKyBNVUxUMTZfMzJf
UTE1KCp3cDEsIHhwMltOMl0pOwotICAgICAgICAgeHAxKz0yOwotICAgICAgICAgeHAyLT0yOwot
ICAgICAgICAgd3AxKz0yOwotICAgICAgICAgd3AyLT0yOwotICAgICAgfQotICAgfQotICAgLyog
UHJlLXJvdGF0aW9uICovCi0gICB7Ci0gICAgICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RS
SUNUIHlwID0gZjsKLSAgICAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKnQgPSAmdHJpZ1sw
XTsKLSAgICAgIGZvcihpPTA7aTxONDtpKyspCi0gICAgICB7Ci0gICAgICAgICBraXNzX2ZmdF9j
cHggeWM7Ci0gICAgICAgICBraXNzX3R3aWRkbGVfc2NhbGFyIHQwLCB0MTsKLSAgICAgICAgIGtp
c3NfZmZ0X3NjYWxhciByZSwgaW0sIHlyLCB5aTsKLSAgICAgICAgIHQwID0gdFtpXTsKLSAgICAg
ICAgIHQxID0gdFtONCtpXTsKLSAgICAgICAgIHJlID0gKnlwKys7Ci0gICAgICAgICBpbSA9ICp5
cCsrOwotICAgICAgICAgeXIgPSBTX01VTChyZSx0MCkgIC0gIFNfTVVMKGltLHQxKTsKLSAgICAg
ICAgIHlpID0gU19NVUwoaW0sdDApICArICBTX01VTChyZSx0MSk7Ci0gICAgICAgICB5Yy5yID0g
eXI7Ci0gICAgICAgICB5Yy5pID0geWk7Ci0gICAgICAgICBmMltpXSA9IHljOwotICAgICAgfQot
ICAgfQotCi0gICBvcHVzX2ZmdChzdCwgZjIsIChraXNzX2ZmdF9jcHggKilmLCBhcmNoKTsKLQot
ICAgLyogUG9zdC1yb3RhdGUgKi8KLSAgIHsKLSAgICAgIC8qIFRlbXAgcG9pbnRlcnMgdG8gbWFr
ZSBpdCByZWFsbHkgY2xlYXIgdG8gdGhlIGNvbXBpbGVyIHdoYXQgd2UncmUgZG9pbmcgKi8KLSAg
ICAgIGNvbnN0IGtpc3NfZmZ0X2NweCAqIE9QVVNfUkVTVFJJQ1QgZnAgPSAoa2lzc19mZnRfY3B4
ICopZjsKLSAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVTVFJJQ1QgeXAxID0gb3V0Owot
ICAgICAga2lzc19mZnRfc2NhbGFyICogT1BVU19SRVNUUklDVCB5cDIgPSBvdXQrc3RyaWRlKihO
Mi0xKTsKLSAgICAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKnQgPSAmdHJpZ1swXTsKLSAg
ICAgIC8qIFRlbXAgcG9pbnRlcnMgdG8gbWFrZSBpdCByZWFsbHkgY2xlYXIgdG8gdGhlIGNvbXBp
bGVyIHdoYXQgd2UncmUgZG9pbmcgKi8KLSAgICAgIGZvcihpPTA7aTxONDtpKyspCi0gICAgICB7
Ci0gICAgICAgICBraXNzX2ZmdF9zY2FsYXIgeXIsIHlpOwotICAgICAgICAgeXIgPSBTX01VTChm
cC0+aSx0W040K2ldKSAtIFNfTVVMKGZwLT5yLHRbaV0pOwotICAgICAgICAgeWkgPSBTX01VTChm
cC0+cix0W040K2ldKSArIFNfTVVMKGZwLT5pLHRbaV0pOwotICAgICAgICAgKnlwMSA9IHlyOwot
ICAgICAgICAgKnlwMiA9IHlpOwotICAgICAgICAgZnArKzsKLSAgICAgICAgIHlwMSArPSAyKnN0
cmlkZTsKLSAgICAgICAgIHlwMiAtPSAyKnN0cmlkZTsKLSAgICAgIH0KLSAgIH0KLSAgIFJFU1RP
UkVfU1RBQ0s7Ci19Ci0KLXZvaWQgY2x0X21kY3RfYmFja3dhcmRfbmVvbihjb25zdCBtZGN0X2xv
b2t1cCAqbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBraXNzX2ZmdF9zY2FsYXIgKmlu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciAqIE9QVVNfUkVT
VFJJQ1Qgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdXNfdmFsMTYg
KiBPUFVTX1JFU1RSSUNUIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
b3ZlcmxhcCwgaW50IHNoaWZ0LCBpbnQgc3RyaWRlLCBpbnQgYXJjaCkKLXsKLSAgIGludCBpOwot
ICAgaW50IE4sIE4yLCBONDsKLSAgIFZBUkRFQ0woa2lzc19mZnRfc2NhbGFyLCBmKTsKLSAgIGNv
bnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKnRyaWc7Ci0gICBjb25zdCBraXNzX2ZmdF9zdGF0ZSAq
c3QgPSBsLT5rZmZ0W3NoaWZ0XTsKLQotICAgTiA9IGwtPm47Ci0gICB0cmlnID0gbC0+dHJpZzsK
LSAgIGZvciAoaT0wO2k8c2hpZnQ7aSsrKQotICAgewotICAgICAgTiA+Pj0gMTsKLSAgICAgIHRy
aWcgKz0gTjsKLSAgIH0KLSAgIE4yID0gTj4+MTsKLSAgIE40ID0gTj4+MjsKLQotICAgQUxMT0Mo
ZiwgTjIsIGtpc3NfZmZ0X3NjYWxhcik7Ci0KLSAgIC8qIFByZS1yb3RhdGUgKi8KLSAgIHsKLSAg
ICAgIC8qIFRlbXAgcG9pbnRlcnMgdG8gbWFrZSBpdCByZWFsbHkgY2xlYXIgdG8gdGhlIGNvbXBp
bGVyIHdoYXQgd2UncmUgZG9pbmcgKi8KLSAgICAgIGNvbnN0IGtpc3NfZmZ0X3NjYWxhciAqIE9Q
VVNfUkVTVFJJQ1QgeHAxID0gaW47Ci0gICAgICBjb25zdCBraXNzX2ZmdF9zY2FsYXIgKiBPUFVT
X1JFU1RSSUNUIHhwMiA9IGluK3N0cmlkZSooTjItMSk7Ci0gICAgICBraXNzX2ZmdF9zY2FsYXIg
KiBPUFVTX1JFU1RSSUNUIHlwID0gZjsKLSAgICAgIGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIg
KiBPUFVTX1JFU1RSSUNUIHQgPSAmdHJpZ1swXTsKLSAgICAgIGZvcihpPTA7aTxONDtpKyspCi0g
ICAgICB7Ci0gICAgICAgICBraXNzX2ZmdF9zY2FsYXIgeXIsIHlpOwotICAgICAgICAgeXIgPSBT
X01VTCgqeHAyLCB0W2ldKSArIFNfTVVMKCp4cDEsIHRbTjQraV0pOwotICAgICAgICAgeWkgPSBT
X01VTCgqeHAxLCB0W2ldKSAtIFNfTVVMKCp4cDIsIHRbTjQraV0pOwotICAgICAgICAgeXBbMipp
XSA9IHlyOwotICAgICAgICAgeXBbMippKzFdID0geWk7Ci0gICAgICAgICB4cDErPTIqc3RyaWRl
OwotICAgICAgICAgeHAyLT0yKnN0cmlkZTsKLSAgICAgIH0KLSAgIH0KLQotICAgb3B1c19pZmZ0
KHN0LCAoa2lzc19mZnRfY3B4ICopZiwgKGtpc3NfZmZ0X2NweCopKG91dCsob3ZlcmxhcD4+MSkp
LCBhcmNoKTsKLQotICAgLyogUG9zdC1yb3RhdGUgYW5kIGRlLXNodWZmbGUgZnJvbSBib3RoIGVu
ZHMgb2YgdGhlIGJ1ZmZlciBhdCBvbmNlIHRvIG1ha2UKLSAgICAgIGl0IGluLXBsYWNlLiAqLwot
ICAgewotICAgICAga2lzc19mZnRfc2NhbGFyICogeXAwID0gb3V0KyhvdmVybGFwPj4xKTsKLSAg
ICAgIGtpc3NfZmZ0X3NjYWxhciAqIHlwMSA9IG91dCsob3ZlcmxhcD4+MSkrTjItMjsKLSAgICAg
IGNvbnN0IGtpc3NfdHdpZGRsZV9zY2FsYXIgKnQgPSAmdHJpZ1swXTsKLSAgICAgIC8qIExvb3Ag
dG8gKE40KzEpPj4xIHRvIGhhbmRsZSBvZGQgTjQuIFdoZW4gTjQgaXMgb2RkLCB0aGUKLSAgICAg
ICAgIG1pZGRsZSBwYWlyIHdpbGwgYmUgY29tcHV0ZWQgdHdpY2UuICovCi0gICAgICBmb3IoaT0w
O2k8KE40KzEpPj4xO2krKykKLSAgICAgIHsKLSAgICAgICAgIGtpc3NfZmZ0X3NjYWxhciByZSwg
aW0sIHlyLCB5aTsKLSAgICAgICAgIGtpc3NfdHdpZGRsZV9zY2FsYXIgdDAsIHQxOwotICAgICAg
ICAgcmUgPSB5cDBbMF07Ci0gICAgICAgICBpbSA9IHlwMFsxXTsKLSAgICAgICAgIHQwID0gdFtp
XTsKLSAgICAgICAgIHQxID0gdFtONCtpXTsKLSAgICAgICAgIC8qIFdlJ2Qgc2NhbGUgdXAgYnkg
MiBoZXJlLCBidXQgaW5zdGVhZCBpdCdzIGRvbmUgd2hlbiBtaXhpbmcgdGhlIHdpbmRvd3MgKi8K
LSAgICAgICAgIHlyID0gU19NVUwocmUsdDApICsgU19NVUwoaW0sdDEpOwotICAgICAgICAgeWkg
PSBTX01VTChyZSx0MSkgLSBTX01VTChpbSx0MCk7Ci0gICAgICAgICByZSA9IHlwMVswXTsKLSAg
ICAgICAgIGltID0geXAxWzFdOwotICAgICAgICAgeXAwWzBdID0geXI7Ci0gICAgICAgICB5cDFb
MV0gPSB5aTsKLQotICAgICAgICAgdDAgPSB0WyhONC1pLTEpXTsKLSAgICAgICAgIHQxID0gdFso
TjItaS0xKV07Ci0gICAgICAgICAvKiBXZSdkIHNjYWxlIHVwIGJ5IDIgaGVyZSwgYnV0IGluc3Rl
YWQgaXQncyBkb25lIHdoZW4gbWl4aW5nIHRoZSB3aW5kb3dzICovCi0gICAgICAgICB5ciA9IFNf
TVVMKHJlLHQwKSArIFNfTVVMKGltLHQxKTsKLSAgICAgICAgIHlpID0gU19NVUwocmUsdDEpIC0g
U19NVUwoaW0sdDApOwotICAgICAgICAgeXAxWzBdID0geXI7Ci0gICAgICAgICB5cDBbMV0gPSB5
aTsKLSAgICAgICAgIHlwMCArPSAyOwotICAgICAgICAgeXAxIC09IDI7Ci0gICAgICB9Ci0gICB9
Ci0KLSAgIC8qIE1pcnJvciBvbiBib3RoIHNpZGVzIGZvciBUREFDICovCi0gICB7Ci0gICAgICBr
aXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHhwMSA9IG91dCtvdmVybGFwLTE7Ci0gICAg
ICBraXNzX2ZmdF9zY2FsYXIgKiBPUFVTX1JFU1RSSUNUIHlwMSA9IG91dDsKLSAgICAgIGNvbnN0
IG9wdXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNUIHdwMSA9IHdpbmRvdzsKLSAgICAgIGNvbnN0IG9w
dXNfdmFsMTYgKiBPUFVTX1JFU1RSSUNUIHdwMiA9IHdpbmRvdytvdmVybGFwLTE7Ci0KLSAgICAg
IGZvcihpID0gMDsgaSA8IG92ZXJsYXAvMjsgaSsrKQotICAgICAgewotICAgICAgICAga2lzc19m
ZnRfc2NhbGFyIHgxLCB4MjsKLSAgICAgICAgIHgxID0gKnhwMTsKLSAgICAgICAgIHgyID0gKnlw
MTsKLSAgICAgICAgICp5cDErKyA9IE1VTFQxNl8zMl9RMTUoKndwMiwgeDIpIC0gTVVMVDE2XzMy
X1ExNSgqd3AxLCB4MSk7Ci0gICAgICAgICAqeHAxLS0gPSBNVUxUMTZfMzJfUTE1KCp3cDEsIHgy
KSArIE1VTFQxNl8zMl9RMTUoKndwMiwgeDEpOwotICAgICAgICAgd3AxKys7Ci0gICAgICAgICB3
cDItLTsKLSAgICAgIH0KLSAgIH0KLSAgIFJFU1RPUkVfU1RBQ0s7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2Nl
bHQvYXJtL2NlbHRfbmVvbl9pbnRyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYXJtL2NlbHRfbmVvbl9pbnRyLmMKaW5kZXgg
Y2Y0NDM5ODhjZTVmZTUzMjNiODQ0NWNiNjU2YTk5MWE5OGRhNTE0Zi4uZWZmZGE3NjlkMDdjZjFk
OGIwODMyZmZkMGY3YWUyZDRlODE4ZTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2FybS9jZWx0X25lb25f
aW50ci5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvY2VsdC9hcm0vY2VsdF9uZW9uX2ludHIuYwpAQCAtMTk2LDcgKzE5Niw3IEBA
IHZvaWQgY2VsdF9waXRjaF94Y29ycl9mbG9hdF9uZW9uKGNvbnN0IG9wdXNfdmFsMTYgKl94LCBj
b25zdCBvcHVzX3ZhbDE2ICpfeSwKICAgIGludCBpOwogICAgKHZvaWQpYXJjaDsKICAgIGNlbHRf
YXNzZXJ0KG1heF9waXRjaCA+IDApOwotICAgY2VsdF9hc3NlcnQoKCgodW5zaWduZWQgY2hhciAq
KV94LSh1bnNpZ25lZCBjaGFyICopTlVMTCkmMyk9PTApOworICAgY2VsdF9zaWdfYXNzZXJ0KCgo
KHVuc2lnbmVkIGNoYXIgKilfeC0odW5zaWduZWQgY2hhciAqKU5VTEwpJjMpPT0wKTsKIAogICAg
Zm9yIChpID0gMDsgaSA8IChtYXhfcGl0Y2gtMyk7IGkgKz0gNCkgewogICAgICAgeGNvcnJfa2Vy
bmVsX25lb25fZmxvYXQoKGNvbnN0IGZsb2F0MzJfdCAqKV94LCAoY29uc3QgZmxvYXQzMl90ICop
X3kraSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9iYW5kcy5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2JhbmRzLmMKaW5kZXggM2IxZjVj
ZmJiZThhODFjN2Y0N2I3MDBhYzg3ODk5ZDgwOTkwNjI4NS4uMjcwMjk2M2MzN2FmZTE3M2QwNDIy
ZjBlMzZlODEzZTU3NzY2N2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2JhbmRzLmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2Jh
bmRzLmMKQEAgLTcwLDEwICs3MCwxMCBAQCBvcHVzX2ludDE2IGJpdGV4YWN0X2NvcyhvcHVzX2lu
dDE2IHgpCiAgICBvcHVzX2ludDMyIHRtcDsKICAgIG9wdXNfaW50MTYgeDI7CiAgICB0bXAgPSAo
NDA5NisoKG9wdXNfaW50MzIpKHgpKih4KSkpPj4xMzsKLSAgIGNlbHRfYXNzZXJ0KHRtcDw9MzI3
NjcpOworICAgY2VsdF9zaWdfYXNzZXJ0KHRtcDw9MzI3NjcpOwogICAgeDIgPSB0bXA7CiAgICB4
MiA9ICgzMjc2Ny14MikgKyBGUkFDX01VTDE2KHgyLCAoLTc2NTEgKyBGUkFDX01VTDE2KHgyLCAo
ODI3NyArIEZSQUNfTVVMMTYoLTYyNiwgeDIpKSkpKTsKLSAgIGNlbHRfYXNzZXJ0KHgyPD0zMjc2
Nik7CisgICBjZWx0X3NpZ19hc3NlcnQoeDI8PTMyNzY2KTsKICAgIHJldHVybiAxK3gyOwogfQog
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBhbnRpX2NvbGxhcHNlKGNvbnN0IENFTFRNb2RlICpt
LCBjZWx0X25vcm0gKlhfLCB1bnNpZ25lZCBjaGFyICpjb2xsYXBzZV9tYXMKIAogICAgICAgTjAg
PSBtLT5lQmFuZHNbaSsxXS1tLT5lQmFuZHNbaV07CiAgICAgICAvKiBkZXB0aCBpbiAxLzggYml0
cyAqLwotICAgICAgY2VsdF9hc3NlcnQocHVsc2VzW2ldPj0wKTsKKyAgICAgIGNlbHRfc2lnX2Fz
c2VydChwdWxzZXNbaV0+PTApOwogICAgICAgZGVwdGggPSBjZWx0X3VkaXYoMStwdWxzZXNbaV0s
IChtLT5lQmFuZHNbaSsxXS1tLT5lQmFuZHNbaV0pKT4+TE07CiAKICNpZmRlZiBGSVhFRF9QT0lO
VApAQCAtMzcxLDE0ICszNzEsMTQgQEAgdm9pZCBhbnRpX2NvbGxhcHNlKGNvbnN0IENFTFRNb2Rl
ICptLCBjZWx0X25vcm0gKlhfLCB1bnNpZ25lZCBjaGFyICpjb2xsYXBzZV9tYXMKIHN0YXRpYyB2
b2lkIGNvbXB1dGVfY2hhbm5lbF93ZWlnaHRzKGNlbHRfZW5lciBFeCwgY2VsdF9lbmVyIEV5LCBv
cHVzX3ZhbDE2IHdbMl0pCiB7CiAgICBjZWx0X2VuZXIgbWluRTsKLSNpZiBGSVhFRF9QT0lOVAor
I2lmZGVmIEZJWEVEX1BPSU5UCiAgICBpbnQgc2hpZnQ7CiAjZW5kaWYKICAgIG1pbkUgPSBNSU4z
MihFeCwgRXkpOwogICAgLyogQWRqdXN0bWVudCB0byBtYWtlIHRoZSB3ZWlnaHRzIGEgYml0IG1v
cmUgY29uc2VydmF0aXZlLiAqLwogICAgRXggPSBBREQzMihFeCwgbWluRS8zKTsKICAgIEV5ID0g
QUREMzIoRXksIG1pbkUvMyk7Ci0jaWYgRklYRURfUE9JTlQKKyNpZmRlZiBGSVhFRF9QT0lOVAog
ICAgc2hpZnQgPSBjZWx0X2lsb2cyKEVQU0lMT04rTUFYMzIoRXgsIEV5KSktMTQ7CiAjZW5kaWYK
ICAgIHdbMF0gPSBWU0hSMzIoRXgsIHNoaWZ0KTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCBzdGF0aWMg
dm9pZCBzdGVyZW9fbWVyZ2UoY2VsdF9ub3JtICogT1BVU19SRVNUUklDVCBYLCBjZWx0X25vcm0g
KiBPUFVTX1JFU1RSSUNUCiAvKiBEZWNpZGUgd2hldGhlciB3ZSBzaG91bGQgc3ByZWFkIHRoZSBw
dWxzZXMgaW4gdGhlIGN1cnJlbnQgZnJhbWUgKi8KIGludCBzcHJlYWRpbmdfZGVjaXNpb24oY29u
c3QgQ0VMVE1vZGUgKm0sIGNvbnN0IGNlbHRfbm9ybSAqWCwgaW50ICphdmVyYWdlLAogICAgICAg
aW50IGxhc3RfZGVjaXNpb24sIGludCAqaGZfYXZlcmFnZSwgaW50ICp0YXBzZXRfZGVjaXNpb24s
IGludCB1cGRhdGVfaGYsCi0gICAgICBpbnQgZW5kLCBpbnQgQywgaW50IE0pCisgICAgICBpbnQg
ZW5kLCBpbnQgQywgaW50IE0sIGNvbnN0IGludCAqc3ByZWFkX3dlaWdodCkKIHsKICAgIGludCBp
LCBjLCBOMDsKICAgIGludCBzdW0gPSAwLCBuYkJhbmRzPTA7CkBAIC01MTksOCArNTE5LDggQEAg
aW50IHNwcmVhZGluZ19kZWNpc2lvbihjb25zdCBDRUxUTW9kZSAqbSwgY29uc3QgY2VsdF9ub3Jt
ICpYLCBpbnQgKmF2ZXJhZ2UsCiAgICAgICAgICBpZiAoaT5tLT5uYkVCYW5kcy00KQogICAgICAg
ICAgICAgaGZfc3VtICs9IGNlbHRfdWRpdigzMioodGNvdW50WzFdK3Rjb3VudFswXSksIE4pOwog
ICAgICAgICAgdG1wID0gKDIqdGNvdW50WzJdID49IE4pICsgKDIqdGNvdW50WzFdID49IE4pICsg
KDIqdGNvdW50WzBdID49IE4pOwotICAgICAgICAgc3VtICs9IHRtcCoyNTY7Ci0gICAgICAgICBu
YkJhbmRzKys7CisgICAgICAgICBzdW0gKz0gdG1wKnNwcmVhZF93ZWlnaHRbaV07CisgICAgICAg
ICBuYkJhbmRzKz1zcHJlYWRfd2VpZ2h0W2ldOwogICAgICAgfQogICAgfSB3aGlsZSAoKytjPEMp
OwogCkBAIC01NDQsNyArNTQ0LDcgQEAgaW50IHNwcmVhZGluZ19kZWNpc2lvbihjb25zdCBDRUxU
TW9kZSAqbSwgY29uc3QgY2VsdF9ub3JtICpYLCBpbnQgKmF2ZXJhZ2UsCiAgICAvKnByaW50Zigi
JWQgJWQgJWRcbiIsIGhmX3N1bSwgKmhmX2F2ZXJhZ2UsICp0YXBzZXRfZGVjaXNpb24pOyovCiAg
ICBjZWx0X2Fzc2VydChuYkJhbmRzPjApOyAvKiBlbmQgaGFzIHRvIGJlIG5vbi16ZXJvICovCiAg
ICBjZWx0X2Fzc2VydChzdW0+PTApOwotICAgc3VtID0gY2VsdF91ZGl2KHN1bSwgbmJCYW5kcyk7
CisgICBzdW0gPSBjZWx0X3VkaXYoKG9wdXNfaW50MzIpc3VtPDw4LCBuYkJhbmRzKTsKICAgIC8q
IFJlY3Vyc2l2ZSBhdmVyYWdpbmcgKi8KICAgIHN1bSA9IChzdW0rKmF2ZXJhZ2UpPj4xOwogICAg
KmF2ZXJhZ2UgPSBzdW07CkBAIC0xNDkyLDYgKzE0OTIsNyBAQCB2b2lkIHF1YW50X2FsbF9iYW5k
cyhpbnQgZW5jb2RlLCBjb25zdCBDRUxUTW9kZSAqbSwgaW50IHN0YXJ0LCBpbnQgZW5kLAogICAg
ICAgZWxzZQogICAgICAgICAgWSA9IE5VTEw7CiAgICAgICBOID0gTSplQmFuZHNbaSsxXS1NKmVC
YW5kc1tpXTsKKyAgICAgIGNlbHRfYXNzZXJ0KE4gPiAwKTsKICAgICAgIHRlbGwgPSBlY190ZWxs
X2ZyYWMoZWMpOwogCiAgICAgICAvKiBDb21wdXRlIGhvdyBtYW55IGJpdHMgd2Ugd2FudCB0byBh
bGxvY2F0ZSB0byB0aGlzIGJhbmQgKi8KQEAgLTE1MDcsNyArMTUwOCw3IEBAIHZvaWQgcXVhbnRf
YWxsX2JhbmRzKGludCBlbmNvZGUsIGNvbnN0IENFTFRNb2RlICptLCBpbnQgc3RhcnQsIGludCBl
bmQsCiAgICAgICAgICBiID0gMDsKICAgICAgIH0KIAotI2lmZGVmIEVOQUJMRV9VUERBVEVfRFJB
RlQKKyNpZm5kZWYgRElTQUJMRV9VUERBVEVfRFJBRlQKICAgICAgIGlmIChyZXN5bnRoICYmIChN
KmVCYW5kc1tpXS1OID49IE0qZUJhbmRzW3N0YXJ0XSB8fCBpPT1zdGFydCsxKSAmJiAodXBkYXRl
X2xvd2JhbmQgfHwgbG93YmFuZF9vZmZzZXQ9PTApKQogICAgICAgICAgICAgbG93YmFuZF9vZmZz
ZXQgPSBpOwogICAgICAgaWYgKGkgPT0gc3RhcnQrMSkKQEAgLTE1NDEsNyArMTU0Miw3IEBAIHZv
aWQgcXVhbnRfYWxsX2JhbmRzKGludCBlbmNvZGUsIGNvbnN0IENFTFRNb2RlICptLCBpbnQgc3Rh
cnQsIGludCBlbmQsCiAgICAgICAgICBmb2xkX3N0YXJ0ID0gbG93YmFuZF9vZmZzZXQ7CiAgICAg
ICAgICB3aGlsZShNKmVCYW5kc1stLWZvbGRfc3RhcnRdID4gZWZmZWN0aXZlX2xvd2JhbmQrbm9y
bV9vZmZzZXQpOwogICAgICAgICAgZm9sZF9lbmQgPSBsb3diYW5kX29mZnNldC0xOwotI2lmZGVm
IEVOQUJMRV9VUERBVEVfRFJBRlQKKyNpZm5kZWYgRElTQUJMRV9VUERBVEVfRFJBRlQKICAgICAg
ICAgIHdoaWxlKCsrZm9sZF9lbmQgPCBpICYmIE0qZUJhbmRzW2ZvbGRfZW5kXSA8IGVmZmVjdGl2
ZV9sb3diYW5kK25vcm1fb2Zmc2V0K04pOwogI2Vsc2UKICAgICAgICAgIHdoaWxlKE0qZUJhbmRz
WysrZm9sZF9lbmRdIDwgZWZmZWN0aXZlX2xvd2JhbmQrbm9ybV9vZmZzZXQrTik7CkBAIC0xNjIx
LDggKzE2MjIsMTAgQEAgdm9pZCBxdWFudF9hbGxfYmFuZHMoaW50IGVuY29kZSwgY29uc3QgQ0VM
VE1vZGUgKm0sIGludCBzdGFydCwgaW50IGVuZCwKICAgICAgICAgICAgICAgIGN0eCA9IGN0eF9z
YXZlOwogICAgICAgICAgICAgICAgT1BVU19DT1BZKFgsIFhfc2F2ZSwgTik7CiAgICAgICAgICAg
ICAgICBPUFVTX0NPUFkoWSwgWV9zYXZlLCBOKTsKKyNpZm5kZWYgRElTQUJMRV9VUERBVEVfRFJB
RlQKICAgICAgICAgICAgICAgIGlmIChpID09IHN0YXJ0KzEpCiAgICAgICAgICAgICAgICAgICBz
cGVjaWFsX2h5YnJpZF9mb2xkaW5nKG0sIG5vcm0sIG5vcm0yLCBzdGFydCwgTSwgZHVhbF9zdGVy
ZW8pOworI2VuZGlmCiAgICAgICAgICAgICAgICAvKiBFbmNvZGUgYW5kIHJvdW5kIHVwLiAqLwog
ICAgICAgICAgICAgICAgY3R4LnRoZXRhX3JvdW5kID0gMTsKICAgICAgICAgICAgICAgIHhfY20g
PSBxdWFudF9iYW5kX3N0ZXJlbygmY3R4LCBYLCBZLCBOLCBiLCBCLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0
L2JhbmRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NlbHQvYmFuZHMuaAppbmRleCAyNDg4YzE4NTIxMzBkNjVjMWU3NjBiZjU3ZWU4
NWY2NWVjMWJiM2IwLi40MjJiMzJjZjc1Mzg5MmNiMmMzNDA0MzVhMDAxMGJmMzk2MjZiZjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NlbHQvYmFuZHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvYmFuZHMuaApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIGRlbm9ybWFsaXNlX2JhbmRzKGNvbnN0IENFTFRNb2RlICptLCBjb25zdCBjZWx0X25v
cm0gKiBPUFVTX1JFU1RSSUNUIFgsCiAKIGludCBzcHJlYWRpbmdfZGVjaXNpb24oY29uc3QgQ0VM
VE1vZGUgKm0sIGNvbnN0IGNlbHRfbm9ybSAqWCwgaW50ICphdmVyYWdlLAogICAgICAgaW50IGxh
c3RfZGVjaXNpb24sIGludCAqaGZfYXZlcmFnZSwgaW50ICp0YXBzZXRfZGVjaXNpb24sIGludCB1
cGRhdGVfaGYsCi0gICAgICBpbnQgZW5kLCBpbnQgQywgaW50IE0pOworICAgICAgaW50IGVuZCwg
aW50IEMsIGludCBNLCBjb25zdCBpbnQgKnNwcmVhZF93ZWlnaHQpOwogCiAjaWZkZWYgTUVBU1VS
RV9OT1JNX01TRQogdm9pZCBtZWFzdXJlX25vcm1fbXNlKGNvbnN0IENFTFRNb2RlICptLCBmbG9h
dCAqWCwgZmxvYXQgKlgwLCBmbG9hdCAqYmFuZEUsIGZsb2F0ICpiYW5kRTAsIGludCBNLCBpbnQg
TiwgaW50IEMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0LmgKaW5kZXggNzAx
NzUzMDEwMGEzZDkwNDU2Yjc2NmE1NTg0NDVkYjlhZTQzMDg2ZC4uMjRiNmIyYjUyMGQxNGM5ODJh
NDdjZGQ5MWZmY2JhZmEzMjM0MzljMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQv
Y2VsdC5oCkBAIC01OSw5ICs1OSwxMSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICBmbG9hdCBub2lz
aW5lc3M7CiAgICBmbG9hdCBhY3Rpdml0eTsKICAgIGZsb2F0IG11c2ljX3Byb2I7Ci0gICBmbG9h
dCB2YWRfcHJvYjsKKyAgIGZsb2F0IG11c2ljX3Byb2JfbWluOworICAgZmxvYXQgbXVzaWNfcHJv
Yl9tYXg7CiAgICBpbnQgICBiYW5kd2lkdGg7CiAgICBmbG9hdCBhY3Rpdml0eV9wcm9iYWJpbGl0
eTsKKyAgIGZsb2F0IG1heF9waXRjaF9yYXRpbzsKICAgIC8qIFN0b3JlIGFzIFE2IGNoYXIgdG8g
c2F2ZSBzcGFjZS4gKi8KICAgIHVuc2lnbmVkIGNoYXIgbGVha19ib29zdFtMRUFLX0JBTkRTXTsK
IH0gQW5hbHlzaXNJbmZvOwpAQCAtMjA3LDYgKzIwOSwxMyBAQCBzdGF0aWMgT1BVU19JTkxJTkUg
aW50IGZyb21PcHVzKHVuc2lnbmVkIGNoYXIgYykKIAogZXh0ZXJuIGNvbnN0IHNpZ25lZCBjaGFy
IHRmX3NlbGVjdF90YWJsZVs0XVs4XTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX0hBUkRFTklORykg
fHwgZGVmaW5lZChFTkFCTEVfQVNTRVJUSU9OUykKK3ZvaWQgdmFsaWRhdGVfY2VsdF9kZWNvZGVy
KENFTFREZWNvZGVyICpzdCk7CisjZGVmaW5lIFZBTElEQVRFX0NFTFRfREVDT0RFUihzdCkgdmFs
aWRhdGVfY2VsdF9kZWNvZGVyKHN0KQorI2Vsc2UKKyNkZWZpbmUgVkFMSURBVEVfQ0VMVF9ERUNP
REVSKHN0KQorI2VuZGlmCisKIGludCByZXNhbXBsaW5nX2ZhY3RvcihvcHVzX2ludDMyIHJhdGUp
OwogCiB2b2lkIGNlbHRfcHJlZW1waGFzaXMoY29uc3Qgb3B1c192YWwxNiAqIE9QVVNfUkVTVFJJ
Q1QgcGNtcCwgY2VsdF9zaWcgKiBPUFVTX1JFU1RSSUNUIGlucCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9j
ZWx0X2RlY29kZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0X2RlY29kZXIuYwppbmRleCA1NjdkNzQ1NjQ5Yjk4YWQ5
YzY2MWZiZjUzZjczZDBhN2RhMGE3OGIwLi5lNmVmY2U5MzU4NTFmNzc4MDJlMjE3MTdhMTdhODdl
NTA4N2IxMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY2VsdF9kZWNvZGVyLmMKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHRf
ZGVjb2Rlci5jCkBAIC01MSw2ICs1MSwxNCBAQAogI2luY2x1ZGUgImNlbHRfbHBjLmgiCiAjaW5j
bHVkZSAidnEuaCIKIAorLyogVGhlIG1heGltdW0gcGl0Y2ggbGFnIHRvIGFsbG93IGluIHRoZSBw
aXRjaC1iYXNlZCBQTEMuIEl0J3MgcG9zc2libGUgdG8gc2F2ZQorICAgQ1BVIHRpbWUgaW4gdGhl
IFBMQyBwaXRjaCBzZWFyY2ggYnkgbWFraW5nIHRoaXMgc21hbGxlciB0aGFuIE1BWF9QRVJJT0Qu
IFRoZQorICAgY3VycmVudCB2YWx1ZSBjb3JyZXNwb25kcyB0byBhIHBpdGNoIG9mIDY2LjY3IEh6
LiAqLworI2RlZmluZSBQTENfUElUQ0hfTEFHX01BWCAoNzIwKQorLyogVGhlIG1pbmltdW0gcGl0
Y2ggbGFnIHRvIGFsbG93IGluIHRoZSBwaXRjaC1iYXNlZCBQTEMuIFRoaXMgY29ycmVzcG9uZHMg
dG8gYQorICAgcGl0Y2ggb2YgNDgwIEh6LiAqLworI2RlZmluZSBQTENfUElUQ0hfTEFHX01JTiAo
MTAwKQorCiAjaWYgZGVmaW5lZChTTUFMTF9GT09UUFJJTlQpICYmIGRlZmluZWQoRklYRURfUE9J
TlQpCiAjZGVmaW5lIE5PUk1fQUxJQVNJTkdfSEFDSwogI2VuZGlmCkBAIC0xMDEsNiArMTA5LDM4
IEBAIHN0cnVjdCBPcHVzQ3VzdG9tRGVjb2RlciB7CiAgICAvKiBvcHVzX3ZhbDE2IGJhY2tncm91
bmRMb2dFW10sIFNpemUgPSAyKm1vZGUtPm5iRUJhbmRzICovCiB9OwogCisjaWYgZGVmaW5lZChF
TkFCTEVfSEFSREVOSU5HKSB8fCBkZWZpbmVkKEVOQUJMRV9BU1NFUlRJT05TKQorLyogTWFrZSBi
YXNpYyBjaGVja3Mgb24gdGhlIENFTFQgc3RhdGUgdG8gZW5zdXJlIHdlIGRvbid0IGVuZAorICAg
dXAgd3JpdGluZyBhbGwgb3ZlciBtZW1vcnkuICovCit2b2lkIHZhbGlkYXRlX2NlbHRfZGVjb2Rl
cihDRUxURGVjb2RlciAqc3QpCit7CisjaWZuZGVmIENVU1RPTV9NT0RFUworICAgY2VsdF9hc3Nl
cnQoc3QtPm1vZGUgPT0gb3B1c19jdXN0b21fbW9kZV9jcmVhdGUoNDgwMDAsIDk2MCwgTlVMTCkp
OworICAgY2VsdF9hc3NlcnQoc3QtPm92ZXJsYXAgPT0gMTIwKTsKKyNlbmRpZgorICAgY2VsdF9h
c3NlcnQoc3QtPmNoYW5uZWxzID09IDEgfHwgc3QtPmNoYW5uZWxzID09IDIpOworICAgY2VsdF9h
c3NlcnQoc3QtPnN0cmVhbV9jaGFubmVscyA9PSAxIHx8IHN0LT5zdHJlYW1fY2hhbm5lbHMgPT0g
Mik7CisgICBjZWx0X2Fzc2VydChzdC0+ZG93bnNhbXBsZSA+IDApOworICAgY2VsdF9hc3NlcnQo
c3QtPnN0YXJ0ID09IDAgfHwgc3QtPnN0YXJ0ID09IDE3KTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5z
dGFydCA8IHN0LT5lbmQpOworICAgY2VsdF9hc3NlcnQoc3QtPmVuZCA8PSAyMSk7CisjaWZkZWYg
T1BVU19BUkNITUFTSworICAgY2VsdF9hc3NlcnQoc3QtPmFyY2ggPj0gMCk7CisgICBjZWx0X2Fz
c2VydChzdC0+YXJjaCA8PSBPUFVTX0FSQ0hNQVNLKTsKKyNlbmRpZgorICAgY2VsdF9hc3NlcnQo
c3QtPmxhc3RfcGl0Y2hfaW5kZXggPD0gUExDX1BJVENIX0xBR19NQVgpOworICAgY2VsdF9hc3Nl
cnQoc3QtPmxhc3RfcGl0Y2hfaW5kZXggPj0gUExDX1BJVENIX0xBR19NSU4gfHwgc3QtPmxhc3Rf
cGl0Y2hfaW5kZXggPT0gMCk7CisgICBjZWx0X2Fzc2VydChzdC0+cG9zdGZpbHRlcl9wZXJpb2Qg
PCBNQVhfUEVSSU9EKTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5wb3N0ZmlsdGVyX3BlcmlvZCA+PSBD
T01CRklMVEVSX01JTlBFUklPRCB8fCBzdC0+cG9zdGZpbHRlcl9wZXJpb2QgPT0gMCk7CisgICBj
ZWx0X2Fzc2VydChzdC0+cG9zdGZpbHRlcl9wZXJpb2Rfb2xkIDwgTUFYX1BFUklPRCk7CisgICBj
ZWx0X2Fzc2VydChzdC0+cG9zdGZpbHRlcl9wZXJpb2Rfb2xkID49IENPTUJGSUxURVJfTUlOUEVS
SU9EIHx8IHN0LT5wb3N0ZmlsdGVyX3BlcmlvZF9vbGQgPT0gMCk7CisgICBjZWx0X2Fzc2VydChz
dC0+cG9zdGZpbHRlcl90YXBzZXQgPD0gMik7CisgICBjZWx0X2Fzc2VydChzdC0+cG9zdGZpbHRl
cl90YXBzZXQgPj0gMCk7CisgICBjZWx0X2Fzc2VydChzdC0+cG9zdGZpbHRlcl90YXBzZXRfb2xk
IDw9IDIpOworICAgY2VsdF9hc3NlcnQoc3QtPnBvc3RmaWx0ZXJfdGFwc2V0X29sZCA+PSAwKTsK
K30KKyNlbmRpZgorCiBpbnQgY2VsdF9kZWNvZGVyX2dldF9zaXplKGludCBjaGFubmVscykKIHsK
ICAgIGNvbnN0IENFTFRNb2RlICptb2RlID0gb3B1c19jdXN0b21fbW9kZV9jcmVhdGUoNDgwMDAs
IDk2MCwgTlVMTCk7CkBAIC0xNjQsNyArMjA0LDcgQEAgT1BVU19DVVNUT01fTk9TVEFUSUMgaW50
IG9wdXNfY3VzdG9tX2RlY29kZXJfaW5pdChDRUxURGVjb2RlciAqc3QsIGNvbnN0IENFTFRNb2QK
ICAgIHN0LT5zdGFydCA9IDA7CiAgICBzdC0+ZW5kID0gc3QtPm1vZGUtPmVmZkVCYW5kczsKICAg
IHN0LT5zaWduYWxsaW5nID0gMTsKLSNpZmRlZiBFTkFCTEVfVVBEQVRFX0RSQUZUCisjaWZuZGVm
IERJU0FCTEVfVVBEQVRFX0RSQUZUCiAgICBzdC0+ZGlzYWJsZV9pbnYgPSBjaGFubmVscyA9PSAx
OwogI2Vsc2UKICAgIHN0LT5kaXNhYmxlX2ludiA9IDA7CkBAIC00MzcsMTQgKzQ3Nyw2IEBAIHN0
YXRpYyB2b2lkIHRmX2RlY29kZShpbnQgc3RhcnQsIGludCBlbmQsIGludCBpc1RyYW5zaWVudCwg
aW50ICp0Zl9yZXMsIGludCBMTSwKICAgIH0KIH0KIAotLyogVGhlIG1heGltdW0gcGl0Y2ggbGFn
IHRvIGFsbG93IGluIHRoZSBwaXRjaC1iYXNlZCBQTEMuIEl0J3MgcG9zc2libGUgdG8gc2F2ZQot
ICAgQ1BVIHRpbWUgaW4gdGhlIFBMQyBwaXRjaCBzZWFyY2ggYnkgbWFraW5nIHRoaXMgc21hbGxl
ciB0aGFuIE1BWF9QRVJJT0QuIFRoZQotICAgY3VycmVudCB2YWx1ZSBjb3JyZXNwb25kcyB0byBh
IHBpdGNoIG9mIDY2LjY3IEh6LiAqLwotI2RlZmluZSBQTENfUElUQ0hfTEFHX01BWCAoNzIwKQot
LyogVGhlIG1pbmltdW0gcGl0Y2ggbGFnIHRvIGFsbG93IGluIHRoZSBwaXRjaC1iYXNlZCBQTEMu
IFRoaXMgY29ycmVzcG9uZHMgdG8gYQotICAgcGl0Y2ggb2YgNDgwIEh6LiAqLwotI2RlZmluZSBQ
TENfUElUQ0hfTEFHX01JTiAoMTAwKQotCiBzdGF0aWMgaW50IGNlbHRfcGxjX3BpdGNoX3NlYXJj
aChjZWx0X3NpZyAqZGVjb2RlX21lbVsyXSwgaW50IEMsIGludCBhcmNoKQogewogICAgaW50IHBp
dGNoX2luZGV4OwpAQCAtNTU0LDYgKzU4Niw3IEBAIHN0YXRpYyB2b2lkIGNlbHRfZGVjb2RlX2xv
c3QoQ0VMVERlY29kZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBpbnQgTiwgaW50IExNKQogCiAgICAg
ICBjZWx0X3N5bnRoZXNpcyhtb2RlLCBYLCBvdXRfc3luLCBvbGRCYW5kRSwgc3RhcnQsIGVmZkVu
ZCwgQywgQywgMCwgTE0sIHN0LT5kb3duc2FtcGxlLCAwLCBzdC0+YXJjaCk7CiAgICB9IGVsc2Ug
eworICAgICAgaW50IGV4Y19sZW5ndGg7CiAgICAgICAvKiBQaXRjaC1iYXNlZCBQTEMgKi8KICAg
ICAgIGNvbnN0IG9wdXNfdmFsMTYgKndpbmRvdzsKICAgICAgIG9wdXNfdmFsMTYgKmV4YzsKQEAg
LTU2MSw2ICs1OTQsNyBAQCBzdGF0aWMgdm9pZCBjZWx0X2RlY29kZV9sb3N0KENFTFREZWNvZGVy
ICogT1BVU19SRVNUUklDVCBzdCwgaW50IE4sIGludCBMTSkKICAgICAgIGludCBwaXRjaF9pbmRl
eDsKICAgICAgIFZBUkRFQ0wob3B1c192YWwzMiwgZXRtcCk7CiAgICAgICBWQVJERUNMKG9wdXNf
dmFsMTYsIF9leGMpOworICAgICAgVkFSREVDTChvcHVzX3ZhbDE2LCBmaXJfdG1wKTsKIAogICAg
ICAgaWYgKGxvc3NfY291bnQgPT0gMCkKICAgICAgIHsKQEAgLTU3MCw4ICs2MDQsMTMgQEAgc3Rh
dGljIHZvaWQgY2VsdF9kZWNvZGVfbG9zdChDRUxURGVjb2RlciAqIE9QVVNfUkVTVFJJQ1Qgc3Qs
IGludCBOLCBpbnQgTE0pCiAgICAgICAgICBmYWRlID0gUUNPTlNUMTYoLjhmLDE1KTsKICAgICAg
IH0KIAorICAgICAgLyogV2Ugd2FudCB0aGUgZXhjaXRhdGlvbiBmb3IgMiBwaXRjaCBwZXJpb2Rz
IGluIG9yZGVyIHRvIGxvb2sgZm9yIGEKKyAgICAgICAgIGRlY2F5aW5nIHNpZ25hbCwgYnV0IHdl
IGNhbid0IGdldCBtb3JlIHRoYW4gTUFYX1BFUklPRC4gKi8KKyAgICAgIGV4Y19sZW5ndGggPSBJ
TUlOKDIqcGl0Y2hfaW5kZXgsIE1BWF9QRVJJT0QpOworCiAgICAgICBBTExPQyhldG1wLCBvdmVy
bGFwLCBvcHVzX3ZhbDMyKTsKICAgICAgIEFMTE9DKF9leGMsIE1BWF9QRVJJT0QrTFBDX09SREVS
LCBvcHVzX3ZhbDE2KTsKKyAgICAgIEFMTE9DKGZpcl90bXAsIGV4Y19sZW5ndGgsIG9wdXNfdmFs
MTYpOwogICAgICAgZXhjID0gX2V4YytMUENfT1JERVI7CiAgICAgICB3aW5kb3cgPSBtb2RlLT53
aW5kb3c7CiAgICAgICBjPTA7IGRvIHsKQEAgLTU4MSwxMyArNjIwLDExIEBAIHN0YXRpYyB2b2lk
IGNlbHRfZGVjb2RlX2xvc3QoQ0VMVERlY29kZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBpbnQgTiwg
aW50IExNKQogICAgICAgICAgY2VsdF9zaWcgKmJ1ZjsKICAgICAgICAgIGludCBleHRyYXBvbGF0
aW9uX29mZnNldDsKICAgICAgICAgIGludCBleHRyYXBvbGF0aW9uX2xlbjsKLSAgICAgICAgIGlu
dCBleGNfbGVuZ3RoOwogICAgICAgICAgaW50IGo7CiAKICAgICAgICAgIGJ1ZiA9IGRlY29kZV9t
ZW1bY107Ci0gICAgICAgICBmb3IgKGk9MDtpPE1BWF9QRVJJT0Q7aSsrKSB7Ci0gICAgICAgICAg
ICBleGNbaV0gPSBST1VORDE2KGJ1ZltERUNPREVfQlVGRkVSX1NJWkUtTUFYX1BFUklPRCtpXSwg
U0lHX1NISUZUKTsKLSAgICAgICAgIH0KKyAgICAgICAgIGZvciAoaT0wO2k8TUFYX1BFUklPRCtM
UENfT1JERVI7aSsrKQorICAgICAgICAgICAgZXhjW2ktTFBDX09SREVSXSA9IFJPVU5EMTYoYnVm
W0RFQ09ERV9CVUZGRVJfU0laRS1NQVhfUEVSSU9ELUxQQ19PUkRFUitpXSwgU0lHX1NISUZUKTsK
IAogICAgICAgICAgaWYgKGxvc3NfY291bnQgPT0gMCkKICAgICAgICAgIHsKQEAgLTYzMSwyMCAr
NjY4LDE0IEBAIHN0YXRpYyB2b2lkIGNlbHRfZGVjb2RlX2xvc3QoQ0VMVERlY29kZXIgKiBPUFVT
X1JFU1RSSUNUIHN0LCBpbnQgTiwgaW50IExNKQogICAgICAgICAgfQogI2VuZGlmCiAgICAgICAg
ICB9Ci0gICAgICAgICAvKiBXZSB3YW50IHRoZSBleGNpdGF0aW9uIGZvciAyIHBpdGNoIHBlcmlv
ZHMgaW4gb3JkZXIgdG8gbG9vayBmb3IgYQotICAgICAgICAgICAgZGVjYXlpbmcgc2lnbmFsLCBi
dXQgd2UgY2FuJ3QgZ2V0IG1vcmUgdGhhbiBNQVhfUEVSSU9ELiAqLwotICAgICAgICAgZXhjX2xl
bmd0aCA9IElNSU4oMipwaXRjaF9pbmRleCwgTUFYX1BFUklPRCk7CiAgICAgICAgICAvKiBJbml0
aWFsaXplIHRoZSBMUEMgaGlzdG9yeSB3aXRoIHRoZSBzYW1wbGVzIGp1c3QgYmVmb3JlIHRoZSBz
dGFydAogICAgICAgICAgICAgb2YgdGhlIHJlZ2lvbiBmb3Igd2hpY2ggd2UncmUgY29tcHV0aW5n
IHRoZSBleGNpdGF0aW9uLiAqLwogICAgICAgICAgewotICAgICAgICAgICAgZm9yIChpPTA7aTxM
UENfT1JERVI7aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZXhjW01BWF9QRVJJ
T0QtZXhjX2xlbmd0aC1MUENfT1JERVIraV0gPQotICAgICAgICAgICAgICAgICAgICAgUk9VTkQx
NihidWZbREVDT0RFX0JVRkZFUl9TSVpFLWV4Y19sZW5ndGgtTFBDX09SREVSK2ldLCBTSUdfU0hJ
RlQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogQ29tcHV0ZSB0aGUgZXhjaXRhdGlv
biBmb3IgZXhjX2xlbmd0aCBzYW1wbGVzIGJlZm9yZSB0aGUgbG9zcy4gKi8KKyAgICAgICAgICAg
IC8qIENvbXB1dGUgdGhlIGV4Y2l0YXRpb24gZm9yIGV4Y19sZW5ndGggc2FtcGxlcyBiZWZvcmUg
dGhlIGxvc3MuIFdlIG5lZWQgdGhlIGNvcHkKKyAgICAgICAgICAgICAgIGJlY2F1c2UgY2VsdF9m
aXIoKSBjYW5ub3QgZmlsdGVyIGluLXBsYWNlLiAqLwogICAgICAgICAgICAgY2VsdF9maXIoZXhj
K01BWF9QRVJJT0QtZXhjX2xlbmd0aCwgbHBjK2MqTFBDX09SREVSLAotICAgICAgICAgICAgICAg
ICAgZXhjK01BWF9QRVJJT0QtZXhjX2xlbmd0aCwgZXhjX2xlbmd0aCwgTFBDX09SREVSLCBzdC0+
YXJjaCk7CisgICAgICAgICAgICAgICAgICBmaXJfdG1wLCBleGNfbGVuZ3RoLCBMUENfT1JERVIs
IHN0LT5hcmNoKTsKKyAgICAgICAgICAgIE9QVVNfQ09QWShleGMrTUFYX1BFUklPRC1leGNfbGVu
Z3RoLCBmaXJfdG1wLCBleGNfbGVuZ3RoKTsKICAgICAgICAgIH0KIAogICAgICAgICAgLyogQ2hl
Y2sgaWYgdGhlIHdhdmVmb3JtIGlzIGRlY2F5aW5nLCBhbmQgaWYgc28gaG93IGZhc3QuCkBAIC04
MzMsNiArODY0LDcgQEAgaW50IGNlbHRfZGVjb2RlX3dpdGhfZWMoQ0VMVERlY29kZXIgKiBPUFVT
X1JFU1RSSUNUIHN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXQKICAgIGNvbnN0IG9wdXNfaW50
MTYgKmVCYW5kczsKICAgIEFMTE9DX1NUQUNLOwogCisgICBWQUxJREFURV9DRUxUX0RFQ09ERVIo
c3QpOwogICAgbW9kZSA9IHN0LT5tb2RlOwogICAgbmJFQmFuZHMgPSBtb2RlLT5uYkVCYW5kczsK
ICAgIG92ZXJsYXAgPSBtb2RlLT5vdmVybGFwOwpAQCAtMTAyNyw3ICsxMDU5LDcgQEAgaW50IGNl
bHRfZGVjb2RlX3dpdGhfZWMoQ0VMVERlY29kZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBjb25zdCB1
bnNpZ25lZCBjaGFyICpkYXQKICAgIEFMTE9DKHB1bHNlcywgbmJFQmFuZHMsIGludCk7CiAgICBB
TExPQyhmaW5lX3ByaW9yaXR5LCBuYkVCYW5kcywgaW50KTsKIAotICAgY29kZWRCYW5kcyA9IGNv
bXB1dGVfYWxsb2NhdGlvbihtb2RlLCBzdGFydCwgZW5kLCBvZmZzZXRzLCBjYXAsCisgICBjb2Rl
ZEJhbmRzID0gY2x0X2NvbXB1dGVfYWxsb2NhdGlvbihtb2RlLCBzdGFydCwgZW5kLCBvZmZzZXRz
LCBjYXAsCiAgICAgICAgICBhbGxvY190cmltLCAmaW50ZW5zaXR5LCAmZHVhbF9zdGVyZW8sIGJp
dHMsICZiYWxhbmNlLCBwdWxzZXMsCiAgICAgICAgICBmaW5lX3F1YW50LCBmaW5lX3ByaW9yaXR5
LCBDLCBMTSwgZGVjLCAwLCAwLCAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2NlbHRfZW5jb2Rlci5j
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L2NlbHRfZW5jb2Rlci5jCmluZGV4IDA1M2U1YTNiMjkwMGMxNmYyOTA3ZmIwM2JlNTM3
Y2UzYjViMTA5MmIuLjQ0Y2IwODUwYWJkMWEyMjM3YTE1ZDBlZDE5NGQ4OTgyNDdlZDIxNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvY2VsdC9jZWx0X2VuY29kZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY2VsdF9lbmNvZGVyLmMKQEAg
LTM2Miw2ICszNjIsMTIgQEAgc3RhdGljIGludCB0cmFuc2llbnRfYW5hbHlzaXMoY29uc3Qgb3B1
c192YWwzMiAqIE9QVVNfUkVTVFJJQ1QgaW4sIGludCBsZW4sIGludAogICAgICAgLyogQ29tcHV0
ZSBoYXJtb25pYyBtZWFuIGRpc2NhcmRpbmcgdGhlIHVucmVsaWFibGUgYm91bmRhcmllcwogICAg
ICAgICAgVGhlIGRhdGEgaXMgc21vb3RoLCBzbyB3ZSBvbmx5IHRha2UgMS80dGggb2YgdGhlIHNh
bXBsZXMgKi8KICAgICAgIHVubWFzaz0wOworICAgICAgLyogV2Ugc2hvdWxkIG5ldmVyIHNlZSBO
YU5zIGhlcmUuIElmIHdlIGZpbmQgYW55LCB0aGVuIHNvbWV0aGluZyByZWFsbHkgYmFkIGhhcHBl
bmVkIGFuZCB3ZSBiZXR0ZXIgYWJvcnQKKyAgICAgICAgIGJlZm9yZSBpdCBkb2VzIGFueSBkYW1h
Z2UgbGF0ZXIgb24uIElmIHRoZXNlIGFzc2VydHMgYXJlIGRpc2FibGVkIChubyBoYXJkZW5pbmcp
LCB0aGVuIHRoZSB0YWJsZQorICAgICAgICAgbG9va3VwIGEgZmV3IGxpbmVzIGJlbG93IChpZCA9
IC4uLikgaXMgbGlrZWx5IHRvIGNyYXNoIGR1ciB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIERP
IE5PVCBGSVgKKyAgICAgICAgIHRoYXQgY3Jhc2ggb24gTmFOIHNpbmNlIGl0IGNvdWxkIHJlc3Vs
dCBpbiBhIHdvcnNlIGlzc3VlIGxhdGVyIG9uLiAqLworICAgICAgY2VsdF9hc3NlcnQoIWNlbHRf
aXNuYW4odG1wWzBdKSk7CisgICAgICBjZWx0X2Fzc2VydCghY2VsdF9pc25hbihub3JtKSk7CiAg
ICAgICBmb3IgKGk9MTI7aTxsZW4yLTU7aSs9NCkKICAgICAgIHsKICAgICAgICAgIGludCBpZDsK
QEAgLTU3Nyw3ICs1ODMsNyBAQCBzdGF0aWMgb3B1c192YWwzMiBsMV9tZXRyaWMoY29uc3QgY2Vs
dF9ub3JtICp0bXAsIGludCBOLCBpbnQgTE0sIG9wdXNfdmFsMTYgYmlhcwogCiBzdGF0aWMgaW50
IHRmX2FuYWx5c2lzKGNvbnN0IENFTFRNb2RlICptLCBpbnQgbGVuLCBpbnQgaXNUcmFuc2llbnQs
CiAgICAgICBpbnQgKnRmX3JlcywgaW50IGxhbWJkYSwgY2VsdF9ub3JtICpYLCBpbnQgTjAsIGlu
dCBMTSwKLSAgICAgIG9wdXNfdmFsMTYgdGZfZXN0aW1hdGUsIGludCB0Zl9jaGFuKQorICAgICAg
b3B1c192YWwxNiB0Zl9lc3RpbWF0ZSwgaW50IHRmX2NoYW4sIGludCAqaW1wb3J0YW5jZSkKIHsK
ICAgIGludCBpOwogICAgVkFSREVDTChpbnQsIG1ldHJpYyk7CkBAIC02NjAsMjIgKzY2NiwyMiBA
QCBzdGF0aWMgaW50IHRmX2FuYWx5c2lzKGNvbnN0IENFTFRNb2RlICptLCBpbnQgbGVuLCBpbnQg
aXNUcmFuc2llbnQsCiAgICAgICAgICBiaWFzaW5nIHRoZSBkZWNpc2lvbiAqLwogICAgICAgaWYg
KG5hcnJvdyAmJiAobWV0cmljW2ldPT0wIHx8IG1ldHJpY1tpXT09LTIqTE0pKQogICAgICAgICAg
bWV0cmljW2ldLT0xOwotICAgICAgLypwcmludGYoIiVkICIsIG1ldHJpY1tpXSk7Ki8KKyAgICAg
IC8qcHJpbnRmKCIlZCAiLCBtZXRyaWNbaV0vMiArICghaXNUcmFuc2llbnQpKkxNKTsqLwogICAg
fQogICAgLypwcmludGYoIlxuIik7Ki8KICAgIC8qIFNlYXJjaCBmb3IgdGhlIG9wdGltYWwgdGYg
cmVzb2x1dGlvbiwgaW5jbHVkaW5nIHRmX3NlbGVjdCAqLwogICAgdGZfc2VsZWN0ID0gMDsKICAg
IGZvciAoc2VsPTA7c2VsPDI7c2VsKyspCiAgICB7Ci0gICAgICBjb3N0MCA9IDA7Ci0gICAgICBj
b3N0MSA9IGlzVHJhbnNpZW50ID8gMCA6IGxhbWJkYTsKKyAgICAgIGNvc3QwID0gaW1wb3J0YW5j
ZVswXSphYnMobWV0cmljWzBdLTIqdGZfc2VsZWN0X3RhYmxlW0xNXVs0KmlzVHJhbnNpZW50KzIq
c2VsKzBdKTsKKyAgICAgIGNvc3QxID0gaW1wb3J0YW5jZVswXSphYnMobWV0cmljWzBdLTIqdGZf
c2VsZWN0X3RhYmxlW0xNXVs0KmlzVHJhbnNpZW50KzIqc2VsKzFdKSArIChpc1RyYW5zaWVudCA/
IDAgOiBsYW1iZGEpOwogICAgICAgZm9yIChpPTE7aTxsZW47aSsrKQogICAgICAgewogICAgICAg
ICAgaW50IGN1cnIwLCBjdXJyMTsKICAgICAgICAgIGN1cnIwID0gSU1JTihjb3N0MCwgY29zdDEg
KyBsYW1iZGEpOwogICAgICAgICAgY3VycjEgPSBJTUlOKGNvc3QwICsgbGFtYmRhLCBjb3N0MSk7
Ci0gICAgICAgICBjb3N0MCA9IGN1cnIwICsgYWJzKG1ldHJpY1tpXS0yKnRmX3NlbGVjdF90YWJs
ZVtMTV1bNCppc1RyYW5zaWVudCsyKnNlbCswXSk7Ci0gICAgICAgICBjb3N0MSA9IGN1cnIxICsg
YWJzKG1ldHJpY1tpXS0yKnRmX3NlbGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnNlbCsx
XSk7CisgICAgICAgICBjb3N0MCA9IGN1cnIwICsgaW1wb3J0YW5jZVtpXSphYnMobWV0cmljW2ld
LTIqdGZfc2VsZWN0X3RhYmxlW0xNXVs0KmlzVHJhbnNpZW50KzIqc2VsKzBdKTsKKyAgICAgICAg
IGNvc3QxID0gY3VycjEgKyBpbXBvcnRhbmNlW2ldKmFicyhtZXRyaWNbaV0tMip0Zl9zZWxlY3Rf
dGFibGVbTE1dWzQqaXNUcmFuc2llbnQrMipzZWwrMV0pOwogICAgICAgfQogICAgICAgY29zdDAg
PSBJTUlOKGNvc3QwLCBjb3N0MSk7CiAgICAgICBzZWxjb3N0W3NlbF09Y29zdDA7CkBAIC02ODQs
OCArNjkwLDggQEAgc3RhdGljIGludCB0Zl9hbmFseXNpcyhjb25zdCBDRUxUTW9kZSAqbSwgaW50
IGxlbiwgaW50IGlzVHJhbnNpZW50LAogICAgICogSWYgdGVzdHMgY29uZmlybSBpdCdzIHVzZWZ1
bCBmb3Igbm9uLXRyYW5zaWVudHMsIHdlIGNvdWxkIGFsbG93IGl0LiAqLwogICAgaWYgKHNlbGNv
c3RbMV08c2VsY29zdFswXSAmJiBpc1RyYW5zaWVudCkKICAgICAgIHRmX3NlbGVjdD0xOwotICAg
Y29zdDAgPSAwOwotICAgY29zdDEgPSBpc1RyYW5zaWVudCA/IDAgOiBsYW1iZGE7CisgICBjb3N0
MCA9IGltcG9ydGFuY2VbMF0qYWJzKG1ldHJpY1swXS0yKnRmX3NlbGVjdF90YWJsZVtMTV1bNCpp
c1RyYW5zaWVudCsyKnRmX3NlbGVjdCswXSk7CisgICBjb3N0MSA9IGltcG9ydGFuY2VbMF0qYWJz
KG1ldHJpY1swXS0yKnRmX3NlbGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnRmX3NlbGVj
dCsxXSkgKyAoaXNUcmFuc2llbnQgPyAwIDogbGFtYmRhKTsKICAgIC8qIFZpdGVyYmkgZm9yd2Fy
ZCBwYXNzICovCiAgICBmb3IgKGk9MTtpPGxlbjtpKyspCiAgICB7CkBAIC03MTMsOCArNzE5LDgg
QEAgc3RhdGljIGludCB0Zl9hbmFseXNpcyhjb25zdCBDRUxUTW9kZSAqbSwgaW50IGxlbiwgaW50
IGlzVHJhbnNpZW50LAogICAgICAgICAgY3VycjEgPSBmcm9tMTsKICAgICAgICAgIHBhdGgxW2ld
PSAxOwogICAgICAgfQotICAgICAgY29zdDAgPSBjdXJyMCArIGFicyhtZXRyaWNbaV0tMip0Zl9z
ZWxlY3RfdGFibGVbTE1dWzQqaXNUcmFuc2llbnQrMip0Zl9zZWxlY3QrMF0pOwotICAgICAgY29z
dDEgPSBjdXJyMSArIGFicyhtZXRyaWNbaV0tMip0Zl9zZWxlY3RfdGFibGVbTE1dWzQqaXNUcmFu
c2llbnQrMip0Zl9zZWxlY3QrMV0pOworICAgICAgY29zdDAgPSBjdXJyMCArIGltcG9ydGFuY2Vb
aV0qYWJzKG1ldHJpY1tpXS0yKnRmX3NlbGVjdF90YWJsZVtMTV1bNCppc1RyYW5zaWVudCsyKnRm
X3NlbGVjdCswXSk7CisgICAgICBjb3N0MSA9IGN1cnIxICsgaW1wb3J0YW5jZVtpXSphYnMobWV0
cmljW2ldLTIqdGZfc2VsZWN0X3RhYmxlW0xNXVs0KmlzVHJhbnNpZW50KzIqdGZfc2VsZWN0KzFd
KTsKICAgIH0KICAgIHRmX3Jlc1tsZW4tMV0gPSBjb3N0MCA8IGNvc3QxID8gMCA6IDE7CiAgICAv
KiBWaXRlcmJpIGJhY2t3YXJkIHBhc3MgdG8gY2hlY2sgdGhlIGRlY2lzaW9ucyAqLwpAQCAtOTY0
LDcgKzk3MCw4IEBAIHN0YXRpYyBvcHVzX3ZhbDE2IG1lZGlhbl9vZl8zKGNvbnN0IG9wdXNfdmFs
MTYgKngpCiBzdGF0aWMgb3B1c192YWwxNiBkeW5hbGxvY19hbmFseXNpcyhjb25zdCBvcHVzX3Zh
bDE2ICpiYW5kTG9nRSwgY29uc3Qgb3B1c192YWwxNiAqYmFuZExvZ0UyLAogICAgICAgaW50IG5i
RUJhbmRzLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBDLCBpbnQgKm9mZnNldHMsIGludCBsc2Jf
ZGVwdGgsIGNvbnN0IG9wdXNfaW50MTYgKmxvZ04sCiAgICAgICBpbnQgaXNUcmFuc2llbnQsIGlu
dCB2YnIsIGludCBjb25zdHJhaW5lZF92YnIsIGNvbnN0IG9wdXNfaW50MTYgKmVCYW5kcywgaW50
IExNLAotICAgICAgaW50IGVmZmVjdGl2ZUJ5dGVzLCBvcHVzX2ludDMyICp0b3RfYm9vc3RfLCBp
bnQgbGZlLCBvcHVzX3ZhbDE2ICpzdXJyb3VuZF9keW5hbGxvYywgQW5hbHlzaXNJbmZvICphbmFs
eXNpcykKKyAgICAgIGludCBlZmZlY3RpdmVCeXRlcywgb3B1c19pbnQzMiAqdG90X2Jvb3N0Xywg
aW50IGxmZSwgb3B1c192YWwxNiAqc3Vycm91bmRfZHluYWxsb2MsCisgICAgICBBbmFseXNpc0lu
Zm8gKmFuYWx5c2lzLCBpbnQgKmltcG9ydGFuY2UsIGludCAqc3ByZWFkX3dlaWdodCkKIHsKICAg
IGludCBpLCBjOwogICAgb3B1c19pbnQzMiB0b3RfYm9vc3Q9MDsKQEAgLTk5MCw2ICs5OTcsNDIg
QEAgc3RhdGljIG9wdXNfdmFsMTYgZHluYWxsb2NfYW5hbHlzaXMoY29uc3Qgb3B1c192YWwxNiAq
YmFuZExvZ0UsIGNvbnN0IG9wdXNfdmFsMTYKICAgICAgIGZvciAoaT0wO2k8ZW5kO2krKykKICAg
ICAgICAgIG1heERlcHRoID0gTUFYMTYobWF4RGVwdGgsIGJhbmRMb2dFW2MqbmJFQmFuZHMraV0t
bm9pc2VfZmxvb3JbaV0pOwogICAgfSB3aGlsZSAoKytjPEMpOworICAgeworICAgICAgLyogQ29t
cHV0ZSBhIHJlYWxseSBzaW1wbGUgbWFza2luZyBtb2RlbCB0byBhdm9pZCB0YWtpbmcgaW50byBh
Y2NvdW50IGNvbXBsZXRlbHkgbWFza2VkCisgICAgICAgICBiYW5kcyB3aGVuIGNvbXB1dGluZyB0
aGUgc3ByZWFkaW5nIGRlY2lzaW9uLiAqLworICAgICAgVkFSREVDTChvcHVzX3ZhbDE2LCBtYXNr
KTsKKyAgICAgIFZBUkRFQ0wob3B1c192YWwxNiwgc2lnKTsKKyAgICAgIEFMTE9DKG1hc2ssIG5i
RUJhbmRzLCBvcHVzX3ZhbDE2KTsKKyAgICAgIEFMTE9DKHNpZywgbmJFQmFuZHMsIG9wdXNfdmFs
MTYpOworICAgICAgZm9yIChpPTA7aTxlbmQ7aSsrKQorICAgICAgICAgbWFza1tpXSA9IGJhbmRM
b2dFW2ldLW5vaXNlX2Zsb29yW2ldOworICAgICAgaWYgKEM9PTIpCisgICAgICB7CisgICAgICAg
ICBmb3IgKGk9MDtpPGVuZDtpKyspCisgICAgICAgICAgICBtYXNrW2ldID0gTUFYMTYobWFza1tp
XSwgYmFuZExvZ0VbbmJFQmFuZHMraV0tbm9pc2VfZmxvb3JbaV0pOworICAgICAgfQorICAgICAg
T1BVU19DT1BZKHNpZywgbWFzaywgZW5kKTsKKyAgICAgIGZvciAoaT0xO2k8ZW5kO2krKykKKyAg
ICAgICAgIG1hc2tbaV0gPSBNQVgxNihtYXNrW2ldLCBtYXNrW2ktMV0gLSBRQ09OU1QxNigyLmYs
IERCX1NISUZUKSk7CisgICAgICBmb3IgKGk9ZW5kLTI7aT49MDtpLS0pCisgICAgICAgICBtYXNr
W2ldID0gTUFYMTYobWFza1tpXSwgbWFza1tpKzFdIC0gUUNPTlNUMTYoMy5mLCBEQl9TSElGVCkp
OworICAgICAgZm9yIChpPTA7aTxlbmQ7aSsrKQorICAgICAgeworICAgICAgICAgLyogQ29tcHV0
ZSBTTVI6IE1hc2sgaXMgbmV2ZXIgbW9yZSB0aGFuIDcyIGRCIGJlbG93IHRoZSBwZWFrIGFuZCBu
ZXZlciBiZWxvdyB0aGUgbm9pc2UgZmxvb3IuKi8KKyAgICAgICAgIG9wdXNfdmFsMTYgc21yID0g
c2lnW2ldLU1BWDE2KE1BWDE2KDAsIG1heERlcHRoLVFDT05TVDE2KDEyLmYsIERCX1NISUZUKSks
IG1hc2tbaV0pOworICAgICAgICAgLyogQ2xhbXAgU01SIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3Qg
c2hpZnRpbmcgYnkgc29tZXRoaW5nIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZS4gKi8KKyNpZmRlZiBG
SVhFRF9QT0lOVAorICAgICAgICAgLyogRklYTUU6IFVzZSBQU0hSMTYoKSBpbnN0ZWFkICovCisg
ICAgICAgICBpbnQgc2hpZnQgPSAtUFNIUjMyKE1BWDE2KC1RQ09OU1QxNig1LmYsIERCX1NISUZU
KSwgTUlOMTYoMCwgc21yKSksIERCX1NISUZUKTsKKyNlbHNlCisgICAgICAgICBpbnQgc2hpZnQg
PSBJTUlOKDUsIElNQVgoMCwgLShpbnQpZmxvb3IoLjVmICsgc21yKSkpOworI2VuZGlmCisgICAg
ICAgICBzcHJlYWRfd2VpZ2h0W2ldID0gMzIgPj4gc2hpZnQ7CisgICAgICB9CisgICAgICAvKmZv
ciAoaT0wO2k8ZW5kO2krKykKKyAgICAgICAgIHByaW50ZigiJWQgIiwgc3ByZWFkX3dlaWdodFtp
XSk7CisgICAgICBwcmludGYoIlxuIik7Ki8KKyAgIH0KICAgIC8qIE1ha2Ugc3VyZSB0aGF0IGR5
bmFtaWMgYWxsb2NhdGlvbiBjYW4ndCBtYWtlIHVzIGJ1c3QgdGhlIGJ1ZGdldCAqLwogICAgaWYg
KGVmZmVjdGl2ZUJ5dGVzID4gNTAgJiYgTE0+PTEgJiYgIWxmZSkKICAgIHsKQEAgLTEwNDYsNiAr
MTA4OSwxNCBAQCBzdGF0aWMgb3B1c192YWwxNiBkeW5hbGxvY19hbmFseXNpcyhjb25zdCBvcHVz
X3ZhbDE2ICpiYW5kTG9nRSwgY29uc3Qgb3B1c192YWwxNgogICAgICAgfQogICAgICAgZm9yIChp
PXN0YXJ0O2k8ZW5kO2krKykKICAgICAgICAgIGZvbGxvd2VyW2ldID0gTUFYMTYoZm9sbG93ZXJb
aV0sIHN1cnJvdW5kX2R5bmFsbG9jW2ldKTsKKyAgICAgIGZvciAoaT1zdGFydDtpPGVuZDtpKysp
CisgICAgICB7CisjaWZkZWYgRklYRURfUE9JTlQKKyAgICAgICAgIGltcG9ydGFuY2VbaV0gPSBQ
U0hSMzIoMTMqY2VsdF9leHAyKE1JTjE2KGZvbGxvd2VyW2ldLCBRQ09OU1QxNig0LmYsIERCX1NI
SUZUKSkpLCAxNik7CisjZWxzZQorICAgICAgICAgaW1wb3J0YW5jZVtpXSA9IChpbnQpZmxvb3Io
LjVmKzEzKmNlbHRfZXhwMihNSU4xNihmb2xsb3dlcltpXSwgUUNPTlNUMTYoNC5mLCBEQl9TSElG
VCkpKSk7CisjZW5kaWYKKyAgICAgIH0KICAgICAgIC8qIEZvciBub24tdHJhbnNpZW50IENCUi9D
VkJSIGZyYW1lcywgaGFsdmUgdGhlIGR5bmFsbG9jIGNvbnRyaWJ1dGlvbiAqLwogICAgICAgaWYg
KCghdmJyIHx8IGNvbnN0cmFpbmVkX3ZicikmJiFpc1RyYW5zaWVudCkKICAgICAgIHsKQEAgLTEx
MDEsNiArMTE1Miw5IEBAIHN0YXRpYyBvcHVzX3ZhbDE2IGR5bmFsbG9jX2FuYWx5c2lzKGNvbnN0
IG9wdXNfdmFsMTYgKmJhbmRMb2dFLCBjb25zdCBvcHVzX3ZhbDE2CiAgICAgICAgICAgICB0b3Rf
Ym9vc3QgKz0gYm9vc3RfYml0czsKICAgICAgICAgIH0KICAgICAgIH0KKyAgIH0gZWxzZSB7Cisg
ICAgICBmb3IgKGk9c3RhcnQ7aTxlbmQ7aSsrKQorICAgICAgICAgaW1wb3J0YW5jZVtpXSA9IDEz
OwogICAgfQogICAgKnRvdF9ib29zdF8gPSB0b3RfYm9vc3Q7CiAgICBSRVNUT1JFX1NUQUNLOwpA
QCAtMTEwOSw3ICsxMTYzLDcgQEAgc3RhdGljIG9wdXNfdmFsMTYgZHluYWxsb2NfYW5hbHlzaXMo
Y29uc3Qgb3B1c192YWwxNiAqYmFuZExvZ0UsIGNvbnN0IG9wdXNfdmFsMTYKIAogCiBzdGF0aWMg
aW50IHJ1bl9wcmVmaWx0ZXIoQ0VMVEVuY29kZXIgKnN0LCBjZWx0X3NpZyAqaW4sIGNlbHRfc2ln
ICpwcmVmaWx0ZXJfbWVtLCBpbnQgQ0MsIGludCBOLAotICAgICAgaW50IHByZWZpbHRlcl90YXBz
ZXQsIGludCAqcGl0Y2gsIG9wdXNfdmFsMTYgKmdhaW4sIGludCAqcWdhaW4sIGludCBlbmFibGVk
LCBpbnQgbmJBdmFpbGFibGVCeXRlcykKKyAgICAgIGludCBwcmVmaWx0ZXJfdGFwc2V0LCBpbnQg
KnBpdGNoLCBvcHVzX3ZhbDE2ICpnYWluLCBpbnQgKnFnYWluLCBpbnQgZW5hYmxlZCwgaW50IG5i
QXZhaWxhYmxlQnl0ZXMsIEFuYWx5c2lzSW5mbyAqYW5hbHlzaXMpCiB7CiAgICBpbnQgYzsKICAg
IFZBUkRFQ0woY2VsdF9zaWcsIF9wcmUpOwpAQCAtMTE2NSw3ICsxMjE5LDEyIEBAIHN0YXRpYyBp
bnQgcnVuX3ByZWZpbHRlcihDRUxURW5jb2RlciAqc3QsIGNlbHRfc2lnICppbiwgY2VsdF9zaWcg
KnByZWZpbHRlcl9tZW0sCiAgICAgICBnYWluMSA9IDA7CiAgICAgICBwaXRjaF9pbmRleCA9IENP
TUJGSUxURVJfTUlOUEVSSU9EOwogICAgfQotCisjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCisg
ICBpZiAoYW5hbHlzaXMtPnZhbGlkKQorICAgICAgZ2FpbjEgPSAob3B1c192YWwxNikoZ2FpbjEg
KiBhbmFseXNpcy0+bWF4X3BpdGNoX3JhdGlvKTsKKyNlbHNlCisgICAodm9pZClhbmFseXNpczsK
KyNlbmRpZgogICAgLyogR2FpbiB0aHJlc2hvbGQgZm9yIGVuYWJsaW5nIHRoZSBwcmVmaWx0ZXIv
cG9zdGZpbHRlciAqLwogICAgcGZfdGhyZXNob2xkID0gUUNPTlNUMTYoLjJmLDE1KTsKIApAQCAt
MTM2Miw2ICsxNDIxLDggQEAgaW50IGNlbHRfZW5jb2RlX3dpdGhfZWMoQ0VMVEVuY29kZXIgKiBP
UFVTX1JFU1RSSUNUIHN0LCBjb25zdCBvcHVzX3ZhbDE2ICogcGNtLAogICAgVkFSREVDTChpbnQs
IHB1bHNlcyk7CiAgICBWQVJERUNMKGludCwgY2FwKTsKICAgIFZBUkRFQ0woaW50LCBvZmZzZXRz
KTsKKyAgIFZBUkRFQ0woaW50LCBpbXBvcnRhbmNlKTsKKyAgIFZBUkRFQ0woaW50LCBzcHJlYWRf
d2VpZ2h0KTsKICAgIFZBUkRFQ0woaW50LCBmaW5lX3ByaW9yaXR5KTsKICAgIFZBUkRFQ0woaW50
LCB0Zl9yZXMpOwogICAgVkFSREVDTCh1bnNpZ25lZCBjaGFyLCBjb2xsYXBzZV9tYXNrcyk7CkBA
IC0xNDE0LDYgKzE0NzUsNyBAQCBpbnQgY2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAq
IE9QVVNfUkVTVFJJQ1Qgc3QsIGNvbnN0IG9wdXNfdmFsMTYgKiBwY20sCiAgICBvcHVzX2ludDMy
IGVxdWl2X3JhdGU7CiAgICBpbnQgaHlicmlkOwogICAgaW50IHdlYWtfdHJhbnNpZW50ID0gMDsK
KyAgIGludCBlbmFibGVfdGZfYW5hbHlzaXM7CiAgICBWQVJERUNMKG9wdXNfdmFsMTYsIHN1cnJv
dW5kX2R5bmFsbG9jKTsKICAgIEFMTE9DX1NUQUNLOwogCkBAIC0xNDU0LDcgKzE1MTYsNyBAQCBp
bnQgY2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5jb2RlciAqIE9QVVNfUkVTVFJJQ1Qgc3QsIGNv
bnN0IG9wdXNfdmFsMTYgKiBwY20sCiAgICAgICB0ZWxsMF9mcmFjPXRlbGw9MTsKICAgICAgIG5i
RmlsbGVkQnl0ZXM9MDsKICAgIH0gZWxzZSB7Ci0gICAgICB0ZWxsMF9mcmFjPXRlbGw9ZWNfdGVs
bF9mcmFjKGVuYyk7CisgICAgICB0ZWxsMF9mcmFjPWVjX3RlbGxfZnJhYyhlbmMpOwogICAgICAg
dGVsbD1lY190ZWxsKGVuYyk7CiAgICAgICBuYkZpbGxlZEJ5dGVzPSh0ZWxsKzQpPj4zOwogICAg
fQpAQCAtMTYwMyw3ICsxNjY1LDcgQEAgaW50IGNlbHRfZW5jb2RlX3dpdGhfZWMoQ0VMVEVuY29k
ZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBjb25zdCBvcHVzX3ZhbDE2ICogcGNtLAogICAgICAgICAg
ICAgJiYgc3QtPmNvbXBsZXhpdHkgPj0gNTsKIAogICAgICAgcHJlZmlsdGVyX3RhcHNldCA9IHN0
LT50YXBzZXRfZGVjaXNpb247Ci0gICAgICBwZl9vbiA9IHJ1bl9wcmVmaWx0ZXIoc3QsIGluLCBw
cmVmaWx0ZXJfbWVtLCBDQywgTiwgcHJlZmlsdGVyX3RhcHNldCwgJnBpdGNoX2luZGV4LCAmZ2Fp
bjEsICZxZywgZW5hYmxlZCwgbmJBdmFpbGFibGVCeXRlcyk7CisgICAgICBwZl9vbiA9IHJ1bl9w
cmVmaWx0ZXIoc3QsIGluLCBwcmVmaWx0ZXJfbWVtLCBDQywgTiwgcHJlZmlsdGVyX3RhcHNldCwg
JnBpdGNoX2luZGV4LCAmZ2FpbjEsICZxZywgZW5hYmxlZCwgbmJBdmFpbGFibGVCeXRlcywgJnN0
LT5hbmFseXNpcyk7CiAgICAgICBpZiAoKGdhaW4xID4gUUNPTlNUMTYoLjRmLDE1KSB8fCBzdC0+
cHJlZmlsdGVyX2dhaW4gPiBRQ09OU1QxNiguNGYsMTUpKSAmJiAoIXN0LT5hbmFseXNpcy52YWxp
ZCB8fCBzdC0+YW5hbHlzaXMudG9uYWxpdHkgPiAuMykKICAgICAgICAgICAgICYmIChwaXRjaF9p
bmRleCA+IDEuMjYqc3QtPnByZWZpbHRlcl9wZXJpb2QgfHwgcGl0Y2hfaW5kZXggPCAuNzkqc3Qt
PnByZWZpbHRlcl9wZXJpb2QpKQogICAgICAgICAgcGl0Y2hfY2hhbmdlID0gMTsKQEAgLTE2MzMs
NyArMTY5NSw3IEBAIGludCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVyICogT1BVU19S
RVNUUklDVCBzdCwgY29uc3Qgb3B1c192YWwxNiAqIHBjbSwKICAgICAgIC8qIFJlZHVjZXMgdGhl
IGxpa2VsaWhvb2Qgb2YgZW5lcmd5IGluc3RhYmlsaXR5IG9uIGZyaWNhdGl2ZXMgYXQgbG93IGJp
dHJhdGUKICAgICAgICAgIGluIGh5YnJpZCBtb2RlLiBJdCBzZWVtcyBsaWtlIHdlIHN0aWxsIHdh
bnQgdG8gaGF2ZSByZWFsIHRyYW5zaWVudHMgb24gdm93ZWxzCiAgICAgICAgICB0aG91Z2ggKHNt
YWxsIFNJTEsgcXVhbnRpemF0aW9uIG9mZnNldCB2YWx1ZSkuICovCi0gICAgICBpbnQgYWxsb3df
d2Vha190cmFuc2llbnRzID0gaHlicmlkICYmIGVmZmVjdGl2ZUJ5dGVzPDE1ICYmIHN0LT5zaWxr
X2luZm8ub2Zmc2V0ID49IDEwMDsKKyAgICAgIGludCBhbGxvd193ZWFrX3RyYW5zaWVudHMgPSBo
eWJyaWQgJiYgZWZmZWN0aXZlQnl0ZXM8MTUgJiYgc3QtPnNpbGtfaW5mby5zaWduYWxUeXBlICE9
IDI7CiAgICAgICBpc1RyYW5zaWVudCA9IHRyYW5zaWVudF9hbmFseXNpcyhpbiwgTitvdmVybGFw
LCBDQywKICAgICAgICAgICAgICZ0Zl9lc3RpbWF0ZSwgJnRmX2NoYW4sIGFsbG93X3dlYWtfdHJh
bnNpZW50cywgJndlYWtfdHJhbnNpZW50KTsKICAgIH0KQEAgLTE2NjIsNiArMTcyNCw5IEBAIGlu
dCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVyICogT1BVU19SRVNUUklDVCBzdCwgY29u
c3Qgb3B1c192YWwxNiAqIHBjbSwKICAgIH0KIAogICAgY29tcHV0ZV9tZGN0cyhtb2RlLCBzaG9y
dEJsb2NrcywgaW4sIGZyZXEsIEMsIENDLCBMTSwgc3QtPnVwc2FtcGxlLCBzdC0+YXJjaCk7Cisg
ICAvKiBUaGlzIHNob3VsZCBjYXRjaCBhbnkgTmFOIGluIHRoZSBDRUxUIGlucHV0LiBTaW5jZSB3
ZSdyZSBub3Qgc3VwcG9zZWQgdG8gc2VlIGFueSAodGhleSdyZSBmaWx0ZXJlZAorICAgICAgYXQg
dGhlIE9wdXMgbGF5ZXIpLCBqdXN0IGFib3J0LiAqLworICAgY2VsdF9hc3NlcnQoIWNlbHRfaXNu
YW4oZnJlcVswXSkgJiYgKEM9PTEgfHwgIWNlbHRfaXNuYW4oZnJlcVtOXSkpKTsKICAgIGlmIChD
Qz09MiYmQz09MSkKICAgICAgIHRmX2NoYW4gPSAwOwogICAgY29tcHV0ZV9iYW5kX2VuZXJnaWVz
KG1vZGUsIGZyZXEsIGJhbmRFLCBlZmZFbmQsIEMsIExNLCBzdC0+YXJjaCk7CkBAIC0xODA1LDEz
ICsxODcwLDIzIEBAIGludCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVyICogT1BVU19S
RVNUUklDVCBzdCwgY29uc3Qgb3B1c192YWwxNiAqIHBjbSwKICAgIC8qIEJhbmQgbm9ybWFsaXNh
dGlvbiAqLwogICAgbm9ybWFsaXNlX2JhbmRzKG1vZGUsIGZyZXEsIFgsIGJhbmRFLCBlZmZFbmQs
IEMsIE0pOwogCisgICBlbmFibGVfdGZfYW5hbHlzaXMgPSBlZmZlY3RpdmVCeXRlcz49MTUqQyAm
JiAhaHlicmlkICYmIHN0LT5jb21wbGV4aXR5Pj0yICYmICFzdC0+bGZlOworCisgICBBTExPQyhv
ZmZzZXRzLCBuYkVCYW5kcywgaW50KTsKKyAgIEFMTE9DKGltcG9ydGFuY2UsIG5iRUJhbmRzLCBp
bnQpOworICAgQUxMT0Moc3ByZWFkX3dlaWdodCwgbmJFQmFuZHMsIGludCk7CisKKyAgIG1heERl
cHRoID0gZHluYWxsb2NfYW5hbHlzaXMoYmFuZExvZ0UsIGJhbmRMb2dFMiwgbmJFQmFuZHMsIHN0
YXJ0LCBlbmQsIEMsIG9mZnNldHMsCisgICAgICAgICBzdC0+bHNiX2RlcHRoLCBtb2RlLT5sb2dO
LCBpc1RyYW5zaWVudCwgc3QtPnZiciwgc3QtPmNvbnN0cmFpbmVkX3ZiciwKKyAgICAgICAgIGVC
YW5kcywgTE0sIGVmZmVjdGl2ZUJ5dGVzLCAmdG90X2Jvb3N0LCBzdC0+bGZlLCBzdXJyb3VuZF9k
eW5hbGxvYywgJnN0LT5hbmFseXNpcywgaW1wb3J0YW5jZSwgc3ByZWFkX3dlaWdodCk7CisKICAg
IEFMTE9DKHRmX3JlcywgbmJFQmFuZHMsIGludCk7CiAgICAvKiBEaXNhYmxlIHZhcmlhYmxlIHRm
IHJlc29sdXRpb24gZm9yIGh5YnJpZCBhbmQgYXQgdmVyeSBsb3cgYml0cmF0ZSAqLwotICAgaWYg
KGVmZmVjdGl2ZUJ5dGVzPj0xNSpDICYmICFoeWJyaWQgJiYgc3QtPmNvbXBsZXhpdHk+PTIgJiYg
IXN0LT5sZmUpCisgICBpZiAoZW5hYmxlX3RmX2FuYWx5c2lzKQogICAgewogICAgICAgaW50IGxh
bWJkYTsKLSAgICAgIGxhbWJkYSA9IElNQVgoNSwgMTI4MC9lZmZlY3RpdmVCeXRlcyArIDIpOwot
ICAgICAgdGZfc2VsZWN0ID0gdGZfYW5hbHlzaXMobW9kZSwgZWZmRW5kLCBpc1RyYW5zaWVudCwg
dGZfcmVzLCBsYW1iZGEsIFgsIE4sIExNLCB0Zl9lc3RpbWF0ZSwgdGZfY2hhbik7CisgICAgICBs
YW1iZGEgPSBJTUFYKDgwLCAyMDQ4MC9lZmZlY3RpdmVCeXRlcyArIDIpOworICAgICAgdGZfc2Vs
ZWN0ID0gdGZfYW5hbHlzaXMobW9kZSwgZWZmRW5kLCBpc1RyYW5zaWVudCwgdGZfcmVzLCBsYW1i
ZGEsIFgsIE4sIExNLCB0Zl9lc3RpbWF0ZSwgdGZfY2hhbiwgaW1wb3J0YW5jZSk7CiAgICAgICBm
b3IgKGk9ZWZmRW5kO2k8ZW5kO2krKykKICAgICAgICAgIHRmX3Jlc1tpXSA9IHRmX3Jlc1tlZmZF
bmQtMV07CiAgICB9IGVsc2UgaWYgKGh5YnJpZCAmJiB3ZWFrX3RyYW5zaWVudCkKQEAgLTE4MjIs
NyArMTg5Nyw3IEBAIGludCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVyICogT1BVU19S
RVNUUklDVCBzdCwgY29uc3Qgb3B1c192YWwxNiAqIHBjbSwKICAgICAgIGZvciAoaT0wO2k8ZW5k
O2krKykKICAgICAgICAgIHRmX3Jlc1tpXSA9IDE7CiAgICAgICB0Zl9zZWxlY3Q9MDsKLSAgIH0g
ZWxzZSBpZiAoaHlicmlkICYmIGVmZmVjdGl2ZUJ5dGVzPDE1KQorICAgfSBlbHNlIGlmIChoeWJy
aWQgJiYgZWZmZWN0aXZlQnl0ZXM8MTUgJiYgc3QtPnNpbGtfaW5mby5zaWduYWxUeXBlICE9IDIp
CiAgICB7CiAgICAgICAvKiBGb3IgbG93IGJpdHJhdGUgaHlicmlkLCB3ZSBmb3JjZSB0ZW1wb3Jh
bCByZXNvbHV0aW9uIHRvIDUgbXMgcmF0aGVyIHRoYW4gMi41IG1zLiAqLwogICAgICAgZm9yIChp
PTA7aTxlbmQ7aSsrKQpAQCAtMTg5Myw3ICsxOTY4LDcgQEAgaW50IGNlbHRfZW5jb2RlX3dpdGhf
ZWMoQ0VMVEVuY29kZXIgKiBPUFVTX1JFU1RSSUNUIHN0LCBjb25zdCBvcHVzX3ZhbDE2ICogcGNt
LAogICAgICAgICAgewogICAgICAgICAgICAgc3QtPnNwcmVhZF9kZWNpc2lvbiA9IHNwcmVhZGlu
Z19kZWNpc2lvbihtb2RlLCBYLAogICAgICAgICAgICAgICAgICAgJnN0LT50b25hbF9hdmVyYWdl
LCBzdC0+c3ByZWFkX2RlY2lzaW9uLCAmc3QtPmhmX2F2ZXJhZ2UsCi0gICAgICAgICAgICAgICAg
ICAmc3QtPnRhcHNldF9kZWNpc2lvbiwgcGZfb24mJiFzaG9ydEJsb2NrcywgZWZmRW5kLCBDLCBN
KTsKKyAgICAgICAgICAgICAgICAgICZzdC0+dGFwc2V0X2RlY2lzaW9uLCBwZl9vbiYmIXNob3J0
QmxvY2tzLCBlZmZFbmQsIEMsIE0sIHNwcmVhZF93ZWlnaHQpOwogICAgICAgICAgfQogICAgICAg
ICAgLypwcmludGYoIiVkICVkXG4iLCBzdC0+dGFwc2V0X2RlY2lzaW9uLCBzdC0+c3ByZWFkX2Rl
Y2lzaW9uKTsqLwogICAgICAgICAgLypwcmludGYoIiVmICVkICVmICVkXG5cbiIsIHN0LT5hbmFs
eXNpcy50b25hbGl0eSwgc3QtPnNwcmVhZF9kZWNpc2lvbiwgc3QtPmFuYWx5c2lzLnRvbmFsaXR5
X3Nsb3BlLCBzdC0+dGFwc2V0X2RlY2lzaW9uKTsqLwpAQCAtMTkwMSwxMSArMTk3Niw2IEBAIGlu
dCBjZWx0X2VuY29kZV93aXRoX2VjKENFTFRFbmNvZGVyICogT1BVU19SRVNUUklDVCBzdCwgY29u
c3Qgb3B1c192YWwxNiAqIHBjbSwKICAgICAgIGVjX2VuY19pY2RmKGVuYywgc3QtPnNwcmVhZF9k
ZWNpc2lvbiwgc3ByZWFkX2ljZGYsIDUpOwogICAgfQogCi0gICBBTExPQyhvZmZzZXRzLCBuYkVC
YW5kcywgaW50KTsKLQotICAgbWF4RGVwdGggPSBkeW5hbGxvY19hbmFseXNpcyhiYW5kTG9nRSwg
YmFuZExvZ0UyLCBuYkVCYW5kcywgc3RhcnQsIGVuZCwgQywgb2Zmc2V0cywKLSAgICAgICAgIHN0
LT5sc2JfZGVwdGgsIG1vZGUtPmxvZ04sIGlzVHJhbnNpZW50LCBzdC0+dmJyLCBzdC0+Y29uc3Ry
YWluZWRfdmJyLAotICAgICAgICAgZUJhbmRzLCBMTSwgZWZmZWN0aXZlQnl0ZXMsICZ0b3RfYm9v
c3QsIHN0LT5sZmUsIHN1cnJvdW5kX2R5bmFsbG9jLCAmc3QtPmFuYWx5c2lzKTsKICAgIC8qIEZv
ciBMRkUsIGV2ZXJ5dGhpbmcgaW50ZXJlc3RpbmcgaXMgaW4gdGhlIGZpcnN0IGJhbmQgKi8KICAg
IGlmIChzdC0+bGZlKQogICAgICAgb2Zmc2V0c1swXSA9IElNSU4oOCwgZWZmZWN0aXZlQnl0ZXMv
Myk7CkBAIC0yMTIxLDcgKzIxOTEsNyBAQCBpbnQgY2VsdF9lbmNvZGVfd2l0aF9lYyhDRUxURW5j
b2RlciAqIE9QVVNfUkVTVFJJQ1Qgc3QsIGNvbnN0IG9wdXNfdmFsMTYgKiBwY20sCiAjZW5kaWYK
ICAgIGlmIChzdC0+bGZlKQogICAgICAgc2lnbmFsQmFuZHdpZHRoID0gMTsKLSAgIGNvZGVkQmFu
ZHMgPSBjb21wdXRlX2FsbG9jYXRpb24obW9kZSwgc3RhcnQsIGVuZCwgb2Zmc2V0cywgY2FwLAor
ICAgY29kZWRCYW5kcyA9IGNsdF9jb21wdXRlX2FsbG9jYXRpb24obW9kZSwgc3RhcnQsIGVuZCwg
b2Zmc2V0cywgY2FwLAogICAgICAgICAgYWxsb2NfdHJpbSwgJnN0LT5pbnRlbnNpdHksICZkdWFs
X3N0ZXJlbywgYml0cywgJmJhbGFuY2UsIHB1bHNlcywKICAgICAgICAgIGZpbmVfcXVhbnQsIGZp
bmVfcHJpb3JpdHksIEMsIExNLCBlbmMsIDEsIHN0LT5sYXN0Q29kZWRCYW5kcywgc2lnbmFsQmFu
ZHdpZHRoKTsKICAgIGlmIChzdC0+bGFzdENvZGVkQmFuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY2Vs
dF9scGMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvY2VsdC9jZWx0X2xwYy5jCmluZGV4IDU3YmM1ZjNkZDNmZDg4NjE2MmZlNGMzYTdm
ZGI4NzE5N2ZjNTNlYmQuLjhlY2I2OTNlZTk4NGRiOTRkODdkMDQ1OTIyMmQxOTE0MzllYmVlNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvY2VsdC9jZWx0X2xwYy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9jZWx0X2xwYy5jCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgY2VsdF9maXJfYygKICAgIGludCBpLGo7CiAgICBWQVJERUNMKG9wdXNf
dmFsMTYsIHJudW0pOwogICAgU0FWRV9TVEFDSzsKLQorICAgY2VsdF9hc3NlcnQoeCAhPSB5KTsK
ICAgIEFMTE9DKHJudW0sIG9yZCwgb3B1c192YWwxNik7CiAgICBmb3IoaT0wO2k8b3JkO2krKykK
ICAgICAgIHJudW1baV0gPSBudW1bb3JkLWktMV07CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBj
ZWx0X2Zpcl9jKAogICAgewogICAgICAgb3B1c192YWwzMiBzdW1bNF07CiAgICAgICBzdW1bMF0g
PSBTSEwzMihFWFRFTkQzMih4W2kgIF0pLCBTSUdfU0hJRlQpOwotICAgICAgc3VtWzFdID0gU0hM
MzIoRVhURU5EMzIoeFtpKzFdKSwgU0lHX1NISUZUKSwKKyAgICAgIHN1bVsxXSA9IFNITDMyKEVY
VEVORDMyKHhbaSsxXSksIFNJR19TSElGVCk7CiAgICAgICBzdW1bMl0gPSBTSEwzMihFWFRFTkQz
Mih4W2krMl0pLCBTSUdfU0hJRlQpOwogICAgICAgc3VtWzNdID0gU0hMMzIoRVhURU5EMzIoeFtp
KzNdKSwgU0lHX1NISUZUKTsKICAgICAgIHhjb3JyX2tlcm5lbChybnVtLCB4K2ktb3JkLCBzdW0s
IG9yZCwgYXJjaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY3dycy5jIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2N3cnMuYwppbmRleCA5
NzIyZjBhYzg2Yzk1M2IxOTRiNDVlYWQ1OTRmZDY1YWQyN2Y0YTZiLi5hNTUyZTRmMGZiODFkNGY2
ZTlkMTVkODZmZTQwOWJjZGVlM2IyNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvY3dycy5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2Vs
dC9jd3JzLmMKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgb3B1c192YWwzMiBjd3JzaShpbnQg
X24saW50IF9rLG9wdXNfdWludDMyIF9pLGludCAqX3kpewogICAgICAgazA9X2s7CiAgICAgICBx
PXJvd1tfbl07CiAgICAgICBpZihxPl9pKXsKLSAgICAgICAgY2VsdF9hc3NlcnQocD5xKTsKKyAg
ICAgICAgY2VsdF9zaWdfYXNzZXJ0KHA+cSk7CiAgICAgICAgIF9rPV9uOwogICAgICAgICBkbyBw
PUNFTFRfUFZRX1VfUk9XWy0tX2tdW19uXTsKICAgICAgICAgd2hpbGUocD5faSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL2NlbHQvZW50Y29kZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2VudGNvZGUuaAppbmRleCAxM2Q2Yzg0ZWYwZmEzOTIw
NTE2NmQzZTc3NjEzNGI5YmMyMzI3NWM1Li4zNzYzZTNmMjg0MmRiM2QzMGE1NjdmMDAwMTFiOGVl
NjI2MmE5YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZW50Y29kZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9lbnRjb2RlLmgK
QEAgLTEyMiw3ICsxMjIsNyBAQCBvcHVzX3VpbnQzMiBlY190ZWxsX2ZyYWMoZWNfY3R4ICpfdGhp
cyk7CiAKIC8qIFRlc3RlZCBleGhhdXN0aXZlbHkgZm9yIGFsbCBuIGFuZCBmb3IgMTw9ZDw9MjU2
ICovCiBzdGF0aWMgT1BVU19JTkxJTkUgb3B1c191aW50MzIgY2VsdF91ZGl2KG9wdXNfdWludDMy
IG4sIG9wdXNfdWludDMyIGQpIHsKLSAgIGNlbHRfYXNzZXJ0KGQ+MCk7CisgICBjZWx0X3NpZ19h
c3NlcnQoZD4wKTsKICNpZmRlZiBVU0VfU01BTExfRElWX1RBQkxFCiAgICBpZiAoZD4yNTYpCiAg
ICAgICByZXR1cm4gbi9kOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSBv
cHVzX3VpbnQzMiBjZWx0X3VkaXYob3B1c191aW50MzIgbiwgb3B1c191aW50MzIgZCkgewogfQog
CiBzdGF0aWMgT1BVU19JTkxJTkUgb3B1c19pbnQzMiBjZWx0X3N1ZGl2KG9wdXNfaW50MzIgbiwg
b3B1c19pbnQzMiBkKSB7Ci0gICBjZWx0X2Fzc2VydChkPjApOworICAgY2VsdF9zaWdfYXNzZXJ0
KGQ+MCk7CiAjaWZkZWYgVVNFX1NNQUxMX0RJVl9UQUJMRQogICAgaWYgKG48MCkKICAgICAgIHJl
dHVybiAtKG9wdXNfaW50MzIpY2VsdF91ZGl2KC1uLCBkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9lbnRk
ZWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY2VsdC9lbnRkZWMuaAppbmRleCBkOGFiMzE4NzMwODgyOGZiNjVjODUwM2Y3ODdiYjdm
ZDQ1NTIyOGU1Li4wMjVmYzE4NzBkNjljNDE5ODhjZjJmZTUzYjZmZjI4MzFkN2Q4ZDY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvZW50ZGVjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2VudGRlYy5oCkBAIC04NSw3ICs4NSw3IEBA
IGludCBlY19kZWNfaWNkZihlY19kZWMgKl90aGlzLGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9pY2Rm
LHVuc2lnbmVkIF9mdGIpOwogICBUaGUgYml0cyBtdXN0IGhhdmUgYmVlbiBlbmNvZGVkIHdpdGgg
ZWNfZW5jX3VpbnQoKS4KICAgTm8gY2FsbCB0byBlY19kZWNfdXBkYXRlKCkgaXMgbmVjZXNzYXJ5
IGFmdGVyIHRoaXMgY2FsbC4KICAgX2Z0OiBUaGUgbnVtYmVyIG9mIGludGVnZXJzIHRoYXQgY2Fu
IGJlIGRlY29kZWQgKG9uZSBtb3JlIHRoYW4gdGhlIG1heCkuCi0gICAgICAgVGhpcyBtdXN0IGJl
IGF0IGxlYXN0IG9uZSwgYW5kIG5vIG1vcmUgdGhhbiAyKiozMi0xLgorICAgICAgIFRoaXMgbXVz
dCBiZSBhdCBsZWFzdCAyLCBhbmQgbm8gbW9yZSB0aGFuIDIqKjMyLTEuCiAgIFJldHVybjogVGhl
IGRlY29kZWQgYml0cy4qLwogb3B1c191aW50MzIgZWNfZGVjX3VpbnQoZWNfZGVjICpfdGhpcyxv
cHVzX3VpbnQzMiBfZnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZW50ZW5jLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZW50ZW5j
LmgKaW5kZXggNzk2YmM0ZDU3MjdmNWJmNTI2ZGFmMmJlZjMxNTcwMDNhOTk1M2Q1NS4uZjUwMmVh
ZjY2MjQ2OWUxMjdmYmMwYWU4NzM1ZWVjNWJkNmFlZjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L2VudGVu
Yy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvY2VsdC9lbnRlbmMuaApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIGVjX2VuY19pY2Rm
KGVjX2VuYyAqX3RoaXMsaW50IF9zLGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9pY2RmLHVuc2lnbmVk
IF9mdGIpOwogLypFbmNvZGVzIGEgcmF3IHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHN0cmVhbS4K
ICAgX2ZsOiBUaGUgaW50ZWdlciB0byBlbmNvZGUuCiAgIF9mdDogVGhlIG51bWJlciBvZiBpbnRl
Z2VycyB0aGF0IGNhbiBiZSBlbmNvZGVkIChvbmUgbW9yZSB0aGFuIHRoZSBtYXgpLgotICAgICAg
IFRoaXMgbXVzdCBiZSBhdCBsZWFzdCBvbmUsIGFuZCBubyBtb3JlIHRoYW4gMioqMzItMS4qLwor
ICAgICAgIFRoaXMgbXVzdCBiZSBhdCBsZWFzdCAyLCBhbmQgbm8gbW9yZSB0aGFuIDIqKjMyLTEu
Ki8KIHZvaWQgZWNfZW5jX3VpbnQoZWNfZW5jICpfdGhpcyxvcHVzX3VpbnQzMiBfZmwsb3B1c191
aW50MzIgX2Z0KTsKIAogLypFbmNvZGVzIGEgc2VxdWVuY2Ugb2YgcmF3IGJpdHMgaW4gdGhlIHN0
cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9mbG9hdF9jYXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvZmxvYXRfY2FzdC5oCmlu
ZGV4IDk4YjQwYWJjZjY1ZjVkZjdhNTFkM2Q5ZDY3ZDYxODY5YTU1MzVmZTkuLjg4OWRhZTk2NWZh
ZDRmZDNhN2I3OWEyNjQyZDc3NzNmOTA1YjIzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9mbG9hdF9jYXN0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L2Zsb2F0X2Nhc3QuaApAQCAtOTYsMTAgKzk2LDEwIEBAIHN0YXRpYyBPUFVT
X0lOTElORSBvcHVzX2ludDMyIGZsb2F0MmludChmbG9hdCB4KSB7cmV0dXJuIF9tbV9jdnRfc3My
c2koX21tX3NldF9zCiAjaW5jbHVkZSA8bWF0aC5oPgogI2RlZmluZSBmbG9hdDJpbnQoeCkgbHJp
bnQoeCkKIAotI2VsaWYgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDApICYm
IGRlZmluZWQgKF9NX1g2NCkKKyNlbGlmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+
PSAxNDAwKSAmJiAoZGVmaW5lZChfTV9YNjQpIHx8IChkZWZpbmVkKF9NX0lYODZfRlApICYmIF9N
X0lYODZfRlAgPj0gMSkpCiAgICAgICAgICNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KIAotICAgICAg
ICBfX2lubGluZSBsb25nIGludCBmbG9hdDJpbnQoZmxvYXQgdmFsdWUpCisgICAgICAgIHN0YXRp
YyBfX2lubGluZSBsb25nIGludCBmbG9hdDJpbnQoZmxvYXQgdmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gX21tX2N2dHNzX3NpMzIoX21tX2xvYWRfc3MoJnZhbHVlKSk7
CiAgICAgICAgIH0KQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgb3B1c19p
bnQzMiBmbG9hdDJpbnQoZmxvYXQgeCkge3JldHVybiBfbW1fY3Z0X3NzMnNpKF9tbV9zZXRfcwog
ICAgICAgICAqKiAgICAgIFRoZXJlZm9yZSBpbXBsZW1lbnQgT1BVU19JTkxJTkUgdmVyc2lvbnMg
b2YgdGhlc2UgZnVuY3Rpb25zIGhlcmUuCiAgICAgICAgICovCiAKLSAgICAgICAgX19pbmxpbmUg
bG9uZyBpbnQKKyAgICAgICAgc3RhdGljIF9faW5saW5lIGxvbmcgaW50CiAgICAgICAgIGZsb2F0
MmludCAoZmxvYXQgZmx0KQogICAgICAgICB7ICAgICAgIGludCBpbnRncjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L21hdGhvcHMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9tYXRob3BzLmMKaW5kZXggMjFhMDFmNTJlNDMyMWUwZmYy
MGFlZjliNDQwZjY3MjY5ODg5ZjE4OC4uNmVlOWI5ZTEwMTYxODcyNDE3MGUzODQ1MjE4NTYzOGFk
N2RjOGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21hdGhvcHMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvbWF0aG9wcy5jCkBA
IC0zOCw3ICszOCw4IEBACiAjaW5jbHVkZSAibWF0aG9wcy5oIgogCiAvKkNvbXB1dGUgZmxvb3Io
c3FydChfdmFsKSkgd2l0aCBleGFjdCBhcml0aG1ldGljLgotICBUaGlzIGhhcyBiZWVuIHRlc3Rl
ZCBvbiBhbGwgcG9zc2libGUgMzItYml0IGlucHV0cy4qLworICBfdmFsIG11c3QgYmUgZ3JlYXRl
ciB0aGFuIDAuCisgIFRoaXMgaGFzIGJlZW4gdGVzdGVkIG9uIGFsbCBwb3NzaWJsZSAzMi1iaXQg
aW5wdXRzIGdyZWF0ZXIgdGhhbiAwLiovCiB1bnNpZ25lZCBpc3FydDMyKG9wdXNfdWludDMyIF92
YWwpewogICB1bnNpZ25lZCBiOwogICB1bnNpZ25lZCBnOwpAQCAtMTgyLDcgKzE4Myw3IEBAIG9w
dXNfdmFsMzIgY2VsdF9yY3Aob3B1c192YWwzMiB4KQogICAgaW50IGk7CiAgICBvcHVzX3ZhbDE2
IG47CiAgICBvcHVzX3ZhbDE2IHI7Ci0gICBjZWx0X2Fzc2VydDIoeD4wLCAiY2VsdF9yY3AoKSBv
bmx5IGRlZmluZWQgZm9yIHBvc2l0aXZlIHZhbHVlcyIpOworICAgY2VsdF9zaWdfYXNzZXJ0KHg+
MCk7CiAgICBpID0gY2VsdF9pbG9nMih4KTsKICAgIC8qIG4gaXMgUTE1IHdpdGggcmFuZ2UgWzAs
MSkuICovCiAgICBuID0gVlNIUjMyKHgsaS0xNSktMzI3Njg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvbWF0
aG9wcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L21hdGhvcHMuaAppbmRleCAxZjhhMjBjYjQ1NDAyNTVmZmM0ZWEwYTVmNjcx
NmEzMTc5OGM2YTZmLi41ZTg2ZmYwZGQyNTc5YmE3YjRiN2FhNTdiODU5M2VjMDcyMjMzYTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NlbHQvbWF0aG9wcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9tYXRob3BzLmgKQEAgLTcyLDcgKzcy
LDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIGZsb2F0IGZhc3RfYXRhbjJmKGZsb2F0IHksIGZsb2F0
IHgpIHsKICN1bmRlZiBjQQogI3VuZGVmIGNCCiAjdW5kZWYgY0MKLSN1bmRlZiBjRAorI3VuZGVm
IGNFCiAjZW5kaWYKIAogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIGZs
b2F0IGNlbHRfZXhwMihmbG9hdCB4KQogLyoqIEludGVnZXIgbG9nIGluIGJhc2UyLiBVbmRlZmlu
ZWQgZm9yIHplcm8gYW5kIG5lZ2F0aXZlIG51bWJlcnMgKi8KIHN0YXRpYyBPUFVTX0lOTElORSBv
cHVzX2ludDE2IGNlbHRfaWxvZzIob3B1c19pbnQzMiB4KQogewotICAgY2VsdF9hc3NlcnQyKHg+
MCwgImNlbHRfaWxvZzIoKSBvbmx5IGRlZmluZWQgZm9yIHN0cmljdGx5IHBvc2l0aXZlIG51bWJl
cnMiKTsKKyAgIGNlbHRfc2lnX2Fzc2VydCh4PjApOwogICAgcmV0dXJuIEVDX0lMT0coeCktMTsK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21pcHMvY2VsdF9taXBzcjEuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9taXBz
L2NlbHRfbWlwc3IxLmgKaW5kZXggZTg1NjYxYTY2MThjZTA3NTAyZDRhY2UwNjZlY2U1OWQ1OWNl
MjI0YS4uYzMzMmZlMDQ3MWUzMWFmOTQzMDY4ZGU1ZWQ0MGVlNjQwNjkzOGI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9jZWx0L21pcHMvY2VsdF9taXBzcjEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvbWlwcy9jZWx0X21pcHNyMS5oCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiY2VsdF9scGMuaCIKICNpbmNsdWRlICJ2cS5oIgog
CisjZGVmaW5lIE9WRVJSSURFX0NPTUJfRklMVEVSX0NPTlNUCiAjZGVmaW5lIE9WRVJSSURFX2Nv
bWJfZmlsdGVyCiB2b2lkIGNvbWJfZmlsdGVyKG9wdXNfdmFsMzIgKnksIG9wdXNfdmFsMzIgKngs
IGludCBUMCwgaW50IFQxLCBpbnQgTiwKICAgICAgIG9wdXNfdmFsMTYgZzAsIG9wdXNfdmFsMTYg
ZzEsIGludCB0YXBzZXQwLCBpbnQgdGFwc2V0MSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9taXBzL3ZxX21p
cHNyMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jZWx0L21pcHMvdnFfbWlwc3IxLmgKaW5kZXggZmQxOGVhYjdhOTY2MDQ2NTM5YTYw
YjhhMjJkZGVlZDJmMWEwYTViNi4uZjI2YTMzZTc1NWU4MzU4MWRkNDc3NjlhZGJjOGRjY2QxYWUz
ZmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21pcHMvdnFfbWlwc3IxLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L21pcHMvdnFf
bWlwc3IxLmgKQEAgLTM2LDggKzM2LDYgQEAKICNpbmNsdWRlICJtYXRob3BzLmgiCiAjaW5jbHVk
ZSAiYXJjaC5oIgogCi1zdGF0aWMgdm9pZCByZW5vcm1hbGlzZV92ZWN0b3JfbWlwcyhjZWx0X25v
cm0gKlgsIGludCBOLCBvcHVzX3ZhbDE2IGdhaW4sIGludCBhcmNoKTsKLQogI2RlZmluZSBPVkVS
UklERV92cV9leHBfcm90YXRpb24xCiBzdGF0aWMgdm9pZCBleHBfcm90YXRpb24xKGNlbHRfbm9y
bSAqWCwgaW50IGxlbiwgaW50IHN0cmlkZSwgb3B1c192YWwxNiBjLCBvcHVzX3ZhbDE2IHMpCiB7
CkBAIC02NiwxMSArNjQsNyBAQCBzdGF0aWMgdm9pZCBleHBfcm90YXRpb24xKGNlbHRfbm9ybSAq
WCwgaW50IGxlbiwgaW50IHN0cmlkZSwgb3B1c192YWwxNiBjLCBvcHVzXwogfQogCiAjZGVmaW5l
IE9WRVJSSURFX3Jlbm9ybWFsaXNlX3ZlY3RvcgotCi0jZGVmaW5lIHJlbm9ybWFsaXNlX3ZlY3Rv
cihYLCBOLCBnYWluLCBhcmNoKSBcCi0gKHJlbm9ybWFsaXNlX3ZlY3Rvcl9taXBzKFgsIE4sIGdh
aW4sIGFyY2gpKQotCi12b2lkIHJlbm9ybWFsaXNlX3ZlY3Rvcl9taXBzKGNlbHRfbm9ybSAqWCwg
aW50IE4sIG9wdXNfdmFsMTYgZ2FpbiwgaW50IGFyY2gpCit2b2lkIHJlbm9ybWFsaXNlX3ZlY3Rv
cihjZWx0X25vcm0gKlgsIGludCBOLCBvcHVzX3ZhbDE2IGdhaW4sIGludCBhcmNoKQogewogICAg
aW50IGk7CiAjaWZkZWYgRklYRURfUE9JTlQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9waXRjaC5jIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0
L3BpdGNoLmMKaW5kZXggNWIwNjFkODYwZjQ1MmI4YzM1MzlmNTBiODZkZmQxMjMwYjdlYzUyMS4u
ODcyNTgyYTQ4YTU1NThhYWQ3NWZjNzEzYTYzNWRiZjY5YWFiNmJlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0
L3BpdGNoLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9jZWx0L3BpdGNoLmMKQEAgLTEwMiwxMSArMTAyLDkgQEAgc3RhdGljIHZv
aWQgZmluZF9iZXN0X3BpdGNoKG9wdXNfdmFsMzIgKnhjb3JyLCBvcHVzX3ZhbDE2ICp5LCBpbnQg
bGVuLAogICAgfQogfQogCi1zdGF0aWMgdm9pZCBjZWx0X2ZpcjUoY29uc3Qgb3B1c192YWwxNiAq
eCwKK3N0YXRpYyB2b2lkIGNlbHRfZmlyNShvcHVzX3ZhbDE2ICp4LAogICAgICAgICAgY29uc3Qg
b3B1c192YWwxNiAqbnVtLAotICAgICAgICAgb3B1c192YWwxNiAqeSwKLSAgICAgICAgIGludCBO
LAotICAgICAgICAgb3B1c192YWwxNiAqbWVtKQorICAgICAgICAgaW50IE4pCiB7CiAgICBpbnQg
aTsKICAgIG9wdXNfdmFsMTYgbnVtMCwgbnVtMSwgbnVtMiwgbnVtMywgbnVtNDsKQEAgLTExNiwx
MSArMTE0LDExIEBAIHN0YXRpYyB2b2lkIGNlbHRfZmlyNShjb25zdCBvcHVzX3ZhbDE2ICp4LAog
ICAgbnVtMj1udW1bMl07CiAgICBudW0zPW51bVszXTsKICAgIG51bTQ9bnVtWzRdOwotICAgbWVt
MD1tZW1bMF07Ci0gICBtZW0xPW1lbVsxXTsKLSAgIG1lbTI9bWVtWzJdOwotICAgbWVtMz1tZW1b
M107Ci0gICBtZW00PW1lbVs0XTsKKyAgIG1lbTA9MDsKKyAgIG1lbTE9MDsKKyAgIG1lbTI9MDsK
KyAgIG1lbTM9MDsKKyAgIG1lbTQ9MDsKICAgIGZvciAoaT0wO2k8TjtpKyspCiAgICB7CiAgICAg
ICBvcHVzX3ZhbDMyIHN1bSA9IFNITDMyKEVYVEVORDMyKHhbaV0pLCBTSUdfU0hJRlQpOwpAQCAt
MTM0LDEzICsxMzIsOCBAQCBzdGF0aWMgdm9pZCBjZWx0X2ZpcjUoY29uc3Qgb3B1c192YWwxNiAq
eCwKICAgICAgIG1lbTIgPSBtZW0xOwogICAgICAgbWVtMSA9IG1lbTA7CiAgICAgICBtZW0wID0g
eFtpXTsKLSAgICAgIHlbaV0gPSBST1VORDE2KHN1bSwgU0lHX1NISUZUKTsKKyAgICAgIHhbaV0g
PSBST1VORDE2KHN1bSwgU0lHX1NISUZUKTsKICAgIH0KLSAgIG1lbVswXT1tZW0wOwotICAgbWVt
WzFdPW1lbTE7Ci0gICBtZW1bMl09bWVtMjsKLSAgIG1lbVszXT1tZW0zOwotICAgbWVtWzRdPW1l
bTQ7CiB9CiAKIApAQCAtMTUwLDcgKzE0Myw3IEBAIHZvaWQgcGl0Y2hfZG93bnNhbXBsZShjZWx0
X3NpZyAqIE9QVVNfUkVTVFJJQ1QgeFtdLCBvcHVzX3ZhbDE2ICogT1BVU19SRVNUUklDVCB4CiAg
ICBpbnQgaTsKICAgIG9wdXNfdmFsMzIgYWNbNV07CiAgICBvcHVzX3ZhbDE2IHRtcD1RMTVPTkU7
Ci0gICBvcHVzX3ZhbDE2IGxwY1s0XSwgbWVtWzVdPXswLDAsMCwwLDB9OworICAgb3B1c192YWwx
NiBscGNbNF07CiAgICBvcHVzX3ZhbDE2IGxwYzJbNV07CiAgICBvcHVzX3ZhbDE2IGMxID0gUUNP
TlNUMTYoLjhmLDE1KTsKICNpZmRlZiBGSVhFRF9QT0lOVApAQCAtMjExLDcgKzIwNCw3IEBAIHZv
aWQgcGl0Y2hfZG93bnNhbXBsZShjZWx0X3NpZyAqIE9QVVNfUkVTVFJJQ1QgeFtdLCBvcHVzX3Zh
bDE2ICogT1BVU19SRVNUUklDVCB4CiAgICBscGMyWzJdID0gbHBjWzJdICsgTVVMVDE2XzE2X1Ex
NShjMSxscGNbMV0pOwogICAgbHBjMlszXSA9IGxwY1szXSArIE1VTFQxNl8xNl9RMTUoYzEsbHBj
WzJdKTsKICAgIGxwYzJbNF0gPSBNVUxUMTZfMTZfUTE1KGMxLGxwY1szXSk7Ci0gICBjZWx0X2Zp
cjUoeF9scCwgbHBjMiwgeF9scCwgbGVuPj4xLCBtZW0pOworICAgY2VsdF9maXI1KHhfbHAsIGxw
YzIsIGxlbj4+MSk7CiB9CiAKIC8qIFB1cmUgQyBpbXBsZW1lbnRhdGlvbi4gKi8KQEAgLTI1Niw3
ICsyNDksNyBAQCBjZWx0X3BpdGNoX3hjb3JyX2MoY29uc3Qgb3B1c192YWwxNiAqX3gsIGNvbnN0
IG9wdXNfdmFsMTYgKl95LAogICAgb3B1c192YWwzMiBtYXhjb3JyPTE7CiAjZW5kaWYKICAgIGNl
bHRfYXNzZXJ0KG1heF9waXRjaD4wKTsKLSAgIGNlbHRfYXNzZXJ0KCgoKHVuc2lnbmVkIGNoYXIg
KilfeC0odW5zaWduZWQgY2hhciAqKU5VTEwpJjMpPT0wKTsKKyAgIGNlbHRfc2lnX2Fzc2VydCgo
KCh1bnNpZ25lZCBjaGFyICopX3gtKHVuc2lnbmVkIGNoYXIgKilOVUxMKSYzKT09MCk7CiAgICBm
b3IgKGk9MDtpPG1heF9waXRjaC0zO2krPTQpCiAgICB7CiAgICAgICBvcHVzX3ZhbDMyIHN1bVs0
XT17MCwwLDAsMH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvcXVhbnRfYmFuZHMuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9xdWFudF9i
YW5kcy5jCmluZGV4IDU2MTAxYjFjZmVjYjhmNTgxMWMwNzYxODgzMGQ3ZWUzODQyYWViNDguLjM5
YTIyMWVkYTVmODZkNzUyMTI5MTc2MzkxZTFlZDU5NzY5Yjc5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC9x
dWFudF9iYW5kcy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9xdWFudF9iYW5kcy5jCkBAIC00NTcsNyArNDU3LDcgQEAg
dm9pZCB1bnF1YW50X2NvYXJzZV9lbmVyZ3koY29uc3QgQ0VMVE1vZGUgKm0sIGludCBzdGFydCwg
aW50IGVuZCwgb3B1c192YWwxNiAqb2wKICAgICAgICAgIC8qIEl0IHdvdWxkIGJlIGJldHRlciB0
byBleHByZXNzIHRoaXMgaW52YXJpYW50IGFzIGEKICAgICAgICAgICAgIHRlc3Qgb24gQyBhdCBm
dW5jdGlvbiBlbnRyeSwgYnV0IHRoYXQgaXNuJ3QgZW5vdWdoCiAgICAgICAgICAgICB0byBtYWtl
IHRoZSBzdGF0aWMgYW5hbHl6ZXIgaGFwcHkuICovCi0gICAgICAgICBjZWx0X2Fzc2VydChjPDIp
OworICAgICAgICAgY2VsdF9zaWdfYXNzZXJ0KGM8Mik7CiAgICAgICAgICB0ZWxsID0gZWNfdGVs
bChkZWMpOwogICAgICAgICAgaWYoYnVkZ2V0LXRlbGw+PTE1KQogICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L3JhdGUuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC9yYXRlLmMKaW5kZXggY2E0Y2M4NzBlYWE0MTJmNTJhNDVm
NDFhOTM4MjgyYjVhMGM3ZDRlOS4uNDY1ZTFiYTI2Y2I0ZTAwOWZiZWZkZmI3YjJkOGNmNmU4ZWU4
NDdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3JhdGUuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvcmF0ZS5jCkBAIC01MjksNyAr
NTI5LDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIGludCBpbnRlcnBfYml0czJwdWxzZXMoY29uc3Qg
Q0VMVE1vZGUgKm0sIGludCBzdGFydCwgaW50IGVuZCwKICAgIHJldHVybiBjb2RlZEJhbmRzOwog
fQogCi1pbnQgY29tcHV0ZV9hbGxvY2F0aW9uKGNvbnN0IENFTFRNb2RlICptLCBpbnQgc3RhcnQs
IGludCBlbmQsIGNvbnN0IGludCAqb2Zmc2V0cywgY29uc3QgaW50ICpjYXAsIGludCBhbGxvY190
cmltLCBpbnQgKmludGVuc2l0eSwgaW50ICpkdWFsX3N0ZXJlbywKK2ludCBjbHRfY29tcHV0ZV9h
bGxvY2F0aW9uKGNvbnN0IENFTFRNb2RlICptLCBpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IGlu
dCAqb2Zmc2V0cywgY29uc3QgaW50ICpjYXAsIGludCBhbGxvY190cmltLCBpbnQgKmludGVuc2l0
eSwgaW50ICpkdWFsX3N0ZXJlbywKICAgICAgIG9wdXNfaW50MzIgdG90YWwsIG9wdXNfaW50MzIg
KmJhbGFuY2UsIGludCAqcHVsc2VzLCBpbnQgKmViaXRzLCBpbnQgKmZpbmVfcHJpb3JpdHksIGlu
dCBDLCBpbnQgTE0sIGVjX2N0eCAqZWMsIGludCBlbmNvZGUsIGludCBwcmV2LCBpbnQgc2lnbmFs
QmFuZHdpZHRoKQogewogICAgaW50IGxvLCBoaSwgbGVuLCBqOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Jh
dGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvY2VsdC9yYXRlLmgKaW5kZXggNTE1Zjc2ODdjZWM2ZjZmMDY4YzNmY2RjNjc0NWYyNzUy
NzUxNGU2OS4uZmFkNWU0MTJkYWZhYzk3MTQ4MDJjM2ZkMGY5MmQ5NzQ2YTY2NDYxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L3JhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvcmF0ZS5oCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRp
YyBPUFVTX0lOTElORSBpbnQgcHVsc2VzMmJpdHMoY29uc3QgQ0VMVE1vZGUgKm0sIGludCBiYW5k
LCBpbnQgTE0sIGludCBwdWxzCiAgQHBhcmFtIHB1bHNlcyBOdW1iZXIgb2YgcHVsc2VzIHBlciBi
YW5kIChyZXR1cm5lZCkKICBAcmV0dXJuIFRvdGFsIG51bWJlciBvZiBiaXRzIGFsbG9jYXRlZAog
Ki8KLWludCBjb21wdXRlX2FsbG9jYXRpb24oY29uc3QgQ0VMVE1vZGUgKm0sIGludCBzdGFydCwg
aW50IGVuZCwgY29uc3QgaW50ICpvZmZzZXRzLCBjb25zdCBpbnQgKmNhcCwgaW50IGFsbG9jX3Ry
aW0sIGludCAqaW50ZW5zaXR5LCBpbnQgKmR1YWxfc3Rlcm8sCitpbnQgY2x0X2NvbXB1dGVfYWxs
b2NhdGlvbihjb25zdCBDRUxUTW9kZSAqbSwgaW50IHN0YXJ0LCBpbnQgZW5kLCBjb25zdCBpbnQg
Km9mZnNldHMsIGNvbnN0IGludCAqY2FwLCBpbnQgYWxsb2NfdHJpbSwgaW50ICppbnRlbnNpdHks
IGludCAqZHVhbF9zdGVyZW8sCiAgICAgICBvcHVzX2ludDMyIHRvdGFsLCBvcHVzX2ludDMyICpi
YWxhbmNlLCBpbnQgKnB1bHNlcywgaW50ICplYml0cywgaW50ICpmaW5lX3ByaW9yaXR5LCBpbnQg
QywgaW50IExNLCBlY19jdHggKmVjLCBpbnQgZW5jb2RlLCBpbnQgcHJldiwgaW50IHNpZ25hbEJh
bmR3aWR0aCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9lbnRy
b3B5LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X2VudHJvcHkuYwppbmRleCBmZjkyNjU4NjRjMTcy
M2M0YmZiNTdjZDg1NjM1YmM4MzY0YWJlOTgyLi43ZjY3NDUyOWRmZDYzYmZmMDYwNGUwMmI5NWE2
MTVjNGE4ZjRhNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X2VudHJvcHkuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X2VudHJvcHkuYwpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KKyNk
ZWZpbmUgQ0VMVF9DCiAjaW5jbHVkZSAiZW50Y29kZS5oIgogI2luY2x1ZGUgImVudGVuYy5oIgog
I2luY2x1ZGUgImVudGRlYy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rlc3RfdW5pdF9sYXBs
YWNlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X2xhcGxhY2UuYwppbmRleCAyMjk1MWUyOWVlZTIy
NDdmYjI5ZDA3ZmY1OTdjMjgyMjU2M2I0OWZlLi43MjdiZjAxMmVmZGZmOTAwMWU2NjFhYTM1ZmNk
MTRlMWYyNjY4ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X2xhcGxhY2UuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X2xhcGxhY2UuYwpAQCAtMzEsOCArMzEsOCBAQAogCiAj
aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlICJsYXBsYWNl
LmgiCiAjZGVmaW5lIENFTFRfQworI2luY2x1ZGUgImxhcGxhY2UuaCIKICNpbmNsdWRlICJzdGFj
a19hbGxvYy5oIgogCiAjaW5jbHVkZSAiZW50ZW5jLmMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdGVzdHMv
dGVzdF91bml0X3JvdGF0aW9uLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdGVzdHMvdGVzdF91bml0X3JvdGF0aW9uLmMKaW5k
ZXggMjY3Yjk4MzAxYWM4MzhjY2NjM2Y1ODJiNWIyMjkzM2E2NmQ2YzFlNy4uOGEzMWIzZjJiMWEw
ODhlODU5NzQ0ODNjYzA2MGVkMzk5NGU5MTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3Rlc3RzL3Rlc3Rf
dW5pdF9yb3RhdGlvbi5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC90ZXN0cy90ZXN0X3VuaXRfcm90YXRpb24uYwpAQCAt
MzMsOCArMzMsNiBAQAogI2RlZmluZSBDVVNUT01fTU9ERVMKICNlbmRpZgogCi0jZGVmaW5lIENF
TFRfQwotCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
ICJ2cS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3ZxLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdnEuYwppbmRleCA4ZWY4MGU1MDdm
MjYyZGFkNTVlNWViNmRiYmY1YWUyYjE0M2FkMTA3Li44MDExZTIyNTQ4YmRhODhiZjc0MTQ3OGY4
ZWVlODkwMGVjMzMzNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdnEuYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdnEuYwpAQCAt
MzksNiArMzksMTAgQEAKICNpbmNsdWRlICJyYXRlLmgiCiAjaW5jbHVkZSAicGl0Y2guaCIKIAor
I2lmIGRlZmluZWQoTUlQU3IxX0FTTSkKKyNpbmNsdWRlICJtaXBzL3ZxX21pcHNyMS5oIgorI2Vu
ZGlmCisKICNpZm5kZWYgT1ZFUlJJREVfdnFfZXhwX3JvdGF0aW9uMQogc3RhdGljIHZvaWQgZXhw
X3JvdGF0aW9uMShjZWx0X25vcm0gKlgsIGludCBsZW4sIGludCBzdHJpZGUsIG9wdXNfdmFsMTYg
Yywgb3B1c192YWwxNiBzKQogewpAQCAtMjMwLDEyICsyMzQsMTIgQEAgb3B1c192YWwxNiBvcF9w
dnFfc2VhcmNoX2MoY2VsdF9ub3JtICpYLCBpbnQgKml5LCBpbnQgSywgaW50IE4sIGludCBhcmNo
KQogICAgICAgICAgcHVsc2VzTGVmdCAtPSBpeVtqXTsKICAgICAgIH0gIHdoaWxlICgrK2o8Tik7
CiAgICB9Ci0gICBjZWx0X2Fzc2VydDIocHVsc2VzTGVmdD49MCwgIkFsbG9jYXRlZCB0b28gbWFu
eSBwdWxzZXMgaW4gdGhlIHF1aWNrIHBhc3MiKTsKKyAgIGNlbHRfc2lnX2Fzc2VydChwdWxzZXNM
ZWZ0Pj0wKTsKIAogICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQganVzdCBpbiBj
YXNlIGl0IGRvZXMgKGUuZy4gb24gc2lsZW5jZSkKICAgICAgIHdlIGZpbGwgdGhlIGZpcnN0IGJp
biB3aXRoIHB1bHNlcy4gKi8KICNpZmRlZiBGSVhFRF9QT0lOVF9ERUJVRwotICAgY2VsdF9hc3Nl
cnQyKHB1bHNlc0xlZnQ8PU4rMywgIk5vdCBlbm91Z2ggcHVsc2VzIGluIHRoZSBxdWljayBwYXNz
Iik7CisgICBjZWx0X3NpZ19hc3NlcnQocHVsc2VzTGVmdDw9TiszKTsKICNlbmRpZgogICAgaWYg
KHB1bHNlc0xlZnQgPiBOKzMpCiAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQvdnEuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC92cS5o
CmluZGV4IDBkZmU2YWYwNTgyMzk4NmNhZDI3ZjExZWFkNjAxMjUyYTMwNDg1NjMuLjQ1ZWM1NTkx
OGUzMjJjYWM5YWNmZGNjNWFjZTJhODA1ZTE4ODkwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC92cS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvY2VsdC92cS5oCkBAIC00MSwxMCArNDEsNiBAQAogI2luY2x1ZGUgIng4Ni92cV9zc2UuaCIK
ICNlbmRpZgogCi0jaWYgZGVmaW5lZChNSVBTcjFfQVNNKQotI2luY2x1ZGUgIm1pcHMvdnFfbWlw
c3IxLmgiCi0jZW5kaWYKLQogdm9pZCBleHBfcm90YXRpb24oY2VsdF9ub3JtICpYLCBpbnQgbGVu
LCBpbnQgZGlyLCBpbnQgc3RyaWRlLCBpbnQgSywgaW50IHNwcmVhZCk7CiAKIG9wdXNfdmFsMTYg
b3BfcHZxX3NlYXJjaF9jKGNlbHRfbm9ybSAqWCwgaW50ICppeSwgaW50IEssIGludCBOLCBpbnQg
YXJjaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L2NlbHRfbHBjX3NzZS5jIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3g4Ni9jZWx0
X2xwY19zc2UuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ3ODU2ODg0OWFhNDJl
YTc4ZGI2ZGIyNjgyYWJmN2VkMTUwZmZhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L2NlbHRfbHBjX3NzZS5jCisrKyAvZGV2L251bGwKQEAg
LTEsODkgKzAsMCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDE0LCBDaXNjbyBTeXN0ZW1zLCBJTkMK
LSAgIFdyaXR0ZW4gYnkgWGlhbmdNaW5nWmh1IFdlaVpob3UgTWluUGVuZyBZYW5XYW5nCi0KLSAg
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAtIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0KLSAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSAg
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIKLSAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICAgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GCi0gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotICAgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gICBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYK
LQotI2luY2x1ZGUgPHhtbWludHJpbi5oPgotI2luY2x1ZGUgPGVtbWludHJpbi5oPgotI2luY2x1
ZGUgPHNtbWludHJpbi5oPgotI2luY2x1ZGUgImNlbHRfbHBjLmgiCi0jaW5jbHVkZSAic3RhY2tf
YWxsb2MuaCIKLSNpbmNsdWRlICJtYXRob3BzLmgiCi0jaW5jbHVkZSAicGl0Y2guaCIKLSNpbmNs
dWRlICJ4ODZjcHUuaCIKLQotI2lmIGRlZmluZWQoRklYRURfUE9JTlQpCi0KLXZvaWQgY2VsdF9m
aXJfc3NlNF8xKGNvbnN0IG9wdXNfdmFsMTYgKngsCi0gICAgICAgICBjb25zdCBvcHVzX3ZhbDE2
ICpudW0sCi0gICAgICAgICBvcHVzX3ZhbDE2ICp5LAotICAgICAgICAgaW50IE4sCi0gICAgICAg
ICBpbnQgb3JkLAotICAgICAgICAgaW50IGFyY2gpCi17Ci0gICAgaW50IGksajsKLSAgICBWQVJE
RUNMKG9wdXNfdmFsMTYsIHJudW0pOwotCi0gICAgX19tMTI4aSB2ZWNOb0E7Ci0gICAgb3B1c19p
bnQzMiBub0EgOwotICAgIFNBVkVfU1RBQ0s7Ci0KLSAgIEFMTE9DKHJudW0sIG9yZCwgb3B1c192
YWwxNik7Ci0gICBmb3IoaT0wO2k8b3JkO2krKykKLSAgICAgIHJudW1baV0gPSBudW1bb3JkLWkt
MV07Ci0gICBub0EgPSBFWFRFTkQzMigxKSA8PCBTSUdfU0hJRlQgPj4gMTsKLSAgIHZlY05vQSA9
IF9tbV9zZXRfZXBpMzIobm9BLCBub0EsIG5vQSwgbm9BKTsKLQotICAgZm9yIChpPTA7aTxOLTM7
aSs9NCkKLSAgIHsKLSAgICAgIG9wdXNfdmFsMzIgc3Vtc1s0XSA9IHswfTsKLSAgICAgIF9fbTEy
OGkgdmVjU3VtLCB2ZWNYOwotCi0gICAgICB4Y29ycl9rZXJuZWwocm51bSwgeCtpLW9yZCwgc3Vt
cywgb3JkLCBhcmNoKTsKLQotICAgICAgdmVjU3VtID0gX21tX2xvYWR1X3NpMTI4KChfX20xMjhp
ICopc3Vtcyk7Ci0gICAgICB2ZWNTdW0gPSBfbW1fYWRkX2VwaTMyKHZlY1N1bSwgdmVjTm9BKTsK
LSAgICAgIHZlY1N1bSA9IF9tbV9zcmFpX2VwaTMyKHZlY1N1bSwgU0lHX1NISUZUKTsKLSAgICAg
IHZlY1ggPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoeCArIGkpOwotICAgICAgdmVjU3VtID0gX21t
X2FkZF9lcGkzMih2ZWNTdW0sIHZlY1gpOwotICAgICAgdmVjU3VtID0gX21tX3BhY2tzX2VwaTMy
KHZlY1N1bSwgdmVjU3VtKTsKLSAgICAgIF9tbV9zdG9yZWxfZXBpNjQoKF9fbTEyOGkgKikoeSAr
IGkpLCB2ZWNTdW0pOwotICAgfQotICAgZm9yICg7aTxOO2krKykKLSAgIHsKLSAgICAgIG9wdXNf
dmFsMzIgc3VtID0gMDsKLSAgICAgIGZvciAoaj0wO2o8b3JkO2orKykKLSAgICAgICAgIHN1bSA9
IE1BQzE2XzE2KHN1bSwgcm51bVtqXSwgeFtpK2otb3JkXSk7Ci0gICAgICB5W2ldID0gU0FUVVJB
VEUxNihBREQzMihFWFRFTkQzMih4W2ldKSwgUFNIUjMyKHN1bSwgU0lHX1NISUZUKSkpOwotICAg
fQotCi0gICBSRVNUT1JFX1NUQUNLOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC94ODYv
Y2VsdF9scGNfc3NlNF8xLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L2NlbHRfbHBjX3NzZTRfMS5jCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU0Nzg1Njg4NDlhYTQyZWE3OGRiNmRiMjY4MmFiZjdlZDE1MGZmYTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL2NlbHQveDg2L2NlbHRfbHBjX3NzZTRfMS5jCkBAIC0wLDAgKzEsODkgQEAKKy8qIENvcHly
aWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5DCisgICBXcml0dGVuIGJ5IFhpYW5nTWlu
Z1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZworCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICAgYXJlIG1ldDoKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFTIElT
JycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICAg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcKKyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZkZWYgSEFWRV9DT05G
SUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDx4bW1pbnRyaW4u
aD4KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyNpbmNs
dWRlICJjZWx0X2xwYy5oIgorI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgiCisjaW5jbHVkZSAibWF0
aG9wcy5oIgorI2luY2x1ZGUgInBpdGNoLmgiCisjaW5jbHVkZSAieDg2Y3B1LmgiCisKKyNpZiBk
ZWZpbmVkKEZJWEVEX1BPSU5UKQorCit2b2lkIGNlbHRfZmlyX3NzZTRfMShjb25zdCBvcHVzX3Zh
bDE2ICp4LAorICAgICAgICAgY29uc3Qgb3B1c192YWwxNiAqbnVtLAorICAgICAgICAgb3B1c192
YWwxNiAqeSwKKyAgICAgICAgIGludCBOLAorICAgICAgICAgaW50IG9yZCwKKyAgICAgICAgIGlu
dCBhcmNoKQoreworICAgIGludCBpLGo7CisgICAgVkFSREVDTChvcHVzX3ZhbDE2LCBybnVtKTsK
KworICAgIF9fbTEyOGkgdmVjTm9BOworICAgIG9wdXNfaW50MzIgbm9BIDsKKyAgICBTQVZFX1NU
QUNLOworCisgICBBTExPQyhybnVtLCBvcmQsIG9wdXNfdmFsMTYpOworICAgZm9yKGk9MDtpPG9y
ZDtpKyspCisgICAgICBybnVtW2ldID0gbnVtW29yZC1pLTFdOworICAgbm9BID0gRVhURU5EMzIo
MSkgPDwgU0lHX1NISUZUID4+IDE7CisgICB2ZWNOb0EgPSBfbW1fc2V0X2VwaTMyKG5vQSwgbm9B
LCBub0EsIG5vQSk7CisKKyAgIGZvciAoaT0wO2k8Ti0zO2krPTQpCisgICB7CisgICAgICBvcHVz
X3ZhbDMyIHN1bXNbNF0gPSB7MH07CisgICAgICBfX20xMjhpIHZlY1N1bSwgdmVjWDsKKworICAg
ICAgeGNvcnJfa2VybmVsKHJudW0sIHgraS1vcmQsIHN1bXMsIG9yZCwgYXJjaCk7CisKKyAgICAg
IHZlY1N1bSA9IF9tbV9sb2FkdV9zaTEyOCgoX19tMTI4aSAqKXN1bXMpOworICAgICAgdmVjU3Vt
ID0gX21tX2FkZF9lcGkzMih2ZWNTdW0sIHZlY05vQSk7CisgICAgICB2ZWNTdW0gPSBfbW1fc3Jh
aV9lcGkzMih2ZWNTdW0sIFNJR19TSElGVCk7CisgICAgICB2ZWNYID0gT1BfQ1ZURVBJMTZfRVBJ
MzJfTTY0KHggKyBpKTsKKyAgICAgIHZlY1N1bSA9IF9tbV9hZGRfZXBpMzIodmVjU3VtLCB2ZWNY
KTsKKyAgICAgIHZlY1N1bSA9IF9tbV9wYWNrc19lcGkzMih2ZWNTdW0sIHZlY1N1bSk7CisgICAg
ICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpICopKHkgKyBpKSwgdmVjU3VtKTsKKyAgIH0KKyAg
IGZvciAoO2k8TjtpKyspCisgICB7CisgICAgICBvcHVzX3ZhbDMyIHN1bSA9IDA7CisgICAgICBm
b3IgKGo9MDtqPG9yZDtqKyspCisgICAgICAgICBzdW0gPSBNQUMxNl8xNihzdW0sIHJudW1bal0s
IHhbaStqLW9yZF0pOworICAgICAgeVtpXSA9IFNBVFVSQVRFMTYoQUREMzIoRVhURU5EMzIoeFtp
XSksIFBTSFIzMihzdW0sIFNJR19TSElGVCkpKTsKKyAgIH0KKworICAgUkVTVE9SRV9TVEFDSzsK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQveDg2L3ZxX3NzZTIuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC94ODYvdnFf
c3NlMi5jCmluZGV4IDZhMzE3NzAzNThiN2Q0MTY0NzFlMTU3NmRkODUyYzhiMjA4NzhiZTcuLjc3
NTA0Mjg2MGQ0M2MzMWNiNzZhOWY0ODM5ZDEwMDhiY2JlNzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC94
ODYvdnFfc3NlMi5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvY2VsdC94ODYvdnFfc3NlMi5jCkBAIC0xMzUsNyArMTM1LDcgQEAg
b3B1c192YWwxNiBvcF9wdnFfc2VhcmNoX3NzZTIoY2VsdF9ub3JtICpfWCwgaW50ICppeSwgaW50
IEssIGludCBOLCBpbnQgYXJjaCkKICAgIH0KICAgIFhbTl0gPSBYW04rMV0gPSBYW04rMl0gPSAt
MTAwOwogICAgeVtOXSA9IHlbTisxXSA9IHlbTisyXSA9IDEwMDsKLSAgIGNlbHRfYXNzZXJ0Mihw
dWxzZXNMZWZ0Pj0wLCAiQWxsb2NhdGVkIHRvbyBtYW55IHB1bHNlcyBpbiB0aGUgcXVpY2sgcGFz
cyIpOworICAgY2VsdF9zaWdfYXNzZXJ0KHB1bHNlc0xlZnQ+PTApOwogCiAgICAvKiBUaGlzIHNo
b3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UgaXQgZG9lcyAoZS5nLiBvbiBzaWxl
bmNlKQogICAgICAgd2UgZmlsbCB0aGUgZmlyc3QgYmluIHdpdGggcHVsc2VzLiAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9jZWx0L3g4Ni94ODZjcHUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdC94ODYveDg2Y3B1LmgKaW5kZXggMDRmZDQ4YWFj
NGJmNGQ2YTNlZTEzYTdhOWJlMmZiMDY5OTdhODU3My4uMWUyYmYxN2I5Yjg0ZWVmMjRjYTk3ZDk5
YTRhNmMzYTM2YjA5M2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jZWx0L3g4Ni94ODZjcHUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NlbHQv
eDg2L3g4NmNwdS5oCkBAIC04Miw3ICs4Miw5IEBAIGludCBvcHVzX3NlbGVjdF9hcmNoKHZvaWQp
OwogIChfbW1fY3Z0ZXBpOF9lcGkzMigqKF9fbTEyOGkgKikoeCkpKQogI2VuZGlmCiAKLSMgaWYg
IWRlZmluZWQoX19PUFRJTUlaRV9fKQorLyogc2ltaWxhciByZWFzb25pbmcgYWJvdXQgdGhlIGlu
c3RydWN0aW9uIHNlcXVlbmNlIGFzIGluIHRoZSAzMi1iaXQgbWFjcm8gYWJvdmUsCisgKi8KKyMg
aWYgZGVmaW5lZChfX2NsYW5nX18pIHx8ICFkZWZpbmVkKF9fT1BUSU1JWkVfXykKICMgIGRlZmlu
ZSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoeCkgXAogIChfbW1fY3Z0ZXBpMTZfZXBpMzIoX21tX2xv
YWRsX2VwaTY0KChfX20xMjhpICopKHgpKSkpCiAjIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY29uZmlnLmgu
Y21ha2UuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL2NvbmZpZy5oLmNtYWtlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NTA4NDJjNWUxYzE0MTc5
NDdiOWNmNjQwNDg1MGI2Zjk5M2IwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2NvbmZpZy5oLmNtYWtl
LmluCkBAIC0wLDAgKzEgQEAKKyNjbWFrZWRlZmluZSBQQUNLQUdFX1ZFUlNJT04gIkBQQUNLQUdF
X1ZFUlNJT05AIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY29uZmln
dXJlLmFjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jb25maWd1cmUuYWMKaW5kZXggNWZmYTJkMzhlNzBjZTY1YzM5MGQ5MDIwYjQxMTM0
YjlmNTdkMjA5Mi4uMThlY2UyOTEzMjU1OWIxZjAyM2ViN2ZiMmU1MzE1OThiNGFjZTdiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9jb25maWd1cmUuYWMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9jb25maWd1cmUuYWMKQEAgLTIyLDkgKzIyLDkgQEAg
bTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKIAog
IyBGb3IgbGlidG9vbC4KIGRubCBQbGVhc2UgdXBkYXRlIHRoZXNlIGZvciByZWxlYXNlcy4KLU9Q
VVNfTFRfQ1VSUkVOVD02Ci1PUFVTX0xUX1JFVklTSU9OPTEKLU9QVVNfTFRfQUdFPTYKK09QVVNf
TFRfQ1VSUkVOVD04CitPUFVTX0xUX1JFVklTSU9OPTAKK09QVVNfTFRfQUdFPTgKIAogQUNfU1VC
U1QoT1BVU19MVF9DVVJSRU5UKQogQUNfU1VCU1QoT1BVU19MVF9SRVZJU0lPTikKQEAgLTQxNCw3
ICs0MTQsNyBAQCBBQ19ERUZVTihbT1BVU19QQVRIX05FMTBdLAogICAgICAgICAgTkUxMF9DRkxB
R1M9Ii1JJE5FMTBfaW5jbHVkZXMiCiAgICAgICBlbGlmIHRlc3QgIngkTkUxMF9wcmVmaXgiID0g
InhubyIgfHwgdGVzdCAieCRORTEwX3ByZWZpeCIgPSAieHllcyIgOyB0aGVuCiAgICAgICAgICBO
RTEwX0NGTEFHUz0iIgotICAgICAgZWxpZiB0ZXN0ICJ4JG9nZ19wcmVmaXgiICE9ICJ4IiA7IHRo
ZW4KKyAgICAgIGVsaWYgdGVzdCAieCRORTEwX3ByZWZpeCIgIT0gIngiIDsgdGhlbgogICAgICAg
ICAgTkUxMF9DRkxBR1M9Ii1JJE5FMTBfcHJlZml4L2luY2x1ZGUiCiAgICAgICBlbGlmIHRlc3Qg
IngkcHJlZml4IiAhPSAieE5PTkUiOyB0aGVuCiAgICAgICAgICBORTEwX0NGTEFHUz0iLUkkcHJl
Zml4L2luY2x1ZGUiCkBAIC03NTksOCArNzU5LDE2IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2Fz
c2VydGlvbnMiID0gInllcyJdLCBbCiAgIEFDX0RFRklORShbRU5BQkxFX0FTU0VSVElPTlNdLCBb
MV0sIFtBc3NlcnRpb25zXSkKIF0pCiAKK0FDX0FSR19FTkFCTEUoW2hhcmRlbmluZ10sCisgICAg
W0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtaGFyZGVuaW5nXSxbZGlzYWJsZSBydW4tdGltZSBj
aGVja3MgdGhhdCBhcmUgY2hlYXAgYW5kIHNhZmUgZm9yIHVzZSBpbiBwcm9kdWN0aW9uXSldLCwK
KyAgICBbZW5hYmxlX2hhcmRlbmluZz15ZXNdKQorCitBU19JRihbdGVzdCAiJGVuYWJsZV9oYXJk
ZW5pbmciID0gInllcyJdLCBbCisgIEFDX0RFRklORShbRU5BQkxFX0hBUkRFTklOR10sIFsxXSwg
W0hhcmRlbmluZ10pCitdKQorCiBBQ19BUkdfRU5BQkxFKFtmdXp6aW5nXSwKLSAgICBbQVNfSEVM
UF9TVFJJTkcoWy0tZW5hYmxlLWZ1enppbmddLFtjYXVzZXMgdGhlIGVuY29kZXIgdG8gbWFrZSBy
YW5kb20gZGVjaXNpb25zXSldLCwKKwkgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWZ1
enppbmddLFtjYXVzZXMgdGhlIGVuY29kZXIgdG8gbWFrZSByYW5kb20gZGVjaXNpb25zIChkbyBu
b3QgdXNlIGluIHByb2R1Y3Rpb24pXSldLCwKICAgICBbZW5hYmxlX2Z1enppbmc9bm9dKQogCiBB
U19JRihbdGVzdCAiJGVuYWJsZV9mdXp6aW5nIiA9ICJ5ZXMiXSwgWwpAQCAtNzc2LDE0ICs3ODQs
NiBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9jaGVja19hc20iID0gInllcyJdLCBbCiAgIEFDX0RF
RklORShbT1BVU19DSEVDS19BU01dLCBbMV0sIFtSdW4gYml0LWV4YWN0bmVzcyBjaGVja3MgYmV0
d2VlbiBvcHRpbWl6ZWQgYW5kIGMgaW1wbGVtZW50YXRpb25zXSkKIF0pCiAKLUFDX0FSR19FTkFC
TEUoW2FtYmlzb25pY3NdLAotICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtYW1iaXNvbmlj
c10sW2VuYWJsZSBleHBlcmltZW50YWwgYW1iaXNvbmljIGVuY29kaW5nIGFuZCBkZWNvZGluZyBz
dXBwb3J0XSldLCwKLSAgICBbZW5hYmxlX2FtYmlzb25pY3M9bm9dKQotCi1BU19JRihbdGVzdCAi
JGVuYWJsZV9hbWJpc29uaWNzIiA9ICJ5ZXMiXSwgWwotICBBQ19ERUZJTkUoW0VOQUJMRV9FWFBF
UklNRU5UQUxfQU1CSVNPTklDU10sIFsxXSwgW0FtYmlzb25pY3MgU3VwcG9ydF0pCi1dKQotCiBB
Q19BUkdfRU5BQkxFKFtkb2NdLAogICAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWRvY10s
IFtEbyBub3QgYnVpbGQgQVBJIGRvY3VtZW50YXRpb25dKV0sLAogICAgIFtlbmFibGVfZG9jPXll
c10pCkBAIC04MDQsMTIgKzgwNCwxMiBAQCBBQ19BUkdfRU5BQkxFKFtleHRyYS1wcm9ncmFtc10s
CiBBTV9DT05ESVRJT05BTChbRVhUUkFfUFJPR1JBTVNdLCBbdGVzdCAiJGVuYWJsZV9leHRyYV9w
cm9ncmFtcyIgPSAieWVzIl0pCiAKIAotQUNfQVJHX0VOQUJMRShbdXBkYXRlLWRyYWZ0XSwKLSAg
QVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVwZGF0ZS1kcmFmdF0sIFtFbmFibGUgYml0c3RyZWFt
IGNoYW5nZXMgZnJvbSBkcmFmdC1pZXRmLWNvZGVjLW9wdXMtdXBkYXRlXSksLAotICBbZW5hYmxl
X3VwZGF0ZV9kcmFmdD1ub10pCitBQ19BUkdfRU5BQkxFKFtyZmM4MjUxXSwKKwkgICAgICBBU19I
RUxQX1NUUklORyhbLS1kaXNhYmxlLXJmYzgyNTFdLCBbRGlzYWJsZSBiaXRzdHJlYW0gZml4ZXMg
ZnJvbSBSRkMgODI1MV0pLCwKKyAgW2VuYWJsZV9yZmM4MjUxPXllc10pCiAKLUFTX0lGKFt0ZXN0
ICIkZW5hYmxlX3VwZGF0ZV9kcmFmdCIgPSAieWVzIl0sIFsKLSAgQUNfREVGSU5FKFtFTkFCTEVf
VVBEQVRFX0RSQUZUXSwgWzFdLCBbRW5hYmxlIGJpdHN0cmVhbSBjaGFuZ2VzIGZyb20gZHJhZnQt
aWV0Zi1jb2RlYy1vcHVzLXVwZGF0ZV0pCitBU19JRihbdGVzdCAiJGVuYWJsZV9yZmM4MjUxIiA9
ICJubyJdLCBbCisgICAgICAgQUNfREVGSU5FKFtESVNBQkxFX1VQREFURV9EUkFGVF0sIFsxXSwg
W0Rpc2FibGUgYml0c3RyZWFtIGZpeGVzIGZyb20gUkZDIDgyNTFdKQogXSkKIAogCkBAIC04MjIs
NiArODIyLDQ4IEBAIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW2NoYXIgZm9v
O11dKV0sCiAgICAgICBDRkxBR1M9IiRzYXZlZF9DRkxBR1MiCiAgICAgXSkKIAorb25feDg2PW5v
CitjYXNlICIkaG9zdF9jcHUiIGluCitpW1szNDU2XV04NiB8IHg4Nl82NCkKKyAgb25feDg2PXll
cworICA7OworZXNhYworCitvbl93aW5kb3dzPW5vCitjYXNlICRob3N0IGluCisqY3lnd2luKnwq
bWluZ3cqKQorICBvbl93aW5kb3dzPXllcworICA7OworZXNhYworCitkbmwgRW5hYmxlIHN0YWNr
LXByb3RlY3Rvci1hbGwgb25seSBvbiB4ODYgd2hlcmUgaXQncyB3ZWxsIHN1cHBvcnRlZC4KK2Ru
bCBvbiBzb21lIHBsYXRmb3JtcyBpdCBjYXVzZXMgY3Jhc2hlcy4gSG9wZWZ1bGx5IHRoZSBPUydz
IGRlZmF1bHQncworZG5sIGluY2x1ZGUgdGhpcyBvbiBwbGF0Zm9ybXMgdGhhdCB3b3JrIGJ1dCBo
YXZlIGJlZW4gbWlzc2VkIGhlcmUuCitBQ19BUkdfRU5BQkxFKFtzdGFjay1wcm90ZWN0b3JdLAor
ICAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXN0YWNrLXByb3RlY3Rvcl0sW0Rpc2FibGUg
Y29tcGlsZXIgc3RhY2sgaGFyZGVuaW5nXSldLCwKKyAgICBbCisgICAgICBBU19JRihbdGVzdCAi
JGFjX2N2X2NfY29tcGlsZXJfZ251IiA9ICJ5ZXMiICYmIHRlc3QgIiRvbl94ODYiID0gInllcyIg
JiYgdGVzdCAiJG9uX3dpbmRvd3MiID0gIm5vIl0sCisgICAgICAgICAgICBbZW5hYmxlX3N0YWNr
X3Byb3RlY3Rvcj15ZXNdLFtlbmFibGVfc3RhY2tfcHJvdGVjdG9yPW5vXSkKKyAgICBdKQorCitB
U19JRihbdGVzdCAiJGVuYWJsZV9zdGFja19wcm90ZWN0b3IiID0gInllcyJdLAorIFsKKyAgc2F2
ZWRfQ0ZMQUdTPSIkQ0ZMQUdTIgorICBDRkxBR1M9IiRDRkxBR1MgLWZzdGFjay1wcm90ZWN0b3It
c3Ryb25nIgorICBBQ19NU0dfQ0hFQ0tJTkcoW2lmICR7Q0N9IHN1cHBvcnRzIC1mc3RhY2stcHJv
dGVjdG9yLXN0cm9uZ10pCisgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW1tj
aGFyIGZvbztdXSldLAorICAgIFsgQUNfTVNHX1JFU1VMVChbeWVzXSkgXSwKKyAgICBbCisgICAg
ICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgICBlbmFibGVfc3RhY2tfcHJvdGVjdG9yPW5vCisg
ICAgICBDRkxBR1M9IiRzYXZlZF9DRkxBR1MiCisgICAgXSkKKyBdKQorCitBU19JRihbdGVzdCB4
JGFjX2N2X2NfY29tcGlsZXJfZ251ID0geHllc10sCisgICAgW0FYX0FERF9GT1JUSUZZX1NPVVJD
RV0KKykKKwogQ0ZMQUdTPSIkQ0ZMQUdTIC1XIgogCiB3YXJuX0NGTEFHUz0iLVdhbGwgLVdleHRy
YSAtV2Nhc3QtYWxpZ24gLVduZXN0ZWQtZXh0ZXJucyAtV3NoYWRvdyAtV3N0cmljdC1wcm90b3R5
cGVzIgpAQCAtODczLDEzICs5MTUsMTMgQEAgQUNfTVNHX05PVElDRShbCiAgICAgICBGaXhlZCBw
b2ludCBkZWJ1Z2dpbmc6IC4uLi4uLi4uLiAke2VuYWJsZV9maXhlZF9wb2ludF9kZWJ1Z30KICAg
ICAgIElubGluZSBBc3NlbWJseSBPcHRpbWl6YXRpb25zOiAuICR7aW5saW5lX29wdGltaXphdGlv
bn0KICAgICAgIEV4dGVybmFsIEFzc2VtYmx5IE9wdGltaXphdGlvbnM6ICR7YXNtX29wdGltaXph
dGlvbn0KLSAgICAgIEludHJpbnNpY3MgT3B0aW1pemF0aW9ucy4uLi4uLi46ICR7aW50cmluc2lj
c19zdXBwb3J0fQorICAgICAgSW50cmluc2ljcyBPcHRpbWl6YXRpb25zOiAuLi4uLi4gJHtpbnRy
aW5zaWNzX3N1cHBvcnR9CiAgICAgICBSdW4tdGltZSBDUFUgZGV0ZWN0aW9uOiAuLi4uLi4uLiAk
e3J0Y2Rfc3VwcG9ydH0KICAgICAgIEN1c3RvbSBtb2RlczogLi4uLi4uLi4uLi4uLi4uLi4uICR7
ZW5hYmxlX2N1c3RvbV9tb2Rlc30KICAgICAgIEFzc2VydGlvbiBjaGVja2luZzogLi4uLi4uLi4u
Li4uICR7ZW5hYmxlX2Fzc2VydGlvbnN9CisgICAgICBIYXJkZW5pbmc6IC4uLi4uLi4uLi4uLi4u
Li4uLi4uLiAke2VuYWJsZV9oYXJkZW5pbmd9CiAgICAgICBGdXp6aW5nOiAuLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLiAke2VuYWJsZV9mdXp6aW5nfQogICAgICAgQ2hlY2sgQVNNOiAuLi4uLi4uLi4u
Li4uLi4uLi4uLi4gJHtlbmFibGVfY2hlY2tfYXNtfQotICAgICAgQW1iaXNvbmljcyBzdXBwb3J0
OiAuLi4uLi4uLi4uLi4gJHtlbmFibGVfYW1iaXNvbmljc30KIAogICAgICAgQVBJIGRvY3VtZW50
YXRpb246IC4uLi4uLi4uLi4uLi4gJHtlbmFibGVfZG9jfQogICAgICAgRXh0cmEgcHJvZ3JhbXM6
IC4uLi4uLi4uLi4uLi4uLi4gJHtlbmFibGVfZXh0cmFfcHJvZ3JhbXN9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2Rv
Yy9kcmFmdC1pZXRmLWNvZGVjLW9wdXMtdXBkYXRlLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvZG9jL2RyYWZ0LWlldGYtY29kZWMt
b3B1cy11cGRhdGUueG1sCmluZGV4IDZlNTJhMTY2OGQ5MDU5NzgxNWZjYTdhOWRiZWYzOGI4ODk2
YzUzNjIuLjMxMjRlMjJjMDgwNmFlMjEzMjA1NDI3ZTE3YjVhMGU5NTY0MjRiMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvZG9jL2RyYWZ0LWlldGYtY29kZWMtb3B1cy11cGRhdGUueG1sCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvZG9jL2RyYWZ0LWll
dGYtY29kZWMtb3B1cy11cGRhdGUueG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8P3JmYyBpbmxpbmU9
InllcyI/PgogPD9yZmMgY29tcGFjdD0ieWVzIj8+CiA8P3JmYyBzdWJjb21wYWN0PSJubyI/Pgot
PHJmYyBjYXRlZ29yeT0ic3RkIiBkb2NOYW1lPSJkcmFmdC1pZXRmLWNvZGVjLW9wdXMtdXBkYXRl
LTA4IgorPHJmYyBjYXRlZ29yeT0ic3RkIiBkb2NOYW1lPSJkcmFmdC1pZXRmLWNvZGVjLW9wdXMt
dXBkYXRlLTEwIgogICAgICBpcHI9InRydXN0MjAwOTAyIiB1cGRhdGVzPSI2NzE2Ij4KICAgPGZy
b250PgogICAgIDx0aXRsZSBhYmJyZXY9Ik9wdXMgVXBkYXRlIj5VcGRhdGVzIHRvIHRoZSBPcHVz
IEF1ZGlvIENvZGVjPC90aXRsZT4KQEAgLTQ3LDExICs0NywxMyBAQAogCiAKIAotICAgIDxkYXRl
IGRheT0iMjYiIG1vbnRoPSJKdWx5IiB5ZWFyPSIyMDE3IiAvPgorICAgIDxkYXRlIGRheT0iMjQi
IG1vbnRoPSJBdWd1c3QiIHllYXI9IjIwMTciIC8+CiAKICAgICA8YWJzdHJhY3Q+CiAgICAgICA8
dD5UaGlzIGRvY3VtZW50IGFkZHJlc3NlcyBtaW5vciBpc3N1ZXMgdGhhdCB3ZXJlIGZvdW5kIGlu
IHRoZSBzcGVjaWZpY2F0aW9uCi0gICAgICBvZiB0aGUgT3B1cyBhdWRpbyBjb2RlYyBpbiBSRkMg
NjcxNi48L3Q+CisgICAgICBvZiB0aGUgT3B1cyBhdWRpbyBjb2RlYyBpbiBSRkMgNjcxNi4gSXQg
dXBkYXRlcyB0aGUgbm9ybWF0aXZlIGRlY29kZXIgaW1wbGVtZW50YXRpb24KKyAgICAgIGluY2x1
ZGVkIGluIHRoZSBhcHBlbmRpeCBvZiBSRkMgNjcxNi4gVGhlIGNoYW5nZXMgZml4ZXMgcmVhbCBh
bmQgcG90ZW50aWFsIHNlY3VyaXR5LXJlbGF0ZWQKKyAgICAgIGlzc3VlcywgYXMgd2VsbCBtaW5v
ciBxdWFsaXR5LXJlbGF0ZWQgaXNzdWVzLjwvdD4KICAgICA8L2Fic3RyYWN0PgogICA8L2Zyb250
PgogCkBAIC03OSw3ICs4MSw3IEBACiAgICAgb2YgdGhlIGZvbGxvd2luZyBsaW5lIGFyZSBub3Qg
cGFydCBvZiB0aGUgcGF0Y2guIEEgcHJvcGVybHkgZm9ybWF0dGVkIHBhdGNoCiAgICAgaW5jbHVk
aW5nIGFsbCBjaGFuZ2VzIGlzIGF2YWlsYWJsZSBhdAogICAgIDxlcmVmIHRhcmdldD0iaHR0cHM6
Ly93d3cuaWV0Zi5vcmcvcHJvY2VlZGluZ3MvOTgvc2xpZGVzL21hdGVyaWFscy05OC1jb2RlYy1v
cHVzLXVwZGF0ZS0wMC5wYXRjaCIvPgotICAgIGFuZCBoYXMgYSBTSEExIDAyOWUzYWE4OGZjMzQy
YzkxZTY3YTIxZTdiZmJjOTQ1ODY2MWNkNWYuCisgICAgYW5kIGhhcyBhIFNIQS0xIGhhc2ggb2Yg
MDI5ZTNhYTg4ZmMzNDJjOTFlNjdhMjFlN2JmYmM5NDU4NjYxY2Q1Zi4KICAgICA8L3Q+CiAKICAg
ICA8L3NlY3Rpb24+CkBAIC0xMjMsOCArMTI1LDkgQEAKICAgICAgIDx0Pkl0IHdhcyBkaXNjb3Zl
cmVkIHRoYXQgc29tZSBpbnZhbGlkIHBhY2tldHMgb2YgdmVyeSBsYXJnZSBzaXplIGNvdWxkIHRy
aWdnZXIKICAgICAgIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgT3B1cyBwYWNrZXQgcGFy
c2luZyBjb2RlIHJlc3BvbnNpYmxlIGZvciBwYWRkaW5nLgogICAgICAgVGhpcyBpcyBkdWUgdG8g
YW4gaW50ZWdlciBvdmVyZmxvdyBpZiB0aGUgc2lnbmFsZWQgcGFkZGluZyBleGNlZWRzIDJeMzEt
MSBieXRlcwotICAgICAgKHRoZSBhY3R1YWwgcGFja2V0IG1heSBiZSBzbWFsbGVyKS4gVGhlIGNv
ZGUgY2FuIGJlIGZpeGVkIGJ5IGFwcGx5aW5nIHRoZSBmb2xsb3dpbmcKLSAgICAgIGNoYW5nZXMg
YXQgbGluZSA1OTYgb2Ygc3JjL29wdXNfZGVjb2Rlci5jOgorICAgICAgKHRoZSBhY3R1YWwgcGFj
a2V0IG1heSBiZSBzbWFsbGVyKS4gVGhlIGNvZGUgY2FuIGJlIGZpeGVkIGJ5IGRlY3JlbWVudGlu
ZyB0aGUKKyAgICAgIChzaWduZWQpIGxlbiB2YWx1ZSwgaW5zdGVhZCBvZiBpbmNyZW1lbnRpbmcg
YSBzZXBhcmF0ZSBwYWRkaW5nIGNvdW50ZXIuCisgICAgICBUaGlzIGlzIGRvbmUgYnkgYXBwbHlp
bmcgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIGF0IGxpbmUgNTk2IG9mIHNyYy9vcHVzX2RlY29kZXIu
YzoKICAgICA8L3Q+CiA8ZmlndXJlPgogPGFydHdvcms+PCFbQ0RBVEFbCkBAIC0xNjIsNyArMTY1
LDcgQEAKICAgICA8dD5UaGUgY2FsbHMgdG8gbWVtY3B5KCkgd2VyZSB1c2luZyBzaXplb2Yob3B1
c19pbnQzMiksIGJ1dCB0aGUgdHlwZSBvZiB0aGUKICAgICAgICAgbG9jYWwgYnVmZmVyIHdhcyBv
cHVzX2ludDE2LjwvdD4KICAgICA8dD5CZWNhdXNlIHRoZSBzaXplIHdhcyB3cm9uZywgdGhpcyBw
b3RlbnRpYWxseSBhbGxvd2VkIHRoZSBzb3VyY2UKLSAgICAgICAgYW5kIGRlc3RpbmF0aW9uIHJl
Z2lvbnMgb2YgdGhlIG1lbWNweSgpIHRvIG92ZXJsYXAuCisgICAgICAgIGFuZCBkZXN0aW5hdGlv
biByZWdpb25zIG9mIHRoZSBtZW1jcHkoKSB0byBvdmVybGFwIG9uIHRoZSBjb3B5IGZyb20gImJ1
ZiIgdG8gImJ1ZiIuCiAgICAgICAgICAgV2UgYmVsaWV2ZSB0aGF0IG5TYW1wbGVzSW4gKG51bWJl
ciBvZiBpbnB1dCBzYW1wbGVzKSBpcyBhdCBsZWFzdCBmc19pbl9raFogKHNhbXBsaW5nIHJhdGUg
aW4ga0h6KSwKICAgICAgICAgICB3aGljaCBpcyBhdCBsZWFzdCA4LgogICAgICAgIFNpbmNlIFJF
U0FNUExFUl9PUkRFUl9GSVJfMTIgaXMgb25seSA4LCB0aGF0IHNob3VsZCBub3QgYmUgYSBwcm9i
bGVtIG9uY2UKQEAgLTE3MSwxMiArMTc0LDYgQEAKICAgICAgICAgZGF0YSBzdG9yZWQgaW4gaXQg
d2FzIGFjdHVhbGx5IHR3aWNlIHRoZSBpbnB1dCBiYXRjaCBzaXplCiAgICAgICAgIChuU2FtcGxl
c0luJmx0OyZsdDsxKS48L3Q+CiAgICAgICA8L2xpc3Q+PC90PgotICAgICAgPHQ+Ci0gICAgICBU
aGUgZmFjdCB0aGF0IHRoZSBjb2RlIG5ldmVyIHByb2R1Y2VkIGFueSBlcnJvciBpbiB0ZXN0aW5n
IChpbmNsdWRpbmcgd2hlbiBydW4gdW5kZXIgdGhlCi0gICAgICBWYWxncmluZCBtZW1vcnkgZGVi
dWdnZXIpLCBzdWdnZXN0cyB0aGF0IGluIHByYWN0aWNlCi0gICAgIHRoZSBiYXRjaCBzaXplcyBh
cmUgcmVhc29uYWJsZSBlbm91Z2ggdGhhdCBub25lIG9mIHRoZSBpc3N1ZXMgYWJvdmUKLSAgICAg
d2FzIGV2ZXIgYSBwcm9ibGVtLiBIb3dldmVyLCB0aGUgYXV0aG9ycyBrbm93IG9mIG5vIG9idmlv
dXMgYXBwcm9hY2ggdG8gcHJvdmluZyB0aGF0LgotICAgIDwvdD4KICAgICA8dD5UaGUgY29kZSBj
YW4gYmUgZml4ZWQgYnkgYXBwbHlpbmcgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHRvIGxpbmUgNzgg
b2Ygc2lsay9yZXNhbXBsZXJfcHJpdmF0ZV9JSVJfRklSLmM6CiAgICAgPC90PgogPGZpZ3VyZT4K
QEAgLTI0Myw4ICsyNDAsOCBAQCBSRVNBTVBMRVJfT1JERVJfRklSXzEyICogc2l6ZW9mKCBvcHVz
X2ludDE2ICkgKTsKICAgICAgIDx0PgogICAgICAgICBJdCB3YXMgZGlzY292ZXJlZCB0aHJvdWdo
IGRlY29kZXIgZnV6emluZyB0aGF0IHNvbWUgYml0c3RyZWFtcyBjb3VsZCBwcm9kdWNlCiAgICAg
ICAgIGludGVnZXIgdmFsdWVzIGV4Y2VlZGluZyAzMi1iaXRzIGluIExQQ19pbnZlcnNlX3ByZWRf
Z2Fpbl9RQSgpLCBjYXVzaW5nCi0gICAgICAgIGEgd3JhcC1hcm91bmQuIEFsdGhvdWdoIHRoZSBl
cnJvciBpcyBoYXJtbGVzcyBpbiBwcmFjdGljZSwgdGhlIEMgc3RhbmRhcmQgY29uc2lkZXJzCi0g
ICAgICAgIHRoZSBiZWhhdmlvciBhcyB1bmRlZmluZWQsIHNvIHRoZSBmb2xsb3dpbmcgcGF0Y2gg
dG8gbGluZSA4NyBvZiBzaWxrL0xQQ19pbnZfcHJlZF9nYWluLmMKKyAgICAgICAgYSB3cmFwLWFy
b3VuZC4gVGhlIEMgc3RhbmRhcmQgY29uc2lkZXJzCisgICAgICAgIHRoaXMgYmVoYXZpb3IgYXMg
dW5kZWZpbmVkLiBUaGUgZm9sbG93aW5nIHBhdGNoIHRvIGxpbmUgODcgb2Ygc2lsay9MUENfaW52
X3ByZWRfZ2Fpbi5jCiAgICAgICAgIGRldGVjdHMgdmFsdWVzIHRoYXQgZG8gbm90IGZpdCBpbiBh
IDMyLWJpdCBpbnRlZ2VyIGFuZCBjb25zaWRlcnMgdGhlIGNvcnJlc3BvbmRpbmcgZmlsdGVycyB1
bnN0YWJsZToKICAgICAgIDwvdD4KIDxmaWd1cmU+CkBAIC0yNzMsNyArMjcwLDcgQEAgcmNfbXVs
dDIgKSwgbXVsdDJRKTsKICAgICA8c2VjdGlvbiB0aXRsZT0iSW50ZWdlciB3cmFwLWFyb3VuZCBp
biBMU0YgZGVjb2RpbmciIGFuY2hvcj0ibHNmX292ZXJmbG93Ij4KICAgICAgIDx0PgogICAgICAg
ICBJdCB3YXMgZGlzY292ZXJlZCAtLSBhbHNvIGZyb20gZGVjb2RlciBmdXp6aW5nIC0tIHRoYXQg
YW4gaW50ZWdlciB3cmFwLWFyb3VuZCBjb3VsZAotICAgICAgICBvY2N1ciB3aGVuIGRlY29kaW5n
IGxpbmUgc3BlY3RyYWwgZnJlcXVlbmN5IGNvZWZmaWNpZW50cyBmcm9tIGV4dHJlbWUgYml0c3Ry
ZWFtcy4KKyAgICAgICAgb2NjdXIgd2hlbiBkZWNvZGluZyBiaXRzdHJlYW1zIHdpdGggZXh0cmVt
ZWx5IGxhcmdlIHZhbHVlcyBmb3IgdGhlIGhpZ2ggTFNGIHBhcmFtZXRlcnMuCiAgICAgICAgIFRo
ZSBlbmQgcmVzdWx0IG9mIHRoZSB3cmFwLWFyb3VuZCBpcyBhbiBpbGxlZ2FsIHJlYWQgYWNjZXNz
IG9uIHRoZSBzdGFjaywgd2hpY2gKICAgICAgICAgdGhlIGF1dGhvcnMgZG8gbm90IGJlbGlldmUg
aXMgZXhwbG9pdGFibGUgYnV0IHNob3VsZCBub25ldGhlbGVzcyBiZSBmaXhlZC4gVGhlIGZvbGxv
d2luZwogICAgICAgICBwYXRjaCB0byBsaW5lIDEzNyBvZiBzaWxrL05MU0Zfc3RhYmlsaXplLmMg
cHJldmVudHMgdGhlIHByb2JsZW06CkBAIC00MDIsMTEgKzM5OSwxMSBAQCBlZmZlY3RpdmVfbG93
YmFuZCtOKTsKICAgICAgIG9wdGlvbmFsbHkgY29kaW5nIHRoZSB0d28gY2hhbm5lbHMgMTgwLWRl
Z3JlZXMgb3V0IG9mIHBoYXNlIG9uIGEgcGVyLWJhbmQgYmFzaXMuCiAgICAgICBUaGlzIHByb3Zp
ZGVzIGJldHRlciBzdGVyZW8gcXVhbGl0eSB0aGFuIGZvcmNpbmcgdGhlIHR3byBjaGFubmVscyB0
byBiZSBpbiBwaGFzZSwKICAgICAgIGJ1dCB3aGVuIHRoZSBvdXRwdXQgaXMgZG93bm1peGVkIHRv
IG1vbm8sIHRoZSBlbmVyZ3kgaW4gdGhlIGFmZmVjdGVkIGJhbmRzIGlzIGNhbmNlbGxlZAotICAg
ICAgc29tZXRpbWVzIHJlc3VsdGluZyBpbiBhdWRpYmxlIGFydGVmYWN0cy4KKyAgICAgIHNvbWV0
aW1lcyByZXN1bHRpbmcgaW4gYXVkaWJsZSBhcnRpZmFjdHMuCiAgICAgICA8L3Q+CiAgICAgICA8
dD5BcyBhIHdvcmstYXJvdW5kIGZvciB0aGlzIGlzc3VlLCB0aGUgZGVjb2RlciBNQVkgY2hvb3Nl
IG5vdCB0byBhcHBseSB0aGUgMTgwLWRlZ3JlZQotICAgICAgcGhhc2Ugc2hpZnQgd2hlbiB0aGUg
b3V0cHV0IGlzIG1lYW50IHRvIGJlIGRvd25taXhlZCAoaW5zaWRlIG9yCi0gICAgICBvdXRzaWRl
IG9mIHRoZSBkZWNvZGVyKS4KKyAgICAgIHBoYXNlIHNoaWZ0LiBUaGlzIGNhbiBiZSB1c2VmdWwg
d2hlbiBkb3dubWl4aW5nIHRvIG1vbm8gaW5zaWRlIG9yCisgICAgICBvdXRzaWRlIG9mIHRoZSBk
ZWNvZGVyIChlLmcuIHVzZXItY29udHJvbGxhYmxlKS4KICAgICAgIDwvdD4KICAgICA8L3NlY3Rp
b24+CiAKQEAgLTQyMSwxNCArNDE4LDE0IEBAIGVmZmVjdGl2ZV9sb3diYW5kK04pOwogICAgICAg
ICBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGlhbnQgYXMgbG9uZyBhcyBpdCBwYXNzZXMgZWl0aGVy
IHNldCBvZiB2ZWN0b3JzLgogICAgICAgPC90PgogICAgICAgPHQ+Ci0gICAgICAgIEluIGFkZGl0
aW9uLCBhbnkgT3B1cyBpbXBsZW1lbnRhdGlvbgotICAgICAgICB0aGF0IHBhc3NlcyB0aGUgb3Jp
Z2luYWwgdGVzdCB2ZWN0b3JzIGZyb20gPHhyZWYgdGFyZ2V0PSJSRkM2NzE2Ij5SRkMgNjcxNjwv
eHJlZj4KLSAgICAgICAgaXMgc3RpbGwgY29tcGxpYW50IHdpdGggdGhlIE9wdXMgc3BlY2lmaWNh
dGlvbi4gSG93ZXZlciwgbmV3ZXIgaW1wbGVtZW50YXRpb25zCisgICAgICAgIEFueSBPcHVzIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIHRoYXQgcGFzc2VzIGVpdGhlciB0aGUgb3JpZ2luYWwgdGVz
dCB2ZWN0b3JzIGZyb20gPHhyZWYgdGFyZ2V0PSJSRkM2NzE2Ij5SRkMgNjcxNjwveHJlZj4KKyAg
ICAgICAgb3Igb25lIG9mIHRoZSBuZXcgc2V0cyBvZiB0ZXN0IHZlY3RvcnMgaXMgY29tcGxpYW50
IHdpdGggdGhlIE9wdXMgc3BlY2lmaWNhdGlvbi4gSG93ZXZlciwgbmV3ZXIgaW1wbGVtZW50YXRp
b25zCiAgICAgICAgIFNIT1VMRCBiZSBiYXNlZCBvbiB0aGUgbmV3IHRlc3QgdmVjdG9ycyByYXRo
ZXIgdGhhbiB0aGUgb2xkIG9uZXMuCiAgICAgICA8L3Q+CiAgICAgICA8dD5UaGUgbmV3IHRlc3Qg
dmVjdG9ycyBhcmUgbG9jYXRlZCBhdAogICAgICAgICA8ZXJlZiB0YXJnZXQ9Imh0dHBzOi8vd3d3
LmlldGYub3JnL3Byb2NlZWRpbmdzLzk4L3NsaWRlcy9tYXRlcmlhbHMtOTgtY29kZWMtb3B1cy1u
ZXd2ZWN0b3JzLTAwLnRhci5neiIvPi4KLSAgICAgICAgVGhlIFNIQTEgaGFzaCBvZiB0aGUgdGVz
dCB2ZWN0b3JzIGFyZToKKyAgICAgICAgVGhlIFNIQS0xIGhhc2hlcyBvZiB0aGUgdGVzdCB2ZWN0
b3JzIGFyZToKIDxmaWd1cmU+CiA8YXJ0d29yaz4KIDwhW0NEQVRBWwpAQCAtNDgwLDE0ICs0Nzcs
MTEgQEAgZmQzZDNhN2IwZGZiZGFiOThkMzdlZDlhYTA0YjY1OWI5ZmVmYmQxOCAgdGVzdHZlY3Rv
cjExbS5kZWMKICAgICAgICAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGluIDx4cmVmIHRhcmdl
dD0iUkZDNjcxNiI+UkZDIDY3MTY8L3hyZWY+OiBDVkUtMjAxMy0wODk5CiAgICAgICAgIDxlcmVm
IHRhcmdldD0iaHR0cHM6Ly9udmQubmlzdC5nb3YvdnVsbi9kZXRhaWwvQ1ZFLTIwMTMtMDg5OSIv
PgogICAgICAgICBhbmQgQ1ZFLTIwMTctMDM4MSA8ZXJlZiB0YXJnZXQ9Imh0dHBzOi8vbnZkLm5p
c3QuZ292L3Z1bG4vZGV0YWlsL0NWRS0yMDE3LTAzODEiLz4uCi0gICAgICAgIENWRS0yMDEzLTA4
OTkgaXMgZml4ZWQgYnkgPHhyZWYgdGFyZ2V0PSJwYWRkaW5nIi8+IGFuZAotICAgICAgICBjb3Vs
ZCB0aGVvcmV0aWNhbGx5IGNhdXNlIGluZm9ybWF0aW9uIGxlYWssIGJ1dCB0aGUKLSAgICAgICAg
bGVha2VkIGluZm9ybWF0aW9uIHdvdWxkIGF0IHRoZSB2ZXJ5IGxlYXN0IGdvIHRocm91Z2ggdGhl
IGRlY29kZXIgcHJvY2VzcyBiZWZvcmUKLSAgICAgICAgYmVpbmcgYWNjZXNzaWJsZSB0byB0aGUg
YXR0YWNrZXIuIEFsc28sIHRoZSBidWcgY2FuIG9ubHkgYmUgdHJpZ2dlcmVkIGJ5IE9wdXMgcGFj
a2V0cwotICAgICAgICBhdCBsZWFzdCAyNCBNQiBpbiBzaXplLiBDVkUtMjAxNy0wMzgxIGlzIGZp
eGVkIGJ5IDx4cmVmIHRhcmdldD0ibHNmX292ZXJmbG93Ii8+IGFuZCwgYXMgZmFyCi0gICAgICAg
IGFzIHRoZSBhdXRob3JzIGFyZSBhd2FyZSwgY291bGQgbm90IGJlIGV4cGxvaXRlZCBpbiBhbnkg
d2F5IChkZXNwaXRlIHRoZSBjbGFpbXMgaW4KLSAgICAgICAgdGhlIENWRSkgdW5sZXNzIHRoZSBy
ZWFkLW9ubHkgdGFibGUKLSAgICAgICAgd2FzIHNvbWVob3cgcGxhY2VkIHZlcnkgY2xvc2UgdG8g
c2Vuc2l0aXZlIGRhdGEsIHdoaWNoIGlzIGhpZ2hseSB1bmxpa2VseS4KKyAgICAgICAgQ1ZFLSAy
MDEzLTA4OTkgdGhlb3JldGljYWxseSBjb3VsZCBoYXZlIGNhdXNlZCBhbiBpbmZvcm1hdGlvbiBs
ZWFrLiBUaGUgbGVha2VkCisgICAgICAgIGluZm9ybWF0aW9uIHdvdWxkIGhhdmUgZ29uZSB0aHJv
dWdoIHRoZSBkZWNvZGVyIHByb2Nlc3MgYmVmb3JlIGJlaW5nIGFjY2Vzc2libGUKKyAgICAgICAg
dG8gdGhlIGF0dGFja2VyLiBJdCBpcyBmaXhlZCBieSA8eHJlZiB0YXJnZXQ9InBhZGRpbmciLz4u
CisgICAgICAgIENWRS0yMDE3LTAzODEgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBhIDE2LWJpdCBv
dXQtb2YtYm91bmRzIHJlYWQgZnJvbSBhIGZpeGVkCisgICAgICAgIGxvY2F0aW9uLiAgSXQgaXMg
Zml4ZWQgaW4gPHhyZWYgdGFyZ2V0PSJsc2Zfb3ZlcmZsb3ciLz4uCiAgICAgICAgIEJleW9uZCB0
aGUgdHdvIGZpeGVkIENWRXMsIHRoaXMgZG9jdW1lbnQgYWRkcyBubyBuZXcgc2VjdXJpdHkgY29u
c2lkZXJhdGlvbnMgb24gdG9wIG9mCiAgICAgICAgIDx4cmVmIHRhcmdldD0iUkZDNjcxNiI+UkZD
IDY3MTY8L3hyZWY+LgogICAgICAgPC90PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9kb2Mvb3B1c19pbl9pc29ibWZm
Lmh0bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL2RvYy9vcHVzX2luX2lzb2JtZmYuaHRtbAppbmRleCBhMTE3NWRiZmRkZTI1ZTgzNzJl
ZDZmYzRkMDQwMWZjYTkyMmM1OTllLi4zOGFlZmJmMmFiYjNkMzViZGRlMTU4ZjA1OTc3NmFhMmU5
NTM3YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL2RvYy9vcHVzX2luX2lzb2JtZmYuaHRtbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2RvYy9vcHVz
X2luX2lzb2JtZmYuaHRtbApAQCAtNywxMiArNywxMiBAQAogICAgIDwvaGVhZD4KICAgICA8Ym9k
eSBiZ2NvbG9yPSIweDMzMzMzMyIgdGV4dD0iIzYwQjBDMCI+CiAgICAgICAgIDxiPjx1PkVuY2Fw
c3VsYXRpb24gb2YgT3B1cyBpbiBJU08gQmFzZSBNZWRpYSBGaWxlIEZvcm1hdDwvdT48L2I+PGJy
PgotICAgICAgICA8Zm9udCBzaXplPSIyIj5sYXN0IHVwZGF0ZWQ6IEFwcmlsIDI4LCAyMDE2PC9m
b250Pjxicj4KKyAgICAgICAgPGZvbnQgc2l6ZT0iMiI+bGFzdCB1cGRhdGVkOiBBdWd1c3QgMjgs
IDIwMTg8L2ZvbnQ+PGJyPgogICAgICAgICA8YnI+CiAgICAgICAgIDxkaXYgY2xhc3M9Im5vcm1h
bF9saW5rIHByZSBmcmFtZV9ib3giPgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVuY2Fwc3VsYXRpb24gb2YgT3B1cyBpbiBJU08gQmFzZSBNZWRpYSBGaWxlIEZvcm1hdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMC42LjggKGluY29t
cGxldGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAw
LjguMSAoaW5jb21wbGV0ZSkKIAogCiBUYWJsZSBvZiBDb250ZW50cwpAQCAtMjAsNyArMjAsNyBA
QCBUYWJsZSBvZiBDb250ZW50cwogPGEgaHJlZj0iIzIiPjI8L2E+IE5vcm1hdGl2ZSBSZWZlcmVu
Y2VzCiA8YSBocmVmPSIjMyI+MzwvYT4gVGVybXMgYW5kIERlZmluaXRpb25zCiA8YSBocmVmPSIj
NCI+NDwvYT4gRGVzaWduIFJ1bGVzIG9mIEVuY2Fwc3VsYXRpb24KLSAgICA8YSBocmVmPSIjNC4x
Ij40LjE8L2E+IEZpbGUgVHlwZSBJbmRlbnRpZmljYXRpb24KKyAgICA8YSBocmVmPSIjNC4xIj40
LjE8L2E+IEZpbGUgVHlwZSBJZGVudGlmaWNhdGlvbgogICAgIDxhIGhyZWY9IiM0LjIiPjQuMjwv
YT4gT3ZlcnZpZXcgb2YgVHJhY2sgU3RydWN0dXJlCiAgICAgPGEgaHJlZj0iIzQuMyI+NC4zPC9h
PiBEZWZpbml0aW9ucyBvZiBPcHVzIHNhbXBsZQogICAgICAgICA8YSBocmVmPSIjNC4zLjEiPjQu
My4xPC9hPiBTYW1wbGUgZW50cnkgZm9ybWF0CkBAIC0zMiw3ICszMiw5IEBAIFRhYmxlIG9mIENv
bnRlbnRzCiAgICAgICAgICAgICA8YSBocmVmPSIjNC4zLjYuMSI+NC4zLjYuMTwvYT4gUmFuZG9t
IEFjY2VzcyBQb2ludAogICAgICAgICAgICAgPGEgaHJlZj0iIzQuMy42LjIiPjQuMy42LjI8L2E+
IFByZS1yb2xsCiAgICAgPGEgaHJlZj0iIzQuNCI+NC40PC9hPiBUcmltbWluZyBvZiBBY3R1YWwg
RHVyYXRpb24KLSAgICA8YSBocmVmPSIjNC41Ij40LjU8L2E+IENoYW5uZWwgTGF5b3V0IChpbmZv
cm1hdGl2ZSkKKyAgICA8YSBocmVmPSIjNC41Ij40LjU8L2E+IENoYW5uZWwgTWFwcGluZworICAg
ICAgICA8YSBocmVmPSIjNC41LjEiPjQuNS4xPC9hPiBJU08gQmFzZSBNZWRpYSBuYXRpdmUgQ2hh
bm5lbCBNYXBwaW5nCisgICAgICAgIDxhIGhyZWY9IiM0LjUuMiI+NC41LjI8L2E+IENvbXBvc2l0
aW9uIG9uIGFsbCBhY3RpdmUgdHJhY2tzIChpbmZvcm1hdGl2ZSkKICAgICA8YSBocmVmPSIjNC42
Ij40LjY8L2E+IEJhc2ljIFN0cnVjdHVyZSAoaW5mb3JtYXRpdmUpCiAgICAgICAgIDxhIGhyZWY9
IiM0LjYuMSI+NC42LjI8L2E+IEluaXRpYWwgTW92aWUKICAgICAgICAgPGEgaHJlZj0iIzQuNi4y
Ij40LjYuMzwvYT4gTW92aWUgRnJhZ21lbnRzCkBAIC01Myw3ICs1NSw3IEBAIFRhYmxlIG9mIENv
bnRlbnRzCiAgICAgWzJdIFJGQyA2NzE2CiAgICAgICAgIERlZmluaXRpb24gb2YgdGhlIE9wdXMg
QXVkaW8gQ29kZWMKIAotICAgIFszXSBkcmFmdC1pZXRmLWNvZGVjLW9nZ29wdXMtMDYKKyAgICBb
M10gUkZDIDc4NDUKICAgICAgICAgT2dnIEVuY2Fwc3VsYXRpb24gZm9yIHRoZSBPcHVzIEF1ZGlv
IENvZGVjCiAKIDxhIG5hbWU9IjMiPjwvYT4KQEAgLTgzLDggKzg1LDggQEAgVGFibGUgb2YgQ29u
dGVudHMKIAogPGEgbmFtZT0iNCI+PC9hPgogNCBEZXNpZ24gUnVsZXMgb2YgRW5jYXBzdWxhdGlv
bgotICAgIDQuMSBGaWxlIFR5cGUgSW5kZW50aWZpY2F0aW9uPGEgbmFtZT0iNC4xIj48L2E+Ci0g
ICAgICAgIFRoaXMgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZWZpbmUgYW55IGJyYW5kIHRvIGRl
Y2xhcmUgZmlsZXMgYXJlIGNvbmZvcm1hbnQgdG8gdGhpcyBzcGVjaWZpY2F0aW9uLiBIb3dldmVy
LAorICAgIDQuMSBGaWxlIFR5cGUgSWRlbnRpZmljYXRpb248YSBuYW1lPSI0LjEiPjwvYT4KKyAg
ICAgICAgVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgdGhlIGJyYW5kICdPcHVzJyB0byBkZWNs
YXJlIGZpbGVzIGFyZSBjb25mb3JtYW50IHRvIHRoaXMgc3BlY2lmaWNhdGlvbi4gQWRkaXRpb25h
bGx5LAogICAgICAgICBmaWxlcyBjb25mb3JtYW50IHRvIHRoaXMgc3BlY2lmaWNhdGlvbiBzaGFs
bCBjb250YWluIGF0IGxlYXN0IG9uZSBicmFuZCwgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVpcmVt
ZW50cyBhbmQgdGhlCiAgICAgICAgIHJlcXVpcmVtZW50cyBkZXNjcmliZWQgaW4gdGhpcyBjbGF1
c2Ugd2l0aG91dCBjb250cmFkaWN0aW9uLCBpbiB0aGUgY29tcGF0aWJsZSBicmFuZHMgbGlzdCBv
ZiB0aGUgRmlsZSBUeXBlIEJveC4KICAgICAgICAgQXMgYW4gZXhhbXBsZSwgdGhlIG1pbmltYWwg
c3VwcG9ydCBvZiB0aGUgZW5jYXBzdWxhdGlvbiBvZiBPcHVzIGJpdHN0cmVhbXMgaW4gSVNPIEJh
c2UgTWVkaWEgZmlsZSBmb3JtYXQgcmVxdWlyZXMKQEAgLTExNywxNSArMTE5LDE0IEBAIFRhYmxl
IG9mIENvbnRlbnRzCiAKICAgICAgICAgICAgIFRoZSBzeW50YXggYW5kIHNlbWFudGljcyBvZiB0
aGUgT3B1c1NhbXBsZUVudHJ5IGlzIHNob3duIGFzIGZvbGxvd3MuCiAKLSAgICAgICAgICAgIGNs
YXNzIE9wdXNTYW1wbGVFbnRyeSgpIGV4dGVuZHMgQXVkaW9TYW1wbGVFbnRyeSAoJ09wdXMnKXsK
KyAgICAgICAgICAgIGNsYXNzIE9wdXNTYW1wbGVFbnRyeSgpIGV4dGVuZHMgQXVkaW9TYW1wbGVF
bnRyeSAoJ09wdXMnKSB7CiAgICAgICAgICAgICAgICAgT3B1c1NwZWNpZmljQm94KCk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICsgY2hhbm5lbGNvdW50OgotICAgICAgICAgICAgICAg
IFRoZSBjaGFubmVsY291bnQgZmllbGQgc2hhbGwgYmUgc2V0IHRvIHRoZSBzdW0gb2YgdGhlIHRv
dGFsIG51bWJlciBvZiBPcHVzIGJpdHN0cmVhbXMgYW5kIHRoZSBudW1iZXIKLSAgICAgICAgICAg
ICAgICBvZiBPcHVzIGJpdHN0cmVhbXMgcHJvZHVjaW5nIHR3byBjaGFubmVscy4gVGhpcyB2YWx1
ZSBpcyBpbmRlbnRpY2FsIHdpdGggKE0rTiksIHdoZXJlIE0gaXMgdGhlIHZhbHVlIG9mCi0gICAg
ICAgICAgICAgICAgdGhlICpDb3VwbGVkIFN0cmVhbSBDb3VudCogZmllbGQgYW5kIE4gaXMgdGhl
IHZhbHVlIG9mIHRoZSAqU3RyZWFtIENvdW50KiBmaWVsZCBpbiB0aGUgKkNoYW5uZWwgTWFwcGlu
ZwotICAgICAgICAgICAgICAgIFRhYmxlKiBpbiB0aGUgaWRlbnRpZmljYXRpb24gaGVhZGVyIGRl
ZmluZWQgaW4gT2dnIE9wdXMgWzNdLgorICAgICAgICAgICAgICAgIFRoZSBjaGFubmVsY291bnQg
ZmllbGQgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzIGFuZCBzaGFsbCBi
ZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICB0aGUgT3V0cHV0Q2hh
bm5lbENvdW50IGluIHRoZSBPcHVzRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQuIFRoZSB2YWx1
ZSBvZiB0aGlzIGZpZWxkIG1heSBiZSB1c2VkIGluCisgICAgICAgICAgICAgICAgdGhlIENoYW5u
ZWxMYXlvdXQgaWYgYW55IGFzIGRlc2NyaWJlZCBpbiA0LjUuMS4KICAgICAgICAgICAgICsgc2Ft
cGxlc2l6ZToKICAgICAgICAgICAgICAgICBUaGUgc2FtcGxlc2l6ZSBmaWVsZCBzaGFsbCBiZSBz
ZXQgdG8gMTYuCiAgICAgICAgICAgICArIHNhbXBsZXJhdGU6CkBAIC0xMzUsMjAgKzEzNiwyMSBA
QCBUYWJsZSBvZiBDb250ZW50cwogCiAgICAgICAgIDQuMy4yIE9wdXMgU3BlY2lmaWMgQm94PGEg
bmFtZT0iNC4zLjIiPjwvYT4KICAgICAgICAgICAgIEV4YWN0bHkgb25lIE9wdXMgU3BlY2lmaWMg
Qm94IHNoYWxsIGJlIHByZXNlbnQgaW4gZWFjaCBPcHVzU2FtcGxlRW50cnkuCi0gICAgICAgICAg
ICBUaGUgT3B1cyBTcGVjaWZpYyBCb3ggY29udGFpbnMgdGhlIFZlcnNpb24gZmllbGQgYW5kIHRo
aXMgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHZlcnNpb24gMCBvZiB0aGlzIGJveC4KLSAgICAgICAg
ICAgIElmIGluY29tcGF0aWJsZSBjaGFuZ2VzIG9jY3VyZWQgaW4gdGhlIGZpZWxkcyBhZnRlciB0
aGUgVmVyc2lvbiBmaWVsZCB3aXRoaW4gdGhlIE9wdXNTcGVjaWZpY0JveCBpbiB0aGUKLSAgICAg
ICAgICAgIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIHNwZWNpZmljYXRpb24sIGFub3RoZXIgdmVy
c2lvbiB3aWxsIGJlIGRlZmluZWQuCisgICAgICAgICAgICBUaGUgT3B1cyBTcGVjaWZpYyBCb3gg
Y29udGFpbnMgYW4gT3B1c0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIHdoaWNoIGNvbnRhaW5z
IHRoZSBWZXJzaW9uIGZpZWxkIGFuZAorICAgICAgICAgICAgdGhpcyBzcGVjaWZpY2F0aW9uIGRl
ZmluZXMgdmVyc2lvbiAwIG9mIHRoaXMgcmVjb3JkLiBJZiBpbmNvbXBhdGlibGUgY2hhbmdlcyBv
Y2N1cmVkIGluIHRoZSBmaWVsZHMgYWZ0ZXIKKyAgICAgICAgICAgIHRoZSBWZXJzaW9uIGZpZWxk
IHdpdGhpbiB0aGUgT3B1c0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkIGluIHRoZSBmdXR1cmUg
dmVyc2lvbnMgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLAorICAgICAgICAgICAgYW5vdGhlciB2ZXJz
aW9uIHdpbGwgYmUgZGVmaW5lZC4KICAgICAgICAgICAgIFRoaXMgYm94IHJlZmVycyB0byBPZ2cg
T3B1cyBbM10gYXQgbWFueSBwYXJ0cyBidXQgYWxsIHRoZSBkYXRhIGFyZSBzdG9yZWQgYXMgYmln
LWVuZGlhbiBmb3JtYXQuCiAKICAgICAgICAgICAgIFRoZSBzeW50YXggYW5kIHNlbWFudGljcyBv
ZiB0aGUgT3B1cyBTcGVjaWZpYyBCb3ggaXMgc2hvd24gYXMgZm9sbG93cy4KIAotICAgICAgICAg
ICAgY2xhc3MgQ2hhbm5lbE1hcHBpbmdUYWJsZSAodW5zaWduZWQgaW50KDgpIE91dHB1dENoYW5u
ZWxDb3VudCl7CisgICAgICAgICAgICBjbGFzcyBDaGFubmVsTWFwcGluZ1RhYmxlICh1bnNpZ25l
ZCBpbnQoOCkgT3V0cHV0Q2hhbm5lbENvdW50KSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50KDgpIFN0cmVhbUNvdW50OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCg4KSBDb3Vw
bGVkQ291bnQ7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KDggKiBPdXRwdXRDaGFubmVs
Q291bnQpIENoYW5uZWxNYXBwaW5nOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhbGln
bmVkKDgpIGNsYXNzIE9wdXNTcGVjaWZpY0JveCBleHRlbmRzIEJveCgnZE9wcycpeworICAgICAg
ICAgICAgYWxpZ25lZCg4KSBjbGFzcyBPcHVzRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgewog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCg4KSBWZXJzaW9uOwogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCg4KSBPdXRwdXRDaGFubmVsQ291bnQ7CiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50KDE2KSBQcmVTa2lwOwpAQCAtMTYwLDYgKzE2MiwxMCBAQCBUYWJsZSBvZiBDb250
ZW50cwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2xh
c3MgT3B1c1NwZWNpZmljQm94IGV4dGVuZHMgQm94KCdkT3BzJykgeworICAgICAgICAgICAgICAg
IE9wdXNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCgpIE9wdXNDb25maWc7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICsgVmVyc2lvbjoKICAgICAgICAgICAgICAgICBUaGUgVmVyc2lv
biBmaWVsZCBzaGFsbCBiZSBzZXQgdG8gMC4KICAgICAgICAgICAgICAgICBJbiB0aGUgZnV0dXJl
IHZlcnNpb25zIG9mIHRoaXMgc3BlY2lmaWNhdGlvbiwgdGhpcyBmaWVsZCBtYXkgYmUgc2V0IHRv
IG90aGVyIHZhbHVlcy4gQW5kIHdpdGhvdXQgc3VwcG9ydApAQCAtMTgxLDcgKzE4Nyw4IEBAIFRh
YmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICAgICAgaGVhZGVyIGRlZmluZSBpbiBPZ2cgT3B1
cyBbM10uIE5vdGUgdGhhdCB0aGUgdmFsdWUgaXMgc3RvcmVkIGFzIDguOCBmaXhlZC1wb2ludC4K
ICAgICAgICAgICAgICsgQ2hhbm5lbE1hcHBpbmdGYW1pbHk6CiAgICAgICAgICAgICAgICAgVGhl
IENoYW5uZWxNYXBwaW5nRmFtaWx5IGZpZWxkIHNoYWxsIGJlIHNldCB0byB0aGUgc2FtZSB2YWx1
ZSBhcyB0aGUgKkNoYW5uZWwgTWFwcGluZyBGYW1pbHkqIGZpZWxkIGluCi0gICAgICAgICAgICAg
ICAgdGhlIGlkZW50aWZpY2F0aW9uIGhlYWRlciBkZWZpbmVkIGluIE9nZyBPcHVzIFszXS4KKyAg
ICAgICAgICAgICAgICB0aGUgaWRlbnRpZmljYXRpb24gaGVhZGVyIGRlZmluZWQgaW4gT2dnIE9w
dXMgWzNdLiBOb3RlIHRoYXQgdGhlIHZhbHVlIDI1NSBtYXkgYmUgdXNlZCBmb3IgYW4gYWx0ZXJu
YXRpdmUKKyAgICAgICAgICAgICAgICB0byBtYXAgY2hhbm5lbHMgYnkgSVNPIEJhc2UgTWVkaWEg
bmF0aXZlIG1hcHBpbmcuIFRoZSBkZXRhaWxzIGFyZSBkZXNjcmliZWQgaW4gNC41LjEuCiAgICAg
ICAgICAgICArIFN0cmVhbUNvdW50OgogICAgICAgICAgICAgICAgIFRoZSBTdHJlYW1Db3VudCBm
aWVsZCBzaGFsbCBiZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUgYXMgdGhlICpTdHJlYW0gQ291bnQq
IGZpZWxkIGluIHRoZSBpZGVudGlmaWNhdGlvbgogICAgICAgICAgICAgICAgIGhlYWRlciBkZWZp
bmVkIGluIE9nZyBPcHVzIFszXS4KQEAgLTI3MCw0MiArMjc3LDYyIEBAIFRhYmxlIG9mIENvbnRl
bnRzCiAgICAgICAgIHRoZSBkdXJhdGlvbiBvZiB0aGUgbGFzdCBPcHVzIHNhbXBsZSBtYXkgYmUg
aGVscGZ1bCBieSBzZXR0aW5nIHplcm8gdG8gdGhlIHNlZ21lbnRfZHVyYXRpb24gZmllbGQgc2lu
Y2UgdGhlCiAgICAgICAgIHZhbHVlIDAgcmVwcmVzZW50cyBpbXBsaWNpdCBkdXJhdGlvbiBlcXVh
bCB0byB0aGUgc3VtIG9mIHRoZSBkdXJhdGlvbiBvZiBhbGwgc2FtcGxlcy4KIDxhIG5hbWU9IjQu
NSI+PC9hPgotICAgIDQuNSBDaGFubmVsIExheW91dCAoaW5mb3JtYXRpdmUpCi0gICAgICAgIEJ5
IHRoZSBhcHBsaWNhdGlvbiBvZiBhbHRlcm5hdGVfZ3JvdXAgaW4gdGhlIFRyYWNrIEhlYWRlciBC
b3gsIHdob2xlIGF1ZGlvIGNoYW5uZWxzIGluIGFsbCBhY3RpdmUgdHJhY2tzIGZyb20KLSAgICAg
ICAgbm9uLWFsdGVybmF0ZSBncm91cCBhbmQvb3IgZGlmZmVyZW50IGFsdGVybmF0ZSBncm91cCBm
cm9tIGVhY2ggb3RoZXIgYXJlIGNvbXBvc2l0ZWQgaW50byB0aGUgcHJlc2VudGF0aW9uLiBJZgot
ICAgICAgICBhbiBPcHVzIHNhbXBsZSBjb25zaXN0cyBvZiBtdWx0aXBsZSBPcHVzIGJpdHN0cmVh
bXMsIGl0IGNhbiBiZSBzcGxpdHRlZCBpbnRvIGluZGl2aWR1YWwgT3B1cyBiaXRzdHJlYW1zIGFu
ZAotICAgICAgICByZWNvbnN0cnVjdGVkIGludG8gbmV3IE9wdXMgc2FtcGxlcyBhcyBsb25nIGFz
IGV2ZXJ5IE9wdXMgYml0c3RyZWFtIGhhcyB0aGUgc2FtZSB0b3RhbCBkdXJhdGlvbiBpbiBlYWNo
IE9wdXMKLSAgICAgICAgc2FtcGxlLiBUaGlzIG5hdHVyZSBjYW4gYmUgdXRpbGl6ZWQgdG8gZW5j
YXBzdWxhdGUgYSBzaW5nbGUgT3B1cyBiaXRzdHJlYW0gaW4gZWFjaCB0cmFjayB3aXRob3V0IGJy
ZWFraW5nIHRoZQotICAgICAgICBvcmlnaW5hbCBjaGFubmVsIGxheW91dC4KLQotICAgICAgICBB
cyBhbiBleGFtcGxlLCBsZXQncyBzYXkgdGhlcmUgaXMgYSBmb2xsb3dpbmcgdHJhY2s6Ci0gICAg
ICAgICAgICBPdXRwdXRDaGFubmVsQ291bnQgPSA2OwotICAgICAgICAgICAgU3RyZWFtQ291bnQg
ICAgICAgID0gNDsKLSAgICAgICAgICAgIENvdXBsZWRDb3VudCAgICAgICA9IDI7Ci0gICAgICAg
ICAgICBDaGFubmVsTWFwcGluZyAgICAgPSB7MCwgNCwgMSwgMiwgMywgNX07IC8vIGZyb250IGxl
ZnQsIGZyb250IGNlbnRlciwgZnJvbnQgcmlnaHQsIHJlYXIgbGVmdCwgcmVhciByaWdodCwgTEZF
Ci0gICAgICAgIEhlcmUsIHRvIGNvdXBsZSBmcm9udCBsZWZ0IHRvIGZyb250IHJpZ2h0IGNoYW5u
ZWxzIGludG8gdGhlIGZpcnN0IHN0cmVhbSwgYW5kIGNvdXBsZSByZWFyIGxlZnQgdG8gcmVhciBy
aWdodAotICAgICAgICBjaGFubmVscyBpbnRvIHRoZSBzZWNvbmQgc3RyZWFtLCByZW9yZGVyaW5n
IGlzIG5lZWRlZCBzaW5jZSBjb3VwbGVkIHN0cmVhbXMgbXVzdCBwcmVjZWRlIGFueSBub24tY291
cGxlZCBzdHJlYW0uCi0gICAgICAgIFlvdSBleHRyYWN0IHRoZSBmb3VyIE9wdXMgYml0c3RyZWFt
cyBmcm9tIHRoaXMgdHJhY2sgYW5kIHlvdSBlbmNhcHN1bGF0ZSB0d28gb2YgdGhlIGZvdXIgaW50
byBhIHRyYWNrIGFuZCB0aGUKLSAgICAgICAgb3RoZXJzIGludG8gYW5vdGhlciB0cmFjay4gVGhl
IGZvcm1lciB0cmFjayBpcyBhcyBmb2xsb3dzLgotICAgICAgICAgICAgT3V0cHV0Q2hhbm5lbENv
dW50ID0gNjsKLSAgICAgICAgICAgIFN0cmVhbUNvdW50ICAgICAgICA9IDI7Ci0gICAgICAgICAg
ICBDb3VwbGVkQ291bnQgICAgICAgPSAyOwotICAgICAgICAgICAgQ2hhbm5lbE1hcHBpbmcgICAg
ID0gezAsIDI1NSwgMSwgMiwgMywgMjU1fTsgLy8gZnJvbnQgbGVmdCwgZnJvbnQgY2VudGVyLCBm
cm9udCByaWdodCwgcmVhciBsZWZ0LCByZWFyIHJpZ2h0LCBMRkUKLSAgICAgICAgQW5kIHRoZSBs
YXR0ZXIgdHJhY2sgaXMgYXMgZm9sbG93cy4KLSAgICAgICAgICAgIE91dHB1dENoYW5uZWxDb3Vu
dCA9IDY7Ci0gICAgICAgICAgICBTdHJlYW1Db3VudCAgICAgICAgPSAyOwotICAgICAgICAgICAg
Q291cGxlZENvdW50ICAgICAgID0gMDsKLSAgICAgICAgICAgIENoYW5uZWxNYXBwaW5nICAgICA9
IHsyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDF9OyAvLyBmcm9udCBsZWZ0LCBmcm9udCBjZW50ZXIs
IGZyb250IHJpZ2h0LCByZWFyIGxlZnQsIHJlYXIgcmlnaHQsIExGRQotICAgICAgICBJbiBhZGRp
dGlvbiwgdGhlIHZhbHVlIG9mIHRoZSBhbHRlcm5hdGVfZ3JvdXAgZmllbGQgaW4gdGhlIGJvdGgg
dHJhY2tzIGlzIHNldCB0byAwLiBBcyB0aGUgcmVzdWx0LCB0aGUgcGxheWVyCi0gICAgICAgIG1h
eSBwbGF5IGFzIGlmIGNoYW5uZWxzIHdpdGggMjU1IGFyZSBub3QgcHJlc2VudCwgYW5kIHBsYXkg
dGhlIHByZXNlbnRhdGlvbiBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBib3RoIHRyYWNrcwotICAgICAg
ICBpbiB0aGUgc2FtZSBjaGFubmVsIGxheW91dCBhcyB0aGUgb25lIG9mIHRoZSBvcmlnaW5hbCB0
cmFjay4gS2VlcCBpbiBtaW5kIHRoYXQgdGhlIHdheSBvZiB0aGUgY29tcG9zaXRpb24sIGkuZS4K
LSAgICAgICAgdGhlIG1peGluZyBmb3IgcGxheWJhY2ssIGlzIG5vdCBkZWZpbmVkIGhlcmUsIGFu
ZCBtYXliZSBkaWZmZXJlbnQgcmVzdWx0cyBjb3VsZCBvY2N1ciBleGNlcHQgZm9yIHRoZSBjaGFu
bmVsCi0gICAgICAgIGxheW91dCBvZiB0aGUgb3JpZ2luYWwsIGRlcGVuZGluZyBvbiBhbiBpbXBs
ZW1lbnRhdGlvbiBvciB0aGUgZGVmaW5pdGlvbiBvZiBhIGRlcml2ZWQgZmlsZSBmb3JtYXQuCi0K
LSAgICAgICAgTm90ZSB0aGF0IHNvbWUgZGVyaXZlZCBmaWxlIGZvcm1hdHMgbWF5IHNwZWNpZnkg
dGhlIHJlc3RyaWN0aW9uIHRvIGlnbm9yZSBhbHRlcm5hdGUgZ3JvdXBpbmcuIEluIHRoZSBjb250
ZXh0IG9mCi0gICAgICAgIHN1Y2ggZmlsZSBmb3JtYXRzLCB0aGlzIGFwcGxpY2F0aW9uIGlzIG5v
dCBhdmFpbGFibGUuIFRoaXMgdW5hdmFpbGFiaWxpdHkgZG9lcyBub3QgbWVhbiBpbmNvbXBhdGli
aWxpdGllcyBhbW9uZwotICAgICAgICBmaWxlIGZvcm1hdHMgdW5sZXNzIHRoZSByZXN0cmljdGlv
biB0byB0aGUgdmFsdWUgb2YgdGhlIGFsdGVybmF0ZV9ncm91cCBmaWVsZCBpcyBzcGVjaWZpZWQg
YW5kIGJyaW5ncyBhYm91dAotICAgICAgICBhbnkgY29uZmxpY3QgYW1vbmcgdGhlaXIgZGVmaW5p
dGlvbnMuCisgICAgNC41IENoYW5uZWwgTWFwcGluZworICAgICAgICA0LjUuMSBJU08gQmFzZSBN
ZWRpYSBuYXRpdmUgQ2hhbm5lbCBNYXBwaW5nPGEgbmFtZT0iNC41LjEiPjwvYT4KKyAgICAgICAg
ICAgIElTTyBCYXNlIE1lZGlhIEZpbGUgRm9ybWF0LCB0aGF0IGlzIElTTy9JRUMgMTQ0OTYtMTIg
WzFdLCBkZWZpbmVzIGFuIGV4dGVuc2lvbiBDaGFubmVsTGF5b3V0IHRvIHRoZQorICAgICAgICAg
ICAgQXVkaW9TYW1wbGVFbnRyeSwgd2hpY2ggY29udmV5cyBpbmZvcm1hdGlvbiBvZiBtYXBwaW5n
IGNoYW5uZWxzIHRvIGxvdWRzcGVha2VyIHBvc2l0aW9ucy4gVGhlIENoYW5uZWxMYXlvdXQKKyAg
ICAgICAgICAgIGVuYWJsZXMgdG8gc3BlY2lmeSB0aGUgY2hhbm5lbCBsYXlvdXQgbW9yZSBmbGV4
aWJseSB0aGFuIHRoZSBwcmVkZWZpbmVkIGxheW91dHMgb2YgdGhlIENoYW5uZWxNYXBwaW5nRmFt
aWx5LgorCisgICAgICAgICAgICBUbyB1dGlsaXplIHRoZSBDaGFubmVsTGF5b3V0IGZvciBPcHVz
U2FtcGxlRW50cnksIHRoZSBDaGFubmVsTWFwcGluZ0ZhbWlseSBmaWVsZCBzaG91bGQgYmUgc2V0
IHRvIDI1NS4KKyAgICAgICAgICAgIEV2ZW4gd2hlbiB0aGUgQ2hhbm5lbE1hcHBpbmdGYW1pbHkg
ZmllbGQgaXMgc2V0IHRvIGFub3RoZXIgdmFsdWUsIHRoZSBhc3NpZ25tZW50IG9mIGVhY2ggb3V0
cHV0IGNoYW5uZWwgdG8KKyAgICAgICAgICAgIGxvdWRzcGVha2VyIHBvc2l0aW9uIHNwZWNpZmll
ZCBieSB0aGUgQ2hhbm5lbE1hcHBpbmdGYW1pbHkgd291bGQgYmUgY2hhbmdlZCBhcyBzcGVjaWZp
ZWQgYnkgdGhlIENoYW5uZWxMYXlvdXQuCisgICAgICAgICAgICBUaGUgcHJvY2VkdXJlIG9mIHRo
ZSBhc3NpZ25tZW50IGlzIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgICAgICAxLiBEZWNv
ZGVkIGNoYW5uZWxzIGFyZSBtYXBwZWQgdG8gb3V0cHV0IGNoYW5uZWxzIGFjY29yZGluZyB0byB0
aGUgQ2hhbm5lbE1hcHBpbmdUYWJsZS4KKyAgICAgICAgICAgICAgICAyLiBPdXRwdXQgY2hhbm5l
bHMgYXJlIG1hcHBlZCB0byBsb3Vkc3BlYWtlciBwb3NpdGlvbnMgYWNjb3JkaW5nIHRvIHRoZSBD
aGFubmVsTGF5b3V0LgorCisgICAgICAgICAgICBJbiB0aGlzIHdheSwgdGhlIHBhcmFtZXRlcnMg
b2YgdGhlIE9wdXMgU3BlY2lmaWMgQm94IGFyZSBwcm9jZXNzZWQgYmVmb3JlIHRoZSBDaGFubmVs
TGF5b3V0LCBhbmQgdGhlCisgICAgICAgICAgICBDaGFubmVsTGF5b3V0IHNoYWxsIGZvbGxvdyB0
aGUgT3B1cyBTcGVjaWZpYyBCb3guCisKKyAgICAgICAgNC41LjIgQ29tcG9zaXRpb24gb24gYWxs
IGFjdGl2ZSB0cmFja3MgKGluZm9ybWF0aXZlKTxhIG5hbWU9IjQuNS4yIj48L2E+CisgICAgICAg
ICAgICBCeSB0aGUgYXBwbGljYXRpb24gb2YgYWx0ZXJuYXRlX2dyb3VwIGluIHRoZSBUcmFjayBI
ZWFkZXIgQm94LCB3aG9sZSBhdWRpbyBjaGFubmVscyBpbiBhbGwgYWN0aXZlIHRyYWNrcyBmcm9t
CisgICAgICAgICAgICBub24tYWx0ZXJuYXRlIGdyb3VwIGFuZC9vciBkaWZmZXJlbnQgYWx0ZXJu
YXRlIGdyb3VwIGZyb20gZWFjaCBvdGhlciBhcmUgY29tcG9zaXRlZCBpbnRvIHRoZSBwcmVzZW50
YXRpb24uIElmCisgICAgICAgICAgICBhbiBPcHVzIHNhbXBsZSBjb25zaXN0cyBvZiBtdWx0aXBs
ZSBPcHVzIGJpdHN0cmVhbXMsIGl0IGNhbiBiZSBzcGxpdHRlZCBpbnRvIGluZGl2aWR1YWwgT3B1
cyBiaXRzdHJlYW1zIGFuZAorICAgICAgICAgICAgcmVjb25zdHJ1Y3RlZCBpbnRvIG5ldyBPcHVz
IHNhbXBsZXMgYXMgbG9uZyBhcyBldmVyeSBPcHVzIGJpdHN0cmVhbSBoYXMgdGhlIHNhbWUgdG90
YWwgZHVyYXRpb24gaW4gZWFjaCBPcHVzCisgICAgICAgICAgICBzYW1wbGUuIFRoaXMgbmF0dXJl
IGNhbiBiZSB1dGlsaXplZCB0byBlbmNhcHN1bGF0ZSBhIHNpbmdsZSBPcHVzIGJpdHN0cmVhbSBp
biBlYWNoIHRyYWNrIHdpdGhvdXQgYnJlYWtpbmcgdGhlCisgICAgICAgICAgICBvcmlnaW5hbCBj
aGFubmVsIGxheW91dC4KKworICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgbGV0J3Mgc2F5IHRo
ZXJlIGlzIGEgZm9sbG93aW5nIHRyYWNrOgorICAgICAgICAgICAgICAgIE91dHB1dENoYW5uZWxD
b3VudCA9IDY7CisgICAgICAgICAgICAgICAgU3RyZWFtQ291bnQgICAgICAgID0gNDsKKyAgICAg
ICAgICAgICAgICBDb3VwbGVkQ291bnQgICAgICAgPSAyOworICAgICAgICAgICAgICAgIENoYW5u
ZWxNYXBwaW5nICAgICA9IHswLCA0LCAxLCAyLCAzLCA1fTsgLy8gZnJvbnQgbGVmdCwgZnJvbnQg
Y2VudGVyLCBmcm9udCByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYXIgbGVmdCwgcmVhciByaWdodCwgTEZFCisgICAg
ICAgICAgICBIZXJlLCB0byBjb3VwbGUgZnJvbnQgbGVmdCB0byBmcm9udCByaWdodCBjaGFubmVs
cyBpbnRvIHRoZSBmaXJzdCBzdHJlYW0sIGFuZCBjb3VwbGUgcmVhciBsZWZ0IHRvIHJlYXIgcmln
aHQKKyAgICAgICAgICAgIGNoYW5uZWxzIGludG8gdGhlIHNlY29uZCBzdHJlYW0sIHJlb3JkZXJp
bmcgaXMgbmVlZGVkIHNpbmNlIGNvdXBsZWQgc3RyZWFtcyBtdXN0IHByZWNlZGUgYW55IG5vbi1j
b3VwbGVkCisgICAgICAgICAgICBzdHJlYW0uIFlvdSBleHRyYWN0IHRoZSBmb3VyIE9wdXMgYml0
c3RyZWFtcyBmcm9tIHRoaXMgdHJhY2sgYW5kIHlvdSBlbmNhcHN1bGF0ZSB0d28gb2YgdGhlIGZv
dXIgaW50byBhIHRyYWNrCisgICAgICAgICAgICBhbmQgdGhlIG90aGVycyBpbnRvIGFub3RoZXIg
dHJhY2suIFRoZSBmb3JtZXIgdHJhY2sgaXMgYXMgZm9sbG93cy4KKyAgICAgICAgICAgICAgICBP
dXRwdXRDaGFubmVsQ291bnQgPSA2OworICAgICAgICAgICAgICAgIFN0cmVhbUNvdW50ICAgICAg
ICA9IDI7CisgICAgICAgICAgICAgICAgQ291cGxlZENvdW50ICAgICAgID0gMjsKKyAgICAgICAg
ICAgICAgICBDaGFubmVsTWFwcGluZyAgICAgPSB7MCwgMjU1LCAxLCAyLCAzLCAyNTV9OyAvLyBm
cm9udCBsZWZ0LCBmcm9udCBjZW50ZXIsIGZyb250IHJpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYXIgbGVmdCwg
cmVhciByaWdodCwgTEZFCisgICAgICAgICAgICBBbmQgdGhlIGxhdHRlciB0cmFjayBpcyBhcyBm
b2xsb3dzLgorICAgICAgICAgICAgICAgIE91dHB1dENoYW5uZWxDb3VudCA9IDY7CisgICAgICAg
ICAgICAgICAgU3RyZWFtQ291bnQgICAgICAgID0gMjsKKyAgICAgICAgICAgICAgICBDb3VwbGVk
Q291bnQgICAgICAgPSAwOworICAgICAgICAgICAgICAgIENoYW5uZWxNYXBwaW5nICAgICA9IHsy
NTUsIDAsIDI1NSwgMjU1LCAyNTUsIDF9OyAvLyBmcm9udCBsZWZ0LCBmcm9udCBjZW50ZXIsIGZy
b250IHJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZWFyIGxlZnQsIHJlYXIgcmlnaHQsIExGRQorICAgICAg
ICAgICAgSW4gYWRkaXRpb24sIHRoZSB2YWx1ZSBvZiB0aGUgYWx0ZXJuYXRlX2dyb3VwIGZpZWxk
IGluIHRoZSBib3RoIHRyYWNrcyBpcyBzZXQgdG8gMC4gQXMgdGhlIHJlc3VsdCwgdGhlIHBsYXll
cgorICAgICAgICAgICAgbWF5IHBsYXkgYXMgaWYgY2hhbm5lbHMgd2l0aCAyNTUgYXJlIG5vdCBw
cmVzZW50LCBhbmQgcGxheSB0aGUgcHJlc2VudGF0aW9uIGNvbnN0cnVjdGVkIGZyb20gdGhlIGJv
dGggdHJhY2tzCisgICAgICAgICAgICBpbiB0aGUgc2FtZSBjaGFubmVsIGxheW91dCBhcyB0aGUg
b25lIG9mIHRoZSBvcmlnaW5hbCB0cmFjay4gS2VlcCBpbiBtaW5kIHRoYXQgdGhlIHdheSBvZiB0
aGUgY29tcG9zaXRpb24sIGkuZS4KKyAgICAgICAgICAgIHRoZSBtaXhpbmcgZm9yIHBsYXliYWNr
LCBpcyBub3QgZGVmaW5lZCBoZXJlLCBhbmQgbWF5YmUgZGlmZmVyZW50IHJlc3VsdHMgY291bGQg
b2NjdXIgZXhjZXB0IGZvciB0aGUgY2hhbm5lbAorICAgICAgICAgICAgbGF5b3V0IG9mIHRoZSBv
cmlnaW5hbCwgZGVwZW5kaW5nIG9uIGFuIGltcGxlbWVudGF0aW9uIG9yIHRoZSBkZWZpbml0aW9u
IG9mIGEgZGVyaXZlZCBmaWxlIGZvcm1hdC4KKworICAgICAgICAgICAgTm90ZSB0aGF0IHNvbWUg
ZGVyaXZlZCBmaWxlIGZvcm1hdHMgbWF5IHNwZWNpZnkgdGhlIHJlc3RyaWN0aW9uIHRvIGlnbm9y
ZSBhbHRlcm5hdGUgZ3JvdXBpbmcuIEluIHRoZSBjb250ZXh0CisgICAgICAgICAgICBvZiBzdWNo
IGZpbGUgZm9ybWF0cywgdGhpcyBhcHBsaWNhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiBUaGlzIHVu
YXZhaWxhYmlsaXR5IGRvZXMgbm90IG1lYW4gaW5jb21wYXRpYmlsaXRpZXMKKyAgICAgICAgICAg
IGFtb25nIGZpbGUgZm9ybWF0cyB1bmxlc3MgdGhlIHJlc3RyaWN0aW9uIHRvIHRoZSB2YWx1ZSBv
ZiB0aGUgYWx0ZXJuYXRlX2dyb3VwIGZpZWxkIGlzIHNwZWNpZmllZCBhbmQgYnJpbmdzCisgICAg
ICAgICAgICBhYm91dCBhbnkgY29uZmxpY3QgYW1vbmcgdGhlaXIgZGVmaW5pdGlvbnMuCiA8YSBu
YW1lPSI0LjYiPjwvYT4KICAgICA0LjYgQmFzaWMgU3RydWN0dXJlIChpbmZvcm1hdGl2ZSkKICAg
ICAgICAgNC42LjEgSW5pdGlhbCBNb3ZpZTxhIG5hbWU9IjQuNi4xIj48L2E+CkBAIC0zOTUsNyAr
NDIyLDcgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICstLS0tKy0tLS0rLS0tLSst
LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwog
ICAgICAgICAgICAgfCAgICB8ICAgIHxzZ3BkfCogICB8ICAgIHwgICAgfCAgICB8ICAgIHwgU2Ft
cGxlIEdyb3VwIERlc2NyaXB0aW9uIEJveCB8CiAgICAgICAgICAgICArLS0tLSstLS0tKy0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LSAgICAgICAgICAgIHwgICAgfCAgICB8c2JncHwqICAgfCAgICB8ICAgIHwgICAgfCAgICB8IFNh
bXBsZSB0byBHcm91cCBCb3ggICAgICAgICAgfAorICAgICAgICAgICAgfCAgICB8ICAgIHxzYmdw
fCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgU2FtcGxlIHRvIEdyb3VwIEJveCAgICAgICAgICB8
CiAgICAgICAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgICAgICAgICAgICAgICAgICBGaWd1
cmUgMyAtIEJhc2ljIHN0cnVjdHVyZSBvZiBNb3ZpZSBGcmFnbWVudCBCb3gKQEAgLTQwNywxNCAr
NDM0LDE0IEBAIFRhYmxlIG9mIENvbnRlbnRzCiA8YSBuYW1lPSI0LjciPjwvYT4KICAgICA0Ljcg
RXhhbXBsZSBvZiBFbmNhcHN1bGF0aW9uIChpbmZvcm1hdGl2ZSkKICAgICAgICAgW0ZpbGVdCi0g
ICAgICAgICAgICBzaXplID0gMTc3OTAKKyAgICAgICAgICAgIHNpemUgPSAxNzc1NwogICAgICAg
ICAgICAgW2Z0eXA6IEZpbGUgVHlwZSBCb3hdCiAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAw
CiAgICAgICAgICAgICAgICAgc2l6ZSA9IDI0Ci0gICAgICAgICAgICAgICAgbWFqb3JfYnJhbmQg
PSBtcDQyIDogTVA0IHZlcnNpb24gMgorICAgICAgICAgICAgICAgIG1ham9yX2JyYW5kID0gT3B1
cyA6IE9wdXMgYXVkaW8gY29kaW5nCiAgICAgICAgICAgICAgICAgbWlub3JfdmVyc2lvbiA9IDAK
ICAgICAgICAgICAgICAgICBjb21wYXRpYmxlX2JyYW5kcwotICAgICAgICAgICAgICAgICAgICBi
cmFuZFswXSA9IG1wNDIgOiBNUDQgdmVyc2lvbiAyCisgICAgICAgICAgICAgICAgICAgIGJyYW5k
WzBdID0gT3B1cyA6IE9wdXMgYXVkaW8gY29kaW5nCiAgICAgICAgICAgICAgICAgICAgIGJyYW5k
WzFdID0gaXNvMiA6IElTTyBCYXNlIE1lZGlhIGZpbGUgZm9ybWF0IHZlcnNpb24gMgogICAgICAg
ICAgICAgW21vb3Y6IE1vdmllIEJveF0KICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDI0CkBA
IC00NDQsMzAgKzQ3MSwxMSBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgICAg
ICBwcmVfZGVmaW5lZCA9IDB4MDAwMDAwMDAKICAgICAgICAgICAgICAgICAgICAgcHJlX2RlZmlu
ZWQgPSAweDAwMDAwMDAwCiAgICAgICAgICAgICAgICAgICAgIG5leHRfdHJhY2tfSUQgPSAyCi0g
ICAgICAgICAgICAgICAgW2lvZHM6IE9iamVjdCBEZXNjcmlwdG9yIEJveF0KLSAgICAgICAgICAg
ICAgICAgICAgcG9zaXRpb24gPSAxNDAKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDMzCi0g
ICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSAwCi0gICAgICAgICAgICAgICAgICAgIGZsYWdz
ID0gMHgwMDAwMDAKLSAgICAgICAgICAgICAgICAgICAgW3RhZyA9IDB4MTA6IE1QNF9JT0RdCi0g
ICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlQ2xhc3NTaXplID0gMTYKLSAgICAgICAg
ICAgICAgICAgICAgICAgIE9iamVjdERlc2NyaXB0b3JJRCA9IDEKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFVSTF9GbGFnID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUlubGlu
ZVByb2ZpbGVMZXZlbEZsYWcgPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCA9
IDB4ZgotICAgICAgICAgICAgICAgICAgICAgICAgT0RQcm9maWxlTGV2ZWxJbmRpY2F0aW9uID0g
MHhmZgotICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmVQcm9maWxlTGV2ZWxJbmRpY2F0aW9u
ID0gMHhmZgotICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9maWxlTGV2ZWxJbmRpY2F0
aW9uID0gMHhmZQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzdWFsUHJvZmlsZUxldmVsSW5k
aWNhdGlvbiA9IDB4ZmYKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzUHJvZmlsZUxl
dmVsSW5kaWNhdGlvbiA9IDB4ZmYKLSAgICAgICAgICAgICAgICAgICAgICAgIFt0YWcgPSAweDBl
OiBFU19JRF9JbmNdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZUNsYXNz
U2l6ZSA9IDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFja19JRCA9IDEKICAgICAg
ICAgICAgICAgICBbdHJhazogVHJhY2sgQm94XQotICAgICAgICAgICAgICAgICAgICBwb3NpdGlv
biA9IDE3MworICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDE0MAogICAgICAgICAgICAg
ICAgICAgICBzaXplID0gNjA4CiAgICAgICAgICAgICAgICAgICAgIFt0a2hkOiBUcmFjayBIZWFk
ZXIgQm94XQotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAxODEKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMTQ4CiAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplID0gOTIKICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSAwCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncyA9IDB4MDAwMDA3CkBAIC00OTIsNyArNTAwLDcgQEAgVGFibGUg
b2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMC4wMDAwMDAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDAuMDAwMDAwCiAgICAgICAgICAgICAgICAg
ICAgIFtlZHRzOiBFZGl0IEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0g
MjczCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDI0MAogICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZSA9IDM2CiAgICAgICAgICAgICAgICAgICAgICAgICBbZWxzdDogRWRp
dCBMaXN0IEJveF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDI4MQpA
QCAtNTA1LDEwICs1MTMsMTAgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVkaWFfdGltZSA9IDMxMgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZWRpYV9yYXRlID0gMS4wMDAwMDAKICAgICAgICAgICAgICAgICAgICAgW21kaWE6
IE1lZGlhIEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMzA5CisgICAg
ICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDI3NgogICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZSA9IDQ3MgogICAgICAgICAgICAgICAgICAgICAgICAgW21kaGQ6IE1lZGlhIEhlYWRl
ciBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSAzMTcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDI4NAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUgPSAzMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24g
PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwMApAQCAtNTE5
LDcgKzUyNyw3IEBAIFRhYmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFuZ3VhZ2UgPSB1bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfZGVmaW5l
ZCA9IDB4MDAwMAogICAgICAgICAgICAgICAgICAgICAgICAgW2hkbHI6IEhhbmRsZXIgUmVmZXJl
bmNlIEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDM0OQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMzE2CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZSA9IDUxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
biA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IDB4MDAwMDAwCkBAIC01
MzAsNDEgKzUzOCw0MSBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc2VydmVkID0gMHgwMDAwMDAwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWUgPSBYaXBoIEF1ZGlvIEhhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5m
OiBNZWRpYSBJbmZvcm1hdGlvbiBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z
aXRpb24gPSA0MDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDM2Nwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAzODEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbc21oZDogU291bmQgTWVkaWEgSGVhZGVyIEJveF0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA0MDgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zaXRpb24gPSAzNzUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZSA9IDE2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSAwCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5jZSA9IDAuMDAwMDAwCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkID0gMHgwMDAwCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW2RpbmY6IERhdGEgSW5mb3JtYXRpb24gQm94XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3NpdGlvbiA9IDQyNAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwb3NpdGlvbiA9IDM5MQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
ID0gMzYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RyZWY6IERhdGEgUmVmZXJl
bmNlIEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0g
NDMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDM5OQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDI4CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwMAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cnlfY291bnQgPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbdXJsIDogRGF0YSBFbnRyeSBVcmwgQm94XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNDQ4CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA0MTUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplID0gMTIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbiA9IGluIHRoZSBzYW1lIGZpbGUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbc3RibDogU2FtcGxlIFRhYmxlIEJveF0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9zaXRpb24gPSA0NjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zaXRpb24gPSA0MjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9
IDMyMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RzZDogU2FtcGxlIERlc2Ny
aXB0aW9uIEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9u
ID0gNDY4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDQz
NQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDc5CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwMAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW50cnlfY291bnQgPSAxCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbT3B1czogQXVkaW8gRGVzY3JpcHRpb25dCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSA0ODQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDQ1MQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSA2MwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2VydmVkID0gMHgwMDAwMDAwMDAwMDAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3JlZmVyZW5jZV9pbmRleCA9IDEKQEAgLTU3
Nyw3ICs1ODUsNyBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2VydmVkID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZXJhdGUgPSA0ODAwMC4wMDAwMDAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbZE9wczogT3B1cyBTcGVjaWZpYyBCb3hdCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNTIwCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNDg3CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAyNwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0gMAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRDaGFubmVsQ291
bnQgPSA2CkBAIC01OTUsNyArNjAzLDcgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLT4gMzogc2lkZSByaWdodAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSAtPiA1OiBy
ZWFyIGNlbnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R0czogRGVjb2Rp
bmcgVGltZSB0byBTYW1wbGUgQm94XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zaXRpb24gPSA1NDcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
c2l0aW9uID0gNTE0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0g
MjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSAwCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IDB4MDAwMDAwCkBAIC02MDQs
NyArNjEyLDcgQEAgVGFibGUgb2YgQ29udGVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVfY291bnQgPSAxOAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhbXBsZV9kZWx0YSA9IDE5MjAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3N0c2M6IFNhbXBsZSBUbyBDaHVuayBCb3hdCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDU3MQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9zaXRpb24gPSA1MzgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUgPSA0MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVyc2lvbiA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0g
MHgwMDAwMDAKQEAgLTYxOCw3ICs2MjYsNyBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXNfcGVyX2NodW5rID0gNQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9kZXNjcmlwdGlvbl9p
bmRleCA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0c3o6IFNhbXBsZSBT
aXplIEJveF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0g
NjExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDU3OAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDkyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAweDAwMDAwMApAQCAtNjQzLDcgKzY1MSw3IEBAIFRh
YmxlIG9mIENvbnRlbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRy
eV9zaXplWzE2XSA9IDk2MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50
cnlfc2l6ZVsxN10gPSA4NDgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0Y286
IENodW5rIE9mZnNldCBCb3hdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
b3NpdGlvbiA9IDcwMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRp
b24gPSA2NzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAyNAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IDAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMHgwMDAwMDAKQEAgLTY1MSw3ICs2
NTksNyBAQCBUYWJsZSBvZiBDb250ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2h1bmtfb2Zmc2V0WzBdID0gNzk3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaHVua19vZmZzZXRbMV0gPSAxMzA5NgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbc2dwZDogU2FtcGxlIEdyb3VwIERlc2NyaXB0aW9uIEJveF0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNzI3CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDY5NAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZSA9IDI2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ZXJzaW9uID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3MgPSAweDAwMDAwMApAQCAtNjYwLDcgKzY2OCw3IEBAIFRhYmxlIG9mIENvbnRlbnRzCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeV9jb3VudCA9IDEKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGxfZGlzdGFuY2VbMF0gPSAtMgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbc2JncDogU2FtcGxlIHRvIEdyb3VwIEJveF0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNzUzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDcyMAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDI4CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgPSAweDAwMDAwMApAQCAtNjcwLDEwICs2NzgsMTAgQEAgVGFibGUgb2YgQ29u
dGVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfY291
bnQgPSAxOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2Rl
c2NyaXB0aW9uX2luZGV4ID0gMQogICAgICAgICAgICAgW2ZyZWU6IEZyZWUgU3BhY2UgQm94XQot
ICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNzgxCisgICAgICAgICAgICAgICAgcG9zaXRpb24g
PSA3NDgKICAgICAgICAgICAgICAgICBzaXplID0gOAogICAgICAgICAgICAgW21kYXQ6IE1lZGlh
IERhdGEgQm94XQotICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gNzg5CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24gPSA3NTYKICAgICAgICAgICAgICAgICBzaXplID0gMTcwMDEKIDxhIG5hbWU9
IjUiPjwvYT4KIDUgQXV0aG9ycycgQWRkcmVzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9pbmNsdWRlL29wdXMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
aW5jbHVkZS9vcHVzLmgKaW5kZXggNWJlNzNkZGY0ZTVkZDJlMGNkY2YwNmY2ZjZlOWQ1MDdkZDBk
YmJjYi4uZDI4MmYyMWQyNWE3MTlmZjBlNDQzY2QzMzJmM2MzODhmNDY0N2RlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9pbmNsdWRlL29wdXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL2luY2x1ZGUvb3B1cy5oCkBAIC01MzEsNyArNTMxLDcgQEAg
T1BVU19FWFBPUlQgaW50IG9wdXNfcGFja2V0X3BhcnNlKAogICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqZnJhbWVzWzQ4XSwKICAgIG9wdXNfaW50MTYgc2l6ZVs0OF0sCiAgICBpbnQgKnBheWxvYWRf
b2Zmc2V0Ci0pIE9QVVNfQVJHX05PTk5VTEwoMSkgT1BVU19BUkdfTk9OTlVMTCg0KTsKKykgT1BV
U19BUkdfTk9OTlVMTCgxKSBPUFVTX0FSR19OT05OVUxMKDUpOwogCiAvKiogR2V0cyB0aGUgYmFu
ZHdpZHRoIG9mIGFuIE9wdXMgcGFja2V0LgogICAqIEBwYXJhbSBbaW5dIGRhdGEgPHR0PmNoYXIq
PC90dD46IE9wdXMgcGFja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2luY2x1ZGUvb3B1c19kZWZpbmVzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL2lu
Y2x1ZGUvb3B1c19kZWZpbmVzLmgKaW5kZXggNjUzZDkxNjgyZmIzMzhlMzhiZjQzMmE1NGNkODYy
ZDQ0ZmE2MTAzOC4uZDE0MTQxOGIyMTQ2Y2M5YmNkYzNkNDIzMGRiYTA5MmNkM2IwYWIxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9pbmNsdWRlL29wdXNfZGVmaW5lcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvaW5jbHVkZS9vcHVzX2RlZmluZXMu
aApAQCAtMTcwLDYgKzE3MCw5IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBPUFVTX0dFVF9QSEFT
RV9JTlZFUlNJT05fRElTQUJMRURfUkVRVUVTVCA0MDQ3CiAjZGVmaW5lIE9QVVNfR0VUX0lOX0RU
WF9SRVFVRVNUICAgICAgICAgICAgICA0MDQ5CiAKKy8qKiBEZWZpbmVzIGZvciB0aGUgcHJlc2Vu
Y2Ugb2YgZXh0ZW5kZWQgQVBJcy4gKi8KKyNkZWZpbmUgT1BVU19IQVZFX09QVVNfUFJPSkVDVElP
Tl9ICisKIC8qIE1hY3JvcyB0byB0cmlnZ2VyIGNvbXBpbGF0aW9uIGVycm9ycyB3aGVuIHRoZSB3
cm9uZyB0eXBlcyBhcmUgcHJvdmlkZWQgdG8gYSBDVEwgKi8KICNkZWZpbmUgX19vcHVzX2NoZWNr
X2ludCh4KSAoKCh2b2lkKSgoeCkgPT0gKG9wdXNfaW50MzIpMCkpLCAob3B1c19pbnQzMikoeCkp
CiAjZGVmaW5lIF9fb3B1c19jaGVja19pbnRfcHRyKHB0cikgKChwdHIpICsgKChwdHIpIC0gKG9w
dXNfaW50MzIqKShwdHIpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvaW5jbHVkZS9vcHVzX3Byb2plY3Rpb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
aW5jbHVkZS9vcHVzX3Byb2plY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGFiZjRlODVjZjBiZTY5OGYz
MjE1MzI1YmVjNDBjNTY0M2I1MjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9pbmNsdWRlL29wdXNfcHJv
amVjdGlvbi5oCkBAIC0wLDAgKzEsNTY4IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTcgR29vZ2xl
IEluYy4KKyAgIFdyaXR0ZW4gYnkgQW5kcmV3IEFsbGVuICovCisvKgorICAgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
ICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAgIGFyZSBtZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoqCisg
KiBAZmlsZSBvcHVzX3Byb2plY3Rpb24uaAorICogQGJyaWVmIE9wdXMgcHJvamVjdGlvbiByZWZl
cmVuY2UgQVBJCisgKi8KKworI2lmbmRlZiBPUFVTX1BST0pFQ1RJT05fSAorI2RlZmluZSBPUFVT
X1BST0pFQ1RJT05fSAorCisjaW5jbHVkZSAib3B1c19tdWx0aXN0cmVhbS5oIgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBAY29uZCBPUFVTX0lOVEVS
TkFMX0RPQyAqLworCisvKiogVGhlc2UgYXJlIHRoZSBhY3R1YWwgZW5jb2RlciBhbmQgZGVjb2Rl
ciBDVEwgSUQgbnVtYmVycy4KKyAgKiBUaGV5IHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseSBi
eSBhcHBsaWNhdGlvbnMuYworICAqIEluIGdlbmVyYWwsIFNFVHMgc2hvdWxkIGJlIGV2ZW4gYW5k
IEdFVHMgc2hvdWxkIGJlIG9kZC4qLworLyoqQHsqLworI2RlZmluZSBPUFVTX1BST0pFQ1RJT05f
R0VUX0RFTUlYSU5HX01BVFJJWF9HQUlOX1JFUVVFU1QgICAgNjAwMQorI2RlZmluZSBPUFVTX1BS
T0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9TSVpFX1JFUVVFU1QgICAgNjAwMworI2RlZmlu
ZSBPUFVTX1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9SRVFVRVNUICAgICAgICAgNjAw
NQorLyoqQH0qLworCisKKy8qKiBAZW5kY29uZCAqLworCisvKiogQGRlZmdyb3VwIG9wdXNfcHJv
amVjdGlvbl9jdGxzIFByb2plY3Rpb24gc3BlY2lmaWMgZW5jb2RlciBhbmQgZGVjb2RlciBDVExz
CisgICoKKyAgKiBUaGVzZSBhcmUgY29udmVuaWVuY2UgbWFjcm9zIHRoYXQgYXJlIHNwZWNpZmlj
IHRvIHRoZQorICAqIG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2N0bCgpIGFuZCBvcHVzX3Byb2pl
Y3Rpb25fZGVjb2Rlcl9jdGwoKQorICAqIGludGVyZmFjZS4KKyAgKiBUaGUgQ1RMcyBmcm9tIEBy
ZWYgb3B1c19nZW5lcmljY3RscywgQHJlZiBvcHVzX2VuY29kZXJjdGxzLAorICAqIEByZWYgb3B1
c19kZWNvZGVyY3RscywgYW5kIEByZWYgb3B1c19tdWx0aXN0cmVhbV9jdGxzIG1heSBiZSBhcHBs
aWVkIHRvIGEKKyAgKiBwcm9qZWN0aW9uIGVuY29kZXIgb3IgZGVjb2RlciBhcyB3ZWxsLgorICAq
LworLyoqQHsqLworCisvKiogR2V0cyB0aGUgZ2FpbiAoaW4gZEIuIFM3LjgtZm9ybWF0KSBvZiB0
aGUgZGVtaXhpbmcgbWF0cml4IGZyb20gdGhlIGVuY29kZXIuCisgICogQHBhcmFtW291dF0geCA8
dHQ+b3B1c19pbnQzMiAqPC90dD46IFJldHVybnMgdGhlIGdhaW4gKGluIGRCLiBTNy44LWZvcm1h
dCkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGRlbWl4
aW5nIG1hdHJpeC4KKyAgKiBAaGlkZWluaXRpYWxpemVyCisgICovCisjZGVmaW5lIE9QVVNfUFJP
SkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX0dBSU4oeCkgT1BVU19QUk9KRUNUSU9OX0dFVF9E
RU1JWElOR19NQVRSSVhfR0FJTl9SRVFVRVNULCBfX29wdXNfY2hlY2tfaW50X3B0cih4KQorCisK
Ky8qKiBHZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBkZW1peGluZyBtYXRyaXggZnJvbSB0
aGUgZW5jb2Rlci4KKyAgKiBAcGFyYW1bb3V0XSB4IDx0dD5vcHVzX2ludDMyICo8L3R0PjogUmV0
dXJucyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVtaXhpbmcgbWF0cml4LgorICAqIEBoaWRlaW5pdGlhbGl6ZXIKKyAg
Ki8KKyNkZWZpbmUgT1BVU19QUk9KRUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfU0laRSh4KSBP
UFVTX1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9TSVpFX1JFUVVFU1QsIF9fb3B1c19j
aGVja19pbnRfcHRyKHgpCisKKworLyoqIENvcGllcyB0aGUgZGVtaXhpbmcgbWF0cml4IHRvIHRo
ZSBzdXBwbGllZCBwb2ludGVyIGxvY2F0aW9uLgorICAqIEBwYXJhbVtvdXRdIHggPHR0PnVuc2ln
bmVkIGNoYXIgKjwvdHQ+OiBSZXR1cm5zIHRoZSBkZW1peGluZyBtYXRyaXggdG8gdGhlCisgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVkIHBvaW50ZXIg
bG9jYXRpb24uCisgICogQHBhcmFtIHkgPHR0Pm9wdXNfaW50MzI8L3R0PjogVGhlIHNpemUgaW4g
Ynl0ZXMgb2YgdGhlIHJlc2VydmVkIG1lbW9yeSBhdCB0aGUKKyAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvaW50ZXIgbG9jYXRpb24uCisgICogQGhpZGVpbml0aWFsaXplcgorICAq
LworI2RlZmluZSBPUFVTX1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWCh4LHkpIE9QVVNf
UFJPSkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX1JFUVVFU1QsIHgsIF9fb3B1c19jaGVja19p
bnQoeSkKKworCisvKipAfSovCisKKy8qKiBPcHVzIHByb2plY3Rpb24gZW5jb2RlciBzdGF0ZS4K
KyAqIFRoaXMgY29udGFpbnMgdGhlIGNvbXBsZXRlIHN0YXRlIG9mIGEgcHJvamVjdGlvbiBPcHVz
IGVuY29kZXIuCisgKiBJdCBpcyBwb3NpdGlvbiBpbmRlcGVuZGVudCBhbmQgY2FuIGJlIGZyZWVs
eSBjb3BpZWQuCisgKiBAc2VlIG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfY3Jl
YXRlCisgKi8KK3R5cGVkZWYgc3RydWN0IE9wdXNQcm9qZWN0aW9uRW5jb2RlciBPcHVzUHJvamVj
dGlvbkVuY29kZXI7CisKKworLyoqIE9wdXMgcHJvamVjdGlvbiBkZWNvZGVyIHN0YXRlLgorICAq
IFRoaXMgY29udGFpbnMgdGhlIGNvbXBsZXRlIHN0YXRlIG9mIGEgcHJvamVjdGlvbiBPcHVzIGRl
Y29kZXIuCisgICogSXQgaXMgcG9zaXRpb24gaW5kZXBlbmRlbnQgYW5kIGNhbiBiZSBmcmVlbHkg
Y29waWVkLgorICAqIEBzZWUgb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfY3JlYXRlCisgICogQHNl
ZSBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9pbml0CisgICovCit0eXBlZGVmIHN0cnVjdCBPcHVz
UHJvamVjdGlvbkRlY29kZXIgT3B1c1Byb2plY3Rpb25EZWNvZGVyOworCisKKy8qKlxuYW1lIFBy
b2plY3Rpb24gZW5jb2RlciBmdW5jdGlvbnMgKi8KKy8qKkB7Ki8KKworLyoqIEdldHMgdGhlIHNp
emUgb2YgYW4gT3B1c1Byb2plY3Rpb25FbmNvZGVyIHN0cnVjdHVyZS4KKyAgKiBAcGFyYW0gY2hh
bm5lbHMgPHR0PmludDwvdHQ+OiBUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IGNoYW5uZWxzIHRv
IGVuY29kZS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUg
bm8gbW9yZSB0aGFuIDI1NS4KKyAgKiBAcGFyYW0gbWFwcGluZ19mYW1pbHkgPHR0PmludDwvdHQ+
OiBUaGUgbWFwcGluZyBmYW1pbHkgdG8gdXNlIGZvciBzZWxlY3RpbmcKKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwcm9wcmlhdGUgcHJvamVjdGlvbi4KKyAg
KiBAcmV0dXJucyBUaGUgc2l6ZSBpbiBieXRlcyBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVy
cm9yIGNvZGUKKyAgKiAgICAgICAgICAoc2VlIEByZWYgb3B1c19lcnJvcmNvZGVzKSBvbiBlcnJv
ci4KKyAgKi8KK09QVVNfRVhQT1JUIE9QVVNfV0FSTl9VTlVTRURfUkVTVUxUIG9wdXNfaW50MzIg
b3B1c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9nZXRfc2l6ZSgKKyAgICBpbnQgY2hh
bm5lbHMsCisgICAgaW50IG1hcHBpbmdfZmFtaWx5CispOworCisKKy8qKiBBbGxvY2F0ZXMgYW5k
IGluaXRpYWxpemVzIGEgcHJvamVjdGlvbiBlbmNvZGVyIHN0YXRlLgorICAqIENhbGwgb3B1c19w
cm9qZWN0aW9uX2VuY29kZXJfZGVzdHJveSgpIHRvIHJlbGVhc2UKKyAgKiB0aGlzIG9iamVjdCB3
aGVuIGZpbmlzaGVkLgorICAqIEBwYXJhbSBGcyA8dHQ+b3B1c19pbnQzMjwvdHQ+OiBTYW1wbGlu
ZyByYXRlIG9mIHRoZSBpbnB1dCBzaWduYWwgKGluIEh6KS4KKyAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG9uZSBvZiA4MDAwLCAxMjAwMCwgMTYwMDAsCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MDAwLCBvciA0ODAwMC4KKyAgKiBA
cGFyYW0gY2hhbm5lbHMgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIGlu
cHV0IHNpZ25hbC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3Qg
YmUgYXQgbW9zdCAyNTUuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbWF5
IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mCisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29kZWQgY2hhbm5lbHMgKDxjb2RlPnN0cmVhbXMgKworICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvdXBsZWRfc3RyZWFtczwvY29kZT4pLgorICAqIEBwYXJhbSBt
YXBwaW5nX2ZhbWlseSA8dHQ+aW50PC90dD46IFRoZSBtYXBwaW5nIGZhbWlseSB0byB1c2UgZm9y
IHNlbGVjdGluZworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBh
cHByb3ByaWF0ZSBwcm9qZWN0aW9uLgorICAqIEBwYXJhbVtvdXRdIHN0cmVhbXMgPHR0PmludCAq
PC90dD46IFRoZSB0b3RhbCBudW1iZXIgb2Ygc3RyZWFtcyB0aGF0IHdpbGwKKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBlbmNvZGVkIGZyb20gdGhlIGlucHV0Lgor
ICAqIEBwYXJhbVtvdXRdIGNvdXBsZWRfc3RyZWFtcyA8dHQ+aW50ICo8L3R0PjogTnVtYmVyIG9m
IGNvdXBsZWQgKDIgY2hhbm5lbCkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmVhbXMgdGhhdCB3aWxsIGJlIGVuY29kZWQgZnJvbSB0aGUgaW5wdXQuCisgICogQHBhcmFt
IGFwcGxpY2F0aW9uIDx0dD5pbnQ8L3R0PjogVGhlIHRhcmdldCBlbmNvZGVyIGFwcGxpY2F0aW9u
LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBvbmUg
b2YgdGhlIGZvbGxvd2luZzoKKyAgKiA8ZGw+CisgICogPGR0PiNPUFVTX0FQUExJQ0FUSU9OX1ZP
SVA8L2R0PgorICAqIDxkZD5Qcm9jZXNzIHNpZ25hbCBmb3IgaW1wcm92ZWQgc3BlZWNoIGludGVs
bGlnaWJpbGl0eS48L2RkPgorICAqIDxkdD4jT1BVU19BUFBMSUNBVElPTl9BVURJTzwvZHQ+Cisg
ICogPGRkPkZhdm9yIGZhaXRoZnVsbmVzcyB0byB0aGUgb3JpZ2luYWwgaW5wdXQuPC9kZD4KKyAg
KiA8ZHQ+I09QVVNfQVBQTElDQVRJT05fUkVTVFJJQ1RFRF9MT1dERUxBWTwvZHQ+CisgICogPGRk
PkNvbmZpZ3VyZSB0aGUgbWluaW11bSBwb3NzaWJsZSBjb2RpbmcgZGVsYXkgYnkgZGlzYWJsaW5n
IGNlcnRhaW4gbW9kZXMKKyAgKiBvZiBvcGVyYXRpb24uPC9kZD4KKyAgKiA8L2RsPgorICAqIEBw
YXJhbVtvdXRdIGVycm9yIDx0dD5pbnQgKjwvdHQ+OiBSZXR1cm5zICNPUFVTX09LIG9uIHN1Y2Nl
c3MsIG9yIGFuIGVycm9yCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGUgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rlcykgb24KKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbHVyZS4KKyAgKi8KK09QVVNfRVhQT1JUIE9QVVNfV0FSTl9VTlVT
RURfUkVTVUxUIE9wdXNQcm9qZWN0aW9uRW5jb2RlciAqb3B1c19wcm9qZWN0aW9uX2FtYmlzb25p
Y3NfZW5jb2Rlcl9jcmVhdGUoCisgICAgb3B1c19pbnQzMiBGcywKKyAgICBpbnQgY2hhbm5lbHMs
CisgICAgaW50IG1hcHBpbmdfZmFtaWx5LAorICAgIGludCAqc3RyZWFtcywKKyAgICBpbnQgKmNv
dXBsZWRfc3RyZWFtcywKKyAgICBpbnQgYXBwbGljYXRpb24sCisgICAgaW50ICplcnJvcgorKSBP
UFVTX0FSR19OT05OVUxMKDQpIE9QVVNfQVJHX05PTk5VTEwoNSk7CisKKworLyoqIEluaXRpYWxp
emUgYSBwcmV2aW91c2x5IGFsbG9jYXRlZCBwcm9qZWN0aW9uIGVuY29kZXIgc3RhdGUuCisgICog
VGhlIG1lbW9yeSBwb2ludGVkIHRvIGJ5IFxhIHN0IG11c3QgYmUgYXQgbGVhc3QgdGhlIHNpemUg
cmV0dXJuZWQgYnkKKyAgKiBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2dldF9z
aXplKCkuCisgICogVGhpcyBpcyBpbnRlbmRlZCBmb3IgYXBwbGljYXRpb25zIHdoaWNoIHVzZSB0
aGVpciBvd24gYWxsb2NhdG9yIGluc3RlYWQgb2YKKyAgKiBtYWxsb2MuCisgICogVG8gcmVzZXQg
YSBwcmV2aW91c2x5IGluaXRpYWxpemVkIHN0YXRlLCB1c2UgdGhlICNPUFVTX1JFU0VUX1NUQVRF
IENUTC4KKyAgKiBAc2VlIG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfY3JlYXRl
CisgICogQHNlZSBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2dldF9zaXplCisg
ICogQHBhcmFtIHN0IDx0dD5PcHVzUHJvamVjdGlvbkVuY29kZXIqPC90dD46IFByb2plY3Rpb24g
ZW5jb2RlciBzdGF0ZSB0byBpbml0aWFsaXplLgorICAqIEBwYXJhbSBGcyA8dHQ+b3B1c19pbnQz
MjwvdHQ+OiBTYW1wbGluZyByYXRlIG9mIHRoZSBpbnB1dCBzaWduYWwgKGluIEh6KS4KKyAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG9uZSBvZiA4MDAwLCAx
MjAwMCwgMTYwMDAsCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MDAwLCBv
ciA0ODAwMC4KKyAgKiBAcGFyYW0gY2hhbm5lbHMgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2YgY2hh
bm5lbHMgaW4gdGhlIGlucHV0IHNpZ25hbC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUaGlzIG11c3QgYmUgYXQgbW9zdCAyNTUuCisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXQgbWF5IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mCisgICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZWQgY2hhbm5lbHMgKDxjb2RlPnN0cmVhbXMgKwor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXBsZWRfc3RyZWFtczwvY29kZT4p
LgorICAqIEBwYXJhbSBzdHJlYW1zIDx0dD5pbnQ8L3R0PjogVGhlIHRvdGFsIG51bWJlciBvZiBz
dHJlYW1zIHRvIGVuY29kZSBmcm9tIHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wdXQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUg
bm8gbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMuCisgICogQHBhcmFtIGNvdXBsZWRf
c3RyZWFtcyA8dHQ+aW50PC90dD46IE51bWJlciBvZiBjb3VwbGVkICgyIGNoYW5uZWwpIHN0cmVh
bXMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZW5jb2RlLgor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgbm8g
bGFyZ2VyIHRoYW4gdGhlIHRvdGFsCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bWJlciBvZiBzdHJlYW1zLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBZGRpdGlvbmFsbHksIFRoZSB0b3RhbCBudW1iZXIgb2YKKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZCBjaGFubmVscyAoPGNvZGU+c3Ry
ZWFtcyArCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXBsZWRf
c3RyZWFtczwvY29kZT4pIG11c3QgYmUgbm8KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhbm5lbHMuCisgICog
QHBhcmFtIGFwcGxpY2F0aW9uIDx0dD5pbnQ8L3R0PjogVGhlIHRhcmdldCBlbmNvZGVyIGFwcGxp
Y2F0aW9uLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBi
ZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgKiA8ZGw+CisgICogPGR0PiNPUFVTX0FQUExJQ0FU
SU9OX1ZPSVA8L2R0PgorICAqIDxkZD5Qcm9jZXNzIHNpZ25hbCBmb3IgaW1wcm92ZWQgc3BlZWNo
IGludGVsbGlnaWJpbGl0eS48L2RkPgorICAqIDxkdD4jT1BVU19BUFBMSUNBVElPTl9BVURJTzwv
ZHQ+CisgICogPGRkPkZhdm9yIGZhaXRoZnVsbmVzcyB0byB0aGUgb3JpZ2luYWwgaW5wdXQuPC9k
ZD4KKyAgKiA8ZHQ+I09QVVNfQVBQTElDQVRJT05fUkVTVFJJQ1RFRF9MT1dERUxBWTwvZHQ+Cisg
ICogPGRkPkNvbmZpZ3VyZSB0aGUgbWluaW11bSBwb3NzaWJsZSBjb2RpbmcgZGVsYXkgYnkgZGlz
YWJsaW5nIGNlcnRhaW4gbW9kZXMKKyAgKiBvZiBvcGVyYXRpb24uPC9kZD4KKyAgKiA8L2RsPgor
ICAqIEByZXR1cm5zICNPUFVTX09LIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgKHNlZSBA
cmVmIG9wdXNfZXJyb3Jjb2RlcykKKyAgKiAgICAgICAgICBvbiBmYWlsdXJlLgorICAqLworT1BV
U19FWFBPUlQgaW50IG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfaW5pdCgKKyAg
ICBPcHVzUHJvamVjdGlvbkVuY29kZXIgKnN0LAorICAgIG9wdXNfaW50MzIgRnMsCisgICAgaW50
IGNoYW5uZWxzLAorICAgIGludCBtYXBwaW5nX2ZhbWlseSwKKyAgICBpbnQgKnN0cmVhbXMsCisg
ICAgaW50ICpjb3VwbGVkX3N0cmVhbXMsCisgICAgaW50IGFwcGxpY2F0aW9uCispIE9QVVNfQVJH
X05PTk5VTEwoMSkgT1BVU19BUkdfTk9OTlVMTCg1KSBPUFVTX0FSR19OT05OVUxMKDYpOworCisK
Ky8qKiBFbmNvZGVzIGEgcHJvamVjdGlvbiBPcHVzIGZyYW1lLgorICAqIEBwYXJhbSBzdCA8dHQ+
T3B1c1Byb2plY3Rpb25FbmNvZGVyKjwvdHQ+OiBQcm9qZWN0aW9uIGVuY29kZXIgc3RhdGUuCisg
ICogQHBhcmFtW2luXSBwY20gPHR0PmNvbnN0IG9wdXNfaW50MTYqPC90dD46IFRoZSBpbnB1dCBz
aWduYWwgYXMgaW50ZXJsZWF2ZWQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGhpcyBtdXN0IGNvbnRhaW4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGNvZGU+ZnJhbWVfc2l6ZSpjaGFubmVsczwvY29kZT4KKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy4KKyAg
KiBAcGFyYW0gZnJhbWVfc2l6ZSA8dHQ+aW50PC90dD46IE51bWJlciBvZiBzYW1wbGVzIHBlciBj
aGFubmVsIGluIHRoZSBpbnB1dAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2lnbmFsLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJl
IGFuIE9wdXMgZnJhbWUgc2l6ZSBmb3IgdGhlCisgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmNvZGVyJ3Mgc2FtcGxpbmcgcmF0ZS4KKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhdCA0OCBrSHogdGhlIHBlcm1pdHRlZCB2YWx1ZXMK
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSAxMjAsIDI0MCwgNDgwLCA5
NjAsIDE5MjAsIGFuZCAyODgwLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc2luZyBpbiBhIGR1cmF0aW9uIG9mIGxlc3MgdGhhbiAxMCBtcworICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKDQ4MCBzYW1wbGVzIGF0IDQ4IGtIeikgd2lsbCBwcmV2ZW50
IHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlciBmcm9tIHVz
aW5nIHRoZSBMUEMgb3IgaHlicmlkIG1vZGVzLgorICAqIEBwYXJhbVtvdXRdIGRhdGEgPHR0PnVu
c2lnbmVkIGNoYXIqPC90dD46IE91dHB1dCBwYXlsb2FkLgorICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBjb250YWluIHN0b3JhZ2UgZm9yIGF0
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhc3QgXGEg
bWF4X2RhdGFfYnl0ZXMuCisgICogQHBhcmFtIFtpbl0gbWF4X2RhdGFfYnl0ZXMgPHR0Pm9wdXNf
aW50MzI8L3R0PjogU2l6ZSBvZiB0aGUgYWxsb2NhdGVkCisgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IGZvciB0aGUgb3V0cHV0CisgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC4g
VGhpcyBtYXkgYmUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VkIHRvIGltcG9zZSBhbiB1cHBlciBsaW1pdCBvbgorICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YW50IGJpdHJhdGUs
IGJ1dCBzaG91bGQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub3QgYmUgdXNlZCBhcyB0aGUgb25seSBiaXRyYXRlCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC4gVXNlICNPUFVTX1NF
VF9CSVRSQVRFIHRvCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udHJvbCB0aGUgYml0cmF0ZS4KKyAgKiBAcmV0dXJucyBUaGUgbGVuZ3RoIG9m
IHRoZSBlbmNvZGVkIHBhY2tldCAoaW4gYnl0ZXMpIG9uIHN1Y2Nlc3Mgb3IgYQorICAqICAgICAg
ICAgIG5lZ2F0aXZlIGVycm9yIGNvZGUgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rlcykgb24gZmFp
bHVyZS4KKyAgKi8KK09QVVNfRVhQT1JUIE9QVVNfV0FSTl9VTlVTRURfUkVTVUxUIGludCBvcHVz
X3Byb2plY3Rpb25fZW5jb2RlKAorICAgIE9wdXNQcm9qZWN0aW9uRW5jb2RlciAqc3QsCisgICAg
Y29uc3Qgb3B1c19pbnQxNiAqcGNtLAorICAgIGludCBmcmFtZV9zaXplLAorICAgIHVuc2lnbmVk
IGNoYXIgKmRhdGEsCisgICAgb3B1c19pbnQzMiBtYXhfZGF0YV9ieXRlcworKSBPUFVTX0FSR19O
T05OVUxMKDEpIE9QVVNfQVJHX05PTk5VTEwoMikgT1BVU19BUkdfTk9OTlVMTCg0KTsKKworCisv
KiogRW5jb2RlcyBhIHByb2plY3Rpb24gT3B1cyBmcmFtZSBmcm9tIGZsb2F0aW5nIHBvaW50IGlu
cHV0LgorICAqIEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25FbmNvZGVyKjwvdHQ+OiBQcm9q
ZWN0aW9uIGVuY29kZXIgc3RhdGUuCisgICogQHBhcmFtW2luXSBwY20gPHR0PmNvbnN0IGZsb2F0
KjwvdHQ+OiBUaGUgaW5wdXQgc2lnbmFsIGFzIGludGVybGVhdmVkCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzIHdpdGggYSBub3JtYWwgcmFuZ2Ugb2YK
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsvLTEuMC4KKyAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXMgd2l0aCBhIHJhbmdl
IGJleW9uZCArLy0xLjAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZSBzdXBwb3J0ZWQgYnV0IHdpbGwgYmUgY2xpcHBlZCBieQorICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlcnMgdXNpbmcgdGhlIGludGVnZXIgQVBJIGFu
ZAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG9ubHkg
YmUgdXNlZCBpZiBpdCBpcyBrbm93bgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhhdCB0aGUgZmFyIGVuZCBzdXBwb3J0cyBleHRlbmRlZAorICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pYyByYW5nZS4KKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBjb250YWluCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT5mcmFtZV9zaXplKmNoYW5u
ZWxzPC9jb2RlPgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ft
cGxlcy4KKyAgKiBAcGFyYW0gZnJhbWVfc2l6ZSA8dHQ+aW50PC90dD46IE51bWJlciBvZiBzYW1w
bGVzIHBlciBjaGFubmVsIGluIHRoZSBpbnB1dAorICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2lnbmFsLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhp
cyBtdXN0IGJlIGFuIE9wdXMgZnJhbWUgc2l6ZSBmb3IgdGhlCisgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmNvZGVyJ3Mgc2FtcGxpbmcgcmF0ZS4KKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhdCA0OCBrSHogdGhlIHBlcm1pdHRl
ZCB2YWx1ZXMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSAxMjAsIDI0
MCwgNDgwLCA5NjAsIDE5MjAsIGFuZCAyODgwLgorICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc2luZyBpbiBhIGR1cmF0aW9uIG9mIGxlc3MgdGhhbiAxMCBtcworICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQ4MCBzYW1wbGVzIGF0IDQ4IGtIeikgd2ls
bCBwcmV2ZW50IHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ciBmcm9tIHVzaW5nIHRoZSBMUEMgb3IgaHlicmlkIG1vZGVzLgorICAqIEBwYXJhbVtvdXRdIGRh
dGEgPHR0PnVuc2lnbmVkIGNoYXIqPC90dD46IE91dHB1dCBwYXlsb2FkLgorICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBjb250YWluIHN0b3Jh
Z2UgZm9yIGF0CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGVhc3QgXGEgbWF4X2RhdGFfYnl0ZXMuCisgICogQHBhcmFtIFtpbl0gbWF4X2RhdGFfYnl0ZXMg
PHR0Pm9wdXNfaW50MzI8L3R0PjogU2l6ZSBvZiB0aGUgYWxsb2NhdGVkCisgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IGZvciB0aGUgb3V0
cHV0CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGF5bG9hZC4gVGhpcyBtYXkgYmUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1c2VkIHRvIGltcG9zZSBhbiB1cHBlciBsaW1pdCBvbgorICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YW50
IGJpdHJhdGUsIGJ1dCBzaG91bGQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub3QgYmUgdXNlZCBhcyB0aGUgb25seSBiaXRyYXRlCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC4gVXNl
ICNPUFVTX1NFVF9CSVRSQVRFIHRvCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udHJvbCB0aGUgYml0cmF0ZS4KKyAgKiBAcmV0dXJucyBUaGUg
bGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHBhY2tldCAoaW4gYnl0ZXMpIG9uIHN1Y2Nlc3Mgb3IgYQor
ICAqICAgICAgICAgIG5lZ2F0aXZlIGVycm9yIGNvZGUgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rl
cykgb24gZmFpbHVyZS4KKyAgKi8KK09QVVNfRVhQT1JUIE9QVVNfV0FSTl9VTlVTRURfUkVTVUxU
IGludCBvcHVzX3Byb2plY3Rpb25fZW5jb2RlX2Zsb2F0KAorICAgIE9wdXNQcm9qZWN0aW9uRW5j
b2RlciAqc3QsCisgICAgY29uc3QgZmxvYXQgKnBjbSwKKyAgICBpbnQgZnJhbWVfc2l6ZSwKKyAg
ICB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgIG9wdXNfaW50MzIgbWF4X2RhdGFfYnl0ZXMKKykg
T1BVU19BUkdfTk9OTlVMTCgxKSBPUFVTX0FSR19OT05OVUxMKDIpIE9QVVNfQVJHX05PTk5VTEwo
NCk7CisKKworLyoqIEZyZWVzIGFuIDxjb2RlPk9wdXNQcm9qZWN0aW9uRW5jb2RlcjwvY29kZT4g
YWxsb2NhdGVkIGJ5CisgICogb3B1c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9jcmVh
dGUoKS4KKyAgKiBAcGFyYW0gc3QgPHR0Pk9wdXNQcm9qZWN0aW9uRW5jb2Rlcio8L3R0PjogUHJv
amVjdGlvbiBlbmNvZGVyIHN0YXRlIHRvIGJlIGZyZWVkLgorICAqLworT1BVU19FWFBPUlQgdm9p
ZCBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9kZXN0cm95KE9wdXNQcm9qZWN0aW9uRW5jb2RlciAq
c3QpOworCisKKy8qKiBQZXJmb3JtIGEgQ1RMIGZ1bmN0aW9uIG9uIGEgcHJvamVjdGlvbiBPcHVz
IGVuY29kZXIuCisgICoKKyAgKiBHZW5lcmFsbHkgdGhlIHJlcXVlc3QgYW5kIHN1YnNlcXVlbnQg
YXJndW1lbnRzIGFyZSBnZW5lcmF0ZWQgYnkgYQorICAqIGNvbnZlbmllbmNlIG1hY3JvLgorICAq
IEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25FbmNvZGVyKjwvdHQ+OiBQcm9qZWN0aW9uIGVu
Y29kZXIgc3RhdGUuCisgICogQHBhcmFtIHJlcXVlc3QgVGhpcyBhbmQgYWxsIHJlbWFpbmluZyBw
YXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCBieSBvbmUKKyAgKiAgICAgICAgICAgICAgICBv
ZiB0aGUgY29udmVuaWVuY2UgbWFjcm9zIGluIEByZWYgb3B1c19nZW5lcmljY3RscywKKyAgKiAg
ICAgICAgICAgICAgICBAcmVmIG9wdXNfZW5jb2RlcmN0bHMsIEByZWYgb3B1c19tdWx0aXN0cmVh
bV9jdGxzLCBvcgorICAqICAgICAgICAgICAgICAgIEByZWYgb3B1c19wcm9qZWN0aW9uX2N0bHMK
KyAgKiBAc2VlIG9wdXNfZ2VuZXJpY2N0bHMKKyAgKiBAc2VlIG9wdXNfZW5jb2RlcmN0bHMKKyAg
KiBAc2VlIG9wdXNfbXVsdGlzdHJlYW1fY3RscworICAqIEBzZWUgb3B1c19wcm9qZWN0aW9uX2N0
bHMKKyAgKi8KK09QVVNfRVhQT1JUIGludCBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9jdGwoT3B1
c1Byb2plY3Rpb25FbmNvZGVyICpzdCwgaW50IHJlcXVlc3QsIC4uLikgT1BVU19BUkdfTk9OTlVM
TCgxKTsKKworCisvKipAfSovCisKKy8qKlxuYW1lIFByb2plY3Rpb24gZGVjb2RlciBmdW5jdGlv
bnMgKi8KKy8qKkB7Ki8KKworLyoqIEdldHMgdGhlIHNpemUgb2YgYW4gPGNvZGU+T3B1c1Byb2pl
Y3Rpb25EZWNvZGVyPC9jb2RlPiBzdHJ1Y3R1cmUuCisgICogQHBhcmFtIGNoYW5uZWxzIDx0dD5p
bnQ8L3R0PjogVGhlIHRvdGFsIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCisgICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5vIG1vcmUgdGhhbiAyNTUuCisg
ICogQHBhcmFtIHN0cmVhbXMgPHR0PmludDwvdHQ+OiBUaGUgdG90YWwgbnVtYmVyIG9mIHN0cmVh
bXMgY29kZWQgaW4gdGhlCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC4K
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBubyBtb3JlIHRo
YW4gMjU1LgorICAqIEBwYXJhbSBjb3VwbGVkX3N0cmVhbXMgPHR0PmludDwvdHQ+OiBOdW1iZXIg
c3RyZWFtcyB0byBkZWNvZGUgYXMgY291cGxlZAorICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoMiBjaGFubmVsKSBzdHJlYW1zLgorICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgbm8gbGFyZ2VyIHRoYW4gdGhlIHRvdGFs
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBzdHJl
YW1zLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFs
bHksIFRoZSB0b3RhbCBudW1iZXIgb2YKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29kZWQgY2hhbm5lbHMgKDxjb2RlPnN0cmVhbXMgKworICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbXM8L2NvZGU+KSBtdXN0IGJl
IG5vCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiAy
NTUuCisgICogQHJldHVybnMgVGhlIHNpemUgaW4gYnl0ZXMgb24gc3VjY2Vzcywgb3IgYSBuZWdh
dGl2ZSBlcnJvciBjb2RlCisgICogICAgICAgICAgKHNlZSBAcmVmIG9wdXNfZXJyb3Jjb2Rlcykg
b24gZXJyb3IuCisgICovCitPUFVTX0VYUE9SVCBPUFVTX1dBUk5fVU5VU0VEX1JFU1VMVCBvcHVz
X2ludDMyIG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2dldF9zaXplKAorICAgIGludCBjaGFubmVs
cywKKyAgICBpbnQgc3RyZWFtcywKKyAgICBpbnQgY291cGxlZF9zdHJlYW1zCispOworCisKKy8q
KiBBbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIGEgcHJvamVjdGlvbiBkZWNvZGVyIHN0YXRlLgor
ICAqIENhbGwgb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfZGVzdHJveSgpIHRvIHJlbGVhc2UKKyAg
KiB0aGlzIG9iamVjdCB3aGVuIGZpbmlzaGVkLgorICAqIEBwYXJhbSBGcyA8dHQ+b3B1c19pbnQz
MjwvdHQ+OiBTYW1wbGluZyByYXRlIHRvIGRlY29kZSBhdCAoaW4gSHopLgorICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgb25lIG9mIDgwMDAsIDEyMDAwLCAx
NjAwMCwKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQwMDAsIG9yIDQ4MDAw
LgorICAqIEBwYXJhbSBjaGFubmVscyA8dHQ+aW50PC90dD46IE51bWJlciBvZiBjaGFubmVscyB0
byBvdXRwdXQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJl
IGF0IG1vc3QgMjU1LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG1heSBi
ZSBkaWZmZXJlbnQgZnJvbSB0aGUgbnVtYmVyIG9mIGNvZGVkCisgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbm5lbHMgKDxjb2RlPnN0cmVhbXMgKworICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvdXBsZWRfc3RyZWFtczwvY29kZT4pLgorICAqIEBwYXJhbSBz
dHJlYW1zIDx0dD5pbnQ8L3R0PjogVGhlIHRvdGFsIG51bWJlciBvZiBzdHJlYW1zIGNvZGVkIGlu
IHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuCisgICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgbm8gbW9yZSB0aGFuIDI1NS4KKyAg
KiBAcGFyYW0gY291cGxlZF9zdHJlYW1zIDx0dD5pbnQ8L3R0PjogTnVtYmVyIG9mIHN0cmVhbXMg
dG8gZGVjb2RlIGFzIGNvdXBsZWQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKDIgY2hhbm5lbCkgc3RyZWFtcy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5vIGxhcmdlciB0aGFuIHRoZSB0b3RhbAorICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc3RyZWFtcy4KKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBUaGUg
dG90YWwgbnVtYmVyIG9mCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVkIGNoYW5uZWxzICg8Y29kZT5zdHJlYW1zICsKKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY291cGxlZF9zdHJlYW1zPC9jb2RlPikgbXVzdCBiZSBubworICAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gMjU1LgorICAq
IEBwYXJhbVtpbl0gZGVtaXhpbmdfbWF0cml4IDx0dD5jb25zdCB1bnNpZ25lZCBjaGFyW2RlbWl4
aW5nX21hdHJpeF9zaXplXTwvdHQ+OiBEZW1peGluZyBtYXRyaXgKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGF0IG1hcHBpbmcgZnJvbSBjb2RlZCBjaGFubmVscyB0byBvdXRwdXQgY2hh
bm5lbHMsCisgICogICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIEByZWYg
b3B1c19wcm9qZWN0aW9uIGFuZAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgb3B1
c19wcm9qZWN0aW9uX2N0bHMuCisgICogQHBhcmFtIGRlbWl4aW5nX21hdHJpeF9zaXplIDx0dD5v
cHVzX2ludDMyPC90dD46IFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZQorICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW1peGluZyBtYXRyaXgsIGFz
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
c2NyaWJlZCBpbiBAcmVmCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdXNfcHJvamVjdGlvbl9jdGxzLgorICAqIEBwYXJhbVtvdXRdIGVycm9y
IDx0dD5pbnQgKjwvdHQ+OiBSZXR1cm5zICNPUFVTX09LIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9y
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgKHNlZSBAcmVmIG9w
dXNfZXJyb3Jjb2Rlcykgb24KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZS4KKyAgKi8KK09QVVNfRVhQT1JUIE9QVVNfV0FSTl9VTlVTRURfUkVTVUxUIE9wdXNQ
cm9qZWN0aW9uRGVjb2RlciAqb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfY3JlYXRlKAorICAgIG9w
dXNfaW50MzIgRnMsCisgICAgaW50IGNoYW5uZWxzLAorICAgIGludCBzdHJlYW1zLAorICAgIGlu
dCBjb3VwbGVkX3N0cmVhbXMsCisgICAgdW5zaWduZWQgY2hhciAqZGVtaXhpbmdfbWF0cml4LAor
ICAgIG9wdXNfaW50MzIgZGVtaXhpbmdfbWF0cml4X3NpemUsCisgICAgaW50ICplcnJvcgorKSBP
UFVTX0FSR19OT05OVUxMKDUpOworCisKKy8qKiBJbnRpYWxpemUgYSBwcmV2aW91c2x5IGFsbG9j
YXRlZCBwcm9qZWN0aW9uIGRlY29kZXIgc3RhdGUgb2JqZWN0LgorICAqIFRoZSBtZW1vcnkgcG9p
bnRlZCB0byBieSBcYSBzdCBtdXN0IGJlIGF0IGxlYXN0IHRoZSBzaXplIHJldHVybmVkIGJ5Cisg
ICogb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfZ2V0X3NpemUoKS4KKyAgKiBUaGlzIGlzIGludGVu
ZGVkIGZvciBhcHBsaWNhdGlvbnMgd2hpY2ggdXNlIHRoZWlyIG93biBhbGxvY2F0b3IgaW5zdGVh
ZCBvZgorICAqIG1hbGxvYy4KKyAgKiBUbyByZXNldCBhIHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQg
c3RhdGUsIHVzZSB0aGUgI09QVVNfUkVTRVRfU1RBVEUgQ1RMLgorICAqIEBzZWUgb3B1c19wcm9q
ZWN0aW9uX2RlY29kZXJfY3JlYXRlCisgICogQHNlZSBvcHVzX3Byb2plY3Rpb25fZGVvY2Rlcl9n
ZXRfc2l6ZQorICAqIEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25EZWNvZGVyKjwvdHQ+OiBQ
cm9qZWN0aW9uIGVuY29kZXIgc3RhdGUgdG8gaW5pdGlhbGl6ZS4KKyAgKiBAcGFyYW0gRnMgPHR0
Pm9wdXNfaW50MzI8L3R0PjogU2FtcGxpbmcgcmF0ZSB0byBkZWNvZGUgYXQgKGluIEh6KS4KKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG9uZSBvZiA4MDAw
LCAxMjAwMCwgMTYwMDAsCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MDAw
LCBvciA0ODAwMC4KKyAgKiBAcGFyYW0gY2hhbm5lbHMgPHR0PmludDwvdHQ+OiBOdW1iZXIgb2Yg
Y2hhbm5lbHMgdG8gb3V0cHV0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRo
aXMgbXVzdCBiZSBhdCBtb3N0IDI1NS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIG51bWJlciBvZiBjb2RlZAorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzICg8Y29kZT5zdHJlYW1zICsKKyAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbXM8L2NvZGU+KS4KKyAg
KiBAcGFyYW0gc3RyZWFtcyA8dHQ+aW50PC90dD46IFRoZSB0b3RhbCBudW1iZXIgb2Ygc3RyZWFt
cyBjb2RlZCBpbiB0aGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Lgor
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIG5vIG1vcmUgdGhh
biAyNTUuCisgICogQHBhcmFtIGNvdXBsZWRfc3RyZWFtcyA8dHQ+aW50PC90dD46IE51bWJlciBv
ZiBzdHJlYW1zIHRvIGRlY29kZSBhcyBjb3VwbGVkCisgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgyIGNoYW5uZWwpIHN0cmVhbXMuCisgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbXVzdCBiZSBubyBsYXJnZXIgdGhhbiB0aGUgdG90
YWwKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHN0
cmVhbXMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9u
YWxseSwgVGhlIHRvdGFsIG51bWJlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2RlZCBjaGFubmVscyAoPGNvZGU+c3RyZWFtcyArCisgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXBsZWRfc3RyZWFtczwvY29kZT4pIG11c3Qg
YmUgbm8KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZSB0aGFu
IDI1NS4KKyAgKiBAcGFyYW1baW5dIGRlbWl4aW5nX21hdHJpeCA8dHQ+Y29uc3QgdW5zaWduZWQg
Y2hhcltkZW1peGluZ19tYXRyaXhfc2l6ZV08L3R0PjogRGVtaXhpbmcgbWF0cml4CisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXBwaW5nIGZyb20gY29kZWQgY2hhbm5lbHMgdG8g
b3V0cHV0IGNoYW5uZWxzLAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJl
ZCBpbiBAcmVmIG9wdXNfcHJvamVjdGlvbiBhbmQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICBAcmVmIG9wdXNfcHJvamVjdGlvbl9jdGxzLgorICAqIEBwYXJhbSBkZW1peGluZ19tYXRyaXhf
c2l6ZSA8dHQ+b3B1c19pbnQzMjwvdHQ+OiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUKKyAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVtaXhpbmcg
bWF0cml4LCBhcworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXNjcmliZWQgaW4gQHJlZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHVzX3Byb2plY3Rpb25fY3Rscy4KKyAgKiBAcmV0dXJu
cyAjT1BVU19PSyBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBjb2RlIChzZWUgQHJlZiBvcHVzX2Vy
cm9yY29kZXMpCisgICogICAgICAgICAgb24gZmFpbHVyZS4KKyAgKi8KK09QVVNfRVhQT1JUIGlu
dCBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9pbml0KAorICAgIE9wdXNQcm9qZWN0aW9uRGVjb2Rl
ciAqc3QsCisgICAgb3B1c19pbnQzMiBGcywKKyAgICBpbnQgY2hhbm5lbHMsCisgICAgaW50IHN0
cmVhbXMsCisgICAgaW50IGNvdXBsZWRfc3RyZWFtcywKKyAgICB1bnNpZ25lZCBjaGFyICpkZW1p
eGluZ19tYXRyaXgsCisgICAgb3B1c19pbnQzMiBkZW1peGluZ19tYXRyaXhfc2l6ZQorKSBPUFVT
X0FSR19OT05OVUxMKDEpIE9QVVNfQVJHX05PTk5VTEwoNik7CisKKworLyoqIERlY29kZSBhIHBy
b2plY3Rpb24gT3B1cyBwYWNrZXQuCisgICogQHBhcmFtIHN0IDx0dD5PcHVzUHJvamVjdGlvbkRl
Y29kZXIqPC90dD46IFByb2plY3Rpb24gZGVjb2RlciBzdGF0ZS4KKyAgKiBAcGFyYW1baW5dIGRh
dGEgPHR0PmNvbnN0IHVuc2lnbmVkIGNoYXIqPC90dD46IElucHV0IHBheWxvYWQuCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgYSA8Y29kZT5O
VUxMPC9jb2RlPgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcG9pbnRlciB0byBpbmRpY2F0ZSBwYWNrZXQKKyAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3MuCisgICogQHBhcmFtIGxlbiA8dHQ+b3B1
c19pbnQzMjwvdHQ+OiBOdW1iZXIgb2YgYnl0ZXMgaW4gcGF5bG9hZC4KKyAgKiBAcGFyYW1bb3V0
XSBwY20gPHR0Pm9wdXNfaW50MTYqPC90dD46IE91dHB1dCBzaWduYWwsIHdpdGggaW50ZXJsZWF2
ZWQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMuCisg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgY29udGFp
biByb29tIGZvcgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNv
ZGU+ZnJhbWVfc2l6ZSpjaGFubmVsczwvY29kZT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhbXBsZXMuCisgICogQHBhcmFtIGZyYW1lX3NpemUgPHR0PmludDwv
dHQ+OiBUaGUgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIGNoYW5uZWwgb2YKKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBzcGFjZSBpbiBcYSBwY20uCisgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIGxlc3MgdGhhbiB0aGUgbWF4
aW11bSBwYWNrZXQgZHVyYXRpb24KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgxMjAgbXM7IDU3NjAgZm9yIDQ4a0h6KSwgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYXBh
YmxlCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBkZWNvZGluZyBzb21l
IHBhY2tldHMuIEluIHRoZSBjYXNlIG9mIFBMQyAoZGF0YT09TlVMTCkKKyAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9yIEZFQyAoZGVjb2RlX2ZlYz0xKSwgdGhlbiBmcmFtZV9z
aXplIG5lZWRzIHRvIGJlIGV4YWN0bHkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoZSBkdXJhdGlvbiBvZiBhdWRpbyB0aGF0IGlzIG1pc3NpbmcsIG90aGVyd2lzZSB0aGUK
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXIgd2lsbCBub3QgYmUg
aW4gdGhlIG9wdGltYWwgc3RhdGUgdG8gZGVjb2RlIHRoZQorICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV4dCBpbmNvbWluZyBwYWNrZXQuIEZvciB0aGUgUExDIGFuZCBGRUMg
Y2FzZXMsIGZyYW1lX3NpemUKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi
Pm11c3Q8L2I+IGJlIGEgbXVsdGlwbGUgb2YgMi41IG1zLgorICAqIEBwYXJhbSBkZWNvZGVfZmVj
IDx0dD5pbnQ8L3R0PjogRmxhZyAoMCBvciAxKSB0byByZXF1ZXN0IHRoYXQgYW55IGluLWJhbmQK
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmQgZXJyb3IgY29ycmVj
dGlvbiBkYXRhIGJlIGRlY29kZWQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJZiBubyBzdWNoIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGUgZnJhbWUgaXMKKyAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWQgYXMgaWYgaXQgd2VyZSBsb3N0LgorICAq
IEByZXR1cm5zIE51bWJlciBvZiBzYW1wbGVzIGRlY29kZWQgb24gc3VjY2VzcyBvciBhIG5lZ2F0
aXZlIGVycm9yIGNvZGUKKyAgKiAgICAgICAgICAoc2VlIEByZWYgb3B1c19lcnJvcmNvZGVzKSBv
biBmYWlsdXJlLgorICAqLworT1BVU19FWFBPUlQgT1BVU19XQVJOX1VOVVNFRF9SRVNVTFQgaW50
IG9wdXNfcHJvamVjdGlvbl9kZWNvZGUoCisgICAgT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdCwK
KyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgIG9wdXNfaW50MzIgbGVuLAorICAg
IG9wdXNfaW50MTYgKnBjbSwKKyAgICBpbnQgZnJhbWVfc2l6ZSwKKyAgICBpbnQgZGVjb2RlX2Zl
YworKSBPUFVTX0FSR19OT05OVUxMKDEpIE9QVVNfQVJHX05PTk5VTEwoNCk7CisKKworLyoqIERl
Y29kZSBhIHByb2plY3Rpb24gT3B1cyBwYWNrZXQgd2l0aCBmbG9hdGluZyBwb2ludCBvdXRwdXQu
CisgICogQHBhcmFtIHN0IDx0dD5PcHVzUHJvamVjdGlvbkRlY29kZXIqPC90dD46IFByb2plY3Rp
b24gZGVjb2RlciBzdGF0ZS4KKyAgKiBAcGFyYW1baW5dIGRhdGEgPHR0PmNvbnN0IHVuc2lnbmVk
IGNoYXIqPC90dD46IElucHV0IHBheWxvYWQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVc2UgYSA8Y29kZT5OVUxMPC9jb2RlPgorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciB0byBpbmRp
Y2F0ZSBwYWNrZXQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvc3MuCisgICogQHBhcmFtIGxlbiA8dHQ+b3B1c19pbnQzMjwvdHQ+OiBOdW1iZXIg
b2YgYnl0ZXMgaW4gcGF5bG9hZC4KKyAgKiBAcGFyYW1bb3V0XSBwY20gPHR0Pm9wdXNfaW50MTYq
PC90dD46IE91dHB1dCBzaWduYWwsIHdpdGggaW50ZXJsZWF2ZWQKKyAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMuCisgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgY29udGFpbiByb29tIGZvcgorICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+ZnJhbWVfc2l6ZSpjaGFubmVs
czwvY29kZT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZXMuCisgICogQHBhcmFtIGZyYW1lX3NpemUgPHR0PmludDwvdHQ+OiBUaGUgbnVtYmVyIG9mIHNh
bXBsZXMgcGVyIGNoYW5uZWwgb2YKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJsZSBzcGFjZSBpbiBcYSBwY20uCisgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJZiB0aGlzIGlzIGxlc3MgdGhhbiB0aGUgbWF4aW11bSBwYWNrZXQgZHVyYXRpb24K
KyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjAgbXM7IDU3NjAgZm9yIDQ4
a0h6KSwgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYXBhYmxlCisgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZiBkZWNvZGluZyBzb21lIHBhY2tldHMuIEluIHRoZSBjYXNl
IG9mIFBMQyAoZGF0YT09TlVMTCkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9yIEZFQyAoZGVjb2RlX2ZlYz0xKSwgdGhlbiBmcmFtZV9zaXplIG5lZWRzIHRvIGJlIGV4YWN0
bHkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkdXJhdGlvbiBvZiBh
dWRpbyB0aGF0IGlzIG1pc3NpbmcsIG90aGVyd2lzZSB0aGUKKyAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY29kZXIgd2lsbCBub3QgYmUgaW4gdGhlIG9wdGltYWwgc3RhdGUg
dG8gZGVjb2RlIHRoZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBp
bmNvbWluZyBwYWNrZXQuIEZvciB0aGUgUExDIGFuZCBGRUMgY2FzZXMsIGZyYW1lX3NpemUKKyAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPm11c3Q8L2I+IGJlIGEgbXVsdGlw
bGUgb2YgMi41IG1zLgorICAqIEBwYXJhbSBkZWNvZGVfZmVjIDx0dD5pbnQ8L3R0PjogRmxhZyAo
MCBvciAxKSB0byByZXF1ZXN0IHRoYXQgYW55IGluLWJhbmQKKyAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiBkYXRhIGJlIGRlY29kZWQu
CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBubyBzdWNoIGRhdGEgaXMg
YXZhaWxhYmxlLCB0aGUgZnJhbWUgaXMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY29kZWQgYXMgaWYgaXQgd2VyZSBsb3N0LgorICAqIEByZXR1cm5zIE51bWJlciBvZiBz
YW1wbGVzIGRlY29kZWQgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUKKyAgKiAg
ICAgICAgICAoc2VlIEByZWYgb3B1c19lcnJvcmNvZGVzKSBvbiBmYWlsdXJlLgorICAqLworT1BV
U19FWFBPUlQgT1BVU19XQVJOX1VOVVNFRF9SRVNVTFQgaW50IG9wdXNfcHJvamVjdGlvbl9kZWNv
ZGVfZmxvYXQoCisgICAgT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdCwKKyAgICBjb25zdCB1bnNp
Z25lZCBjaGFyICpkYXRhLAorICAgIG9wdXNfaW50MzIgbGVuLAorICAgIGZsb2F0ICpwY20sCisg
ICAgaW50IGZyYW1lX3NpemUsCisgICAgaW50IGRlY29kZV9mZWMKKykgT1BVU19BUkdfTk9OTlVM
TCgxKSBPUFVTX0FSR19OT05OVUxMKDQpOworCisKKy8qKiBQZXJmb3JtIGEgQ1RMIGZ1bmN0aW9u
IG9uIGEgcHJvamVjdGlvbiBPcHVzIGRlY29kZXIuCisgICoKKyAgKiBHZW5lcmFsbHkgdGhlIHJl
cXVlc3QgYW5kIHN1YnNlcXVlbnQgYXJndW1lbnRzIGFyZSBnZW5lcmF0ZWQgYnkgYQorICAqIGNv
bnZlbmllbmNlIG1hY3JvLgorICAqIEBwYXJhbSBzdCA8dHQ+T3B1c1Byb2plY3Rpb25EZWNvZGVy
KjwvdHQ+OiBQcm9qZWN0aW9uIGRlY29kZXIgc3RhdGUuCisgICogQHBhcmFtIHJlcXVlc3QgVGhp
cyBhbmQgYWxsIHJlbWFpbmluZyBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCBieSBvbmUK
KyAgKiAgICAgICAgICAgICAgICBvZiB0aGUgY29udmVuaWVuY2UgbWFjcm9zIGluIEByZWYgb3B1
c19nZW5lcmljY3RscywKKyAgKiAgICAgICAgICAgICAgICBAcmVmIG9wdXNfZGVjb2RlcmN0bHMs
IEByZWYgb3B1c19tdWx0aXN0cmVhbV9jdGxzLCBvcgorICAqICAgICAgICAgICAgICAgIEByZWYg
b3B1c19wcm9qZWN0aW9uX2N0bHMuCisgICogQHNlZSBvcHVzX2dlbmVyaWNjdGxzCisgICogQHNl
ZSBvcHVzX2RlY29kZXJjdGxzCisgICogQHNlZSBvcHVzX211bHRpc3RyZWFtX2N0bHMKKyAgKiBA
c2VlIG9wdXNfcHJvamVjdGlvbl9jdGxzCisgICovCitPUFVTX0VYUE9SVCBpbnQgb3B1c19wcm9q
ZWN0aW9uX2RlY29kZXJfY3RsKE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QsIGludCByZXF1ZXN0
LCAuLi4pIE9QVVNfQVJHX05PTk5VTEwoMSk7CisKKworLyoqIEZyZWVzIGFuIDxjb2RlPk9wdXNQ
cm9qZWN0aW9uRGVjb2RlcjwvY29kZT4gYWxsb2NhdGVkIGJ5CisgICogb3B1c19wcm9qZWN0aW9u
X2RlY29kZXJfY3JlYXRlKCkuCisgICogQHBhcmFtIHN0IDx0dD5PcHVzUHJvamVjdGlvbkRlY29k
ZXI8L3R0PjogUHJvamVjdGlvbiBkZWNvZGVyIHN0YXRlIHRvIGJlIGZyZWVkLgorICAqLworT1BV
U19FWFBPUlQgdm9pZCBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9kZXN0cm95KE9wdXNQcm9qZWN0
aW9uRGVjb2RlciAqc3QpOworCisKKy8qKkB9Ki8KKworLyoqQH0qLworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogT1BVU19QUk9KRUNUSU9OX0ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvbTQvYXhfYWRkX2ZvcnRpZnlfc291cmNlLm00IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9tNC9heF9hZGRfZm9ydGlmeV9zb3Vy
Y2UubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM4OWU0MTA4NTYyM2ZjOGIyZWVhZTY1NDdkNzcxNzg5NWQ2OWZm
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvbTQvYXhfYWRkX2ZvcnRpZnlfc291cmNlLm00CkBAIC0wLDAg
KzEsNTMgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgTW9kaWZpZWQgZnJvbSBodHRwczov
L3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfYWRkX2ZvcnRpZnlfc291
cmNlLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhf
QUREX0ZPUlRJRllfU09VUkNFCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgQ2hlY2sgd2hldGhl
ciAtRF9GT1JUSUZZX1NPVVJDRT0yIGNhbiBiZSBhZGRlZCB0byBDRkxBR1Mgd2l0aG91dCBtYWNy
bworIyAgIHJlZGVmaW5pdGlvbiB3YXJuaW5ncy4gU29tZSBkaXN0cmlidXRpb25zIChzdWNoIGFz
IEdlbnRvbyBMaW51eCkgZW5hYmxlCisjICAgX0ZPUlRJRllfU09VUkNFIGdsb2JhbGx5IGluIHRo
ZWlyIGNvbXBpbGVycywgbGVhZGluZyB0byB1bm5lY2Vzc2FyeQorIyAgIHdhcm5pbmdzIGluIHRo
ZSBmb3JtIG9mCisjCisjICAgICA8Y29tbWFuZC1saW5lPjowOjA6IGVycm9yOiAiX0ZPUlRJRllf
U09VUkNFIiByZWRlZmluZWQgWy1XZXJyb3JdCisjICAgICA8YnVpbHQtaW4+OiBub3RlOiB0aGlz
IGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcHJldmlvdXMgZGVmaW5pdGlvbgorIworIyAgIHdoaWNo
IGlzIGEgcHJvYmxlbSBpZiAtV2Vycm9yIGlzIGVuYWJsZWQuIFRoaXMgbWFjcm8gY2hlY2tzIHdo
ZXRoZXIKKyMgICBfRk9SVElGWV9TT1VSQ0UgaXMgYWxyZWFkeSBkZWZpbmVkLCBhbmQgaWYgbm90
LCBhZGRzIC1EX0ZPUlRJRllfU09VUkNFPTIKKyMgICB0byBDRkxBR1MuCisjCisjIExJQ0VOU0UK
KyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMTcgRGF2aWQgU2VpZmVydCA8c29hcEBnZW50b28ub3Jn
PgorIworIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Ig
d2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdp
dGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQorIyAgIGFuZCB0aGlz
IG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhv
dXQgYW55CisjICAgd2FycmFudHkuCisKKyNzZXJpYWwgMQorCitBQ19ERUZVTihbQVhfQUREX0ZP
UlRJRllfU09VUkNFXSxbCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGFkZCAtRF9G
T1JUSUZZX1NPVVJDRT0yIHRvIENGTEFHU10pCisgICAgQUNfTElOS19JRkVMU0UoWworICAgICAg
ICBBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgIFtbCisgICAgICAgICAgICAgICAgaW50IG1h
aW4oKSB7CisgICAgICAgICAgICAgICAgI2lmbmRlZiBfRk9SVElGWV9TT1VSQ0UKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAg
ICAgICAgICAgdGhpc19pc19hbl9lcnJvcjsKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBdXQorICAgICAgICApXSwgWworICAgICAgICAgICAg
QUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtRF9GT1JU
SUZZX1NPVVJDRT0yIgorICAgICAgICBdLCBbCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtu
b10pCisgICAgXSkKK10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXMtdW5pbnN0YWxsZWQucGMuaW4gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXMt
dW5pbnN0YWxsZWQucGMuaW4KaW5kZXggM2YyZDY3NDRkYThiZDc0Mjk1YjQ0YjEyNzk4YjFhYzMw
ZGJkNWRlMC4uMTlmNWM5MzNkZGRkYTU5MDU4OTMxYzRkMjNmMGFlMGEyY2MyZjk1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9vcHVzLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvb3B1cy11bmluc3RhbGxlZC5wYy5pbgpA
QCAtOCw1ICs4LDUgQEAgRGVzY3JpcHRpb246IE9wdXMgSUVURiBhdWRpbyBjb2RlYyAobm90IGlu
c3RhbGxlZCwgQFBDX0JVSUxEQCkKIFZlcnNpb246IEBWRVJTSU9OQAogUmVxdWlyZXM6CiBDb25m
bGljdHM6Ci1MaWJzOiAke2xpYmRpcn0vbGlib3B1cy5hIEBMSUJNQAorTGliczogJHtsaWJkaXJ9
L2xpYm9wdXMubGEgQExJQk1ACiBDZmxhZ3M6IC1JJHtwY2ZpbGVkaXJ9L0B0b3Bfc3JjZGlyQC9p
bmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL29wdXNfYnVpbGR0eXBlLmNtYWtlIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2J1aWxkdHlwZS5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYWVlOWVmZmFhZWJhYWRiZDY4MTA2MzI4OTlmM2U5Y2E5YzU4Njhh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2J1aWxkdHlwZS5jbWFrZQpAQCAtMCwwICsxLDIzIEBA
CisjIFNldCBhIGRlZmF1bHQgYnVpbGQgdHlwZSBpZiBub25lIHdhcyBzcGVjaWZpZWQKKworaWYo
Tk9UIENNQUtFX0JVSUxEX1RZUEUgQU5EIE5PVCBDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQor
ICBpZihDTUFLRV9DX0ZMQUdTKQorICAgIG1lc3NhZ2UoU1RBVFVTICJDTUFLRV9DX0ZMQUdTOiAi
ICR7Q01BS0VfQ19GTEFHU30pCisgIGVsc2UoKQorICAgIHNldChkZWZhdWx0X2J1aWxkX3R5cGUg
IlJlbGVhc2UiKQorICAgIG1lc3NhZ2UoCisgICAgICBTVEFUVVMKKyAgICAgICAgIlNldHRpbmcg
YnVpbGQgdHlwZSB0byAnJHtkZWZhdWx0X2J1aWxkX3R5cGV9JyBhcyBub25lIHdhcyBzcGVjaWZp
ZWQgYW5kIG5vIENGTEFHUyB3YXMgZXhwb3J0ZWQuIgorICAgICAgKQorICAgIHNldChDTUFLRV9C
VUlMRF9UWVBFICIke2RlZmF1bHRfYnVpbGRfdHlwZX0iCisgICAgICAgIENBQ0hFIFNUUklORyAi
Q2hvb3NlIHRoZSB0eXBlIG9mIGJ1aWxkLiIKKyAgICAgICAgRk9SQ0UpCisgICAgIyBTZXQgdGhl
IHBvc3NpYmxlIHZhbHVlcyBvZiBidWlsZCB0eXBlIGZvciBjbWFrZS1ndWkKKyAgICBzZXRfcHJv
cGVydHkoQ0FDSEUgQ01BS0VfQlVJTERfVFlQRQorICAgICAgICAgICAgICAgICBQUk9QRVJUWSBT
VFJJTkdTCisgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWJ1ZyIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlJlbGVhc2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJNaW5TaXpl
UmVsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVsV2l0aERlYkluZm8iKQorICBlbmRp
ZigpCitlbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXNfY29uZmlnLmNtYWtlIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2NvbmZpZy5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMGJmZDU4MzljOGJiYTFiZDQ0N2ViMzRlM2EyMzA0OTEyOWViNGJm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2NvbmZpZy5jbWFrZQpAQCAtMCwwICsxLDQzIEBACitp
bmNsdWRlKG9wdXNfZnVuY3Rpb25zLmNtYWtlKQorCitjb25maWd1cmVfZmlsZShjb25maWcuaC5j
bWFrZS5pbiBjb25maWcuaCBAT05MWSkKK2FkZF9kZWZpbml0aW9ucygtREhBVkVfQ09ORklHX0gp
CisKK3NldF9wcm9wZXJ0eShHTE9CQUwgUFJPUEVSVFkgVVNFX0ZPTERFUlMgT04pCitzZXRfcHJv
cGVydHkoR0xPQkFMIFBST1BFUlRZIENfU1RBTkRBUkQgOTkpCisKK2lmKE1TVkMpCisgIGFkZF9k
ZWZpbml0aW9ucygtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTKQorZW5kaWYoKQorCitpbmNsdWRl
KENoZWNrTGlicmFyeUV4aXN0cykKK2NoZWNrX2xpYnJhcnlfZXhpc3RzKG0gZmxvb3IgIiIgSEFW
RV9MSUJNKQoraWYoSEFWRV9MSUJNKQorICBsaXN0KEFQUEVORCBPUFVTX1JFUVVJUkVEX0xJQlJB
UklFUyBtKQorZW5kaWYoKQorCitpZihDTUFLRV9TWVNURU1fUFJPQ0VTU09SIE1BVENIRVMgIihp
WzAtOV04Nnx4ODZ8WDg2fGFtZDY0fEFNRDY0fHg4Nl82NCkiKQorICBpZihDTUFLRV9TSVpFT0Zf
Vk9JRF9QIEVRVUFMIDgpCisgICAgc2V0KE9QVVNfQ1BVX1g2NCAxKQorICBlbHNlKCkKKyAgICBz
ZXQoT1BVU19DUFVfWDg2IDEpCisgIGVuZGlmKCkKK2Vsc2VpZihDTUFLRV9TWVNURU1fUFJPQ0VT
U09SIE1BVENIRVMgImFybSIpCisgIHNldChPUFVTX0NQVV9BUk0gMSkKK2VuZGlmKCkKKworb3B1
c19zdXBwb3J0c19jcHVfZGV0ZWN0aW9uKFJVTlRJTUVfQ1BVX0NBUEFCSUxJVFlfREVURUNUSU9O
KQorCitpZihPUFVTX0NQVV9YODYgT1IgT1BVU19DUFVfWDY0KQorICBvcHVzX2RldGVjdF9zc2Uo
Q09NUElMRVJfU1VQUE9SVF9TSU1EKQorZWxzZWlmKE9QVVNfQ1BVX0FSTSkKKyAgb3B1c19kZXRl
Y3RfbmVvbihDT01QSUxFUl9TVVBQT1JUX05FT04pCisgIGlmKENPTVBJTEVSX1NVUFBPUlRfTkVP
TikKKyAgICBvcHRpb24oT1BVU19VU0VfTkVPTiAiT3B0aW9uIHRvIHR1cm4gb2ZmIFNTRSIgT04p
CisgICAgb3B0aW9uKE9QVVNfTUFZX1NVUFBPUlRfTkVPTiAiRG9lcyBydW50aW1lIGNoZWNrIGZv
ciBuZW9uIHN1cHBvcnQiIE9OKQorICAgIG9wdGlvbihPUFVTX1BSRVNVTUVfTkVPTiAiQXNzdW1l
IHRhcmdldCBDUFUgaGFzIE5FT04gc3VwcG9ydCIgT0ZGKQorICAgIGlmKENNQUtFX1NZU1RFTV9Q
Uk9DRVNTT1IgTUFUQ0hFUyAiYWFyY2g2NCIpCisgICAgICBzZXQoT1BVU19QUkVTVU1FX05FT04g
T04pCisgICAgZW5kaWYoKQorICBlbmRpZigpCitlbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL29wdXNfZnVu
Y3Rpb25zLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9vcHVzX2Z1bmN0aW9ucy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTMwOWMyYzQ5
MGQ5YTZjOWI1Zjk4YTgxMzMwZGJkZjY4NDVmMzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9vcHVzX2Z1
bmN0aW9ucy5jbWFrZQpAQCAtMCwwICsxLDI2MiBAQAorI1tbQ21ha2UgaGVscGVyIGZ1bmN0aW9u
IHRvIHBhcnNlIHNvdXJjZSBmaWxlcyBmcm9tIG1ha2UgZmlsZXMKK3RoaXMgaXMgdG8gYXZvaWQg
YnJlYWtpbmcgZXhpc3RpbmcgbWFrZSBhbmQgYXV0byBtYWtlIHN1cHBvcnQKK2J1dCBzdGlsbCBo
YXZlIHRoZSBvcHRpb24gdG8gdXNlIENNYWtlIHdpdGggb25seSBsaXN0cyBhdCBvbmUgcGxhY2Vd
XQorCitjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4xKQorCitmdW5jdGlvbihnZXRf
bGlicmFyeV92ZXJzaW9uIE9QVVNfTElCUkFSWV9WRVJTSU9OIE9QVVNfTElCUkFSWV9WRVJTSU9O
X01BSk9SKQorICBmaWxlKFNUUklOR1MgY29uZmlndXJlLmFjIG9wdXNfbHRfY3VycmVudF9zdHJp
bmcKKyAgICAgICBMSU1JVF9DT1VOVCAxCisgICAgICAgUkVHRVggIk9QVVNfTFRfQ1VSUkVOVD0i
KQorICBzdHJpbmcoUkVHRVggTUFUQ0gKKyAgICAgICAgICAgICAgICJPUFVTX0xUX0NVUlJFTlQ9
KFswLTldKikiCisgICAgICAgICAgICAgICBfCisgICAgICAgICAgICAgICAke29wdXNfbHRfY3Vy
cmVudF9zdHJpbmd9KQorICBzZXQoT1BVU19MVF9DVVJSRU5UICR7Q01BS0VfTUFUQ0hfMX0pCisK
KyAgZmlsZShTVFJJTkdTIGNvbmZpZ3VyZS5hYyBvcHVzX2x0X3JldmlzaW9uX3N0cmluZworICAg
ICAgIExJTUlUX0NPVU5UIDEKKyAgICAgICBSRUdFWCAiT1BVU19MVF9SRVZJU0lPTj0iKQorICBz
dHJpbmcoUkVHRVggTUFUQ0gKKyAgICAgICAgICAgICAgICJPUFVTX0xUX1JFVklTSU9OPShbMC05
XSopIgorICAgICAgICAgICAgICAgXworICAgICAgICAgICAgICAgJHtvcHVzX2x0X3JldmlzaW9u
X3N0cmluZ30pCisgIHNldChPUFVTX0xUX1JFVklTSU9OICR7Q01BS0VfTUFUQ0hfMX0pCisKKyAg
ZmlsZShTVFJJTkdTIGNvbmZpZ3VyZS5hYyBvcHVzX2x0X2FnZV9zdHJpbmcKKyAgICAgICBMSU1J
VF9DT1VOVCAxCisgICAgICAgUkVHRVggIk9QVVNfTFRfQUdFPSIpCisgIHN0cmluZyhSRUdFWCBN
QVRDSAorICAgICAgICAgICAgICAgIk9QVVNfTFRfQUdFPShbMC05XSopIgorICAgICAgICAgICAg
ICAgXworICAgICAgICAgICAgICAgJHtvcHVzX2x0X2FnZV9zdHJpbmd9KQorICBzZXQoT1BVU19M
VF9BR0UgJHtDTUFLRV9NQVRDSF8xfSkKKworICBtYXRoKEVYUFIgT1BVU19MSUJSQVJZX1ZFUlNJ
T05fTUFKT1IgIiR7T1BVU19MVF9DVVJSRU5UfSAtICR7T1BVU19MVF9BR0V9IikKKyAgc2V0KE9Q
VVNfTElCUkFSWV9WRVJTSU9OX01JTk9SICR7T1BVU19MVF9BR0V9KQorICBzZXQoT1BVU19MSUJS
QVJZX1ZFUlNJT05fUEFUQ0ggJHtPUFVTX0xUX1JFVklTSU9OfSkKKyAgc2V0KAorICAgIE9QVVNf
TElCUkFSWV9WRVJTSU9OCisgICAgIiR7T1BVU19MSUJSQVJZX1ZFUlNJT05fTUFKT1J9LiR7T1BV
U19MSUJSQVJZX1ZFUlNJT05fTUlOT1J9LiR7T1BVU19MSUJSQVJZX1ZFUlNJT05fUEFUQ0h9Igor
ICAgIFBBUkVOVF9TQ09QRSkKKyAgc2V0KE9QVVNfTElCUkFSWV9WRVJTSU9OX01BSk9SICR7T1BV
U19MSUJSQVJZX1ZFUlNJT05fTUFKT1J9IFBBUkVOVF9TQ09QRSkKK2VuZGZ1bmN0aW9uKCkKKwor
ZnVuY3Rpb24oZ2V0X3BhY2thZ2VfdmVyc2lvbiBQQUNLQUdFX1ZFUlNJT04pCisgIGZpbmRfcGFj
a2FnZShHaXQpCisgIGlmKEdJVF9GT1VORCkKKyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAk
e0dJVF9FWEVDVVRBQkxFfSBkZXNjcmliZSAtLXRhZ3MgLS1tYXRjaCAidioiCisgICAgICAgICAg
ICAgICAgICAgIE9VVFBVVF9WQVJJQUJMRSBPUFVTX1BBQ0tBR0VfVkVSU0lPTikKKyAgICBpZihP
UFVTX1BBQ0tBR0VfVkVSU0lPTikKKyAgICAgIHN0cmluZyhTVFJJUCAke09QVVNfUEFDS0FHRV9W
RVJTSU9OfSwgT1BVU19QQUNLQUdFX1ZFUlNJT04pCisgICAgICBzdHJpbmcoUkVQTEFDRSBcbgor
ICAgICAgICAgICAgICAgICAgICAgIiIKKyAgICAgICAgICAgICAgICAgICAgIE9QVVNfUEFDS0FH
RV9WRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICAke09QVVNfUEFDS0FHRV9WRVJTSU9OfSkK
KyAgICAgIHN0cmluZyhSRVBMQUNFICwKKyAgICAgICAgICAgICAgICAgICAgICIiCisgICAgICAg
ICAgICAgICAgICAgICBPUFVTX1BBQ0tBR0VfVkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAg
JHtPUFVTX1BBQ0tBR0VfVkVSU0lPTn0pCisKKyAgICAgIHN0cmluZyhTVUJTVFJJTkcgJHtPUFVT
X1BBQ0tBR0VfVkVSU0lPTn0KKyAgICAgICAgICAgICAgICAgICAgICAgMQorICAgICAgICAgICAg
ICAgICAgICAgICAtMQorICAgICAgICAgICAgICAgICAgICAgICBPUFVTX1BBQ0tBR0VfVkVSU0lP
TikKKyAgICAgIHNldChQQUNLQUdFX1ZFUlNJT04gJHtPUFVTX1BBQ0tBR0VfVkVSU0lPTn0gUEFS
RU5UX1NDT1BFKQorICAgICAgcmV0dXJuKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKKworICBp
ZihFWElTVFMgIiR7Q01BS0VfU09VUkNFX0RJUn0vcGFja2FnZV92ZXJzaW9uIikKKyAgICAjIE5v
dCBhIGdpdCByZXBvLCBsZXRzJyB0cnkgdG8gcGFyc2UgaXQgZnJvbSBwYWNrYWdlX3ZlcnNpb24g
ZmlsZSBpZiBleGlzdHMKKyAgICBmaWxlKFNUUklOR1MgcGFja2FnZV92ZXJzaW9uIG9wdXNfcGFj
a2FnZV92ZXJzaW9uX3N0cmluZworICAgICAgICAgTElNSVRfQ09VTlQgMQorICAgICAgICAgUkVH
RVggIlBBQ0tBR0VfVkVSU0lPTj0iKQorICAgIHN0cmluZyhSRVBMQUNFICJQQUNLQUdFX1ZFUlNJ
T049IgorICAgICAgICAgICAgICAgICAgICIiCisgICAgICAgICAgICAgICAgICAgb3B1c19wYWNr
YWdlX3ZlcnNpb25fc3RyaW5nCisgICAgICAgICAgICAgICAgICAgJHtvcHVzX3BhY2thZ2VfdmVy
c2lvbl9zdHJpbmd9KQorICAgIHN0cmluZyhSRVBMQUNFICJcIiIKKyAgICAgICAgICAgICAgICAg
ICAiIgorICAgICAgICAgICAgICAgICAgIG9wdXNfcGFja2FnZV92ZXJzaW9uX3N0cmluZworICAg
ICAgICAgICAgICAgICAgICR7b3B1c19wYWNrYWdlX3ZlcnNpb25fc3RyaW5nfSkKKyAgICBzZXQo
UEFDS0FHRV9WRVJTSU9OICR7b3B1c19wYWNrYWdlX3ZlcnNpb25fc3RyaW5nfSBQQVJFTlRfU0NP
UEUpCisgICAgcmV0dXJuKCkKKyAgZW5kaWYoKQorCisgICMgaWYgYWxsIGVsc2UgZmFpbHMgc2V0
IHRvIDAKKyAgc2V0KFBBQ0tBR0VfVkVSU0lPTiAwIFBBUkVOVF9TQ09QRSkKK2VuZGZ1bmN0aW9u
KCkKKworZnVuY3Rpb24oY2hlY2tfYW5kX3NldF9mbGFnIE5BTUUgRkxBRykKKyAgaW5jbHVkZShD
aGVja0NDb21waWxlckZsYWcpCisgIGNoZWNrX2NfY29tcGlsZXJfZmxhZygke0ZMQUd9ICR7TkFN
RX1fU1VQUE9SVEVEKQorICBpZigke05BTUV9X1NVUFBPUlRFRCkKKyAgICBhZGRfZGVmaW5pdGlv
bnMoJHtGTEFHfSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihjaGVja19m
bGFnIE5BTUUgRkxBRykKKyAgaW5jbHVkZShDaGVja0NDb21waWxlckZsYWcpCisgIGNoZWNrX2Nf
Y29tcGlsZXJfZmxhZygke0ZMQUd9ICR7TkFNRX1fU1VQUE9SVEVEKQorZW5kZnVuY3Rpb24oKQor
CitpbmNsdWRlKENoZWNrSW5jbHVkZUZpbGUpCisjIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGNvbXBp
bGVyIHN1cHBvcnRzIFNTRSwgU1NFMiwgU1NFNC4xIGFuZCBBVlggaWYgdGFyZ2V0CisjIHN5c3Rl
bXMgbWF5IG5vdCBoYXZlIFNTRSBzdXBwb3J0IHRoZW4gdXNlIE9QVVNfTUFZX0hBVkVfU1NFIG9w
dGlvbiBpZiB0YXJnZXQKKyMgc3lzdGVtIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBTU0Ugc3VwcG9y
dCB0aGVuIE9QVVNfUFJFU1VNRV9TU0UgY2FuIGJlIHVzZWQgdG8KKyMgc2tpcCBTU0UgcnVudGlt
ZSBjaGVjaworZnVuY3Rpb24ob3B1c19kZXRlY3Rfc3NlIENPTVBJTEVSX1NVUFBPUlRfU0lNRCkK
KyAgbWVzc2FnZShTVEFUVVMgIkNoZWNrIFNJTUQgc3VwcG9ydCBieSBjb21waWxlciIpCisgIGNo
ZWNrX2luY2x1ZGVfZmlsZSh4bW1pbnRyaW4uaCBIQVZFX1hNTUlOVFJJTl9IKSAjIFNTRTEKKyAg
aWYoSEFWRV9YTU1JTlRSSU5fSCkKKyAgICBpZihNU1ZDKQorICAgICAgIyBkaWZmZXJlbnQgYXJj
aCBvcHRpb25zIGZvciAzMiBhbmQgNjQgYml0IHRhcmdldCBmb3IgTVNWQworICAgICAgaWYoQ01B
S0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQorICAgICAgICBjaGVja19mbGFnKFNTRTEgL2FyY2g6
U1NFKQorICAgICAgZWxzZSgpCisgICAgICAgIHNldChTU0UxX1NVUFBPUlRFRCAxIFBBUkVOVF9T
Q09QRSkKKyAgICAgIGVuZGlmKCkKKyAgICBlbHNlKCkKKyAgICAgIGNoZWNrX2FuZF9zZXRfZmxh
ZyhTU0UxIC1tc3NlKQorICAgIGVuZGlmKCkKKyAgZWxzZSgpCisgICAgc2V0KFNTRTFfU1VQUE9S
VEVEIDAgUEFSRU5UX1NDT1BFKQorICBlbmRpZigpCisKKyAgY2hlY2tfaW5jbHVkZV9maWxlKGVt
bWludHJpbi5oIEhBVkVfRU1NSU5UUklOX0gpICMgU1NFMgorICBpZihIQVZFX0VNTUlOVFJJTl9I
KQorICAgIGlmKE1TVkMpCisgICAgICBpZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpCisg
ICAgICAgIGNoZWNrX2ZsYWcoU1NFMiAvYXJjaDpTU0UyKQorICAgICAgZWxzZSgpCisgICAgICAg
IHNldChTU0UyX1NVUFBPUlRFRCAxIFBBUkVOVF9TQ09QRSkKKyAgICAgIGVuZGlmKCkKKyAgICBl
bHNlKCkKKyAgICAgIGNoZWNrX2FuZF9zZXRfZmxhZyhTU0UyIC1tc3NlMikKKyAgICBlbmRpZigp
CisgIGVsc2UoKQorICAgIHNldChTU0UyX1NVUFBPUlRFRCAwIFBBUkVOVF9TQ09QRSkKKyAgZW5k
aWYoKQorCisgIGNoZWNrX2luY2x1ZGVfZmlsZShzbW1pbnRyaW4uaCBIQVZFX1NNTUlOVFJJTl9I
KSAjIFNTRTQuMQorICBpZihIQVZFX1NNTUlOVFJJTl9IKQorICAgIGlmKE1TVkMpCisgICAgICBp
ZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpCisgICAgICAgIGNoZWNrX2ZsYWcoU1NFNF8x
IC9hcmNoOlNTRTIpICMgU1NFMiBhbmQgYWJvdmUKKyAgICAgIGVsc2UoKQorICAgICAgICBzZXQo
U1NFNF8xX1NVUFBPUlRFRCAxIFBBUkVOVF9TQ09QRSkKKyAgICAgIGVuZGlmKCkKKyAgICBlbHNl
KCkKKyAgICAgIGNoZWNrX2FuZF9zZXRfZmxhZyhTU0U0XzEgLW1zc2U0LjEpCisgICAgZW5kaWYo
KQorICBlbHNlKCkKKyAgICBzZXQoU1NFNF8xX1NVUFBPUlRFRCAwIFBBUkVOVF9TQ09QRSkKKyAg
ZW5kaWYoKQorCisgIGNoZWNrX2luY2x1ZGVfZmlsZShpbW1pbnRyaW4uaCBIQVZFX0lNTUlOVFJJ
Tl9IKSAjIEFWWAorICBpZihIQVZFX0lNTUlOVFJJTl9IKQorICAgIGlmKE1TVkMpCisgICAgICBj
aGVja19mbGFnKEFWWCAvYXJjaDpBVlgpCisgICAgZWxzZSgpCisgICAgICBjaGVja19hbmRfc2V0
X2ZsYWcoQVZYIC1tYXZ4KQorICAgIGVuZGlmKCkKKyAgZWxzZSgpCisgICAgc2V0KEFWWF9TVVBQ
T1JURUQgMCBQQVJFTlRfU0NPUEUpCisgIGVuZGlmKCkKKworICBpZihNU1ZDKSAjIFRvIGF2b2lk
IHdhcm5pbmcgRDkwMjUgb2Ygb3ZlcnJpZGluZyBjb21waWxlciBvcHRpb25zCisgICAgaWYoQVZY
X1NVUFBPUlRFRCkgIyBvbiA2NCBiaXQgYW5kIDMyIGJpdHMKKyAgICAgIGFkZF9kZWZpbml0aW9u
cygvYXJjaDpBVlgpCisgICAgZWxzZWlmKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgNCkgIyBp
ZiBBVlggbm90IHN1cHBvcnRlZCB0aGVuIHNldCBTU0UgZmxhZworICAgICAgaWYoU1NFNF8xX1NV
UFBPUlRFRCBPUiBTU0UyX1NVUFBPUlRFRCkKKyAgICAgICAgYWRkX2RlZmluaXRpb25zKC9hcmNo
OlNTRTIpCisgICAgICBlbHNlaWYoU1NFMV9TVVBQT1JURUQpCisgICAgICAgIGFkZF9kZWZpbml0
aW9ucygvYXJjaDpTU0UpCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCisK
KyAgaWYoU1NFMV9TVVBQT1JURUQgT1IgU1NFMl9TVVBQT1JURUQgT1IgU1NFNF8xX1NVUFBPUlRF
RCBPUiBBVlhfU1VQUE9SVEVEKQorICAgIHNldChDT01QSUxFUl9TVVBQT1JUX1NJTUQgMSBQQVJF
TlRfU0NPUEUpCisgIGVsc2UoKQorICAgIG1lc3NhZ2UoU1RBVFVTICJObyBTSU1EIHN1cHBvcnQg
aW4gY29tcGlsZXIiKQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCisKK2Z1bmN0aW9uKG9wdXNf
ZGV0ZWN0X25lb24gQ09NUElMRVJfU1VQUE9SVF9ORU9OKQorICBpZihDTUFLRV9TWVNURU1fUFJP
Q0VTU09SIE1BVENIRVMgIihhcm12Ny1hfGFhcmNoNjQpIikKKyAgICBtZXNzYWdlKFNUQVRVUyAi
Q2hlY2sgTkVPTiBzdXBwb3J0IGJ5IGNvbXBpbGVyIikKKyAgICBjaGVja19pbmNsdWRlX2ZpbGUo
YXJtX25lb24uaCBIQVZFX0FSTV9ORU9OX0gpCisgICAgaWYoSEFWRV9BUk1fTkVPTl9IKQorICAg
ICAgc2V0KENPTVBJTEVSX1NVUFBPUlRfTkVPTiAke0hBVkVfQVJNX05FT05fSH0gUEFSRU5UX1ND
T1BFKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihv
cHVzX3N1cHBvcnRzX2NwdV9kZXRlY3Rpb24gUlVOVElNRV9DUFVfQ0FQQUJJTElUWV9ERVRFQ1RJ
T04pCisgIGlmKE1TVkMpCisgICAgY2hlY2tfaW5jbHVkZV9maWxlKGludHJpbi5oIEhBVkVfSU5U
UklOX0gpCisgIGVsc2UoKQorICAgIGNoZWNrX2luY2x1ZGVfZmlsZShjcHVpZC5oIEhBVkVfQ1BV
SURfSCkKKyAgZW5kaWYoKQorICBpZihIQVZFX0lOVFJJTl9IIE9SIEhBVkVfQ1BVSURfSCkKKyAg
ICBzZXQoUlVOVElNRV9DUFVfQ0FQQUJJTElUWV9ERVRFQ1RJT04gMSBQQVJFTlRfU0NPUEUpCisg
IGVsc2UoKQorICAgIHNldChSVU5USU1FX0NQVV9DQVBBQklMSVRZX0RFVEVDVElPTiAwIFBBUkVO
VF9TQ09QRSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihhZGRfc291cmNl
c19ncm91cCB0YXJnZXQgZ3JvdXApCisgIHRhcmdldF9zb3VyY2VzKCR7dGFyZ2V0fSBQUklWQVRF
ICR7QVJHTn0pCisgIHNvdXJjZV9ncm91cCgke2dyb3VwfSBGSUxFUyAke0FSR059KQorZW5kZnVu
Y3Rpb24oKQorCitmdW5jdGlvbihnZXRfb3B1c19zb3VyY2VzIFNPVVJDRV9HUk9VUCBNQUtFX0ZJ
TEUgU09VUkNFUykKKyAgIyByZWFkIGZpbGUsIGVhY2ggaXRlbSBpbiBsaXN0IGlzIG9uZSBncm91
cAorICBmaWxlKFNUUklOR1MgJHtNQUtFX0ZJTEV9IG9wdXNfc291cmNlcykKKworICAjIGFkZCB3
aWxkY2FyZCBmb3IgcmVnZXggbWF0Y2gKKyAgc3RyaW5nKENPTkNBVCBTT1VSQ0VfR1JPVVAgJHtT
T1VSQ0VfR1JPVVB9ICIuKiQiKQorCisgICMgZmluZCBncm91cAorICBmb3JlYWNoKHZhbCBJTiBM
SVNUUyBvcHVzX3NvdXJjZXMpCisgICAgaWYodmFsIE1BVENIRVMgJHtTT1VSQ0VfR1JPVVB9KQor
ICAgICAgbGlzdChMRU5HVEggdmFsIGxpc3RfbGVuZ3RoKQorICAgICAgaWYoJHtsaXN0X2xlbmd0
aH0gRVFVQUwgMSkKKyAgICAgICAgIyBmb3IgdGVzdHMgc3BsaXQgYnkgJz0nIGFuZCBjbGVhbiB1
cCB0aGUgcmVzdCBpbnRvIGEgbGlzdAorICAgICAgICBzdHJpbmcoRklORCAke3ZhbH0gIj0iIGlu
ZGV4KQorICAgICAgICBtYXRoKEVYUFIgaW5kZXggIiR7aW5kZXh9ICsgMSIpCisgICAgICAgIHN0
cmluZyhTVUJTVFJJTkcgJHt2YWx9CisgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmRleH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAtMQorICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZXMpCisgICAgICAgIHN0cmluZyhSRVBMQUNFICIgIgorICAgICAgICAgICAgICAgICAgICAg
ICAiOyIKKyAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcworICAgICAgICAgICAgICAgICAg
ICAgICAke3NvdXJjZXN9KQorICAgICAgZWxzZSgpCisgICAgICAgICMgZGlzY2FyZCB0aGUgZ3Jv
dXAKKyAgICAgICAgbGlzdChSRU1PVkVfQVQgdmFsIDApCisgICAgICAgIHNldChzb3VyY2VzICR7
dmFsfSkKKyAgICAgIGVuZGlmKCkKKyAgICAgIGJyZWFrKCkKKyAgICBlbmRpZigpCisgIGVuZGZv
cmVhY2goKQorCisgIGxpc3QoTEVOR1RIIHNvdXJjZXMgbGlzdF9sZW5ndGgpCisgIGlmKCR7bGlz
dF9sZW5ndGh9IExFU1MgMSkKKyAgICBtZXNzYWdlKAorICAgICAgRkFUQUxfRVJST1IKKyAgICAg
ICAgIk5vIGZpbGVzIHBhcnNlZCBzdWNjZXNmdWxseSBmcm9tICR7U09VUkNFX0dST1VQfSBpbiAk
e01BS0VfRklMRX0iKQorICBlbmRpZigpCisKKyAgIyByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFj
ZXMKKyAgc2V0KGxpc3RfdmFyICIiKQorICBmb3JlYWNoKHNvdXJjZSAke3NvdXJjZXN9KQorICAg
IHN0cmluZyhTVFJJUCAiJHtzb3VyY2V9IiBzb3VyY2UpCisgICAgbGlzdChBUFBFTkQgbGlzdF92
YXIgIiR7c291cmNlfSIpCisgIGVuZGZvcmVhY2goKQorCisgIHNldCgke1NPVVJDRVN9ICR7bGlz
dF92YXJ9IFBBUkVOVF9TQ09QRSkKK2VuZGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvb3B1c19zb3Vy
Y2VzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9vcHVzX3NvdXJjZXMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI1NTQzYWYzNjQxZGIw
MGYwMTA0MzlkNTUzMjRhN2FiMzc4MjQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvb3B1c19zb3VyY2Vz
LmNtYWtlCkBAIC0wLDAgKzEsMzggQEAKK2luY2x1ZGUob3B1c19mdW5jdGlvbnMuY21ha2UpCisK
K2dldF9vcHVzX3NvdXJjZXMoU0lMS19TT1VSQ0VTIHNpbGtfc291cmNlcy5tayBzaWxrX3NvdXJj
ZXMpCitnZXRfb3B1c19zb3VyY2VzKFNJTEtfU09VUkNFU19GTE9BVCBzaWxrX3NvdXJjZXMubWsg
c2lsa19zb3VyY2VzX2Zsb2F0KQorZ2V0X29wdXNfc291cmNlcyhTSUxLX1NPVVJDRVNfRklYRUQg
c2lsa19zb3VyY2VzLm1rIHNpbGtfc291cmNlc19maXhlZCkKK2dldF9vcHVzX3NvdXJjZXMoU0lM
S19TT1VSQ0VTX1NTRTRfMSBzaWxrX3NvdXJjZXMubWsgc2lsa19zb3VyY2VzX3NzZTRfMSkKK2dl
dF9vcHVzX3NvdXJjZXMoU0lMS19TT1VSQ0VTX0ZJWEVEX1NTRTRfMSBzaWxrX3NvdXJjZXMubWsK
KyAgICAgICAgICAgICAgICAgc2lsa19zb3VyY2VzX2ZpeGVkX3NzZTRfMSkKK2dldF9vcHVzX3Nv
dXJjZXMoU0lMS19TT1VSQ0VTX0FSTV9ORU9OX0lOVFIgc2lsa19zb3VyY2VzLm1rCisgICAgICAg
ICAgICAgICAgIHNpbGtfc291cmNlc19hcm1fbmVvbl9pbnRyKQorZ2V0X29wdXNfc291cmNlcyhT
SUxLX1NPVVJDRVNfRklYRURfQVJNX05FT05fSU5UUiBzaWxrX3NvdXJjZXMubWsKKyAgICAgICAg
ICAgICAgICAgc2lsa19zb3VyY2VzX2ZpeGVkX2FybV9uZW9uX2ludHIpCisKK2dldF9vcHVzX3Nv
dXJjZXMoT1BVU19TT1VSQ0VTIG9wdXNfc291cmNlcy5tayBvcHVzX3NvdXJjZXMpCitnZXRfb3B1
c19zb3VyY2VzKE9QVVNfU09VUkNFU19GTE9BVCBvcHVzX3NvdXJjZXMubWsgb3B1c19zb3VyY2Vz
X2Zsb2F0KQorCitnZXRfb3B1c19zb3VyY2VzKENFTFRfU09VUkNFUyBjZWx0X3NvdXJjZXMubWsg
Y2VsdF9zb3VyY2VzKQorZ2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVNfU1NFIGNlbHRfc291
cmNlcy5tayBjZWx0X3NvdXJjZXNfc3NlKQorZ2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVNf
U1NFMiBjZWx0X3NvdXJjZXMubWsgY2VsdF9zb3VyY2VzX3NzZTIpCitnZXRfb3B1c19zb3VyY2Vz
KENFTFRfU09VUkNFU19TU0U0XzEgY2VsdF9zb3VyY2VzLm1rIGNlbHRfc291cmNlc19zc2U0XzEp
CitnZXRfb3B1c19zb3VyY2VzKENFTFRfU09VUkNFU19BUk0gY2VsdF9zb3VyY2VzLm1rIGNlbHRf
c291cmNlc19hcm0pCitnZXRfb3B1c19zb3VyY2VzKENFTFRfU09VUkNFU19BUk1fQVNNIGNlbHRf
c291cmNlcy5tayBjZWx0X3NvdXJjZXNfYXJtX2FzbSkKK2dldF9vcHVzX3NvdXJjZXMoQ0VMVF9B
TV9TT1VSQ0VTX0FSTV9BU00gY2VsdF9zb3VyY2VzLm1rCisgICAgICAgICAgICAgICAgIGNlbHRf
YW1fc291cmNlc19hcm1fYXNtKQorZ2V0X29wdXNfc291cmNlcyhDRUxUX1NPVVJDRVNfQVJNX05F
T05fSU5UUiBjZWx0X3NvdXJjZXMubWsKKyAgICAgICAgICAgICAgICAgY2VsdF9zb3VyY2VzX2Fy
bV9uZW9uX2ludHIpCitnZXRfb3B1c19zb3VyY2VzKENFTFRfU09VUkNFU19BUk1fTkUxMCBjZWx0
X3NvdXJjZXMubWsgY2VsdF9zb3VyY2VzX2FybV9uZTEwKQorCitnZXRfb3B1c19zb3VyY2VzKG9w
dXNfZGVtb19TT1VSQ0VTIE1ha2VmaWxlLmFtIG9wdXNfZGVtb19zb3VyY2VzKQorZ2V0X29wdXNf
c291cmNlcyhvcHVzX2N1c3RvbV9kZW1vX1NPVVJDRVMgTWFrZWZpbGUuYW0gb3B1c19jdXN0b21f
ZGVtb19zb3VyY2VzKQorZ2V0X29wdXNfc291cmNlcyhvcHVzX2NvbXBhcmVfU09VUkNFUyBNYWtl
ZmlsZS5hbSBvcHVzX2NvbXBhcmVfc291cmNlcykKK2dldF9vcHVzX3NvdXJjZXModGVzdHNfdGVz
dF9vcHVzX2FwaV9TT1VSQ0VTIE1ha2VmaWxlLmFtIHRlc3Rfb3B1c19hcGlfc291cmNlcykKK2dl
dF9vcHVzX3NvdXJjZXModGVzdHNfdGVzdF9vcHVzX2VuY29kZV9TT1VSQ0VTIE1ha2VmaWxlLmFt
CisgICAgICAgICAgICAgICAgIHRlc3Rfb3B1c19lbmNvZGVfc291cmNlcykKK2dldF9vcHVzX3Nv
dXJjZXModGVzdHNfdGVzdF9vcHVzX2RlY29kZV9TT1VSQ0VTIE1ha2VmaWxlLmFtCisgICAgICAg
ICAgICAgICAgIHRlc3Rfb3B1c19kZWNvZGVfc291cmNlcykKK2dldF9vcHVzX3NvdXJjZXModGVz
dHNfdGVzdF9vcHVzX3BhZGRpbmdfU09VUkNFUyBNYWtlZmlsZS5hbQorICAgICAgICAgICAgICAg
ICB0ZXN0X29wdXNfcGFkZGluZ19zb3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9yZWxlYXNlcy5zaGEyIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9y
ZWxlYXNlcy5zaGEyCmluZGV4IGIxYjMyYzAwNTUxOGZmZDQ0YWQ1MDU5NzIyNWY3OGQzOWI1NTZl
YjkuLjMzNDk3NmIxNDU1NTM3M2YwZDE1YjdhMGY1NzgyZWE4ZmI3YTZhZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
cmVsZWFzZXMuc2hhMgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3JlbGVhc2VzLnNoYTIKQEAgLTM2LDggKzM2LDE0IEBAIGMwZTkw
NTA3MjU5Y2YyMWNlN2IyYzgyZmI5YWM1NTM2N2Q4NTQzZGFlOTFjYzNkNGQyYzU5YWZkMzdmNDQw
MjMgIG9wdXMtMS4yLWFscGhhCiA4NTM0M2ZkYWVkOTY1MjlkOTRjMWUxZjNhMjEwZmE1MTI0MGQw
NGNhNjJmYTAxZTk3ZWYwMmY4ODAyMGMyY2U5ICBvcHVzLTEuMi1yYzEudGFyLmd6CiA3N2RiNDVh
ODdiNTE1NzhmYmM0OTU1NWVmMWIxMDkyNjE3OTg2MWQ4NTRlYjI2MTMyMDdkYzc5ZDllYzBhOWE5
ICBvcHVzLTEuMi50YXIuZ3oKIGNmYWZkMzM5Y2NkOWM1ZWY4ZDZhYjE1ZDdlMWE0MTJjMDU0YmY0
Y2I0ZWNiYmJjYzc4YzEyZWYyZGVmNzA3MzIgIG9wdXMtMS4yLjEudGFyLmd6Cis3ZjU2ZTA1OGM5
NTQ5ZDAzYWUzNTUxMWFkOWUxNmVmNmQxZWIyNTc4MzY4MzBkNTRhYmZmMGY0OTVmMTdlMTg3ICBv
cHVzLTEuMy1iZXRhLnRhci5negorOTZmYTI4NTk4ZThjY2Q1NThiMjk3Mjc3YWQ1OWEwNDVjNTUx
YmEwZTA2ZDY1YTk2NzU5MzhlMDg0ZjgzNzY2OSAgb3B1cy0xLjMtcmMudGFyLmd6CitmNmJhYjMy
MWZiODFkYjk4NDc2NmYxZTRkMzQwYTllNzFhNWNhMmM1ZDRkNTNmNGVlMDcyZTg0YWZkYTI3MWNh
ICBvcHVzLTEuMy1yYzIudGFyLmd6Cis0ZjNkNjlhZWZkZjJkYmFmOTgyNTQwOGU0NTJhOGE0MTRm
ZmM2MDQ5NGM3MDYzMzU2MDcwMDM5ODgyMGRjNTUwICBvcHVzLTEuMy50YXIuZ3oKKzY1YjU4ZTFl
MjViMmExMTQxNTcwMTQ3MzZhM2Q5ZGZlYWFkOGQ0MWJlMWM4MTc5ODY2ZjE0NGEyZmI0NGZmOWQg
IG9wdXMtMS4zLjEudGFyLmd6CiA5NGFjNzhjYTRmNzRjNGU0M2JjOWZlNGVjMWFkMGFhMzZmMzhh
YjkwZjQ1YjA3MjdjNDBkZDFlOTYwOTZlNzY3ICBvcHVzX3Rlc3R2ZWN0b3JzLWRyYWZ0MTEudGFy
Lmd6CiA5NGFjNzhjYTRmNzRjNGU0M2JjOWZlNGVjMWFkMGFhMzZmMzhhYjkwZjQ1YjA3MjdjNDBk
ZDFlOTYwOTZlNzY3ICBvcHVzX3Rlc3R2ZWN0b3JzLnRhci5negorNmIyNmEyMmY5YmE4N2IyYjgz
NjkwNmE5YmI3YWZlYzVmOGU1NGQ0OTU1M2IxMjAwMzgyNTIwZWU2ZmVkZmE1NSAgb3B1c190ZXN0
dmVjdG9ycy1yZmM4MjUxLnRhci5negogNWQyYjk5NzU3YmNiNjI4YmFiMjYxMWYzZWQyN2FmNmYz
NTI3NmNlM2FiYzk2YzBlZDQzOTlkNmM2NDYzZGRhNSAgb3B1cy10b29scy0wLjEuMi50YXIuZ3oK
IDAwODMxNzI5N2Q2Y2U4NGY4NDk5MmFiZjhjYzk0OGEwNDhhNGZhMTM1ZTFkMWNhZjQyOWZhZmRl
ODk2NWE3OTIgIG9wdXMtdG9vbHMtMC4xLjMudGFyLmd6CiBkZTgwNDg1YzVhZmExZmQ4M2MwZTE2
YTBkZDQ4NjA0NzBjODcyOTk3YTdkZDBhNThlOTliMmVlOGE5M2U1MTY4ICBvcHVzLXRvb2xzLTAu
MS40LnRhci5negpAQCAtNDcsNyArNTMsMTEgQEAgZTBmMDhkMzAxNTU1ZGZmYzQxNzYwNDI2OWI1
YTg1ZDJiZDE5N2YyNTljN2Q2Yzk1N2YzNzBmZmQzM2Q2ZDljZCAgb3B1cy10b29scy0wLjEKIGU0
ZTE4ODU3OWVhMWM0ZTRkNTA2NjQ2MGQ0YTcyMTRhN2VhZmUzNTM5ZTlhNDQ2NmZkYzk4YWY0MWJh
NGEyZjYgIG9wdXMtdG9vbHMtMC4xLjgudGFyLmd6CiBiMTg3M2RkNzhjN2ZiYzk4Y2Y2NWQ2ZTEw
Y2ZkZGI1YzJjMDNiM2FmOTNmOTIyMTM5YTIxMDRiYWVkYjQ2NDNhICBvcHVzLXRvb2xzLTAuMS45
LnRhci5negogYTIzNTc1MzJkMTk0NzFiNzA2NjZlMGUwZWMxN2Q1MTQyNDZkOGIzY2IyZWIxNjhm
NjhiYjBmNmZkMzcyYjI4YyAgb3B1cy10b29scy0wLjEuMTAudGFyLmd6CitiNGU1NmNiMDBkM2U1
MDlhY2ZiYTlhOWI2MjdmZmQ4MjczYjg3NmI0ZTI0MDg2NDIyNTlmNmRhMjhmYTBmZjg2ICBvcHVz
LXRvb2xzLTAuMi50YXIuZ3oKIGJkNmQxNGU4ODk3YTJmODAwNjVlZjM0YTUxNmM3MGU3NGY4ZTAw
MDYwYWJkYmMyMzhlNzllNWY5OWJjYTNlOTYgIGxpYm9wdXNlbmMtMC4xLnRhci5negorMDJlNmUw
YjE0Y2JiZTA1NjlkOTQ4YTQ2NDIwZjljOWE4MWQ5M2JiYTMyZGM1NzZhNDAwN2NiZjk2ZGE2OGVm
MyAgbGlib3B1c2VuYy0wLjEuMS50YXIuZ3oKK2M3OWU5NWVlZWU0M2EwYjk2NWU5YjJjNTlhMjQz
NzYzYThmOGIwYTdlNzE0NDFkZjJhYTkwODRmNjE3MWM3M2EgIGxpYm9wdXNlbmMtMC4yLnRhci5n
egorODI5OGRiNjFhOGQzZDYzZTQxYzFhODA3MDViYWE4Y2U5ZmYzZjUwNDUyZWE3ZWMxYzE5YTU2
NGZlMTA2Y2JiOSAgbGlib3B1c2VuYy0wLjIuMS50YXIuZ3oKIDgwNzFiOTY4NDc1YzFhMTdmNTRi
Njg0MGQ2ZGU5ZDllZTIwZjkzMGU4MjdiMDQwMWFiZTNjNGNmNGYzYmYzMGEgIG9wdXNmaWxlLTAu
MS50YXIuZ3oKIGI0YTY3OGIzYjZjNGFkZmI2YWZmMWY2N2VmNjU4YmVjZmUxNDZlYTdjN2ZmMjI4
ZTk5NTQzNzYyMTcxNTU3ZjkgIG9wdXNmaWxlLTAuMi50YXIuZ3oKIDQyNDg5MjdmMmM0ZTMxNmVh
NWI4NGZiMDJiZDEwMGJmZWM4ZmE0NjI0YTY5MTBkNzdmMGFmN2YwYzZjYjhiYWEgIG9wdXNmaWxl
LTAuMy50YXIuZ3oKQEAgLTYxLDMgKzcxLDkgQEAgYjk0MGQ2MmJlYjE1YjU5NzQ3NjQ1NzRiOWYy
NjU0ODFmZTViNmVlMTY5MDJmYjcwNTcyNzU0NmNhZjk1NjI2MSAgb3B1c2ZpbGUtMC41LnoKIDM0
Njk2N2Q3OTg5YmI4M2IwNTk0OTQ4M2I3NmJkMGY2OWExMmM1OWJkOGI0NDU3ZTg2NDkwMmI1MmJi
MGFjMzQgIG9wdXNmaWxlLTAuNy56aXAKIDJjMjMxZWQzY2ZhYTFiMzE3M2Y1MmQ3NDBlNWJiZDc3
ZDUxYjlkZmVjYjg3MDE0YjQwNDkxN2ZiYTRiODU1YTQgIG9wdXNmaWxlLTAuOC50YXIuZ3oKIDg5
ZGZmNDM0MmMzYjc4OTU3NGNiZWE1YzU3ZjExYjk2ZDRlYmU0ZDI4YWI5MDI0OGMxNzgzZWE1Njli
MWU5ZTMgIG9wdXNmaWxlLTAuOC56aXAKK2Y3NWZiNTAwZTQwYjEyMjc3NWFjMWE3MWFkODBjNDQ3
NzY5ODg0MmE4ZmU5ZGE0YTFiNGExYTlmMTZlNGU5NzkgIG9wdXNmaWxlLTAuOS50YXIuZ3oKK2U5
NTkxZGE0ZDRjOWU4NTc0MzZjMmQ0NmEyOGE5ZTQ3MGZhNTM1NWVhNWE3NmQ0ZDU4MmYxMzdkMTg3
NTVkMzYgIG9wdXNmaWxlLTAuOS56aXAKKzQ4ZTAzNTI2YmE4N2VmOWNmNWYxYzQ3YjVlYmUzYWEx
OTViZDg5YjkxMmE1NzA2MGMzNjE4NGE2Y2QxOTQxMmYgIG9wdXNmaWxlLTAuMTAudGFyLmd6Cis5
ZDllOTVkMDE4MTdlY2Y0OGJmNmRhYWVhOGYwNzFmOWI0NWJkMTc1MWNhMWZjOGNlNTBlNTA3NWVi
MmJjM2M4ICBvcHVzZmlsZS0wLjEwLnppcAorNzRjZTliNmNmNGRhMTAzMTMzZTdiNWM5NWRmODEw
Y2ViNzE5NTQ3MWUxMTYyZWQ1N2FmNDE1ZmFiZjU2MDNiZiAgb3B1c2ZpbGUtMC4xMS50YXIuZ3oK
KzIzYzUxNjgwMjZjNGYxZmMzNDg0MzY1MDEzNWI0MDlkMGZjOGNmNDUyNTA4MTYzYjRlY2U4MDc3
MjU2YWM2ZmYgIG9wdXNmaWxlLTAuMTEuemlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NjcmlwdHMvZHVtcF9ybm4u
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NjcmlwdHMvZHVtcF9ybm4ucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ2NjQwM2I1MmU4ODdjODQzMzAz
YjU0OTc3ZjU0ZDAxYmI0MjNkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2NyaXB0cy9kdW1wX3Jubi5w
eQpAQCAtMCwwICsxLDU3IEBACisjIS91c3IvYmluL3B5dGhvbgorCitmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHByaW50X2Z1bmN0aW9uCisKK2Zyb20ga2VyYXMubW9kZWxzIGltcG9ydCBTZXF1ZW50
aWFsCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgRGVuc2UKK2Zyb20ga2VyYXMubGF5ZXJzIGlt
cG9ydCBMU1RNCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgR1JVCitmcm9tIGtlcmFzLm1vZGVs
cyBpbXBvcnQgbG9hZF9tb2RlbAorZnJvbSBrZXJhcyBpbXBvcnQgYmFja2VuZCBhcyBLCisKK2lt
cG9ydCBudW1weSBhcyBucAorCitkZWYgcHJpbnRWZWN0b3IoZiwgdmVjdG9yLCBuYW1lKToKKyAg
ICB2ID0gbnAucmVzaGFwZSh2ZWN0b3IsICgtMSkpOworICAgICNwcmludCgnc3RhdGljIGNvbnN0
IGZsb2F0ICcsIG5hbWUsICdbJywgbGVuKHYpLCAnXSA9IFxuJywgZmlsZT1mKQorICAgIGYud3Jp
dGUoJ3N0YXRpYyBjb25zdCBvcHVzX2ludDE2IHt9W3t9XSA9IHt7XG4gICAnLmZvcm1hdChuYW1l
LCBsZW4odikpKQorICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbih2KSk6CisgICAgICAgIGYud3Jp
dGUoJ3t9Jy5mb3JtYXQoaW50KHJvdW5kKDgxOTIqdltpXSkpKSkKKyAgICAgICAgaWYgKGkhPWxl
bih2KS0xKToKKyAgICAgICAgICAgIGYud3JpdGUoJywnKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGlmIChpJTg9PTcpOgorICAgICAgICAgICAgZi53cml0ZSgi
XG4gICAiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZi53cml0ZSgiICIpCisgICAgI3By
aW50KHYsIGZpbGU9ZikKKyAgICBmLndyaXRlKCdcbn07XG5cbicpCisgICAgcmV0dXJuOworCitk
ZWYgYmluYXJ5X2Nyb3NzZW50cm9wMih5X3RydWUsIHlfcHJlZCk6CisgICAgICAgIHJldHVybiBL
Lm1lYW4oMipLLmFicyh5X3RydWUtMC41KSAqIEsuYmluYXJ5X2Nyb3NzZW50cm9weSh5X3ByZWQs
IHlfdHJ1ZSksIGF4aXM9LTEpCisKKworbW9kZWwgPSBsb2FkX21vZGVsKCJ3ZWlnaHRzLmhkZjUi
LCBjdXN0b21fb2JqZWN0cz17J2JpbmFyeV9jcm9zc2VudHJvcDInOiBiaW5hcnlfY3Jvc3NlbnRy
b3AyfSkKKword2VpZ2h0cyA9IG1vZGVsLmdldF93ZWlnaHRzKCkKKworZiA9IG9wZW4oJ3Jubl93
ZWlnaHRzLmMnLCAndycpCisKK2Yud3JpdGUoJy8qVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gYSBLZXJhcyBtb2RlbCovXG5cbicpCitmLndyaXRlKCcjaWZkZWYgSEFW
RV9DT05GSUdfSFxuI2luY2x1ZGUgImNvbmZpZy5oIlxuI2VuZGlmXG5cbiNpbmNsdWRlICJtbHAu
aCJcblxuJykKKworcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1swXSwgJ2xheWVyMF93ZWlnaHRzJykK
K3ByaW50VmVjdG9yKGYsIHdlaWdodHNbMV0sICdsYXllcjBfYmlhcycpCitwcmludFZlY3Rvcihm
LCB3ZWlnaHRzWzJdLCAnbGF5ZXIxX3dlaWdodHMnKQorcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1sz
XSwgJ2xheWVyMV9yZWN1cl93ZWlnaHRzJykKK3ByaW50VmVjdG9yKGYsIHdlaWdodHNbNF0sICds
YXllcjFfYmlhcycpCitwcmludFZlY3RvcihmLCB3ZWlnaHRzWzVdLCAnbGF5ZXIyX3dlaWdodHMn
KQorcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1s2XSwgJ2xheWVyMl9iaWFzJykKKworZi53cml0ZSgn
Y29uc3QgRGVuc2VMYXllciBsYXllcjAgPSB7XG4gICBsYXllcjBfYmlhcyxcbiAgIGxheWVyMF93
ZWlnaHRzLFxuICAgMjUsIDE2LCAwXG59O1xuXG4nKQorZi53cml0ZSgnY29uc3QgR1JVTGF5ZXIg
bGF5ZXIxID0ge1xuICAgbGF5ZXIxX2JpYXMsXG4gICBsYXllcjFfd2VpZ2h0cyxcbiAgIGxheWVy
MV9yZWN1cl93ZWlnaHRzLFxuICAgMTYsIDEyXG59O1xuXG4nKQorZi53cml0ZSgnY29uc3QgRGVu
c2VMYXllciBsYXllcjIgPSB7XG4gICBsYXllcjJfYmlhcyxcbiAgIGxheWVyMl93ZWlnaHRzLFxu
ICAgMTIsIDIsIDFcbn07XG5cbicpCisKK2YuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zY3JpcHRzL3Ju
bl90cmFpbi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2NyaXB0cy9ybm5fdHJhaW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZkYWExZTdkMDM5
MDg0NzI5YzRhMDAyMWYzMTc2Y2VmNGRhMjAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2NyaXB0cy9y
bm5fdHJhaW4ucHkKQEAgLTAsMCArMSw2NyBAQAorIyEvdXNyL2Jpbi9weXRob24KKworZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorCitmcm9tIGtlcmFzLm1vZGVscyBpbXBv
cnQgU2VxdWVudGlhbAorZnJvbSBrZXJhcy5tb2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGtlcmFz
LmxheWVycyBpbXBvcnQgSW5wdXQKK2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBEZW5zZQorZnJv
bSBrZXJhcy5sYXllcnMgaW1wb3J0IExTVE0KK2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBHUlUK
K2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBTaW1wbGVSTk4KK2Zyb20ga2VyYXMubGF5ZXJzIGlt
cG9ydCBEcm9wb3V0Citmcm9tIGtlcmFzIGltcG9ydCBsb3NzZXMKK2ltcG9ydCBoNXB5CisKK2Zy
b20ga2VyYXMgaW1wb3J0IGJhY2tlbmQgYXMgSworaW1wb3J0IG51bXB5IGFzIG5wCisKK2RlZiBi
aW5hcnlfY3Jvc3NlbnRyb3AyKHlfdHJ1ZSwgeV9wcmVkKToKKyAgICByZXR1cm4gSy5tZWFuKDIq
Sy5hYnMoeV90cnVlLTAuNSkgKiBLLmJpbmFyeV9jcm9zc2VudHJvcHkoeV9wcmVkLCB5X3RydWUp
LCBheGlzPS0xKQorCitwcmludCgnQnVpbGQgbW9kZWwuLi4nKQorI21vZGVsID0gU2VxdWVudGlh
bCgpCisjbW9kZWwuYWRkKERlbnNlKDE2LCBhY3RpdmF0aW9uPSd0YW5oJywgaW5wdXRfc2hhcGU9
KE5vbmUsIDI1KSkpCisjbW9kZWwuYWRkKEdSVSgxMiwgZHJvcG91dD0wLjAsIHJlY3VycmVudF9k
cm9wb3V0PTAuMCwgYWN0aXZhdGlvbj0ndGFuaCcsIHJlY3VycmVudF9hY3RpdmF0aW9uPSdzaWdt
b2lkJywgcmV0dXJuX3NlcXVlbmNlcz1UcnVlKSkKKyNtb2RlbC5hZGQoRGVuc2UoMiwgYWN0aXZh
dGlvbj0nc2lnbW9pZCcpKQorCittYWluX2lucHV0ID0gSW5wdXQoc2hhcGU9KE5vbmUsIDI1KSwg
bmFtZT0nbWFpbl9pbnB1dCcpCit4ID0gRGVuc2UoMTYsIGFjdGl2YXRpb249J3RhbmgnKShtYWlu
X2lucHV0KQoreCA9IEdSVSgxMiwgZHJvcG91dD0wLjEsIHJlY3VycmVudF9kcm9wb3V0PTAuMSwg
YWN0aXZhdGlvbj0ndGFuaCcsIHJlY3VycmVudF9hY3RpdmF0aW9uPSdzaWdtb2lkJywgcmV0dXJu
X3NlcXVlbmNlcz1UcnVlKSh4KQoreCA9IERlbnNlKDIsIGFjdGl2YXRpb249J3NpZ21vaWQnKSh4
KQorbW9kZWwgPSBNb2RlbChpbnB1dHM9bWFpbl9pbnB1dCwgb3V0cHV0cz14KQorCitiYXRjaF9z
aXplID0gNjQKKworcHJpbnQoJ0xvYWRpbmcgZGF0YS4uLicpCit3aXRoIGg1cHkuRmlsZSgnZmVh
dHVyZXMuaDUnLCAncicpIGFzIGhmOgorICAgIGFsbF9kYXRhID0gaGZbJ2ZlYXR1cmVzJ11bOl0K
K3ByaW50KCdkb25lLicpCisKK3dpbmRvd19zaXplID0gMTUwMAorCituYl9zZXF1ZW5jZXMgPSBs
ZW4oYWxsX2RhdGEpL3dpbmRvd19zaXplCitwcmludChuYl9zZXF1ZW5jZXMsICcgc2VxdWVuY2Vz
JykKK3hfdHJhaW4gPSBhbGxfZGF0YVs6bmJfc2VxdWVuY2VzKndpbmRvd19zaXplLCA6LTJdCit4
X3RyYWluID0gbnAucmVzaGFwZSh4X3RyYWluLCAobmJfc2VxdWVuY2VzLCB3aW5kb3dfc2l6ZSwg
MjUpKQorCit5X3RyYWluID0gbnAuY29weShhbGxfZGF0YVs6bmJfc2VxdWVuY2VzKndpbmRvd19z
aXplLCAtMjpdKQoreV90cmFpbiA9IG5wLnJlc2hhcGUoeV90cmFpbiwgKG5iX3NlcXVlbmNlcywg
d2luZG93X3NpemUsIDIpKQorCithbGxfZGF0YSA9IDA7Cit4X3RyYWluID0geF90cmFpbi5hc3R5
cGUoJ2Zsb2F0MzInKQoreV90cmFpbiA9IHlfdHJhaW4uYXN0eXBlKCdmbG9hdDMyJykKKworcHJp
bnQobGVuKHhfdHJhaW4pLCAndHJhaW4gc2VxdWVuY2VzLiB4IHNoYXBlID0nLCB4X3RyYWluLnNo
YXBlLCAneSBzaGFwZSA9ICcsIHlfdHJhaW4uc2hhcGUpCisKKyMgdHJ5IHVzaW5nIGRpZmZlcmVu
dCBvcHRpbWl6ZXJzIGFuZCBkaWZmZXJlbnQgb3B0aW1pemVyIGNvbmZpZ3MKK21vZGVsLmNvbXBp
bGUobG9zcz1iaW5hcnlfY3Jvc3NlbnRyb3AyLAorICAgICAgICAgICAgICBvcHRpbWl6ZXI9J2Fk
YW0nLAorICAgICAgICAgICAgICBtZXRyaWNzPVsnYmluYXJ5X2FjY3VyYWN5J10pCisKK3ByaW50
KCdUcmFpbi4uLicpCittb2RlbC5maXQoeF90cmFpbiwgeV90cmFpbiwKKyAgICAgICAgICBiYXRj
aF9zaXplPWJhdGNoX3NpemUsCisgICAgICAgICAgZXBvY2hzPTIwMCwKKyAgICAgICAgICB2YWxp
ZGF0aW9uX2RhdGE9KHhfdHJhaW4sIHlfdHJhaW4pKQorbW9kZWwuc2F2ZSgibmV3d2VpZ2h0cy5o
ZGY1IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9DTkcuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9DTkcuYwppbmRleCBlNmQ5Yjg2MWU5
NWU3NDNmMWQwODU3Y2U0OGFlZGYzY2ViZmJmMWU0Li4yYTkxMDA5OWVkMzZlM2FhMDJkZWI4MTRk
NGRkYmU4Mzg3N2Q5Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvQ05HLmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL0NORy5jCkBA
IC0xMTgsNiArMTE4LDEwIEBAIHZvaWQgc2lsa19DTkcoCiAgICAgICAgIC8qIFNtb290aCBnYWlu
cyAqLwogICAgICAgICBmb3IoIGkgPSAwOyBpIDwgcHNEZWMtPm5iX3N1YmZyOyBpKysgKSB7CiAg
ICAgICAgICAgICBwc0NORy0+Q05HX3NtdGhfR2Fpbl9RMTYgKz0gc2lsa19TTVVMV0IoIHBzRGVj
Q3RybC0+R2FpbnNfUTE2WyBpIF0gLSBwc0NORy0+Q05HX3NtdGhfR2Fpbl9RMTYsIENOR19HQUlO
X1NNVEhfUTE2ICk7CisgICAgICAgICAgICAvKiBJZiB0aGUgc21vb3RoZWQgZ2FpbiBpcyAzIGRC
IGdyZWF0ZXIgdGhhbiB0aGlzIHN1YmZyYW1lJ3MgZ2FpbiwgdXNlIHRoaXMgc3ViZnJhbWUncyBn
YWluIHRvIGFkYXB0IGZhc3Rlci4gKi8KKyAgICAgICAgICAgIGlmKCBzaWxrX1NNVUxXVyggcHND
TkctPkNOR19zbXRoX0dhaW5fUTE2LCBDTkdfR0FJTl9TTVRIX1RIUkVTSE9MRF9RMTYgKSA+IHBz
RGVjQ3RybC0+R2FpbnNfUTE2WyBpIF0gKSB7CisgICAgICAgICAgICAgICAgcHNDTkctPkNOR19z
bXRoX0dhaW5fUTE2ID0gcHNEZWNDdHJsLT5HYWluc19RMTZbIGkgXTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTQ2LDggKzE1MCw4IEBAIHZvaWQgc2lsa19DTkcoCiAK
ICAgICAgICAgLyogR2VuZXJhdGUgQ05HIHNpZ25hbCwgYnkgc3ludGhlc2lzIGZpbHRlcmluZyAq
LwogICAgICAgICBzaWxrX21lbWNweSggQ05HX3NpZ19RMTQsIHBzQ05HLT5DTkdfc3ludGhfc3Rh
dGUsIE1BWF9MUENfT1JERVIgKiBzaXplb2YoIG9wdXNfaW50MzIgKSApOworICAgICAgICBjZWx0
X2Fzc2VydCggcHNEZWMtPkxQQ19vcmRlciA9PSAxMCB8fCBwc0RlYy0+TFBDX29yZGVyID09IDE2
ICk7CiAgICAgICAgIGZvciggaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgICAg
IHNpbGtfYXNzZXJ0KCBwc0RlYy0+TFBDX29yZGVyID09IDEwIHx8IHBzRGVjLT5MUENfb3JkZXIg
PT0gMTYgKTsKICAgICAgICAgICAgIC8qIEF2b2lkcyBpbnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVz
ZSBzaWxrX1NNTEFXQigpIGFsd2F5cyByb3VuZHMgdG8gLWluZiAqLwogICAgICAgICAgICAgTFBD
X3ByZWRfUTEwID0gc2lsa19SU0hJRlQoIHBzRGVjLT5MUENfb3JkZXIsIDEgKTsKICAgICAgICAg
ICAgIExQQ19wcmVkX1ExMCA9IHNpbGtfU01MQVdCKCBMUENfcHJlZF9RMTAsIENOR19zaWdfUTE0
WyBNQVhfTFBDX09SREVSICsgaSAtICAxIF0sIEFfUTEyWyAwIF0gKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9MUENfYW5hbHlzaXNfZmlsdGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTFBDX2FuYWx5c2lzX2ZpbHRlci5jCmluZGV4
IDc3MTVmNzBmOGQ2NzYzNzU3YjBlZjE5NGJlNGNkMDE0ZmZkMGMyMjMuLmQzNGI1ZWI3MDlhYTcy
ZWFiMzhmZTY0YzczYjBhMTg5MjY4NjAzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9MUENfYW5hbHlzaXNf
ZmlsdGVyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL0xQQ19hbmFseXNpc19maWx0ZXIuYwpAQCAtNjQsMTIgKzY0LDEy
IEBAIHZvaWQgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKAogICAgIGNvbnN0IG9wdXNfaW50MTYg
KmluX3B0cjsKICNlbmRpZgogCi0gICAgc2lsa19hc3NlcnQoIGQgPj0gNiApOwotICAgIHNpbGtf
YXNzZXJ0KCAoZCAmIDEpID09IDAgKTsKLSAgICBzaWxrX2Fzc2VydCggZCA8PSBsZW4gKTsKKyAg
ICBjZWx0X2Fzc2VydCggZCA+PSA2ICk7CisgICAgY2VsdF9hc3NlcnQoIChkICYgMSkgPT0gMCAp
OworICAgIGNlbHRfYXNzZXJ0KCBkIDw9IGxlbiApOwogCiAjaWYgZGVmaW5lZChGSVhFRF9QT0lO
VCkgJiYgVVNFX0NFTFRfRklSCi0gICAgc2lsa19hc3NlcnQoIGQgPD0gU0lMS19NQVhfT1JERVJf
TFBDICk7CisgICAgY2VsdF9hc3NlcnQoIGQgPD0gU0lMS19NQVhfT1JERVJfTFBDICk7CiAgICAg
Zm9yICggaiA9IDA7IGogPCBkOyBqKysgKSB7CiAgICAgICAgIG51bVsgaiBdID0gLUJbIGogXTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRjJBLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRjJBLmMKaW5kZXggMTE2
YjQ2NWIxZGI4YzY3ODE3N2FkZWRiYzZkMjVmZjllZDM4NzUxMC4uZDViNzczMDYzODNlZTQyMjI2
YTMwMTgxZDQ3NTk1ZDU4N2Y2N2I5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0YyQS5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9OTFNGMkEuYwpAQCAtODYsNyArODYsNyBAQCB2b2lkIHNpbGtfTkxTRjJBKAogICAgIG9wdXNf
aW50MzIgYTMyX1FBMVsgU0lMS19NQVhfT1JERVJfTFBDIF07CiAKICAgICBzaWxrX2Fzc2VydCgg
TFNGX0NPU19UQUJfU1pfRklYID09IDEyOCApOwotICAgIHNpbGtfYXNzZXJ0KCBkPT0xMCB8fCBk
PT0xNiApOworICAgIGNlbHRfYXNzZXJ0KCBkPT0xMCB8fCBkPT0xNiApOwogCiAgICAgLyogY29u
dmVydCBMU0ZzIHRvIDIqY29zKExTRiksIHVzaW5nIHBpZWNld2lzZSBsaW5lYXIgY3VydmUgZnJv
bSB0YWJsZSAqLwogICAgIG9yZGVyaW5nID0gZCA9PSAxNiA/IG9yZGVyaW5nMTYgOiBvcmRlcmlu
ZzEwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0ZfVlEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNGX1ZRLmMKaW5kZXggNDUy
ZjNkY2I3ZGRkOGE3ODhhMDBmM2MyN2MxMzllOTVlYTIwYmJmYS4uYjgzMTgyYTc5Y2MwZTExNmM0
NTZiYWFkMGU3YWU5M2JjMDE3ZTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0ZfVlEuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvTkxTRl9WUS5jCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgc2lsa19OTFNGX1ZRKAogICAgIGNv
bnN0IG9wdXNfaW50MTYgKndfUTlfcHRyOwogICAgIGNvbnN0IG9wdXNfdWludDggKmNiX1E4X3B0
cjsKIAotICAgIHNpbGtfYXNzZXJ0KCAoIExQQ19vcmRlciAmIDEgKSA9PSAwICk7CisgICAgY2Vs
dF9hc3NlcnQoICggTFBDX29yZGVyICYgMSApID09IDAgKTsKIAogICAgIC8qIExvb3Agb3ZlciBj
b2RlYm9vayAqLwogICAgIGNiX1E4X3B0ciA9IHBDQl9RODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNG
X1ZRX3dlaWdodHNfbGFyb2lhLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9WUV93ZWlnaHRzX2xhcm9pYS5jCmluZGV4
IDA0ODk0YzU5YWI3ZWJkNDRmZGU1NmY3YTQwMjljMTVjZjExNWY2NWIuLjk4NzNiY2RlMTA4NzM2
Zjg3Yjg4ZWFlY2I4YjE3YTUwYjIxMzRkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNGX1ZRX3dlaWdo
dHNfbGFyb2lhLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05MU0ZfVlFfd2VpZ2h0c19sYXJvaWEuYwpAQCAtNDgsOCAr
NDgsOCBAQCB2b2lkIHNpbGtfTkxTRl9WUV93ZWlnaHRzX2xhcm9pYSgKICAgICBvcHVzX2ludCAg
IGs7CiAgICAgb3B1c19pbnQzMiB0bXAxX2ludCwgdG1wMl9pbnQ7CiAKLSAgICBzaWxrX2Fzc2Vy
dCggRCA+IDAgKTsKLSAgICBzaWxrX2Fzc2VydCggKCBEICYgMSApID09IDAgKTsKKyAgICBjZWx0
X2Fzc2VydCggRCA+IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggKCBEICYgMSApID09IDAgKTsKIAog
ICAgIC8qIEZpcnN0IHZhbHVlICovCiAgICAgdG1wMV9pbnQgPSBzaWxrX21heF9pbnQoIHBOTFNG
X1ExNVsgMCBdLCAxICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTkxTRl9lbmNvZGUuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNG
X2VuY29kZS5jCmluZGV4IDI2OGI5YTE5NWI1MDg1NjUzNjc4MTJiYTI3NDdhN2JhNmExZjRhYTAu
LjAxYWM3ZGI3OGMwMWI4OTBlZjExMGNjMDg0OTA3ZDhhOGU5NTYzOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9OTFNGX2VuY29kZS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OTFNGX2VuY29kZS5jCkBAIC02MCw3ICs2MCw3IEBA
IG9wdXNfaW50MzIgc2lsa19OTFNGX2VuY29kZSggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBPICAgIFJldHVybnMKICAgICBjb25zdCBvcHVzX2ludDE2ICpwQ0JfV2dodF9R
OTsKICAgICBTQVZFX1NUQUNLOwogCi0gICAgc2lsa19hc3NlcnQoIHNpZ25hbFR5cGUgPj0gMCAm
JiBzaWduYWxUeXBlIDw9IDIgKTsKKyAgICBjZWx0X2Fzc2VydCggc2lnbmFsVHlwZSA+PSAwICYm
IHNpZ25hbFR5cGUgPD0gMiApOwogICAgIHNpbGtfYXNzZXJ0KCBOTFNGX211X1EyMCA8PSAzMjc2
NyAmJiBOTFNGX211X1EyMCA+PSAwICk7CiAKICAgICAvKiBOTFNGIHN0YWJpbGl6YXRpb24gKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9OU1EuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OU1EuYwppbmRleCA2MTdhMTlmZWFkZWY4ZDU1
N2IwODZjMzQ1NThkMzE3NTAyNzZhMWM1Li4xZDY0ZDhlMjU3Yjg1ZGExYTczODU3N2NiNTcxM2U3
ZTA0ZTNlMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTlNRLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL05TUS5jCkBAIC0xNDMs
NyArMTQzLDcgQEAgdm9pZCBzaWxrX05TUV9jCiAgICAgICAgICAgICBpZiggKCBrICYgKCAzIC0g
c2lsa19MU0hJRlQoIExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcsIDEgKSApICkgPT0gMCApIHsKICAg
ICAgICAgICAgICAgICAvKiBSZXdoaXRlbiB3aXRoIG5ldyBBIGNvZWZzICovCiAgICAgICAgICAg
ICAgICAgc3RhcnRfaWR4ID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIGxhZyAtIHBzRW5jQy0+
cHJlZGljdExQQ09yZGVyIC0gTFRQX09SREVSIC8gMjsKLSAgICAgICAgICAgICAgICBzaWxrX2Fz
c2VydCggc3RhcnRfaWR4ID4gMCApOworICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBzdGFy
dF9pZHggPiAwICk7CiAKICAgICAgICAgICAgICAgICBzaWxrX0xQQ19hbmFseXNpc19maWx0ZXIo
ICZzTFRQWyBzdGFydF9pZHggXSwgJk5TUS0+eHFbIHN0YXJ0X2lkeCArIGsgKiBwc0VuY0MtPnN1
YmZyX2xlbmd0aCBdLAogICAgICAgICAgICAgICAgICAgICBBX1ExMiwgcHNFbmNDLT5sdHBfbWVt
X2xlbmd0aCAtIHN0YXJ0X2lkeCwgcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIsIHBzRW5jQy0+YXJj
aCApOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXIo
CiAgICAgICAgIH0KIAogICAgICAgICAvKiBOb2lzZSBzaGFwZSBmZWVkYmFjayAqLwotICAgICAg
ICBzaWxrX2Fzc2VydCggKCBzaGFwaW5nTFBDT3JkZXIgJiAxICkgPT0gMCApOyAgIC8qIGNoZWNr
IHRoYXQgb3JkZXIgaXMgZXZlbiAqLworICAgICAgICBjZWx0X2Fzc2VydCggKCBzaGFwaW5nTFBD
T3JkZXIgJiAxICkgPT0gMCApOyAgIC8qIGNoZWNrIHRoYXQgb3JkZXIgaXMgZXZlbiAqLwogICAg
ICAgICBuX0FSX1ExMiA9IHNpbGtfTlNRX25vaXNlX3NoYXBlX2ZlZWRiYWNrX2xvb3AoJk5TUS0+
c0RpZmZfc2hwX1ExNCwgTlNRLT5zQVIyX1ExNCwgQVJfc2hwX1ExMywgc2hhcGluZ0xQQ09yZGVy
LCBhcmNoKTsKIAogICAgICAgICBuX0FSX1ExMiA9IHNpbGtfU01MQVdCKCBuX0FSX1ExMiwgTlNR
LT5zTEZfQVJfc2hwX1ExNCwgVGlsdF9RMTQgKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIHNp
bGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyKAogICAgICAgICBuX0xGX1ExMiA9IHNpbGtfU01VTFdC
KCBOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gMSBdLCBMRl9zaHBf
UTE0ICk7CiAgICAgICAgIG5fTEZfUTEyID0gc2lsa19TTUxBV1QoIG5fTEZfUTEyLCBOU1EtPnNM
Rl9BUl9zaHBfUTE0LCBMRl9zaHBfUTE0ICk7CiAKLSAgICAgICAgc2lsa19hc3NlcnQoIGxhZyA+
IDAgfHwgc2lnbmFsVHlwZSAhPSBUWVBFX1ZPSUNFRCApOworICAgICAgICBjZWx0X2Fzc2VydCgg
bGFnID4gMCB8fCBzaWduYWxUeXBlICE9IFRZUEVfVk9JQ0VEICk7CiAKICAgICAgICAgLyogQ29t
YmluZSBwcmVkaWN0aW9uIGFuZCBub2lzZSBzaGFwaW5nIHNpZ25hbHMgKi8KICAgICAgICAgdG1w
MSA9IHNpbGtfU1VCMzIoIHNpbGtfTFNISUZUMzIoIExQQ19wcmVkX1ExMCwgMiApLCBuX0FSX1Ex
MiApOyAgICAgICAgLyogUTEyICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvTlNRX2RlbF9kZWMuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9OU1FfZGVsX2RlYy5jCmluZGV4IDU5OWUyNWYxYzhiYmYzY2JhOTg4ZjY2MGE2MTA2NGE4NjY1
ZTZiNjcuLmJhZjE3ZjQyYzU1NWFjZmNlMTNjZGM1ZTgzOWQ1YjZkYjEzZWExODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9OU1FfZGVsX2RlYy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9OU1FfZGVsX2RlYy5jCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBzaWxrX05TUV9kZWxfZGVjX2MoCiAKICAgICAgICAgICAgICAgICAvKiBS
ZXdoaXRlbiB3aXRoIG5ldyBBIGNvZWZzICovCiAgICAgICAgICAgICAgICAgc3RhcnRfaWR4ID0g
cHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIGxhZyAtIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyIC0g
TFRQX09SREVSIC8gMjsKLSAgICAgICAgICAgICAgICBzaWxrX2Fzc2VydCggc3RhcnRfaWR4ID4g
MCApOworICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBzdGFydF9pZHggPiAwICk7CiAKICAg
ICAgICAgICAgICAgICBzaWxrX0xQQ19hbmFseXNpc19maWx0ZXIoICZzTFRQWyBzdGFydF9pZHgg
XSwgJk5TUS0+eHFbIHN0YXJ0X2lkeCArIGsgKiBwc0VuY0MtPnN1YmZyX2xlbmd0aCBdLAogICAg
ICAgICAgICAgICAgICAgICBBX1ExMiwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIHN0YXJ0X2lk
eCwgcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIsIHBzRW5jQy0+YXJjaCApOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVy
X2RlbF9kZWMoCiAgICAgTlNRX3NhbXBsZV9zdHJ1Y3QgICpwc1NTOwogICAgIFNBVkVfU1RBQ0s7
CiAKLSAgICBzaWxrX2Fzc2VydCggblN0YXRlc0RlbGF5ZWREZWNpc2lvbiA+IDAgKTsKKyAgICBj
ZWx0X2Fzc2VydCggblN0YXRlc0RlbGF5ZWREZWNpc2lvbiA+IDAgKTsKICAgICBBTExPQyggcHNT
YW1wbGVTdGF0ZSwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbiwgTlNRX3NhbXBsZV9wYWlyICk7CiAK
ICAgICBzaHBfbGFnX3B0ciAgPSAmTlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVm
X2lkeCAtIGxhZyArIEhBUk1fU0hBUEVfRklSX1RBUFMgLyAyIF07CkBAIC0zOTUsNyArMzk1LDcg
QEAgc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfZGVs
X2RlYygKICAgICAgICAgaWYoIGxhZyA+IDAgKSB7CiAgICAgICAgICAgICAvKiBTeW1tZXRyaWMs
IHBhY2tlZCBGSVIgY29lZmZpY2llbnRzICovCiAgICAgICAgICAgICBuX0xUUF9RMTQgPSBzaWxr
X1NNVUxXQiggc2lsa19BRERfU0FUMzIoIHNocF9sYWdfcHRyWyAwIF0sIHNocF9sYWdfcHRyWyAt
MiBdICksIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgKTsKLSAgICAgICAgICAgIG5fTFRQX1ExNCA9
IHNpbGtfU01MQVdUKCBuX0xUUF9RMTQsIHNocF9sYWdfcHRyWyAtMSBdLCAgICAgICAgICAgICAg
ICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICk7CisgICAgICAgICAgICBuX0xUUF9RMTQg
PSBzaWxrX1NNTEFXVCggbl9MVFBfUTE0LCBzaHBfbGFnX3B0clsgLTEgXSwgSGFybVNoYXBlRklS
UGFja2VkX1ExNCApOwogICAgICAgICAgICAgbl9MVFBfUTE0ID0gc2lsa19TVUJfTFNISUZUMzIo
IExUUF9wcmVkX1ExNCwgbl9MVFBfUTE0LCAyICk7ICAgICAgICAgICAgLyogUTEyIC0+IFExNCAq
LwogICAgICAgICAgICAgc2hwX2xhZ19wdHIrKzsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQxOSw3
ICs0MTksNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25vaXNlX3NoYXBlX3F1YW50
aXplcl9kZWxfZGVjKAogICAgICAgICAgICAgTFBDX3ByZWRfUTE0ID0gc2lsa19MU0hJRlQoIExQ
Q19wcmVkX1ExNCwgNCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMCAtPiBR
MTQgKi8KIAogICAgICAgICAgICAgLyogTm9pc2Ugc2hhcGUgZmVlZGJhY2sgKi8KLSAgICAgICAg
ICAgIHNpbGtfYXNzZXJ0KCAoIHNoYXBpbmdMUENPcmRlciAmIDEgKSA9PSAwICk7ICAgLyogY2hl
Y2sgdGhhdCBvcmRlciBpcyBldmVuICovCisgICAgICAgICAgICBjZWx0X2Fzc2VydCggKCBzaGFw
aW5nTFBDT3JkZXIgJiAxICkgPT0gMCApOyAgIC8qIGNoZWNrIHRoYXQgb3JkZXIgaXMgZXZlbiAq
LwogICAgICAgICAgICAgLyogT3V0cHV0IG9mIGxvd3Bhc3Mgc2VjdGlvbiAqLwogICAgICAgICAg
ICAgdG1wMiA9IHNpbGtfU01MQVdCKCBwc0RELT5EaWZmX1ExNCwgcHNERC0+c0FSMl9RMTRbIDAg
XSwgd2FycGluZ19RMTYgKTsKICAgICAgICAgICAgIC8qIE91dHB1dCBvZiBhbGxwYXNzIHNlY3Rp
b24gKi8KQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25v
aXNlX3NoYXBlX3F1YW50aXplcl9kZWxfZGVjKAogICAgICAgICAgICAgLyogciA9IHhbIGkgXSAt
IExUUF9wcmVkIC0gTFBDX3ByZWQgKyBuX0FSICsgbl9UaWx0ICsgbl9MRiArIG5fTFRQICAqLwog
ICAgICAgICAgICAgdG1wMSA9IHNpbGtfQUREMzIoIG5fQVJfUTE0LCBuX0xGX1ExNCApOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExNCAqLwogICAgICAgICAgICAgdG1w
MiA9IHNpbGtfQUREMzIoIG5fTFRQX1ExNCwgTFBDX3ByZWRfUTE0ICk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFExMyAqLwotICAgICAgICAgICAgdG1wMSA9IHNpbGtfU1VCMzIo
IHRtcDIsIHRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFExMyAqLworICAgICAgICAgICAgdG1wMSA9IHNpbGtfU1VCX1NBVDMyKCB0bXAyLCB0bXAx
ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMyAqLwogICAg
ICAgICAgICAgdG1wMSA9IHNpbGtfUlNISUZUX1JPVU5EKCB0bXAxLCA0ICk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMCAqLwogCiAgICAgICAgICAgICByX1Ex
MCA9IHNpbGtfU1VCMzIoIHhfUTEwWyBpIF0sIHRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogcmVzaWR1YWwgZXJyb3IgUTEwICovCkBAIC01MzUsNyArNTM1LDcg
QEAgc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfZGVs
X2RlYygKICAgICAgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8KICAgICAgICAgICAgIHBzU1Nb
IDAgXS5EaWZmX1ExNCAgICAgPSBzaWxrX1NVQl9MU0hJRlQzMiggeHFfUTE0LCB4X1ExMFsgaSBd
LCA0ICk7CiAgICAgICAgICAgICBzTEZfQVJfc2hwX1ExNCAgICAgICAgID0gc2lsa19TVUIzMigg
cHNTU1sgMCBdLkRpZmZfUTE0LCBuX0FSX1ExNCApOwotICAgICAgICAgICAgcHNTU1sgMCBdLnNM
VFBfc2hwX1ExNCA9IHNpbGtfU1VCMzIoIHNMRl9BUl9zaHBfUTE0LCBuX0xGX1ExNCApOworICAg
ICAgICAgICAgcHNTU1sgMCBdLnNMVFBfc2hwX1ExNCA9IHNpbGtfU1VCX1NBVDMyKCBzTEZfQVJf
c2hwX1ExNCwgbl9MRl9RMTQgKTsKICAgICAgICAgICAgIHBzU1NbIDAgXS5MRl9BUl9RMTQgICAg
PSBzTEZfQVJfc2hwX1ExNDsKICAgICAgICAgICAgIHBzU1NbIDAgXS5MUENfZXhjX1ExNCAgPSBM
UENfZXhjX1ExNDsKICAgICAgICAgICAgIHBzU1NbIDAgXS54cV9RMTQgICAgICAgPSB4cV9RMTQ7
CkBAIC01NTUsNyArNTU1LDcgQEAgc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19ub2lzZV9z
aGFwZV9xdWFudGl6ZXJfZGVsX2RlYygKICAgICAgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8K
ICAgICAgICAgICAgIHBzU1NbIDEgXS5EaWZmX1ExNCAgICAgPSBzaWxrX1NVQl9MU0hJRlQzMigg
eHFfUTE0LCB4X1ExMFsgaSBdLCA0ICk7CiAgICAgICAgICAgICBzTEZfQVJfc2hwX1ExNCAgICAg
ICAgID0gc2lsa19TVUIzMiggcHNTU1sgMSBdLkRpZmZfUTE0LCBuX0FSX1ExNCApOwotICAgICAg
ICAgICAgcHNTU1sgMSBdLnNMVFBfc2hwX1ExNCA9IHNpbGtfU1VCMzIoIHNMRl9BUl9zaHBfUTE0
LCBuX0xGX1ExNCApOworICAgICAgICAgICAgcHNTU1sgMSBdLnNMVFBfc2hwX1ExNCA9IHNpbGtf
U1VCX1NBVDMyKCBzTEZfQVJfc2hwX1ExNCwgbl9MRl9RMTQgKTsKICAgICAgICAgICAgIHBzU1Nb
IDEgXS5MRl9BUl9RMTQgICAgPSBzTEZfQVJfc2hwX1ExNDsKICAgICAgICAgICAgIHBzU1NbIDEg
XS5MUENfZXhjX1ExNCAgPSBMUENfZXhjX1ExNDsKICAgICAgICAgICAgIHBzU1NbIDEgXS54cV9R
MTQgICAgICAgPSB4cV9RMTQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvUExDLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvUExDLmMKaW5k
ZXggYTNlNTVlYTc2NWVmNGY0YjA3MTkwMTU1NWQzM2QwM2MwNjMzZWFlMi4uZjg5MzkxNjUxY2Rm
OTc1OGM4ZDVlOGZlZmMwZGNjNGRhY2EwMjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL1BMQy5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9QTEMuYwpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNp
bGtfUExDX2NvbmNlYWwoCiAKICAgICAvKiBSZXdoaXRlbiBMVFAgc3RhdGUgKi8KICAgICBpZHgg
PSBwc0RlYy0+bHRwX21lbV9sZW5ndGggLSBsYWcgLSBwc0RlYy0+TFBDX29yZGVyIC0gTFRQX09S
REVSIC8gMjsKLSAgICBzaWxrX2Fzc2VydCggaWR4ID4gMCApOworICAgIGNlbHRfYXNzZXJ0KCBp
ZHggPiAwICk7CiAgICAgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKCAmc0xUUFsgaWR4IF0sICZw
c0RlYy0+b3V0QnVmWyBpZHggXSwgQV9RMTIsIHBzRGVjLT5sdHBfbWVtX2xlbmd0aCAtIGlkeCwg
cHNEZWMtPkxQQ19vcmRlciwgYXJjaCApOwogICAgIC8qIFNjYWxlIExUUCBzdGF0ZSAqLwogICAg
IGludl9nYWluX1EzMCA9IHNpbGtfSU5WRVJTRTMyX3ZhclEoIHBzUExDLT5wcmV2R2Fpbl9RMTZb
IDEgXSwgNDYgKTsKQEAgLTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBz
aWxrX1BMQ19jb25jZWFsKAogICAgIC8qIENvcHkgTFBDIHN0YXRlICovCiAgICAgc2lsa19tZW1j
cHkoIHNMUENfUTE0X3B0ciwgcHNEZWMtPnNMUENfUTE0X2J1ZiwgTUFYX0xQQ19PUkRFUiAqIHNp
emVvZiggb3B1c19pbnQzMiApICk7CiAKLSAgICBzaWxrX2Fzc2VydCggcHNEZWMtPkxQQ19vcmRl
ciA+PSAxMCApOyAvKiBjaGVjayB0aGF0IHVucm9sbGluZyB3b3JrcyAqLworICAgIGNlbHRfYXNz
ZXJ0KCBwc0RlYy0+TFBDX29yZGVyID49IDEwICk7IC8qIGNoZWNrIHRoYXQgdW5yb2xsaW5nIHdv
cmtzICovCiAgICAgZm9yKCBpID0gMDsgaSA8IHBzRGVjLT5mcmFtZV9sZW5ndGg7IGkrKyApIHsK
ICAgICAgICAgLyogcGFydGx5IHVucm9sbGVkICovCiAgICAgICAgIC8qIEF2b2lkcyBpbnRyb2R1
Y2luZyBhIGJpYXMgYmVjYXVzZSBzaWxrX1NNTEFXQigpIGFsd2F5cyByb3VuZHMgdG8gLWluZiAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL1ZBRC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL1ZBRC5jCmluZGV4IDBhNzgyYWYyZjEzMjM3
NDRjYTJkNTA5NTk1MDE1YmI0YmU2YTk4NGMuLmQwY2RhNTIxNjJjMWM0YzdiYjUyN2YxMjViOTUz
YzgzNmJmMzY2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9WQUQuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvVkFELmMKQEAgLTEw
MSw5ICsxMDEsOSBAQCBvcHVzX2ludCBzaWxrX1ZBRF9HZXRTQV9ROF9jKCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm4gdgogCiAgICAgLyogU2FmZXR5IGNo
ZWNrcyAqLwogICAgIHNpbGtfYXNzZXJ0KCBWQURfTl9CQU5EUyA9PSA0ICk7Ci0gICAgc2lsa19h
c3NlcnQoIE1BWF9GUkFNRV9MRU5HVEggPj0gcHNFbmNDLT5mcmFtZV9sZW5ndGggKTsKLSAgICBz
aWxrX2Fzc2VydCggcHNFbmNDLT5mcmFtZV9sZW5ndGggPD0gNTEyICk7Ci0gICAgc2lsa19hc3Nl
cnQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoID09IDggKiBzaWxrX1JTSElGVCggcHNFbmNDLT5mcmFt
ZV9sZW5ndGgsIDMgKSApOworICAgIGNlbHRfYXNzZXJ0KCBNQVhfRlJBTUVfTEVOR1RIID49IHBz
RW5jQy0+ZnJhbWVfbGVuZ3RoICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+ZnJhbWVfbGVu
Z3RoIDw9IDUxMiApOworICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSA4
ICogc2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCAzICkgKTsKIAogICAgIC8qKioq
KioqKioqKioqKioqKioqKioqKi8KICAgICAvKiBGaWx0ZXIgYW5kIERlY2ltYXRlICovCkBAIC0y
NTIsMTUgKzI1MiwxNCBAQCBvcHVzX2ludCBzaWxrX1ZBRF9HZXRTQV9ROF9jKCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm4gdgogICAgICAgICBzcGVlY2hf
bnJnICs9ICggYiArIDEgKSAqIHNpbGtfUlNISUZUKCBYbnJnWyBiIF0gLSBwc1NpbGtfVkFELT5O
TFsgYiBdLCA0ICk7CiAgICAgfQogCisgICAgaWYoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoID09IDIw
ICogcHNFbmNDLT5mc19rSHogKSB7CisgICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX1JTSElGVDMy
KCBzcGVlY2hfbnJnLCAxICk7CisgICAgfQogICAgIC8qIFBvd2VyIHNjYWxpbmcgKi8KICAgICBp
Ziggc3BlZWNoX25yZyA8PSAwICkgewogICAgICAgICBTQV9RMTUgPSBzaWxrX1JTSElGVCggU0Ff
UTE1LCAxICk7Ci0gICAgfSBlbHNlIGlmKCBzcGVlY2hfbnJnIDwgMzI3NjggKSB7Ci0gICAgICAg
IGlmKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSAxMCAqIHBzRW5jQy0+ZnNfa0h6ICkgewotICAg
ICAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtfTFNISUZUX1NBVDMyKCBzcGVlY2hfbnJnLCAxNiAp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtfTFNISUZU
X1NBVDMyKCBzcGVlY2hfbnJnLCAxNSApOwotICAgICAgICB9CisgICAgfSBlbHNlIGlmKCBzcGVl
Y2hfbnJnIDwgMTYzODQgKSB7CisgICAgICAgIHNwZWVjaF9ucmcgPSBzaWxrX0xTSElGVDMyKCBz
cGVlY2hfbnJnLCAxNiApOwogCiAgICAgICAgIC8qIHNxdWFyZS1yb290ICovCiAgICAgICAgIHNw
ZWVjaF9ucmcgPSBzaWxrX1NRUlRfQVBQUk9YKCBzcGVlY2hfbnJnICk7CkBAIC0zMTMsNiArMzEy
LDggQEAgdm9pZCBzaWxrX1ZBRF9HZXROb2lzZUxldmVscygKICAgICAvKiBJbml0aWFsbHkgZmFz
dGVyIHNtb290aGluZyAqLwogICAgIGlmKCBwc1NpbGtfVkFELT5jb3VudGVyIDwgMTAwMCApIHsg
LyogMTAwMCA9IDIwIHNlYyAqLwogICAgICAgICBtaW5fY29lZiA9IHNpbGtfRElWMzJfMTYoIHNp
bGtfaW50MTZfTUFYLCBzaWxrX1JTSElGVCggcHNTaWxrX1ZBRC0+Y291bnRlciwgNCApICsgMSAp
OworICAgICAgICAvKiBJbmNyZW1lbnQgZnJhbWUgY291bnRlciAqLworICAgICAgICBwc1NpbGtf
VkFELT5jb3VudGVyKys7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbWluX2NvZWYgPSAwOwogICAg
IH0KQEAgLTM1Niw3ICszNTcsNCBAQCB2b2lkIHNpbGtfVkFEX0dldE5vaXNlTGV2ZWxzKAogICAg
ICAgICAvKiBTdG9yZSBhcyBwYXJ0IG9mIHN0YXRlICovCiAgICAgICAgIHBzU2lsa19WQUQtPk5M
WyBrIF0gPSBubDsKICAgICB9Ci0KLSAgICAvKiBJbmNyZW1lbnQgZnJhbWUgY291bnRlciAqLwot
ICAgIHBzU2lsa19WQUQtPmNvdW50ZXIrKzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9jaGVja19jb250
cm9sX2lucHV0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvY2hlY2tfY29udHJvbF9pbnB1dC5jCmluZGV4IGI1ZGU5Y2U0OGQ2
OTkzZDVlMzY4YmRkNDYzYmRkNTU5YzFkNmJkOWYuLjczOWZiMDFmMWUyOTg1MDVlNjdlZmI1YmNi
Mjc0ZWMxOWU3NzI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9jaGVja19jb250cm9sX2lucHV0LmMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL2NoZWNrX2NvbnRyb2xfaW5wdXQuYwpAQCAtMzgsNyArMzgsNyBAQCBvcHVzX2ludCBj
aGVja19jb250cm9sX2lucHV0KAogICAgIHNpbGtfRW5jQ29udHJvbFN0cnVjdCAgICAgICAgKmVu
Y0NvbnRyb2wgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgQ29udHJvbCBzdHJ1Y3R1cmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLwogKQogewotICAgIHNpbGtfYXNzZXJ0KCBlbmNDb250
cm9sICE9IE5VTEwgKTsKKyAgICBjZWx0X2Fzc2VydCggZW5jQ29udHJvbCAhPSBOVUxMICk7CiAK
ICAgICBpZiggKCAoIGVuY0NvbnRyb2wtPkFQSV9zYW1wbGVSYXRlICAgICAgICAgICAgIT0gIDgw
MDAgKSAmJgogICAgICAgICAgICggZW5jQ29udHJvbC0+QVBJX3NhbXBsZVJhdGUgICAgICAgICAg
ICAhPSAxMjAwMCApICYmCkBAIC01OSw0NiArNTksNDYgQEAgb3B1c19pbnQgY2hlY2tfY29udHJv
bF9pbnB1dCgKICAgICAgICAgICAoIGVuY0NvbnRyb2wtPm1pbkludGVybmFsU2FtcGxlUmF0ZSA+
IGVuY0NvbnRyb2wtPmRlc2lyZWRJbnRlcm5hbFNhbXBsZVJhdGUgKSB8fAogICAgICAgICAgICgg
ZW5jQ29udHJvbC0+bWF4SW50ZXJuYWxTYW1wbGVSYXRlIDwgZW5jQ29udHJvbC0+ZGVzaXJlZElu
dGVybmFsU2FtcGxlUmF0ZSApIHx8CiAgICAgICAgICAgKCBlbmNDb250cm9sLT5taW5JbnRlcm5h
bFNhbXBsZVJhdGUgPiBlbmNDb250cm9sLT5tYXhJbnRlcm5hbFNhbXBsZVJhdGUgKSApIHsKLSAg
ICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAg
ICAgcmV0dXJuIFNJTEtfRU5DX0ZTX05PVF9TVVBQT1JURUQ7CiAgICAgfQogICAgIGlmKCBlbmND
b250cm9sLT5wYXlsb2FkU2l6ZV9tcyAhPSAxMCAmJgogICAgICAgICBlbmNDb250cm9sLT5wYXls
b2FkU2l6ZV9tcyAhPSAyMCAmJgogICAgICAgICBlbmNDb250cm9sLT5wYXlsb2FkU2l6ZV9tcyAh
PSA0MCAmJgogICAgICAgICBlbmNDb250cm9sLT5wYXlsb2FkU2l6ZV9tcyAhPSA2MCApIHsKLSAg
ICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAg
ICAgcmV0dXJuIFNJTEtfRU5DX1BBQ0tFVF9TSVpFX05PVF9TVVBQT1JURUQ7CiAgICAgfQogICAg
IGlmKCBlbmNDb250cm9sLT5wYWNrZXRMb3NzUGVyY2VudGFnZSA8IDAgfHwgZW5jQ29udHJvbC0+
cGFja2V0TG9zc1BlcmNlbnRhZ2UgPiAxMDAgKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7
CisgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgIHJldHVybiBTSUxLX0VOQ19JTlZB
TElEX0xPU1NfUkFURTsKICAgICB9CiAgICAgaWYoIGVuY0NvbnRyb2wtPnVzZURUWCA8IDAgfHwg
ZW5jQ29udHJvbC0+dXNlRFRYID4gMSApIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAg
ICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgcmV0dXJuIFNJTEtfRU5DX0lOVkFMSURf
RFRYX1NFVFRJTkc7CiAgICAgfQogICAgIGlmKCBlbmNDb250cm9sLT51c2VDQlIgPCAwIHx8IGVu
Y0NvbnRyb2wtPnVzZUNCUiA+IDEgKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAg
ICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgIHJldHVybiBTSUxLX0VOQ19JTlZBTElEX0NC
Ul9TRVRUSU5HOwogICAgIH0KICAgICBpZiggZW5jQ29udHJvbC0+dXNlSW5CYW5kRkVDIDwgMCB8
fCBlbmNDb250cm9sLT51c2VJbkJhbmRGRUMgPiAxICkgewotICAgICAgICBzaWxrX2Fzc2VydCgg
MCApOworICAgICAgICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICByZXR1cm4gU0lMS19FTkNf
SU5WQUxJRF9JTkJBTkRfRkVDX1NFVFRJTkc7CiAgICAgfQogICAgIGlmKCBlbmNDb250cm9sLT5u
Q2hhbm5lbHNBUEkgPCAxIHx8IGVuY0NvbnRyb2wtPm5DaGFubmVsc0FQSSA+IEVOQ09ERVJfTlVN
X0NIQU5ORUxTICkgewotICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICBjZWx0X2Fz
c2VydCggMCApOwogICAgICAgICByZXR1cm4gU0lMS19FTkNfSU5WQUxJRF9OVU1CRVJfT0ZfQ0hB
Tk5FTFNfRVJST1I7CiAgICAgfQogICAgIGlmKCBlbmNDb250cm9sLT5uQ2hhbm5lbHNJbnRlcm5h
bCA8IDEgfHwgZW5jQ29udHJvbC0+bkNoYW5uZWxzSW50ZXJuYWwgPiBFTkNPREVSX05VTV9DSEFO
TkVMUyApIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQo
IDAgKTsKICAgICAgICAgcmV0dXJuIFNJTEtfRU5DX0lOVkFMSURfTlVNQkVSX09GX0NIQU5ORUxT
X0VSUk9SOwogICAgIH0KICAgICBpZiggZW5jQ29udHJvbC0+bkNoYW5uZWxzSW50ZXJuYWwgPiBl
bmNDb250cm9sLT5uQ2hhbm5lbHNBUEkgKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7Cisg
ICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAgICAgICAgIHJldHVybiBTSUxLX0VOQ19JTlZBTElE
X05VTUJFUl9PRl9DSEFOTkVMU19FUlJPUjsKICAgICB9CiAgICAgaWYoIGVuY0NvbnRyb2wtPmNv
bXBsZXhpdHkgPCAwIHx8IGVuY0NvbnRyb2wtPmNvbXBsZXhpdHkgPiAxMCApIHsKLSAgICAgICAg
c2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgcmV0
dXJuIFNJTEtfRU5DX0lOVkFMSURfQ09NUExFWElUWV9TRVRUSU5HOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2NvbnRyb2xfU05SLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvY29udHJvbF9TTlIuYwppbmRleCA0NjRjMWFj
ZmU4ODQ1MWFiZjZhM2VkNDVkYjI2YjI1Y2QwYzY1M2YwLi45YTZkYjI3NTQzZDc0MjIzM2I1NjVh
Njk3M2IzN2ZjYWJjMjI5Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvY29udHJvbF9TTlIuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvY29udHJvbF9TTlIuYwpAQCAtMzIsNDQgKzMyLDgyIEBAIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogI2luY2x1ZGUgIm1haW4uaCIKICNpbmNsdWRlICJ0dW5pbmdfcGFyYW1ldGVycy5o
IgogCisvKiBUaGVzZSB0YWJsZXMgaG9sZCBTTlIgdmFsdWVzIGRpdmlkZWQgYnkgMjEgKHNvIHRo
ZXkgZml0IGluIDggYml0cykKKyAgIGZvciBkaWZmZXJlbnQgdGFyZ2V0IGJpdHJhdGVzIHNwYWNl
ZCBhdCA0MDAgYnBzIGludGVydmFsLiBUaGUgZmlyc3QKKyAgIDEwIHZhbHVlcyBhcmUgb21pdHRl
ZCAoMC00IGtiL3MpIGJlY2F1c2UgdGhleSdyZSBhbGwgemVyb3MuCisgICBUaGVzZSB0YWJsZXMg
d2VyZSBvYnRhaW5lZCBieSBydW5uaW5nIGRpZmZlcmVudCBTTlJzIHRocm91Z2ggdGhlCisgICBl
bmNvZGVyIGFuZCBtZWFzdXJpbmcgdGhlIGFjdGl2ZSBiaXRyYXRlLiAqLworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgc2lsa19UYXJnZXRSYXRlX05CXzIxWzExNyAtIDEwXSA9IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxNSwgMzksIDUyLCA2
MSwgNjgsCisgICAgIDc0LCA3OSwgODQsIDg4LCA5MiwgOTUsIDk5LDEwMiwxMDUsMTA4LDExMSwx
MTQsMTE3LDExOSwxMjIsMTI0LAorICAgIDEyNiwxMjksMTMxLDEzMywxMzUsMTM3LDEzOSwxNDIs
MTQzLDE0NSwxNDcsMTQ5LDE1MSwxNTMsMTU1LDE1NywKKyAgICAxNTgsMTYwLDE2MiwxNjMsMTY1
LDE2NywxNjgsMTcwLDE3MSwxNzMsMTc0LDE3NiwxNzcsMTc5LDE4MCwxODIsCisgICAgMTgzLDE4
NSwxODYsMTg3LDE4OSwxOTAsMTkyLDE5MywxOTQsMTk2LDE5NywxOTksMjAwLDIwMSwyMDMsMjA0
LAorICAgIDIwNSwyMDcsMjA4LDIwOSwyMTEsMjEyLDIxMywyMTUsMjE2LDIxNywyMTksMjIwLDIy
MSwyMjMsMjI0LDIyNSwKKyAgICAyMjcsMjI4LDIzMCwyMzEsMjMyLDIzNCwyMzUsMjM2LDIzOCwy
MzksMjQxLDI0MiwyNDMsMjQ1LDI0NiwyNDgsCisgICAgMjQ5LDI1MCwyNTIsMjUzLDI1NQorfTsK
Kworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2lsa19UYXJnZXRSYXRlX01CXzIxWzE2NSAt
IDEwXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAgMCwgMjgsIDQzLCA1MiwgNTksCisgICAgIDY1LCA3MCwgNzQsIDc4LCA4MSwgODUsIDg3LCA5
MCwgOTMsIDk1LCA5OCwxMDAsMTAyLDEwNSwxMDcsMTA5LAorICAgIDExMSwxMTMsMTE1LDExNiwx
MTgsMTIwLDEyMiwxMjMsMTI1LDEyNywxMjgsMTMwLDEzMSwxMzMsMTM0LDEzNiwKKyAgICAxMzcs
MTM4LDE0MCwxNDEsMTQzLDE0NCwxNDUsMTQ3LDE0OCwxNDksMTUxLDE1MiwxNTMsMTU0LDE1Niwx
NTcsCisgICAgMTU4LDE1OSwxNjAsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzEs
MTcyLDE3MywxNzQsMTc1LAorICAgIDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0
LDE4NSwxODYsMTg3LDE4OCwxODgsMTg5LDE5MCwKKyAgICAxOTEsMTkyLDE5MywxOTQsMTk1LDE5
NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjAzLDIwNCwyMDUsCisgICAgMjA2LDIwNywy
MDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLAor
ICAgIDIyMSwyMjIsMjIzLDIyNCwyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwy
MzMsMjM0LDIzNSwKKyAgICAyMzYsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQs
MjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsCisgICAgMjUxLDI1MiwyNTMsMjU0LDI1NQorfTsKKwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2lsa19UYXJnZXRSYXRlX1dCXzIxWzIwMSAtIDEw
XSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAg
MCwgIDAsICA4LCAyOSwgNDEsCisgICAgIDQ5LCA1NiwgNjIsIDY2LCA3MCwgNzQsIDc3LCA4MCwg
ODMsIDg2LCA4OCwgOTEsIDkzLCA5NSwgOTcsIDk5LAorICAgIDEwMSwxMDMsMTA1LDEwNywxMDgs
MTEwLDExMiwxMTMsMTE1LDExNiwxMTgsMTE5LDEyMSwxMjIsMTIzLDEyNSwKKyAgICAxMjYsMTI3
LDEyOSwxMzAsMTMxLDEzMiwxMzQsMTM1LDEzNiwxMzcsMTM4LDE0MCwxNDEsMTQyLDE0MywxNDQs
CisgICAgMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NiwxNTcsMTU4
LDE1OSwxNTksMTYwLAorICAgIDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3
MCwxNzEsMTcxLDE3MiwxNzMsMTc0LDE3NSwKKyAgICAxNzYsMTc3LDE3NywxNzgsMTc5LDE4MCwx
ODEsMTgxLDE4MiwxODMsMTg0LDE4NSwxODUsMTg2LDE4NywxODgsCisgICAgMTg5LDE4OSwxOTAs
MTkxLDE5MiwxOTIsMTkzLDE5NCwxOTUsMTk1LDE5NiwxOTcsMTk4LDE5OCwxOTksMjAwLAorICAg
IDIwMCwyMDEsMjAyLDIwMywyMDMsMjA0LDIwNSwyMDYsMjA2LDIwNywyMDgsMjA5LDIwOSwyMTAs
MjExLDIxMSwKKyAgICAyMTIsMjEzLDIxNCwyMTQsMjE1LDIxNiwyMTYsMjE3LDIxOCwyMTksMjE5
LDIyMCwyMjEsMjIxLDIyMiwyMjMsCisgICAgMjI0LDIyNCwyMjUsMjI2LDIyNiwyMjcsMjI4LDIy
OSwyMjksMjMwLDIzMSwyMzIsMjMyLDIzMywyMzQsMjM0LAorICAgIDIzNSwyMzYsMjM3LDIzNywy
MzgsMjM5LDI0MCwyNDAsMjQxLDI0MiwyNDMsMjQzLDI0NCwyNDUsMjQ2LDI0NiwKKyAgICAyNDcs
MjQ4LDI0OSwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NQorfTsKKwogLyogQ29udHJvbCBTTlIgb2Yg
cmVkaWR1YWwgcXVhbnRpemVyICovCiBvcHVzX2ludCBzaWxrX2NvbnRyb2xfU05SKAogICAgIHNp
bGtfZW5jb2Rlcl9zdGF0ZSAgICAgICAgICAqcHNFbmNDLCAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEkvTyAgUG9pbnRlciB0byBTaWxrIGVuY29kZXIgc3RhdGUgICAgICAgICAgICAgICAqLwog
ICAgIG9wdXNfaW50MzIgICAgICAgICAgICAgICAgICBUYXJnZXRSYXRlX2JwcyAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgVGFyZ2V0IG1heCBiaXRyYXRlIChicHMpICAgICAgICAgICAgICAgICAg
ICAqLwogKQogewotICAgIG9wdXNfaW50IGssIHJldCA9IFNJTEtfTk9fRVJST1I7Ci0gICAgb3B1
c19pbnQzMiBmcmFjX1E2OwotICAgIGNvbnN0IG9wdXNfaW50MzIgKnJhdGVUYWJsZTsKLQotICAg
IC8qIFNldCBiaXRyYXRlL2NvZGluZyBxdWFsaXR5ICovCi0gICAgVGFyZ2V0UmF0ZV9icHMgPSBz
aWxrX0xJTUlUKCBUYXJnZXRSYXRlX2JwcywgTUlOX1RBUkdFVF9SQVRFX0JQUywgTUFYX1RBUkdF
VF9SQVRFX0JQUyApOwotICAgIGlmKCBUYXJnZXRSYXRlX2JwcyAhPSBwc0VuY0MtPlRhcmdldFJh
dGVfYnBzICkgewotICAgICAgICBwc0VuY0MtPlRhcmdldFJhdGVfYnBzID0gVGFyZ2V0UmF0ZV9i
cHM7Ci0KLSAgICAgICAgLyogSWYgbmV3IFRhcmdldFJhdGVfYnBzLCB0cmFuc2xhdGUgdG8gU05S
X2RCIHZhbHVlICovCi0gICAgICAgIGlmKCBwc0VuY0MtPmZzX2tIeiA9PSA4ICkgewotICAgICAg
ICAgICAgcmF0ZVRhYmxlID0gc2lsa19UYXJnZXRSYXRlX3RhYmxlX05COwotICAgICAgICB9IGVs
c2UgaWYoIHBzRW5jQy0+ZnNfa0h6ID09IDEyICkgewotICAgICAgICAgICAgcmF0ZVRhYmxlID0g
c2lsa19UYXJnZXRSYXRlX3RhYmxlX01COwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cmF0ZVRhYmxlID0gc2lsa19UYXJnZXRSYXRlX3RhYmxlX1dCOwotICAgICAgICB9CisgICAgaW50
IGlkOworICAgIGludCBib3VuZDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzbnJfdGFibGU7
CiAKLSAgICAgICAgLyogUmVkdWNlIGJpdHJhdGUgZm9yIDEwIG1zIG1vZGVzIGluIHRoZXNlIGNh
bGN1bGF0aW9ucyAqLwotICAgICAgICBpZiggcHNFbmNDLT5uYl9zdWJmciA9PSAyICkgewotICAg
ICAgICAgICAgVGFyZ2V0UmF0ZV9icHMgLT0gUkVEVUNFX0JJVFJBVEVfMTBfTVNfQlBTOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLyogRmluZCBiaXRyYXRlIGludGVydmFsIGluIHRhYmxlIGFuZCBp
bnRlcnBvbGF0ZSAqLwotICAgICAgICBmb3IoIGsgPSAxOyBrIDwgVEFSR0VUX1JBVEVfVEFCX1Na
OyBrKysgKSB7Ci0gICAgICAgICAgICBpZiggVGFyZ2V0UmF0ZV9icHMgPD0gcmF0ZVRhYmxlWyBr
IF0gKSB7Ci0gICAgICAgICAgICAgICAgZnJhY19RNiA9IHNpbGtfRElWMzIoIHNpbGtfTFNISUZU
KCBUYXJnZXRSYXRlX2JwcyAtIHJhdGVUYWJsZVsgayAtIDEgXSwgNiApLCByYXRlVGFibGVbIGsg
XSAtIHJhdGVUYWJsZVsgayAtIDEgXSApOwotICAgICAgICAgICAgICAgIHBzRW5jQy0+U05SX2RC
X1E3ID0gc2lsa19MU0hJRlQoIHNpbGtfU05SX3RhYmxlX1ExWyBrIC0gMSBdLCA2ICkgKyBzaWxr
X01VTCggZnJhY19RNiwgc2lsa19TTlJfdGFibGVfUTFbIGsgXSAtIHNpbGtfU05SX3RhYmxlX1Ex
WyBrIC0gMSBdICk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KKyAgICBwc0VuY0MtPlRhcmdldFJhdGVfYnBzID0gVGFyZ2V0UmF0ZV9icHM7CisgICAg
aWYoIHBzRW5jQy0+bmJfc3ViZnIgPT0gMiApIHsKKyAgICAgICAgVGFyZ2V0UmF0ZV9icHMgLT0g
MjAwMCArIHBzRW5jQy0+ZnNfa0h6LzE2OwogICAgIH0KLQotICAgIHJldHVybiByZXQ7CisgICAg
aWYoIHBzRW5jQy0+ZnNfa0h6ID09IDggKSB7CisgICAgICAgIGJvdW5kID0gc2l6ZW9mKHNpbGtf
VGFyZ2V0UmF0ZV9OQl8yMSk7CisgICAgICAgIHNucl90YWJsZSA9IHNpbGtfVGFyZ2V0UmF0ZV9O
Ql8yMTsKKyAgICB9IGVsc2UgaWYoIHBzRW5jQy0+ZnNfa0h6ID09IDEyICkgeworICAgICAgICBi
b3VuZCA9IHNpemVvZihzaWxrX1RhcmdldFJhdGVfTUJfMjEpOworICAgICAgICBzbnJfdGFibGUg
PSBzaWxrX1RhcmdldFJhdGVfTUJfMjE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm91bmQgPSBz
aXplb2Yoc2lsa19UYXJnZXRSYXRlX1dCXzIxKTsKKyAgICAgICAgc25yX3RhYmxlID0gc2lsa19U
YXJnZXRSYXRlX1dCXzIxOworICAgIH0KKyAgICBpZCA9IChUYXJnZXRSYXRlX2JwcysyMDApLzQw
MDsKKyAgICBpZCA9IHNpbGtfbWluKGlkIC0gMTAsIGJvdW5kLTEpOworICAgIGlmKCBpZCA8PSAw
ICkgeworICAgICAgICBwc0VuY0MtPlNOUl9kQl9RNyA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHNFbmNDLT5TTlJfZEJfUTcgPSBzbnJfdGFibGVbaWRdKjIxOworICAgIH0KKyAgICByZXR1
cm4gU0lMS19OT19FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9jb250cm9sX2F1ZGlvX2JhbmR3
aWR0aC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zaWxrL2NvbnRyb2xfYXVkaW9fYmFuZHdpZHRoLmMKaW5kZXggNGY5YmM1Y2JkYWE5
MjMwNTZlN2FmMGVkNGMyZjdhOTBlMzc2NTdjNi4uZjZkMjJkODM5NTMwZDA4ZDgyMDNjYmRlNDEy
MmQxMDkxNzEzNDdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2NvbnRyb2xfYXVkaW9fYmFuZHdpZHRoLmMK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2NvbnRyb2xfYXVkaW9fYmFuZHdpZHRoLmMKQEAgLTM5LDkgKzM5LDE1IEBAIG9w
dXNfaW50IHNpbGtfY29udHJvbF9hdWRpb19iYW5kd2lkdGgoCiApCiB7CiAgICAgb3B1c19pbnQg
ICBmc19rSHo7CisgICAgb3B1c19pbnQgICBvcmlnX2tIejsKICAgICBvcHVzX2ludDMyIGZzX0h6
OwogCi0gICAgZnNfa0h6ID0gcHNFbmNDLT5mc19rSHo7CisgICAgb3JpZ19rSHogPSBwc0VuY0Mt
PmZzX2tIejsKKyAgICAvKiBIYW5kbGUgYSBiYW5kd2lkdGgtc3dpdGNoaW5nIHJlc2V0IHdoZXJl
IHdlIG5lZWQgdG8gYmUgYXdhcmUgd2hhdCB0aGUgbGFzdCBzYW1wbGluZyByYXRlIHdhcy4gKi8K
KyAgICBpZiggb3JpZ19rSHogPT0gMCApIHsKKyAgICAgICAgb3JpZ19rSHogPSBwc0VuY0MtPnNM
UC5zYXZlZF9mc19rSHo7CisgICAgfQorICAgIGZzX2tIeiA9IG9yaWdfa0h6OwogICAgIGZzX0h6
ID0gc2lsa19TTVVMQkIoIGZzX2tIeiwgMTAwMCApOwogICAgIGlmKCBmc19IeiA9PSAwICkgewog
ICAgICAgICAvKiBFbmNvZGVyIGhhcyBqdXN0IGJlZW4gaW5pdGlhbGl6ZWQgKi8KQEAgLTYxLDcg
KzY3LDcgQEAgb3B1c19pbnQgc2lsa19jb250cm9sX2F1ZGlvX2JhbmR3aWR0aCgKICAgICAgICAg
fQogICAgICAgICBpZiggcHNFbmNDLT5hbGxvd19iYW5kd2lkdGhfc3dpdGNoIHx8IGVuY0NvbnRy
b2wtPm9wdXNDYW5Td2l0Y2ggKSB7CiAgICAgICAgICAgICAvKiBDaGVjayBpZiB3ZSBzaG91bGQg
c3dpdGNoIGRvd24gKi8KLSAgICAgICAgICAgIGlmKCBzaWxrX1NNVUxCQiggcHNFbmNDLT5mc19r
SHosIDEwMDAgKSA+IHBzRW5jQy0+ZGVzaXJlZEludGVybmFsX2ZzX0h6ICkKKyAgICAgICAgICAg
IGlmKCBzaWxrX1NNVUxCQiggb3JpZ19rSHosIDEwMDAgKSA+IHBzRW5jQy0+ZGVzaXJlZEludGVy
bmFsX2ZzX0h6ICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBTd2l0Y2ggZG93
biAqLwogICAgICAgICAgICAgICAgIGlmKCBwc0VuY0MtPnNMUC5tb2RlID09IDAgKSB7CkBAIC03
Niw3ICs4Miw3IEBAIG9wdXNfaW50IHNpbGtfY29udHJvbF9hdWRpb19iYW5kd2lkdGgoCiAgICAg
ICAgICAgICAgICAgICAgIHBzRW5jQy0+c0xQLm1vZGUgPSAwOwogCiAgICAgICAgICAgICAgICAg
ICAgIC8qIFN3aXRjaCB0byBhIGxvd2VyIHNhbXBsZSBmcmVxdWVuY3kgKi8KLSAgICAgICAgICAg
ICAgICAgICAgZnNfa0h6ID0gcHNFbmNDLT5mc19rSHogPT0gMTYgPyAxMiA6IDg7CisgICAgICAg
ICAgICAgICAgICAgIGZzX2tIeiA9IG9yaWdfa0h6ID09IDE2ID8gMTIgOiA4OwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIHBzRW5jQy0+c0xQLnRyYW5z
aXRpb25fZnJhbWVfbm8gPD0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZW5jQ29udHJv
bC0+c3dpdGNoUmVhZHkgPSAxOwpAQCAtOTAsMTIgKzk2LDEyIEBAIG9wdXNfaW50IHNpbGtfY29u
dHJvbF9hdWRpb19iYW5kd2lkdGgoCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAvKiBDaGVjayBpZiB3ZSBzaG91bGQgc3dpdGNoIHVwICovCi0gICAgICAgICAg
ICBpZiggc2lsa19TTVVMQkIoIHBzRW5jQy0+ZnNfa0h6LCAxMDAwICkgPCBwc0VuY0MtPmRlc2ly
ZWRJbnRlcm5hbF9mc19IeiApCisgICAgICAgICAgICBpZiggc2lsa19TTVVMQkIoIG9yaWdfa0h6
LCAxMDAwICkgPCBwc0VuY0MtPmRlc2lyZWRJbnRlcm5hbF9mc19IeiApCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgLyogU3dpdGNoIHVwICovCiAgICAgICAgICAgICAgICAgaWYoIGVu
Y0NvbnRyb2wtPm9wdXNDYW5Td2l0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIFN3aXRj
aCB0byBhIGhpZ2hlciBzYW1wbGUgZnJlcXVlbmN5ICovCi0gICAgICAgICAgICAgICAgICAgIGZz
X2tIeiA9IHBzRW5jQy0+ZnNfa0h6ID09IDggPyAxMiA6IDE2OworICAgICAgICAgICAgICAgICAg
ICBmc19rSHogPSBvcmlnX2tIeiA9PSA4ID8gMTIgOiAxNjsKIAogICAgICAgICAgICAgICAgICAg
ICAvKiBOZXcgdHJhbnNpdGlvbiAqLwogICAgICAgICAgICAgICAgICAgICBwc0VuY0MtPnNMUC50
cmFuc2l0aW9uX2ZyYW1lX25vID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9jb250cm9sX2NvZGVjLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvY29udHJvbF9jb2RlYy5jCmluZGV4IDkzNTBmZDRiMmI0Y2M5YjU4ODkxZDgzYjdiN2I3
NzRmMjc0YjE4MWYuLjUyYWE4ZmRlZDM1NTZhOTY3YjIxOWI3YjcwMTM2MWVhY2RhYWYwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9jb250cm9sX2NvZGVjLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2NvbnRyb2xfY29kZWMuYwpA
QCAtMjM4LDggKzIzOCw4IEBAIHN0YXRpYyBvcHVzX2ludCBzaWxrX3NldHVwX2ZzKAogICAgIH0K
IAogICAgIC8qIFNldCBpbnRlcm5hbCBzYW1wbGluZyBmcmVxdWVuY3kgKi8KLSAgICBzaWxrX2Fz
c2VydCggZnNfa0h6ID09IDggfHwgZnNfa0h6ID09IDEyIHx8IGZzX2tIeiA9PSAxNiApOwotICAg
IHNpbGtfYXNzZXJ0KCBwc0VuYy0+c0Ntbi5uYl9zdWJmciA9PSAyIHx8IHBzRW5jLT5zQ21uLm5i
X3N1YmZyID09IDQgKTsKKyAgICBjZWx0X2Fzc2VydCggZnNfa0h6ID09IDggfHwgZnNfa0h6ID09
IDEyIHx8IGZzX2tIeiA9PSAxNiApOworICAgIGNlbHRfYXNzZXJ0KCBwc0VuYy0+c0Ntbi5uYl9z
dWJmciA9PSAyIHx8IHBzRW5jLT5zQ21uLm5iX3N1YmZyID09IDQgKTsKICAgICBpZiggcHNFbmMt
PnNDbW4uZnNfa0h6ICE9IGZzX2tIeiApIHsKICAgICAgICAgLyogcmVzZXQgcGFydCBvZiB0aGUg
c3RhdGUgKi8KICAgICAgICAgc2lsa19tZW1zZXQoICZwc0VuYy0+c1NoYXBlLCAgICAgICAgICAg
ICAgIDAsIHNpemVvZiggcHNFbmMtPnNTaGFwZSApICk7CkBAIC0yOTksNyArMjk5LDcgQEAgc3Rh
dGljIG9wdXNfaW50IHNpbGtfc2V0dXBfZnMoCiAgICAgfQogCiAgICAgLyogQ2hlY2sgdGhhdCBz
ZXR0aW5ncyBhcmUgdmFsaWQgKi8KLSAgICBzaWxrX2Fzc2VydCggKCBwc0VuYy0+c0Ntbi5zdWJm
cl9sZW5ndGggKiBwc0VuYy0+c0Ntbi5uYl9zdWJmciApID09IHBzRW5jLT5zQ21uLmZyYW1lX2xl
bmd0aCApOworICAgIGNlbHRfYXNzZXJ0KCAoIHBzRW5jLT5zQ21uLnN1YmZyX2xlbmd0aCAqIHBz
RW5jLT5zQ21uLm5iX3N1YmZyICkgPT0gcHNFbmMtPnNDbW4uZnJhbWVfbGVuZ3RoICk7CiAKICAg
ICByZXR1cm4gcmV0OwogfQpAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBvcHVzX2ludCBzaWxr
X3NldHVwX2NvbXBsZXhpdHkoCiAgICAgb3B1c19pbnQgcmV0ID0gMDsKIAogICAgIC8qIFNldCBl
bmNvZGluZyBjb21wbGV4aXR5ICovCi0gICAgc2lsa19hc3NlcnQoIENvbXBsZXhpdHkgPj0gMCAm
JiBDb21wbGV4aXR5IDw9IDEwICk7CisgICAgY2VsdF9hc3NlcnQoIENvbXBsZXhpdHkgPj0gMCAm
JiBDb21wbGV4aXR5IDw9IDEwICk7CiAgICAgaWYoIENvbXBsZXhpdHkgPCAxICkgewogICAgICAg
ICBwc0VuY0MtPnBpdGNoRXN0aW1hdGlvbkNvbXBsZXhpdHkgICAgICAgPSBTSUxLX1BFX01JTl9D
T01QTEVYOwogICAgICAgICBwc0VuY0MtPnBpdGNoRXN0aW1hdGlvblRocmVzaG9sZF9RMTYgICAg
PSBTSUxLX0ZJWF9DT05TVCggMC44LCAxNiApOwpAQCAtMzkwLDEyICszOTAsMTIgQEAgc3RhdGlj
IG9wdXNfaW50IHNpbGtfc2V0dXBfY29tcGxleGl0eSgKICAgICBwc0VuY0MtPnNoYXBlV2luTGVu
Z3RoICAgICAgICAgID0gU1VCX0ZSQU1FX0xFTkdUSF9NUyAqIHBzRW5jQy0+ZnNfa0h6ICsgMiAq
IHBzRW5jQy0+bGFfc2hhcGU7CiAgICAgcHNFbmNDLT5Db21wbGV4aXR5ICAgICAgICAgICAgICA9
IENvbXBsZXhpdHk7CiAKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT5waXRjaEVzdGltYXRpb25M
UENPcmRlciA8PSBNQVhfRklORF9QSVRDSF9MUENfT1JERVIgKTsKLSAgICBzaWxrX2Fzc2VydCgg
cHNFbmNDLT5zaGFwaW5nTFBDT3JkZXIgICAgICAgICA8PSBNQVhfU0hBUEVfTFBDX09SREVSICAg
ICAgKTsKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT5uU3RhdGVzRGVsYXllZERlY2lzaW9uICA8
PSBNQVhfREVMX0RFQ19TVEFURVMgICAgICAgKTsKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT53
YXJwaW5nX1ExNiAgICAgICAgICAgICA8PSAzMjc2NyAgICAgICAgICAgICAgICAgICAgKTsKLSAg
ICBzaWxrX2Fzc2VydCggcHNFbmNDLT5sYV9zaGFwZSAgICAgICAgICAgICAgICA8PSBMQV9TSEFQ
RV9NQVggICAgICAgICAgICAgKTsKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT5zaGFwZVdpbkxl
bmd0aCAgICAgICAgICA8PSBTSEFQRV9MUENfV0lOX01BWCAgICAgICAgKTsKKyAgICBjZWx0X2Fz
c2VydCggcHNFbmNDLT5waXRjaEVzdGltYXRpb25MUENPcmRlciA8PSBNQVhfRklORF9QSVRDSF9M
UENfT1JERVIgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNFbmNDLT5zaGFwaW5nTFBDT3JkZXIgICAg
ICAgICA8PSBNQVhfU0hBUEVfTFBDX09SREVSICAgICAgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNF
bmNDLT5uU3RhdGVzRGVsYXllZERlY2lzaW9uICA8PSBNQVhfREVMX0RFQ19TVEFURVMgICAgICAg
KTsKKyAgICBjZWx0X2Fzc2VydCggcHNFbmNDLT53YXJwaW5nX1ExNiAgICAgICAgICAgICA8PSAz
Mjc2NyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNFbmNDLT5sYV9z
aGFwZSAgICAgICAgICAgICAgICA8PSBMQV9TSEFQRV9NQVggICAgICAgICAgICAgKTsKKyAgICBj
ZWx0X2Fzc2VydCggcHNFbmNDLT5zaGFwZVdpbkxlbmd0aCAgICAgICAgICA8PSBTSEFQRV9MUENf
V0lOX01BWCAgICAgICAgKTsKIAogICAgIHJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
ZGVjX0FQSS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2RlY19BUEkuYwppbmRleCBiN2Q4ZWQ0OGQ4OGY1MTkyODYwNDQ1Y2U5
MmMzNTMxYjlmNTUyY2Q2Li43ZDVjYTdmYjlmN2JmMGI2ZDg5YTJhZmRlNzExNjZhYTQ0Y2MxMTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvZGVjX0FQSS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNfQVBJLmMKQEAgLTEwNCw3
ICsxMDQsNyBAQCBvcHVzX2ludCBzaWxrX0RlY29kZSggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE8gICAgUmV0dXJucyBlcnJvciBjbwogICAgIGludCBkZWxheV9zdGFja19h
bGxvYzsKICAgICBTQVZFX1NUQUNLOwogCi0gICAgc2lsa19hc3NlcnQoIGRlY0NvbnRyb2wtPm5D
aGFubmVsc0ludGVybmFsID09IDEgfHwgZGVjQ29udHJvbC0+bkNoYW5uZWxzSW50ZXJuYWwgPT0g
MiApOworICAgIGNlbHRfYXNzZXJ0KCBkZWNDb250cm9sLT5uQ2hhbm5lbHNJbnRlcm5hbCA9PSAx
IHx8IGRlY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFsID09IDIgKTsKIAogICAgIC8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgIC8qIFRlc3QgaWYgZmlyc3QgZnJhbWUg
aW4gcGF5bG9hZCAqLwpAQCAtMTQzLDEzICsxNDMsMTMgQEAgb3B1c19pbnQgc2lsa19EZWNvZGUo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAgIFJldHVybnMgZXJyb3Ig
Y28KICAgICAgICAgICAgICAgICBjaGFubmVsX3N0YXRlWyBuIF0ubkZyYW1lc1BlclBhY2tldCA9
IDM7CiAgICAgICAgICAgICAgICAgY2hhbm5lbF9zdGF0ZVsgbiBdLm5iX3N1YmZyID0gNDsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAg
ICAgICAgICAgICAgICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICAgICAgICAgIFJFU1RPUkVf
U1RBQ0s7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNJTEtfREVDX0lOVkFMSURfRlJBTUVfU0la
RTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZzX2tIel9kZWMgPSAoIGRlY0NvbnRyb2wt
PmludGVybmFsU2FtcGxlUmF0ZSA+PiAxMCApICsgMTsKICAgICAgICAgICAgIGlmKCBmc19rSHpf
ZGVjICE9IDggJiYgZnNfa0h6X2RlYyAhPSAxMiAmJiBmc19rSHpfZGVjICE9IDE2ICkgewotICAg
ICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgICAgICAgICAgY2VsdF9hc3Nl
cnQoIDAgKTsKICAgICAgICAgICAgICAgICBSRVNUT1JFX1NUQUNLOwogICAgICAgICAgICAgICAg
IHJldHVybiBTSUxLX0RFQ19JTlZBTElEX1NBTVBMSU5HX0ZSRVFVRU5DWTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfY29yZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9jb3JlLmMKaW5k
ZXggZmQ0ZTg1N2FmYThhY2NjNmQ3ZmFkMjAzYmI5NjAxODg5YWQwMWQ5NS4uMWMzNTJhNjUyMjQz
ZGNlMTMyZmVmZTU5ZjBkMjFiOWNlZjIyYTUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9jb3Jl
LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zaWxrL2RlY29kZV9jb3JlLmMKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIHNpbGtf
ZGVjb2RlX2NvcmUoCiAgICAgICAgICAgICBpZiggayA9PSAwIHx8ICggayA9PSAyICYmIE5MU0Zf
aW50ZXJwb2xhdGlvbl9mbGFnICkgKSB7CiAgICAgICAgICAgICAgICAgLyogUmV3aGl0ZW4gd2l0
aCBuZXcgQSBjb2VmcyAqLwogICAgICAgICAgICAgICAgIHN0YXJ0X2lkeCA9IHBzRGVjLT5sdHBf
bWVtX2xlbmd0aCAtIGxhZyAtIHBzRGVjLT5MUENfb3JkZXIgLSBMVFBfT1JERVIgLyAyOwotICAg
ICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBzdGFydF9pZHggPiAwICk7CisgICAgICAgICAgICAg
ICAgY2VsdF9hc3NlcnQoIHN0YXJ0X2lkeCA+IDAgKTsKIAogICAgICAgICAgICAgICAgIGlmKCBr
ID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpbGtfbWVtY3B5KCAmcHNEZWMtPm91dEJ1
ZlsgcHNEZWMtPmx0cF9tZW1fbGVuZ3RoIF0sIHhxLCAyICogcHNEZWMtPnN1YmZyX2xlbmd0aCAq
IHNpemVvZiggb3B1c19pbnQxNiApICk7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBzaWxrX2Rl
Y29kZV9jb3JlKAogCiAgICAgICAgIGZvciggaSA9IDA7IGkgPCBwc0RlYy0+c3ViZnJfbGVuZ3Ro
OyBpKysgKSB7CiAgICAgICAgICAgICAvKiBTaG9ydC10ZXJtIHByZWRpY3Rpb24gKi8KLSAgICAg
ICAgICAgIHNpbGtfYXNzZXJ0KCBwc0RlYy0+TFBDX29yZGVyID09IDEwIHx8IHBzRGVjLT5MUENf
b3JkZXIgPT0gMTYgKTsKKyAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBwc0RlYy0+TFBDX29yZGVy
ID09IDEwIHx8IHBzRGVjLT5MUENfb3JkZXIgPT0gMTYgKTsKICAgICAgICAgICAgIC8qIEF2b2lk
cyBpbnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVzZSBzaWxrX1NNTEFXQigpIGFsd2F5cyByb3VuZHMg
dG8gLWluZiAqLwogICAgICAgICAgICAgTFBDX3ByZWRfUTEwID0gc2lsa19SU0hJRlQoIHBzRGVj
LT5MUENfb3JkZXIsIDEgKTsKICAgICAgICAgICAgIExQQ19wcmVkX1ExMCA9IHNpbGtfU01MQVdC
KCBMUENfcHJlZF9RMTAsIHNMUENfUTE0WyBNQVhfTFBDX09SREVSICsgaSAtICAxIF0sIEFfUTEy
X3RtcFsgMCBdICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX2ZyYW1lLmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2Rl
X2ZyYW1lLmMKaW5kZXggZGZhNzNjNGEyOTY3MDYzNGFlYjcwMDYxMjUyYWRhNzEzNmVjMmRjMi4u
ZTczODI1YjI2NzZmOTYwNmI1MWFhNmQ5ZTlmYzA3MWZjZDUyOTQ4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2RlY29kZV9mcmFtZS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfZnJhbWUuYwpAQCAtNTUsNyArNTUsNyBA
QCBvcHVzX2ludCBzaWxrX2RlY29kZV9mcmFtZSgKICAgICBwc0RlY0N0cmwtPkxUUF9zY2FsZV9R
MTQgPSAwOwogCiAgICAgLyogU2FmZXR5IGNoZWNrcyAqLwotICAgIHNpbGtfYXNzZXJ0KCBMID4g
MCAmJiBMIDw9IE1BWF9GUkFNRV9MRU5HVEggKTsKKyAgICBjZWx0X2Fzc2VydCggTCA+IDAgJiYg
TCA8PSBNQVhfRlJBTUVfTEVOR1RIICk7CiAKICAgICBpZiggICBsb3N0RmxhZyA9PSBGTEFHX0RF
Q09ERV9OT1JNQUwgfHwKICAgICAgICAgKCBsb3N0RmxhZyA9PSBGTEFHX0RFQ09ERV9MQlJSICYm
IHBzRGVjLT5MQlJSX2ZsYWdzWyBwc0RlYy0+bkZyYW1lc0RlY29kZWQgXSA9PSAxICkgKQpAQCAt
OTEsNyArOTEsNyBAQCBvcHVzX2ludCBzaWxrX2RlY29kZV9mcmFtZSgKIAogICAgICAgICBwc0Rl
Yy0+bG9zc0NudCA9IDA7CiAgICAgICAgIHBzRGVjLT5wcmV2U2lnbmFsVHlwZSA9IHBzRGVjLT5p
bmRpY2VzLnNpZ25hbFR5cGU7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBwc0RlYy0+cHJldlNpZ25h
bFR5cGUgPj0gMCAmJiBwc0RlYy0+cHJldlNpZ25hbFR5cGUgPD0gMiApOworICAgICAgICBjZWx0
X2Fzc2VydCggcHNEZWMtPnByZXZTaWduYWxUeXBlID49IDAgJiYgcHNEZWMtPnByZXZTaWduYWxU
eXBlIDw9IDIgKTsKIAogICAgICAgICAvKiBBIGZyYW1lIGhhcyBiZWVuIGRlY29kZWQgd2l0aG91
dCBlcnJvcnMgKi8KICAgICAgICAgcHNEZWMtPmZpcnN0X2ZyYW1lX2FmdGVyX3Jlc2V0ID0gMDsK
QEAgLTEwNCw3ICsxMDQsNyBAQCBvcHVzX2ludCBzaWxrX2RlY29kZV9mcmFtZSgKICAgICAvKioq
KioqKioqKioqKioqKioqKioqKioqKi8KICAgICAvKiBVcGRhdGUgb3V0cHV0IGJ1ZmZlci4gKi8K
ICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBzaWxrX2Fzc2VydCggcHNEZWMt
Pmx0cF9tZW1fbGVuZ3RoID49IHBzRGVjLT5mcmFtZV9sZW5ndGggKTsKKyAgICBjZWx0X2Fzc2Vy
dCggcHNEZWMtPmx0cF9tZW1fbGVuZ3RoID49IHBzRGVjLT5mcmFtZV9sZW5ndGggKTsKICAgICBt
dl9sZW4gPSBwc0RlYy0+bHRwX21lbV9sZW5ndGggLSBwc0RlYy0+ZnJhbWVfbGVuZ3RoOwogICAg
IHNpbGtfbWVtbW92ZSggcHNEZWMtPm91dEJ1ZiwgJnBzRGVjLT5vdXRCdWZbIHBzRGVjLT5mcmFt
ZV9sZW5ndGggXSwgbXZfbGVuICogc2l6ZW9mKG9wdXNfaW50MTYpICk7CiAgICAgc2lsa19tZW1j
cHkoICZwc0RlYy0+b3V0QnVmWyBtdl9sZW4gXSwgcE91dCwgcHNEZWMtPmZyYW1lX2xlbmd0aCAq
IHNpemVvZiggb3B1c19pbnQxNiApICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX2luZGljZXMu
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9kZWNvZGVfaW5kaWNlcy5jCmluZGV4IDdhZmU1YzI2YzE5MmFkMTkzZmYzNWNiNmY1
ODk1NGNiN2QzZTY0MjEuLjBiYjRhOTk3YTUzYjA4MWVmNWNmZDEwNWM4NjVmNjRkZDdiNzVlZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfaW5kaWNlcy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfaW5kaWNl
cy5jCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgc2lsa19kZWNvZGVfaW5kaWNlcygKICAgICAvKioq
KioqKioqKioqKioqKioqKioqKi8KICAgICBwc0RlYy0+aW5kaWNlcy5OTFNGSW5kaWNlc1sgMCBd
ID0gKG9wdXNfaW50OCllY19kZWNfaWNkZiggcHNSYW5nZURlYywgJnBzRGVjLT5wc05MU0ZfQ0It
PkNCMV9pQ0RGWyAoIHBzRGVjLT5pbmRpY2VzLnNpZ25hbFR5cGUgPj4gMSApICogcHNEZWMtPnBz
TkxTRl9DQi0+blZlY3RvcnMgXSwgOCApOwogICAgIHNpbGtfTkxTRl91bnBhY2soIGVjX2l4LCBw
cmVkX1E4LCBwc0RlYy0+cHNOTFNGX0NCLCBwc0RlYy0+aW5kaWNlcy5OTFNGSW5kaWNlc1sgMCBd
ICk7Ci0gICAgc2lsa19hc3NlcnQoIHBzRGVjLT5wc05MU0ZfQ0ItPm9yZGVyID09IHBzRGVjLT5M
UENfb3JkZXIgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNEZWMtPnBzTkxTRl9DQi0+b3JkZXIgPT0g
cHNEZWMtPkxQQ19vcmRlciApOwogICAgIGZvciggaSA9IDA7IGkgPCBwc0RlYy0+cHNOTFNGX0NC
LT5vcmRlcjsgaSsrICkgewogICAgICAgICBJeCA9IGVjX2RlY19pY2RmKCBwc1JhbmdlRGVjLCAm
cHNEZWMtPnBzTkxTRl9DQi0+ZWNfaUNERlsgZWNfaXhbIGkgXSBdLCA4ICk7CiAgICAgICAgIGlm
KCBJeCA9PSAwICkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZV9waXRjaC5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29k
ZV9waXRjaC5jCmluZGV4IGZlZGJjNmE1MjU1NzU2MjgxNzUzZGQyZDhhYmNkMGM1ZTVhYjkwNDEu
LmZkMWI2YmY1NTE3OTI1MjVhNWEwYTdiOTAyODM2MjlmNmI0N2QwMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9kZWNvZGVfcGl0Y2guYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX3BpdGNoLmMKQEAgLTUxLDcgKzUxLDcg
QEAgdm9pZCBzaWxrX2RlY29kZV9waXRjaCgKICAgICAgICAgICAgIExhZ19DQl9wdHIgPSAmc2ls
a19DQl9sYWdzX3N0YWdlMlsgMCBdWyAwIF07CiAgICAgICAgICAgICBjYmtfc2l6ZSAgID0gUEVf
TkJfQ0JLU19TVEFHRTJfRVhUOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2lsa19h
c3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJGUiA+PiAxICk7CisgICAgICAgICAgICBj
ZWx0X2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSID4+IDEgKTsKICAgICAgICAg
ICAgIExhZ19DQl9wdHIgPSAmc2lsa19DQl9sYWdzX3N0YWdlMl8xMF9tc1sgMCBdWyAwIF07CiAg
ICAgICAgICAgICBjYmtfc2l6ZSAgID0gUEVfTkJfQ0JLU19TVEFHRTJfMTBNUzsKICAgICAgICAg
fQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIHNpbGtfZGVjb2RlX3BpdGNoKAogICAgICAgICAgICAg
TGFnX0NCX3B0ciA9ICZzaWxrX0NCX2xhZ3Nfc3RhZ2UzWyAwIF1bIDAgXTsKICAgICAgICAgICAg
IGNia19zaXplICAgPSBQRV9OQl9DQktTX1NUQUdFM19NQVg7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzaWxrX2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSID4+IDEg
KTsKKyAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIg
Pj4gMSApOwogICAgICAgICAgICAgTGFnX0NCX3B0ciA9ICZzaWxrX0NCX2xhZ3Nfc3RhZ2UzXzEw
X21zWyAwIF1bIDAgXTsKICAgICAgICAgICAgIGNia19zaXplICAgPSBQRV9OQl9DQktTX1NUQUdF
M18xME1TOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2RlX3B1bHNlcy5jIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2RlY29kZV9wdWxzZXMuYwppbmRleCBkNmJiZWM5MjI1MjAzZGRmMjFiODMzNGJlOGFmMTJmYzNk
M2VhY2QyLi5hNTZkMmQzMDc0YTcwNmE4YjNhZDRjM2VmYWRiMzAyMTlhM2ZmMThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvZGVjb2RlX3B1bHNlcy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWNvZGVfcHVsc2VzLmMKQEAgLTU2
LDcgKzU2LDcgQEAgdm9pZCBzaWxrX2RlY29kZV9wdWxzZXMoCiAgICAgc2lsa19hc3NlcnQoIDEg
PDwgTE9HMl9TSEVMTF9DT0RFQ19GUkFNRV9MRU5HVEggPT0gU0hFTExfQ09ERUNfRlJBTUVfTEVO
R1RIICk7CiAgICAgaXRlciA9IHNpbGtfUlNISUZUKCBmcmFtZV9sZW5ndGgsIExPRzJfU0hFTExf
Q09ERUNfRlJBTUVfTEVOR1RIICk7CiAgICAgaWYoIGl0ZXIgKiBTSEVMTF9DT0RFQ19GUkFNRV9M
RU5HVEggPCBmcmFtZV9sZW5ndGggKSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBmcmFtZV9sZW5n
dGggPT0gMTIgKiAxMCApOyAvKiBNYWtlIHN1cmUgb25seSBoYXBwZW5zIGZvciAxMCBtcyBAIDEy
IGtIeiAqLworICAgICAgICBjZWx0X2Fzc2VydCggZnJhbWVfbGVuZ3RoID09IDEyICogMTAgKTsg
LyogTWFrZSBzdXJlIG9ubHkgaGFwcGVucyBmb3IgMTAgbXMgQCAxMiBrSHogKi8KICAgICAgICAg
aXRlcisrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2RlY29kZXJfc2V0X2ZzLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
ZGVjb2Rlcl9zZXRfZnMuYwppbmRleCBlZWYwZmQyNWUxODM2OTJiZGQ2ZDgxNjk1NjRlNDU3NTQ0
ZGY2ZDEyLi5kOWExM2QwZjBjYWRlOTZlZmIyODgyMGYwOGI3MThmZTk2OGE3ZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvZGVjb2Rlcl9zZXRfZnMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVjb2Rlcl9zZXRfZnMuYwpAQCAt
NDAsOCArNDAsOCBAQCBvcHVzX2ludCBzaWxrX2RlY29kZXJfc2V0X2ZzKAogewogICAgIG9wdXNf
aW50IGZyYW1lX2xlbmd0aCwgcmV0ID0gMDsKIAotICAgIHNpbGtfYXNzZXJ0KCBmc19rSHogPT0g
OCB8fCBmc19rSHogPT0gMTIgfHwgZnNfa0h6ID09IDE2ICk7Ci0gICAgc2lsa19hc3NlcnQoIHBz
RGVjLT5uYl9zdWJmciA9PSBNQVhfTkJfU1VCRlIgfHwgcHNEZWMtPm5iX3N1YmZyID09IE1BWF9O
Ql9TVUJGUi8yICk7CisgICAgY2VsdF9hc3NlcnQoIGZzX2tIeiA9PSA4IHx8IGZzX2tIeiA9PSAx
MiB8fCBmc19rSHogPT0gMTYgKTsKKyAgICBjZWx0X2Fzc2VydCggcHNEZWMtPm5iX3N1YmZyID09
IE1BWF9OQl9TVUJGUiB8fCBwc0RlYy0+bmJfc3ViZnIgPT0gTUFYX05CX1NVQkZSLzIgKTsKIAog
ICAgIC8qIE5ldyAoc3ViKWZyYW1lIGxlbmd0aCAqLwogICAgIHBzRGVjLT5zdWJmcl9sZW5ndGgg
PSBzaWxrX1NNVUxCQiggU1VCX0ZSQU1FX0xFTkdUSF9NUywgZnNfa0h6ICk7CkBAIC04Niw3ICs4
Niw3IEBAIG9wdXNfaW50IHNpbGtfZGVjb2Rlcl9zZXRfZnMoCiAgICAgICAgICAgICAgICAgcHNE
ZWMtPnBpdGNoX2xhZ19sb3dfYml0c19pQ0RGID0gc2lsa191bmlmb3JtNF9pQ0RGOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiB1bnN1cHBvcnRlZCBzYW1wbGluZyBy
YXRlICovCi0gICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAgICAg
ICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHNEZWMtPmZp
cnN0X2ZyYW1lX2FmdGVyX3Jlc2V0ID0gMTsKICAgICAgICAgICAgIHBzRGVjLT5sYWdQcmV2ICAg
ICAgICAgICAgICAgICA9IDEwMDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBvcHVzX2ludCBzaWxrX2Rl
Y29kZXJfc2V0X2ZzKAogICAgIH0KIAogICAgIC8qIENoZWNrIHRoYXQgc2V0dGluZ3MgYXJlIHZh
bGlkICovCi0gICAgc2lsa19hc3NlcnQoIHBzRGVjLT5mcmFtZV9sZW5ndGggPiAwICYmIHBzRGVj
LT5mcmFtZV9sZW5ndGggPD0gTUFYX0ZSQU1FX0xFTkdUSCApOworICAgIGNlbHRfYXNzZXJ0KCBw
c0RlYy0+ZnJhbWVfbGVuZ3RoID4gMCAmJiBwc0RlYy0+ZnJhbWVfbGVuZ3RoIDw9IE1BWF9GUkFN
RV9MRU5HVEggKTsKIAogICAgIHJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZGVmaW5l
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvZGVmaW5lLmgKaW5kZXggMjJmZDcyMGI5NzZhZjIzM2VjMmRhZmM4M2Q2ZDk1YmUy
NzkzZWQ2Yi4uNDkxYzg2ZjMzZTlmNTEwY2E5Y2E5NDU0N2E4MGM2ODY3OTk2ZWEyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2RlZmluZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9kZWZpbmUuaApAQCAtNDYsNyArNDYsNiBAQCBl
eHRlcm4gIkMiCiAvKiBMaW1pdHMgb24gYml0cmF0ZSAqLwogI2RlZmluZSBNSU5fVEFSR0VUX1JB
VEVfQlBTICAgICAgICAgICAgICAgICAgICAgNTAwMAogI2RlZmluZSBNQVhfVEFSR0VUX1JBVEVf
QlBTICAgICAgICAgICAgICAgICAgICAgODAwMDAKLSNkZWZpbmUgVEFSR0VUX1JBVEVfVEFCX1Na
ICAgICAgICAgICAgICAgICAgICAgIDgKIAogLyogTEJSUiB0aHJlc2hvbGRzICovCiAjZGVmaW5l
IExCUlJfTkJfTUlOX1JBVEVfQlBTICAgICAgICAgICAgICAgICAgICAxMjAwMApAQCAtMjI2LDYg
KzIyNSw3IEBAIGV4dGVybiAiQyIKIC8qIERlZmluZXMgZm9yIENOIGdlbmVyYXRpb24gKi8KICNk
ZWZpbmUgQ05HX0JVRl9NQVNLX01BWCAgICAgICAgICAgICAgICAgICAgICAgIDI1NSAgICAgLyog
Ml5mbG9vcihsb2cyKE1BWF9GUkFNRV9MRU5HVEgpKS0xICAgICovCiAjZGVmaW5lIENOR19HQUlO
X1NNVEhfUTE2ICAgICAgICAgICAgICAgICAgICAgICA0NjM0ICAgIC8qIDAuMjVeKDEvNCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDTkdfR0FJTl9TTVRIX1RIUkVTSE9M
RF9RMTYgICAgICAgICAgICAgNDYzOTYgICAvKiAtMyBkQiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KICNkZWZpbmUgQ05HX05MU0ZfU01USF9RMTYgICAgICAgICAgICAgICAgICAg
ICAgIDE2MzQ4ICAgLyogMC4yNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2VuY19BUEkuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9lbmNf
QVBJLmMKaW5kZXggMGE2MmEzYzFkNzJhZmQwYTYyMTI4ZTQyZGNhYTgwM2FkMGY0NDMxOC4uNTVh
MzNmMzdlOTgwMjdhMDkxZjQ5MTJmYzMyNmE3MjhkZjlmNmYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Vu
Y19BUEkuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvZW5jX0FQSS5jCkBAIC04Miw3ICs4Miw3IEBAIG9wdXNfaW50IHNp
bGtfSW5pdEVuY29kZXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1
cm5zIGVycm9yIGNvCiAgICAgc2lsa19tZW1zZXQoIHBzRW5jLCAwLCBzaXplb2YoIHNpbGtfZW5j
b2RlciApICk7CiAgICAgZm9yKCBuID0gMDsgbiA8IEVOQ09ERVJfTlVNX0NIQU5ORUxTOyBuKysg
KSB7CiAgICAgICAgIGlmKCByZXQgKz0gc2lsa19pbml0X2VuY29kZXIoICZwc0VuYy0+c3RhdGVf
Rnh4WyBuIF0sIGFyY2ggKSApIHsKLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAg
ICAgICAgICBjZWx0X2Fzc2VydCggMCApOwogICAgICAgICB9CiAgICAgfQogCkBAIC05MSw3ICs5
MSw3IEBAIG9wdXNfaW50IHNpbGtfSW5pdEVuY29kZXIoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogTyAgICBSZXR1cm5zIGVycm9yIGNvCiAKICAgICAvKiBSZWFkIGNvbnRyb2wgc3Ry
dWN0dXJlICovCiAgICAgaWYoIHJldCArPSBzaWxrX1F1ZXJ5RW5jb2RlciggZW5jU3RhdGUsIGVu
Y1N0YXR1cyApICkgewotICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICBjZWx0X2Fz
c2VydCggMCApOwogICAgIH0KIAogICAgIHJldHVybiByZXQ7CkBAIC0xNjcsNyArMTY3LDcgQEAg
b3B1c19pbnQgc2lsa19FbmNvZGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBPICAgIFJldHVybnMgZXJyb3IgY28KIAogICAgIC8qIENoZWNrIHZhbHVlcyBpbiBlbmNvZGVy
IGNvbnRyb2wgc3RydWN0dXJlICovCiAgICAgaWYoICggcmV0ID0gY2hlY2tfY29udHJvbF9pbnB1
dCggZW5jQ29udHJvbCApICkgIT0gMCApIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAg
ICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgUkVTVE9SRV9TVEFDSzsKICAgICAgICAg
cmV0dXJuIHJldDsKICAgICB9CkBAIC0yMDAsMTYgKzIwMCwyNiBAQCBvcHVzX2ludCBzaWxrX0Vu
Y29kZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8gICAgUmV0dXJucyBl
cnJvciBjbwogICAgIHRvdF9ibG9ja3MgPSAoIG5CbG9ja3NPZjEwbXMgPiAxICkgPyBuQmxvY2tz
T2YxMG1zID4+IDEgOiAxOwogICAgIGN1cnJfYmxvY2sgPSAwOwogICAgIGlmKCBwcmVmaWxsRmxh
ZyApIHsKKyAgICAgICAgc2lsa19MUF9zdGF0ZSBzYXZlX0xQOwogICAgICAgICAvKiBPbmx5IGFj
Y2VwdCBpbnB1dCBsZW5ndGggb2YgMTAgbXMgKi8KICAgICAgICAgaWYoIG5CbG9ja3NPZjEwbXMg
IT0gMSApIHsKLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAwICk7CisgICAgICAgICAgICBjZWx0
X2Fzc2VydCggMCApOwogICAgICAgICAgICAgUkVTVE9SRV9TVEFDSzsKICAgICAgICAgICAgIHJl
dHVybiBTSUxLX0VOQ19JTlBVVF9JTlZBTElEX05PX09GX1NBTVBMRVM7CiAgICAgICAgIH0KKyAg
ICAgICAgaWYgKCBwcmVmaWxsRmxhZyA9PSAyICkgeworICAgICAgICAgICAgc2F2ZV9MUCA9IHBz
RW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLnNMUDsKKyAgICAgICAgICAgIC8qIFNhdmUgdGhlIHNh
bXBsaW5nIHJhdGUgc28gdGhlIGJhbmR3aWR0aCBzd2l0Y2hpbmcgY29kZSBjYW4ga2VlcCBoYW5k
bGluZyB0cmFuc2l0aW9ucy4gKi8KKyAgICAgICAgICAgIHNhdmVfTFAuc2F2ZWRfZnNfa0h6ID0g
cHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uZnNfa0h6OworICAgICAgICB9CiAgICAgICAgIC8q
IFJlc2V0IEVuY29kZXIgKi8KICAgICAgICAgZm9yKCBuID0gMDsgbiA8IGVuY0NvbnRyb2wtPm5D
aGFubmVsc0ludGVybmFsOyBuKysgKSB7CiAgICAgICAgICAgICByZXQgPSBzaWxrX2luaXRfZW5j
b2RlciggJnBzRW5jLT5zdGF0ZV9GeHhbIG4gXSwgcHNFbmMtPnN0YXRlX0Z4eFsgbiBdLnNDbW4u
YXJjaCApOwotICAgICAgICAgICAgc2lsa19hc3NlcnQoICFyZXQgKTsKKyAgICAgICAgICAgIC8q
IFJlc3RvcmUgdGhlIHZhcmlhYmxlIExQIHN0YXRlLiAqLworICAgICAgICAgICAgaWYgKCBwcmVm
aWxsRmxhZyA9PSAyICkgeworICAgICAgICAgICAgICAgIHBzRW5jLT5zdGF0ZV9GeHhbIG4gXS5z
Q21uLnNMUCA9IHNhdmVfTFA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjZWx0X2Fzc2Vy
dCggIXJldCApOwogICAgICAgICB9CiAgICAgICAgIHRtcF9wYXlsb2FkU2l6ZV9tcyA9IGVuY0Nv
bnRyb2wtPnBheWxvYWRTaXplX21zOwogICAgICAgICBlbmNDb250cm9sLT5wYXlsb2FkU2l6ZV9t
cyA9IDEwOwpAQCAtMjIyLDEzICsyMzIsMTMgQEAgb3B1c19pbnQgc2lsa19FbmNvZGUoICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAgIFJldHVybnMgZXJyb3IgY28KICAg
ICB9IGVsc2UgewogICAgICAgICAvKiBPbmx5IGFjY2VwdCBpbnB1dCBsZW5ndGhzIHRoYXQgYXJl
IGEgbXVsdGlwbGUgb2YgMTAgbXMgKi8KICAgICAgICAgaWYoIG5CbG9ja3NPZjEwbXMgKiBlbmND
b250cm9sLT5BUElfc2FtcGxlUmF0ZSAhPSAxMDAgKiBuU2FtcGxlc0luIHx8IG5TYW1wbGVzSW4g
PCAwICkgewotICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAgIGNlbHRf
YXNzZXJ0KCAwICk7CiAgICAgICAgICAgICBSRVNUT1JFX1NUQUNLOwogICAgICAgICAgICAgcmV0
dXJuIFNJTEtfRU5DX0lOUFVUX0lOVkFMSURfTk9fT0ZfU0FNUExFUzsKICAgICAgICAgfQogICAg
ICAgICAvKiBNYWtlIHN1cmUgbm8gbW9yZSB0aGFuIG9uZSBwYWNrZXQgY2FuIGJlIHByb2R1Y2Vk
ICovCiAgICAgICAgIGlmKCAxMDAwICogKG9wdXNfaW50MzIpblNhbXBsZXNJbiA+IGVuY0NvbnRy
b2wtPnBheWxvYWRTaXplX21zICogZW5jQ29udHJvbC0+QVBJX3NhbXBsZVJhdGUgKSB7Ci0gICAg
ICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsK
ICAgICAgICAgICAgIFJFU1RPUkVfU1RBQ0s7CiAgICAgICAgICAgICByZXR1cm4gU0lMS19FTkNf
SU5QVVRfSU5WQUxJRF9OT19PRl9TQU1QTEVTOwogICAgICAgICB9CkBAIC0yNDksNyArMjU5LDcg
QEAgb3B1c19pbnQgc2lsa19FbmNvZGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBPICAgIFJldHVybnMgZXJyb3IgY28KICAgICAgICAgfQogICAgICAgICBwc0VuYy0+c3Rh
dGVfRnh4WyBuIF0uc0Ntbi5pbkRUWCA9IHBzRW5jLT5zdGF0ZV9GeHhbIG4gXS5zQ21uLnVzZURU
WDsKICAgICB9Ci0gICAgc2lsa19hc3NlcnQoIGVuY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFs
ID09IDEgfHwgcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uZnNfa0h6ID09IHBzRW5jLT5zdGF0
ZV9GeHhbIDEgXS5zQ21uLmZzX2tIeiApOworICAgIGNlbHRfYXNzZXJ0KCBlbmNDb250cm9sLT5u
Q2hhbm5lbHNJbnRlcm5hbCA9PSAxIHx8IHBzRW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLmZzX2tI
eiA9PSBwc0VuYy0+c3RhdGVfRnh4WyAxIF0uc0Ntbi5mc19rSHogKTsKIAogICAgIC8qIElucHV0
IGJ1ZmZlcmluZy9yZXNhbXBsaW5nIGFuZCBlbmNvZGluZyAqLwogICAgIG5TYW1wbGVzVG9CdWZm
ZXJNYXggPQpAQCAtMzA3LDcgKzMxNyw3IEBAIG9wdXNfaW50IHNpbGtfRW5jb2RlKCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm5zIGVycm9yIGNvCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBwc0VuYy0+c3RhdGVfRnh4WyAwIF0uc0Ntbi5pbnB1dEJ1
Zkl4ICs9IG5TYW1wbGVzVG9CdWZmZXI7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBz
aWxrX2Fzc2VydCggZW5jQ29udHJvbC0+bkNoYW5uZWxzQVBJID09IDEgJiYgZW5jQ29udHJvbC0+
bkNoYW5uZWxzSW50ZXJuYWwgPT0gMSApOworICAgICAgICAgICAgY2VsdF9hc3NlcnQoIGVuY0Nv
bnRyb2wtPm5DaGFubmVsc0FQSSA9PSAxICYmIGVuY0NvbnRyb2wtPm5DaGFubmVsc0ludGVybmFs
ID09IDEgKTsKICAgICAgICAgICAgIHNpbGtfbWVtY3B5KGJ1Ziwgc2FtcGxlc0luLCBuU2FtcGxl
c0Zyb21JbnB1dCpzaXplb2Yob3B1c19pbnQxNikpOwogICAgICAgICAgICAgcmV0ICs9IHNpbGtf
cmVzYW1wbGVyKCAmcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4ucmVzYW1wbGVyX3N0YXRlLAog
ICAgICAgICAgICAgICAgICZwc0VuYy0+c3RhdGVfRnh4WyAwIF0uc0Ntbi5pbnB1dEJ1ZlsgcHNF
bmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uaW5wdXRCdWZJeCArIDIgXSwgYnVmLCBuU2FtcGxlc0Zy
b21JbnB1dCApOwpAQCAtMzIzLDggKzMzMyw4IEBAIG9wdXNfaW50IHNpbGtfRW5jb2RlKCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm5zIGVycm9yIGNvCiAg
ICAgICAgIC8qIFNpbGsgZW5jb2RlciAqLwogICAgICAgICBpZiggcHNFbmMtPnN0YXRlX0Z4eFsg
MCBdLnNDbW4uaW5wdXRCdWZJeCA+PSBwc0VuYy0+c3RhdGVfRnh4WyAwIF0uc0Ntbi5mcmFtZV9s
ZW5ndGggKSB7CiAgICAgICAgICAgICAvKiBFbm91Z2ggZGF0YSBpbiBpbnB1dCBidWZmZXIsIHNv
IGVuY29kZSAqLwotICAgICAgICAgICAgc2lsa19hc3NlcnQoIHBzRW5jLT5zdGF0ZV9GeHhbIDAg
XS5zQ21uLmlucHV0QnVmSXggPT0gcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4uZnJhbWVfbGVu
Z3RoICk7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggZW5jQ29udHJvbC0+bkNoYW5uZWxzSW50
ZXJuYWwgPT0gMSB8fCBwc0VuYy0+c3RhdGVfRnh4WyAxIF0uc0Ntbi5pbnB1dEJ1Zkl4ID09IHBz
RW5jLT5zdGF0ZV9GeHhbIDEgXS5zQ21uLmZyYW1lX2xlbmd0aCApOworICAgICAgICAgICAgY2Vs
dF9hc3NlcnQoIHBzRW5jLT5zdGF0ZV9GeHhbIDAgXS5zQ21uLmlucHV0QnVmSXggPT0gcHNFbmMt
PnN0YXRlX0Z4eFsgMCBdLnNDbW4uZnJhbWVfbGVuZ3RoICk7CisgICAgICAgICAgICBjZWx0X2Fz
c2VydCggZW5jQ29udHJvbC0+bkNoYW5uZWxzSW50ZXJuYWwgPT0gMSB8fCBwc0VuYy0+c3RhdGVf
Rnh4WyAxIF0uc0Ntbi5pbnB1dEJ1Zkl4ID09IHBzRW5jLT5zdGF0ZV9GeHhbIDEgXS5zQ21uLmZy
YW1lX2xlbmd0aCApOwogCiAgICAgICAgICAgICAvKiBEZWFsIHdpdGggTEJSUiBkYXRhICovCiAg
ICAgICAgICAgICBpZiggcHNFbmMtPnN0YXRlX0Z4eFsgMCBdLnNDbW4ubkZyYW1lc0VuY29kZWQg
PT0gMCAmJiAhcHJlZmlsbEZsYWcgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZW5jb2RlX2luZGljZXMu
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9lbmNvZGVfaW5kaWNlcy5jCmluZGV4IDY2NmM4YzBiMTNlNDU5ZjgzZTYyNzhlM2Zl
ZmVmYjBkZTk3Zjk4NmMuLjRiY2JjMzM0N2I3ZDJjMWU0ZmFiN2E1MTA5MjY3MTUxOGQzY2EzM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9lbmNvZGVfaW5kaWNlcy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9lbmNvZGVfaW5kaWNl
cy5jCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgc2lsa19lbmNvZGVfaW5kaWNlcygKICAgICAvKiBF
bmNvZGUgc2lnbmFsIHR5cGUgYW5kIHF1YW50aXplciBvZmZzZXQgKi8KICAgICAvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICB0eXBlT2Zmc2V0ID0gMiAq
IHBzSW5kaWNlcy0+c2lnbmFsVHlwZSArIHBzSW5kaWNlcy0+cXVhbnRPZmZzZXRUeXBlOwotICAg
IHNpbGtfYXNzZXJ0KCB0eXBlT2Zmc2V0ID49IDAgJiYgdHlwZU9mZnNldCA8IDYgKTsKLSAgICBz
aWxrX2Fzc2VydCggZW5jb2RlX0xCUlIgPT0gMCB8fCB0eXBlT2Zmc2V0ID49IDIgKTsKKyAgICBj
ZWx0X2Fzc2VydCggdHlwZU9mZnNldCA+PSAwICYmIHR5cGVPZmZzZXQgPCA2ICk7CisgICAgY2Vs
dF9hc3NlcnQoIGVuY29kZV9MQlJSID09IDAgfHwgdHlwZU9mZnNldCA+PSAyICk7CiAgICAgaWYo
IGVuY29kZV9MQlJSIHx8IHR5cGVPZmZzZXQgPj0gMiApIHsKICAgICAgICAgZWNfZW5jX2ljZGYo
IHBzUmFuZ2VFbmMsIHR5cGVPZmZzZXQgLSAyLCBzaWxrX3R5cGVfb2Zmc2V0X1ZBRF9pQ0RGLCA4
ICk7CiAgICAgfSBlbHNlIHsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBzaWxrX2VuY29kZV9pbmRp
Y2VzKAogICAgIC8qKioqKioqKioqKioqKioqLwogICAgIGVjX2VuY19pY2RmKCBwc1JhbmdlRW5j
LCBwc0luZGljZXMtPk5MU0ZJbmRpY2VzWyAwIF0sICZwc0VuY0MtPnBzTkxTRl9DQi0+Q0IxX2lD
REZbICggcHNJbmRpY2VzLT5zaWduYWxUeXBlID4+IDEgKSAqIHBzRW5jQy0+cHNOTFNGX0NCLT5u
VmVjdG9ycyBdLCA4ICk7CiAgICAgc2lsa19OTFNGX3VucGFjayggZWNfaXgsIHByZWRfUTgsIHBz
RW5jQy0+cHNOTFNGX0NCLCBwc0luZGljZXMtPk5MU0ZJbmRpY2VzWyAwIF0gKTsKLSAgICBzaWxr
X2Fzc2VydCggcHNFbmNDLT5wc05MU0ZfQ0ItPm9yZGVyID09IHBzRW5jQy0+cHJlZGljdExQQ09y
ZGVyICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+cHNOTFNGX0NCLT5vcmRlciA9PSBwc0Vu
Y0MtPnByZWRpY3RMUENPcmRlciApOwogICAgIGZvciggaSA9IDA7IGkgPCBwc0VuY0MtPnBzTkxT
Rl9DQi0+b3JkZXI7IGkrKyApIHsKICAgICAgICAgaWYoIHBzSW5kaWNlcy0+TkxTRkluZGljZXNb
IGkrMSBdID49IE5MU0ZfUVVBTlRfTUFYX0FNUExJVFVERSApIHsKICAgICAgICAgICAgIGVjX2Vu
Y19pY2RmKCBwc1JhbmdlRW5jLCAyICogTkxTRl9RVUFOVF9NQVhfQU1QTElUVURFLCAmcHNFbmND
LT5wc05MU0ZfQ0ItPmVjX2lDREZbIGVjX2l4WyBpIF0gXSwgOCApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2VuY29kZV9wdWxzZXMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9lbmNvZGVfcHVsc2VzLmMKaW5kZXggYWIwMDI2NGY5OTE0
M2QxYjk4MTVlYzgzYjg4MTY1MTIwNWQ2MzE2Yi4uOGExOTk5MTM4YjIzZWJkMGNhYjVhYmZmZTVm
OWQ3MjJiZjEyOWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2VuY29kZV9wdWxzZXMuYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
ZW5jb2RlX3B1bHNlcy5jCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgc2lsa19lbmNvZGVfcHVsc2Vz
KAogICAgIHNpbGtfYXNzZXJ0KCAxIDw8IExPRzJfU0hFTExfQ09ERUNfRlJBTUVfTEVOR1RIID09
IFNIRUxMX0NPREVDX0ZSQU1FX0xFTkdUSCApOwogICAgIGl0ZXIgPSBzaWxrX1JTSElGVCggZnJh
bWVfbGVuZ3RoLCBMT0cyX1NIRUxMX0NPREVDX0ZSQU1FX0xFTkdUSCApOwogICAgIGlmKCBpdGVy
ICogU0hFTExfQ09ERUNfRlJBTUVfTEVOR1RIIDwgZnJhbWVfbGVuZ3RoICkgewotICAgICAgICBz
aWxrX2Fzc2VydCggZnJhbWVfbGVuZ3RoID09IDEyICogMTAgKTsgLyogTWFrZSBzdXJlIG9ubHkg
aGFwcGVucyBmb3IgMTAgbXMgQCAxMiBrSHogKi8KKyAgICAgICAgY2VsdF9hc3NlcnQoIGZyYW1l
X2xlbmd0aCA9PSAxMiAqIDEwICk7IC8qIE1ha2Ugc3VyZSBvbmx5IGhhcHBlbnMgZm9yIDEwIG1z
IEAgMTIga0h6ICovCiAgICAgICAgIGl0ZXIrKzsKICAgICAgICAgc2lsa19tZW1zZXQoICZwdWxz
ZXNbIGZyYW1lX2xlbmd0aCBdLCAwLCBTSEVMTF9DT0RFQ19GUkFNRV9MRU5HVEggKiBzaXplb2Yo
b3B1c19pbnQ4KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2FwcGx5X3NpbmVfd2lu
ZG93X0ZJWC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2FwcGx5X3NpbmVfd2luZG93X0ZJWC5jCmluZGV4IDQ1MDJi
NzEzMGU5NzBlNjU3ZmY0NDU4N2YxZjNiZjRiNjgxNzYwNzYuLjAzZTA4OGE2ZGU5OTg3MzgxMTI0
NjhhZjY5MWNmMmVlYmI4MWJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9hcHBseV9zaW5lX3dp
bmRvd19GSVguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvYXBwbHlfc2luZV93aW5kb3dfRklYLmMKQEAgLTU3
LDE1ICs1NywxNSBAQCB2b2lkIHNpbGtfYXBwbHlfc2luZV93aW5kb3coCiAgICAgb3B1c19pbnQg
ICBrLCBmX1ExNiwgY19RMTY7CiAgICAgb3B1c19pbnQzMiBTMF9RMTYsIFMxX1ExNjsKIAotICAg
IHNpbGtfYXNzZXJ0KCB3aW5fdHlwZSA9PSAxIHx8IHdpbl90eXBlID09IDIgKTsKKyAgICBjZWx0
X2Fzc2VydCggd2luX3R5cGUgPT0gMSB8fCB3aW5fdHlwZSA9PSAyICk7CiAKICAgICAvKiBMZW5n
dGggbXVzdCBiZSBpbiBhIHJhbmdlIGZyb20gMTYgdG8gMTIwIGFuZCBhIG11bHRpcGxlIG9mIDQg
Ki8KLSAgICBzaWxrX2Fzc2VydCggbGVuZ3RoID49IDE2ICYmIGxlbmd0aCA8PSAxMjAgKTsKLSAg
ICBzaWxrX2Fzc2VydCggKCBsZW5ndGggJiAzICkgPT0gMCApOworICAgIGNlbHRfYXNzZXJ0KCBs
ZW5ndGggPj0gMTYgJiYgbGVuZ3RoIDw9IDEyMCApOworICAgIGNlbHRfYXNzZXJ0KCAoIGxlbmd0
aCAmIDMgKSA9PSAwICk7CiAKICAgICAvKiBGcmVxdWVuY3kgKi8KICAgICBrID0gKCBsZW5ndGgg
Pj4gMiApIC0gNDsKLSAgICBzaWxrX2Fzc2VydCggayA+PSAwICYmIGsgPD0gMjYgKTsKKyAgICBj
ZWx0X2Fzc2VydCggayA+PSAwICYmIGsgPD0gMjYgKTsKICAgICBmX1ExNiA9IChvcHVzX2ludClm
cmVxX3RhYmxlX1ExNlsgayBdOwogCiAgICAgLyogRmFjdG9yIHVzZWQgZm9yIGNvc2luZSBhcHBy
b3hpbWF0aW9uICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvYnVyZ19tb2RpZmllZF9GSVguYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9maXhlZC9idXJnX21vZGlmaWVkX0ZJWC5jCmluZGV4IDgwZWRiZGZhOGE2NTE0MDg0OGMy
ZTg5MDMxOTBiY2Q4NWE1ZjkwYjcuLjI3NGQ0YjI4ZTExMjU5NzcxYzZkYTQ3ZjQyM2I2M2ZmOTBm
ZWE0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9idXJnX21vZGlmaWVkX0ZJWC5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9maXhlZC9idXJnX21vZGlmaWVkX0ZJWC5jCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgc2lsa19i
dXJnX21vZGlmaWVkX2MoCiAgICAgb3B1c19pbnQzMiAgICAgICB4Y29yclsgU0lMS19NQVhfT1JE
RVJfTFBDIF07CiAgICAgb3B1c19pbnQ2NCAgICAgICBDMF82NDsKIAotICAgIHNpbGtfYXNzZXJ0
KCBzdWJmcl9sZW5ndGggKiBuYl9zdWJmciA8PSBNQVhfRlJBTUVfU0laRSApOworICAgIGNlbHRf
YXNzZXJ0KCBzdWJmcl9sZW5ndGggKiBuYl9zdWJmciA8PSBNQVhfRlJBTUVfU0laRSApOwogCiAg
ICAgLyogQ29tcHV0ZSBhdXRvY29ycmVsYXRpb25zLCBhZGRlZCBvdmVyIHN1YmZyYW1lcyAqLwog
ICAgIEMwXzY0ID0gc2lsa19pbm5lcl9wcm9kMTZfYWxpZ25lZF82NCggeCwgeCwgc3ViZnJfbGVu
Z3RoKm5iX3N1YmZyLCBhcmNoICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZW5jb2RlX2ZyYW1l
X0ZJWC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zaWxrL2ZpeGVkL2VuY29kZV9mcmFtZV9GSVguYwppbmRleCBmNmVlODEzYjk3ZmE1
NjRkMzNmOTY0OGUwODBmOTg0MTU5Yzk0NGMzLi5hMDJiZjg3ZGJiMTg0NjZjZmYzYzdmMTZmMGFk
YjA0ZDlmOTA2ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZW5jb2RlX2ZyYW1lX0ZJWC5jCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9maXhlZC9lbmNvZGVfZnJhbWVfRklYLmMKQEAgLTI2Miw3ICsyNjIsNyBAQCBvcHVz
X2ludCBzaWxrX2VuY29kZV9mcmFtZV9GSVgoCiAgICAgICAgICAgICAgICAgaWYoIGZvdW5kX2xv
d2VyICYmICggZ2FpbnNJRCA9PSBnYWluc0lEX2xvd2VyIHx8IG5CaXRzID4gbWF4Qml0cyApICkg
ewogICAgICAgICAgICAgICAgICAgICAvKiBSZXN0b3JlIG91dHB1dCBzdGF0ZSBmcm9tIGVhcmxp
ZXIgaXRlcmF0aW9uIHRoYXQgZGlkIG1lZXQgdGhlIGJpdHJhdGUgYnVkZ2V0ICovCiAgICAgICAg
ICAgICAgICAgICAgIHNpbGtfbWVtY3B5KCBwc1JhbmdlRW5jLCAmc1JhbmdlRW5jX2NvcHkyLCBz
aXplb2YoIGVjX2VuYyApICk7Ci0gICAgICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBzUmFu
Z2VFbmNfY29weTIub2ZmcyA8PSAxMjc1ICk7CisgICAgICAgICAgICAgICAgICAgIGNlbHRfYXNz
ZXJ0KCBzUmFuZ2VFbmNfY29weTIub2ZmcyA8PSAxMjc1ICk7CiAgICAgICAgICAgICAgICAgICAg
IHNpbGtfbWVtY3B5KCBwc1JhbmdlRW5jLT5idWYsIGVjX2J1Zl9jb3B5LCBzUmFuZ2VFbmNfY29w
eTIub2ZmcyApOwogICAgICAgICAgICAgICAgICAgICBzaWxrX21lbWNweSggJnBzRW5jLT5zQ21u
LnNOU1EsICZzTlNRX2NvcHkyLCBzaXplb2YoIHNpbGtfbnNxX3N0YXRlICkgKTsKICAgICAgICAg
ICAgICAgICAgICAgcHNFbmMtPnNTaGFwZS5MYXN0R2FpbkluZGV4ID0gTGFzdEdhaW5JbmRleF9j
b3B5MjsKQEAgLTI5MCw3ICsyOTAsNyBAQCBvcHVzX2ludCBzaWxrX2VuY29kZV9mcmFtZV9GSVgo
CiAgICAgICAgICAgICAgICAgICAgIGdhaW5zSURfbG93ZXIgPSBnYWluc0lEOwogICAgICAgICAg
ICAgICAgICAgICAvKiBDb3B5IHBhcnQgb2YgdGhlIG91dHB1dCBzdGF0ZSAqLwogICAgICAgICAg
ICAgICAgICAgICBzaWxrX21lbWNweSggJnNSYW5nZUVuY19jb3B5MiwgcHNSYW5nZUVuYywgc2l6
ZW9mKCBlY19lbmMgKSApOwotICAgICAgICAgICAgICAgICAgICBzaWxrX2Fzc2VydCggcHNSYW5n
ZUVuYy0+b2ZmcyA8PSAxMjc1ICk7CisgICAgICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBw
c1JhbmdlRW5jLT5vZmZzIDw9IDEyNzUgKTsKICAgICAgICAgICAgICAgICAgICAgc2lsa19tZW1j
cHkoIGVjX2J1Zl9jb3B5LCBwc1JhbmdlRW5jLT5idWYsIHBzUmFuZ2VFbmMtPm9mZnMgKTsKICAg
ICAgICAgICAgICAgICAgICAgc2lsa19tZW1jcHkoICZzTlNRX2NvcHkyLCAmcHNFbmMtPnNDbW4u
c05TUSwgc2l6ZW9mKCBzaWxrX25zcV9zdGF0ZSApICk7CiAgICAgICAgICAgICAgICAgICAgIExh
c3RHYWluSW5kZXhfY29weTIgPSBwc0VuYy0+c1NoYXBlLkxhc3RHYWluSW5kZXg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NpbGsvZml4ZWQvZmluZF9MUENfRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZmluZF9MUENfRklYLmMK
aW5kZXggZTU1YjYzYWMzMjlhMjE0ZGM1YWM5ZmY0MDg5Mzk0M2UzM2FkMDgzZC4uYzc2MmEwZjJh
MmVkNDM5NGEyNWYxNDNiN2Y1ZTE4NjY4YWZkNTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2Zp
bmRfTFBDX0ZJWC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5kX0xQQ19GSVguYwpAQCAtMTQ2LDYgKzE0
Niw2IEBAIHZvaWQgc2lsa19maW5kX0xQQ19GSVgoCiAgICAgICAgIHNpbGtfQTJOTFNGKCBOTFNG
X1ExNSwgYV9RMTYsIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyICk7CiAgICAgfQogCi0gICAgc2ls
a19hc3NlcnQoIHBzRW5jQy0+aW5kaWNlcy5OTFNGSW50ZXJwQ29lZl9RMiA9PSA0IHx8ICggcHNF
bmNDLT51c2VJbnRlcnBvbGF0ZWROTFNGcyAmJiAhcHNFbmNDLT5maXJzdF9mcmFtZV9hZnRlcl9y
ZXNldCAmJiBwc0VuY0MtPm5iX3N1YmZyID09IE1BWF9OQl9TVUJGUiApICk7CisgICAgY2VsdF9h
c3NlcnQoIHBzRW5jQy0+aW5kaWNlcy5OTFNGSW50ZXJwQ29lZl9RMiA9PSA0IHx8ICggcHNFbmND
LT51c2VJbnRlcnBvbGF0ZWROTFNGcyAmJiAhcHNFbmNDLT5maXJzdF9mcmFtZV9hZnRlcl9yZXNl
dCAmJiBwc0VuY0MtPm5iX3N1YmZyID09IE1BWF9OQl9TVUJGUiApICk7CiAgICAgUkVTVE9SRV9T
VEFDSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5kX3BpdGNoX2xhZ3NfRklYLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZml4ZWQvZmluZF9waXRjaF9sYWdzX0ZJWC5jCmluZGV4IDkzMDNlOWRiMWYzMzhjY2MxNzcx
ZTkwY2I2YjUzYzA1ZTYwNTQ3ZGIuLjZjMzM3OWYyYmIwNTc5YzQwMjBlMjk1YzNlZTVhYWFjYTMx
MWJiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5kX3BpdGNoX2xhZ3NfRklYLmMKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
aWxrL2ZpeGVkL2ZpbmRfcGl0Y2hfbGFnc19GSVguYwpAQCAtNTksNyArNTksNyBAQCB2b2lkIHNp
bGtfZmluZF9waXRjaF9sYWdzX0ZJWCgKICAgICBidWZfbGVuID0gcHNFbmMtPnNDbW4ubGFfcGl0
Y2ggKyBwc0VuYy0+c0Ntbi5mcmFtZV9sZW5ndGggKyBwc0VuYy0+c0Ntbi5sdHBfbWVtX2xlbmd0
aDsKIAogICAgIC8qIFNhZmV0eSBjaGVjayAqLwotICAgIHNpbGtfYXNzZXJ0KCBidWZfbGVuID49
IHBzRW5jLT5zQ21uLnBpdGNoX0xQQ193aW5fbGVuZ3RoICk7CisgICAgY2VsdF9hc3NlcnQoIGJ1
Zl9sZW4gPj0gcHNFbmMtPnNDbW4ucGl0Y2hfTFBDX3dpbl9sZW5ndGggKTsKIAogICAgIC8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgIC8qIEVzdGltYXRlIExQQyBB
UiBjb2VmZmljaWVudHMgICAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2ZpbmRfcHJlZF9j
b2Vmc19GSVguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9maXhlZC9maW5kX3ByZWRfY29lZnNfRklYLmMKaW5kZXggMjRjNmFh
YjNhNzdjOTVlMWM5MDQ2NmUzY2ZiMTMxZTUyYjgxZTEwNC4uNjA2ZDg2MzM0NzYwYzAwMDE0NWU4
YzMyMjIwMjE2NWI4NjlmMTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL2ZpbmRfcHJlZF9jb2Vm
c19GSVguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvZmluZF9wcmVkX2NvZWZzX0ZJWC5jCkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgc2lsa19maW5kX3ByZWRfY29lZnNfRklYKAogICAgICAgICAvKioqKioqKioq
Ki8KICAgICAgICAgLyogVk9JQ0VEICovCiAgICAgICAgIC8qKioqKioqKioqLwotICAgICAgICBz
aWxrX2Fzc2VydCggcHNFbmMtPnNDbW4ubHRwX21lbV9sZW5ndGggLSBwc0VuYy0+c0Ntbi5wcmVk
aWN0TFBDT3JkZXIgPj0gcHNFbmNDdHJsLT5waXRjaExbIDAgXSArIExUUF9PUkRFUiAvIDIgKTsK
KyAgICAgICAgY2VsdF9hc3NlcnQoIHBzRW5jLT5zQ21uLmx0cF9tZW1fbGVuZ3RoIC0gcHNFbmMt
PnNDbW4ucHJlZGljdExQQ09yZGVyID49IHBzRW5jQ3RybC0+cGl0Y2hMWyAwIF0gKyBMVFBfT1JE
RVIgLyAyICk7CiAKICAgICAgICAgQUxMT0MoIHhYTFRQX1ExNywgcHNFbmMtPnNDbW4ubmJfc3Vi
ZnIgKiBMVFBfT1JERVIsIG9wdXNfaW50MzIgKTsKICAgICAgICAgQUxMT0MoIFhYTFRQX1ExNywg
cHNFbmMtPnNDbW4ubmJfc3ViZnIgKiBMVFBfT1JERVIgKiBMVFBfT1JERVIsIG9wdXNfaW50MzIg
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9taXBzL3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklY
X21pcHNyMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL21pcHMvd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhfbWlw
c3IxLmgKaW5kZXggZmNiZDk2Yzg4ZDk4YWFhMDViM2U0YTVjOTU2ZTJlYWIwOWI2YmM0NS4uNjZl
YjJlZDI2ZDExZWJiOTc4ZTQzOGU1MmFlZWU1YjM2MTcxNmYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zp
eGVkL21pcHMvd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhfbWlwc3IxLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zp
eGVkL21pcHMvd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhfbWlwc3IxLmgKQEAgLTQxLDE1ICs0
MSwxNCBAQCBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICNkZWZpbmUgUVMgIDE0CiAKIC8q
IEF1dG9jb3JyZWxhdGlvbnMgZm9yIGEgd2FycGVkIGZyZXF1ZW5jeSBheGlzICovCi0jZGVmaW5l
IE9WRVJSSURFX3NpbGtfd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVgKLXZvaWQgc2lsa193YXJw
ZWRfYXV0b2NvcnJlbGF0aW9uX0ZJWCgKKyNkZWZpbmUgT1ZFUlJJREVfc2lsa193YXJwZWRfYXV0
b2NvcnJlbGF0aW9uX0ZJWF9jCit2b2lkIHNpbGtfd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhf
YygKICAgICAgICAgICBvcHVzX2ludDMyICAgICAgICAgICAgICAgICpjb3JyLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAgIFJlc3VsdCBbb3JkZXIgKyAxXSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAg
ICAgICAgIG9wdXNfaW50ICAgICAgICAgICAgICAgICAgKnNjYWxlLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIE8gICAgU2NhbGluZyBvZiB0aGUgY29ycmVsYXRpb24gdmVjdG9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgY29uc3Qg
b3B1c19pbnQxNiAgICAgICAgICAgICAgICAqaW5wdXQsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSSAgICBJbnB1dCBkYXRhIHRvIGNvcnJlbGF0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICBjb25zdCBvcHVzX2lu
dCAgICAgICAgICAgICAgICAgIHdhcnBpbmdfUTE2LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBJICAgIFdhcnBpbmcgY29lZmZpY2llbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIGNvbnN0IG9wdXNfaW50ICAgICAg
ICAgICAgICAgICAgbGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkg
ICAgTGVuZ3RoIG9mIGlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAg
ICAgICBvcmRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBDb3Jy
ZWxhdGlvbiBvcmRlciAoZXZlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFJ1bi10aW1lIGFy
Y2hpdGVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICAgICAgb3JkZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgQ29ycmVsYXRpb24gb3JkZXIg
KGV2ZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCiApCiB7CiAgICAgb3B1c19pbnQgICBuLCBpLCBsc2g7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4
ZWQvcGl0Y2hfYW5hbHlzaXNfY29yZV9GSVguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9waXRjaF9hbmFseXNpc19j
b3JlX0ZJWC5jCmluZGV4IDhkZjEwOWU2Y2Y1MTEwN2U0Nzc2YzcwM2UyYTU2MmQ4OWI4MjZmZWYu
LjE0NzI5MDQ2ZDI5MzYwYzNlOTkzN2I2MWEwODhhZjc5OTQ5YTU1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9maXhlZC9waXRjaF9hbmFseXNpc19jb3JlX0ZJWC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9waXRjaF9h
bmFseXNpc19jb3JlX0ZJWC5jCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBvcHVzX2ludCBzaWxrX3Bp
dGNoX2FuYWx5c2lzX2NvcmUoICAgICAgICAgICAgICAgICAgLyogTyAgICBWb2ljaW5nIGVzdGlt
YXRlOiAwCiAgICAgU0FWRV9TVEFDSzsKIAogICAgIC8qIENoZWNrIGZvciB2YWxpZCBzYW1wbGlu
ZyBmcmVxdWVuY3kgKi8KLSAgICBzaWxrX2Fzc2VydCggRnNfa0h6ID09IDggfHwgRnNfa0h6ID09
IDEyIHx8IEZzX2tIeiA9PSAxNiApOworICAgIGNlbHRfYXNzZXJ0KCBGc19rSHogPT0gOCB8fCBG
c19rSHogPT0gMTIgfHwgRnNfa0h6ID09IDE2ICk7CiAKICAgICAvKiBDaGVjayBmb3IgdmFsaWQg
Y29tcGxleGl0eSBzZXR0aW5nICovCi0gICAgc2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPj0gU0lM
S19QRV9NSU5fQ09NUExFWCApOwotICAgIHNpbGtfYXNzZXJ0KCBjb21wbGV4aXR5IDw9IFNJTEtf
UEVfTUFYX0NPTVBMRVggKTsKKyAgICBjZWx0X2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BF
X01JTl9DT01QTEVYICk7CisgICAgY2VsdF9hc3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9N
QVhfQ09NUExFWCApOwogCiAgICAgc2lsa19hc3NlcnQoIHNlYXJjaF90aHJlczFfUTE2ID49IDAg
JiYgc2VhcmNoX3RocmVzMV9RMTYgPD0gKDE8PDE2KSApOwogICAgIHNpbGtfYXNzZXJ0KCBzZWFy
Y2hfdGhyZXMyX1ExMyA+PSAwICYmIHNlYXJjaF90aHJlczJfUTEzIDw9ICgxPDwxMykgKTsKQEAg
LTE2NCw3ICsxNjQsNyBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmUoICAgICAg
ICAgICAgICAgICAgLyogTyAgICBWb2ljaW5nIGVzdGltYXRlOiAwCiAgICAgICAgIHNpbGtfcmVz
YW1wbGVyX2Rvd24yXzMoIGZpbHRfc3RhdGUsIGZyYW1lXzhrSHpfYnVmLCBmcmFtZSwgZnJhbWVf
bGVuZ3RoICk7CiAgICAgICAgIGZyYW1lXzhrSHogPSBmcmFtZV84a0h6X2J1ZjsKICAgICB9IGVs
c2UgewotICAgICAgICBzaWxrX2Fzc2VydCggRnNfa0h6ID09IDggKTsKKyAgICAgICAgY2VsdF9h
c3NlcnQoIEZzX2tIeiA9PSA4ICk7CiAgICAgICAgIGZyYW1lXzhrSHogPSBmcmFtZTsKICAgICB9
CiAKQEAgLTE4OCwxNCArMTg4LDE0IEBAIG9wdXNfaW50IHNpbGtfcGl0Y2hfYW5hbHlzaXNfY29y
ZSggICAgICAgICAgICAgICAgICAvKiBPICAgIFZvaWNpbmcgZXN0aW1hdGU6IDAKICAgICB0YXJn
ZXRfcHRyID0gJmZyYW1lXzRrSHpbIHNpbGtfTFNISUZUKCBTRl9MRU5HVEhfNEtIWiwgMiApIF07
CiAgICAgZm9yKCBrID0gMDsgayA8IG5iX3N1YmZyID4+IDE7IGsrKyApIHsKICAgICAgICAgLyog
Q2hlY2sgdGhhdCB3ZSBhcmUgd2l0aGluIHJhbmdlIG9mIHRoZSBhcnJheSAqLwotICAgICAgICBz
aWxrX2Fzc2VydCggdGFyZ2V0X3B0ciA+PSBmcmFtZV80a0h6ICk7Ci0gICAgICAgIHNpbGtfYXNz
ZXJ0KCB0YXJnZXRfcHRyICsgU0ZfTEVOR1RIXzhLSFogPD0gZnJhbWVfNGtIeiArIGZyYW1lX2xl
bmd0aF80a0h6ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCB0YXJnZXRfcHRyID49IGZyYW1lXzRr
SHogKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIHRhcmdldF9wdHIgKyBTRl9MRU5HVEhfOEtIWiA8
PSBmcmFtZV80a0h6ICsgZnJhbWVfbGVuZ3RoXzRrSHogKTsKIAogICAgICAgICBiYXNpc19wdHIg
PSB0YXJnZXRfcHRyIC0gTUlOX0xBR180S0haOwogCiAgICAgICAgIC8qIENoZWNrIHRoYXQgd2Ug
YXJlIHdpdGhpbiByYW5nZSBvZiB0aGUgYXJyYXkgKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIGJh
c2lzX3B0ciA+PSBmcmFtZV80a0h6ICk7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBiYXNpc19wdHIg
KyBTRl9MRU5HVEhfOEtIWiA8PSBmcmFtZV80a0h6ICsgZnJhbWVfbGVuZ3RoXzRrSHogKTsKKyAg
ICAgICAgY2VsdF9hc3NlcnQoIGJhc2lzX3B0ciA+PSBmcmFtZV80a0h6ICk7CisgICAgICAgIGNl
bHRfYXNzZXJ0KCBiYXNpc19wdHIgKyBTRl9MRU5HVEhfOEtIWiA8PSBmcmFtZV80a0h6ICsgZnJh
bWVfbGVuZ3RoXzRrSHogKTsKIAogICAgICAgICBjZWx0X3BpdGNoX3hjb3JyKCB0YXJnZXRfcHRy
LCB0YXJnZXRfcHRyIC0gTUFYX0xBR180S0haLCB4Y29ycjMyLCBTRl9MRU5HVEhfOEtIWiwgTUFY
X0xBR180S0haIC0gTUlOX0xBR180S0haICsgMSwgYXJjaCApOwogCkBAIC0yNDksNyArMjQ5LDcg
QEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNpc19jb3JlKCAgICAgICAgICAgICAgICAgIC8q
IE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMAogCiAgICAgLyogU29ydCAqLwogICAgIGxlbmd0aF9k
X3NyY2ggPSBzaWxrX0FERF9MU0hJRlQzMiggNCwgY29tcGxleGl0eSwgMSApOwotICAgIHNpbGtf
YXNzZXJ0KCAzICogbGVuZ3RoX2Rfc3JjaCA8PSBQRV9EX1NSQ0hfTEVOR1RIICk7CisgICAgY2Vs
dF9hc3NlcnQoIDMgKiBsZW5ndGhfZF9zcmNoIDw9IFBFX0RfU1JDSF9MRU5HVEggKTsKICAgICBz
aWxrX2luc2VydGlvbl9zb3J0X2RlY3JlYXNpbmdfaW50MTYoIEMsIGRfc3JjaCwgQ1NUUklERV80
S0haLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX2Rf
c3JjaCApOwogCkBAIC0yNzQsNyArMjc0LDcgQEAgb3B1c19pbnQgc2lsa19waXRjaF9hbmFseXNp
c19jb3JlKCAgICAgICAgICAgICAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMAogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgc2lsa19hc3NlcnQoIGxlbmd0
aF9kX3NyY2ggPiAwICk7CisgICAgY2VsdF9hc3NlcnQoIGxlbmd0aF9kX3NyY2ggPiAwICk7CiAK
ICAgICBBTExPQyggZF9jb21wLCBEX0NPTVBfU1RSSURFLCBvcHVzX2ludDE2ICk7CiAgICAgZm9y
KCBpID0gRF9DT01QX01JTjsgaSA8IERfQ09NUF9NQVg7IGkrKyApIHsKQEAgLTMyNSw4ICszMjUs
OCBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmUoICAgICAgICAgICAgICAgICAg
LyogTyAgICBWb2ljaW5nIGVzdGltYXRlOiAwCiAgICAgZm9yKCBrID0gMDsgayA8IG5iX3N1YmZy
OyBrKysgKSB7CiAKICAgICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBhcmUgd2l0aGluIHJhbmdlIG9m
IHRoZSBhcnJheSAqLwotICAgICAgICBzaWxrX2Fzc2VydCggdGFyZ2V0X3B0ciA+PSBmcmFtZV84
a0h6ICk7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCB0YXJnZXRfcHRyICsgU0ZfTEVOR1RIXzhLSFog
PD0gZnJhbWVfOGtIeiArIGZyYW1lX2xlbmd0aF84a0h6ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0
KCB0YXJnZXRfcHRyID49IGZyYW1lXzhrSHogKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIHRhcmdl
dF9wdHIgKyBTRl9MRU5HVEhfOEtIWiA8PSBmcmFtZV84a0h6ICsgZnJhbWVfbGVuZ3RoXzhrSHog
KTsKIAogICAgICAgICBlbmVyZ3lfdGFyZ2V0ID0gc2lsa19BREQzMiggc2lsa19pbm5lcl9wcm9k
X2FsaWduZWQoIHRhcmdldF9wdHIsIHRhcmdldF9wdHIsIFNGX0xFTkdUSF84S0haLCBhcmNoICks
IDEgKTsKICAgICAgICAgZm9yKCBqID0gMDsgaiA8IGxlbmd0aF9kX2NvbXA7IGorKyApIHsKQEAg
LTU1MCw3ICs1NTAsNyBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmUoICAgICAg
ICAgICAgICAgICAgLyogTyAgICBWb2ljaW5nIGVzdGltYXRlOiAwCiAgICAgICAgICpsYWdJbmRl
eCA9IChvcHVzX2ludDE2KSggbGFnIC0gTUlOX0xBR184S0haICk7CiAgICAgICAgICpjb250b3Vy
SW5kZXggPSAob3B1c19pbnQ4KUNCaW1heDsKICAgICB9Ci0gICAgc2lsa19hc3NlcnQoICpsYWdJ
bmRleCA+PSAwICk7CisgICAgY2VsdF9hc3NlcnQoICpsYWdJbmRleCA+PSAwICk7CiAgICAgLyog
cmV0dXJuIGFzIHZvaWNlZCAqLwogICAgIFJFU1RPUkVfU1RBQ0s7CiAgICAgcmV0dXJuIDA7CkBA
IC01ODcsOCArNTg3LDggQEAgc3RhdGljIHZvaWQgc2lsa19QX0FuYV9jYWxjX2NvcnJfc3QzKAog
ICAgIGNvbnN0IG9wdXNfaW50OCAqTGFnX3JhbmdlX3B0ciwgKkxhZ19DQl9wdHI7CiAgICAgU0FW
RV9TVEFDSzsKIAotICAgIHNpbGtfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtfUEVfTUlOX0NP
TVBMRVggKTsKLSAgICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BFX01BWF9DT01Q
TEVYICk7CisgICAgY2VsdF9hc3NlcnQoIGNvbXBsZXhpdHkgPj0gU0lMS19QRV9NSU5fQ09NUExF
WCApOworICAgIGNlbHRfYXNzZXJ0KCBjb21wbGV4aXR5IDw9IFNJTEtfUEVfTUFYX0NPTVBMRVgg
KTsKIAogICAgIGlmKCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIgKSB7CiAgICAgICAgIExh
Z19yYW5nZV9wdHIgPSAmc2lsa19MYWdfcmFuZ2Vfc3RhZ2UzWyBjb21wbGV4aXR5IF1bIDAgXVsg
MCBdOwpAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyB2b2lkIHNpbGtfUF9BbmFfY2FsY19jb3Jy
X3N0MygKICAgICAgICAgbmJfY2JrX3NlYXJjaCA9IHNpbGtfbmJfY2JrX3NlYXJjaHNfc3RhZ2Uz
WyBjb21wbGV4aXR5IF07CiAgICAgICAgIGNia19zaXplICAgICAgPSBQRV9OQl9DQktTX1NUQUdF
M19NQVg7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIG5iX3N1YmZyID09IFBF
X01BWF9OQl9TVUJGUiA+PiAxKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIG5iX3N1YmZyID09IFBF
X01BWF9OQl9TVUJGUiA+PiAxKTsKICAgICAgICAgTGFnX3JhbmdlX3B0ciA9ICZzaWxrX0xhZ19y
YW5nZV9zdGFnZTNfMTBfbXNbIDAgXVsgMCBdOwogICAgICAgICBMYWdfQ0JfcHRyICAgID0gJnNp
bGtfQ0JfbGFnc19zdGFnZTNfMTBfbXNbIDAgXVsgMCBdOwogICAgICAgICBuYl9jYmtfc2VhcmNo
ID0gUEVfTkJfQ0JLU19TVEFHRTNfMTBNUzsKQEAgLTYxMiw3ICs2MTIsNyBAQCBzdGF0aWMgdm9p
ZCBzaWxrX1BfQW5hX2NhbGNfY29ycl9zdDMoCiAgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgY29y
cmVsYXRpb25zIGZvciBlYWNoIHN1YmZyYW1lICovCiAgICAgICAgIGxhZ19sb3cgID0gbWF0cml4
X3B0ciggTGFnX3JhbmdlX3B0ciwgaywgMCwgMiApOwogICAgICAgICBsYWdfaGlnaCA9IG1hdHJp
eF9wdHIoIExhZ19yYW5nZV9wdHIsIGssIDEsIDIgKTsKLSAgICAgICAgc2lsa19hc3NlcnQobGFn
X2hpZ2gtbGFnX2xvdysxIDw9IFNDUkFUQ0hfU0laRSk7CisgICAgICAgIGNlbHRfYXNzZXJ0KGxh
Z19oaWdoLWxhZ19sb3crMSA8PSBTQ1JBVENIX1NJWkUpOwogICAgICAgICBjZWx0X3BpdGNoX3hj
b3JyKCB0YXJnZXRfcHRyLCB0YXJnZXRfcHRyIC0gc3RhcnRfbGFnIC0gbGFnX2hpZ2gsIHhjb3Jy
MzIsIHNmX2xlbmd0aCwgbGFnX2hpZ2ggLSBsYWdfbG93ICsgMSwgYXJjaCApOwogICAgICAgICBm
b3IoIGogPSBsYWdfbG93OyBqIDw9IGxhZ19oaWdoOyBqKysgKSB7CiAgICAgICAgICAgICBzaWxr
X2Fzc2VydCggbGFnX2NvdW50ZXIgPCBTQ1JBVENIX1NJWkUgKTsKQEAgLTY1OSw4ICs2NTksOCBA
QCBzdGF0aWMgdm9pZCBzaWxrX1BfQW5hX2NhbGNfZW5lcmd5X3N0MygKICAgICBjb25zdCBvcHVz
X2ludDggKkxhZ19yYW5nZV9wdHIsICpMYWdfQ0JfcHRyOwogICAgIFNBVkVfU1RBQ0s7CiAKLSAg
ICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BFX01JTl9DT01QTEVYICk7Ci0gICAg
c2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9NQVhfQ09NUExFWCApOworICAgIGNl
bHRfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtfUEVfTUlOX0NPTVBMRVggKTsKKyAgICBjZWx0
X2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BFX01BWF9DT01QTEVYICk7CiAKICAgICBpZigg
bmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSICkgewogICAgICAgICBMYWdfcmFuZ2VfcHRyID0g
JnNpbGtfTGFnX3JhbmdlX3N0YWdlM1sgY29tcGxleGl0eSBdWyAwIF1bIDAgXTsKQEAgLTY2OCw3
ICs2NjgsNyBAQCBzdGF0aWMgdm9pZCBzaWxrX1BfQW5hX2NhbGNfZW5lcmd5X3N0MygKICAgICAg
ICAgbmJfY2JrX3NlYXJjaCA9IHNpbGtfbmJfY2JrX3NlYXJjaHNfc3RhZ2UzWyBjb21wbGV4aXR5
IF07CiAgICAgICAgIGNia19zaXplICAgICAgPSBQRV9OQl9DQktTX1NUQUdFM19NQVg7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgc2lsa19hc3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJG
UiA+PiAxKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIG5iX3N1YmZyID09IFBFX01BWF9OQl9TVUJG
UiA+PiAxKTsKICAgICAgICAgTGFnX3JhbmdlX3B0ciA9ICZzaWxrX0xhZ19yYW5nZV9zdGFnZTNf
MTBfbXNbIDAgXVsgMCBdOwogICAgICAgICBMYWdfQ0JfcHRyICAgID0gJnNpbGtfQ0JfbGFnc19z
dGFnZTNfMTBfbXNbIDAgXVsgMCBdOwogICAgICAgICBuYl9jYmtfc2VhcmNoID0gUEVfTkJfQ0JL
U19TVEFHRTNfMTBNUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC9yZXNpZHVhbF9lbmVyZ3kxNl9G
SVguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay9maXhlZC9yZXNpZHVhbF9lbmVyZ3kxNl9GSVguYwppbmRleCBlYmZmYjJhNjZm
OWFiYzQ0OGZmNzUyODJmOThkMmNlYjc3MTU4YzZkLi43ZjEzMGYzZDNkNGYyZmE1ZTVjMmNiYWZm
NDk4MmMxODc5NjVhY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvcmVzaWR1YWxfZW5lcmd5MTZf
RklYLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3Jlc2lkdWFsX2VuZXJneTE2X0ZJWC5jCkBAIC00NywxMCAr
NDcsMTAgQEAgb3B1c19pbnQzMiBzaWxrX3Jlc2lkdWFsX2VuZXJneTE2X2NvdmFyX0ZJWCgKICAg
ICBjb25zdCBvcHVzX2ludDMyICpwUm93OwogCiAgICAgLyogU2FmZXR5IGNoZWNrcyAqLwotICAg
IHNpbGtfYXNzZXJ0KCBEID49ICAwICk7Ci0gICAgc2lsa19hc3NlcnQoIEQgPD0gMTYgKTsKLSAg
ICBzaWxrX2Fzc2VydCggY1EgPiAgMCApOwotICAgIHNpbGtfYXNzZXJ0KCBjUSA8IDE2ICk7Cisg
ICAgY2VsdF9hc3NlcnQoIEQgPj0gIDAgKTsKKyAgICBjZWx0X2Fzc2VydCggRCA8PSAxNiApOwor
ICAgIGNlbHRfYXNzZXJ0KCBjUSA+ICAwICk7CisgICAgY2VsdF9hc3NlcnQoIGNRIDwgMTYgKTsK
IAogICAgIGxzaGlmdHMgPSAxNiAtIGNROwogICAgIFF4dHJhID0gbHNoaWZ0czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9maXhlZC9yZXNpZHVhbF9lbmVyZ3lfRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvcmVzaWR1YWxf
ZW5lcmd5X0ZJWC5jCmluZGV4IDQxZjc0Nzc4ZTgyZTZmM2IxOWQyMTg3NjY0MzIzOGU3YjFmNDA3
YmMuLjZjN2NhZGU5YTA3OGRjNjkzMDdlNzVhNmRlM2M4NDlhZjEyYmEzNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9maXhlZC9yZXNpZHVhbF9lbmVyZ3lfRklYLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3Jlc2lkdWFs
X2VuZXJneV9GSVguYwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIHNpbGtfcmVzaWR1YWxfZW5lcmd5
X0ZJWCgKIAogICAgIC8qIEZpbHRlciBpbnB1dCB0byBjcmVhdGUgdGhlIExQQyByZXNpZHVhbCBm
b3IgZWFjaCBmcmFtZSBoYWxmLCBhbmQgbWVhc3VyZSBzdWJmcmFtZSBlbmVyZ2llcyAqLwogICAg
IEFMTE9DKCBMUENfcmVzLCAoIE1BWF9OQl9TVUJGUiA+PiAxICkgKiBvZmZzZXQsIG9wdXNfaW50
MTYgKTsKLSAgICBzaWxrX2Fzc2VydCggKCBuYl9zdWJmciA+PiAxICkgKiAoIE1BWF9OQl9TVUJG
UiA+PiAxICkgPT0gbmJfc3ViZnIgKTsKKyAgICBjZWx0X2Fzc2VydCggKCBuYl9zdWJmciA+PiAx
ICkgKiAoIE1BWF9OQl9TVUJGUiA+PiAxICkgPT0gbmJfc3ViZnIgKTsKICAgICBmb3IoIGkgPSAw
OyBpIDwgbmJfc3ViZnIgPj4gMTsgaSsrICkgewogICAgICAgICAvKiBDYWxjdWxhdGUgaGFsZiBm
cmFtZSBMUEMgcmVzaWR1YWwgc2lnbmFsIGluY2x1ZGluZyBwcmVjZWRpbmcgc2FtcGxlcyAqLwog
ICAgICAgICBzaWxrX0xQQ19hbmFseXNpc19maWx0ZXIoIExQQ19yZXMsIHhfcHRyLCBhX1ExMlsg
aSBdLCAoIE1BWF9OQl9TVUJGUiA+PiAxICkgKiBvZmZzZXQsIExQQ19vcmRlciwgYXJjaCApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3NjaHVyNjRfRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvc2NodXI2NF9G
SVguYwppbmRleCBiMmNiMTJkOWIxNjBhMDcxNWY4OGU3MjQzOWU1YTAzNmI4NjI4YWM1Li40Yjdl
MTllYTU5Njc4MmU2NDNkNzdmMjE5ZWVjMzRmOTRmNTU4ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4
ZWQvc2NodXI2NF9GSVguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvc2NodXI2NF9GSVguYwpAQCAtNDMsNyAr
NDMsNyBAQCBvcHVzX2ludDMyIHNpbGtfc2NodXI2NCggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogTyAgICByZXR1cm5zIHJlc2lkdWFsIGVuZQogICAgIG9wdXNfaW50MzIgQ1sgU0lMS19N
QVhfT1JERVJfTFBDICsgMSBdWyAyIF07CiAgICAgb3B1c19pbnQzMiBDdG1wMV9RMzAsIEN0bXAy
X1EzMCwgcmNfdG1wX1EzMTsKIAotICAgIHNpbGtfYXNzZXJ0KCBvcmRlciA+PSAwICYmIG9yZGVy
IDw9IFNJTEtfTUFYX09SREVSX0xQQyApOworICAgIGNlbHRfYXNzZXJ0KCBvcmRlciA+PSAwICYm
IG9yZGVyIDw9IFNJTEtfTUFYX09SREVSX0xQQyApOwogCiAgICAgLyogQ2hlY2sgZm9yIGludmFs
aWQgaW5wdXQgKi8KICAgICBpZiggY1sgMCBdIDw9IDAgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4
ZWQvc2NodXJfRklYLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvc2NodXJfRklYLmMKaW5kZXggNTlkNDRhNmY3ZmU4
NThjMjFlZWJjYTMxYjZiZTQ0MzBhY2Q0ODMxOS4uMjg0MGY2YjFhYWUzZTIxNGExMmE4MTg0MDI4
YjI3MjAwNWZiNjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3NjaHVyX0ZJWC5jCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9maXhlZC9zY2h1cl9GSVguYwpAQCAtNDMsNyArNDMsNyBAQCBvcHVzX2ludDMyIHNpbGtfc2No
dXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBSZXR1cm5zIHJlc2lkdWFs
IGVuZQogICAgIG9wdXNfaW50MzIgICAgQ1sgU0lMS19NQVhfT1JERVJfTFBDICsgMSBdWyAyIF07
CiAgICAgb3B1c19pbnQzMiAgICBDdG1wMSwgQ3RtcDIsIHJjX3RtcF9RMTU7CiAKLSAgICBzaWxr
X2Fzc2VydCggb3JkZXIgPj0gMCAmJiBvcmRlciA8PSBTSUxLX01BWF9PUkRFUl9MUEMgKTsKKyAg
ICBjZWx0X2Fzc2VydCggb3JkZXIgPj0gMCAmJiBvcmRlciA8PSBTSUxLX01BWF9PUkRFUl9MUEMg
KTsKIAogICAgIC8qIEdldCBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyAqLwogICAgIGx6ID0gc2ls
a19DTFozMiggY1sgMCBdICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQvd2FycGVkX2F1dG9jb3Jy
ZWxhdGlvbl9GSVguYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC93YXJwZWRfYXV0b2NvcnJlbGF0aW9uX0ZJWC5jCmlu
ZGV4IDk5NGMyOTlhYmQxMjQwY2RiMzc1OTdlM2E4YWNhODIwN2U4OWE5NzYuLjVjNzk1NTNiYzAw
MWIxYTljZmRmOGM4YTk1ZWMwODg2MDU1N2FiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC93YXJw
ZWRfYXV0b2NvcnJlbGF0aW9uX0ZJWC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC93YXJwZWRfYXV0b2NvcnJl
bGF0aW9uX0ZJWC5jCkBAIC0zNyw2ICszNyw3IEBAIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiAKIC8qIEF1dG9jb3JyZWxhdGlvbnMgZm9yIGEgd2FycGVkIGZyZXF1ZW5jeSBheGlzICov
CisjaWZuZGVmIE9WRVJSSURFX3NpbGtfd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhfYwogdm9p
ZCBzaWxrX3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYX2MoCiAgICAgICAgICAgb3B1c19pbnQz
MiAgICAgICAgICAgICAgICAqY29yciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTyAgICBSZXN1bHQgW29yZGVyICsgMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICBvcHVzX2ludCAgICAgICAg
ICAgICAgICAgICpzY2FsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAg
IFNjYWxpbmcgb2YgdGhlIGNvcnJlbGF0aW9uIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwpAQCAtNTIsNyArNTMsNyBAQCB2b2lkIHNpbGtfd2FycGVk
X2F1dG9jb3JyZWxhdGlvbl9GSVhfYygKICAgICBvcHVzX2ludDY0IGNvcnJfUUNbICBNQVhfU0hB
UEVfTFBDX09SREVSICsgMSBdID0geyAwIH07CiAKICAgICAvKiBPcmRlciBtdXN0IGJlIGV2ZW4g
Ki8KLSAgICBzaWxrX2Fzc2VydCggKCBvcmRlciAmIDEgKSA9PSAwICk7CisgICAgY2VsdF9hc3Nl
cnQoICggb3JkZXIgJiAxICkgPT0gMCApOwogICAgIHNpbGtfYXNzZXJ0KCAyICogUVMgLSBRQyA+
PSAwICk7CiAKICAgICAvKiBMb29wIG92ZXIgc2FtcGxlcyAqLwpAQCAtODgsMyArODksNCBAQCB2
b2lkIHNpbGtfd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GSVhfYygKICAgICB9CiAgICAgc2lsa19h
c3NlcnQoIGNvcnJfUUNbIDAgXSA+PSAwICk7IC8qIElmIGJyZWFraW5nLCBkZWNyZWFzZSBRQyov
CiB9CisjZW5kaWYgLyogT1ZFUlJJREVfc2lsa193YXJwZWRfYXV0b2NvcnJlbGF0aW9uX0ZJWF9j
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQveDg2L2J1cmdfbW9kaWZpZWRfRklYX3NzZS5jIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
aWxrL2ZpeGVkL3g4Ni9idXJnX21vZGlmaWVkX0ZJWF9zc2UuYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2MzNTgzYzVmYzM3Y2NkNjg1MGRhYzFhMWRlZjE0ZWRhMjUzOWQ5Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQveDg2
L2J1cmdfbW9kaWZpZWRfRklYX3NzZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzc3ICswLDAgQEAK
LS8qIENvcHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5DCi0gICBXcml0dGVuIGJ5
IFhpYW5nTWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZwotCi0gICBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAg
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICAgYXJlIG1ldDoKLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0gICAtIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
ICBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCi0gICBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRgotICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcKLSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZkZWYg
SEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx4
bW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxzbW1pbnRyaW4u
aD4KLQotI2luY2x1ZGUgIlNpZ1Byb2NfRklYLmgiCi0jaW5jbHVkZSAiZGVmaW5lLmgiCi0jaW5j
bHVkZSAidHVuaW5nX3BhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwaXRjaC5oIgotI2luY2x1ZGUg
ImNlbHQveDg2L3g4NmNwdS5oIgotCi0jZGVmaW5lIE1BWF9GUkFNRV9TSVpFICAgICAgICAgICAg
ICAzODQgICAgICAgICAgICAgLyogc3ViZnJfbGVuZ3RoICogbmJfc3ViZnIgPSAoIDAuMDA1ICog
MTYwMDAgKyAxNiApICogNCA9IDM4NCAqLwotCi0jZGVmaW5lIFFBICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNQotI2RlZmluZSBOX0JJVFNfSEVBRF9ST09NICAgICAgICAgICAgMgotI2RlZmlu
ZSBNSU5fUlNISUZUUyAgICAgICAgICAgICAgICAgLTE2Ci0jZGVmaW5lIE1BWF9SU0hJRlRTICAg
ICAgICAgICAgICAgICAoMzIgLSBRQSkKLQotLyogQ29tcHV0ZSByZWZsZWN0aW9uIGNvZWZmaWNp
ZW50cyBmcm9tIGlucHV0IHNpZ25hbCAqLwotdm9pZCBzaWxrX2J1cmdfbW9kaWZpZWRfc3NlNF8x
KAotICAgIG9wdXNfaW50MzIgICAgICAgICAgICAgICAgICAqcmVzX25yZywgICAgICAgICAgIC8q
IE8gICAgUmVzaWR1YWwgZW5lcmd5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgICAgICAgICAgKnJlc19ucmdfUSwg
ICAgICAgICAvKiBPICAgIFJlc2lkdWFsIGVuZXJneSBRIHZhbHVlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAgICAgICAgICAgIEFf
UTE2W10sICAgICAgICAgICAgLyogTyAgICBQcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAobGVuZ3Ro
IG9yZGVyKSAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAg
ICAgICAgICB4W10sICAgICAgICAgICAgICAgIC8qIEkgICAgSW5wdXQgc2lnbmFsLCBsZW5ndGg6
IG5iX3N1YmZyICogKCBEICsgc3ViZnJfbGVuZ3RoICkgICAgICAgKi8KLSAgICBjb25zdCBvcHVz
X2ludDMyICAgICAgICAgICAgbWluSW52R2Fpbl9RMzAsICAgICAvKiBJICAgIEludmVyc2Ugb2Yg
bWF4IHByZWRpY3Rpb24gZ2FpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAg
Y29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIHN1YmZyX2xlbmd0aCwgICAgICAgLyogSSAgICBJ
bnB1dCBzaWduYWwgc3ViZnJhbWUgbGVuZ3RoIChpbmNsLiBEIHByZWNlZGluZyBzYW1wbGVzKSAg
ICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBuYl9zdWJmciwgICAgICAgICAg
IC8qIEkgICAgTnVtYmVyIG9mIHN1YmZyYW1lcyBzdGFja2VkIGluIHggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgRCwgICAgICAg
ICAgICAgICAgICAvKiBJICAgIE9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg
IGFyY2ggICAgICAgICAgICAgICAgLyogSSAgICBSdW4tdGltZSBhcmNoaXRlY3R1cmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKQotewotICAgIG9wdXNfaW50ICAg
ICAgICAgaywgbiwgcywgbHosIHJzaGlmdHMsIHJzaGlmdHNfZXh0cmEsIHJlYWNoZWRfbWF4X2dh
aW47Ci0gICAgb3B1c19pbnQzMiAgICAgICBDMCwgbnVtLCBucmcsIHJjX1EzMSwgaW52R2Fpbl9R
MzAsIEF0bXBfUUEsIEF0bXAxLCB0bXAxLCB0bXAyLCB4MSwgeDI7Ci0gICAgY29uc3Qgb3B1c19p
bnQxNiAqeF9wdHI7Ci0gICAgb3B1c19pbnQzMiAgICAgICBDX2ZpcnN0X3Jvd1sgU0lMS19NQVhf
T1JERVJfTFBDIF07Ci0gICAgb3B1c19pbnQzMiAgICAgICBDX2xhc3Rfcm93WyAgU0lMS19NQVhf
T1JERVJfTFBDIF07Ci0gICAgb3B1c19pbnQzMiAgICAgICBBZl9RQVsgICAgICAgU0lMS19NQVhf
T1JERVJfTFBDIF07Ci0gICAgb3B1c19pbnQzMiAgICAgICBDQWZbIFNJTEtfTUFYX09SREVSX0xQ
QyArIDEgXTsKLSAgICBvcHVzX2ludDMyICAgICAgIENBYlsgU0lMS19NQVhfT1JERVJfTFBDICsg
MSBdOwotICAgIG9wdXNfaW50MzIgICAgICAgeGNvcnJbIFNJTEtfTUFYX09SREVSX0xQQyBdOwot
Ci0gICAgX19tMTI4aSBGSVJTVF8zMjEwLCBMQVNUXzMyMTAsIEFUTVBfMzIxMCwgVE1QMV8zMjEw
LCBUTVAyXzMyMTAsIFQxXzMyMTAsIFQyXzMyMTAsIFBUUl8zMjEwLCBTVUJGUl8zMjEwLCBYMV8z
MjEwLCBYMl8zMjEwOwotICAgIF9fbTEyOGkgQ09OU1QxID0gX21tX3NldDFfZXBpMzIoMSk7Ci0K
LSAgICBzaWxrX2Fzc2VydCggc3ViZnJfbGVuZ3RoICogbmJfc3ViZnIgPD0gTUFYX0ZSQU1FX1NJ
WkUgKTsKLQotICAgIC8qIENvbXB1dGUgYXV0b2NvcnJlbGF0aW9ucywgYWRkZWQgb3ZlciBzdWJm
cmFtZXMgKi8KLSAgICBzaWxrX3N1bV9zcXJfc2hpZnQoICZDMCwgJnJzaGlmdHMsIHgsIG5iX3N1
YmZyICogc3ViZnJfbGVuZ3RoICk7Ci0gICAgaWYoIHJzaGlmdHMgPiBNQVhfUlNISUZUUyApIHsK
LSAgICAgICAgQzAgPSBzaWxrX0xTSElGVDMyKCBDMCwgcnNoaWZ0cyAtIE1BWF9SU0hJRlRTICk7
Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBDMCA+IDAgKTsKLSAgICAgICAgcnNoaWZ0cyA9IE1BWF9S
U0hJRlRTOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGx6ID0gc2lsa19DTFozMiggQzAgKSAtIDE7
Ci0gICAgICAgIHJzaGlmdHNfZXh0cmEgPSBOX0JJVFNfSEVBRF9ST09NIC0gbHo7Ci0gICAgICAg
IGlmKCByc2hpZnRzX2V4dHJhID4gMCApIHsKLSAgICAgICAgICAgIHJzaGlmdHNfZXh0cmEgPSBz
aWxrX21pbiggcnNoaWZ0c19leHRyYSwgTUFYX1JTSElGVFMgLSByc2hpZnRzICk7Ci0gICAgICAg
ICAgICBDMCA9IHNpbGtfUlNISUZUMzIoIEMwLCByc2hpZnRzX2V4dHJhICk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICByc2hpZnRzX2V4dHJhID0gc2lsa19tYXgoIHJzaGlmdHNfZXh0
cmEsIE1JTl9SU0hJRlRTIC0gcnNoaWZ0cyApOwotICAgICAgICAgICAgQzAgPSBzaWxrX0xTSElG
VDMyKCBDMCwgLXJzaGlmdHNfZXh0cmEgKTsKLSAgICAgICAgfQotICAgICAgICByc2hpZnRzICs9
IHJzaGlmdHNfZXh0cmE7Ci0gICAgfQotICAgIENBYlsgMCBdID0gQ0FmWyAwIF0gPSBDMCArIHNp
bGtfU01NVUwoIFNJTEtfRklYX0NPTlNUKCBGSU5EX0xQQ19DT05EX0ZBQywgMzIgKSwgQzAgKSAr
IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKC1yc2hpZnRzKSAqLwotICAg
IHNpbGtfbWVtc2V0KCBDX2ZpcnN0X3JvdywgMCwgU0lMS19NQVhfT1JERVJfTFBDICogc2l6ZW9m
KCBvcHVzX2ludDMyICkgKTsKLSAgICBpZiggcnNoaWZ0cyA+IDAgKSB7Ci0gICAgICAgIGZvcigg
cyA9IDA7IHMgPCBuYl9zdWJmcjsgcysrICkgewotICAgICAgICAgICAgeF9wdHIgPSB4ICsgcyAq
IHN1YmZyX2xlbmd0aDsKLSAgICAgICAgICAgIGZvciggbiA9IDE7IG4gPCBEICsgMTsgbisrICkg
ewotICAgICAgICAgICAgICAgIENfZmlyc3Rfcm93WyBuIC0gMSBdICs9IChvcHVzX2ludDMyKXNp
bGtfUlNISUZUNjQoCi0gICAgICAgICAgICAgICAgICAgIHNpbGtfaW5uZXJfcHJvZDE2X2FsaWdu
ZWRfNjQoIHhfcHRyLCB4X3B0ciArIG4sIHN1YmZyX2xlbmd0aCAtIG4sIGFyY2ggKSwgcnNoaWZ0
cyApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
KCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7Ci0gICAgICAgICAgICBpbnQgaTsKLSAgICAg
ICAgICAgIG9wdXNfaW50MzIgZDsKLSAgICAgICAgICAgIHhfcHRyID0geCArIHMgKiBzdWJmcl9s
ZW5ndGg7Ci0gICAgICAgICAgICBjZWx0X3BpdGNoX3hjb3JyKHhfcHRyLCB4X3B0ciArIDEsIHhj
b3JyLCBzdWJmcl9sZW5ndGggLSBELCBELCBhcmNoICk7Ci0gICAgICAgICAgICBmb3IoIG4gPSAx
OyBuIDwgRCArIDE7IG4rKyApIHsKLSAgICAgICAgICAgICAgIGZvciAoIGkgPSBuICsgc3ViZnJf
bGVuZ3RoIC0gRCwgZCA9IDA7IGkgPCBzdWJmcl9sZW5ndGg7IGkrKyApCi0gICAgICAgICAgICAg
ICAgICBkID0gTUFDMTZfMTYoIGQsIHhfcHRyWyBpIF0sIHhfcHRyWyBpIC0gbiBdICk7Ci0gICAg
ICAgICAgICAgICB4Y29yclsgbiAtIDEgXSArPSBkOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZm9yKCBuID0gMTsgbiA8IEQgKyAxOyBuKysgKSB7Ci0gICAgICAgICAgICAgICAgQ19maXJz
dF9yb3dbIG4gLSAxIF0gKz0gc2lsa19MU0hJRlQzMiggeGNvcnJbIG4gLSAxIF0sIC1yc2hpZnRz
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2lsa19tZW1jcHkoIENf
bGFzdF9yb3csIENfZmlyc3Rfcm93LCBTSUxLX01BWF9PUkRFUl9MUEMgKiBzaXplb2YoIG9wdXNf
aW50MzIgKSApOwotCi0gICAgLyogSW5pdGlhbGl6ZSAqLwotICAgIENBYlsgMCBdID0gQ0FmWyAw
IF0gPSBDMCArIHNpbGtfU01NVUwoIFNJTEtfRklYX0NPTlNUKCBGSU5EX0xQQ19DT05EX0ZBQywg
MzIgKSwgQzAgKSArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKC1yc2hp
ZnRzKSAqLwotCi0gICAgaW52R2Fpbl9RMzAgPSAob3B1c19pbnQzMikxIDw8IDMwOwotICAgIHJl
YWNoZWRfbWF4X2dhaW4gPSAwOwotICAgIGZvciggbiA9IDA7IG4gPCBEOyBuKysgKSB7Ci0gICAg
ICAgIC8qIFVwZGF0ZSBmaXJzdCByb3cgb2YgY29ycmVsYXRpb24gbWF0cml4ICh3aXRob3V0IGZp
cnN0IGVsZW1lbnQpICovCi0gICAgICAgIC8qIFVwZGF0ZSBsYXN0IHJvdyBvZiBjb3JyZWxhdGlv
biBtYXRyaXggKHdpdGhvdXQgbGFzdCBlbGVtZW50LCBzdG9yZWQgaW4gcmV2ZXJzZWQgb3JkZXIp
ICovCi0gICAgICAgIC8qIFVwZGF0ZSBDICogQWYgKi8KLSAgICAgICAgLyogVXBkYXRlIEMgKiBm
bGlwdWQoQWYpIChzdG9yZWQgaW4gcmV2ZXJzZWQgb3JkZXIpICovCi0gICAgICAgIGlmKCByc2hp
ZnRzID4gLTIgKSB7Ci0gICAgICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMrKyAp
IHsKLSAgICAgICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOwotICAgICAg
ICAgICAgICAgIHgxICA9IC1zaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgbiBdLCAg
ICAgICAgICAgICAgICAgICAgMTYgLSByc2hpZnRzICk7ICAgICAgICAvKiBRKDE2LXJzaGlmdHMp
ICovCi0gICAgICAgICAgICAgICAgeDIgID0gLXNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhf
cHRyWyBzdWJmcl9sZW5ndGggLSBuIC0gMSBdLCAxNiAtIHJzaGlmdHMgKTsgICAgICAgIC8qIFEo
MTYtcnNoaWZ0cykgKi8KLSAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19MU0hJRlQzMiggKG9w
dXNfaW50MzIpeF9wdHJbIG4gXSwgICAgICAgICAgICAgICAgICAgIFFBIC0gMTYgKTsgICAgICAg
ICAgICAgLyogUShRQS0xNikgKi8KLSAgICAgICAgICAgICAgICB0bXAyID0gc2lsa19MU0hJRlQz
MiggKG9wdXNfaW50MzIpeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gLSAxIF0sIFFBIC0gMTYgKTsg
ICAgICAgICAgICAgLyogUShRQS0xNikgKi8KLSAgICAgICAgICAgICAgICBmb3IoIGsgPSAwOyBr
IDwgbjsgaysrICkgewotICAgICAgICAgICAgICAgICAgICBDX2ZpcnN0X3Jvd1sgayBdID0gc2ls
a19TTUxBV0IoIENfZmlyc3Rfcm93WyBrIF0sIHgxLCB4X3B0clsgbiAtIGsgLSAxIF0gICAgICAg
ICAgICApOyAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgICAgICAgICAgICAgIENfbGFzdF9y
b3dbIGsgXSAgPSBzaWxrX1NNTEFXQiggQ19sYXN0X3Jvd1sgayBdLCAgeDIsIHhfcHRyWyBzdWJm
cl9sZW5ndGggLSBuICsgayBdICk7IC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgICAgICAg
ICAgICAgQXRtcF9RQSA9IEFmX1FBWyBrIF07Ci0gICAgICAgICAgICAgICAgICAgIHRtcDEgPSBz
aWxrX1NNTEFXQiggdG1wMSwgQXRtcF9RQSwgeF9wdHJbIG4gLSBrIC0gMSBdICAgICAgICAgICAg
KTsgICAgICAgICAgICAgICAgIC8qIFEoUUEtMTYpICovCi0gICAgICAgICAgICAgICAgICAgIHRt
cDIgPSBzaWxrX1NNTEFXQiggdG1wMiwgQXRtcF9RQSwgeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4g
KyBrIF0gKTsgICAgICAgICAgICAgICAgIC8qIFEoUUEtMTYpICovCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxrX0xTSElGVDMyKCAtdG1wMSwgMzIgLSBRQSAt
IHJzaGlmdHMgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKDE2
LXJzaGlmdHMpICovCi0gICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfTFNISUZUMzIoIC10bXAy
LCAzMiAtIFFBIC0gcnNoaWZ0cyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFEoMTYtcnNoaWZ0cykgKi8KLSAgICAgICAgICAgICAgICBmb3IoIGsgPSAwOyBrIDw9
IG47IGsrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgQ0FmWyBrIF0gPSBzaWxrX1NNTEFXQigg
Q0FmWyBrIF0sIHRtcDEsIHhfcHRyWyBuIC0gayBdICAgICAgICAgICAgICAgICAgICApOyAgICAg
ICAgLyogUSggLXJzaGlmdCApICovCi0gICAgICAgICAgICAgICAgICAgIENBYlsgayBdID0gc2ls
a19TTUxBV0IoIENBYlsgayBdLCB0bXAyLCB4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgLSAx
IF0gKTsgICAgICAgIC8qIFEoIC1yc2hpZnQgKSAqLwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciggcyA9IDA7IHMgPCBu
Yl9zdWJmcjsgcysrICkgewotICAgICAgICAgICAgICAgIHhfcHRyID0geCArIHMgKiBzdWJmcl9s
ZW5ndGg7Ci0gICAgICAgICAgICAgICAgeDEgID0gLXNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMy
KXhfcHRyWyBuIF0sICAgICAgICAgICAgICAgICAgICAtcnNoaWZ0cyApOyAgICAgICAgICAgIC8q
IFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgICAgICAgICB4MiAgPSAtc2lsa19MU0hJRlQzMigg
KG9wdXNfaW50MzIpeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gLSAxIF0sIC1yc2hpZnRzICk7ICAg
ICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxr
X0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgbiBdLCAgICAgICAgICAgICAgICAgICAgMTcg
KTsgICAgICAgICAgICAgICAgICAvKiBRMTcgKi8KLSAgICAgICAgICAgICAgICB0bXAyID0gc2ls
a19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gLSAxIF0sIDE3
ICk7ICAgICAgICAgICAgICAgICAgLyogUTE3ICovCi0KLSAgICAgICAgICAgICAgICBYMV8zMjEw
ID0gX21tX3NldDFfZXBpMzIoIHgxICk7Ci0gICAgICAgICAgICAgICAgWDJfMzIxMCA9IF9tbV9z
ZXQxX2VwaTMyKCB4MiApOwotICAgICAgICAgICAgICAgIFRNUDFfMzIxMCA9IF9tbV9zZXR6ZXJv
X3NpMTI4KCk7Ci0gICAgICAgICAgICAgICAgVE1QMl8zMjEwID0gX21tX3NldHplcm9fc2kxMjgo
KTsKLSAgICAgICAgICAgICAgICBmb3IoIGsgPSAwOyBrIDwgbiAtIDM7IGsgKz0gNCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgUFRSXzMyMTAgICA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJnhf
cHRyWyBuIC0gayAtIDEgLSAzIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgU1VCRlJfMzIxMCA9
IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJnhfcHRyWyBzdWJmcl9sZW5ndGggLSBuICsgayBdICk7
Ci0gICAgICAgICAgICAgICAgICAgIEZJUlNUXzMyMTAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20x
MjhpICopJkNfZmlyc3Rfcm93WyBrIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgUFRSXzMyMTAg
ICA9IF9tbV9zaHVmZmxlX2VwaTMyKCBQVFJfMzIxMCwgIF9NTV9TSFVGRkxFKCAwLCAxLCAyLCAz
ICkgKTsKLSAgICAgICAgICAgICAgICAgICAgTEFTVF8zMjEwICA9IF9tbV9sb2FkdV9zaTEyOCgg
KF9fbTEyOGkgKikmQ19sYXN0X3Jvd1sgayBdICk7Ci0gICAgICAgICAgICAgICAgICAgIEFUTVBf
MzIxMCAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopJkFmX1FBWyBrIF0gKTsKLQotICAg
ICAgICAgICAgICAgICAgICBUMV8zMjEwID0gX21tX211bGxvX2VwaTMyKCBQVFJfMzIxMCwgWDFf
MzIxMCApOwotICAgICAgICAgICAgICAgICAgICBUMl8zMjEwID0gX21tX211bGxvX2VwaTMyKCBT
VUJGUl8zMjEwLCBYMl8zMjEwICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgQVRNUF8zMjEwID0g
X21tX3NyYWlfZXBpMzIoIEFUTVBfMzIxMCwgNyApOwotICAgICAgICAgICAgICAgICAgICBBVE1Q
XzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBBVE1QXzMyMTAsIENPTlNUMSApOwotICAgICAgICAgICAg
ICAgICAgICBBVE1QXzMyMTAgPSBfbW1fc3JhaV9lcGkzMiggQVRNUF8zMjEwLCAxICk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgRklSU1RfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIEZJUlNUXzMyMTAs
IFQxXzMyMTAgKTsKLSAgICAgICAgICAgICAgICAgICAgTEFTVF8zMjEwID0gX21tX2FkZF9lcGkz
MiggTEFTVF8zMjEwLCBUMl8zMjEwICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgUFRSXzMyMTAg
ICA9IF9tbV9tdWxsb19lcGkzMiggQVRNUF8zMjEwLCBQVFJfMzIxMCApOwotICAgICAgICAgICAg
ICAgICAgICBTVUJGUl8zMjEwICAgPSBfbW1fbXVsbG9fZXBpMzIoIEFUTVBfMzIxMCwgU1VCRlJf
MzIxMCApOwotCi0gICAgICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhp
ICopJkNfZmlyc3Rfcm93WyBrIF0sIEZJUlNUXzMyMTAgKTsKLSAgICAgICAgICAgICAgICAgICAg
X21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikmQ19sYXN0X3Jvd1sgayBdLCBMQVNUXzMyMTAg
KTsKLQotICAgICAgICAgICAgICAgICAgICBUTVAxXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBUTVAx
XzMyMTAsIFBUUl8zMjEwICk7Ci0gICAgICAgICAgICAgICAgICAgIFRNUDJfMzIxMCA9IF9tbV9h
ZGRfZXBpMzIoIFRNUDJfMzIxMCwgU1VCRlJfMzIxMCApOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIFRNUDFfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIFRNUDFfMzIxMCwgX21t
X3VucGFja2hpX2VwaTY0KFRNUDFfMzIxMCwgVE1QMV8zMjEwICkgKTsKLSAgICAgICAgICAgICAg
ICBUTVAyXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBUTVAyXzMyMTAsIF9tbV91bnBhY2toaV9lcGk2
NChUTVAyXzMyMTAsIFRNUDJfMzIxMCApICk7Ci0gICAgICAgICAgICAgICAgVE1QMV8zMjEwID0g
X21tX2FkZF9lcGkzMiggVE1QMV8zMjEwLCBfbW1fc2h1ZmZsZWxvX2VwaTE2KFRNUDFfMzIxMCwg
MHgwRSApICk7Ci0gICAgICAgICAgICAgICAgVE1QMl8zMjEwID0gX21tX2FkZF9lcGkzMiggVE1Q
Ml8zMjEwLCBfbW1fc2h1ZmZsZWxvX2VwaTE2KFRNUDJfMzIxMCwgMHgwRSApICk7Ci0KLSAgICAg
ICAgICAgICAgICB0bXAxICs9IF9tbV9jdnRzaTEyOF9zaTMyKCBUTVAxXzMyMTAgKTsKLSAgICAg
ICAgICAgICAgICB0bXAyICs9IF9tbV9jdnRzaTEyOF9zaTMyKCBUTVAyXzMyMTAgKTsKLQotICAg
ICAgICAgICAgICAgIGZvciggOyBrIDwgbjsgaysrICkgewotICAgICAgICAgICAgICAgICAgICBD
X2ZpcnN0X3Jvd1sgayBdID0gc2lsa19NTEEoIENfZmlyc3Rfcm93WyBrIF0sIHgxLCB4X3B0clsg
biAtIGsgLSAxIF0gICAgICAgICAgICApOyAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgICAg
ICAgICAgICAgIENfbGFzdF9yb3dbIGsgXSAgPSBzaWxrX01MQSggQ19sYXN0X3Jvd1sgayBdLCAg
eDIsIHhfcHRyWyBzdWJmcl9sZW5ndGggLSBuICsgayBdICk7IC8qIFEoIC1yc2hpZnRzICkgKi8K
LSAgICAgICAgICAgICAgICAgICAgQXRtcDEgPSBzaWxrX1JTSElGVF9ST1VORCggQWZfUUFbIGsg
XSwgUUEgLSAxNyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTE3ICov
Ci0gICAgICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxrX01MQSggdG1wMSwgeF9wdHJbIG4gLSBr
IC0gMSBdLCAgICAgICAgICAgIEF0bXAxICk7ICAgICAgICAgICAgICAgICAgICAgIC8qIFExNyAq
LwotICAgICAgICAgICAgICAgICAgICB0bXAyID0gc2lsa19NTEEoIHRtcDIsIHhfcHRyWyBzdWJm
cl9sZW5ndGggLSBuICsgayBdLCBBdG1wMSApOyAgICAgICAgICAgICAgICAgICAgICAvKiBRMTcg
Ki8KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0bXAxID0gLXRtcDE7ICAg
ICAgICAgICAgICAgIC8qIFExNyAqLwotICAgICAgICAgICAgICAgIHRtcDIgPSAtdG1wMjsgICAg
ICAgICAgICAgICAgLyogUTE3ICovCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIF9fbTEyOGkgeG1tX3RtcDEsIHhtbV90bXAyOwotICAgICAgICAgICAgICAgICAgICBf
X20xMjhpIHhtbV94X3B0cl9uX2tfeDJ4MCwgeG1tX3hfcHRyX25fa194M3gxOwotICAgICAgICAg
ICAgICAgICAgICBfX20xMjhpIHhtbV94X3B0cl9zdWJfeDJ4MCwgeG1tX3hfcHRyX3N1Yl94M3gx
OwotCi0gICAgICAgICAgICAgICAgICAgIHhtbV90bXAxID0gX21tX3NldDFfZXBpMzIoIHRtcDEg
KTsKLSAgICAgICAgICAgICAgICAgICAgeG1tX3RtcDIgPSBfbW1fc2V0MV9lcGkzMiggdG1wMiAp
OwotCi0gICAgICAgICAgICAgICAgICAgIGZvciggayA9IDA7IGsgPD0gbiAtIDM7IGsgKz0gNCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDJ4MCA9IE9QX0NWVEVQ
STE2X0VQSTMyX002NCggJnhfcHRyWyBuIC0gayAtIDMgXSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgeG1tX3hfcHRyX3N1Yl94MngwID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCAmeF9wdHJb
IHN1YmZyX2xlbmd0aCAtIG4gKyBrIC0gMSBdICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IHhtbV94X3B0cl9uX2tfeDJ4MCA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4bW1feF9wdHJfbl9rX3gy
eDAsIF9NTV9TSFVGRkxFKCAwLCAxLCAyLCAzICkgKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgeG1tX3hfcHRyX25fa194MngwID0gX21tX3NsbGlfZXBpMzIoIHhtbV94X3B0cl9uX2tfeDJ4
MCwgLXJzaGlmdHMgLSAxICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfc3Vi
X3gyeDAgPSBfbW1fc2xsaV9lcGkzMiggeG1tX3hfcHRyX3N1Yl94MngwLCAtcnNoaWZ0cyAtIDEg
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRl
cywgeG1tX3hfcHRyX25fa194M3gxID0gX21tX3NybGlfc2kxMjgoeG1tX3hfcHRyX25fa194Mngw
LCA0KSovCi0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gzeDEgPSBfbW1f
c2h1ZmZsZV9lcGkzMiggeG1tX3hfcHRyX25fa194MngwLCBfTU1fU0hVRkZMRSggMCwgMywgMiwg
MSApICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfc3ViX3gzeDEgPSBfbW1f
c2h1ZmZsZV9lcGkzMiggeG1tX3hfcHRyX3N1Yl94MngwLCBfTU1fU0hVRkZMRSggMCwgMywgMiwg
MSApICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDJ4MCA9IF9t
bV9tdWxfZXBpMzIoIHhtbV94X3B0cl9uX2tfeDJ4MCwgeG1tX3RtcDEgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDN4MSA9IF9tbV9tdWxfZXBpMzIoIHhtbV94X3B0
cl9uX2tfeDN4MSwgeG1tX3RtcDEgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0
cl9zdWJfeDJ4MCA9IF9tbV9tdWxfZXBpMzIoIHhtbV94X3B0cl9zdWJfeDJ4MCwgeG1tX3RtcDIg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJfeDN4MSA9IF9tbV9tdWxf
ZXBpMzIoIHhtbV94X3B0cl9zdWJfeDN4MSwgeG1tX3RtcDIgKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgeG1tX3hfcHRyX25fa194MngwID0gX21tX3NybGlfZXBpNjQoIHhtbV94X3B0cl9u
X2tfeDJ4MCwgMTYgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDN4
MSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1feF9wdHJfbl9rX3gzeDEsIDE2ICk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB4bW1feF9wdHJfc3ViX3gyeDAgPSBfbW1fc3JsaV9lcGk2NCggeG1tX3hf
cHRyX3N1Yl94MngwLCAxNiApOwotICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1
Yl94M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV94X3B0cl9zdWJfeDN4MSwgMTYgKTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX25fa194MngwID0gX21tX2JsZW5kX2VwaTE2
KCB4bW1feF9wdHJfbl9rX3gyeDAsIHhtbV94X3B0cl9uX2tfeDN4MSwgMHhDQyApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1Yl94MngwID0gX21tX2JsZW5kX2VwaTE2KCB4
bW1feF9wdHJfc3ViX3gyeDAsIHhtbV94X3B0cl9zdWJfeDN4MSwgMHhDQyApOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBYMV8zMjEwICA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikm
Q0FmWyBrIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBUUl8zMjEwID0gX21tX2xvYWR1
X3NpMTI4KCAoX19tMTI4aSAqKSZDQWJbIGsgXSApOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBYMV8zMjEwICA9IF9tbV9hZGRfZXBpMzIoIFgxXzMyMTAsIHhtbV94X3B0cl9uX2tfeDJ4MCAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgUFRSXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBQVFJf
MzIxMCwgeG1tX3hfcHRyX3N1Yl94MngwICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIF9t
bV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopJkNBZlsgayBdLCBYMV8zMjEwICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSZDQWJbIGsgXSwg
UFRSXzMyMTAgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IGZvciggOyBrIDw9IG47IGsrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENBZlsgayBd
ID0gc2lsa19TTUxBV1coIENBZlsgayBdLCB0bXAxLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRyWyBuIC0gayBdLCAtcnNoaWZ0cyAt
IDEgKSApOyAgICAgICAgICAgICAgICAgICAgLyogUSggLXJzaGlmdCApICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICBDQWJbIGsgXSA9IHNpbGtfU01MQVdXKCBDQWJbIGsgXSwgdG1wMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0
clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgLSAxIF0sIC1yc2hpZnRzIC0gMSApICk7IC8qIFEoIC1y
c2hpZnQgKSAqLwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyogQ2FsY3VsYXRlIG5vbWluYXRvciBh
bmQgZGVub21pbmF0b3IgZm9yIHRoZSBuZXh0IG9yZGVyIHJlZmxlY3Rpb24gKHBhcmNvcikgY29l
ZmZpY2llbnQgKi8KLSAgICAgICAgdG1wMSA9IENfZmlyc3Rfcm93WyBuIF07ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICB0bXAyID0gQ19sYXN0X3Jvd1sgbiBdOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgIG51bSAgPSAwOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgbnJn
ICA9IHNpbGtfQUREMzIoIENBYlsgMCBdLCBDQWZbIDAgXSApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggMS1yc2hpZnRzICkgKi8K
LSAgICAgICAgZm9yKCBrID0gMDsgayA8IG47IGsrKyApIHsKLSAgICAgICAgICAgIEF0bXBfUUEg
PSBBZl9RQVsgayBdOwotICAgICAgICAgICAgbHogPSBzaWxrX0NMWjMyKCBzaWxrX2FicyggQXRt
cF9RQSApICkgLSAxOwotICAgICAgICAgICAgbHogPSBzaWxrX21pbiggMzIgLSBRQSwgbHogKTsK
LSAgICAgICAgICAgIEF0bXAxID0gc2lsa19MU0hJRlQzMiggQXRtcF9RQSwgbHogKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggUUEg
KyBseiApICovCi0KLSAgICAgICAgICAgIHRtcDEgPSBzaWxrX0FERF9MU0hJRlQzMiggdG1wMSwg
c2lsa19TTU1VTCggQ19sYXN0X3Jvd1sgIG4gLSBrIC0gMSBdLCBBdG1wMSApLCAzMiAtIFFBIC0g
bHogKTsgIC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgICAgIHRtcDIgPSBzaWxrX0FERF9M
U0hJRlQzMiggdG1wMiwgc2lsa19TTU1VTCggQ19maXJzdF9yb3dbIG4gLSBrIC0gMSBdLCBBdG1w
MSApLCAzMiAtIFFBIC0gbHogKTsgIC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgICAgIG51
bSAgPSBzaWxrX0FERF9MU0hJRlQzMiggbnVtLCAgc2lsa19TTU1VTCggQ0FiWyBuIC0gayBdLCAg
ICAgICAgICAgICBBdG1wMSApLCAzMiAtIFFBIC0gbHogKTsgIC8qIFEoIC1yc2hpZnRzICkgKi8K
LSAgICAgICAgICAgIG5yZyAgPSBzaWxrX0FERF9MU0hJRlQzMiggbnJnLCAgc2lsa19TTU1VTCgg
c2lsa19BREQzMiggQ0FiWyBrICsgMSBdLCBDQWZbIGsgKyAxIF0gKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQXRtcDEgKSwgMzIgLSBRQSAtIGx6ICk7ICAgIC8qIFEoIDEtcnNoaWZ0cyApICov
Ci0gICAgICAgIH0KLSAgICAgICAgQ0FmWyBuICsgMSBdID0gdG1wMTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogUSggLXJzaGlmdHMgKSAqLwotICAgICAgICBDQWJbIG4gKyAxIF0gPSB0bXAyOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAgIG51bSA9IHNpbGtfQURE
MzIoIG51bSwgdG1wMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgbnVt
ID0gc2lsa19MU0hJRlQzMiggLW51bSwgMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggMS1yc2hpZnRzICkgKi8K
LQotICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG5leHQgb3JkZXIgcmVmbGVjdGlvbiAocGFyY29y
KSBjb2VmZmljaWVudCAqLwotICAgICAgICBpZiggc2lsa19hYnMoIG51bSApIDwgbnJnICkgewot
ICAgICAgICAgICAgcmNfUTMxID0gc2lsa19ESVYzMl92YXJRKCBudW0sIG5yZywgMzEgKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJjX1EzMSA9ICggbnVtID4gMCApID8gc2lsa19p
bnQzMl9NQVggOiBzaWxrX2ludDMyX01JTjsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFVwZGF0
ZSBpbnZlcnNlIHByZWRpY3Rpb24gZ2FpbiAqLwotICAgICAgICB0bXAxID0gKCAob3B1c19pbnQz
MikxIDw8IDMwICkgLSBzaWxrX1NNTVVMKCByY19RMzEsIHJjX1EzMSApOwotICAgICAgICB0bXAx
ID0gc2lsa19MU0hJRlQoIHNpbGtfU01NVUwoIGludkdhaW5fUTMwLCB0bXAxICksIDIgKTsKLSAg
ICAgICAgaWYoIHRtcDEgPD0gbWluSW52R2Fpbl9RMzAgKSB7Ci0gICAgICAgICAgICAvKiBNYXgg
cHJlZGljdGlvbiBnYWluIGV4Y2VlZGVkOyBzZXQgcmVmbGVjdGlvbiBjb2VmZmljaWVudCBzdWNo
IHRoYXQgbWF4IHByZWRpY3Rpb24gZ2FpbiBpcyBleGFjdGx5IGhpdCAqLwotICAgICAgICAgICAg
dG1wMiA9ICggKG9wdXNfaW50MzIpMSA8PCAzMCApIC0gc2lsa19ESVYzMl92YXJRKCBtaW5JbnZH
YWluX1EzMCwgaW52R2Fpbl9RMzAsIDMwICk7ICAgICAgICAgICAgLyogUTMwICovCi0gICAgICAg
ICAgICByY19RMzEgPSBzaWxrX1NRUlRfQVBQUk9YKCB0bXAyICk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTUgKi8KLSAgICAgICAgICAgIGlm
KCByY19RMzEgPiAwICkgewotICAgICAgICAgICAgICAgICAvKiBOZXd0b24tUmFwaHNvbiBpdGVy
YXRpb24gKi8KLSAgICAgICAgICAgICAgICByY19RMzEgPSBzaWxrX1JTSElGVDMyKCByY19RMzEg
KyBzaWxrX0RJVjMyKCB0bXAyLCByY19RMzEgKSwgMSApOyAgICAgICAgICAgICAgICAgICAvKiBR
MTUgKi8KLSAgICAgICAgICAgICAgICByY19RMzEgPSBzaWxrX0xTSElGVDMyKCByY19RMzEsIDE2
ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMzEg
Ki8KLSAgICAgICAgICAgICAgICBpZiggbnVtIDwgMCApIHsKLSAgICAgICAgICAgICAgICAgICAg
LyogRW5zdXJlIGFkanVzdGVkIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzIGhhcyB0aGUgb3JpZ2lu
YWwgc2lnbiAqLwotICAgICAgICAgICAgICAgICAgICByY19RMzEgPSAtcmNfUTMxOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludkdhaW5fUTMwID0gbWlu
SW52R2Fpbl9RMzA7Ci0gICAgICAgICAgICByZWFjaGVkX21heF9nYWluID0gMTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGludkdhaW5fUTMwID0gdG1wMTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8qIFVwZGF0ZSB0aGUgQVIgY29lZmZpY2llbnRzICovCi0gICAgICAgIGZvciggayA9
IDA7IGsgPCAobiArIDEpID4+IDE7IGsrKyApIHsKLSAgICAgICAgICAgIHRtcDEgPSBBZl9RQVsg
ayBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFFBICovCi0gICAgICAgICAgICB0bXAyID0gQWZfUUFbIG4gLSBrIC0g
MSBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBRQSAqLwotICAgICAgICAgICAgQWZfUUFbIGsgXSAgICAgICAgID0gc2lsa19BRERf
TFNISUZUMzIoIHRtcDEsIHNpbGtfU01NVUwoIHRtcDIsIHJjX1EzMSApLCAxICk7ICAgICAgLyog
UUEgKi8KLSAgICAgICAgICAgIEFmX1FBWyBuIC0gayAtIDEgXSA9IHNpbGtfQUREX0xTSElGVDMy
KCB0bXAyLCBzaWxrX1NNTVVMKCB0bXAxLCByY19RMzEgKSwgMSApOyAgICAgIC8qIFFBICovCi0g
ICAgICAgIH0KLSAgICAgICAgQWZfUUFbIG4gXSA9IHNpbGtfUlNISUZUMzIoIHJjX1EzMSwgMzEg
LSBRQSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFFBICov
Ci0KLSAgICAgICAgaWYoIHJlYWNoZWRfbWF4X2dhaW4gKSB7Ci0gICAgICAgICAgICAvKiBSZWFj
aGVkIG1heCBwcmVkaWN0aW9uIGdhaW47IHNldCByZW1haW5pbmcgY29lZmZpY2llbnRzIHRvIHpl
cm8gYW5kIGV4aXQgbG9vcCAqLwotICAgICAgICAgICAgZm9yKCBrID0gbiArIDE7IGsgPCBEOyBr
KysgKSB7Ci0gICAgICAgICAgICAgICAgQWZfUUFbIGsgXSA9IDA7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFVwZGF0ZSBDICogQWYg
YW5kIEMgKiBBYiAqLwotICAgICAgICBmb3IoIGsgPSAwOyBrIDw9IG4gKyAxOyBrKysgKSB7Ci0g
ICAgICAgICAgICB0bXAxID0gQ0FmWyBrIF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICov
Ci0gICAgICAgICAgICB0bXAyID0gQ0FiWyBuIC0gayArIDEgXTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyAp
ICovCi0gICAgICAgICAgICBDQWZbIGsgXSAgICAgICAgID0gc2lsa19BRERfTFNISUZUMzIoIHRt
cDEsIHNpbGtfU01NVUwoIHRtcDIsIHJjX1EzMSApLCAxICk7ICAgICAgICAvKiBRKCAtcnNoaWZ0
cyApICovCi0gICAgICAgICAgICBDQWJbIG4gLSBrICsgMSBdID0gc2lsa19BRERfTFNISUZUMzIo
IHRtcDIsIHNpbGtfU01NVUwoIHRtcDEsIHJjX1EzMSApLCAxICk7ICAgICAgICAvKiBRKCAtcnNo
aWZ0cyApICovCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggcmVhY2hlZF9tYXhfZ2FpbiAp
IHsKLSAgICAgICAgZm9yKCBrID0gMDsgayA8IEQ7IGsrKyApIHsKLSAgICAgICAgICAgIC8qIFNj
YWxlIGNvZWZmaWNpZW50cyAqLwotICAgICAgICAgICAgQV9RMTZbIGsgXSA9IC1zaWxrX1JTSElG
VF9ST1VORCggQWZfUUFbIGsgXSwgUUEgLSAxNiApOwotICAgICAgICB9Ci0gICAgICAgIC8qIFN1
YnRyYWN0IGVuZXJneSBvZiBwcmVjZWRpbmcgc2FtcGxlcyBmcm9tIEMwICovCi0gICAgICAgIGlm
KCByc2hpZnRzID4gMCApIHsKLSAgICAgICAgICAgIGZvciggcyA9IDA7IHMgPCBuYl9zdWJmcjsg
cysrICkgewotICAgICAgICAgICAgICAgIHhfcHRyID0geCArIHMgKiBzdWJmcl9sZW5ndGg7Ci0g
ICAgICAgICAgICAgICAgQzAgLT0gKG9wdXNfaW50MzIpc2lsa19SU0hJRlQ2NCggc2lsa19pbm5l
cl9wcm9kMTZfYWxpZ25lZF82NCggeF9wdHIsIHhfcHRyLCBELCBhcmNoICksIHJzaGlmdHMgKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciggcyA9IDA7
IHMgPCBuYl9zdWJmcjsgcysrICkgewotICAgICAgICAgICAgICAgIHhfcHRyID0geCArIHMgKiBz
dWJmcl9sZW5ndGg7Ci0gICAgICAgICAgICAgICAgQzAgLT0gc2lsa19MU0hJRlQzMiggc2lsa19p
bm5lcl9wcm9kX2FsaWduZWQoIHhfcHRyLCB4X3B0ciwgRCwgYXJjaCApLCAtcnNoaWZ0cyApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8qIEFwcHJveGltYXRlIHJlc2lkdWFs
IGVuZXJneSAqLwotICAgICAgICAqcmVzX25yZyA9IHNpbGtfTFNISUZUKCBzaWxrX1NNTVVMKCBp
bnZHYWluX1EzMCwgQzAgKSwgMiApOwotICAgICAgICAqcmVzX25yZ19RID0gLXJzaGlmdHM7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLyogUmV0dXJuIHJlc2lkdWFsIGVuZXJneSAqLwotICAgICAg
ICBucmcgID0gQ0FmWyAwIF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8K
LSAgICAgICAgdG1wMSA9IChvcHVzX2ludDMyKTEgPDwgMTY7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBRMTYgKi8KLSAgICAgICAgZm9yKCBrID0gMDsgayA8IEQ7IGsrKyApIHsKLSAgICAgICAgICAg
IEF0bXAxID0gc2lsa19SU0hJRlRfUk9VTkQoIEFmX1FBWyBrIF0sIFFBIC0gMTYgKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTYgKi8KLSAgICAgICAgICAgIG5y
ZyAgPSBzaWxrX1NNTEFXVyggbnJnLCBDQWZbIGsgKyAxIF0sIEF0bXAxICk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCi0gICAgICAg
ICAgICB0bXAxID0gc2lsa19TTUxBV1coIHRtcDEsIEF0bXAxLCBBdG1wMSApOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTE2ICovCi0gICAgICAgICAg
ICBBX1ExNlsgayBdID0gLUF0bXAxOwotICAgICAgICB9Ci0gICAgICAgICpyZXNfbnJnID0gc2ls
a19TTUxBV1coIG5yZywgc2lsa19TTU1VTCggU0lMS19GSVhfQ09OU1QoIEZJTkRfTFBDX0NPTkRf
RkFDLCAzMiApLCBDMCApLCAtdG1wMSApOy8qIFEoIC1yc2hpZnRzICkgKi8KLSAgICAgICAgKnJl
c19ucmdfUSA9IC1yc2hpZnRzOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9maXhlZC94ODYv
YnVyZ19tb2RpZmllZF9GSVhfc3NlNF8xLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQveDg2L2J1cmdfbW9kaWZpZWRf
RklYX3NzZTRfMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiYjFjZTBmY2M0NTgwMTA3YmIyZWJhNThmZGRiYmVh
YmMyYWFlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQveDg2L2J1cmdfbW9kaWZpZWRf
RklYX3NzZTRfMS5jCkBAIC0wLDAgKzEsMzc3IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENp
c2NvIFN5c3RlbXMsIElOQworICAgV3JpdHRlbiBieSBYaWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5Q
ZW5nIFlhbldhbmcKKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBtZXQ6CisK
KyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8eG1taW50cmluLmg+CisjaW5jbHVkZSA8ZW1t
aW50cmluLmg+CisjaW5jbHVkZSA8c21taW50cmluLmg+CisKKyNpbmNsdWRlICJTaWdQcm9jX0ZJ
WC5oIgorI2luY2x1ZGUgImRlZmluZS5oIgorI2luY2x1ZGUgInR1bmluZ19wYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSAicGl0Y2guaCIKKyNpbmNsdWRlICJjZWx0L3g4Ni94ODZjcHUuaCIKKworI2Rl
ZmluZSBNQVhfRlJBTUVfU0laRSAgICAgICAgICAgICAgMzg0ICAgICAgICAgICAgIC8qIHN1YmZy
X2xlbmd0aCAqIG5iX3N1YmZyID0gKCAwLjAwNSAqIDE2MDAwICsgMTYgKSAqIDQgPSAzODQgKi8K
KworI2RlZmluZSBRQSAgICAgICAgICAgICAgICAgICAgICAgICAgMjUKKyNkZWZpbmUgTl9CSVRT
X0hFQURfUk9PTSAgICAgICAgICAgIDIKKyNkZWZpbmUgTUlOX1JTSElGVFMgICAgICAgICAgICAg
ICAgIC0xNgorI2RlZmluZSBNQVhfUlNISUZUUyAgICAgICAgICAgICAgICAgKDMyIC0gUUEpCisK
Ky8qIENvbXB1dGUgcmVmbGVjdGlvbiBjb2VmZmljaWVudHMgZnJvbSBpbnB1dCBzaWduYWwgKi8K
K3ZvaWQgc2lsa19idXJnX21vZGlmaWVkX3NzZTRfMSgKKyAgICBvcHVzX2ludDMyICAgICAgICAg
ICAgICAgICAgKnJlc19ucmcsICAgICAgICAgICAvKiBPICAgIFJlc2lkdWFsIGVuZXJneSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQg
ICAgICAgICAgICAgICAgICAgICpyZXNfbnJnX1EsICAgICAgICAgLyogTyAgICBSZXNpZHVhbCBl
bmVyZ3kgUSB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IG9wdXNfaW50MzIgICAgICAgICAgICAgICAgICBBX1ExNltdLCAgICAgICAgICAgIC8qIE8gICAg
UHJlZGljdGlvbiBjb2VmZmljaWVudHMgKGxlbmd0aCBvcmRlcikgICAgICAgICAgICAgICAgICAg
ICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgeFtdLCAgICAgICAgICAgICAg
ICAvKiBJICAgIElucHV0IHNpZ25hbCwgbGVuZ3RoOiBuYl9zdWJmciAqICggRCArIHN1YmZyX2xl
bmd0aCApICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgIG1pbkludkdh
aW5fUTMwLCAgICAgLyogSSAgICBJbnZlcnNlIG9mIG1heCBwcmVkaWN0aW9uIGdhaW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAg
ICBzdWJmcl9sZW5ndGgsICAgICAgIC8qIEkgICAgSW5wdXQgc2lnbmFsIHN1YmZyYW1lIGxlbmd0
aCAoaW5jbC4gRCBwcmVjZWRpbmcgc2FtcGxlcykgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAg
ICAgICAgICAgICAgbmJfc3ViZnIsICAgICAgICAgICAvKiBJICAgIE51bWJlciBvZiBzdWJmcmFt
ZXMgc3RhY2tlZCBpbiB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qg
b3B1c19pbnQgICAgICAgICAgICAgIEQsICAgICAgICAgICAgICAgICAgLyogSSAgICBPcmRlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoICAgICAgICAgICAgICAgIC8qIEkg
ICAgUnVuLXRpbWUgYXJjaGl0ZWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKykKK3sKKyAgICBvcHVzX2ludCAgICAgICAgIGssIG4sIHMsIGx6LCByc2hpZnRz
LCByc2hpZnRzX2V4dHJhLCByZWFjaGVkX21heF9nYWluOworICAgIG9wdXNfaW50MzIgICAgICAg
QzAsIG51bSwgbnJnLCByY19RMzEsIGludkdhaW5fUTMwLCBBdG1wX1FBLCBBdG1wMSwgdG1wMSwg
dG1wMiwgeDEsIHgyOworICAgIGNvbnN0IG9wdXNfaW50MTYgKnhfcHRyOworICAgIG9wdXNfaW50
MzIgICAgICAgQ19maXJzdF9yb3dbIFNJTEtfTUFYX09SREVSX0xQQyBdOworICAgIG9wdXNfaW50
MzIgICAgICAgQ19sYXN0X3Jvd1sgIFNJTEtfTUFYX09SREVSX0xQQyBdOworICAgIG9wdXNfaW50
MzIgICAgICAgQWZfUUFbICAgICAgIFNJTEtfTUFYX09SREVSX0xQQyBdOworICAgIG9wdXNfaW50
MzIgICAgICAgQ0FmWyBTSUxLX01BWF9PUkRFUl9MUEMgKyAxIF07CisgICAgb3B1c19pbnQzMiAg
ICAgICBDQWJbIFNJTEtfTUFYX09SREVSX0xQQyArIDEgXTsKKyAgICBvcHVzX2ludDMyICAgICAg
IHhjb3JyWyBTSUxLX01BWF9PUkRFUl9MUEMgXTsKKworICAgIF9fbTEyOGkgRklSU1RfMzIxMCwg
TEFTVF8zMjEwLCBBVE1QXzMyMTAsIFRNUDFfMzIxMCwgVE1QMl8zMjEwLCBUMV8zMjEwLCBUMl8z
MjEwLCBQVFJfMzIxMCwgU1VCRlJfMzIxMCwgWDFfMzIxMCwgWDJfMzIxMDsKKyAgICBfX20xMjhp
IENPTlNUMSA9IF9tbV9zZXQxX2VwaTMyKDEpOworCisgICAgY2VsdF9hc3NlcnQoIHN1YmZyX2xl
bmd0aCAqIG5iX3N1YmZyIDw9IE1BWF9GUkFNRV9TSVpFICk7CisKKyAgICAvKiBDb21wdXRlIGF1
dG9jb3JyZWxhdGlvbnMsIGFkZGVkIG92ZXIgc3ViZnJhbWVzICovCisgICAgc2lsa19zdW1fc3Fy
X3NoaWZ0KCAmQzAsICZyc2hpZnRzLCB4LCBuYl9zdWJmciAqIHN1YmZyX2xlbmd0aCApOworICAg
IGlmKCByc2hpZnRzID4gTUFYX1JTSElGVFMgKSB7CisgICAgICAgIEMwID0gc2lsa19MU0hJRlQz
MiggQzAsIHJzaGlmdHMgLSBNQVhfUlNISUZUUyApOworICAgICAgICBzaWxrX2Fzc2VydCggQzAg
PiAwICk7CisgICAgICAgIHJzaGlmdHMgPSBNQVhfUlNISUZUUzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBseiA9IHNpbGtfQ0xaMzIoIEMwICkgLSAxOworICAgICAgICByc2hpZnRzX2V4dHJhID0g
Tl9CSVRTX0hFQURfUk9PTSAtIGx6OworICAgICAgICBpZiggcnNoaWZ0c19leHRyYSA+IDAgKSB7
CisgICAgICAgICAgICByc2hpZnRzX2V4dHJhID0gc2lsa19taW4oIHJzaGlmdHNfZXh0cmEsIE1B
WF9SU0hJRlRTIC0gcnNoaWZ0cyApOworICAgICAgICAgICAgQzAgPSBzaWxrX1JTSElGVDMyKCBD
MCwgcnNoaWZ0c19leHRyYSApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcnNoaWZ0
c19leHRyYSA9IHNpbGtfbWF4KCByc2hpZnRzX2V4dHJhLCBNSU5fUlNISUZUUyAtIHJzaGlmdHMg
KTsKKyAgICAgICAgICAgIEMwID0gc2lsa19MU0hJRlQzMiggQzAsIC1yc2hpZnRzX2V4dHJhICk7
CisgICAgICAgIH0KKyAgICAgICAgcnNoaWZ0cyArPSByc2hpZnRzX2V4dHJhOworICAgIH0KKyAg
ICBDQWJbIDAgXSA9IENBZlsgMCBdID0gQzAgKyBzaWxrX1NNTVVMKCBTSUxLX0ZJWF9DT05TVCgg
RklORF9MUENfQ09ORF9GQUMsIDMyICksIEMwICkgKyAxOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogUSgtcnNoaWZ0cykgKi8KKyAgICBzaWxrX21lbXNldCggQ19maXJzdF9yb3cs
IDAsIFNJTEtfTUFYX09SREVSX0xQQyAqIHNpemVvZiggb3B1c19pbnQzMiApICk7CisgICAgaWYo
IHJzaGlmdHMgPiAwICkgeworICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMrKyAp
IHsKKyAgICAgICAgICAgIHhfcHRyID0geCArIHMgKiBzdWJmcl9sZW5ndGg7CisgICAgICAgICAg
ICBmb3IoIG4gPSAxOyBuIDwgRCArIDE7IG4rKyApIHsKKyAgICAgICAgICAgICAgICBDX2ZpcnN0
X3Jvd1sgbiAtIDEgXSArPSAob3B1c19pbnQzMilzaWxrX1JTSElGVDY0KAorICAgICAgICAgICAg
ICAgICAgICBzaWxrX2lubmVyX3Byb2QxNl9hbGlnbmVkXzY0KCB4X3B0ciwgeF9wdHIgKyBuLCBz
dWJmcl9sZW5ndGggLSBuLCBhcmNoICksIHJzaGlmdHMgKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciggcyA9IDA7IHMgPCBuYl9zdWJmcjsgcysr
ICkgeworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBvcHVzX2ludDMyIGQ7CisgICAg
ICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOworICAgICAgICAgICAgY2VsdF9w
aXRjaF94Y29ycih4X3B0ciwgeF9wdHIgKyAxLCB4Y29yciwgc3ViZnJfbGVuZ3RoIC0gRCwgRCwg
YXJjaCApOworICAgICAgICAgICAgZm9yKCBuID0gMTsgbiA8IEQgKyAxOyBuKysgKSB7CisgICAg
ICAgICAgICAgICBmb3IgKCBpID0gbiArIHN1YmZyX2xlbmd0aCAtIEQsIGQgPSAwOyBpIDwgc3Vi
ZnJfbGVuZ3RoOyBpKysgKQorICAgICAgICAgICAgICAgICAgZCA9IE1BQzE2XzE2KCBkLCB4X3B0
clsgaSBdLCB4X3B0clsgaSAtIG4gXSApOworICAgICAgICAgICAgICAgeGNvcnJbIG4gLSAxIF0g
Kz0gZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciggbiA9IDE7IG4gPCBEICsgMTsg
bisrICkgeworICAgICAgICAgICAgICAgIENfZmlyc3Rfcm93WyBuIC0gMSBdICs9IHNpbGtfTFNI
SUZUMzIoIHhjb3JyWyBuIC0gMSBdLCAtcnNoaWZ0cyApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIHNpbGtfbWVtY3B5KCBDX2xhc3Rfcm93LCBDX2ZpcnN0X3JvdywgU0lM
S19NQVhfT1JERVJfTFBDICogc2l6ZW9mKCBvcHVzX2ludDMyICkgKTsKKworICAgIC8qIEluaXRp
YWxpemUgKi8KKyAgICBDQWJbIDAgXSA9IENBZlsgMCBdID0gQzAgKyBzaWxrX1NNTVVMKCBTSUxL
X0ZJWF9DT05TVCggRklORF9MUENfQ09ORF9GQUMsIDMyICksIEMwICkgKyAxOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogUSgtcnNoaWZ0cykgKi8KKworICAgIGludkdhaW5fUTMw
ID0gKG9wdXNfaW50MzIpMSA8PCAzMDsKKyAgICByZWFjaGVkX21heF9nYWluID0gMDsKKyAgICBm
b3IoIG4gPSAwOyBuIDwgRDsgbisrICkgeworICAgICAgICAvKiBVcGRhdGUgZmlyc3Qgcm93IG9m
IGNvcnJlbGF0aW9uIG1hdHJpeCAod2l0aG91dCBmaXJzdCBlbGVtZW50KSAqLworICAgICAgICAv
KiBVcGRhdGUgbGFzdCByb3cgb2YgY29ycmVsYXRpb24gbWF0cml4ICh3aXRob3V0IGxhc3QgZWxl
bWVudCwgc3RvcmVkIGluIHJldmVyc2VkIG9yZGVyKSAqLworICAgICAgICAvKiBVcGRhdGUgQyAq
IEFmICovCisgICAgICAgIC8qIFVwZGF0ZSBDICogZmxpcHVkKEFmKSAoc3RvcmVkIGluIHJldmVy
c2VkIG9yZGVyKSAqLworICAgICAgICBpZiggcnNoaWZ0cyA+IC0yICkgeworICAgICAgICAgICAg
Zm9yKCBzID0gMDsgcyA8IG5iX3N1YmZyOyBzKysgKSB7CisgICAgICAgICAgICAgICAgeF9wdHIg
PSB4ICsgcyAqIHN1YmZyX2xlbmd0aDsKKyAgICAgICAgICAgICAgICB4MSAgPSAtc2lsa19MU0hJ
RlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIG4gXSwgICAgICAgICAgICAgICAgICAgIDE2IC0gcnNo
aWZ0cyApOyAgICAgICAgLyogUSgxNi1yc2hpZnRzKSAqLworICAgICAgICAgICAgICAgIHgyICA9
IC1zaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiAtIDEg
XSwgMTYgLSByc2hpZnRzICk7ICAgICAgICAvKiBRKDE2LXJzaGlmdHMpICovCisgICAgICAgICAg
ICAgICAgdG1wMSA9IHNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRyWyBuIF0sICAgICAg
ICAgICAgICAgICAgICBRQSAtIDE2ICk7ICAgICAgICAgICAgIC8qIFEoUUEtMTYpICovCisgICAg
ICAgICAgICAgICAgdG1wMiA9IHNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRyWyBzdWJm
cl9sZW5ndGggLSBuIC0gMSBdLCBRQSAtIDE2ICk7ICAgICAgICAgICAgIC8qIFEoUUEtMTYpICov
CisgICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8IG47IGsrKyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ19maXJzdF9yb3dbIGsgXSA9IHNpbGtfU01MQVdCKCBDX2ZpcnN0X3Jvd1sgayBd
LCB4MSwgeF9wdHJbIG4gLSBrIC0gMSBdICAgICAgICAgICAgKTsgLyogUSggLXJzaGlmdHMgKSAq
LworICAgICAgICAgICAgICAgICAgICBDX2xhc3Rfcm93WyBrIF0gID0gc2lsa19TTUxBV0IoIENf
bGFzdF9yb3dbIGsgXSwgIHgyLCB4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgXSApOyAvKiBR
KCAtcnNoaWZ0cyApICovCisgICAgICAgICAgICAgICAgICAgIEF0bXBfUUEgPSBBZl9RQVsgayBd
OworICAgICAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19TTUxBV0IoIHRtcDEsIEF0bXBfUUEs
IHhfcHRyWyBuIC0gayAtIDEgXSAgICAgICAgICAgICk7ICAgICAgICAgICAgICAgICAvKiBRKFFB
LTE2KSAqLworICAgICAgICAgICAgICAgICAgICB0bXAyID0gc2lsa19TTUxBV0IoIHRtcDIsIEF0
bXBfUUEsIHhfcHRyWyBzdWJmcl9sZW5ndGggLSBuICsgayBdICk7ICAgICAgICAgICAgICAgICAv
KiBRKFFBLTE2KSAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0bXAxID0g
c2lsa19MU0hJRlQzMiggLXRtcDEsIDMyIC0gUUEgLSByc2hpZnRzICk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogUSgxNi1yc2hpZnRzKSAqLworICAgICAgICAgICAg
ICAgIHRtcDIgPSBzaWxrX0xTSElGVDMyKCAtdG1wMiwgMzIgLSBRQSAtIHJzaGlmdHMgKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRKDE2LXJzaGlmdHMpICovCisg
ICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8PSBuOyBrKysgKSB7CisgICAgICAgICAgICAg
ICAgICAgIENBZlsgayBdID0gc2lsa19TTUxBV0IoIENBZlsgayBdLCB0bXAxLCB4X3B0clsgbiAt
IGsgXSAgICAgICAgICAgICAgICAgICAgKTsgICAgICAgIC8qIFEoIC1yc2hpZnQgKSAqLworICAg
ICAgICAgICAgICAgICAgICBDQWJbIGsgXSA9IHNpbGtfU01MQVdCKCBDQWJbIGsgXSwgdG1wMiwg
eF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gKyBrIC0gMSBdICk7ICAgICAgICAvKiBRKCAtcnNoaWZ0
ICkgKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMrKyApIHsKKyAgICAgICAg
ICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOworICAgICAgICAgICAgICAgIHgx
ICA9IC1zaWxrX0xTSElGVDMyKCAob3B1c19pbnQzMil4X3B0clsgbiBdLCAgICAgICAgICAgICAg
ICAgICAgLXJzaGlmdHMgKTsgICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCisgICAgICAg
ICAgICAgICAgeDIgID0gLXNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhfcHRyWyBzdWJmcl9s
ZW5ndGggLSBuIC0gMSBdLCAtcnNoaWZ0cyApOyAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkg
Ki8KKyAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9w
dHJbIG4gXSwgICAgICAgICAgICAgICAgICAgIDE3ICk7ICAgICAgICAgICAgICAgICAgLyogUTE3
ICovCisgICAgICAgICAgICAgICAgdG1wMiA9IHNpbGtfTFNISUZUMzIoIChvcHVzX2ludDMyKXhf
cHRyWyBzdWJmcl9sZW5ndGggLSBuIC0gMSBdLCAxNyApOyAgICAgICAgICAgICAgICAgIC8qIFEx
NyAqLworCisgICAgICAgICAgICAgICAgWDFfMzIxMCA9IF9tbV9zZXQxX2VwaTMyKCB4MSApOwor
ICAgICAgICAgICAgICAgIFgyXzMyMTAgPSBfbW1fc2V0MV9lcGkzMiggeDIgKTsKKyAgICAgICAg
ICAgICAgICBUTVAxXzMyMTAgPSBfbW1fc2V0emVyb19zaTEyOCgpOworICAgICAgICAgICAgICAg
IFRNUDJfMzIxMCA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7CisgICAgICAgICAgICAgICAgZm9yKCBr
ID0gMDsgayA8IG4gLSAzOyBrICs9IDQgKSB7CisgICAgICAgICAgICAgICAgICAgIFBUUl8zMjEw
ICAgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoICZ4X3B0clsgbiAtIGsgLSAxIC0gMyBdICk7Cisg
ICAgICAgICAgICAgICAgICAgIFNVQkZSXzMyMTAgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoICZ4
X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgXSApOworICAgICAgICAgICAgICAgICAgICBGSVJT
VF8zMjEwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSZDX2ZpcnN0X3Jvd1sgayBdICk7
CisgICAgICAgICAgICAgICAgICAgIFBUUl8zMjEwICAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggUFRS
XzMyMTAsICBfTU1fU0hVRkZMRSggMCwgMSwgMiwgMyApICk7CisgICAgICAgICAgICAgICAgICAg
IExBU1RfMzIxMCAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopJkNfbGFzdF9yb3dbIGsg
XSApOworICAgICAgICAgICAgICAgICAgICBBVE1QXzMyMTAgID0gX21tX2xvYWR1X3NpMTI4KCAo
X19tMTI4aSAqKSZBZl9RQVsgayBdICk7CisKKyAgICAgICAgICAgICAgICAgICAgVDFfMzIxMCA9
IF9tbV9tdWxsb19lcGkzMiggUFRSXzMyMTAsIFgxXzMyMTAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgVDJfMzIxMCA9IF9tbV9tdWxsb19lcGkzMiggU1VCRlJfMzIxMCwgWDJfMzIxMCApOworCisg
ICAgICAgICAgICAgICAgICAgIEFUTVBfMzIxMCA9IF9tbV9zcmFpX2VwaTMyKCBBVE1QXzMyMTAs
IDcgKTsKKyAgICAgICAgICAgICAgICAgICAgQVRNUF8zMjEwID0gX21tX2FkZF9lcGkzMiggQVRN
UF8zMjEwLCBDT05TVDEgKTsKKyAgICAgICAgICAgICAgICAgICAgQVRNUF8zMjEwID0gX21tX3Ny
YWlfZXBpMzIoIEFUTVBfMzIxMCwgMSApOworCisgICAgICAgICAgICAgICAgICAgIEZJUlNUXzMy
MTAgPSBfbW1fYWRkX2VwaTMyKCBGSVJTVF8zMjEwLCBUMV8zMjEwICk7CisgICAgICAgICAgICAg
ICAgICAgIExBU1RfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIExBU1RfMzIxMCwgVDJfMzIxMCApOwor
CisgICAgICAgICAgICAgICAgICAgIFBUUl8zMjEwICAgPSBfbW1fbXVsbG9fZXBpMzIoIEFUTVBf
MzIxMCwgUFRSXzMyMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgU1VCRlJfMzIxMCAgID0gX21t
X211bGxvX2VwaTMyKCBBVE1QXzMyMTAsIFNVQkZSXzMyMTAgKTsKKworICAgICAgICAgICAgICAg
ICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSZDX2ZpcnN0X3Jvd1sgayBdLCBGSVJT
VF8zMjEwICk7CisgICAgICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhp
ICopJkNfbGFzdF9yb3dbIGsgXSwgTEFTVF8zMjEwICk7CisKKyAgICAgICAgICAgICAgICAgICAg
VE1QMV8zMjEwID0gX21tX2FkZF9lcGkzMiggVE1QMV8zMjEwLCBQVFJfMzIxMCApOworICAgICAg
ICAgICAgICAgICAgICBUTVAyXzMyMTAgPSBfbW1fYWRkX2VwaTMyKCBUTVAyXzMyMTAsIFNVQkZS
XzMyMTAgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBUTVAxXzMyMTAg
PSBfbW1fYWRkX2VwaTMyKCBUTVAxXzMyMTAsIF9tbV91bnBhY2toaV9lcGk2NChUTVAxXzMyMTAs
IFRNUDFfMzIxMCApICk7CisgICAgICAgICAgICAgICAgVE1QMl8zMjEwID0gX21tX2FkZF9lcGkz
MiggVE1QMl8zMjEwLCBfbW1fdW5wYWNraGlfZXBpNjQoVE1QMl8zMjEwLCBUTVAyXzMyMTAgKSAp
OworICAgICAgICAgICAgICAgIFRNUDFfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIFRNUDFfMzIxMCwg
X21tX3NodWZmbGVsb19lcGkxNihUTVAxXzMyMTAsIDB4MEUgKSApOworICAgICAgICAgICAgICAg
IFRNUDJfMzIxMCA9IF9tbV9hZGRfZXBpMzIoIFRNUDJfMzIxMCwgX21tX3NodWZmbGVsb19lcGkx
NihUTVAyXzMyMTAsIDB4MEUgKSApOworCisgICAgICAgICAgICAgICAgdG1wMSArPSBfbW1fY3Z0
c2kxMjhfc2kzMiggVE1QMV8zMjEwICk7CisgICAgICAgICAgICAgICAgdG1wMiArPSBfbW1fY3Z0
c2kxMjhfc2kzMiggVE1QMl8zMjEwICk7CisKKyAgICAgICAgICAgICAgICBmb3IoIDsgayA8IG47
IGsrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgQ19maXJzdF9yb3dbIGsgXSA9IHNpbGtfTUxB
KCBDX2ZpcnN0X3Jvd1sgayBdLCB4MSwgeF9wdHJbIG4gLSBrIC0gMSBdICAgICAgICAgICAgKTsg
LyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgICAgICAgICBDX2xhc3Rfcm93WyBrIF0g
ID0gc2lsa19NTEEoIENfbGFzdF9yb3dbIGsgXSwgIHgyLCB4X3B0clsgc3ViZnJfbGVuZ3RoIC0g
biArIGsgXSApOyAvKiBRKCAtcnNoaWZ0cyApICovCisgICAgICAgICAgICAgICAgICAgIEF0bXAx
ID0gc2lsa19SU0hJRlRfUk9VTkQoIEFmX1FBWyBrIF0sIFFBIC0gMTcgKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFExNyAqLworICAgICAgICAgICAgICAgICAgICB0bXAx
ID0gc2lsa19NTEEoIHRtcDEsIHhfcHRyWyBuIC0gayAtIDEgXSwgICAgICAgICAgICBBdG1wMSAp
OyAgICAgICAgICAgICAgICAgICAgICAvKiBRMTcgKi8KKyAgICAgICAgICAgICAgICAgICAgdG1w
MiA9IHNpbGtfTUxBKCB0bXAyLCB4X3B0clsgc3ViZnJfbGVuZ3RoIC0gbiArIGsgXSwgQXRtcDEg
KTsgICAgICAgICAgICAgICAgICAgICAgLyogUTE3ICovCisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgdG1wMSA9IC10bXAxOyAgICAgICAgICAgICAgICAvKiBRMTcgKi8KKyAg
ICAgICAgICAgICAgICB0bXAyID0gLXRtcDI7ICAgICAgICAgICAgICAgIC8qIFExNyAqLworCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBfX20xMjhpIHhtbV90bXAxLCB4
bW1fdG1wMjsKKyAgICAgICAgICAgICAgICAgICAgX19tMTI4aSB4bW1feF9wdHJfbl9rX3gyeDAs
IHhtbV94X3B0cl9uX2tfeDN4MTsKKyAgICAgICAgICAgICAgICAgICAgX19tMTI4aSB4bW1feF9w
dHJfc3ViX3gyeDAsIHhtbV94X3B0cl9zdWJfeDN4MTsKKworICAgICAgICAgICAgICAgICAgICB4
bW1fdG1wMSA9IF9tbV9zZXQxX2VwaTMyKCB0bXAxICk7CisgICAgICAgICAgICAgICAgICAgIHht
bV90bXAyID0gX21tX3NldDFfZXBpMzIoIHRtcDIgKTsKKworICAgICAgICAgICAgICAgICAgICBm
b3IoIGsgPSAwOyBrIDw9IG4gLSAzOyBrICs9IDQgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB4bW1feF9wdHJfbl9rX3gyeDAgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoICZ4X3B0clsgbiAt
IGsgLSAzIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJfeDJ4MCA9
IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJnhfcHRyWyBzdWJmcl9sZW5ndGggLSBuICsgayAtIDEg
XSApOworCisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gyeDAgPSBfbW1f
c2h1ZmZsZV9lcGkzMiggeG1tX3hfcHRyX25fa194MngwLCBfTU1fU0hVRkZMRSggMCwgMSwgMiwg
MyApICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDJ4MCA9IF9t
bV9zbGxpX2VwaTMyKCB4bW1feF9wdHJfbl9rX3gyeDAsIC1yc2hpZnRzIC0gMSApOworICAgICAg
ICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1Yl94MngwID0gX21tX3NsbGlfZXBpMzIoIHht
bV94X3B0cl9zdWJfeDJ4MCwgLXJzaGlmdHMgLSAxICk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMsIHhtbV94X3B0cl9uX2tfeDN4MSA9IF9t
bV9zcmxpX3NpMTI4KHhtbV94X3B0cl9uX2tfeDJ4MCwgNCkqLworICAgICAgICAgICAgICAgICAg
ICAgICAgeG1tX3hfcHRyX25fa194M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHhtbV94X3B0cl9u
X2tfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOworICAgICAgICAgICAgICAgICAg
ICAgICAgeG1tX3hfcHRyX3N1Yl94M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHhtbV94X3B0cl9z
dWJfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOworCisgICAgICAgICAgICAgICAg
ICAgICAgICB4bW1feF9wdHJfbl9rX3gyeDAgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9wdHJfbl9r
X3gyeDAsIHhtbV90bXAxICk7CisgICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfbl9r
X3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9wdHJfbl9rX3gzeDEsIHhtbV90bXAxICk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB4bW1feF9wdHJfc3ViX3gyeDAgPSBfbW1fbXVsX2VwaTMy
KCB4bW1feF9wdHJfc3ViX3gyeDAsIHhtbV90bXAyICk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB4bW1feF9wdHJfc3ViX3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9wdHJfc3ViX3gzeDEs
IHhtbV90bXAyICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9uX2tfeDJ4
MCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1feF9wdHJfbl9rX3gyeDAsIDE2ICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB4bW1feF9wdHJfbl9rX3gzeDEgPSBfbW1fc2xsaV9lcGk2NCggeG1tX3hf
cHRyX25fa194M3gxLCAxNiApOworICAgICAgICAgICAgICAgICAgICAgICAgeG1tX3hfcHRyX3N1
Yl94MngwID0gX21tX3NybGlfZXBpNjQoIHhtbV94X3B0cl9zdWJfeDJ4MCwgMTYgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHhtbV94X3B0cl9zdWJfeDN4MSA9IF9tbV9zbGxpX2VwaTY0KCB4
bW1feF9wdHJfc3ViX3gzeDEsIDE2ICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94
X3B0cl9uX2tfeDJ4MCA9IF9tbV9ibGVuZF9lcGkxNiggeG1tX3hfcHRyX25fa194MngwLCB4bW1f
eF9wdHJfbl9rX3gzeDEsIDB4Q0MgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbV94X3B0
cl9zdWJfeDJ4MCA9IF9tbV9ibGVuZF9lcGkxNiggeG1tX3hfcHRyX3N1Yl94MngwLCB4bW1feF9w
dHJfc3ViX3gzeDEsIDB4Q0MgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgWDFfMzIxMCAg
PSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopJkNBZlsgayBdICk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBQVFJfMzIxMCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikmQ0FiWyBr
IF0gKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgWDFfMzIxMCAgPSBfbW1fYWRkX2VwaTMy
KCBYMV8zMjEwLCB4bW1feF9wdHJfbl9rX3gyeDAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFBUUl8zMjEwID0gX21tX2FkZF9lcGkzMiggUFRSXzMyMTAsIHhtbV94X3B0cl9zdWJfeDJ4MCAp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAq
KSZDQWZbIGsgXSwgWDFfMzIxMCApOworICAgICAgICAgICAgICAgICAgICAgICAgX21tX3N0b3Jl
dV9zaTEyOCggKF9fbTEyOGkgKikmQ0FiWyBrIF0sIFBUUl8zMjEwICk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBmb3IoIDsgayA8PSBuOyBrKysgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQWZbIGsgXSA9IHNpbGtfU01MQVdXKCBDQWZbIGsgXSwg
dG1wMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxrX0xTSElGVDMyKCAob3B1c19p
bnQzMil4X3B0clsgbiAtIGsgXSwgLXJzaGlmdHMgLSAxICkgKTsgICAgICAgICAgICAgICAgICAg
IC8qIFEoIC1yc2hpZnQgKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgQ0FiWyBrIF0gPSBz
aWxrX1NNTEFXVyggQ0FiWyBrIF0sIHRtcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2lsa19MU0hJRlQzMiggKG9wdXNfaW50MzIpeF9wdHJbIHN1YmZyX2xlbmd0aCAtIG4gKyBrIC0g
MSBdLCAtcnNoaWZ0cyAtIDEgKSApOyAvKiBRKCAtcnNoaWZ0ICkgKi8KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8qIENhbGN1bGF0ZSBub21pbmF0b3IgYW5kIGRlbm9taW5hdG9yIGZvciB0aGUgbmV4
dCBvcmRlciByZWZsZWN0aW9uIChwYXJjb3IpIGNvZWZmaWNpZW50ICovCisgICAgICAgIHRtcDEg
PSBDX2ZpcnN0X3Jvd1sgbiBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KKyAg
ICAgICAgdG1wMiA9IENfbGFzdF9yb3dbIG4gXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggLXJzaGlm
dHMgKSAqLworICAgICAgICBudW0gID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBRKCAtcnNoaWZ0cyApICovCisgICAgICAgIG5yZyAgPSBzaWxrX0FERDMyKCBDQWJbIDAgXSwg
Q0FmWyAwIF0gKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFEoIDEtcnNoaWZ0cyApICovCisgICAgICAgIGZvciggayA9IDA7IGsgPCBu
OyBrKysgKSB7CisgICAgICAgICAgICBBdG1wX1FBID0gQWZfUUFbIGsgXTsKKyAgICAgICAgICAg
IGx6ID0gc2lsa19DTFozMiggc2lsa19hYnMoIEF0bXBfUUEgKSApIC0gMTsKKyAgICAgICAgICAg
IGx6ID0gc2lsa19taW4oIDMyIC0gUUEsIGx6ICk7CisgICAgICAgICAgICBBdG1wMSA9IHNpbGtf
TFNISUZUMzIoIEF0bXBfUUEsIGx6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIFFBICsgbHogKSAqLworCisgICAgICAgICAgICB0
bXAxID0gc2lsa19BRERfTFNISUZUMzIoIHRtcDEsIHNpbGtfU01NVUwoIENfbGFzdF9yb3dbICBu
IC0gayAtIDEgXSwgQXRtcDEgKSwgMzIgLSBRQSAtIGx6ICk7ICAvKiBRKCAtcnNoaWZ0cyApICov
CisgICAgICAgICAgICB0bXAyID0gc2lsa19BRERfTFNISUZUMzIoIHRtcDIsIHNpbGtfU01NVUwo
IENfZmlyc3Rfcm93WyBuIC0gayAtIDEgXSwgQXRtcDEgKSwgMzIgLSBRQSAtIGx6ICk7ICAvKiBR
KCAtcnNoaWZ0cyApICovCisgICAgICAgICAgICBudW0gID0gc2lsa19BRERfTFNISUZUMzIoIG51
bSwgIHNpbGtfU01NVUwoIENBYlsgbiAtIGsgXSwgICAgICAgICAgICAgQXRtcDEgKSwgMzIgLSBR
QSAtIGx6ICk7ICAvKiBRKCAtcnNoaWZ0cyApICovCisgICAgICAgICAgICBucmcgID0gc2lsa19B
RERfTFNISUZUMzIoIG5yZywgIHNpbGtfU01NVUwoIHNpbGtfQUREMzIoIENBYlsgayArIDEgXSwg
Q0FmWyBrICsgMSBdICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0bXAxICksIDMyIC0gUUEg
LSBseiApOyAgICAvKiBRKCAxLXJzaGlmdHMgKSAqLworICAgICAgICB9CisgICAgICAgIENBZlsg
biArIDEgXSA9IHRtcDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEoIC1yc2hpZnRzICkgKi8KKyAg
ICAgICAgQ0FiWyBuICsgMSBdID0gdG1wMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUSggLXJzaGlm
dHMgKSAqLworICAgICAgICBudW0gPSBzaWxrX0FERDMyKCBudW0sIHRtcDIgKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBRKCAtcnNoaWZ0cyApICovCisgICAgICAgIG51bSA9IHNpbGtfTFNISUZUMzIoIC1udW0sIDEg
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFEoIDEtcnNoaWZ0cyApICovCisKKyAgICAgICAgLyogQ2FsY3VsYXRlIHRo
ZSBuZXh0IG9yZGVyIHJlZmxlY3Rpb24gKHBhcmNvcikgY29lZmZpY2llbnQgKi8KKyAgICAgICAg
aWYoIHNpbGtfYWJzKCBudW0gKSA8IG5yZyApIHsKKyAgICAgICAgICAgIHJjX1EzMSA9IHNpbGtf
RElWMzJfdmFyUSggbnVtLCBucmcsIDMxICk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICByY19RMzEgPSAoIG51bSA+IDAgKSA/IHNpbGtfaW50MzJfTUFYIDogc2lsa19pbnQzMl9NSU47
CisgICAgICAgIH0KKworICAgICAgICAvKiBVcGRhdGUgaW52ZXJzZSBwcmVkaWN0aW9uIGdhaW4g
Ki8KKyAgICAgICAgdG1wMSA9ICggKG9wdXNfaW50MzIpMSA8PCAzMCApIC0gc2lsa19TTU1VTCgg
cmNfUTMxLCByY19RMzEgKTsKKyAgICAgICAgdG1wMSA9IHNpbGtfTFNISUZUKCBzaWxrX1NNTVVM
KCBpbnZHYWluX1EzMCwgdG1wMSApLCAyICk7CisgICAgICAgIGlmKCB0bXAxIDw9IG1pbkludkdh
aW5fUTMwICkgeworICAgICAgICAgICAgLyogTWF4IHByZWRpY3Rpb24gZ2FpbiBleGNlZWRlZDsg
c2V0IHJlZmxlY3Rpb24gY29lZmZpY2llbnQgc3VjaCB0aGF0IG1heCBwcmVkaWN0aW9uIGdhaW4g
aXMgZXhhY3RseSBoaXQgKi8KKyAgICAgICAgICAgIHRtcDIgPSAoIChvcHVzX2ludDMyKTEgPDwg
MzAgKSAtIHNpbGtfRElWMzJfdmFyUSggbWluSW52R2Fpbl9RMzAsIGludkdhaW5fUTMwLCAzMCAp
OyAgICAgICAgICAgIC8qIFEzMCAqLworICAgICAgICAgICAgcmNfUTMxID0gc2lsa19TUVJUX0FQ
UFJPWCggdG1wMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUTE1ICovCisgICAgICAgICAgICBpZiggcmNfUTMxID4gMCApIHsKKyAgICAgICAg
ICAgICAgICAgLyogTmV3dG9uLVJhcGhzb24gaXRlcmF0aW9uICovCisgICAgICAgICAgICAgICAg
cmNfUTMxID0gc2lsa19SU0hJRlQzMiggcmNfUTMxICsgc2lsa19ESVYzMiggdG1wMiwgcmNfUTMx
ICksIDEgKTsgICAgICAgICAgICAgICAgICAgLyogUTE1ICovCisgICAgICAgICAgICAgICAgcmNf
UTMxID0gc2lsa19MU0hJRlQzMiggcmNfUTMxLCAxNiApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogUTMxICovCisgICAgICAgICAgICAgICAgaWYoIG51
bSA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEVuc3VyZSBhZGp1c3RlZCByZWZsZWN0
aW9uIGNvZWZmaWNpZW50cyBoYXMgdGhlIG9yaWdpbmFsIHNpZ24gKi8KKyAgICAgICAgICAgICAg
ICAgICAgcmNfUTMxID0gLXJjX1EzMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpbnZHYWluX1EzMCA9IG1pbkludkdhaW5fUTMwOworICAgICAgICAgICAg
cmVhY2hlZF9tYXhfZ2FpbiA9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnZH
YWluX1EzMCA9IHRtcDE7CisgICAgICAgIH0KKworICAgICAgICAvKiBVcGRhdGUgdGhlIEFSIGNv
ZWZmaWNpZW50cyAqLworICAgICAgICBmb3IoIGsgPSAwOyBrIDwgKG4gKyAxKSA+PiAxOyBrKysg
KSB7CisgICAgICAgICAgICB0bXAxID0gQWZfUUFbIGsgXTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRQSAqLworICAg
ICAgICAgICAgdG1wMiA9IEFmX1FBWyBuIC0gayAtIDEgXTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUUEgKi8KKyAgICAgICAgICAg
IEFmX1FBWyBrIF0gICAgICAgICA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAxLCBzaWxrX1NNTVVM
KCB0bXAyLCByY19RMzEgKSwgMSApOyAgICAgIC8qIFFBICovCisgICAgICAgICAgICBBZl9RQVsg
biAtIGsgLSAxIF0gPSBzaWxrX0FERF9MU0hJRlQzMiggdG1wMiwgc2lsa19TTU1VTCggdG1wMSwg
cmNfUTMxICksIDEgKTsgICAgICAvKiBRQSAqLworICAgICAgICB9CisgICAgICAgIEFmX1FBWyBu
IF0gPSBzaWxrX1JTSElGVDMyKCByY19RMzEsIDMxIC0gUUEgKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBRQSAqLworCisgICAgICAgIGlmKCByZWFjaGVkX21h
eF9nYWluICkgeworICAgICAgICAgICAgLyogUmVhY2hlZCBtYXggcHJlZGljdGlvbiBnYWluOyBz
ZXQgcmVtYWluaW5nIGNvZWZmaWNpZW50cyB0byB6ZXJvIGFuZCBleGl0IGxvb3AgKi8KKyAgICAg
ICAgICAgIGZvciggayA9IG4gKyAxOyBrIDwgRDsgaysrICkgeworICAgICAgICAgICAgICAgIEFm
X1FBWyBrIF0gPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICAvKiBVcGRhdGUgQyAqIEFmIGFuZCBDICogQWIgKi8KKyAgICAgICAgZm9y
KCBrID0gMDsgayA8PSBuICsgMTsgaysrICkgeworICAgICAgICAgICAgdG1wMSA9IENBZlsgayBd
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgdG1wMiA9IENBYlsg
biAtIGsgKyAxIF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgQ0FmWyBrIF0g
ICAgICAgICA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAxLCBzaWxrX1NNTVVMKCB0bXAyLCByY19R
MzEgKSwgMSApOyAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgQ0FiWyBu
IC0gayArIDEgXSA9IHNpbGtfQUREX0xTSElGVDMyKCB0bXAyLCBzaWxrX1NNTVVMKCB0bXAxLCBy
Y19RMzEgKSwgMSApOyAgICAgICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICB9CisgICAg
fQorCisgICAgaWYoIHJlYWNoZWRfbWF4X2dhaW4gKSB7CisgICAgICAgIGZvciggayA9IDA7IGsg
PCBEOyBrKysgKSB7CisgICAgICAgICAgICAvKiBTY2FsZSBjb2VmZmljaWVudHMgKi8KKyAgICAg
ICAgICAgIEFfUTE2WyBrIF0gPSAtc2lsa19SU0hJRlRfUk9VTkQoIEFmX1FBWyBrIF0sIFFBIC0g
MTYgKTsKKyAgICAgICAgfQorICAgICAgICAvKiBTdWJ0cmFjdCBlbmVyZ3kgb2YgcHJlY2VkaW5n
IHNhbXBsZXMgZnJvbSBDMCAqLworICAgICAgICBpZiggcnNoaWZ0cyA+IDAgKSB7CisgICAgICAg
ICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMrKyApIHsKKyAgICAgICAgICAgICAgICB4
X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOworICAgICAgICAgICAgICAgIEMwIC09IChvcHVz
X2ludDMyKXNpbGtfUlNISUZUNjQoIHNpbGtfaW5uZXJfcHJvZDE2X2FsaWduZWRfNjQoIHhfcHRy
LCB4X3B0ciwgRCwgYXJjaCApLCByc2hpZnRzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmb3IoIHMgPSAwOyBzIDwgbmJfc3ViZnI7IHMrKyApIHsKKyAg
ICAgICAgICAgICAgICB4X3B0ciA9IHggKyBzICogc3ViZnJfbGVuZ3RoOworICAgICAgICAgICAg
ICAgIEMwIC09IHNpbGtfTFNISUZUMzIoIHNpbGtfaW5uZXJfcHJvZF9hbGlnbmVkKCB4X3B0ciwg
eF9wdHIsIEQsIGFyY2ggKSwgLXJzaGlmdHMgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICAvKiBBcHByb3hpbWF0ZSByZXNpZHVhbCBlbmVyZ3kgKi8KKyAgICAgICAgKnJlc19u
cmcgPSBzaWxrX0xTSElGVCggc2lsa19TTU1VTCggaW52R2Fpbl9RMzAsIEMwICksIDIgKTsKKyAg
ICAgICAgKnJlc19ucmdfUSA9IC1yc2hpZnRzOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFJl
dHVybiByZXNpZHVhbCBlbmVyZ3kgKi8KKyAgICAgICAgbnJnICA9IENBZlsgMCBdOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBRKCAtcnNoaWZ0cyApICovCisgICAgICAgIHRtcDEgPSAob3B1c19pbnQz
MikxIDw8IDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTE2ICovCisgICAgICAgIGZvciggayA9
IDA7IGsgPCBEOyBrKysgKSB7CisgICAgICAgICAgICBBdG1wMSA9IHNpbGtfUlNISUZUX1JPVU5E
KCBBZl9RQVsgayBdLCBRQSAtIDE2ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUTE2ICovCisgICAgICAgICAgICBucmcgID0gc2lsa19TTUxBV1coIG5yZywgQ0Fm
WyBrICsgMSBdLCBBdG1wMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogUSggLXJzaGlmdHMgKSAqLworICAgICAgICAgICAgdG1wMSA9IHNpbGtfU01MQVdXKCB0
bXAxLCBBdG1wMSwgQXRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFExNiAqLworICAgICAgICAgICAgQV9RMTZbIGsgXSA9IC1BdG1wMTsKKyAg
ICAgICAgfQorICAgICAgICAqcmVzX25yZyA9IHNpbGtfU01MQVdXKCBucmcsIHNpbGtfU01NVUwo
IFNJTEtfRklYX0NPTlNUKCBGSU5EX0xQQ19DT05EX0ZBQywgMzIgKSwgQzAgKSwgLXRtcDEgKTsv
KiBRKCAtcnNoaWZ0cyApICovCisgICAgICAgICpyZXNfbnJnX1EgPSAtcnNoaWZ0czsKKyAgICB9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZml4ZWQveDg2L3ByZWZpbHRlcl9GSVhfc3NlLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
Zml4ZWQveDg2L3ByZWZpbHRlcl9GSVhfc3NlLmMKaW5kZXggZDhjOWMyZjU1ZjA2NjQ1MDgyOTMw
OTgwMmI4MTU5M2JmNTU4YTRlZC4uNTU1NDMyY2Q5NjU3MGI4MDVkYjU4N2JmMjM1YjBlMDg1YTdm
OWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni9wcmVmaWx0ZXJfRklYX3NzZS5jCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9maXhlZC94ODYvcHJlZmlsdGVyX0ZJWF9zc2UuYwpAQCAtNDksNyArNDksNyBAQCB2b2lk
IHNpbGtfd2FycGVkX0xQQ19hbmFseXNpc19maWx0ZXJfRklYX3NzZTRfMSgKICAgICBvcHVzX2lu
dDMyICAgYWNjX1ExMSwgdG1wMSwgdG1wMjsKIAogICAgIC8qIE9yZGVyIG11c3QgYmUgZXZlbiAq
LwotICAgIHNpbGtfYXNzZXJ0KCAoIG9yZGVyICYgMSApID09IDAgKTsKKyAgICBjZWx0X2Fzc2Vy
dCggKCBvcmRlciAmIDEgKSA9PSAwICk7CiAKICAgICBpZiAob3JkZXIgPT0gMTApCiAgICAgewpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIHNpbGtfd2FycGVkX0xQQ19hbmFseXNpc19maWx0ZXJfRklY
X3NzZTRfMSgKICAgICAgICAgICAgIHJlZ2lzdGVyIG9wdXNfaW50MzIgc3RhdGVfOCwgc3RhdGVf
OSwgc3RhdGVfYTsKICAgICAgICAgICAgIHJlZ2lzdGVyIG9wdXNfaW50NjQgY29lZl9RMTNfOCwg
Y29lZl9RMTNfOTsKIAotICAgICAgICAgICAgc2lsa19hc3NlcnQoIGxlbmd0aCA+IDAgKTsKKyAg
ICAgICAgICAgIGNlbHRfYXNzZXJ0KCBsZW5ndGggPiAwICk7CiAKICAgICAgICAgICAgIGNvZWZf
UTEzXzMyMTAgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoICZjb2VmX1ExM1sgMCBdICk7CiAgICAg
ICAgICAgICBjb2VmX1ExM183NjU0ID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCAmY29lZl9RMTNb
IDQgXSApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni92ZWN0b3Jfb3BzX0ZJWF9zc2UuYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c2lsay9maXhlZC94ODYvdmVjdG9yX29wc19GSVhfc3NlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGMxZTkwNTY0ZDBlZDdlNmEzNTA4MjdkMzk2YTIyMzAwOGU0ZjhiNzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni92
ZWN0b3Jfb3BzX0ZJWF9zc2UuYworKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qIENv
cHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5DCi0gICBXcml0dGVuIGJ5IFhpYW5n
TWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZwotCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICAgYXJlIG1ldDoKLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0gICAtIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCi0gICBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgot
ICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKLSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZkZWYgSEFWRV9D
T05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx4bW1pbnRy
aW4uaD4KLSNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KLSNp
bmNsdWRlICJtYWluLmgiCi0KLSNpbmNsdWRlICJTaWdQcm9jX0ZJWC5oIgotI2luY2x1ZGUgInBp
dGNoLmgiCi0KLW9wdXNfaW50NjQgc2lsa19pbm5lcl9wcm9kMTZfYWxpZ25lZF82NF9zc2U0XzEo
Ci0gICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgICppblZlYzEsICAgICAgICAgICAgLyog
ICAgSSBpbnB1dCB2ZWN0b3IgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgICAgICAgICAqaW5WZWMyLCAgICAg
ICAgICAgIC8qICAgIEkgaW5wdXQgdmVjdG9yIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgbGVu
ICAgICAgICAgICAgICAgICAvKiAgICBJIHZlY3RvciBsZW5ndGhzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0pCi17Ci0gICAgb3B1c19pbnQgIGksIGRh
dGFTaXplODsKLSAgICBvcHVzX2ludDY0IHN1bTsKLQotICAgIF9fbTEyOGkgeG1tX3RlbXBhOwot
ICAgIF9fbTEyOGkgaW5WZWMxXzc2NTQzMjEwLCBhY2MxOwotICAgIF9fbTEyOGkgaW5WZWMyXzc2
NTQzMjEwLCBhY2MyOwotCi0gICAgc3VtID0gMDsKLSAgICBkYXRhU2l6ZTggPSBsZW4gJiB+NzsK
LQotICAgIGFjYzEgPSBfbW1fc2V0emVyb19zaTEyOCgpOwotICAgIGFjYzIgPSBfbW1fc2V0emVy
b19zaTEyOCgpOwotCi0gICAgZm9yKCBpID0gMDsgaSA8IGRhdGFTaXplODsgaSArPSA4ICkgewot
ICAgICAgICBpblZlYzFfNzY1NDMyMTAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZp
blZlYzFbaSArIDBdICkgKTsKLSAgICAgICAgaW5WZWMyXzc2NTQzMjEwID0gX21tX2xvYWR1X3Np
MTI4KCAoX19tMTI4aSAqKSgmaW5WZWMyW2kgKyAwXSApICk7Ci0KLSAgICAgICAgLyogb25seSB3
aGVuIGFsbCA0IG9wZXJhbmRzIGFyZSAtMzI3NjggKDB4ODAwMCksIHRoaXMgcmVzdWx0cyBpbiB3
cmFwIGFyb3VuZCAqLwotICAgICAgICBpblZlYzFfNzY1NDMyMTAgPSBfbW1fbWFkZF9lcGkxNigg
aW5WZWMxXzc2NTQzMjEwLCBpblZlYzJfNzY1NDMyMTAgKTsKLQotICAgICAgICB4bW1fdGVtcGEg
ICAgICAgPSBfbW1fY3Z0ZXBpMzJfZXBpNjQoIGluVmVjMV83NjU0MzIxMCApOwotICAgICAgICAv
KiBlcXVhbCBzaGlmdCByaWdodCA4IGJ5dGVzICovCi0gICAgICAgIGluVmVjMV83NjU0MzIxMCA9
IF9tbV9zaHVmZmxlX2VwaTMyKCBpblZlYzFfNzY1NDMyMTAsIF9NTV9TSFVGRkxFKCAwLCAwLCAz
LCAyICkgKTsKLSAgICAgICAgaW5WZWMxXzc2NTQzMjEwID0gX21tX2N2dGVwaTMyX2VwaTY0KCBp
blZlYzFfNzY1NDMyMTAgKTsKLQotICAgICAgICBhY2MxID0gX21tX2FkZF9lcGk2NCggYWNjMSwg
eG1tX3RlbXBhICk7Ci0gICAgICAgIGFjYzIgPSBfbW1fYWRkX2VwaTY0KCBhY2MyLCBpblZlYzFf
NzY1NDMyMTAgKTsKLSAgICB9Ci0KLSAgICBhY2MxID0gX21tX2FkZF9lcGk2NCggYWNjMSwgYWNj
MiApOwotCi0gICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgOCBieXRlcyAqLwotICAgIGFjYzIgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggYWNjMSwgX01NX1NIVUZGTEUoIDAsIDAsIDMsIDIgKSApOwotICAg
IGFjYzEgPSBfbW1fYWRkX2VwaTY0KCBhY2MxLCBhY2MyICk7Ci0KLSAgICBfbW1fc3RvcmVsX2Vw
aTY0KCAoX19tMTI4aSAqKSZzdW0sIGFjYzEgKTsKLQotICAgIGZvciggOyBpIDwgbGVuOyBpKysg
KSB7Ci0gICAgICAgIHN1bSA9IHNpbGtfU01MQUJCKCBzdW0sIGluVmVjMVsgaSBdLCBpblZlYzJb
IGkgXSApOwotICAgIH0KLQotICAgIHJldHVybiBzdW07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZml4
ZWQveDg2L3ZlY3Rvcl9vcHNfRklYX3NzZTRfMS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni92ZWN0b3Jfb3Bz
X0ZJWF9zc2U0XzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWU5MDU2NGQwZWQ3ZTZhMzUwODI3ZDM5NmEyMjMw
MDhlNGY4Yjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2ZpeGVkL3g4Ni92ZWN0b3Jfb3BzX0ZJ
WF9zc2U0XzEuYwpAQCAtMCwwICsxLDg4IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENpc2Nv
IFN5c3RlbXMsIElOQworICAgV3JpdHRlbiBieSBYaWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5QZW5n
IFlhbldhbmcKKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBtZXQ6CisKKyAg
IC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8eG1taW50cmluLmg+CisjaW5jbHVkZSA8ZW1taW50
cmluLmg+CisjaW5jbHVkZSA8c21taW50cmluLmg+CisjaW5jbHVkZSAibWFpbi5oIgorCisjaW5j
bHVkZSAiU2lnUHJvY19GSVguaCIKKyNpbmNsdWRlICJwaXRjaC5oIgorCitvcHVzX2ludDY0IHNp
bGtfaW5uZXJfcHJvZDE2X2FsaWduZWRfNjRfc3NlNF8xKAorICAgIGNvbnN0IG9wdXNfaW50MTYg
ICAgICAgICAgICAqaW5WZWMxLCAgICAgICAgICAgIC8qICAgIEkgaW5wdXQgdmVjdG9yIDEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBv
cHVzX2ludDE2ICAgICAgICAgICAgKmluVmVjMiwgICAgICAgICAgICAvKiAgICBJIGlucHV0IHZl
Y3RvciAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIGxlbiAgICAgICAgICAgICAgICAgLyogICAg
SSB2ZWN0b3IgbGVuZ3RocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworKQoreworICAgIG9wdXNfaW50ICBpLCBkYXRhU2l6ZTg7CisgICAgb3B1c19pbnQ2
NCBzdW07CisKKyAgICBfX20xMjhpIHhtbV90ZW1wYTsKKyAgICBfX20xMjhpIGluVmVjMV83NjU0
MzIxMCwgYWNjMTsKKyAgICBfX20xMjhpIGluVmVjMl83NjU0MzIxMCwgYWNjMjsKKworICAgIHN1
bSA9IDA7CisgICAgZGF0YVNpemU4ID0gbGVuICYgfjc7CisKKyAgICBhY2MxID0gX21tX3NldHpl
cm9fc2kxMjgoKTsKKyAgICBhY2MyID0gX21tX3NldHplcm9fc2kxMjgoKTsKKworICAgIGZvcigg
aSA9IDA7IGkgPCBkYXRhU2l6ZTg7IGkgKz0gOCApIHsKKyAgICAgICAgaW5WZWMxXzc2NTQzMjEw
ID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmaW5WZWMxW2kgKyAwXSApICk7CisgICAg
ICAgIGluVmVjMl83NjU0MzIxMCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJmluVmVj
MltpICsgMF0gKSApOworCisgICAgICAgIC8qIG9ubHkgd2hlbiBhbGwgNCBvcGVyYW5kcyBhcmUg
LTMyNzY4ICgweDgwMDApLCB0aGlzIHJlc3VsdHMgaW4gd3JhcCBhcm91bmQgKi8KKyAgICAgICAg
aW5WZWMxXzc2NTQzMjEwID0gX21tX21hZGRfZXBpMTYoIGluVmVjMV83NjU0MzIxMCwgaW5WZWMy
Xzc2NTQzMjEwICk7CisKKyAgICAgICAgeG1tX3RlbXBhICAgICAgID0gX21tX2N2dGVwaTMyX2Vw
aTY0KCBpblZlYzFfNzY1NDMyMTAgKTsKKyAgICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgOCBi
eXRlcyAqLworICAgICAgICBpblZlYzFfNzY1NDMyMTAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggaW5W
ZWMxXzc2NTQzMjEwLCBfTU1fU0hVRkZMRSggMCwgMCwgMywgMiApICk7CisgICAgICAgIGluVmVj
MV83NjU0MzIxMCA9IF9tbV9jdnRlcGkzMl9lcGk2NCggaW5WZWMxXzc2NTQzMjEwICk7CisKKyAg
ICAgICAgYWNjMSA9IF9tbV9hZGRfZXBpNjQoIGFjYzEsIHhtbV90ZW1wYSApOworICAgICAgICBh
Y2MyID0gX21tX2FkZF9lcGk2NCggYWNjMiwgaW5WZWMxXzc2NTQzMjEwICk7CisgICAgfQorCisg
ICAgYWNjMSA9IF9tbV9hZGRfZXBpNjQoIGFjYzEsIGFjYzIgKTsKKworICAgIC8qIGVxdWFsIHNo
aWZ0IHJpZ2h0IDggYnl0ZXMgKi8KKyAgICBhY2MyID0gX21tX3NodWZmbGVfZXBpMzIoIGFjYzEs
IF9NTV9TSFVGRkxFKCAwLCAwLCAzLCAyICkgKTsKKyAgICBhY2MxID0gX21tX2FkZF9lcGk2NCgg
YWNjMSwgYWNjMiApOworCisgICAgX21tX3N0b3JlbF9lcGk2NCggKF9fbTEyOGkgKikmc3VtLCBh
Y2MxICk7CisKKyAgICBmb3IoIDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICBzdW0gPSBzaWxr
X1NNTEFCQiggc3VtLCBpblZlYzFbIGkgXSwgaW5WZWMyWyBpIF0gKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gc3VtOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L0xQQ19hbmFseXNpc19maWx0ZXJf
RkxQLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvZmxvYXQvTFBDX2FuYWx5c2lzX2ZpbHRlcl9GTFAuYwppbmRleCBjYWU4OWEw
YTE4MmNhZDQ0OTQ2NDIxY2M4OGY4OTUyNDY1M2JmZDVjLi4wZTFhMWZlZDBmZmU4N2ZjMWZjNmNl
NDg5OGVkMzYwZGFmYjdiZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvTFBDX2FuYWx5c2lzX2Zp
bHRlcl9GTFAuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvTFBDX2FuYWx5c2lzX2ZpbHRlcl9GTFAuYwpAQCAt
MjE1LDcgKzIxNSw3IEBAIHZvaWQgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyX0ZMUCgKICAgICBj
b25zdCBvcHVzX2ludCAgICAgICAgICAgICAgICAgIE9yZGVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEkgICAgTFBDIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwogKQogewotICAgIHNpbGtfYXNzZXJ0KCBPcmRlciA8PSBsZW5ndGggKTsKKyAgICBj
ZWx0X2Fzc2VydCggT3JkZXIgPD0gbGVuZ3RoICk7CiAKICAgICBzd2l0Y2goIE9yZGVyICkgewog
ICAgICAgICBjYXNlIDY6CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBzaWxrX0xQQ19hbmFseXNp
c19maWx0ZXJfRkxQKAogICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCAwICk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2FwcGx5X3NpbmVf
d2luZG93X0ZMUC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2FwcGx5X3NpbmVfd2luZG93X0ZMUC5jCmluZGV4IDZh
YWU1N2MwYWI5OWNkMTQzYzdkNzhiZGM5ZDNiNDMzZjY2MWJiZmMuLmU0OWU3MTc5OTE2NWFlYzQw
MWIwMjFiODZiYjViODczYTQ5ZmVlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9hcHBseV9zaW5l
X3dpbmRvd19GTFAuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvYXBwbHlfc2luZV93aW5kb3dfRkxQLmMKQEAg
LTQ1LDEwICs0NSwxMCBAQCB2b2lkIHNpbGtfYXBwbHlfc2luZV93aW5kb3dfRkxQKAogICAgIG9w
dXNfaW50ICAgazsKICAgICBzaWxrX2Zsb2F0IGZyZXEsIGMsIFMwLCBTMTsKIAotICAgIHNpbGtf
YXNzZXJ0KCB3aW5fdHlwZSA9PSAxIHx8IHdpbl90eXBlID09IDIgKTsKKyAgICBjZWx0X2Fzc2Vy
dCggd2luX3R5cGUgPT0gMSB8fCB3aW5fdHlwZSA9PSAyICk7CiAKICAgICAvKiBMZW5ndGggbXVz
dCBiZSBtdWx0aXBsZSBvZiA0ICovCi0gICAgc2lsa19hc3NlcnQoICggbGVuZ3RoICYgMyApID09
IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggKCBsZW5ndGggJiAzICkgPT0gMCApOwogCiAgICAgZnJl
cSA9IFBJIC8gKCBsZW5ndGggKyAxICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9idXJnX21v
ZGlmaWVkX0ZMUC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2J1cmdfbW9kaWZpZWRfRkxQLmMKaW5kZXggZWE1ZGMy
NWE5M2E3ZTJiY2RlZDMxMjliZWI3M2ZhZWIxMjc4YjAxYS4uNzU2Yjc2YTM1YmIyOGMwODU2NTJm
NGVlYjk0ODg3MWY1YjNkZDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2J1cmdfbW9kaWZpZWRf
RkxQLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2J1cmdfbW9kaWZpZWRfRkxQLmMKQEAgLTUyLDcgKzUyLDcg
QEAgc2lsa19mbG9hdCBzaWxrX2J1cmdfbW9kaWZpZWRfRkxQKCAgICAgICAgICAvKiBPICAgIHJl
dHVybnMgcmVzaWR1YWwgZW5lcmd5CiAgICAgZG91YmxlICAgICAgICAgICBDQWZbIFNJTEtfTUFY
X09SREVSX0xQQyArIDEgXSwgQ0FiWyBTSUxLX01BWF9PUkRFUl9MUEMgKyAxIF07CiAgICAgZG91
YmxlICAgICAgICAgICBBZlsgU0lMS19NQVhfT1JERVJfTFBDIF07CiAKLSAgICBzaWxrX2Fzc2Vy
dCggc3ViZnJfbGVuZ3RoICogbmJfc3ViZnIgPD0gTUFYX0ZSQU1FX1NJWkUgKTsKKyAgICBjZWx0
X2Fzc2VydCggc3ViZnJfbGVuZ3RoICogbmJfc3ViZnIgPD0gTUFYX0ZSQU1FX1NJWkUgKTsKIAog
ICAgIC8qIENvbXB1dGUgYXV0b2NvcnJlbGF0aW9ucywgYWRkZWQgb3ZlciBzdWJmcmFtZXMgKi8K
ICAgICBDMCA9IHNpbGtfZW5lcmd5X0ZMUCggeCwgbmJfc3ViZnIgKiBzdWJmcl9sZW5ndGggKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc2lsay9mbG9hdC9lbmNvZGVfZnJhbWVfRkxQLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvZW5j
b2RlX2ZyYW1lX0ZMUC5jCmluZGV4IDQ5OTU2YTJkNzUyYzY5MzhiMzAzMzE3OTJiYjUyZDcyNGE4
OWVjZTIuLmIwMjljM2Y1Y2E4MzBjYjk4M2E5ZTNmMDQ3NGZjMDBjNjg0ZDEzOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9mbG9hdC9lbmNvZGVfZnJhbWVfRkxQLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2VuY29kZV9m
cmFtZV9GTFAuYwpAQCAtMjQ4LDcgKzI0OCw3IEBAIG9wdXNfaW50IHNpbGtfZW5jb2RlX2ZyYW1l
X0ZMUCgKICAgICAgICAgICAgICAgICBpZiggZm91bmRfbG93ZXIgJiYgKCBnYWluc0lEID09IGdh
aW5zSURfbG93ZXIgfHwgbkJpdHMgPiBtYXhCaXRzICkgKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8qIFJlc3RvcmUgb3V0cHV0IHN0YXRlIGZyb20gZWFybGllciBpdGVyYXRpb24gdGhhdCBkaWQg
bWVldCB0aGUgYml0cmF0ZSBidWRnZXQgKi8KICAgICAgICAgICAgICAgICAgICAgc2lsa19tZW1j
cHkoIHBzUmFuZ2VFbmMsICZzUmFuZ2VFbmNfY29weTIsIHNpemVvZiggZWNfZW5jICkgKTsKLSAg
ICAgICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHNSYW5nZUVuY19jb3B5Mi5vZmZzIDw9IDEy
NzUgKTsKKyAgICAgICAgICAgICAgICAgICAgY2VsdF9hc3NlcnQoIHNSYW5nZUVuY19jb3B5Mi5v
ZmZzIDw9IDEyNzUgKTsKICAgICAgICAgICAgICAgICAgICAgc2lsa19tZW1jcHkoIHBzUmFuZ2VF
bmMtPmJ1ZiwgZWNfYnVmX2NvcHksIHNSYW5nZUVuY19jb3B5Mi5vZmZzICk7CiAgICAgICAgICAg
ICAgICAgICAgIHNpbGtfbWVtY3B5KCAmcHNFbmMtPnNDbW4uc05TUSwgJnNOU1FfY29weTIsIHNp
emVvZiggc2lsa19uc3Ffc3RhdGUgKSApOwogICAgICAgICAgICAgICAgICAgICBwc0VuYy0+c1No
YXBlLkxhc3RHYWluSW5kZXggPSBMYXN0R2FpbkluZGV4X2NvcHkyOwpAQCAtMjc4LDcgKzI3OCw3
IEBAIG9wdXNfaW50IHNpbGtfZW5jb2RlX2ZyYW1lX0ZMUCgKICAgICAgICAgICAgICAgICAgICAg
Z2FpbnNJRF9sb3dlciA9IGdhaW5zSUQ7CiAgICAgICAgICAgICAgICAgICAgIC8qIENvcHkgcGFy
dCBvZiB0aGUgb3V0cHV0IHN0YXRlICovCiAgICAgICAgICAgICAgICAgICAgIHNpbGtfbWVtY3B5
KCAmc1JhbmdlRW5jX2NvcHkyLCBwc1JhbmdlRW5jLCBzaXplb2YoIGVjX2VuYyApICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBwc1JhbmdlRW5jLT5vZmZzIDw9IDEyNzUgKTsK
KyAgICAgICAgICAgICAgICAgICAgY2VsdF9hc3NlcnQoIHBzUmFuZ2VFbmMtPm9mZnMgPD0gMTI3
NSApOwogICAgICAgICAgICAgICAgICAgICBzaWxrX21lbWNweSggZWNfYnVmX2NvcHksIHBzUmFu
Z2VFbmMtPmJ1ZiwgcHNSYW5nZUVuYy0+b2ZmcyApOwogICAgICAgICAgICAgICAgICAgICBzaWxr
X21lbWNweSggJnNOU1FfY29weTIsICZwc0VuYy0+c0Ntbi5zTlNRLCBzaXplb2YoIHNpbGtfbnNx
X3N0YXRlICkgKTsKICAgICAgICAgICAgICAgICAgICAgTGFzdEdhaW5JbmRleF9jb3B5MiA9IHBz
RW5jLT5zU2hhcGUuTGFzdEdhaW5JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9maW5kX0xQ
Q19GTFAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9mbG9hdC9maW5kX0xQQ19GTFAuYwppbmRleCA0ZDYzOTY0ZmViYjhiMjkz
MmVmOWNmOThmZmU5NmIzOTZhMzdiODI2Li5mYTNmZmU3ZjhiNDc0ODFmOGQwYTUzYWJkYjhlMmE3
NDNiODgwOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvZmluZF9MUENfRkxQLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2Zsb2F0L2ZpbmRfTFBDX0ZMUC5jCkBAIC05OSw2ICs5OSw2IEBAIHZvaWQgc2lsa19maW5kX0xQ
Q19GTFAoCiAgICAgICAgIHNpbGtfQTJOTFNGX0ZMUCggTkxTRl9RMTUsIGEsIHBzRW5jQy0+cHJl
ZGljdExQQ09yZGVyICk7CiAgICAgfQogCi0gICAgc2lsa19hc3NlcnQoIHBzRW5jQy0+aW5kaWNl
cy5OTFNGSW50ZXJwQ29lZl9RMiA9PSA0IHx8CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+aW5k
aWNlcy5OTFNGSW50ZXJwQ29lZl9RMiA9PSA0IHx8CiAgICAgICAgICggcHNFbmNDLT51c2VJbnRl
cnBvbGF0ZWROTFNGcyAmJiAhcHNFbmNDLT5maXJzdF9mcmFtZV9hZnRlcl9yZXNldCAmJiBwc0Vu
Y0MtPm5iX3N1YmZyID09IE1BWF9OQl9TVUJGUiApICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxv
YXQvZmluZF9waXRjaF9sYWdzX0ZMUC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2ZpbmRfcGl0Y2hfbGFnc19GTFAu
YwppbmRleCBmM2IyMmQyNWNlNjZmZDFlZDYwNzhiY2FhNmNkOTU4OWZmZTYwMDZhLi5kZWRiY2Qy
ODM2ODVkYWMwZjNhMzkwZjhjN2IxZmZjMDZlNTMzYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQv
ZmluZF9waXRjaF9sYWdzX0ZMUC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9maW5kX3BpdGNoX2xhZ3NfRkxQ
LmMKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBzaWxrX2ZpbmRfcGl0Y2hfbGFnc19GTFAoCiAgICAg
YnVmX2xlbiA9IHBzRW5jLT5zQ21uLmxhX3BpdGNoICsgcHNFbmMtPnNDbW4uZnJhbWVfbGVuZ3Ro
ICsgcHNFbmMtPnNDbW4ubHRwX21lbV9sZW5ndGg7CiAKICAgICAvKiBTYWZldHkgY2hlY2sgKi8K
LSAgICBzaWxrX2Fzc2VydCggYnVmX2xlbiA+PSBwc0VuYy0+c0Ntbi5waXRjaF9MUENfd2luX2xl
bmd0aCApOworICAgIGNlbHRfYXNzZXJ0KCBidWZfbGVuID49IHBzRW5jLT5zQ21uLnBpdGNoX0xQ
Q193aW5fbGVuZ3RoICk7CiAKICAgICB4X2J1ZiA9IHggLSBwc0VuYy0+c0Ntbi5sdHBfbWVtX2xl
bmd0aDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2ZpbmRfcHJlZF9jb2Vmc19GTFAuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay9mbG9hdC9maW5kX3ByZWRfY29lZnNfRkxQLmMKaW5kZXggY2IyZTc2M2IxZGIwMmJiM2ZkMGMx
NjZmNmE5MDBkNTdmYzIzYjgyNC4uZGNmN2M1MjAyZDBjNjA3NzQxZjE0YmE5MWU4NjgwOTNmMmIy
YmY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L2ZpbmRfcHJlZF9jb2Vmc19GTFAuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZmxvYXQvZmluZF9wcmVkX2NvZWZzX0ZMUC5jCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgc2ls
a19maW5kX3ByZWRfY29lZnNfRkxQKAogICAgICAgICAvKioqKioqKioqKi8KICAgICAgICAgLyog
Vk9JQ0VEICovCiAgICAgICAgIC8qKioqKioqKioqLwotICAgICAgICBzaWxrX2Fzc2VydCggcHNF
bmMtPnNDbW4ubHRwX21lbV9sZW5ndGggLSBwc0VuYy0+c0Ntbi5wcmVkaWN0TFBDT3JkZXIgPj0g
cHNFbmNDdHJsLT5waXRjaExbIDAgXSArIExUUF9PUkRFUiAvIDIgKTsKKyAgICAgICAgY2VsdF9h
c3NlcnQoIHBzRW5jLT5zQ21uLmx0cF9tZW1fbGVuZ3RoIC0gcHNFbmMtPnNDbW4ucHJlZGljdExQ
Q09yZGVyID49IHBzRW5jQ3RybC0+cGl0Y2hMWyAwIF0gKyBMVFBfT1JERVIgLyAyICk7CiAKICAg
ICAgICAgLyogTFRQIGFuYWx5c2lzICovCiAgICAgICAgIHNpbGtfZmluZF9MVFBfRkxQKCBYWExU
UCwgeFhMVFAsIHJlc19waXRjaCwgcHNFbmNDdHJsLT5waXRjaEwsIHBzRW5jLT5zQ21uLnN1YmZy
X2xlbmd0aCwgcHNFbmMtPnNDbW4ubmJfc3ViZnIgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9w
aXRjaF9hbmFseXNpc19jb3JlX0ZMUC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3BpdGNoX2FuYWx5c2lzX2NvcmVf
RkxQLmMKaW5kZXggYjM3MTY5Mzc4YjFmNTI1NjYwZmNjZWY2NWY4YTJmYjQzMWVjYzgwOS4uZjM1
MWJjMzcxODZjZWQ1OGExOWZlM2YxYmQ0MzJhOGRmMzQ0NTAyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zs
b2F0L3BpdGNoX2FuYWx5c2lzX2NvcmVfRkxQLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3BpdGNoX2FuYWx5
c2lzX2NvcmVfRkxQLmMKQEAgLTEwOSwxMSArMTA5LDExIEBAIG9wdXNfaW50IHNpbGtfcGl0Y2hf
YW5hbHlzaXNfY29yZV9GTFAoICAgICAgLyogTyAgICBWb2ljaW5nIGVzdGltYXRlOiAwIHZvaWNl
ZCwKICAgICBjb25zdCBvcHVzX2ludDggKkxhZ19DQl9wdHI7CiAKICAgICAvKiBDaGVjayBmb3Ig
dmFsaWQgc2FtcGxpbmcgZnJlcXVlbmN5ICovCi0gICAgc2lsa19hc3NlcnQoIEZzX2tIeiA9PSA4
IHx8IEZzX2tIeiA9PSAxMiB8fCBGc19rSHogPT0gMTYgKTsKKyAgICBjZWx0X2Fzc2VydCggRnNf
a0h6ID09IDggfHwgRnNfa0h6ID09IDEyIHx8IEZzX2tIeiA9PSAxNiApOwogCiAgICAgLyogQ2hl
Y2sgZm9yIHZhbGlkIGNvbXBsZXhpdHkgc2V0dGluZyAqLwotICAgIHNpbGtfYXNzZXJ0KCBjb21w
bGV4aXR5ID49IFNJTEtfUEVfTUlOX0NPTVBMRVggKTsKLSAgICBzaWxrX2Fzc2VydCggY29tcGxl
eGl0eSA8PSBTSUxLX1BFX01BWF9DT01QTEVYICk7CisgICAgY2VsdF9hc3NlcnQoIGNvbXBsZXhp
dHkgPj0gU0lMS19QRV9NSU5fQ09NUExFWCApOworICAgIGNlbHRfYXNzZXJ0KCBjb21wbGV4aXR5
IDw9IFNJTEtfUEVfTUFYX0NPTVBMRVggKTsKIAogICAgIHNpbGtfYXNzZXJ0KCBzZWFyY2hfdGhy
ZXMxID49IDAuMGYgJiYgc2VhcmNoX3RocmVzMSA8PSAxLjBmICk7CiAgICAgc2lsa19hc3NlcnQo
IHNlYXJjaF90aHJlczIgPj0gMC4wZiAmJiBzZWFyY2hfdGhyZXMyIDw9IDEuMGYgKTsKQEAgLTE0
OCw3ICsxNDgsNyBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5c2lzX2NvcmVfRkxQKCAgICAg
IC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMCB2b2ljZWQsCiAgICAgICAgIHNpbGtfcmVzYW1w
bGVyX2Rvd24yXzMoIGZpbHRfc3RhdGUsIGZyYW1lXzhfRklYLCBmcmFtZV8xMl9GSVgsIGZyYW1l
X2xlbmd0aCApOwogICAgICAgICBzaWxrX3Nob3J0MmZsb2F0X2FycmF5KCBmcmFtZV84a0h6LCBm
cmFtZV84X0ZJWCwgZnJhbWVfbGVuZ3RoXzhrSHogKTsKICAgICB9IGVsc2UgewotICAgICAgICBz
aWxrX2Fzc2VydCggRnNfa0h6ID09IDggKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIEZzX2tIeiA9
PSA4ICk7CiAgICAgICAgIHNpbGtfZmxvYXQyc2hvcnRfYXJyYXkoIGZyYW1lXzhfRklYLCBmcmFt
ZSwgZnJhbWVfbGVuZ3RoXzhrSHogKTsKICAgICB9CiAKQEAgLTE2OSwxNCArMTY5LDE0IEBAIG9w
dXNfaW50IHNpbGtfcGl0Y2hfYW5hbHlzaXNfY29yZV9GTFAoICAgICAgLyogTyAgICBWb2ljaW5n
IGVzdGltYXRlOiAwIHZvaWNlZCwKICAgICB0YXJnZXRfcHRyID0gJmZyYW1lXzRrSHpbIHNpbGtf
TFNISUZUKCBzZl9sZW5ndGhfNGtIeiwgMiApIF07CiAgICAgZm9yKCBrID0gMDsgayA8IG5iX3N1
YmZyID4+IDE7IGsrKyApIHsKICAgICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBhcmUgd2l0aGluIHJh
bmdlIG9mIHRoZSBhcnJheSAqLwotICAgICAgICBzaWxrX2Fzc2VydCggdGFyZ2V0X3B0ciA+PSBm
cmFtZV80a0h6ICk7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCB0YXJnZXRfcHRyICsgc2ZfbGVuZ3Ro
XzhrSHogPD0gZnJhbWVfNGtIeiArIGZyYW1lX2xlbmd0aF80a0h6ICk7CisgICAgICAgIGNlbHRf
YXNzZXJ0KCB0YXJnZXRfcHRyID49IGZyYW1lXzRrSHogKTsKKyAgICAgICAgY2VsdF9hc3NlcnQo
IHRhcmdldF9wdHIgKyBzZl9sZW5ndGhfOGtIeiA8PSBmcmFtZV80a0h6ICsgZnJhbWVfbGVuZ3Ro
XzRrSHogKTsKIAogICAgICAgICBiYXNpc19wdHIgPSB0YXJnZXRfcHRyIC0gbWluX2xhZ180a0h6
OwogCiAgICAgICAgIC8qIENoZWNrIHRoYXQgd2UgYXJlIHdpdGhpbiByYW5nZSBvZiB0aGUgYXJy
YXkgKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIGJhc2lzX3B0ciA+PSBmcmFtZV80a0h6ICk7Ci0g
ICAgICAgIHNpbGtfYXNzZXJ0KCBiYXNpc19wdHIgKyBzZl9sZW5ndGhfOGtIeiA8PSBmcmFtZV80
a0h6ICsgZnJhbWVfbGVuZ3RoXzRrSHogKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIGJhc2lzX3B0
ciA+PSBmcmFtZV80a0h6ICk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBiYXNpc19wdHIgKyBzZl9s
ZW5ndGhfOGtIeiA8PSBmcmFtZV80a0h6ICsgZnJhbWVfbGVuZ3RoXzRrSHogKTsKIAogICAgICAg
ICBjZWx0X3BpdGNoX3hjb3JyKCB0YXJnZXRfcHRyLCB0YXJnZXRfcHRyLW1heF9sYWdfNGtIeiwg
eGNvcnIsIHNmX2xlbmd0aF84a0h6LCBtYXhfbGFnXzRrSHogLSBtaW5fbGFnXzRrSHogKyAxLCBh
cmNoICk7CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCBvcHVzX2ludCBzaWxrX3BpdGNoX2FuYWx5c2lz
X2NvcmVfRkxQKCAgICAgIC8qIE8gICAgVm9pY2luZyBlc3RpbWF0ZTogMCB2b2ljZWQsCiAKICAg
ICAvKiBTb3J0ICovCiAgICAgbGVuZ3RoX2Rfc3JjaCA9IDQgKyAyICogY29tcGxleGl0eTsKLSAg
ICBzaWxrX2Fzc2VydCggMyAqIGxlbmd0aF9kX3NyY2ggPD0gUEVfRF9TUkNIX0xFTkdUSCApOwor
ICAgIGNlbHRfYXNzZXJ0KCAzICogbGVuZ3RoX2Rfc3JjaCA8PSBQRV9EX1NSQ0hfTEVOR1RIICk7
CiAgICAgc2lsa19pbnNlcnRpb25fc29ydF9kZWNyZWFzaW5nX0ZMUCggJkNbIDAgXVsgbWluX2xh
Z180a0h6IF0sIGRfc3JjaCwgbWF4X2xhZ180a0h6IC0gbWluX2xhZ180a0h6ICsgMSwgbGVuZ3Ro
X2Rfc3JjaCApOwogCiAgICAgLyogRXNjYXBlIGlmIGNvcnJlbGF0aW9uIGlzIHZlcnkgbG93IGFs
cmVhZHkgaGVyZSAqLwpAQCAtMjM4LDcgKzIzOCw3IEBAIG9wdXNfaW50IHNpbGtfcGl0Y2hfYW5h
bHlzaXNfY29yZV9GTFAoICAgICAgLyogTyAgICBWb2ljaW5nIGVzdGltYXRlOiAwIHZvaWNlZCwK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHNpbGtfYXNzZXJ0KCBs
ZW5ndGhfZF9zcmNoID4gMCApOworICAgIGNlbHRfYXNzZXJ0KCBsZW5ndGhfZF9zcmNoID4gMCAp
OwogCiAgICAgZm9yKCBpID0gbWluX2xhZ184a0h6IC0gNTsgaSA8IG1heF9sYWdfOGtIeiArIDU7
IGkrKyApIHsKICAgICAgICAgZF9jb21wWyBpIF0gPSAwOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIG9w
dXNfaW50IHNpbGtfcGl0Y2hfYW5hbHlzaXNfY29yZV9GTFAoICAgICAgLyogTyAgICBWb2ljaW5n
IGVzdGltYXRlOiAwIHZvaWNlZCwKICAgICAgICAgKmxhZ0luZGV4ID0gKG9wdXNfaW50MTYpKCBs
YWcgLSBtaW5fbGFnXzhrSHogKTsKICAgICAgICAgKmNvbnRvdXJJbmRleCA9IChvcHVzX2ludDgp
Q0JpbWF4OwogICAgIH0KLSAgICBzaWxrX2Fzc2VydCggKmxhZ0luZGV4ID49IDAgKTsKKyAgICBj
ZWx0X2Fzc2VydCggKmxhZ0luZGV4ID49IDAgKTsKICAgICAvKiByZXR1cm4gYXMgdm9pY2VkICov
CiAgICAgcmV0dXJuIDA7CiB9CkBAIC01MDYsOCArNTA2LDggQEAgc3RhdGljIHZvaWQgc2lsa19Q
X0FuYV9jYWxjX2NvcnJfc3QzKAogICAgIG9wdXNfdmFsMzIgeGNvcnJbIFNDUkFUQ0hfU0laRSBd
OwogICAgIGNvbnN0IG9wdXNfaW50OCAqTGFnX3JhbmdlX3B0ciwgKkxhZ19DQl9wdHI7CiAKLSAg
ICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA+PSBTSUxLX1BFX01JTl9DT01QTEVYICk7Ci0gICAg
c2lsa19hc3NlcnQoIGNvbXBsZXhpdHkgPD0gU0lMS19QRV9NQVhfQ09NUExFWCApOworICAgIGNl
bHRfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtfUEVfTUlOX0NPTVBMRVggKTsKKyAgICBjZWx0
X2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BFX01BWF9DT01QTEVYICk7CiAKICAgICBpZigg
bmJfc3ViZnIgPT0gUEVfTUFYX05CX1NVQkZSICkgewogICAgICAgICBMYWdfcmFuZ2VfcHRyID0g
JnNpbGtfTGFnX3JhbmdlX3N0YWdlM1sgY29tcGxleGl0eSBdWyAwIF1bIDAgXTsKQEAgLTUxNSw3
ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBzaWxrX1BfQW5hX2NhbGNfY29ycl9zdDMoCiAgICAgICAg
IG5iX2Nia19zZWFyY2ggPSBzaWxrX25iX2Nia19zZWFyY2hzX3N0YWdlM1sgY29tcGxleGl0eSBd
OwogICAgICAgICBjYmtfc2l6ZSAgICAgID0gUEVfTkJfQ0JLU19TVEFHRTNfTUFYOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHNpbGtfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIg
Pj4gMSk7CisgICAgICAgIGNlbHRfYXNzZXJ0KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIg
Pj4gMSk7CiAgICAgICAgIExhZ19yYW5nZV9wdHIgPSAmc2lsa19MYWdfcmFuZ2Vfc3RhZ2UzXzEw
X21zWyAwIF1bIDAgXTsKICAgICAgICAgTGFnX0NCX3B0ciAgICA9ICZzaWxrX0NCX2xhZ3Nfc3Rh
Z2UzXzEwX21zWyAwIF1bIDAgXTsKICAgICAgICAgbmJfY2JrX3NlYXJjaCA9IFBFX05CX0NCS1Nf
U1RBR0UzXzEwTVM7CkBAIC01NzIsOCArNTcyLDggQEAgc3RhdGljIHZvaWQgc2lsa19QX0FuYV9j
YWxjX2VuZXJneV9zdDMoCiAgICAgc2lsa19mbG9hdCBzY3JhdGNoX21lbVsgU0NSQVRDSF9TSVpF
IF07CiAgICAgY29uc3Qgb3B1c19pbnQ4ICpMYWdfcmFuZ2VfcHRyLCAqTGFnX0NCX3B0cjsKIAot
ICAgIHNpbGtfYXNzZXJ0KCBjb21wbGV4aXR5ID49IFNJTEtfUEVfTUlOX0NPTVBMRVggKTsKLSAg
ICBzaWxrX2Fzc2VydCggY29tcGxleGl0eSA8PSBTSUxLX1BFX01BWF9DT01QTEVYICk7CisgICAg
Y2VsdF9hc3NlcnQoIGNvbXBsZXhpdHkgPj0gU0lMS19QRV9NSU5fQ09NUExFWCApOworICAgIGNl
bHRfYXNzZXJ0KCBjb21wbGV4aXR5IDw9IFNJTEtfUEVfTUFYX0NPTVBMRVggKTsKIAogICAgIGlm
KCBuYl9zdWJmciA9PSBQRV9NQVhfTkJfU1VCRlIgKSB7CiAgICAgICAgIExhZ19yYW5nZV9wdHIg
PSAmc2lsa19MYWdfcmFuZ2Vfc3RhZ2UzWyBjb21wbGV4aXR5IF1bIDAgXVsgMCBdOwpAQCAtNTgx
LDcgKzU4MSw3IEBAIHN0YXRpYyB2b2lkIHNpbGtfUF9BbmFfY2FsY19lbmVyZ3lfc3QzKAogICAg
ICAgICBuYl9jYmtfc2VhcmNoID0gc2lsa19uYl9jYmtfc2VhcmNoc19zdGFnZTNbIGNvbXBsZXhp
dHkgXTsKICAgICAgICAgY2JrX3NpemUgICAgICA9IFBFX05CX0NCS1NfU1RBR0UzX01BWDsKICAg
ICB9IGVsc2UgewotICAgICAgICBzaWxrX2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NV
QkZSID4+IDEpOworICAgICAgICBjZWx0X2Fzc2VydCggbmJfc3ViZnIgPT0gUEVfTUFYX05CX1NV
QkZSID4+IDEpOwogICAgICAgICBMYWdfcmFuZ2VfcHRyID0gJnNpbGtfTGFnX3JhbmdlX3N0YWdl
M18xMF9tc1sgMCBdWyAwIF07CiAgICAgICAgIExhZ19DQl9wdHIgICAgPSAmc2lsa19DQl9sYWdz
X3N0YWdlM18xMF9tc1sgMCBdWyAwIF07CiAgICAgICAgIG5iX2Nia19zZWFyY2ggPSBQRV9OQl9D
QktTX1NUQUdFM18xME1TOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3Jlc2lkdWFsX2VuZXJneV9G
TFAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay9mbG9hdC9yZXNpZHVhbF9lbmVyZ3lfRkxQLmMKaW5kZXggYjJlMDNhODZhNDkw
MzhmMmUxZTIwMWZjOGQxOTkxZTc3ODI5Yzg3Yi4uMWJkMDdiMzNhNGQ0YjY4N2VmMmUxODYwYzg5
ZDZiMDllZTAzMjM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL2Zsb2F0L3Jlc2lkdWFsX2VuZXJneV9GTFAu
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvZmxvYXQvcmVzaWR1YWxfZW5lcmd5X0ZMUC5jCkBAIC00Nyw3ICs0Nyw3IEBA
IHNpbGtfZmxvYXQgc2lsa19yZXNpZHVhbF9lbmVyZ3lfY292YXJfRkxQKCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIE8KICAgICBzaWxrX2Zsb2F0IHRtcCwgbnJnID0gMC4wZiwgcmVn
dWxhcml6YXRpb247CiAKICAgICAvKiBTYWZldHkgY2hlY2tzICovCi0gICAgc2lsa19hc3NlcnQo
IEQgPj0gMCApOworICAgIGNlbHRfYXNzZXJ0KCBEID49IDAgKTsKIAogICAgIHJlZ3VsYXJpemF0
aW9uID0gUkVHVUxBUklaQVRJT05fRkFDVE9SICogKCB3WFhbIDAgXSArIHdYWFsgRCAqIEQgLSAx
IF0gKTsKICAgICBmb3IoIGsgPSAwOyBrIDwgTUFYX0lURVJBVElPTlNfUkVTSURVQUxfTlJHOyBr
KysgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvc2NodXJfRkxQLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvc2No
dXJfRkxQLmMKaW5kZXggYzFlMGJiYjU0MTFjOTk1OWNhM2Y3ZjZjMjk1NzcxMzYxNzA0ODFkZC4u
ODUyNmM3NDhkMzVkNDczNzlmNDgzYzQ5MTIwNzc4OTJjM2ZjY2I5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L2Zsb2F0L3NjaHVyX0ZMUC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9mbG9hdC9zY2h1cl9GTFAuYwpAQCAtNDEsNyAr
NDEsNyBAQCBzaWxrX2Zsb2F0IHNpbGtfc2NodXJfRkxQKCAgICAgICAgICAgICAgICAgIC8qIE8g
ICAgcmV0dXJucyByZXNpZHVhbCBlbmVyZ3kKICAgICBkb3VibGUgQ1sgU0lMS19NQVhfT1JERVJf
TFBDICsgMSBdWyAyIF07CiAgICAgZG91YmxlIEN0bXAxLCBDdG1wMiwgcmNfdG1wOwogCi0gICAg
c2lsa19hc3NlcnQoIG9yZGVyID49IDAgJiYgb3JkZXIgPD0gU0lMS19NQVhfT1JERVJfTFBDICk7
CisgICAgY2VsdF9hc3NlcnQoIG9yZGVyID49IDAgJiYgb3JkZXIgPD0gU0lMS19NQVhfT1JERVJf
TFBDICk7CiAKICAgICAvKiBDb3B5IGNvcnJlbGF0aW9ucyAqLwogICAgIGsgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL2Zsb2F0L3NvcnRfRkxQLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvc29ydF9GTFAuYwppbmRleCBm
MDhkNzU5MmM1NmVkYmZlYTdkYzRhNGJiNzdhZjhiMWM1MmYyOWEyLi4wZTE4ZjMxOTUwNWJlMjk2
NDY1ZDc3YTJlMzJmODI1YTcyZTYwZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvc29ydF9GTFAu
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29w
dXMvc3JjL3NpbGsvZmxvYXQvc29ydF9GTFAuYwpAQCAtNDcsOSArNDcsOSBAQCB2b2lkIHNpbGtf
aW5zZXJ0aW9uX3NvcnRfZGVjcmVhc2luZ19GTFAoCiAgICAgb3B1c19pbnQgICBpLCBqOwogCiAg
ICAgLyogU2FmZXR5IGNoZWNrcyAqLwotICAgIHNpbGtfYXNzZXJ0KCBLID4gIDAgKTsKLSAgICBz
aWxrX2Fzc2VydCggTCA+ICAwICk7Ci0gICAgc2lsa19hc3NlcnQoIEwgPj0gSyApOworICAgIGNl
bHRfYXNzZXJ0KCBLID4gIDAgKTsKKyAgICBjZWx0X2Fzc2VydCggTCA+ICAwICk7CisgICAgY2Vs
dF9hc3NlcnQoIEwgPj0gSyApOwogCiAgICAgLyogV3JpdGUgc3RhcnQgaW5kaWNlcyBpbiBpbmRl
eCB2ZWN0b3IgKi8KICAgICBmb3IoIGkgPSAwOyBpIDwgSzsgaSsrICkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9z
aWxrL2Zsb2F0L3dhcnBlZF9hdXRvY29ycmVsYXRpb25fRkxQLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvZmxvYXQvd2FycGVk
X2F1dG9jb3JyZWxhdGlvbl9GTFAuYwppbmRleCA1NDI0MTRmNDhlYzUyYjAxYjM5YmRhN2FiZDk2
NWQyM2FmNGViN2I4Li4wOTE4NmU3M2Q0NjNkMmFlZjFhN2FlMTcwZGJhNjllMTQ1NzEzMzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvZmxvYXQvd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GTFAuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvZmxvYXQvd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GTFAuYwpAQCAtNDIsMTEgKzQyLDExIEBA
IHZvaWQgc2lsa193YXJwZWRfYXV0b2NvcnJlbGF0aW9uX0ZMUCgKIHsKICAgICBvcHVzX2ludCAg
ICBuLCBpOwogICAgIGRvdWJsZSAgICAgIHRtcDEsIHRtcDI7Ci0gICAgZG91YmxlICAgICAgc3Rh
dGVbIE1BWF9TSEFQRV9MUENfT1JERVIgKyAxIF0gPSB7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww
LDAsMCwwLDAsMCB9OwotICAgIGRvdWJsZSAgICAgIENbICAgICBNQVhfU0hBUEVfTFBDX09SREVS
ICsgMSBdID0geyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAgfTsKKyAgICBkb3Vi
bGUgICAgICBzdGF0ZVsgTUFYX1NIQVBFX0xQQ19PUkRFUiArIDEgXSA9IHsgMCB9OworICAgIGRv
dWJsZSAgICAgIENbICAgICBNQVhfU0hBUEVfTFBDX09SREVSICsgMSBdID0geyAwIH07CiAKICAg
ICAvKiBPcmRlciBtdXN0IGJlIGV2ZW4gKi8KLSAgICBzaWxrX2Fzc2VydCggKCBvcmRlciAmIDEg
KSA9PSAwICk7CisgICAgY2VsdF9hc3NlcnQoICggb3JkZXIgJiAxICkgPT0gMCApOwogCiAgICAg
LyogTG9vcCBvdmVyIHNhbXBsZXMgKi8KICAgICBmb3IoIG4gPSAwOyBuIDwgbGVuZ3RoOyBuKysg
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NpbGsvaW50ZXJwb2xhdGUuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9pbnRlcnBvbGF0ZS5jCmlu
ZGV4IDFiZDhjYTRkNTMyNzM1MTNkM2EyNDViZDA3NmEwNGQwNWQ3ZmViMzcuLjgzM2MyOGVmOGU4
YWY3MmNhNGNkMjFmZDZlYTdiZDY3ZDg5ZjExYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9pbnRlcnBvbGF0
ZS5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9pbnRlcnBvbGF0ZS5jCkBAIC00Miw4ICs0Miw4IEBAIHZvaWQgc2lsa19p
bnRlcnBvbGF0ZSgKIHsKICAgICBvcHVzX2ludCBpOwogCi0gICAgc2lsa19hc3NlcnQoIGlmYWN0
X1EyID49IDAgKTsKLSAgICBzaWxrX2Fzc2VydCggaWZhY3RfUTIgPD0gNCApOworICAgIGNlbHRf
YXNzZXJ0KCBpZmFjdF9RMiA+PSAwICk7CisgICAgY2VsdF9hc3NlcnQoIGlmYWN0X1EyIDw9IDQg
KTsKIAogICAgIGZvciggaSA9IDA7IGkgPCBkOyBpKysgKSB7CiAgICAgICAgIHhpWyBpIF0gPSAo
b3B1c19pbnQxNilzaWxrX0FERF9SU0hJRlQoIHgwWyBpIF0sIHNpbGtfU01VTEJCKCB4MVsgaSBd
IC0geDBbIGkgXSwgaWZhY3RfUTIgKSwgMiApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Byb2Nlc3NfTkxT
RnMuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay9wcm9jZXNzX05MU0ZzLmMKaW5kZXggMmYxMGY4ZGY1YjNkNzBlNTgyM2ZlMmRi
NTViNWIxMTc0YjI2YWZiYi4uZDEzMDgwOTU0MTNlMjhlODE0YjM5MDM1NTFlMWYzMmQ3MWEwNmQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9vcHVzL3NyYy9zaWxrL3Byb2Nlc3NfTkxTRnMuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvcHJvY2Vzc19OTFNG
cy5jCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgc2lsa19wcm9jZXNzX05MU0ZzKAogCiAgICAgc2ls
a19hc3NlcnQoIHBzRW5jQy0+c3BlZWNoX2FjdGl2aXR5X1E4ID49ICAgMCApOwogICAgIHNpbGtf
YXNzZXJ0KCBwc0VuY0MtPnNwZWVjaF9hY3Rpdml0eV9ROCA8PSBTSUxLX0ZJWF9DT05TVCggMS4w
LCA4ICkgKTsKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT51c2VJbnRlcnBvbGF0ZWROTFNGcyA9
PSAxIHx8IHBzRW5jQy0+aW5kaWNlcy5OTFNGSW50ZXJwQ29lZl9RMiA9PSAoIDEgPDwgMiApICk7
CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+dXNlSW50ZXJwb2xhdGVkTkxTRnMgPT0gMSB8fCBw
c0VuY0MtPmluZGljZXMuTkxTRkludGVycENvZWZfUTIgPT0gKCAxIDw8IDIgKSApOwogCiAgICAg
LyoqKioqKioqKioqKioqKioqKioqKioqLwogICAgIC8qIENhbGN1bGF0ZSBtdSB2YWx1ZXMgKi8K
QEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBzaWxrX3Byb2Nlc3NfTkxTRnMoCiAgICAgICAgIE5MU0Zf
bXVfUTIwID0gc2lsa19BRERfUlNISUZUKCBOTFNGX211X1EyMCwgTkxTRl9tdV9RMjAsIDEgKTsK
ICAgICB9CiAKLSAgICBzaWxrX2Fzc2VydCggTkxTRl9tdV9RMjAgPiAgMCApOworICAgIGNlbHRf
YXNzZXJ0KCBOTFNGX211X1EyMCA+ICAwICk7CiAgICAgc2lsa19hc3NlcnQoIE5MU0ZfbXVfUTIw
IDw9IFNJTEtfRklYX0NPTlNUKCAwLjAwNSwgMjAgKSApOwogCiAgICAgLyogQ2FsY3VsYXRlIE5M
U0Ygd2VpZ2h0cyAqLwpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgc2lsa19wcm9jZXNzX05MU0Zz
KAogCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogQ29weSBMUEMgY29lZmZpY2llbnRzIGZvciBm
aXJzdCBoYWxmIGZyb20gc2Vjb25kIGhhbGYgKi8KLSAgICAgICAgc2lsa19hc3NlcnQoIHBzRW5j
Qy0+cHJlZGljdExQQ09yZGVyIDw9IE1BWF9MUENfT1JERVIgKTsKKyAgICAgICAgY2VsdF9hc3Nl
cnQoIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyIDw9IE1BWF9MUENfT1JERVIgKTsKICAgICAgICAg
c2lsa19tZW1jcHkoIFByZWRDb2VmX1ExMlsgMCBdLCBQcmVkQ29lZl9RMTJbIDEgXSwgcHNFbmND
LT5wcmVkaWN0TFBDT3JkZXIgKiBzaXplb2YoIG9wdXNfaW50MTYgKSApOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9yZXNhbXBsZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9yZXNhbXBsZXIuYwppbmRleCAzNzRmYmIz
NzIyNWE2MWVjZjRmMzliYWVlNTVhNDQyNWRjMDk0ZjJhLi4xZjExZTUwODkxNmEwMzc3OGJkZGRm
NWE1MmZjMDkwMDQwOTRhNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvcmVzYW1wbGVyLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxr
L3Jlc2FtcGxlci5jCkBAIC05MSwxNCArOTEsMTQgQEAgb3B1c19pbnQgc2lsa19yZXNhbXBsZXJf
aW5pdCgKICAgICBpZiggZm9yRW5jICkgewogICAgICAgICBpZiggKCBGc19Iel9pbiAgIT0gODAw
MCAmJiBGc19Iel9pbiAgIT0gMTIwMDAgJiYgRnNfSHpfaW4gICE9IDE2MDAwICYmIEZzX0h6X2lu
ICAhPSAyNDAwMCAmJiBGc19Iel9pbiAgIT0gNDgwMDAgKSB8fAogICAgICAgICAgICAgKCBGc19I
el9vdXQgIT0gODAwMCAmJiBGc19Iel9vdXQgIT0gMTIwMDAgJiYgRnNfSHpfb3V0ICE9IDE2MDAw
ICkgKSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICAgICAgY2VsdF9h
c3NlcnQoIDAgKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBT
LT5pbnB1dERlbGF5ID0gZGVsYXlfbWF0cml4X2VuY1sgcmF0ZUlEKCBGc19Iel9pbiApIF1bIHJh
dGVJRCggRnNfSHpfb3V0ICkgXTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiggKCBGc19Iel9p
biAgIT0gODAwMCAmJiBGc19Iel9pbiAgIT0gMTIwMDAgJiYgRnNfSHpfaW4gICE9IDE2MDAwICkg
fHwKICAgICAgICAgICAgICggRnNfSHpfb3V0ICE9IDgwMDAgJiYgRnNfSHpfb3V0ICE9IDEyMDAw
ICYmIEZzX0h6X291dCAhPSAxNjAwMCAmJiBGc19Iel9vdXQgIT0gMjQwMDAgJiYgRnNfSHpfb3V0
ICE9IDQ4MDAwICkgKSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAgICAgICAg
ICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQog
ICAgICAgICBTLT5pbnB1dERlbGF5ID0gZGVsYXlfbWF0cml4X2RlY1sgcmF0ZUlEKCBGc19Iel9p
biApIF1bIHJhdGVJRCggRnNfSHpfb3V0ICkgXTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBvcHVzX2lu
dCBzaWxrX3Jlc2FtcGxlcl9pbml0KAogICAgICAgICAgICAgUy0+Q29lZnMgPSBzaWxrX1Jlc2Ft
cGxlcl8xXzZfQ09FRlM7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBOb25lIGF2
YWlsYWJsZSAqLwotICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsKKyAgICAgICAgICAgIGNl
bHRfYXNzZXJ0KCAwICk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewpAQCAtMTgxLDkgKzE4MSw5IEBAIG9wdXNfaW50IHNpbGtfcmVzYW1wbGVyKAogICAg
IG9wdXNfaW50IG5TYW1wbGVzOwogCiAgICAgLyogTmVlZCBhdCBsZWFzdCAxIG1zIG9mIGlucHV0
IGRhdGEgKi8KLSAgICBzaWxrX2Fzc2VydCggaW5MZW4gPj0gUy0+RnNfaW5fa0h6ICk7CisgICAg
Y2VsdF9hc3NlcnQoIGluTGVuID49IFMtPkZzX2luX2tIeiApOwogICAgIC8qIERlbGF5IGNhbid0
IGV4Y2VlZCB0aGUgMSBtcyBvZiBidWZmZXJpbmcgKi8KLSAgICBzaWxrX2Fzc2VydCggUy0+aW5w
dXREZWxheSA8PSBTLT5Gc19pbl9rSHogKTsKKyAgICBjZWx0X2Fzc2VydCggUy0+aW5wdXREZWxh
eSA8PSBTLT5Gc19pbl9rSHogKTsKIAogICAgIG5TYW1wbGVzID0gUy0+RnNfaW5fa0h6IC0gUy0+
aW5wdXREZWxheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Jlc2FtcGxlcl9kb3duMi5jIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Jl
c2FtcGxlcl9kb3duMi5jCmluZGV4IGNlYzM2MzQ2NDA4YmM5YTNkZTY2ZTg3YjRlNjJiYTUwYzJl
MWUyZjkuLjk3MWQ3YmZkNGFlM2ExMDc5YTA4MDQxNTA3MTYyODY2YjBjNDllZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay9yZXNhbXBsZXJfZG93bjIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvcmVzYW1wbGVyX2Rvd24yLmMKQEAg
LTQzLDggKzQzLDggQEAgdm9pZCBzaWxrX3Jlc2FtcGxlcl9kb3duMigKICAgICBvcHVzX2ludDMy
IGssIGxlbjIgPSBzaWxrX1JTSElGVDMyKCBpbkxlbiwgMSApOwogICAgIG9wdXNfaW50MzIgaW4z
Miwgb3V0MzIsIFksIFg7CiAKLSAgICBzaWxrX2Fzc2VydCggc2lsa19yZXNhbXBsZXJfZG93bjJf
MCA+IDAgKTsKLSAgICBzaWxrX2Fzc2VydCggc2lsa19yZXNhbXBsZXJfZG93bjJfMSA8IDAgKTsK
KyAgICBjZWx0X2Fzc2VydCggc2lsa19yZXNhbXBsZXJfZG93bjJfMCA+IDAgKTsKKyAgICBjZWx0
X2Fzc2VydCggc2lsa19yZXNhbXBsZXJfZG93bjJfMSA8IDAgKTsKIAogICAgIC8qIEludGVybmFs
IHZhcmlhYmxlcyBhbmQgc3RhdGUgYXJlIGluIFExMCBmb3JtYXQgKi8KICAgICBmb3IoIGsgPSAw
OyBrIDwgbGVuMjsgaysrICkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3Jlc2FtcGxlcl9wcml2YXRlX2Rv
d25fRklSLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NpbGsvcmVzYW1wbGVyX3ByaXZhdGVfZG93bl9GSVIuYwppbmRleCA3ODNlNDJi
MzU2MTdlNDkyNjI0MTMyYWQ4MTFhMjA5YjhhM2Q0YjVlLi4zZTg3MzVhMzVhMmVkMzBjM2FlYjQw
MjRiMGUzMDA1YjMwYjIzNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvcmVzYW1wbGVyX3ByaXZhdGVfZG93
bl9GSVIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NpbGsvcmVzYW1wbGVyX3ByaXZhdGVfZG93bl9GSVIuYwpAQCAtMTM2LDcg
KzEzNiw3IEBAIHN0YXRpYyBPUFVTX0lOTElORSBvcHVzX2ludDE2ICpzaWxrX3Jlc2FtcGxlcl9w
cml2YXRlX2Rvd25fRklSX0lOVEVSUE9MKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggMCApOworICAg
ICAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICB9CiAgICAgcmV0dXJuIG91dDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc2lsay9zb3J0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc29ydC5jCmluZGV4IDcxODdjOWVmYjExMzQzZTNh
ZWQ2YTk5YTRkZWZlN2QxNzEzZWZkYjcuLjRmYmExNmY4MzFiZTU5MmY0NmE1OWY0NTgxNzdkZTEw
MTk5MzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zb3J0LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3NvcnQuYwpAQCAtNDgs
OSArNDgsOSBAQCB2b2lkIHNpbGtfaW5zZXJ0aW9uX3NvcnRfaW5jcmVhc2luZygKICAgICBvcHVz
X2ludCAgICAgICAgaSwgajsKIAogICAgIC8qIFNhZmV0eSBjaGVja3MgKi8KLSAgICBzaWxrX2Fz
c2VydCggSyA+ICAwICk7Ci0gICAgc2lsa19hc3NlcnQoIEwgPiAgMCApOwotICAgIHNpbGtfYXNz
ZXJ0KCBMID49IEsgKTsKKyAgICBjZWx0X2Fzc2VydCggSyA+ICAwICk7CisgICAgY2VsdF9hc3Nl
cnQoIEwgPiAgMCApOworICAgIGNlbHRfYXNzZXJ0KCBMID49IEsgKTsKIAogICAgIC8qIFdyaXRl
IHN0YXJ0IGluZGljZXMgaW4gaW5kZXggdmVjdG9yICovCiAgICAgZm9yKCBpID0gMDsgaSA8IEs7
IGkrKyApIHsKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBzaWxrX2luc2VydGlvbl9zb3J0X2RlY3Jl
YXNpbmdfaW50MTYoCiAgICAgb3B1c19pbnQgdmFsdWU7CiAKICAgICAvKiBTYWZldHkgY2hlY2tz
ICovCi0gICAgc2lsa19hc3NlcnQoIEsgPiAgMCApOwotICAgIHNpbGtfYXNzZXJ0KCBMID4gIDAg
KTsKLSAgICBzaWxrX2Fzc2VydCggTCA+PSBLICk7CisgICAgY2VsdF9hc3NlcnQoIEsgPiAgMCAp
OworICAgIGNlbHRfYXNzZXJ0KCBMID4gIDAgKTsKKyAgICBjZWx0X2Fzc2VydCggTCA+PSBLICk7
CiAKICAgICAvKiBXcml0ZSBzdGFydCBpbmRpY2VzIGluIGluZGV4IHZlY3RvciAqLwogICAgIGZv
ciggaSA9IDA7IGkgPCBLOyBpKysgKSB7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBzaWxrX2lu
c2VydGlvbl9zb3J0X2luY3JlYXNpbmdfYWxsX3ZhbHVlc19pbnQxNigKICAgICBvcHVzX2ludCAg
ICBpLCBqOwogCiAgICAgLyogU2FmZXR5IGNoZWNrcyAqLwotICAgIHNpbGtfYXNzZXJ0KCBMID4g
IDAgKTsKKyAgICBjZWx0X2Fzc2VydCggTCA+ICAwICk7CiAKICAgICAvKiBTb3J0IHZlY3RvciBl
bGVtZW50cyBieSB2YWx1ZSwgaW5jcmVhc2luZyBvcmRlciAqLwogICAgIGZvciggaSA9IDE7IGkg
PCBMOyBpKysgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3RlcmVvX0xSX3RvX01TLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3Rl
cmVvX0xSX3RvX01TLmMKaW5kZXggZGRhMDI5OGRlMjdhYTMxOThlODMzMmY0YTdjNjFjYmMxNWUw
NGE2MC4uYzgyMjY2NjNjODFiYTAyOTMyNDU5ODY1ZTk2OGI5NzEwMTgwN2MwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL3N0ZXJlb19MUl90b19NUy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zdGVyZW9fTFJfdG9fTVMuYwpAQCAt
MTA5LDcgKzEwOSw3IEBAIHZvaWQgc2lsa19zdGVyZW9fTFJfdG9fTVMoCiAgICAgaWYoIHRvdGFs
X3JhdGVfYnBzIDwgMSApIHsKICAgICAgICAgdG90YWxfcmF0ZV9icHMgPSAxOwogICAgIH0KLSAg
ICBtaW5fbWlkX3JhdGVfYnBzID0gc2lsa19TTUxBQkIoIDIwMDAsIGZzX2tIeiwgOTAwICk7Cisg
ICAgbWluX21pZF9yYXRlX2JwcyA9IHNpbGtfU01MQUJCKCAyMDAwLCBmc19rSHosIDYwMCApOwog
ICAgIHNpbGtfYXNzZXJ0KCBtaW5fbWlkX3JhdGVfYnBzIDwgMzI3NjcgKTsKICAgICAvKiBEZWZh
dWx0IGJpdHJhdGUgZGlzdHJpYnV0aW9uOiA4IHBhcnRzIGZvciBNaWQgYW5kICg1KzMqZnJhYykg
cGFydHMgZm9yIFNpZGUuIHNvOiBtaWRfcmF0ZSA9ICggOCAvICggMTMgKyAzICogZnJhYyApICkg
KiB0b3RhbF8gcmF0ZSAqLwogICAgIGZyYWNfM19RMTYgPSBzaWxrX01VTCggMywgZnJhY19RMTYg
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay9zdGVyZW9fZW5jb2RlX3ByZWQuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zdGVyZW9fZW5j
b2RlX3ByZWQuYwppbmRleCBlNmRkMTk1MDY2NDBhOWQ1MzcxNDk4NmI4Nzc1MGQzOGQ4MzVmYjJi
Li4wM2JlY2I2NzM2MTJhMDdmMTdhZWE4N2U0OGMwN2U5ZjAwMDFiMjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Np
bGsvc3RlcmVvX2VuY29kZV9wcmVkLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3N0ZXJlb19lbmNvZGVfcHJlZC5jCkBA
IC00MSwxMSArNDEsMTEgQEAgdm9pZCBzaWxrX3N0ZXJlb19lbmNvZGVfcHJlZCgKIAogICAgIC8q
IEVudHJvcHkgY29kaW5nICovCiAgICAgbiA9IDUgKiBpeFsgMCBdWyAyIF0gKyBpeFsgMSBdWyAy
IF07Ci0gICAgc2lsa19hc3NlcnQoIG4gPCAyNSApOworICAgIGNlbHRfYXNzZXJ0KCBuIDwgMjUg
KTsKICAgICBlY19lbmNfaWNkZiggcHNSYW5nZUVuYywgbiwgc2lsa19zdGVyZW9fcHJlZF9qb2lu
dF9pQ0RGLCA4ICk7CiAgICAgZm9yKCBuID0gMDsgbiA8IDI7IG4rKyApIHsKLSAgICAgICAgc2ls
a19hc3NlcnQoIGl4WyBuIF1bIDAgXSA8IDMgKTsKLSAgICAgICAgc2lsa19hc3NlcnQoIGl4WyBu
IF1bIDEgXSA8IFNURVJFT19RVUFOVF9TVUJfU1RFUFMgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQo
IGl4WyBuIF1bIDAgXSA8IDMgKTsKKyAgICAgICAgY2VsdF9hc3NlcnQoIGl4WyBuIF1bIDEgXSA8
IFNURVJFT19RVUFOVF9TVUJfU1RFUFMgKTsKICAgICAgICAgZWNfZW5jX2ljZGYoIHBzUmFuZ2VF
bmMsIGl4WyBuIF1bIDAgXSwgc2lsa191bmlmb3JtM19pQ0RGLCA4ICk7CiAgICAgICAgIGVjX2Vu
Y19pY2RmKCBwc1JhbmdlRW5jLCBpeFsgbiBdWyAxIF0sIHNpbGtfdW5pZm9ybTVfaUNERiwgOCAp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zdHJ1Y3RzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvc3RydWN0cy5oCmluZGV4
IDRmZjU5MGIwNGNhYmE1MDgzNWZjZDE4MDA5NDM3YmM3OTBhYWFhYWUuLjMzODBjNzU3YjI4Nzg2
MjFkNTkxODk5MjljN2EwYTVkZWVkOGI2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay9zdHJ1Y3RzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL3N0cnVjdHMuaApAQCAtNzgsNiArNzgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAg
b3B1c19pbnQzMiAgICAgICAgICAgICAgICAgICBJbl9MUF9TdGF0ZVsgMiBdOyAgICAgICAgICAg
LyogTG93IHBhc3MgZmlsdGVyIHN0YXRlICovCiAgICAgb3B1c19pbnQzMiAgICAgICAgICAgICAg
ICAgICB0cmFuc2l0aW9uX2ZyYW1lX25vOyAgICAgICAgLyogQ291bnRlciB3aGljaCBpcyBtYXBw
ZWQgdG8gYSBjdXQtb2ZmIGZyZXF1ZW5jeSAqLwogICAgIG9wdXNfaW50ICAgICAgICAgICAgICAg
ICAgICAgbW9kZTsgICAgICAgICAgICAgICAgICAgICAgIC8qIE9wZXJhdGluZyBtb2RlLCA8MDog
c3dpdGNoIGRvd24sID4wOiBzd2l0Y2ggdXA7IDA6IGRvIG5vdGhpbmcgICAgICAgICAgICovCisg
ICAgb3B1c19pbnQzMiAgICAgICAgICAgICAgICAgICBzYXZlZF9mc19rSHo7ICAgICAgICAgICAg
ICAgLyogSWYgbm9uLXplcm8sIGhvbGRzIHRoZSBsYXN0IHNhbXBsaW5nIHJhdGUgYmVmb3JlIGEg
YmFuZHdpZHRoIHN3aXRjaGluZyByZXNldC4gKi8KIH0gc2lsa19MUF9zdGF0ZTsKIAogLyogU3Ry
dWN0dXJlIGNvbnRhaW5pbmcgTkxTRiBjb2RlYm9vayAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3RhYmxl
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL3RhYmxlcy5oCmluZGV4IDhiMDM4MGVlYjA5ODRjMTdiMzgyNTY3Mjk3ODUxYzJk
NWEyNzBhYWUuLjk1MjMwYzQ1MWE2YjJkMGMyY2RiNzgyNTFjMmYwNTI5MTJkYjFiZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc2lsay90YWJsZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsvdGFibGVzLmgKQEAgLTk3LDEyICs5Nyw2IEBA
IGV4dGVybiBjb25zdCBvcHVzX3VpbnQ4ICBzaWxrX05MU0ZfaW50ZXJwb2xhdGlvbl9mYWN0b3Jf
aUNERlsgNSBdOwogZXh0ZXJuIGNvbnN0IHNpbGtfTkxTRl9DQl9zdHJ1Y3Qgc2lsa19OTFNGX0NC
X1dCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IDEwNDAgKi8KIGV4dGVybiBjb25zdCBzaWxrX05MU0ZfQ0Jfc3RydWN0IHNpbGtfTkxTRl9DQl9O
Ql9NQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA3
MjggKi8KIAotLyogUGllY2Utd2lzZSBsaW5lYXIgbWFwcGluZyBmcm9tIGJpdHJhdGUgaW4ga2Jw
cyB0byBjb2RpbmcgcXVhbGl0eSBpbiBkQiBTTlIgKi8KLWV4dGVybiBjb25zdCBvcHVzX2ludDMy
ICBzaWxrX1RhcmdldFJhdGVfdGFibGVfTkJbICBUQVJHRVRfUkFURV9UQUJfU1ogXTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiAgMzIgKi8KLWV4dGVybiBjb25zdCBvcHVzX2ludDMyICBz
aWxrX1RhcmdldFJhdGVfdGFibGVfTUJbICBUQVJHRVRfUkFURV9UQUJfU1ogXTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiAgMzIgKi8KLWV4dGVybiBjb25zdCBvcHVzX2ludDMyICBzaWxr
X1RhcmdldFJhdGVfdGFibGVfV0JbICBUQVJHRVRfUkFURV9UQUJfU1ogXTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiAgMzIgKi8KLWV4dGVybiBjb25zdCBvcHVzX2ludDE2ICBzaWxrX1NO
Ul90YWJsZV9RMVsgICAgICAgICBUQVJHRVRfUkFURV9UQUJfU1ogXTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiAgMzIgKi8KLQogLyogUXVhbnRpemF0aW9uIG9mZnNldHMgKi8KIGV4dGVy
biBjb25zdCBvcHVzX2ludDE2ICBzaWxrX1F1YW50aXphdGlvbl9PZmZzZXRzX1ExMFsgMiBdWyAy
IF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIDggKi8KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL3RhYmxlc19vdGhlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3RhYmxlc19vdGhlci5jCmluZGV4IDM5ODY4
NmJmMjZiOTQ3ZjBiNjQwYmQ2NGFhZGQ0Y2VlMDRmOWExZDQuLmUzNGQ5MDc3N2IzZGI2ZDIxZGNl
MTUzMTMxYmM4ZGJkYTkzZGU4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay90YWJsZXNfb3RoZXIuYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NpbGsvdGFibGVzX290aGVyLmMKQEAgLTM4LDIwICszOCw2IEBAIGV4dGVybiAiQyIKIHsKICNl
bmRpZgogCi0vKiBQaWVjZS13aXNlIGxpbmVhciBtYXBwaW5nIGZyb20gYml0cmF0ZSBpbiBrYnBz
IHRvIGNvZGluZyBxdWFsaXR5IGluIGRCIFNOUiAqLwotY29uc3Qgb3B1c19pbnQzMiBzaWxrX1Rh
cmdldFJhdGVfdGFibGVfTkJbIFRBUkdFVF9SQVRFX1RBQl9TWiBdID0gewotICAgIDAsICAgICAg
ODAwMCwgICA5NDAwLCAgIDExNTAwLCAgMTM1MDAsICAxNzUwMCwgIDI1MDAwLCAgTUFYX1RBUkdF
VF9SQVRFX0JQUwotfTsKLWNvbnN0IG9wdXNfaW50MzIgc2lsa19UYXJnZXRSYXRlX3RhYmxlX01C
WyBUQVJHRVRfUkFURV9UQUJfU1ogXSA9IHsKLSAgICAwLCAgICAgIDkwMDAsICAgMTIwMDAsICAx
NDUwMCwgIDE4NTAwLCAgMjQ1MDAsICAzNTUwMCwgIE1BWF9UQVJHRVRfUkFURV9CUFMKLX07Ci1j
b25zdCBvcHVzX2ludDMyIHNpbGtfVGFyZ2V0UmF0ZV90YWJsZV9XQlsgVEFSR0VUX1JBVEVfVEFC
X1NaIF0gPSB7Ci0gICAgMCwgICAgICAxMDUwMCwgIDE0MDAwLCAgMTcwMDAsICAyMTUwMCwgIDI4
NTAwLCAgNDIwMDAsICBNQVhfVEFSR0VUX1JBVEVfQlBTCi19OwotY29uc3Qgb3B1c19pbnQxNiBz
aWxrX1NOUl90YWJsZV9RMVsgVEFSR0VUX1JBVEVfVEFCX1NaIF0gPSB7Ci0gICAgMTgsICAgICAy
OSwgICAgIDM4LCAgICAgNDAsICAgICA0NiwgICAgIDUyLCAgICAgNjIsICAgICA4NAotfTsKLQog
LyogVGFibGVzIGZvciBzdGVyZW8gcHJlZGljdG9yIGNvZGluZyAqLwogY29uc3Qgb3B1c19pbnQx
NiBzaWxrX3N0ZXJlb19wcmVkX3F1YW50X1ExM1sgU1RFUkVPX1FVQU5UX1RBQl9TSVpFIF0gPSB7
CiAgICAgLTEzNzMyLCAtMTAwNTAsIC04MjY2LCAtNzUyNiwgLTY1MDAsIC01MDAwLCAtMjk1MCwg
IC04MjAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3NpbGsveDg2L05TUV9kZWxfZGVjX3NzZS5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9O
U1FfZGVsX2RlY19zc2UuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUyMTJiZWU4
ZDNhMWIxYzIxNjJjZTgzMjY4MTE0NWJiNzQ3Yzc2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsveDg2L05TUV9kZWxfZGVjX3NzZS5jCisrKyAvZGV2
L251bGwKQEAgLTEsODU5ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lz
dGVtcywgSU5DCi0gICBXcml0dGVuIGJ5IFhpYW5nTWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFu
V2FuZwotCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICAgYXJlIG1ldDoKLQotICAgLSBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotCi0gICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gICBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAg
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIE9XTkVSCi0gICBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAg
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLSAgIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0qLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2VuZGlmCi0KLSNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KLSNpbmNsdWRlIDxlbW1pbnRyaW4u
aD4KLSNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KLSNpbmNsdWRlICJtYWluLmgiCi0jaW5jbHVkZSAi
Y2VsdC94ODYveDg2Y3B1LmgiCi0KLSNpbmNsdWRlICJzdGFja19hbGxvYy5oIgotCi10eXBlZGVm
IHN0cnVjdCB7Ci0gICAgb3B1c19pbnQzMiBzTFBDX1ExNFsgTUFYX1NVQl9GUkFNRV9MRU5HVEgg
KyBOU1FfTFBDX0JVRl9MRU5HVEggXTsKLSAgICBvcHVzX2ludDMyIFJhbmRTdGF0ZVsgREVDSVNJ
T05fREVMQVkgXTsKLSAgICBvcHVzX2ludDMyIFFfUTEwWyAgICAgREVDSVNJT05fREVMQVkgXTsK
LSAgICBvcHVzX2ludDMyIFhxX1ExNFsgICAgREVDSVNJT05fREVMQVkgXTsKLSAgICBvcHVzX2lu
dDMyIFByZWRfUTE1WyAgREVDSVNJT05fREVMQVkgXTsKLSAgICBvcHVzX2ludDMyIFNoYXBlX1Ex
NFsgREVDSVNJT05fREVMQVkgXTsKLSAgICBvcHVzX2ludDMyIHNBUjJfUTE0WyBNQVhfU0hBUEVf
TFBDX09SREVSIF07Ci0gICAgb3B1c19pbnQzMiBMRl9BUl9RMTQ7Ci0gICAgb3B1c19pbnQzMiBT
ZWVkOwotICAgIG9wdXNfaW50MzIgU2VlZEluaXQ7Ci0gICAgb3B1c19pbnQzMiBSRF9RMTA7Ci19
IE5TUV9kZWxfZGVjX3N0cnVjdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIG9wdXNfaW50MzIg
UV9RMTA7Ci0gICAgb3B1c19pbnQzMiBSRF9RMTA7Ci0gICAgb3B1c19pbnQzMiB4cV9RMTQ7Ci0g
ICAgb3B1c19pbnQzMiBMRl9BUl9RMTQ7Ci0gICAgb3B1c19pbnQzMiBzTFRQX3NocF9RMTQ7Ci0g
ICAgb3B1c19pbnQzMiBMUENfZXhjX1ExNDsKLX0gTlNRX3NhbXBsZV9zdHJ1Y3Q7Ci0KLXR5cGVk
ZWYgTlNRX3NhbXBsZV9zdHJ1Y3QgIE5TUV9zYW1wbGVfcGFpclsgMiBdOwotCi1zdGF0aWMgT1BV
U19JTkxJTkUgdm9pZCBzaWxrX25zcV9kZWxfZGVjX3NjYWxlX3N0YXRlc19zc2U0XzEoCi0gICAg
Y29uc3Qgc2lsa19lbmNvZGVyX3N0YXRlICpwc0VuY0MsICAgICAgICAgICAgICAgLyogSSAgICBF
bmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIHNpbGtfbnNxX3N0YXRl
ICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBOU1FfZGVsX2RlY19zdHJ1Y3QgIHBzRGVsRGVj
W10sICAgICAgICAgICAgICAgICAvKiBJL08gIERlbGF5ZWQgZGVjaXNpb24gc3RhdGVzICAgICAg
ICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICB4X1EzW10sICAgICAgICAgICAgICAg
ICAgICAgLyogSSAgICBJbnB1dCBpbiBRMyAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IG9wdXNfaW50MzIgICAgICAgICAgeF9zY19RMTBbXSwgICAgICAgICAgICAgICAgIC8qIE8gICAg
SW5wdXQgc2NhbGVkIHdpdGggMS9HYWluIGluIFExMCAgICAgKi8KLSAgICBjb25zdCBvcHVzX2lu
dDE2ICAgIHNMVFBbXSwgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFJlLXdoaXRlbmVkIExU
UCBzdGF0ZSBpbiBRMCAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAgICBzTFRQX1Ex
NVtdLCAgICAgICAgICAgICAgICAgLyogTyAgICBMVFAgc3RhdGUgbWF0Y2hpbmcgc2NhbGVkIGlu
cHV0ICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgc3ViZnIsICAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgU3ViZnJhbWUgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICBvcHVzX2ludCAgICAgICAgICAgIG5TdGF0ZXNEZWxheWVkRGVjaXNpb24sICAgICAvKiBJICAg
IE51bWJlciBvZiBkZWwgZGVjIHN0YXRlcyAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19p
bnQgICAgICBMVFBfc2NhbGVfUTE0LCAgICAgICAgICAgICAgLyogSSAgICBMVFAgc3RhdGUgc2Nh
bGluZyAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAgR2FpbnNf
UTE2WyBNQVhfTkJfU1VCRlIgXSwgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgIHBpdGNoTFsgTUFYX05CX1NVQkZS
IF0sICAgICAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0g
ICAgY29uc3Qgb3B1c19pbnQgICAgICBzaWduYWxfdHlwZSwgICAgICAgICAgICAgICAgLyogSSAg
ICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNf
aW50ICAgICAgZGVjaXNpb25EZWxheSAgICAgICAgICAgICAgIC8qIEkgICAgRGVjaXNpb24gZGVs
YXkgICAgICAgICAgICAgICAgICAgICAgKi8KLSk7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCi0vKiBOb2lzZSBzaGFwZSBxdWFudGl6ZXIgZm9yIG9uZSBz
dWJmcmFtZSAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
LXN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyX2RlbF9k
ZWNfc3NlNF8xKAotICAgIHNpbGtfbnNxX3N0YXRlICAgICAgKk5TUSwgICAgICAgICAgICAgICAg
ICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIE5T
UV9kZWxfZGVjX3N0cnVjdCAgcHNEZWxEZWNbXSwgICAgICAgICAgICAgLyogSS9PICBEZWxheWVk
IGRlY2lzaW9uIHN0YXRlcyAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAg
c2lnbmFsVHlwZSwgICAgICAgICAgICAgLyogSSAgICBTaWduYWwgdHlwZSAgICAgICAgICAgICAg
ICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9RMTBbXSwgICAgICAgICAg
ICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IG9wdXNfaW50OCAgICAgICAgICAgcHVsc2VzW10sICAgICAgICAgICAgICAgLyogTyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MTYgICAgICAg
ICAgeHFbXSwgICAgICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAg
ICAgICAgICAgLyogSS9PICBMVFAgZmlsdGVyIHN0YXRlICAgICAgICAgICAgICAgICAgICAqLwot
ICAgIG9wdXNfaW50MzIgICAgICAgICAgZGVsYXllZEdhaW5fUTEwW10sICAgICAgLyogSS9PICBH
YWluIGRlbGF5IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50
MTYgICAgYV9RMTJbXSwgICAgICAgICAgICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rp
b24gY29lZnMgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYl9RMTRbXSwgICAg
ICAgICAgICAgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgICAgICAq
LwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgQVJfc2hwX1ExM1tdLCAgICAgICAgICAgLyogSSAg
ICBOb2lzZSBzaGFwaW5nIGNvZWZzICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAg
ICAgICAgICAgbGFnLCAgICAgICAgICAgICAgICAgICAgLyogSSAgICBQaXRjaCBsYWcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgSGFybVNoYXBl
RklSUGFja2VkX1ExNCwgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgVGlsdF9RMTQsICAgICAgICAgICAgICAgLyog
SSAgICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50
MzIgICAgICAgICAgTEZfc2hwX1ExNCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgR2Fpbl9R
MTYsICAgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgTGFtYmRhX1ExMCwgICAgICAgICAgICAg
LyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNf
aW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgbGVu
Z3RoLCAgICAgICAgICAgICAgICAgLyogSSAgICBJbnB1dCBsZW5ndGggICAgICAgICAgICAgICAg
ICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgc3ViZnIsICAgICAgICAgICAgICAg
ICAgLyogSSAgICBTdWJmcmFtZSBudW1iZXIgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9w
dXNfaW50ICAgICAgICAgICAgc2hhcGluZ0xQQ09yZGVyLCAgICAgICAgLyogSSAgICBTaGFwaW5n
IExQQyBmaWx0ZXIgb3JkZXIgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAg
cHJlZGljdExQQ09yZGVyLCAgICAgICAgLyogSSAgICBQcmVkaWN0aW9uIGZpbHRlciBvcmRlciAg
ICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgd2FycGluZ19RMTYsICAgICAg
ICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IG9wdXNfaW50ICAgICAgICAgICAgblN0YXRlc0RlbGF5ZWREZWNpc2lvbiwgLyogSSAgICBOdW1i
ZXIgb2Ygc3RhdGVzIGluIGRlY2lzaW9uIHRyZWUgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAg
ICAgKnNtcGxfYnVmX2lkeCwgICAgICAgICAgLyogSS9PICBJbmRleCB0byBuZXdlc3Qgc2FtcGxl
cyBpbiBidWZmZXJzICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgZGVjaXNpb25EZWxheSAg
ICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwot
KTsKLQotdm9pZCBzaWxrX05TUV9kZWxfZGVjX3NzZTRfMSgKLSAgICBjb25zdCBzaWxrX2VuY29k
ZXJfc3RhdGUgICAgKnBzRW5jQywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBJICAgIEVuY29kZXIgU3RhdGUgICAgICAgICAgICAgICAgICAgKi8KLSAgICBzaWxrX25zcV9z
dGF0ZSAgICAgICAgICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBTaWRl
SW5mb0luZGljZXMgICAgICAgICAgICAgKnBzSW5kaWNlcywgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBJL08gIFF1YW50aXphdGlvbiBJbmRpY2VzICAgICAgICAgICAgKi8KLSAg
ICBjb25zdCBvcHVzX2ludDMyICAgICAgICAgICAgeF9RM1tdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBJICAgIFByZWZpbHRlcmVkIGlucHV0IHNpZ25hbCAgICAgICAg
Ki8KLSAgICBvcHVzX2ludDggICAgICAgICAgICAgICAgICAgcHVsc2VzW10sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBPICAgIFF1YW50aXplZCBwdWxzZSBzaWduYWwgICAg
ICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgUHJlZENvZWZfUTEyWyAy
ICogTUFYX0xQQ19PUkRFUiBdLCAgICAgICAgICAvKiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlv
biBjb2VmcyAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgTFRQQ29lZl9R
MTRbIExUUF9PUkRFUiAqIE1BWF9OQl9TVUJGUiBdLCAgICAvKiBJICAgIExvbmcgdGVybSBwcmVk
aWN0aW9uIGNvZWZzICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgQVIy
X1ExM1sgTUFYX05CX1NVQkZSICogTUFYX1NIQVBFX0xQQ19PUkRFUiBdLCAvKiBJIE5vaXNlIHNo
YXBpbmcgY29lZnMgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAg
ICAgSGFybVNoYXBlR2Fpbl9RMTRbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAvKiBJICAgIExv
bmcgdGVybSBzaGFwaW5nIGNvZWZzICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAg
ICAgICAgICAgVGlsdF9RMTRbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAgICAvKiBJ
ICAgIFNwZWN0cmFsIHRpbHQgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2lu
dDMyICAgICAgICAgICAgTEZfc2hwX1ExNFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAgICAg
ICAvKiBJICAgIExvdyBmcmVxdWVuY3kgc2hhcGluZyBjb2VmcyAgICAgKi8KLSAgICBjb25zdCBv
cHVzX2ludDMyICAgICAgICAgICAgR2FpbnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAg
ICAgICAgICAvKiBJICAgIFF1YW50aXphdGlvbiBzdGVwIHNpemVzICAgICAgICAgKi8KLSAgICBj
b25zdCBvcHVzX2ludCAgICAgICAgICAgICAgcGl0Y2hMWyBNQVhfTkJfU1VCRlIgXSwgICAgICAg
ICAgICAgICAgICAgICAvKiBJICAgIFBpdGNoIGxhZ3MgICAgICAgICAgICAgICAgICAgICAgKi8K
LSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgTGFtYmRhX1ExMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFJhdGUvZGlzdG9ydGlvbiB0cmFkZW9mZiAgICAg
ICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgTFRQX3NjYWxlX1ExNCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIExUUCBzdGF0ZSBzY2FsaW5nICAgICAg
ICAgICAgICAgKi8KLSkKLXsKLSAgICBvcHVzX2ludCAgICAgICAgICAgIGksIGssIGxhZywgc3Rh
cnRfaWR4LCBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFnLCBXaW5uZXJfaW5kLCBzdWJmcjsKLSAgICBv
cHVzX2ludCAgICAgICAgICAgIGxhc3Rfc21wbGVfaWR4LCBzbXBsX2J1Zl9pZHgsIGRlY2lzaW9u
RGVsYXk7Ci0gICAgY29uc3Qgb3B1c19pbnQxNiAgICAqQV9RMTIsICpCX1ExNCwgKkFSX3NocF9R
MTM7Ci0gICAgb3B1c19pbnQxNiAgICAgICAgICAqcHhxOwotICAgIFZBUkRFQ0woIG9wdXNfaW50
MzIsIHNMVFBfUTE1ICk7Ci0gICAgVkFSREVDTCggb3B1c19pbnQxNiwgc0xUUCApOwotICAgIG9w
dXNfaW50MzIgICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNDsKLSAgICBvcHVzX2ludCAg
ICAgICAgICAgIG9mZnNldF9RMTA7Ci0gICAgb3B1c19pbnQzMiAgICAgICAgICBSRG1pbl9RMTAs
IEdhaW5fUTEwOwotICAgIFZBUkRFQ0woIG9wdXNfaW50MzIsIHhfc2NfUTEwICk7Ci0gICAgVkFS
REVDTCggb3B1c19pbnQzMiwgZGVsYXllZEdhaW5fUTEwICk7Ci0gICAgVkFSREVDTCggTlNRX2Rl
bF9kZWNfc3RydWN0LCBwc0RlbERlYyApOwotICAgIE5TUV9kZWxfZGVjX3N0cnVjdCAgKnBzREQ7
Ci0gICAgU0FWRV9TVEFDSzsKLQotICAgIC8qIFNldCB1bnZvaWNlZCBsYWcgdG8gdGhlIHByZXZp
b3VzIG9uZSwgb3ZlcndyaXRlIGxhdGVyIGZvciB2b2ljZWQgKi8KLSAgICBsYWcgPSBOU1EtPmxh
Z1ByZXY7Ci0KLSAgICBzaWxrX2Fzc2VydCggTlNRLT5wcmV2X2dhaW5fUTE2ICE9IDAgKTsKLQot
ICAgIC8qIEluaXRpYWxpemUgZGVsYXllZCBkZWNpc2lvbiBzdGF0ZXMgKi8KLSAgICBBTExPQygg
cHNEZWxEZWMsIHBzRW5jQy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbiwgTlNRX2RlbF9kZWNfc3Ry
dWN0ICk7Ci0gICAgc2lsa19tZW1zZXQoIHBzRGVsRGVjLCAwLCBwc0VuY0MtPm5TdGF0ZXNEZWxh
eWVkRGVjaXNpb24gKiBzaXplb2YoIE5TUV9kZWxfZGVjX3N0cnVjdCApICk7Ci0gICAgZm9yKCBr
ID0gMDsgayA8IHBzRW5jQy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgewotICAgICAg
ICBwc0REICAgICAgICAgICAgICAgICA9ICZwc0RlbERlY1sgayBdOwotICAgICAgICBwc0RELT5T
ZWVkICAgICAgICAgICA9ICggayArIHBzSW5kaWNlcy0+U2VlZCApICYgMzsKLSAgICAgICAgcHNE
RC0+U2VlZEluaXQgICAgICAgPSBwc0RELT5TZWVkOwotICAgICAgICBwc0RELT5SRF9RMTAgICAg
ICAgICA9IDA7Ci0gICAgICAgIHBzREQtPkxGX0FSX1ExNCAgICAgID0gTlNRLT5zTEZfQVJfc2hw
X1ExNDsKLSAgICAgICAgcHNERC0+U2hhcGVfUTE0WyAwIF0gPSBOU1EtPnNMVFBfc2hwX1ExNFsg
cHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIDEgXTsKLSAgICAgICAgc2lsa19tZW1jcHkoIHBzREQt
PnNMUENfUTE0LCBOU1EtPnNMUENfUTE0LCBOU1FfTFBDX0JVRl9MRU5HVEggKiBzaXplb2YoIG9w
dXNfaW50MzIgKSApOwotICAgICAgICBzaWxrX21lbWNweSggcHNERC0+c0FSMl9RMTQsIE5TUS0+
c0FSMl9RMTQsIHNpemVvZiggTlNRLT5zQVIyX1ExNCApICk7Ci0gICAgfQotCi0gICAgb2Zmc2V0
X1ExMCAgID0gc2lsa19RdWFudGl6YXRpb25fT2Zmc2V0c19RMTBbIHBzSW5kaWNlcy0+c2lnbmFs
VHlwZSA+PiAxIF1bIHBzSW5kaWNlcy0+cXVhbnRPZmZzZXRUeXBlIF07Ci0gICAgc21wbF9idWZf
aWR4ID0gMDsgLyogaW5kZXggb2Ygb2xkZXN0IHNhbXBsZXMgKi8KLQotICAgIGRlY2lzaW9uRGVs
YXkgPSBzaWxrX21pbl9pbnQoIERFQ0lTSU9OX0RFTEFZLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCAp
OwotCi0gICAgLyogRm9yIHZvaWNlZCBmcmFtZXMgbGltaXQgdGhlIGRlY2lzaW9uIGRlbGF5IHRv
IGxvd2VyIHRoYW4gdGhlIHBpdGNoIGxhZyAqLwotICAgIGlmKCBwc0luZGljZXMtPnNpZ25hbFR5
cGUgPT0gVFlQRV9WT0lDRUQgKSB7Ci0gICAgICAgIGZvciggayA9IDA7IGsgPCBwc0VuY0MtPm5i
X3N1YmZyOyBrKysgKSB7Ci0gICAgICAgICAgICBkZWNpc2lvbkRlbGF5ID0gc2lsa19taW5faW50
KCBkZWNpc2lvbkRlbGF5LCBwaXRjaExbIGsgXSAtIExUUF9PUkRFUiAvIDIgLSAxICk7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiggbGFnID4gMCApIHsKLSAgICAgICAgICAg
IGRlY2lzaW9uRGVsYXkgPSBzaWxrX21pbl9pbnQoIGRlY2lzaW9uRGVsYXksIGxhZyAtIExUUF9P
UkRFUiAvIDIgLSAxICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggcHNJbmRpY2VzLT5O
TFNGSW50ZXJwQ29lZl9RMiA9PSA0ICkgewotICAgICAgICBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFn
ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFnID0gMTsK
LSAgICB9Ci0KLSAgICBBTExPQyggc0xUUF9RMTUsCi0gICAgICAgICAgIHBzRW5jQy0+bHRwX21l
bV9sZW5ndGggKyBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgb3B1c19pbnQzMiApOwotICAgIEFMTE9D
KCBzTFRQLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoICsgcHNFbmNDLT5mcmFtZV9sZW5ndGgsIG9w
dXNfaW50MTYgKTsKLSAgICBBTExPQyggeF9zY19RMTAsIHBzRW5jQy0+c3ViZnJfbGVuZ3RoLCBv
cHVzX2ludDMyICk7Ci0gICAgQUxMT0MoIGRlbGF5ZWRHYWluX1ExMCwgREVDSVNJT05fREVMQVks
IG9wdXNfaW50MzIgKTsKLSAgICAvKiBTZXQgdXAgcG9pbnRlcnMgdG8gc3RhcnQgb2Ygc3ViIGZy
YW1lICovCi0gICAgcHhxICAgICAgICAgICAgICAgICAgID0gJk5TUS0+eHFbIHBzRW5jQy0+bHRw
X21lbV9sZW5ndGggXTsKLSAgICBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggPSBwc0VuY0MtPmx0cF9t
ZW1fbGVuZ3RoOwotICAgIE5TUS0+c0xUUF9idWZfaWR4ICAgICA9IHBzRW5jQy0+bHRwX21lbV9s
ZW5ndGg7Ci0gICAgc3ViZnIgPSAwOwotICAgIGZvciggayA9IDA7IGsgPCBwc0VuY0MtPm5iX3N1
YmZyOyBrKysgKSB7Ci0gICAgICAgIEFfUTEyICAgICAgPSAmUHJlZENvZWZfUTEyWyAoICggayA+
PiAxICkgfCAoIDEgLSBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFnICkgKSAqIE1BWF9MUENfT1JERVIg
XTsKLSAgICAgICAgQl9RMTQgICAgICA9ICZMVFBDb2VmX1ExNFsgayAqIExUUF9PUkRFUiAgICAg
ICAgICAgXTsKLSAgICAgICAgQVJfc2hwX1ExMyA9ICZBUjJfUTEzWyAgICAgayAqIE1BWF9TSEFQ
RV9MUENfT1JERVIgXTsKLQotICAgICAgICAvKiBOb2lzZSBzaGFwZSBwYXJhbWV0ZXJzICovCi0g
ICAgICAgIHNpbGtfYXNzZXJ0KCBIYXJtU2hhcGVHYWluX1ExNFsgayBdID49IDAgKTsKLSAgICAg
ICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgc2ls
a19SU0hJRlQoIEhhcm1TaGFwZUdhaW5fUTE0WyBrIF0sIDIgKTsKLSAgICAgICAgSGFybVNoYXBl
RklSUGFja2VkX1ExNCB8PSBzaWxrX0xTSElGVCggKG9wdXNfaW50MzIpc2lsa19SU0hJRlQoIEhh
cm1TaGFwZUdhaW5fUTE0WyBrIF0sIDEgKSwgMTYgKTsKLQotICAgICAgICBOU1EtPnJld2hpdGVf
ZmxhZyA9IDA7Ci0gICAgICAgIGlmKCBwc0luZGljZXMtPnNpZ25hbFR5cGUgPT0gVFlQRV9WT0lD
RUQgKSB7Ci0gICAgICAgICAgICAvKiBWb2ljZWQgKi8KLSAgICAgICAgICAgIGxhZyA9IHBpdGNo
TFsgayBdOwotCi0gICAgICAgICAgICAvKiBSZS13aGl0ZW5pbmcgKi8KLSAgICAgICAgICAgIGlm
KCAoIGsgJiAoIDMgLSBzaWxrX0xTSElGVCggTFNGX2ludGVycG9sYXRpb25fZmxhZywgMSApICkg
KSA9PSAwICkgewotICAgICAgICAgICAgICAgIGlmKCBrID09IDIgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8qIFJFU0VUIERFTEFZRUQgREVDSVNJT05TICovCi0gICAgICAgICAgICAgICAgICAg
IC8qIEZpbmQgd2lubmVyICovCi0gICAgICAgICAgICAgICAgICAgIFJEbWluX1ExMCA9IHBzRGVs
RGVjWyAwIF0uUkRfUTEwOwotICAgICAgICAgICAgICAgICAgICBXaW5uZXJfaW5kID0gMDsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yKCBpID0gMTsgaSA8IHBzRW5jQy0+blN0YXRlc0RlbGF5ZWRE
ZWNpc2lvbjsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHBzRGVsRGVjWyBp
IF0uUkRfUTEwIDwgUkRtaW5fUTEwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJE
bWluX1ExMCA9IHBzRGVsRGVjWyBpIF0uUkRfUTEwOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdpbm5lcl9pbmQgPSBpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBwc0VuY0Mt
Pm5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmKCBpICE9IFdpbm5lcl9pbmQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNE
ZWxEZWNbIGkgXS5SRF9RMTAgKz0gKCBzaWxrX2ludDMyX01BWCA+PiA0ICk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHBzRGVsRGVjWyBpIF0uUkRfUTEwID49IDAg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIC8qIENvcHkgZmluYWwgcGFydCBvZiBzaWduYWxzIGZyb20gd2lu
bmVyIHN0YXRlIHRvIG91dHB1dCBhbmQgbG9uZy10ZXJtIGZpbHRlciBzdGF0ZXMgKi8KLSAgICAg
ICAgICAgICAgICAgICAgcHNERCA9ICZwc0RlbERlY1sgV2lubmVyX2luZCBdOwotICAgICAgICAg
ICAgICAgICAgICBsYXN0X3NtcGxlX2lkeCA9IHNtcGxfYnVmX2lkeCArIGRlY2lzaW9uRGVsYXk7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBkZWNpc2lvbkRlbGF5OyBpKysg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3NtcGxlX2lkeCA9ICggbGFzdF9zbXBs
ZV9pZHggLSAxICkgJSBERUNJU0lPTl9ERUxBWTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
KCBsYXN0X3NtcGxlX2lkeCA8IDAgKSBsYXN0X3NtcGxlX2lkeCArPSBERUNJU0lPTl9ERUxBWTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB1bHNlc1sgICBpIC0gZGVjaXNpb25EZWxheSBdID0g
KG9wdXNfaW50OClzaWxrX1JTSElGVF9ST1VORCggcHNERC0+UV9RMTBbIGxhc3Rfc21wbGVfaWR4
IF0sIDEwICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBweHFbIGkgLSBkZWNpc2lvbkRlbGF5
IF0gPSAob3B1c19pbnQxNilzaWxrX1NBVDE2KCBzaWxrX1JTSElGVF9ST1VORCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaWxrX1NNVUxXVyggcHNERC0+WHFfUTE0WyBsYXN0X3NtcGxl
X2lkeCBdLCBHYWluc19RMTZbIDEgXSApLCAxNCApICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gZGVjaXNpb25EZWxh
eSArIGkgXSA9IHBzREQtPlNoYXBlX1ExNFsgbGFzdF9zbXBsZV9pZHggXTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHN1YmZyID0gMDsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvKiBSZXdoaXRlbiB3aXRoIG5ldyBBIGNvZWZzICov
Ci0gICAgICAgICAgICAgICAgc3RhcnRfaWR4ID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIGxh
ZyAtIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyIC0gTFRQX09SREVSIC8gMjsKLSAgICAgICAgICAg
ICAgICBzaWxrX2Fzc2VydCggc3RhcnRfaWR4ID4gMCApOwotCi0gICAgICAgICAgICAgICAgc2ls
a19MUENfYW5hbHlzaXNfZmlsdGVyKCAmc0xUUFsgc3RhcnRfaWR4IF0sICZOU1EtPnhxWyBzdGFy
dF9pZHggKyBrICogcHNFbmNDLT5zdWJmcl9sZW5ndGggXSwKLSAgICAgICAgICAgICAgICAgICAg
QV9RMTIsIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggLSBzdGFydF9pZHgsIHBzRW5jQy0+cHJlZGlj
dExQQ09yZGVyLCBwc0VuY0MtPmFyY2ggKTsKLQotICAgICAgICAgICAgICAgIE5TUS0+c0xUUF9i
dWZfaWR4ID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aDsKLSAgICAgICAgICAgICAgICBOU1EtPnJl
d2hpdGVfZmxhZyA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzaWxr
X25zcV9kZWxfZGVjX3NjYWxlX3N0YXRlc19zc2U0XzEoIHBzRW5jQywgTlNRLCBwc0RlbERlYywg
eF9RMywgeF9zY19RMTAsIHNMVFAsIHNMVFBfUTE1LCBrLAotICAgICAgICAgICAgcHNFbmNDLT5u
U3RhdGVzRGVsYXllZERlY2lzaW9uLCBMVFBfc2NhbGVfUTE0LCBHYWluc19RMTYsIHBpdGNoTCwg
cHNJbmRpY2VzLT5zaWduYWxUeXBlLCBkZWNpc2lvbkRlbGF5ICk7Ci0KLSAgICAgICAgc2lsa19u
b2lzZV9zaGFwZV9xdWFudGl6ZXJfZGVsX2RlY19zc2U0XzEoIE5TUSwgcHNEZWxEZWMsIHBzSW5k
aWNlcy0+c2lnbmFsVHlwZSwgeF9zY19RMTAsIHB1bHNlcywgcHhxLCBzTFRQX1ExNSwKLSAgICAg
ICAgICAgIGRlbGF5ZWRHYWluX1ExMCwgQV9RMTIsIEJfUTE0LCBBUl9zaHBfUTEzLCBsYWcsIEhh
cm1TaGFwZUZJUlBhY2tlZF9RMTQsIFRpbHRfUTE0WyBrIF0sIExGX3NocF9RMTRbIGsgXSwKLSAg
ICAgICAgICAgIEdhaW5zX1ExNlsgayBdLCBMYW1iZGFfUTEwLCBvZmZzZXRfUTEwLCBwc0VuY0Mt
PnN1YmZyX2xlbmd0aCwgc3ViZnIrKywgcHNFbmNDLT5zaGFwaW5nTFBDT3JkZXIsCi0gICAgICAg
ICAgICBwc0VuY0MtPnByZWRpY3RMUENPcmRlciwgcHNFbmNDLT53YXJwaW5nX1ExNiwgcHNFbmND
LT5uU3RhdGVzRGVsYXllZERlY2lzaW9uLCAmc21wbF9idWZfaWR4LCBkZWNpc2lvbkRlbGF5ICk7
Ci0KLSAgICAgICAgeF9RMyAgICs9IHBzRW5jQy0+c3ViZnJfbGVuZ3RoOwotICAgICAgICBwdWxz
ZXMgKz0gcHNFbmNDLT5zdWJmcl9sZW5ndGg7Ci0gICAgICAgIHB4cSAgICArPSBwc0VuY0MtPnN1
YmZyX2xlbmd0aDsKLSAgICB9Ci0KLSAgICAvKiBGaW5kIHdpbm5lciAqLwotICAgIFJEbWluX1Ex
MCA9IHBzRGVsRGVjWyAwIF0uUkRfUTEwOwotICAgIFdpbm5lcl9pbmQgPSAwOwotICAgIGZvcigg
ayA9IDE7IGsgPCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsrKyApIHsKLSAgICAg
ICAgaWYoIHBzRGVsRGVjWyBrIF0uUkRfUTEwIDwgUkRtaW5fUTEwICkgewotICAgICAgICAgICAg
UkRtaW5fUTEwID0gcHNEZWxEZWNbIGsgXS5SRF9RMTA7Ci0gICAgICAgICAgICBXaW5uZXJfaW5k
ID0gazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIENvcHkgZmluYWwgcGFydCBvZiBzaWdu
YWxzIGZyb20gd2lubmVyIHN0YXRlIHRvIG91dHB1dCBhbmQgbG9uZy10ZXJtIGZpbHRlciBzdGF0
ZXMgKi8KLSAgICBwc0REID0gJnBzRGVsRGVjWyBXaW5uZXJfaW5kIF07Ci0gICAgcHNJbmRpY2Vz
LT5TZWVkID0gcHNERC0+U2VlZEluaXQ7Ci0gICAgbGFzdF9zbXBsZV9pZHggPSBzbXBsX2J1Zl9p
ZHggKyBkZWNpc2lvbkRlbGF5OwotICAgIEdhaW5fUTEwID0gc2lsa19SU0hJRlQzMiggR2FpbnNf
UTE2WyBwc0VuY0MtPm5iX3N1YmZyIC0gMSBdLCA2ICk7Ci0gICAgZm9yKCBpID0gMDsgaSA8IGRl
Y2lzaW9uRGVsYXk7IGkrKyApIHsKLSAgICAgICAgbGFzdF9zbXBsZV9pZHggPSAoIGxhc3Rfc21w
bGVfaWR4IC0gMSApICUgREVDSVNJT05fREVMQVk7Ci0gICAgICAgIGlmKCBsYXN0X3NtcGxlX2lk
eCA8IDAgKSBsYXN0X3NtcGxlX2lkeCArPSBERUNJU0lPTl9ERUxBWTsKLSAgICAgICAgcHVsc2Vz
WyAgIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1c19pbnQ4KXNpbGtfUlNISUZUX1JPVU5EKCBw
c0RELT5RX1ExMFsgbGFzdF9zbXBsZV9pZHggXSwgMTAgKTsKLSAgICAgICAgcHhxWyBpIC0gZGVj
aXNpb25EZWxheSBdID0gKG9wdXNfaW50MTYpc2lsa19TQVQxNiggc2lsa19SU0hJRlRfUk9VTkQo
Ci0gICAgICAgICAgICBzaWxrX1NNVUxXVyggcHNERC0+WHFfUTE0WyBsYXN0X3NtcGxlX2lkeCBd
LCBHYWluX1ExMCApLCA4ICkgKTsKLSAgICAgICAgTlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xU
UF9zaHBfYnVmX2lkeCAtIGRlY2lzaW9uRGVsYXkgKyBpIF0gPSBwc0RELT5TaGFwZV9RMTRbIGxh
c3Rfc21wbGVfaWR4IF07Ci0gICAgfQotICAgIHNpbGtfbWVtY3B5KCBOU1EtPnNMUENfUTE0LCAm
cHNERC0+c0xQQ19RMTRbIHBzRW5jQy0+c3ViZnJfbGVuZ3RoIF0sIE5TUV9MUENfQlVGX0xFTkdU
SCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7Ci0gICAgc2lsa19tZW1jcHkoIE5TUS0+c0FSMl9R
MTQsIHBzREQtPnNBUjJfUTE0LCBzaXplb2YoIHBzREQtPnNBUjJfUTE0ICkgKTsKLQotICAgIC8q
IFVwZGF0ZSBzdGF0ZXMgKi8KLSAgICBOU1EtPnNMRl9BUl9zaHBfUTE0ID0gcHNERC0+TEZfQVJf
UTE0OwotICAgIE5TUS0+bGFnUHJldiAgICAgICAgPSBwaXRjaExbIHBzRW5jQy0+bmJfc3ViZnIg
LSAxIF07Ci0KLSAgICAvKiBTYXZlIHF1YW50aXplZCBzcGVlY2ggc2lnbmFsICovCi0gICAgc2ls
a19tZW1tb3ZlKCBOU1EtPnhxLCAgICAgICAgICAgJk5TUS0+eHFbICAgICAgICAgICBwc0VuY0Mt
PmZyYW1lX2xlbmd0aCBdLCBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoICogc2l6ZW9mKCBvcHVzX2lu
dDE2ICkgKTsKLSAgICBzaWxrX21lbW1vdmUoIE5TUS0+c0xUUF9zaHBfUTE0LCAmTlNRLT5zTFRQ
X3NocF9RMTRbIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoIF0sIHBzRW5jQy0+bHRwX21lbV9sZW5ndGgg
KiBzaXplb2YoIG9wdXNfaW50MzIgKSApOwotICAgIFJFU1RPUkVfU1RBQ0s7Ci19Ci0KLS8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBOb2lzZSBzaGFwZSBx
dWFudGl6ZXIgZm9yIG9uZSBzdWJmcmFtZSAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KLXN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hh
cGVfcXVhbnRpemVyX2RlbF9kZWNfc3NlNF8xKAotICAgIHNpbGtfbnNxX3N0YXRlICAgICAgKk5T
USwgICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwotICAgIE5TUV9kZWxfZGVjX3N0cnVjdCAgcHNEZWxEZWNbXSwgICAgICAgICAg
ICAgLyogSS9PICBEZWxheWVkIGRlY2lzaW9uIHN0YXRlcyAgICAgICAgICAgICAqLwotICAgIG9w
dXNfaW50ICAgICAgICAgICAgc2lnbmFsVHlwZSwgICAgICAgICAgICAgLyogSSAgICBTaWduYWwg
dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MzIgICAg
eF9RMTBbXSwgICAgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLwotICAgIG9wdXNfaW50OCAgICAgICAgICAgcHVsc2VzW10sICAgICAgICAg
ICAgICAgLyogTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IG9wdXNfaW50MTYgICAgICAgICAgeHFbXSwgICAgICAgICAgICAgICAgICAgLyogTyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAg
ICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyogSS9PICBMVFAgZmlsdGVyIHN0YXRlICAgICAg
ICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgZGVsYXllZEdhaW5fUTEw
W10sICAgICAgLyogSS9PICBHYWluIGRlbGF5IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAqLwot
ICAgIGNvbnN0IG9wdXNfaW50MTYgICAgYV9RMTJbXSwgICAgICAgICAgICAgICAgLyogSSAgICBT
aG9ydCB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50
MTYgICAgYl9RMTRbXSwgICAgICAgICAgICAgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGljdGlv
biBjb2VmcyAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgQVJfc2hwX1ExM1td
LCAgICAgICAgICAgLyogSSAgICBOb2lzZSBzaGFwaW5nIGNvZWZzICAgICAgICAgICAgICAgICAq
LwotICAgIG9wdXNfaW50ICAgICAgICAgICAgbGFnLCAgICAgICAgICAgICAgICAgICAgLyogSSAg
ICBQaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIg
ICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCwgLyogSSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgVGlsdF9RMTQs
ICAgICAgICAgICAgICAgLyogSSAgICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICAg
ICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgTEZfc2hwX1ExNCwgICAgICAgICAgICAgLyog
SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50
MzIgICAgICAgICAgR2Fpbl9RMTYsICAgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgTGFtYmRh
X1ExMCwgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwgICAgICAgICAgICAg
LyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNf
aW50ICAgICAgICAgICAgbGVuZ3RoLCAgICAgICAgICAgICAgICAgLyogSSAgICBJbnB1dCBsZW5n
dGggICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgc3Vi
ZnIsICAgICAgICAgICAgICAgICAgLyogSSAgICBTdWJmcmFtZSBudW1iZXIgICAgICAgICAgICAg
ICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgc2hhcGluZ0xQQ09yZGVyLCAgICAg
ICAgLyogSSAgICBTaGFwaW5nIExQQyBmaWx0ZXIgb3JkZXIgICAgICAgICAgICAqLwotICAgIG9w
dXNfaW50ICAgICAgICAgICAgcHJlZGljdExQQ09yZGVyLCAgICAgICAgLyogSSAgICBQcmVkaWN0
aW9uIGZpbHRlciBvcmRlciAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAg
d2FycGluZ19RMTYsICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLwotICAgIG9wdXNfaW50ICAgICAgICAgICAgblN0YXRlc0RlbGF5ZWREZWNp
c2lvbiwgLyogSSAgICBOdW1iZXIgb2Ygc3RhdGVzIGluIGRlY2lzaW9uIHRyZWUgICAqLwotICAg
IG9wdXNfaW50ICAgICAgICAgICAgKnNtcGxfYnVmX2lkeCwgICAgICAgICAgLyogSS9PICBJbmRl
eCB0byBuZXdlc3Qgc2FtcGxlcyBpbiBidWZmZXJzICAqLwotICAgIG9wdXNfaW50ICAgICAgICAg
ICAgZGVjaXNpb25EZWxheSAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwotKQotewotICAgIG9wdXNfaW50ICAgICBpLCBqLCBrLCBXaW5uZXJf
aW5kLCBSRG1pbl9pbmQsIFJEbWF4X2luZCwgbGFzdF9zbXBsZV9pZHg7Ci0gICAgb3B1c19pbnQz
MiAgIFdpbm5lcl9yYW5kX3N0YXRlOwotICAgIG9wdXNfaW50MzIgICBMVFBfcHJlZF9RMTQsIExQ
Q19wcmVkX1ExNCwgbl9BUl9RMTQsIG5fTFRQX1ExNDsKLSAgICBvcHVzX2ludDMyICAgbl9MRl9R
MTQsIHJfUTEwLCBycl9RMTAsIHJkMV9RMTAsIHJkMl9RMTAsIFJEbWluX1ExMCwgUkRtYXhfUTEw
OwotICAgIG9wdXNfaW50MzIgICBxMV9RMCwgcTFfUTEwLCBxMl9RMTAsIGV4Y19RMTQsIExQQ19l
eGNfUTE0LCB4cV9RMTQsIEdhaW5fUTEwOwotICAgIG9wdXNfaW50MzIgICB0bXAxLCB0bXAyLCBz
TEZfQVJfc2hwX1ExNDsKLSAgICBvcHVzX2ludDMyICAgKnByZWRfbGFnX3B0ciwgKnNocF9sYWdf
cHRyLCAqcHNMUENfUTE0OwotICAgIFZBUkRFQ0woIE5TUV9zYW1wbGVfcGFpciwgcHNTYW1wbGVT
dGF0ZSApOwotICAgIE5TUV9kZWxfZGVjX3N0cnVjdCAqcHNERDsKLSAgICBOU1Ffc2FtcGxlX3N0
cnVjdCAgKnBzU1M7Ci0KLSAgICBfX20xMjhpIGFfUTEyXzAxMjMsIGFfUTEyXzQ1NjcsIGFfUTEy
Xzg5QUIsIGFfUTEyX0NERUY7Ci0gICAgX19tMTI4aSBiX1ExMl8wMTIzLCBiX3NyX1ExMl8wMTIz
OwotICAgIFNBVkVfU1RBQ0s7Ci0KLSAgICBzaWxrX2Fzc2VydCggblN0YXRlc0RlbGF5ZWREZWNp
c2lvbiA+IDAgKTsKLSAgICBBTExPQyggcHNTYW1wbGVTdGF0ZSwgblN0YXRlc0RlbGF5ZWREZWNp
c2lvbiwgTlNRX3NhbXBsZV9wYWlyICk7Ci0KLSAgICBzaHBfbGFnX3B0ciAgPSAmTlNRLT5zTFRQ
X3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIGxhZyArIEhBUk1fU0hBUEVfRklSX1RB
UFMgLyAyIF07Ci0gICAgcHJlZF9sYWdfcHRyID0gJnNMVFBfUTE1WyBOU1EtPnNMVFBfYnVmX2lk
eCAtIGxhZyArIExUUF9PUkRFUiAvIDIgXTsKLSAgICBHYWluX1ExMCAgICAgPSBzaWxrX1JTSElG
VCggR2Fpbl9RMTYsIDYgKTsKLQotICAgIGFfUTEyXzAxMjMgPSBPUF9DVlRFUEkxNl9FUEkzMl9N
NjQoIGFfUTEyICk7Ci0gICAgYV9RMTJfNDU2NyA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggYV9R
MTIgKyA0ICk7Ci0KLSAgICBpZiggb3B1c19saWtlbHkoIHByZWRpY3RMUENPcmRlciA9PSAxNiAp
ICkgewotICAgICAgICBhX1ExMl84OUFCID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCBhX1ExMiAr
IDggKTsKLSAgICAgICAgYV9RMTJfQ0RFRiA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggYV9RMTIg
KyAxMiApOwotICAgIH0KLQotICAgIGlmKCBzaWduYWxUeXBlID09IFRZUEVfVk9JQ0VEICl7Ci0g
ICAgICAgIGJfUTEyXzAxMjMgPSBPUF9DVlRFUEkxNl9FUEkzMl9NNjQoIGJfUTE0ICk7Ci0gICAg
ICAgIGJfc3JfUTEyXzAxMjMgPSBfbW1fc2h1ZmZsZV9lcGkzMiggYl9RMTJfMDEyMywgX01NX1NI
VUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCi0g
ICAgfQotICAgIGZvciggaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgLyogUGVy
Zm9ybSBjb21tb24gY2FsY3VsYXRpb25zIHVzZWQgaW4gYWxsIHN0YXRlcyAqLwotCi0gICAgICAg
IC8qIExvbmctdGVybSBwcmVkaWN0aW9uICovCi0gICAgICAgIGlmKCBzaWduYWxUeXBlID09IFRZ
UEVfVk9JQ0VEICkgewotICAgICAgICAgICAgLyogVW5yb2xsZWQgbG9vcCAqLwotICAgICAgICAg
ICAgLyogQXZvaWRzIGludHJvZHVjaW5nIGEgYmlhcyBiZWNhdXNlIHNpbGtfU01MQVdCKCkgYWx3
YXlzIHJvdW5kcyB0byAtaW5mICovCi0gICAgICAgICAgICBMVFBfcHJlZF9RMTQgPSAyOwotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIF9fbTEyOGkgdG1wYSwgdG1wYiwgcHJlZF9sYWdf
cHRyX3RtcDsKLSAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21tX2xvYWR1
X3NpMTI4KCAoX19tMTI4aSAqKSgmcHJlZF9sYWdfcHRyWyAtMyBdICkgKTsKLSAgICAgICAgICAg
ICAgICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21tX3NodWZmbGVfZXBpMzIoIHByZWRfbGFnX3B0
cl90bXAsIDB4MUIgKTsKLSAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgICAgID0gX21t
X211bF9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwgYl9RMTJfMDEyMyApOwotICAgICAgICAgICAg
ICAgIHRtcGEgICAgICAgICAgICAgICAgPSBfbW1fc3JsaV9zaTEyOCggdG1wYSwgMiApOwotCi0g
ICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwcmVk
X2xhZ19wdHJfdG1wLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7LyogZXF1YWwgc2hpZnQg
cmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0cl90bXAgICAgPSBf
bW1fbXVsX2VwaTMyKCBwcmVkX2xhZ19wdHJfdG1wLCBiX3NyX1ExMl8wMTIzICk7Ci0gICAgICAg
ICAgICAgICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9zcmxpX3NpMTI4KCBwcmVkX2xhZ19w
dHJfdG1wLCAyICk7Ci0gICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9h
ZGRfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAsIHRtcGEgKTsKLQotICAgICAgICAgICAgICAgIHRt
cGIgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwgX01NX1NIVUZGTEUoIDAs
IDAsIDMsIDIgKSApOy8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDggYnl0ZXMgKi8KLSAgICAgICAgICAg
ICAgICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21tX2FkZF9lcGkzMiggcHJlZF9sYWdfcHRyX3Rt
cCwgdG1wYiApOwotICAgICAgICAgICAgICAgIExUUF9wcmVkX1ExNCAgICAgICAgKz0gX21tX2N2
dHNpMTI4X3NpMzIoIHByZWRfbGFnX3B0cl90bXAgKTsKLQotICAgICAgICAgICAgICAgIExUUF9w
cmVkX1ExNCA9IHNpbGtfU01MQVdCKCBMVFBfcHJlZF9RMTQsIHByZWRfbGFnX3B0clsgLTQgXSwg
Yl9RMTRbIDQgXSApOwotICAgICAgICAgICAgICAgIExUUF9wcmVkX1ExNCA9IHNpbGtfTFNISUZU
KCBMVFBfcHJlZF9RMTQsIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMyAtPiBR
MTQgKi8KLSAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHIrKzsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExUUF9wcmVkX1ExNCA9IDA7Ci0gICAgICAgIH0K
LQotICAgICAgICAvKiBMb25nLXRlcm0gc2hhcGluZyAqLwotICAgICAgICBpZiggbGFnID4gMCAp
IHsKLSAgICAgICAgICAgIC8qIFN5bW1ldHJpYywgcGFja2VkIEZJUiBjb2VmZmljaWVudHMgKi8K
LSAgICAgICAgICAgIG5fTFRQX1ExNCA9IHNpbGtfU01VTFdCKCBzaWxrX0FERDMyKCBzaHBfbGFn
X3B0clsgMCBdLCBzaHBfbGFnX3B0clsgLTIgXSApLCBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICk7
Ci0gICAgICAgICAgICBuX0xUUF9RMTQgPSBzaWxrX1NNTEFXVCggbl9MVFBfUTE0LCBzaHBfbGFn
X3B0clsgLTEgXSwgICAgICAgICAgICAgICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCAp
OwotICAgICAgICAgICAgbl9MVFBfUTE0ID0gc2lsa19TVUJfTFNISUZUMzIoIExUUF9wcmVkX1Ex
NCwgbl9MVFBfUTE0LCAyICk7ICAgICAgICAgICAgLyogUTEyIC0+IFExNCAqLwotICAgICAgICAg
ICAgc2hwX2xhZ19wdHIrKzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5fTFRQX1Ex
NCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgX19tMTI4aSB0bXBhLCB0
bXBiLCBwc0xQQ19RMTRfdG1wLCBhX1ExMl90bXA7Ci0KLSAgICAgICAgICAgIGZvciggayA9IDA7
IGsgPCBuU3RhdGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7Ci0gICAgICAgICAgICAgICAgLyog
RGVsYXllZCBkZWNpc2lvbiBzdGF0ZSAqLwotICAgICAgICAgICAgICAgIHBzREQgPSAmcHNEZWxE
ZWNbIGsgXTsKLQotICAgICAgICAgICAgICAgIC8qIFNhbXBsZSBzdGF0ZSAqLwotICAgICAgICAg
ICAgICAgIHBzU1MgPSBwc1NhbXBsZVN0YXRlWyBrIF07Ci0KLSAgICAgICAgICAgICAgICAvKiBH
ZW5lcmF0ZSBkaXRoZXIgKi8KLSAgICAgICAgICAgICAgICBwc0RELT5TZWVkID0gc2lsa19SQU5E
KCBwc0RELT5TZWVkICk7Ci0KLSAgICAgICAgICAgICAgICAvKiBQb2ludGVyIHVzZWQgaW4gc2hv
cnQgdGVybSBwcmVkaWN0aW9uIGFuZCBzaGFwaW5nICovCi0gICAgICAgICAgICAgICAgcHNMUENf
UTE0ID0gJnBzREQtPnNMUENfUTE0WyBOU1FfTFBDX0JVRl9MRU5HVEggLSAxICsgaSBdOwotICAg
ICAgICAgICAgICAgIC8qIFNob3J0LXRlcm0gcHJlZGljdGlvbiAqLwotICAgICAgICAgICAgICAg
IHNpbGtfYXNzZXJ0KCBwcmVkaWN0TFBDT3JkZXIgPT0gMTAgfHwgcHJlZGljdExQQ09yZGVyID09
IDE2ICk7Ci0gICAgICAgICAgICAgICAgLyogQXZvaWRzIGludHJvZHVjaW5nIGEgYmlhcyBiZWNh
dXNlIHNpbGtfU01MQVdCKCkgYWx3YXlzIHJvdW5kcyB0byAtaW5mICovCi0gICAgICAgICAgICAg
ICAgTFBDX3ByZWRfUTE0ID0gc2lsa19SU0hJRlQoIHByZWRpY3RMUENPcmRlciwgMSApOwotCi0g
ICAgICAgICAgICAgICAgdG1wYiA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7Ci0KLSAgICAgICAgICAg
ICAgICAvKiBzdGVwIDEgKi8KLSAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1f
bG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbIC0zIF0gKSApOyAvKiAtMywgLTIg
LCAtMSwgMCAqLwotICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9zaHVmZmxl
X2VwaTMyKCBwc0xQQ19RMTRfdG1wLCAweDFCICk7ICAgICAgLyogMCwgLTEsIC0yLCAtMyAqLwot
ICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1Ex
NF90bXAsIGFfUTEyXzAxMjMgKTsgICAgLyogMCwgLTEsIC0yLCAtMyAqIDAxMjMgLT4gMCowLCAy
Ki0yICovCi0KLSAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc3JsaV9lcGk2
NCggdG1wYSwgMTYgKTsKLSAgICAgICAgICAgICAgICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRk
X2VwaTMyKCB0bXBiLCB0bXBhICk7Ci0KLSAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wID0g
X21tX3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAx
ICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgIGFf
UTEyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBhX1ExMl8wMTIzLCBfTU1fU0hVRkZMRSgwLCAz
LCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAg
ICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEy
X3RtcCApOyAvKiAxKi0xLCAzKi0zICovCi0gICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAg
ID0gX21tX3NybGlfZXBpNjQoIHBzTFBDX1ExNF90bXAsIDE2ICk7Ci0gICAgICAgICAgICAgICAg
dG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgcHNMUENfUTE0X3RtcCApOwot
Ci0gICAgICAgICAgICAgICAgLyogc3RlcCAyICovCi0gICAgICAgICAgICAgICAgcHNMUENfUTE0
X3RtcCAgID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0WyAtNyBdICkg
KTsKLSAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fc2h1ZmZsZV9lcGkzMigg
cHNMUENfUTE0X3RtcCwgMHgxQiApOwotICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICA9
IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyXzQ1NjcgKTsKLSAgICAgICAgICAg
ICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc3JsaV9lcGk2NCggdG1wYSwgMTYgKTsKLSAgICAg
ICAgICAgICAgICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7
Ci0KLSAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wID0gX21tX3NodWZmbGVfZXBpMzIoIHBz
TFBDX1ExNF90bXAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQg
cmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgIGFfUTEyX3RtcCA9IF9tbV9zaHVmZmxl
X2VwaTMyKCBhX1ExMl80NTY3LCBfTU1fU0hVRkZMRSgwLCAzLCAyLCAxICkgKTsgLyogZXF1YWwg
c2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9
IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyX3RtcCApOwotICAgICAgICAgICAg
ICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9zcmxpX2VwaTY0KCBwc0xQQ19RMTRfdG1wLCAxNiAp
OwotICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIs
IHBzTFBDX1ExNF90bXAgKTsKLQotICAgICAgICAgICAgICAgIGlmICggb3B1c19saWtlbHkoIHBy
ZWRpY3RMUENPcmRlciA9PSAxNiApICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8qIHN0ZXAgMyAqLwotICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAg
PSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbIC0xMSBdICkgKTsKLSAg
ICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3NodWZmbGVfZXBpMzIoIHBz
TFBDX1ExNF90bXAsIDB4MUIgKTsKLSAgICAgICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAg
ID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3RtcCwgYV9RMTJfODlBQiApOwotICAgICAgICAg
ICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc3JsaV9lcGk2NCggdG1wYSwgMTYgKTsK
LSAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1w
YiwgdG1wYSApOwotCi0gICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgPSBfbW1fc2h1
ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAv
KiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCi0gICAgICAgICAgICAgICAgICAgIGFfUTEy
X3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBhX1ExMl84OUFCLCBfTU1fU0hVRkZMRSgwLCAzLCAy
LCAxICkgKTsvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCi0gICAgICAgICAgICAgICAg
ICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEy
X3RtcCApOwotICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fc3JsaV9l
cGk2NCggcHNMUENfUTE0X3RtcCwgMTYgKTsKLSAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAg
ICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgcHNMUENfUTE0X3RtcCApOwotCi0gICAgICAg
ICAgICAgICAgICAgIC8qIHNldHAgNCAqLwotICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRf
dG1wICAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbIC0xNSBdICkg
KTsKLSAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3NodWZmbGVfZXBp
MzIoIHBzTFBDX1ExNF90bXAsIDB4MUIgKTsKLSAgICAgICAgICAgICAgICAgICAgdG1wYSAgICAg
ICAgICAgID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3RtcCwgYV9RMTJfQ0RFRiApOwotICAg
ICAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc3JsaV9lcGk2NCggdG1wYSwg
MTYgKTsKLSAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkz
MiggdG1wYiwgdG1wYSApOwotCi0gICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEg
KSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCi0gICAgICAgICAgICAgICAgICAg
IGFfUTEyX3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBhX1ExMl9DREVGLCBfTU1fU0hVRkZMRSgw
LCAzLCAyLCAxICkgKTsgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyAqLwotICAgICAgICAg
ICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRfdG1w
LCBhX1ExMl90bXAgKTsKLSAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21t
X3NybGlfZXBpNjQoIHBzTFBDX1ExNF90bXAsIDE2ICk7Ci0gICAgICAgICAgICAgICAgICAgIHRt
cGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHBzTFBDX1ExNF90bXAgKTsKLQot
ICAgICAgICAgICAgICAgICAgICAvKiBhZGQgYXQgbGFzdCAqLwotICAgICAgICAgICAgICAgICAg
ICAvKiBlcXVhbCBzaGlmdCByaWdodCA4IGJ5dGVzKi8KLSAgICAgICAgICAgICAgICAgICAgdG1w
YSAgICAgICAgICAgID0gX21tX3NodWZmbGVfZXBpMzIoIHRtcGIsIF9NTV9TSFVGRkxFKCAwLCAw
LCAzLCAyICkgKTsKLSAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2Fk
ZF9lcGkzMiggdG1wYiwgdG1wYSApOwotICAgICAgICAgICAgICAgICAgICBMUENfcHJlZF9RMTQg
ICAgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHRtcGIgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
LyogYWRkIGF0IGxhc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0g
X21tX3NodWZmbGVfZXBpMzIoIHRtcGIsIF9NTV9TSFVGRkxFKCAwLCAwLCAzLCAyICkgKTsgLyog
ZXF1YWwgc2hpZnQgcmlnaHQgOCBieXRlcyovCi0gICAgICAgICAgICAgICAgICAgIHRtcGIgICAg
ICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHRtcGEgKTsKLSAgICAgICAgICAgICAgICAg
ICAgTFBDX3ByZWRfUTE0ICAgICs9IF9tbV9jdnRzaTEyOF9zaTMyKCB0bXBiICk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ID0gc2lsa19TTUxBV0IoIExQQ19wcmVkX1ExNCwg
cHNMUENfUTE0WyAtOCBdLCBhX1ExMlsgOCBdICk7Ci0gICAgICAgICAgICAgICAgICAgIExQQ19w
cmVkX1ExNCA9IHNpbGtfU01MQVdCKCBMUENfcHJlZF9RMTQsIHBzTFBDX1ExNFsgLTkgXSwgYV9R
MTJbIDkgXSApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIExQQ19wcmVk
X1ExNCA9IHNpbGtfTFNISUZUKCBMUENfcHJlZF9RMTQsIDQgKTsgLyogUTEwIC0+IFExNCAqLwot
Ci0gICAgICAgICAgICAgICAgLyogTm9pc2Ugc2hhcGUgZmVlZGJhY2sgKi8KLSAgICAgICAgICAg
ICAgICBzaWxrX2Fzc2VydCggKCBzaGFwaW5nTFBDT3JkZXIgJiAxICkgPT0gMCApOyAgIC8qIGNo
ZWNrIHRoYXQgb3JkZXIgaXMgZXZlbiAqLwotICAgICAgICAgICAgICAgIC8qIE91dHB1dCBvZiBs
b3dwYXNzIHNlY3Rpb24gKi8KLSAgICAgICAgICAgICAgICB0bXAyID0gc2lsa19TTUxBV0IoIHBz
TFBDX1ExNFsgMCBdLCBwc0RELT5zQVIyX1ExNFsgMCBdLCB3YXJwaW5nX1ExNiApOwotICAgICAg
ICAgICAgICAgIC8qIE91dHB1dCBvZiBhbGxwYXNzIHNlY3Rpb24gKi8KLSAgICAgICAgICAgICAg
ICB0bXAxID0gc2lsa19TTUxBV0IoIHBzREQtPnNBUjJfUTE0WyAwIF0sIHBzREQtPnNBUjJfUTE0
WyAxIF0gLSB0bXAyLCB3YXJwaW5nX1ExNiApOwotICAgICAgICAgICAgICAgIHBzREQtPnNBUjJf
UTE0WyAwIF0gPSB0bXAyOwotICAgICAgICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19SU0hJRlQo
IHNoYXBpbmdMUENPcmRlciwgMSApOwotICAgICAgICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19T
TUxBV0IoIG5fQVJfUTE0LCB0bXAyLCBBUl9zaHBfUTEzWyAwIF0gKTsKLSAgICAgICAgICAgICAg
ICAvKiBMb29wIG92ZXIgYWxscGFzcyBzZWN0aW9ucyAqLwotICAgICAgICAgICAgICAgIGZvcigg
aiA9IDI7IGogPCBzaGFwaW5nTFBDT3JkZXI7IGogKz0gMiApIHsKLSAgICAgICAgICAgICAgICAg
ICAgLyogT3V0cHV0IG9mIGFsbHBhc3Mgc2VjdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICB0
bXAyID0gc2lsa19TTUxBV0IoIHBzREQtPnNBUjJfUTE0WyBqIC0gMSBdLCBwc0RELT5zQVIyX1Ex
NFsgaiArIDAgXSAtIHRtcDEsIHdhcnBpbmdfUTE2ICk7Ci0gICAgICAgICAgICAgICAgICAgIHBz
REQtPnNBUjJfUTE0WyBqIC0gMSBdID0gdG1wMTsKLSAgICAgICAgICAgICAgICAgICAgbl9BUl9R
MTQgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTQsIHRtcDEsIEFSX3NocF9RMTNbIGogLSAxIF0gKTsK
LSAgICAgICAgICAgICAgICAgICAgLyogT3V0cHV0IG9mIGFsbHBhc3Mgc2VjdGlvbiAqLwotICAg
ICAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19TTUxBV0IoIHBzREQtPnNBUjJfUTE0WyBqICsg
MCBdLCBwc0RELT5zQVIyX1ExNFsgaiArIDEgXSAtIHRtcDIsIHdhcnBpbmdfUTE2ICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBzREQtPnNBUjJfUTE0WyBqICsgMCBdID0gdG1wMjsKLSAgICAgICAg
ICAgICAgICAgICAgbl9BUl9RMTQgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTQsIHRtcDIsIEFSX3No
cF9RMTNbIGogXSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwc0RELT5z
QVIyX1ExNFsgc2hhcGluZ0xQQ09yZGVyIC0gMSBdID0gdG1wMTsKLSAgICAgICAgICAgICAgICBu
X0FSX1ExNCA9IHNpbGtfU01MQVdCKCBuX0FSX1ExNCwgdG1wMSwgQVJfc2hwX1ExM1sgc2hhcGlu
Z0xQQ09yZGVyIC0gMSBdICk7Ci0KLSAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfTFNI
SUZUKCBuX0FSX1ExNCwgMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogUTExIC0+IFExMiAqLwotICAgICAgICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19TTUxBV0Io
IG5fQVJfUTE0LCBwc0RELT5MRl9BUl9RMTQsIFRpbHRfUTE0ICk7ICAgICAgICAgICAgICAvKiBR
MTIgKi8KLSAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfTFNISUZUKCBuX0FSX1ExNCwg
MiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTEyIC0+IFExNCAq
LwotCi0gICAgICAgICAgICAgICAgbl9MRl9RMTQgPSBzaWxrX1NNVUxXQiggcHNERC0+U2hhcGVf
UTE0WyAqc21wbF9idWZfaWR4IF0sIExGX3NocF9RMTQgKTsgICAgIC8qIFExMiAqLwotICAgICAg
ICAgICAgICAgIG5fTEZfUTE0ID0gc2lsa19TTUxBV1QoIG5fTEZfUTE0LCBwc0RELT5MRl9BUl9R
MTQsIExGX3NocF9RMTQgKTsgICAgICAgICAgICAvKiBRMTIgKi8KLSAgICAgICAgICAgICAgICBu
X0xGX1ExNCA9IHNpbGtfTFNISUZUKCBuX0xGX1ExNCwgMiApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogUTEyIC0+IFExNCAqLwotCi0gICAgICAgICAgICAgICAgLyog
SW5wdXQgbWludXMgcHJlZGljdGlvbiBwbHVzIG5vaXNlIGZlZWRiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAqLwotICAgICAgICAgICAgICAgIC8qIHIgPSB4WyBpIF0gLSBMVFBfcHJlZCAtIExQ
Q19wcmVkICsgbl9BUiArIG5fVGlsdCArIG5fTEYgKyBuX0xUUCAgKi8KLSAgICAgICAgICAgICAg
ICB0bXAxID0gc2lsa19BREQzMiggbl9BUl9RMTQsIG5fTEZfUTE0ICk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogUTE0ICovCi0gICAgICAgICAgICAgICAgdG1wMiA9IHNp
bGtfQUREMzIoIG5fTFRQX1ExNCwgTFBDX3ByZWRfUTE0ICk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFExMyAqLwotICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxrX1NVQjMyKCB0
bXAyLCB0bXAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBRMTMgKi8KLSAgICAgICAgICAgICAgICB0bXAxID0gc2lsa19SU0hJRlRfUk9VTkQoIHRtcDEs
IDQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTEwICovCi0K
LSAgICAgICAgICAgICAgICByX1ExMCA9IHNpbGtfU1VCMzIoIHhfUTEwWyBpIF0sIHRtcDEgKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVzaWR1YWwgZXJyb3IgUTEw
ICovCi0KLSAgICAgICAgICAgICAgICAvKiBGbGlwIHNpZ24gZGVwZW5kaW5nIG9uIGRpdGhlciAq
LwotICAgICAgICAgICAgICAgIGlmICggcHNERC0+U2VlZCA8IDAgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJfUTEwID0gLXJfUTEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByX1ExMCA9IHNpbGtfTElNSVRfMzIoIHJfUTEwLCAtKDMxIDw8IDEwKSwgMzAgPDwgMTAgKTsK
LQotICAgICAgICAgICAgICAgIC8qIEZpbmQgdHdvIHF1YW50aXphdGlvbiBsZXZlbCBjYW5kaWRh
dGVzIGFuZCBtZWFzdXJlIHRoZWlyIHJhdGUtZGlzdG9ydGlvbiAqLwotICAgICAgICAgICAgICAg
IHExX1ExMCA9IHNpbGtfU1VCMzIoIHJfUTEwLCBvZmZzZXRfUTEwICk7Ci0gICAgICAgICAgICAg
ICAgcTFfUTAgPSBzaWxrX1JTSElGVCggcTFfUTEwLCAxMCApOwotICAgICAgICAgICAgICAgIGlm
KCBxMV9RMCA+IDAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHExX1ExMCAgPSBzaWxrX1NVQjMy
KCBzaWxrX0xTSElGVCggcTFfUTAsIDEwICksIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKLSAg
ICAgICAgICAgICAgICAgICAgcTFfUTEwICA9IHNpbGtfQUREMzIoIHExX1ExMCwgb2Zmc2V0X1Ex
MCApOwotICAgICAgICAgICAgICAgICAgICBxMl9RMTAgID0gc2lsa19BREQzMiggcTFfUTEwLCAx
MDI0ICk7Ci0gICAgICAgICAgICAgICAgICAgIHJkMV9RMTAgPSBzaWxrX1NNVUxCQiggcTFfUTEw
LCBMYW1iZGFfUTEwICk7Ci0gICAgICAgICAgICAgICAgICAgIHJkMl9RMTAgPSBzaWxrX1NNVUxC
QiggcTJfUTEwLCBMYW1iZGFfUTEwICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmKCBxMV9R
MCA9PSAwICkgewotICAgICAgICAgICAgICAgICAgICBxMV9RMTAgID0gb2Zmc2V0X1ExMDsKLSAg
ICAgICAgICAgICAgICAgICAgcTJfUTEwICA9IHNpbGtfQUREMzIoIHExX1ExMCwgMTAyNCAtIFFV
QU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKLSAgICAgICAgICAgICAgICAgICAgcmQxX1ExMCA9IHNp
bGtfU01VTEJCKCBxMV9RMTAsIExhbWJkYV9RMTAgKTsKLSAgICAgICAgICAgICAgICAgICAgcmQy
X1ExMCA9IHNpbGtfU01VTEJCKCBxMl9RMTAsIExhbWJkYV9RMTAgKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYoIHExX1EwID09IC0xICkgewotICAgICAgICAgICAgICAgICAgICBxMl9RMTAg
ID0gb2Zmc2V0X1ExMDsKLSAgICAgICAgICAgICAgICAgICAgcTFfUTEwICA9IHNpbGtfU1VCMzIo
IHEyX1ExMCwgMTAyNCAtIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmQxX1ExMCA9IHNpbGtfU01VTEJCKCAtcTFfUTEwLCBMYW1iZGFfUTEwICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJkMl9RMTAgPSBzaWxrX1NNVUxCQiggIHEyX1ExMCwgTGFtYmRhX1Ex
MCApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgLyogcTFfUTAgPCAtMSAq
LwotICAgICAgICAgICAgICAgICAgICBxMV9RMTAgID0gc2lsa19BREQzMiggc2lsa19MU0hJRlQo
IHExX1EwLCAxMCApLCBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICk7Ci0gICAgICAgICAgICAgICAg
ICAgIHExX1ExMCAgPSBzaWxrX0FERDMyKCBxMV9RMTAsIG9mZnNldF9RMTAgKTsKLSAgICAgICAg
ICAgICAgICAgICAgcTJfUTEwICA9IHNpbGtfQUREMzIoIHExX1ExMCwgMTAyNCApOwotICAgICAg
ICAgICAgICAgICAgICByZDFfUTEwID0gc2lsa19TTVVMQkIoIC1xMV9RMTAsIExhbWJkYV9RMTAg
KTsKLSAgICAgICAgICAgICAgICAgICAgcmQyX1ExMCA9IHNpbGtfU01VTEJCKCAtcTJfUTEwLCBM
YW1iZGFfUTEwICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJyX1ExMCAg
PSBzaWxrX1NVQjMyKCByX1ExMCwgcTFfUTEwICk7Ci0gICAgICAgICAgICAgICAgcmQxX1ExMCA9
IHNpbGtfUlNISUZUKCBzaWxrX1NNTEFCQiggcmQxX1ExMCwgcnJfUTEwLCBycl9RMTAgKSwgMTAg
KTsKLSAgICAgICAgICAgICAgICBycl9RMTAgID0gc2lsa19TVUIzMiggcl9RMTAsIHEyX1ExMCAp
OwotICAgICAgICAgICAgICAgIHJkMl9RMTAgPSBzaWxrX1JTSElGVCggc2lsa19TTUxBQkIoIHJk
Ml9RMTAsIHJyX1ExMCwgcnJfUTEwICksIDEwICk7Ci0KLSAgICAgICAgICAgICAgICBpZiggcmQx
X1ExMCA8IHJkMl9RMTAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBzU1NbIDAgXS5SRF9RMTAg
PSBzaWxrX0FERDMyKCBwc0RELT5SRF9RMTAsIHJkMV9RMTAgKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHNTU1sgMSBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzREQtPlJEX1ExMCwgcmQyX1ExMCAp
OwotICAgICAgICAgICAgICAgICAgICBwc1NTWyAwIF0uUV9RMTAgID0gcTFfUTEwOwotICAgICAg
ICAgICAgICAgICAgICBwc1NTWyAxIF0uUV9RMTAgID0gcTJfUTEwOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBzU1NbIDAgXS5SRF9RMTAgPSBzaWxrX0FE
RDMyKCBwc0RELT5SRF9RMTAsIHJkMl9RMTAgKTsKLSAgICAgICAgICAgICAgICAgICAgcHNTU1sg
MSBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzREQtPlJEX1ExMCwgcmQxX1ExMCApOwotICAgICAg
ICAgICAgICAgICAgICBwc1NTWyAwIF0uUV9RMTAgID0gcTJfUTEwOwotICAgICAgICAgICAgICAg
ICAgICBwc1NTWyAxIF0uUV9RMTAgID0gcTFfUTEwOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgZm9yIGJlc3QgcXVhbnRpemF0aW9uICovCi0K
LSAgICAgICAgICAgICAgICAvKiBRdWFudGl6ZWQgZXhjaXRhdGlvbiAqLwotICAgICAgICAgICAg
ICAgIGV4Y19RMTQgPSBzaWxrX0xTSElGVDMyKCBwc1NTWyAwIF0uUV9RMTAsIDQgKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIHBzREQtPlNlZWQgPCAwICkgewotICAgICAgICAgICAgICAgICAgICBl
eGNfUTE0ID0gLWV4Y19RMTQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
LyogQWRkIHByZWRpY3Rpb25zICovCi0gICAgICAgICAgICAgICAgTFBDX2V4Y19RMTQgPSBzaWxr
X0FERDMyKCBleGNfUTE0LCBMVFBfcHJlZF9RMTQgKTsKLSAgICAgICAgICAgICAgICB4cV9RMTQg
ICAgICA9IHNpbGtfQUREMzIoIExQQ19leGNfUTE0LCBMUENfcHJlZF9RMTQgKTsKLQotICAgICAg
ICAgICAgICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8KLSAgICAgICAgICAgICAgICBzTEZfQVJfc2hw
X1ExNCAgICAgICAgID0gc2lsa19TVUIzMiggeHFfUTE0LCBuX0FSX1ExNCApOwotICAgICAgICAg
ICAgICAgIHBzU1NbIDAgXS5zTFRQX3NocF9RMTQgPSBzaWxrX1NVQjMyKCBzTEZfQVJfc2hwX1Ex
NCwgbl9MRl9RMTQgKTsKLSAgICAgICAgICAgICAgICBwc1NTWyAwIF0uTEZfQVJfUTE0ICAgID0g
c0xGX0FSX3NocF9RMTQ7Ci0gICAgICAgICAgICAgICAgcHNTU1sgMCBdLkxQQ19leGNfUTE0ICA9
IExQQ19leGNfUTE0OwotICAgICAgICAgICAgICAgIHBzU1NbIDAgXS54cV9RMTQgICAgICAgPSB4
cV9RMTQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBVcGRhdGUgc3RhdGVzIGZvciBzZWNvbmQgYmVz
dCBxdWFudGl6YXRpb24gKi8KLQotICAgICAgICAgICAgICAgIC8qIFF1YW50aXplZCBleGNpdGF0
aW9uICovCi0gICAgICAgICAgICAgICAgZXhjX1ExNCA9IHNpbGtfTFNISUZUMzIoIHBzU1NbIDEg
XS5RX1ExMCwgNCApOwotICAgICAgICAgICAgICAgIGlmICggcHNERC0+U2VlZCA8IDAgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4Y19RMTQgPSAtZXhjX1ExNDsKLSAgICAgICAgICAgICAgICB9
Ci0KLQotICAgICAgICAgICAgICAgIC8qIEFkZCBwcmVkaWN0aW9ucyAqLwotICAgICAgICAgICAg
ICAgIExQQ19leGNfUTE0ID0gc2lsa19BREQzMiggZXhjX1ExNCwgTFRQX3ByZWRfUTE0ICk7Ci0g
ICAgICAgICAgICAgICAgeHFfUTE0ICAgICAgPSBzaWxrX0FERDMyKCBMUENfZXhjX1ExNCwgTFBD
X3ByZWRfUTE0ICk7Ci0KLSAgICAgICAgICAgICAgICAvKiBVcGRhdGUgc3RhdGVzICovCi0gICAg
ICAgICAgICAgICAgc0xGX0FSX3NocF9RMTQgICAgICAgICA9IHNpbGtfU1VCMzIoIHhxX1ExNCwg
bl9BUl9RMTQgKTsKLSAgICAgICAgICAgICAgICBwc1NTWyAxIF0uc0xUUF9zaHBfUTE0ID0gc2ls
a19TVUIzMiggc0xGX0FSX3NocF9RMTQsIG5fTEZfUTE0ICk7Ci0gICAgICAgICAgICAgICAgcHNT
U1sgMSBdLkxGX0FSX1ExNCAgICA9IHNMRl9BUl9zaHBfUTE0OwotICAgICAgICAgICAgICAgIHBz
U1NbIDEgXS5MUENfZXhjX1ExNCAgPSBMUENfZXhjX1ExNDsKLSAgICAgICAgICAgICAgICBwc1NT
WyAxIF0ueHFfUTE0ICAgICAgID0geHFfUTE0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgICpzbXBsX2J1Zl9pZHggID0gKCAqc21wbF9idWZfaWR4IC0gMSApICUgREVDSVNJT05f
REVMQVk7Ci0gICAgICAgIGlmKCAqc21wbF9idWZfaWR4IDwgMCApICpzbXBsX2J1Zl9pZHggKz0g
REVDSVNJT05fREVMQVk7Ci0gICAgICAgIGxhc3Rfc21wbGVfaWR4ID0gKCAqc21wbF9idWZfaWR4
ICsgZGVjaXNpb25EZWxheSApICUgREVDSVNJT05fREVMQVk7Ci0KLSAgICAgICAgLyogRmluZCB3
aW5uZXIgKi8KLSAgICAgICAgUkRtaW5fUTEwID0gcHNTYW1wbGVTdGF0ZVsgMCBdWyAwIF0uUkRf
UTEwOwotICAgICAgICBXaW5uZXJfaW5kID0gMDsKLSAgICAgICAgZm9yKCBrID0gMTsgayA8IG5T
dGF0ZXNEZWxheWVkRGVjaXNpb247IGsrKyApIHsKLSAgICAgICAgICAgIGlmKCBwc1NhbXBsZVN0
YXRlWyBrIF1bIDAgXS5SRF9RMTAgPCBSRG1pbl9RMTAgKSB7Ci0gICAgICAgICAgICAgICAgUkRt
aW5fUTEwICA9IHBzU2FtcGxlU3RhdGVbIGsgXVsgMCBdLlJEX1ExMDsKLSAgICAgICAgICAgICAg
ICBXaW5uZXJfaW5kID0gazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8q
IEluY3JlYXNlIFJEIHZhbHVlcyBvZiBleHBpcmVkIHN0YXRlcyAqLwotICAgICAgICBXaW5uZXJf
cmFuZF9zdGF0ZSA9IHBzRGVsRGVjWyBXaW5uZXJfaW5kIF0uUmFuZFN0YXRlWyBsYXN0X3NtcGxl
X2lkeCBdOwotICAgICAgICBmb3IoIGsgPSAwOyBrIDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsg
aysrICkgewotICAgICAgICAgICAgaWYoIHBzRGVsRGVjWyBrIF0uUmFuZFN0YXRlWyBsYXN0X3Nt
cGxlX2lkeCBdICE9IFdpbm5lcl9yYW5kX3N0YXRlICkgewotICAgICAgICAgICAgICAgIHBzU2Ft
cGxlU3RhdGVbIGsgXVsgMCBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzU2FtcGxlU3RhdGVbIGsg
XVsgMCBdLlJEX1ExMCwgc2lsa19pbnQzMl9NQVggPj4gNCApOwotICAgICAgICAgICAgICAgIHBz
U2FtcGxlU3RhdGVbIGsgXVsgMSBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzU2FtcGxlU3RhdGVb
IGsgXVsgMSBdLlJEX1ExMCwgc2lsa19pbnQzMl9NQVggPj4gNCApOwotICAgICAgICAgICAgICAg
IHNpbGtfYXNzZXJ0KCBwc1NhbXBsZVN0YXRlWyBrIF1bIDAgXS5SRF9RMTAgPj0gMCApOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyogRmluZCB3b3JzdCBpbiBmaXJzdCBz
ZXQgYW5kIGJlc3QgaW4gc2Vjb25kIHNldCAqLwotICAgICAgICBSRG1heF9RMTAgID0gcHNTYW1w
bGVTdGF0ZVsgMCBdWyAwIF0uUkRfUTEwOwotICAgICAgICBSRG1pbl9RMTAgID0gcHNTYW1wbGVT
dGF0ZVsgMCBdWyAxIF0uUkRfUTEwOwotICAgICAgICBSRG1heF9pbmQgPSAwOwotICAgICAgICBS
RG1pbl9pbmQgPSAwOwotICAgICAgICBmb3IoIGsgPSAxOyBrIDwgblN0YXRlc0RlbGF5ZWREZWNp
c2lvbjsgaysrICkgewotICAgICAgICAgICAgLyogZmluZCB3b3JzdCBpbiBmaXJzdCBzZXQgKi8K
LSAgICAgICAgICAgIGlmKCBwc1NhbXBsZVN0YXRlWyBrIF1bIDAgXS5SRF9RMTAgPiBSRG1heF9R
MTAgKSB7Ci0gICAgICAgICAgICAgICAgUkRtYXhfUTEwICA9IHBzU2FtcGxlU3RhdGVbIGsgXVsg
MCBdLlJEX1ExMDsKLSAgICAgICAgICAgICAgICBSRG1heF9pbmQgPSBrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgLyogZmluZCBiZXN0IGluIHNlY29uZCBzZXQgKi8KLSAgICAgICAgICAg
IGlmKCBwc1NhbXBsZVN0YXRlWyBrIF1bIDEgXS5SRF9RMTAgPCBSRG1pbl9RMTAgKSB7Ci0gICAg
ICAgICAgICAgICAgUkRtaW5fUTEwICA9IHBzU2FtcGxlU3RhdGVbIGsgXVsgMSBdLlJEX1ExMDsK
LSAgICAgICAgICAgICAgICBSRG1pbl9pbmQgPSBrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgLyogUmVwbGFjZSBhIHN0YXRlIGlmIGJlc3QgZnJvbSBzZWNvbmQgc2V0IG91
dHBlcmZvcm1zIHdvcnN0IGluIGZpcnN0IHNldCAqLwotICAgICAgICBpZiggUkRtaW5fUTEwIDwg
UkRtYXhfUTEwICkgewotICAgICAgICAgICAgc2lsa19tZW1jcHkoICggKG9wdXNfaW50MzIgKikm
cHNEZWxEZWNbIFJEbWF4X2luZCBdICkgKyBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICgg
KG9wdXNfaW50MzIgKikmcHNEZWxEZWNbIFJEbWluX2luZCBdICkgKyBpLCBzaXplb2YoIE5TUV9k
ZWxfZGVjX3N0cnVjdCApIC0gaSAqIHNpemVvZiggb3B1c19pbnQzMikgKTsKLSAgICAgICAgICAg
IHNpbGtfbWVtY3B5KCAmcHNTYW1wbGVTdGF0ZVsgUkRtYXhfaW5kIF1bIDAgXSwgJnBzU2FtcGxl
U3RhdGVbIFJEbWluX2luZCBdWyAxIF0sIHNpemVvZiggTlNRX3NhbXBsZV9zdHJ1Y3QgKSApOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLyogV3JpdGUgc2FtcGxlcyBmcm9tIHdpbm5lciB0byBvdXRw
dXQgYW5kIGxvbmctdGVybSBmaWx0ZXIgc3RhdGVzICovCi0gICAgICAgIHBzREQgPSAmcHNEZWxE
ZWNbIFdpbm5lcl9pbmQgXTsKLSAgICAgICAgaWYoIHN1YmZyID4gMCB8fCBpID49IGRlY2lzaW9u
RGVsYXkgKSB7Ci0gICAgICAgICAgICBwdWxzZXNbICBpIC0gZGVjaXNpb25EZWxheSBdID0gKG9w
dXNfaW50OClzaWxrX1JTSElGVF9ST1VORCggcHNERC0+UV9RMTBbIGxhc3Rfc21wbGVfaWR4IF0s
IDEwICk7Ci0gICAgICAgICAgICB4cVsgaSAtIGRlY2lzaW9uRGVsYXkgXSA9IChvcHVzX2ludDE2
KXNpbGtfU0FUMTYoIHNpbGtfUlNISUZUX1JPVU5EKAotICAgICAgICAgICAgICAgIHNpbGtfU01V
TFdXKCBwc0RELT5YcV9RMTRbIGxhc3Rfc21wbGVfaWR4IF0sIGRlbGF5ZWRHYWluX1ExMFsgbGFz
dF9zbXBsZV9pZHggXSApLCA4ICkgKTsKLSAgICAgICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBO
U1EtPnNMVFBfc2hwX2J1Zl9pZHggLSBkZWNpc2lvbkRlbGF5IF0gPSBwc0RELT5TaGFwZV9RMTRb
IGxhc3Rfc21wbGVfaWR4IF07Ci0gICAgICAgICAgICBzTFRQX1ExNVsgICAgICAgICAgTlNRLT5z
TFRQX2J1Zl9pZHggICAgIC0gZGVjaXNpb25EZWxheSBdID0gcHNERC0+UHJlZF9RMTVbICBsYXN0
X3NtcGxlX2lkeCBdOwotICAgICAgICB9Ci0gICAgICAgIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCsr
OwotICAgICAgICBOU1EtPnNMVFBfYnVmX2lkeCsrOwotCi0gICAgICAgIC8qIFVwZGF0ZSBzdGF0
ZXMgKi8KLSAgICAgICAgZm9yKCBrID0gMDsgayA8IG5TdGF0ZXNEZWxheWVkRGVjaXNpb247IGsr
KyApIHsKLSAgICAgICAgICAgIHBzREQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAmcHNEZWxEZWNbIGsgXTsKLSAgICAgICAgICAgIHBzU1MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAmcHNTYW1wbGVTdGF0ZVsgayBdWyAwIF07Ci0gICAgICAgICAg
ICBwc0RELT5MRl9BUl9RMTQgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHNTUy0+TEZfQVJf
UTE0OwotICAgICAgICAgICAgcHNERC0+c0xQQ19RMTRbIE5TUV9MUENfQlVGX0xFTkdUSCArIGkg
XSA9IHBzU1MtPnhxX1ExNDsKLSAgICAgICAgICAgIHBzREQtPlhxX1ExNFsgICAgKnNtcGxfYnVm
X2lkeCBdICAgICAgICAgPSBwc1NTLT54cV9RMTQ7Ci0gICAgICAgICAgICBwc0RELT5RX1ExMFsg
ICAgICpzbXBsX2J1Zl9pZHggXSAgICAgICAgID0gcHNTUy0+UV9RMTA7Ci0gICAgICAgICAgICBw
c0RELT5QcmVkX1ExNVsgICpzbXBsX2J1Zl9pZHggXSAgICAgICAgID0gc2lsa19MU0hJRlQzMigg
cHNTUy0+TFBDX2V4Y19RMTQsIDEgKTsKLSAgICAgICAgICAgIHBzREQtPlNoYXBlX1ExNFsgKnNt
cGxfYnVmX2lkeCBdICAgICAgICAgPSBwc1NTLT5zTFRQX3NocF9RMTQ7Ci0gICAgICAgICAgICBw
c0RELT5TZWVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2lsa19BREQzMl9vdmZs
dyggcHNERC0+U2VlZCwgc2lsa19SU0hJRlRfUk9VTkQoIHBzU1MtPlFfUTEwLCAxMCApICk7Ci0g
ICAgICAgICAgICBwc0RELT5SYW5kU3RhdGVbICpzbXBsX2J1Zl9pZHggXSAgICAgICAgID0gcHNE
RC0+U2VlZDsKLSAgICAgICAgICAgIHBzREQtPlJEX1ExMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBwc1NTLT5SRF9RMTA7Ci0gICAgICAgIH0KLSAgICAgICAgZGVsYXllZEdhaW5fUTEw
WyAgICAgKnNtcGxfYnVmX2lkeCBdICAgICAgICAgPSBHYWluX1ExMDsKLSAgICB9Ci0gICAgLyog
VXBkYXRlIExQQyBzdGF0ZXMgKi8KLSAgICBmb3IoIGsgPSAwOyBrIDwgblN0YXRlc0RlbGF5ZWRE
ZWNpc2lvbjsgaysrICkgewotICAgICAgICBwc0REID0gJnBzRGVsRGVjWyBrIF07Ci0gICAgICAg
IHNpbGtfbWVtY3B5KCBwc0RELT5zTFBDX1ExNCwgJnBzREQtPnNMUENfUTE0WyBsZW5ndGggXSwg
TlNRX0xQQ19CVUZfTEVOR1RIICogc2l6ZW9mKCBvcHVzX2ludDMyICkgKTsKLSAgICB9Ci0gICAg
UkVTVE9SRV9TVEFDSzsKLX0KLQotc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2lsa19uc3FfZGVs
X2RlY19zY2FsZV9zdGF0ZXNfc3NlNF8xKAotICAgIGNvbnN0IHNpbGtfZW5jb2Rlcl9zdGF0ZSAq
cHNFbmNDLCAgICAgICAgICAgICAgIC8qIEkgICAgRW5jb2RlciBTdGF0ZSAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1EsICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0g
ICAgTlNRX2RlbF9kZWNfc3RydWN0ICBwc0RlbERlY1tdLCAgICAgICAgICAgICAgICAgLyogSS9P
ICBEZWxheWVkIGRlY2lzaW9uIHN0YXRlcyAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNf
aW50MzIgICAgeF9RM1tdLCAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgSW5wdXQgaW4gUTMg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIHhfc2Nf
UTEwW10sICAgICAgICAgICAgICAgICAvKiBPICAgIElucHV0IHNjYWxlZCB3aXRoIDEvR2FpbiBp
biBRMTAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICBzTFRQW10sICAgICAgICAgICAg
ICAgICAgICAgLyogSSAgICBSZS13aGl0ZW5lZCBMVFAgc3RhdGUgaW4gUTAgICAgICAgICAqLwot
ICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgICAgIC8qIE8g
ICAgTFRQIHN0YXRlIG1hdGNoaW5nIHNjYWxlZCBpbnB1dCAgICAgKi8KLSAgICBvcHVzX2ludCAg
ICAgICAgICAgIHN1YmZyLCAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFN1YmZyYW1lIG51
bWJlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICBuU3Rh
dGVzRGVsYXllZERlY2lzaW9uLCAgICAgLyogSSAgICBOdW1iZXIgb2YgZGVsIGRlYyBzdGF0ZXMg
ICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgTFRQX3NjYWxlX1ExNCwgICAg
ICAgICAgICAgIC8qIEkgICAgTFRQIHN0YXRlIHNjYWxpbmcgICAgICAgICAgICAgICAgICAgKi8K
LSAgICBjb25zdCBvcHVzX2ludDMyICAgIEdhaW5zX1ExNlsgTUFYX05CX1NVQkZSIF0sICAvKiBJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1
c19pbnQgICAgICBwaXRjaExbIE1BWF9OQl9TVUJGUiBdLCAgICAgLyogSSAgICBQaXRjaCBsYWcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgc2ln
bmFsX3R5cGUsICAgICAgICAgICAgICAgIC8qIEkgICAgU2lnbmFsIHR5cGUgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgIGRlY2lzaW9uRGVsYXkgICAg
ICAgICAgICAgICAvKiBJICAgIERlY2lzaW9uIGRlbGF5ICAgICAgICAgICAgICAgICAgICAgICov
Ci0pCi17Ci0gICAgb3B1c19pbnQgICAgICAgICAgICBpLCBrLCBsYWc7Ci0gICAgb3B1c19pbnQz
MiAgICAgICAgICBnYWluX2Fkal9RMTYsIGludl9nYWluX1EzMSwgaW52X2dhaW5fUTIzOwotICAg
IE5TUV9kZWxfZGVjX3N0cnVjdCAgKnBzREQ7Ci0gICAgX19tMTI4aSB4bW1faW52X2dhaW5fUTIz
LCB4bW1feF9RM194MngwLCB4bW1feF9RM194M3gxOwotCi0gICAgbGFnICAgICAgICAgID0gcGl0
Y2hMWyBzdWJmciBdOwotICAgIGludl9nYWluX1EzMSA9IHNpbGtfSU5WRVJTRTMyX3ZhclEoIHNp
bGtfbWF4KCBHYWluc19RMTZbIHN1YmZyIF0sIDEgKSwgNDcgKTsKLQotICAgIHNpbGtfYXNzZXJ0
KCBpbnZfZ2Fpbl9RMzEgIT0gMCApOwotCi0gICAgLyogQ2FsY3VsYXRlIGdhaW4gYWRqdXN0bWVu
dCBmYWN0b3IgKi8KLSAgICBpZiggR2FpbnNfUTE2WyBzdWJmciBdICE9IE5TUS0+cHJldl9nYWlu
X1ExNiApIHsKLSAgICAgICAgZ2Fpbl9hZGpfUTE2ID0gIHNpbGtfRElWMzJfdmFyUSggTlNRLT5w
cmV2X2dhaW5fUTE2LCBHYWluc19RMTZbIHN1YmZyIF0sIDE2ICk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgZ2Fpbl9hZGpfUTE2ID0gKG9wdXNfaW50MzIpMSA8PCAxNjsKLSAgICB9Ci0KLSAgICAv
KiBTY2FsZSBpbnB1dCAqLwotICAgIGludl9nYWluX1EyMyA9IHNpbGtfUlNISUZUX1JPVU5EKCBp
bnZfZ2Fpbl9RMzEsIDggKTsKLQotICAgIC8qIHByZXBhcmUgaW52X2dhaW5fUTIzIGluIHBhY2tl
ZCA0IDMyLWJpdHMgKi8KLSAgICB4bW1faW52X2dhaW5fUTIzID0gX21tX3NldDFfZXBpMzIoaW52
X2dhaW5fUTIzKTsKLQotICAgIGZvciggaSA9IDA7IGkgPCBwc0VuY0MtPnN1YmZyX2xlbmd0aCAt
IDM7IGkgKz0gNCApIHsKLSAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9sb2FkdV9zaTEyOCgg
KF9fbTEyOGkgKikoJih4X1EzWyBpIF0gKSApICk7Ci0gICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJp
Z2h0IDQgYnl0ZXMqLwotICAgICAgICB4bW1feF9RM194M3gxID0gX21tX3NodWZmbGVfZXBpMzIo
IHhtbV94X1EzX3gyeDAsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKLQotICAgICAgICB4
bW1feF9RM194MngwID0gX21tX211bF9lcGkzMiggeG1tX3hfUTNfeDJ4MCwgeG1tX2ludl9nYWlu
X1EyMyApOwotICAgICAgICB4bW1feF9RM194M3gxID0gX21tX211bF9lcGkzMiggeG1tX3hfUTNf
eDN4MSwgeG1tX2ludl9nYWluX1EyMyApOwotCi0gICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1f
c3JsaV9lcGk2NCggeG1tX3hfUTNfeDJ4MCwgMTYgKTsKLSAgICAgICAgeG1tX3hfUTNfeDN4MSA9
IF9tbV9zbGxpX2VwaTY0KCB4bW1feF9RM194M3gxLCAxNiApOwotCi0gICAgICAgIHhtbV94X1Ez
X3gyeDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV94X1EzX3gyeDAsIHhtbV94X1EzX3gzeDEsIDB4
Q0MgKTsKLQotICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSgmKHhfc2NfUTEw
WyBpIF0pKSwgeG1tX3hfUTNfeDJ4MCApOwotICAgIH0KLQotICAgIGZvciggOyBpIDwgcHNFbmND
LT5zdWJmcl9sZW5ndGg7IGkrKyApIHsKLSAgICAgICAgeF9zY19RMTBbIGkgXSA9IHNpbGtfU01V
TFdXKCB4X1EzWyBpIF0sIGludl9nYWluX1EyMyApOwotICAgIH0KLQotICAgIC8qIFNhdmUgaW52
ZXJzZSBnYWluICovCi0gICAgTlNRLT5wcmV2X2dhaW5fUTE2ID0gR2FpbnNfUTE2WyBzdWJmciBd
OwotCi0gICAgLyogQWZ0ZXIgcmV3aGl0ZW5pbmcgdGhlIExUUCBzdGF0ZSBpcyB1bi1zY2FsZWQs
IHNvIHNjYWxlIHdpdGggaW52X2dhaW5fUTE2ICovCi0gICAgaWYoIE5TUS0+cmV3aGl0ZV9mbGFn
ICkgewotICAgICAgICBpZiggc3ViZnIgPT0gMCApIHsKLSAgICAgICAgICAgIC8qIERvIExUUCBk
b3duc2NhbGluZyAqLwotICAgICAgICAgICAgaW52X2dhaW5fUTMxID0gc2lsa19MU0hJRlQoIHNp
bGtfU01VTFdCKCBpbnZfZ2Fpbl9RMzEsIExUUF9zY2FsZV9RMTQgKSwgMiApOwotICAgICAgICB9
Ci0gICAgICAgIGZvciggaSA9IE5TUS0+c0xUUF9idWZfaWR4IC0gbGFnIC0gTFRQX09SREVSIC8g
MjsgaSA8IE5TUS0+c0xUUF9idWZfaWR4OyBpKysgKSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2Vy
dCggaSA8IE1BWF9GUkFNRV9MRU5HVEggKTsKLSAgICAgICAgICAgIHNMVFBfUTE1WyBpIF0gPSBz
aWxrX1NNVUxXQiggaW52X2dhaW5fUTMxLCBzTFRQWyBpIF0gKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8qIEFkanVzdCBmb3IgY2hhbmdpbmcgZ2FpbiAqLwotICAgIGlmKCBnYWluX2Fkal9R
MTYgIT0gKG9wdXNfaW50MzIpMSA8PCAxNiApIHsKLSAgICAgICAgLyogU2NhbGUgbG9uZy10ZXJt
IHNoYXBpbmcgc3RhdGUgKi8KLSAgICAgICAgewotICAgICAgICAgICAgX19tMTI4aSB4bW1fZ2Fp
bl9hZGpfUTE2LCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIHhtbV9zTFRQX3NocF9RMTRfeDN4MTsK
LQotICAgICAgICAgICAgLyogcHJlcGFyZSBnYWluX2Fkal9RMTYgaW4gcGFja2VkIDQgMzItYml0
cyAqLwotICAgICAgICAgICAgeG1tX2dhaW5fYWRqX1ExNiA9IF9tbV9zZXQxX2VwaTMyKCBnYWlu
X2Fkal9RMTYgKTsKLQotICAgICAgICAgICAgZm9yKCBpID0gTlNRLT5zTFRQX3NocF9idWZfaWR4
IC0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aDsgaSA8IE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIDM7
IGkgKz0gNCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1Ex
NF94MngwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5TUS0+c0xUUF9zaHBfUTE0
WyBpIF0gKSApICk7Ci0gICAgICAgICAgICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRl
cyovCi0gICAgICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94M3gxID0gX21tX3NodWZmbGVf
ZXBpMzIoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSAp
OwotCi0gICAgICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21tX211bF9lcGkz
MiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1fZ2Fpbl9hZGpfUTE2ICk7Ci0gICAgICAgICAg
ICAgICAgeG1tX3NMVFBfc2hwX1ExNF94M3gxID0gX21tX211bF9lcGkzMiggeG1tX3NMVFBfc2hw
X1ExNF94M3gxLCB4bW1fZ2Fpbl9hZGpfUTE2ICk7Ci0KLSAgICAgICAgICAgICAgICB4bW1fc0xU
UF9zaHBfUTE0X3gyeDAgPSBfbW1fc3JsaV9lcGk2NCggeG1tX3NMVFBfc2hwX1ExNF94MngwLCAx
NiApOwotICAgICAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDN4MSA9IF9tbV9zbGxpX2Vw
aTY0KCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIDE2ICk7Ci0KLSAgICAgICAgICAgICAgICB4bW1f
c0xUUF9zaHBfUTE0X3gyeDAgPSBfbW1fYmxlbmRfZXBpMTYoIHhtbV9zTFRQX3NocF9RMTRfeDJ4
MCwgeG1tX3NMVFBfc2hwX1ExNF94M3gxLCAweENDICk7Ci0KLSAgICAgICAgICAgICAgICBfbW1f
c3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gKSApLCB4
bW1fc0xUUF9zaHBfUTE0X3gyeDAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9y
KCA7IGkgPCBOU1EtPnNMVFBfc2hwX2J1Zl9pZHg7IGkrKyApIHsKLSAgICAgICAgICAgICAgICBO
U1EtPnNMVFBfc2hwX1ExNFsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgTlNRLT5z
TFRQX3NocF9RMTRbIGkgXSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBTY2Fs
ZSBsb25nLXRlcm0gcHJlZGljdGlvbiBzdGF0ZSAqLwotICAgICAgICAgICAgaWYoIHNpZ25hbF90
eXBlID09IFRZUEVfVk9JQ0VEICYmIE5TUS0+cmV3aGl0ZV9mbGFnID09IDAgKSB7Ci0gICAgICAg
ICAgICAgICAgZm9yKCBpID0gTlNRLT5zTFRQX2J1Zl9pZHggLSBsYWcgLSBMVFBfT1JERVIgLyAy
OyBpIDwgTlNRLT5zTFRQX2J1Zl9pZHggLSBkZWNpc2lvbkRlbGF5OyBpKysgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNMVFBfUTE1WyBpIF0gPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBz
TFRQX1ExNVsgaSBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBmb3IoIGsgPSAwOyBrIDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgewot
ICAgICAgICAgICAgICAgIHBzREQgPSAmcHNEZWxEZWNbIGsgXTsKLQotICAgICAgICAgICAgICAg
IC8qIFNjYWxlIHNjYWxhciBzdGF0ZXMgKi8KLSAgICAgICAgICAgICAgICBwc0RELT5MRl9BUl9R
MTQgPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBwc0RELT5MRl9BUl9RMTQgKTsKLQotICAg
ICAgICAgICAgICAgIC8qIFNjYWxlIHNob3J0LXRlcm0gcHJlZGljdGlvbiBhbmQgc2hhcGluZyBz
dGF0ZXMgKi8KLSAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgTlNRX0xQQ19CVUZfTEVO
R1RIOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBzREQtPnNMUENfUTE0WyBpIF0gPSBz
aWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBwc0RELT5zTFBDX1ExNFsgaSBdICk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBNQVhfU0hBUEVfTFBD
X09SREVSOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBzREQtPnNBUjJfUTE0WyBpIF0g
PSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBwc0RELT5zQVIyX1ExNFsgaSBdICk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBERUNJU0lPTl9E
RUxBWTsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBwc0RELT5QcmVkX1ExNVsgIGkgXSA9
IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIHBzREQtPlByZWRfUTE1WyAgaSBdICk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBzREQtPlNoYXBlX1ExNFsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5f
YWRqX1ExNiwgcHNERC0+U2hhcGVfUTE0WyBpIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsveDg2L05TUV9k
ZWxfZGVjX3NzZTRfMS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1FfZGVsX2RlY19zc2U0XzEuYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzc1ZWRlMmRkZThjYmNmMDliYzRlMTdiYzFiZWY4OTBkYWI5MzQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zaWxrL3g4Ni9OU1FfZGVsX2RlY19zc2U0XzEuYwpAQCAtMCwwICsxLDg1OSBAQAorLyog
Q29weXJpZ2h0IChjKSAyMDE0LCBDaXNjbyBTeXN0ZW1zLCBJTkMKKyAgIFdyaXR0ZW4gYnkgWGlh
bmdNaW5nWmh1IFdlaVpob3UgTWluUGVuZyBZYW5XYW5nCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgICBhcmUgbWV0OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
CisgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZF
X0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHhtbWlu
dHJpbi5oPgorI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2luY2x1ZGUgPHNtbWludHJpbi5oPgor
I2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJjZWx0L3g4Ni94ODZjcHUuaCIKKworI2luY2x1
ZGUgInN0YWNrX2FsbG9jLmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBvcHVzX2ludDMyIHNM
UENfUTE0WyBNQVhfU1VCX0ZSQU1FX0xFTkdUSCArIE5TUV9MUENfQlVGX0xFTkdUSCBdOworICAg
IG9wdXNfaW50MzIgUmFuZFN0YXRlWyBERUNJU0lPTl9ERUxBWSBdOworICAgIG9wdXNfaW50MzIg
UV9RMTBbICAgICBERUNJU0lPTl9ERUxBWSBdOworICAgIG9wdXNfaW50MzIgWHFfUTE0WyAgICBE
RUNJU0lPTl9ERUxBWSBdOworICAgIG9wdXNfaW50MzIgUHJlZF9RMTVbICBERUNJU0lPTl9ERUxB
WSBdOworICAgIG9wdXNfaW50MzIgU2hhcGVfUTE0WyBERUNJU0lPTl9ERUxBWSBdOworICAgIG9w
dXNfaW50MzIgc0FSMl9RMTRbIE1BWF9TSEFQRV9MUENfT1JERVIgXTsKKyAgICBvcHVzX2ludDMy
IExGX0FSX1ExNDsKKyAgICBvcHVzX2ludDMyIFNlZWQ7CisgICAgb3B1c19pbnQzMiBTZWVkSW5p
dDsKKyAgICBvcHVzX2ludDMyIFJEX1ExMDsKK30gTlNRX2RlbF9kZWNfc3RydWN0OworCit0eXBl
ZGVmIHN0cnVjdCB7CisgICAgb3B1c19pbnQzMiBRX1ExMDsKKyAgICBvcHVzX2ludDMyIFJEX1Ex
MDsKKyAgICBvcHVzX2ludDMyIHhxX1ExNDsKKyAgICBvcHVzX2ludDMyIExGX0FSX1ExNDsKKyAg
ICBvcHVzX2ludDMyIHNMVFBfc2hwX1ExNDsKKyAgICBvcHVzX2ludDMyIExQQ19leGNfUTE0Owor
fSBOU1Ffc2FtcGxlX3N0cnVjdDsKKwordHlwZWRlZiBOU1Ffc2FtcGxlX3N0cnVjdCAgTlNRX3Nh
bXBsZV9wYWlyWyAyIF07CisKK3N0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbnNxX2RlbF9k
ZWNfc2NhbGVfc3RhdGVzX3NzZTRfMSgKKyAgICBjb25zdCBzaWxrX2VuY29kZXJfc3RhdGUgKnBz
RW5jQywgICAgICAgICAgICAgICAvKiBJICAgIEVuY29kZXIgU3RhdGUgICAgICAgICAgICAgICAg
ICAgICAgICovCisgICAgc2lsa19uc3Ffc3RhdGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAg
ICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg
IE5TUV9kZWxfZGVjX3N0cnVjdCAgcHNEZWxEZWNbXSwgICAgICAgICAgICAgICAgIC8qIEkvTyAg
RGVsYXllZCBkZWNpc2lvbiBzdGF0ZXMgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2lu
dDMyICAgIHhfUTNbXSwgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIElucHV0IGluIFEzICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICB4X3NjX1Ex
MFtdLCAgICAgICAgICAgICAgICAgLyogTyAgICBJbnB1dCBzY2FsZWQgd2l0aCAxL0dhaW4gaW4g
UTEwICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgc0xUUFtdLCAgICAgICAgICAgICAg
ICAgICAgIC8qIEkgICAgUmUtd2hpdGVuZWQgTFRQIHN0YXRlIGluIFEwICAgICAgICAgKi8KKyAg
ICBvcHVzX2ludDMyICAgICAgICAgIHNMVFBfUTE1W10sICAgICAgICAgICAgICAgICAvKiBPICAg
IExUUCBzdGF0ZSBtYXRjaGluZyBzY2FsZWQgaW5wdXQgICAgICovCisgICAgb3B1c19pbnQgICAg
ICAgICAgICBzdWJmciwgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBTdWJmcmFtZSBudW1i
ZXIgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgblN0YXRl
c0RlbGF5ZWREZWNpc2lvbiwgICAgIC8qIEkgICAgTnVtYmVyIG9mIGRlbCBkZWMgc3RhdGVzICAg
ICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgIExUUF9zY2FsZV9RMTQsICAgICAg
ICAgICAgICAvKiBJICAgIExUUCBzdGF0ZSBzY2FsaW5nICAgICAgICAgICAgICAgICAgICovCisg
ICAgY29uc3Qgb3B1c19pbnQzMiAgICBHYWluc19RMTZbIE1BWF9OQl9TVUJGUiBdLCAgLyogSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNf
aW50ICAgICAgcGl0Y2hMWyBNQVhfTkJfU1VCRlIgXSwgICAgIC8qIEkgICAgUGl0Y2ggbGFnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgIHNpZ25h
bF90eXBlLCAgICAgICAgICAgICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICBkZWNpc2lvbkRlbGF5ICAgICAg
ICAgICAgICAgLyogSSAgICBEZWNpc2lvbiBkZWxheSAgICAgICAgICAgICAgICAgICAgICAqLwor
KTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIE5v
aXNlIHNoYXBlIHF1YW50aXplciBmb3Igb25lIHN1YmZyYW1lICovCisvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIE9QVVNfSU5MSU5FIHZvaWQgc2ls
a19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfZGVsX2RlY19zc2U0XzEoCisgICAgc2lsa19uc3Ffc3Rh
dGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCisgICAgTlNRX2RlbF9kZWNfc3RydWN0ICBwc0RlbERlY1td
LCAgICAgICAgICAgICAvKiBJL08gIERlbGF5ZWQgZGVjaXNpb24gc3RhdGVzICAgICAgICAgICAg
ICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBzaWduYWxUeXBlLCAgICAgICAgICAgICAvKiBJ
ICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1
c19pbnQzMiAgICB4X1ExMFtdLCAgICAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQ4ICAgICAgICAgICBwdWxzZXNb
XSwgICAgICAgICAgICAgICAvKiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCisgICAgb3B1c19pbnQxNiAgICAgICAgICB4cVtdLCAgICAgICAgICAgICAgICAgICAv
KiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19p
bnQzMiAgICAgICAgICBzTFRQX1ExNVtdLCAgICAgICAgICAgICAvKiBJL08gIExUUCBmaWx0ZXIg
c3RhdGUgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBkZWxh
eWVkR2Fpbl9RMTBbXSwgICAgICAvKiBJL08gIEdhaW4gZGVsYXkgYnVmZmVyICAgICAgICAgICAg
ICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBhX1ExMltdLCAgICAgICAgICAgICAg
ICAvKiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgICAgICovCisgICAgY29u
c3Qgb3B1c19pbnQxNiAgICBiX1ExNFtdLCAgICAgICAgICAgICAgICAvKiBJICAgIExvbmcgdGVy
bSBwcmVkaWN0aW9uIGNvZWZzICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBB
Ul9zaHBfUTEzW10sICAgICAgICAgICAvKiBJICAgIE5vaXNlIHNoYXBpbmcgY29lZnMgICAgICAg
ICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBsYWcsICAgICAgICAgICAgICAg
ICAgICAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAg
b3B1c19pbnQzMiAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0LCAvKiBJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAg
ICBUaWx0X1ExNCwgICAgICAgICAgICAgICAvKiBJICAgIFNwZWN0cmFsIHRpbHQgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBMRl9zaHBfUTE0LCAgICAg
ICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgb3B1c19pbnQzMiAgICAgICAgICBHYWluX1ExNiwgICAgICAgICAgICAgICAvKiBJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAg
ICAgICBMYW1iZGFfUTEwLCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBvZmZzZXRfUTEwLCAg
ICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgb3B1c19pbnQgICAgICAgICAgICBsZW5ndGgsICAgICAgICAgICAgICAgICAvKiBJICAg
IElucHV0IGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAg
ICAgICAgICBzdWJmciwgICAgICAgICAgICAgICAgICAvKiBJICAgIFN1YmZyYW1lIG51bWJlciAg
ICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBzaGFwaW5nTFBD
T3JkZXIsICAgICAgICAvKiBJICAgIFNoYXBpbmcgTFBDIGZpbHRlciBvcmRlciAgICAgICAgICAg
ICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBwcmVkaWN0TFBDT3JkZXIsICAgICAgICAvKiBJ
ICAgIFByZWRpY3Rpb24gZmlsdGVyIG9yZGVyICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQg
ICAgICAgICAgICB3YXJwaW5nX1ExNiwgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBuU3RhdGVz
RGVsYXllZERlY2lzaW9uLCAvKiBJICAgIE51bWJlciBvZiBzdGF0ZXMgaW4gZGVjaXNpb24gdHJl
ZSAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICAqc21wbF9idWZfaWR4LCAgICAgICAgICAv
KiBJL08gIEluZGV4IHRvIG5ld2VzdCBzYW1wbGVzIGluIGJ1ZmZlcnMgICovCisgICAgb3B1c19p
bnQgICAgICAgICAgICBkZWNpc2lvbkRlbGF5ICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCispOworCit2b2lkIHNpbGtfTlNRX2RlbF9kZWNf
c3NlNF8xKAorICAgIGNvbnN0IHNpbGtfZW5jb2Rlcl9zdGF0ZSAgICAqcHNFbmNDLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgRW5jb2RlciBTdGF0ZSAgICAgICAg
ICAgICAgICAgICAqLworICAgIHNpbGtfbnNxX3N0YXRlICAgICAgICAgICAgICAqTlNRLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAg
ICAgICAgICAgICAgICAgICAqLworICAgIFNpZGVJbmZvSW5kaWNlcyAgICAgICAgICAgICAqcHNJ
bmRpY2VzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkvTyAgUXVhbnRpemF0
aW9uIEluZGljZXMgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgICAgICAg
ICB4X1EzW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgUHJl
ZmlsdGVyZWQgaW5wdXQgc2lnbmFsICAgICAgICAqLworICAgIG9wdXNfaW50OCAgICAgICAgICAg
ICAgICAgICBwdWxzZXNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE8g
ICAgUXVhbnRpemVkIHB1bHNlIHNpZ25hbCAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50
MTYgICAgICAgICAgICBQcmVkQ29lZl9RMTJbIDIgKiBNQVhfTFBDX09SREVSIF0sICAgICAgICAg
IC8qIEkgICAgU2hvcnQgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAqLworICAgIGNvbnN0IG9w
dXNfaW50MTYgICAgICAgICAgICBMVFBDb2VmX1ExNFsgTFRQX09SREVSICogTUFYX05CX1NVQkZS
IF0sICAgIC8qIEkgICAgTG9uZyB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICAqLworICAgIGNv
bnN0IG9wdXNfaW50MTYgICAgICAgICAgICBBUjJfUTEzWyBNQVhfTkJfU1VCRlIgKiBNQVhfU0hB
UEVfTFBDX09SREVSIF0sIC8qIEkgTm9pc2Ugc2hhcGluZyBjb2VmcyAgICAgICAgICAgICAqLwor
ICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBIYXJtU2hhcGVHYWluX1ExNFsgTUFYX05C
X1NVQkZSIF0sICAgICAgICAgIC8qIEkgICAgTG9uZyB0ZXJtIHNoYXBpbmcgY29lZnMgICAgICAg
ICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBUaWx0X1ExNFsgTUFYX05CX1NV
QkZSIF0sICAgICAgICAgICAgICAgICAgIC8qIEkgICAgU3BlY3RyYWwgdGlsdCAgICAgICAgICAg
ICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgICAgICAgICBMRl9zaHBfUTE0WyBN
QVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgIC8qIEkgICAgTG93IGZyZXF1ZW5jeSBzaGFw
aW5nIGNvZWZzICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgICAgICAgICBHYWluc19R
MTZbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAgIC8qIEkgICAgUXVhbnRpemF0aW9u
IHN0ZXAgc2l6ZXMgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAgICAgICBw
aXRjaExbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgUGl0Y2gg
bGFncyAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAgICAgICAg
ICAgICBMYW1iZGFfUTEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkgICAg
UmF0ZS9kaXN0b3J0aW9uIHRyYWRlb2ZmICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50ICAg
ICAgICAgICAgICBMVFBfc2NhbGVfUTE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEkgICAgTFRQIHN0YXRlIHNjYWxpbmcgICAgICAgICAgICAgICAqLworKQoreworICAgIG9wdXNf
aW50ICAgICAgICAgICAgaSwgaywgbGFnLCBzdGFydF9pZHgsIExTRl9pbnRlcnBvbGF0aW9uX2Zs
YWcsIFdpbm5lcl9pbmQsIHN1YmZyOworICAgIG9wdXNfaW50ICAgICAgICAgICAgbGFzdF9zbXBs
ZV9pZHgsIHNtcGxfYnVmX2lkeCwgZGVjaXNpb25EZWxheTsKKyAgICBjb25zdCBvcHVzX2ludDE2
ICAgICpBX1ExMiwgKkJfUTE0LCAqQVJfc2hwX1ExMzsKKyAgICBvcHVzX2ludDE2ICAgICAgICAg
ICpweHE7CisgICAgVkFSREVDTCggb3B1c19pbnQzMiwgc0xUUF9RMTUgKTsKKyAgICBWQVJERUNM
KCBvcHVzX2ludDE2LCBzTFRQICk7CisgICAgb3B1c19pbnQzMiAgICAgICAgICBIYXJtU2hhcGVG
SVJQYWNrZWRfUTE0OworICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMDsKKyAgICBv
cHVzX2ludDMyICAgICAgICAgIFJEbWluX1ExMCwgR2Fpbl9RMTA7CisgICAgVkFSREVDTCggb3B1
c19pbnQzMiwgeF9zY19RMTAgKTsKKyAgICBWQVJERUNMKCBvcHVzX2ludDMyLCBkZWxheWVkR2Fp
bl9RMTAgKTsKKyAgICBWQVJERUNMKCBOU1FfZGVsX2RlY19zdHJ1Y3QsIHBzRGVsRGVjICk7Cisg
ICAgTlNRX2RlbF9kZWNfc3RydWN0ICAqcHNERDsKKyAgICBTQVZFX1NUQUNLOworCisgICAgLyog
U2V0IHVudm9pY2VkIGxhZyB0byB0aGUgcHJldmlvdXMgb25lLCBvdmVyd3JpdGUgbGF0ZXIgZm9y
IHZvaWNlZCAqLworICAgIGxhZyA9IE5TUS0+bGFnUHJldjsKKworICAgIHNpbGtfYXNzZXJ0KCBO
U1EtPnByZXZfZ2Fpbl9RMTYgIT0gMCApOworCisgICAgLyogSW5pdGlhbGl6ZSBkZWxheWVkIGRl
Y2lzaW9uIHN0YXRlcyAqLworICAgIEFMTE9DKCBwc0RlbERlYywgcHNFbmNDLT5uU3RhdGVzRGVs
YXllZERlY2lzaW9uLCBOU1FfZGVsX2RlY19zdHJ1Y3QgKTsKKyAgICBzaWxrX21lbXNldCggcHNE
ZWxEZWMsIDAsIHBzRW5jQy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbiAqIHNpemVvZiggTlNRX2Rl
bF9kZWNfc3RydWN0ICkgKTsKKyAgICBmb3IoIGsgPSAwOyBrIDwgcHNFbmNDLT5uU3RhdGVzRGVs
YXllZERlY2lzaW9uOyBrKysgKSB7CisgICAgICAgIHBzREQgICAgICAgICAgICAgICAgID0gJnBz
RGVsRGVjWyBrIF07CisgICAgICAgIHBzREQtPlNlZWQgICAgICAgICAgID0gKCBrICsgcHNJbmRp
Y2VzLT5TZWVkICkgJiAzOworICAgICAgICBwc0RELT5TZWVkSW5pdCAgICAgICA9IHBzREQtPlNl
ZWQ7CisgICAgICAgIHBzREQtPlJEX1ExMCAgICAgICAgID0gMDsKKyAgICAgICAgcHNERC0+TEZf
QVJfUTE0ICAgICAgPSBOU1EtPnNMRl9BUl9zaHBfUTE0OworICAgICAgICBwc0RELT5TaGFwZV9R
MTRbIDAgXSA9IE5TUS0+c0xUUF9zaHBfUTE0WyBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoIC0gMSBd
OworICAgICAgICBzaWxrX21lbWNweSggcHNERC0+c0xQQ19RMTQsIE5TUS0+c0xQQ19RMTQsIE5T
UV9MUENfQlVGX0xFTkdUSCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7CisgICAgICAgIHNpbGtf
bWVtY3B5KCBwc0RELT5zQVIyX1ExNCwgTlNRLT5zQVIyX1ExNCwgc2l6ZW9mKCBOU1EtPnNBUjJf
UTE0ICkgKTsKKyAgICB9CisKKyAgICBvZmZzZXRfUTEwICAgPSBzaWxrX1F1YW50aXphdGlvbl9P
ZmZzZXRzX1ExMFsgcHNJbmRpY2VzLT5zaWduYWxUeXBlID4+IDEgXVsgcHNJbmRpY2VzLT5xdWFu
dE9mZnNldFR5cGUgXTsKKyAgICBzbXBsX2J1Zl9pZHggPSAwOyAvKiBpbmRleCBvZiBvbGRlc3Qg
c2FtcGxlcyAqLworCisgICAgZGVjaXNpb25EZWxheSA9IHNpbGtfbWluX2ludCggREVDSVNJT05f
REVMQVksIHBzRW5jQy0+c3ViZnJfbGVuZ3RoICk7CisKKyAgICAvKiBGb3Igdm9pY2VkIGZyYW1l
cyBsaW1pdCB0aGUgZGVjaXNpb24gZGVsYXkgdG8gbG93ZXIgdGhhbiB0aGUgcGl0Y2ggbGFnICov
CisgICAgaWYoIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSA9PSBUWVBFX1ZPSUNFRCApIHsKKyAgICAg
ICAgZm9yKCBrID0gMDsgayA8IHBzRW5jQy0+bmJfc3ViZnI7IGsrKyApIHsKKyAgICAgICAgICAg
IGRlY2lzaW9uRGVsYXkgPSBzaWxrX21pbl9pbnQoIGRlY2lzaW9uRGVsYXksIHBpdGNoTFsgayBd
IC0gTFRQX09SREVSIC8gMiAtIDEgKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGlmKCBsYWcgPiAwICkgeworICAgICAgICAgICAgZGVjaXNpb25EZWxheSA9IHNpbGtfbWluX2lu
dCggZGVjaXNpb25EZWxheSwgbGFnIC0gTFRQX09SREVSIC8gMiAtIDEgKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmKCBwc0luZGljZXMtPk5MU0ZJbnRlcnBDb2VmX1EyID09IDQgKSB7Cisg
ICAgICAgIExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAg
IExTRl9pbnRlcnBvbGF0aW9uX2ZsYWcgPSAxOworICAgIH0KKworICAgIEFMTE9DKCBzTFRQX1Ex
NSwKKyAgICAgICAgICAgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCArIHBzRW5jQy0+ZnJhbWVfbGVu
Z3RoLCBvcHVzX2ludDMyICk7CisgICAgQUxMT0MoIHNMVFAsIHBzRW5jQy0+bHRwX21lbV9sZW5n
dGggKyBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgb3B1c19pbnQxNiApOworICAgIEFMTE9DKCB4X3Nj
X1ExMCwgcHNFbmNDLT5zdWJmcl9sZW5ndGgsIG9wdXNfaW50MzIgKTsKKyAgICBBTExPQyggZGVs
YXllZEdhaW5fUTEwLCBERUNJU0lPTl9ERUxBWSwgb3B1c19pbnQzMiApOworICAgIC8qIFNldCB1
cCBwb2ludGVycyB0byBzdGFydCBvZiBzdWIgZnJhbWUgKi8KKyAgICBweHEgICAgICAgICAgICAg
ICAgICAgPSAmTlNRLT54cVsgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCBdOworICAgIE5TUS0+c0xU
UF9zaHBfYnVmX2lkeCA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7CisgICAgTlNRLT5zTFRQX2J1
Zl9pZHggICAgID0gcHNFbmNDLT5sdHBfbWVtX2xlbmd0aDsKKyAgICBzdWJmciA9IDA7CisgICAg
Zm9yKCBrID0gMDsgayA8IHBzRW5jQy0+bmJfc3ViZnI7IGsrKyApIHsKKyAgICAgICAgQV9RMTIg
ICAgICA9ICZQcmVkQ29lZl9RMTJbICggKCBrID4+IDEgKSB8ICggMSAtIExTRl9pbnRlcnBvbGF0
aW9uX2ZsYWcgKSApICogTUFYX0xQQ19PUkRFUiBdOworICAgICAgICBCX1ExNCAgICAgID0gJkxU
UENvZWZfUTE0WyBrICogTFRQX09SREVSICAgICAgICAgICBdOworICAgICAgICBBUl9zaHBfUTEz
ID0gJkFSMl9RMTNbICAgICBrICogTUFYX1NIQVBFX0xQQ19PUkRFUiBdOworCisgICAgICAgIC8q
IE5vaXNlIHNoYXBlIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgc2lsa19hc3NlcnQoIEhhcm1TaGFw
ZUdhaW5fUTE0WyBrIF0gPj0gMCApOworICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICA9
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxrX1JTSElGVCggSGFybVNoYXBlR2Fpbl9RMTRb
IGsgXSwgMiApOworICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0IHw9IHNpbGtfTFNISUZU
KCAob3B1c19pbnQzMilzaWxrX1JTSElGVCggSGFybVNoYXBlR2Fpbl9RMTRbIGsgXSwgMSApLCAx
NiApOworCisgICAgICAgIE5TUS0+cmV3aGl0ZV9mbGFnID0gMDsKKyAgICAgICAgaWYoIHBzSW5k
aWNlcy0+c2lnbmFsVHlwZSA9PSBUWVBFX1ZPSUNFRCApIHsKKyAgICAgICAgICAgIC8qIFZvaWNl
ZCAqLworICAgICAgICAgICAgbGFnID0gcGl0Y2hMWyBrIF07CisKKyAgICAgICAgICAgIC8qIFJl
LXdoaXRlbmluZyAqLworICAgICAgICAgICAgaWYoICggayAmICggMyAtIHNpbGtfTFNISUZUKCBM
U0ZfaW50ZXJwb2xhdGlvbl9mbGFnLCAxICkgKSApID09IDAgKSB7CisgICAgICAgICAgICAgICAg
aWYoIGsgPT0gMiApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogUkVTRVQgREVMQVlFRCBERUNJ
U0lPTlMgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogRmluZCB3aW5uZXIgKi8KKyAgICAgICAg
ICAgICAgICAgICAgUkRtaW5fUTEwID0gcHNEZWxEZWNbIDAgXS5SRF9RMTA7CisgICAgICAgICAg
ICAgICAgICAgIFdpbm5lcl9pbmQgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IoIGkgPSAx
OyBpIDwgcHNFbmNDLT5uU3RhdGVzRGVsYXllZERlY2lzaW9uOyBpKysgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiggcHNEZWxEZWNbIGkgXS5SRF9RMTAgPCBSRG1pbl9RMTAgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUkRtaW5fUTEwID0gcHNEZWxEZWNbIGkgXS5SRF9R
MTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lubmVyX2luZCA9IGk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgZm9yKCBpID0gMDsgaSA8IHBzRW5jQy0+blN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaSsr
ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGkgIT0gV2lubmVyX2luZCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwc0RlbERlY1sgaSBdLlJEX1ExMCArPSAoIHNpbGtf
aW50MzJfTUFYID4+IDQgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxrX2Fzc2Vy
dCggcHNEZWxEZWNbIGkgXS5SRF9RMTAgPj0gMCApOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogQ29weSBm
aW5hbCBwYXJ0IG9mIHNpZ25hbHMgZnJvbSB3aW5uZXIgc3RhdGUgdG8gb3V0cHV0IGFuZCBsb25n
LXRlcm0gZmlsdGVyIHN0YXRlcyAqLworICAgICAgICAgICAgICAgICAgICBwc0REID0gJnBzRGVs
RGVjWyBXaW5uZXJfaW5kIF07CisgICAgICAgICAgICAgICAgICAgIGxhc3Rfc21wbGVfaWR4ID0g
c21wbF9idWZfaWR4ICsgZGVjaXNpb25EZWxheTsKKyAgICAgICAgICAgICAgICAgICAgZm9yKCBp
ID0gMDsgaSA8IGRlY2lzaW9uRGVsYXk7IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3Rfc21wbGVfaWR4ID0gKCBsYXN0X3NtcGxlX2lkeCAtIDEgKSAlIERFQ0lTSU9OX0RFTEFZ
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGxhc3Rfc21wbGVfaWR4IDwgMCApIGxhc3Rf
c21wbGVfaWR4ICs9IERFQ0lTSU9OX0RFTEFZOworICAgICAgICAgICAgICAgICAgICAgICAgcHVs
c2VzWyAgIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1c19pbnQ4KXNpbGtfUlNISUZUX1JPVU5E
KCBwc0RELT5RX1ExMFsgbGFzdF9zbXBsZV9pZHggXSwgMTAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB4cVsgaSAtIGRlY2lzaW9uRGVsYXkgXSA9IChvcHVzX2ludDE2KXNpbGtfU0FUMTYo
IHNpbGtfUlNISUZUX1JPVU5EKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbGtfU01V
TFdXKCBwc0RELT5YcV9RMTRbIGxhc3Rfc21wbGVfaWR4IF0sIEdhaW5zX1ExNlsgMSBdICksIDE0
ICkgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBOU1EtPnNM
VFBfc2hwX2J1Zl9pZHggLSBkZWNpc2lvbkRlbGF5ICsgaSBdID0gcHNERC0+U2hhcGVfUTE0WyBs
YXN0X3NtcGxlX2lkeCBdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgc3ViZnIgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8q
IFJld2hpdGVuIHdpdGggbmV3IEEgY29lZnMgKi8KKyAgICAgICAgICAgICAgICBzdGFydF9pZHgg
PSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoIC0gbGFnIC0gcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIg
LSBMVFBfT1JERVIgLyAyOworICAgICAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBzdGFydF9pZHgg
PiAwICk7CisKKyAgICAgICAgICAgICAgICBzaWxrX0xQQ19hbmFseXNpc19maWx0ZXIoICZzTFRQ
WyBzdGFydF9pZHggXSwgJk5TUS0+eHFbIHN0YXJ0X2lkeCArIGsgKiBwc0VuY0MtPnN1YmZyX2xl
bmd0aCBdLAorICAgICAgICAgICAgICAgICAgICBBX1ExMiwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0
aCAtIHN0YXJ0X2lkeCwgcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIsIHBzRW5jQy0+YXJjaCApOwor
CisgICAgICAgICAgICAgICAgTlNRLT5zTFRQX2J1Zl9pZHggPSBwc0VuY0MtPmx0cF9tZW1fbGVu
Z3RoOworICAgICAgICAgICAgICAgIE5TUS0+cmV3aGl0ZV9mbGFnID0gMTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHNpbGtfbnNxX2RlbF9kZWNfc2NhbGVfc3RhdGVzX3Nz
ZTRfMSggcHNFbmNDLCBOU1EsIHBzRGVsRGVjLCB4X1EzLCB4X3NjX1ExMCwgc0xUUCwgc0xUUF9R
MTUsIGssCisgICAgICAgICAgICBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb24sIExUUF9z
Y2FsZV9RMTQsIEdhaW5zX1ExNiwgcGl0Y2hMLCBwc0luZGljZXMtPnNpZ25hbFR5cGUsIGRlY2lz
aW9uRGVsYXkgKTsKKworICAgICAgICBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXplcl9kZWxfZGVj
X3NzZTRfMSggTlNRLCBwc0RlbERlYywgcHNJbmRpY2VzLT5zaWduYWxUeXBlLCB4X3NjX1ExMCwg
cHVsc2VzLCBweHEsIHNMVFBfUTE1LAorICAgICAgICAgICAgZGVsYXllZEdhaW5fUTEwLCBBX1Ex
MiwgQl9RMTQsIEFSX3NocF9RMTMsIGxhZywgSGFybVNoYXBlRklSUGFja2VkX1ExNCwgVGlsdF9R
MTRbIGsgXSwgTEZfc2hwX1ExNFsgayBdLAorICAgICAgICAgICAgR2FpbnNfUTE2WyBrIF0sIExh
bWJkYV9RMTAsIG9mZnNldF9RMTAsIHBzRW5jQy0+c3ViZnJfbGVuZ3RoLCBzdWJmcisrLCBwc0Vu
Y0MtPnNoYXBpbmdMUENPcmRlciwKKyAgICAgICAgICAgIHBzRW5jQy0+cHJlZGljdExQQ09yZGVy
LCBwc0VuY0MtPndhcnBpbmdfUTE2LCBwc0VuY0MtPm5TdGF0ZXNEZWxheWVkRGVjaXNpb24sICZz
bXBsX2J1Zl9pZHgsIGRlY2lzaW9uRGVsYXkgKTsKKworICAgICAgICB4X1EzICAgKz0gcHNFbmND
LT5zdWJmcl9sZW5ndGg7CisgICAgICAgIHB1bHNlcyArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsK
KyAgICAgICAgcHhxICAgICs9IHBzRW5jQy0+c3ViZnJfbGVuZ3RoOworICAgIH0KKworICAgIC8q
IEZpbmQgd2lubmVyICovCisgICAgUkRtaW5fUTEwID0gcHNEZWxEZWNbIDAgXS5SRF9RMTA7Cisg
ICAgV2lubmVyX2luZCA9IDA7CisgICAgZm9yKCBrID0gMTsgayA8IHBzRW5jQy0+blN0YXRlc0Rl
bGF5ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICBpZiggcHNEZWxEZWNbIGsgXS5SRF9RMTAg
PCBSRG1pbl9RMTAgKSB7CisgICAgICAgICAgICBSRG1pbl9RMTAgPSBwc0RlbERlY1sgayBdLlJE
X1ExMDsKKyAgICAgICAgICAgIFdpbm5lcl9pbmQgPSBrOworICAgICAgICB9CisgICAgfQorCisg
ICAgLyogQ29weSBmaW5hbCBwYXJ0IG9mIHNpZ25hbHMgZnJvbSB3aW5uZXIgc3RhdGUgdG8gb3V0
cHV0IGFuZCBsb25nLXRlcm0gZmlsdGVyIHN0YXRlcyAqLworICAgIHBzREQgPSAmcHNEZWxEZWNb
IFdpbm5lcl9pbmQgXTsKKyAgICBwc0luZGljZXMtPlNlZWQgPSBwc0RELT5TZWVkSW5pdDsKKyAg
ICBsYXN0X3NtcGxlX2lkeCA9IHNtcGxfYnVmX2lkeCArIGRlY2lzaW9uRGVsYXk7CisgICAgR2Fp
bl9RMTAgPSBzaWxrX1JTSElGVDMyKCBHYWluc19RMTZbIHBzRW5jQy0+bmJfc3ViZnIgLSAxIF0s
IDYgKTsKKyAgICBmb3IoIGkgPSAwOyBpIDwgZGVjaXNpb25EZWxheTsgaSsrICkgeworICAgICAg
ICBsYXN0X3NtcGxlX2lkeCA9ICggbGFzdF9zbXBsZV9pZHggLSAxICkgJSBERUNJU0lPTl9ERUxB
WTsKKyAgICAgICAgaWYoIGxhc3Rfc21wbGVfaWR4IDwgMCApIGxhc3Rfc21wbGVfaWR4ICs9IERF
Q0lTSU9OX0RFTEFZOworICAgICAgICBwdWxzZXNbICAgaSAtIGRlY2lzaW9uRGVsYXkgXSA9IChv
cHVzX2ludDgpc2lsa19SU0hJRlRfUk9VTkQoIHBzREQtPlFfUTEwWyBsYXN0X3NtcGxlX2lkeCBd
LCAxMCApOworICAgICAgICBweHFbIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1c19pbnQxNilz
aWxrX1NBVDE2KCBzaWxrX1JTSElGVF9ST1VORCgKKyAgICAgICAgICAgIHNpbGtfU01VTFdXKCBw
c0RELT5YcV9RMTRbIGxhc3Rfc21wbGVfaWR4IF0sIEdhaW5fUTEwICksIDggKSApOworICAgICAg
ICBOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gZGVjaXNpb25EZWxh
eSArIGkgXSA9IHBzREQtPlNoYXBlX1ExNFsgbGFzdF9zbXBsZV9pZHggXTsKKyAgICB9CisgICAg
c2lsa19tZW1jcHkoIE5TUS0+c0xQQ19RMTQsICZwc0RELT5zTFBDX1ExNFsgcHNFbmNDLT5zdWJm
cl9sZW5ndGggXSwgTlNRX0xQQ19CVUZfTEVOR1RIICogc2l6ZW9mKCBvcHVzX2ludDMyICkgKTsK
KyAgICBzaWxrX21lbWNweSggTlNRLT5zQVIyX1ExNCwgcHNERC0+c0FSMl9RMTQsIHNpemVvZigg
cHNERC0+c0FSMl9RMTQgKSApOworCisgICAgLyogVXBkYXRlIHN0YXRlcyAqLworICAgIE5TUS0+
c0xGX0FSX3NocF9RMTQgPSBwc0RELT5MRl9BUl9RMTQ7CisgICAgTlNRLT5sYWdQcmV2ICAgICAg
ICA9IHBpdGNoTFsgcHNFbmNDLT5uYl9zdWJmciAtIDEgXTsKKworICAgIC8qIFNhdmUgcXVhbnRp
emVkIHNwZWVjaCBzaWduYWwgKi8KKyAgICBzaWxrX21lbW1vdmUoIE5TUS0+eHEsICAgICAgICAg
ICAmTlNRLT54cVsgICAgICAgICAgIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoIF0sIHBzRW5jQy0+bHRw
X21lbV9sZW5ndGggKiBzaXplb2YoIG9wdXNfaW50MTYgKSApOworICAgIHNpbGtfbWVtbW92ZSgg
TlNRLT5zTFRQX3NocF9RMTQsICZOU1EtPnNMVFBfc2hwX1ExNFsgcHNFbmNDLT5mcmFtZV9sZW5n
dGggXSwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAqIHNpemVvZiggb3B1c19pbnQzMiApICk7Cisg
ICAgUkVTVE9SRV9TVEFDSzsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KKy8qIE5vaXNlIHNoYXBlIHF1YW50aXplciBmb3Igb25lIHN1YmZyYW1lICov
CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIE9Q
VVNfSU5MSU5FIHZvaWQgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfZGVsX2RlY19zc2U0XzEo
CisgICAgc2lsa19uc3Ffc3RhdGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAvKiBJL08g
IE5TUSBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgTlNRX2RlbF9kZWNf
c3RydWN0ICBwc0RlbERlY1tdLCAgICAgICAgICAgICAvKiBJL08gIERlbGF5ZWQgZGVjaXNpb24g
c3RhdGVzICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBzaWduYWxUeXBl
LCAgICAgICAgICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAgICAgICAgICAg
ICovCisgICAgY29uc3Qgb3B1c19pbnQzMiAgICB4X1ExMFtdLCAgICAgICAgICAgICAgICAvKiBJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQ4
ICAgICAgICAgICBwdWxzZXNbXSwgICAgICAgICAgICAgICAvKiBPICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQxNiAgICAgICAgICB4cVtdLCAg
ICAgICAgICAgICAgICAgICAvKiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBzTFRQX1ExNVtdLCAgICAgICAgICAgICAv
KiBJL08gIExUUCBmaWx0ZXIgc3RhdGUgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19p
bnQzMiAgICAgICAgICBkZWxheWVkR2Fpbl9RMTBbXSwgICAgICAvKiBJL08gIEdhaW4gZGVsYXkg
YnVmZmVyICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBhX1Ex
MltdLCAgICAgICAgICAgICAgICAvKiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAg
ICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBiX1ExNFtdLCAgICAgICAgICAgICAg
ICAvKiBJICAgIExvbmcgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAgICAgICovCisgICAgY29u
c3Qgb3B1c19pbnQxNiAgICBBUl9zaHBfUTEzW10sICAgICAgICAgICAvKiBJICAgIE5vaXNlIHNo
YXBpbmcgY29lZnMgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBs
YWcsICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRf
UTE0LCAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAg
b3B1c19pbnQgICAgICAgICAgICBUaWx0X1ExNCwgICAgICAgICAgICAgICAvKiBJICAgIFNwZWN0
cmFsIHRpbHQgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAg
ICBMRl9zaHBfUTE0LCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBHYWluX1ExNiwgICAgICAg
ICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgb3B1c19pbnQgICAgICAgICAgICBMYW1iZGFfUTEwLCAgICAgICAgICAgICAvKiBJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAg
ICAgICBvZmZzZXRfUTEwLCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBsZW5ndGgsICAgICAg
ICAgICAgICAgICAvKiBJICAgIElucHV0IGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgb3B1c19pbnQgICAgICAgICAgICBzdWJmciwgICAgICAgICAgICAgICAgICAvKiBJICAg
IFN1YmZyYW1lIG51bWJlciAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAg
ICAgICAgICBzaGFwaW5nTFBDT3JkZXIsICAgICAgICAvKiBJICAgIFNoYXBpbmcgTFBDIGZpbHRl
ciBvcmRlciAgICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBwcmVkaWN0TFBD
T3JkZXIsICAgICAgICAvKiBJICAgIFByZWRpY3Rpb24gZmlsdGVyIG9yZGVyICAgICAgICAgICAg
ICovCisgICAgb3B1c19pbnQgICAgICAgICAgICB3YXJwaW5nX1ExNiwgICAgICAgICAgICAvKiBJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQg
ICAgICAgICAgICBuU3RhdGVzRGVsYXllZERlY2lzaW9uLCAvKiBJICAgIE51bWJlciBvZiBzdGF0
ZXMgaW4gZGVjaXNpb24gdHJlZSAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICAqc21wbF9i
dWZfaWR4LCAgICAgICAgICAvKiBJL08gIEluZGV4IHRvIG5ld2VzdCBzYW1wbGVzIGluIGJ1ZmZl
cnMgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBkZWNpc2lvbkRlbGF5ICAgICAgICAgICAv
KiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCispCit7CisgICAg
b3B1c19pbnQgICAgIGksIGosIGssIFdpbm5lcl9pbmQsIFJEbWluX2luZCwgUkRtYXhfaW5kLCBs
YXN0X3NtcGxlX2lkeDsKKyAgICBvcHVzX2ludDMyICAgV2lubmVyX3JhbmRfc3RhdGU7CisgICAg
b3B1c19pbnQzMiAgIExUUF9wcmVkX1ExNCwgTFBDX3ByZWRfUTE0LCBuX0FSX1ExNCwgbl9MVFBf
UTE0OworICAgIG9wdXNfaW50MzIgICBuX0xGX1ExNCwgcl9RMTAsIHJyX1ExMCwgcmQxX1ExMCwg
cmQyX1ExMCwgUkRtaW5fUTEwLCBSRG1heF9RMTA7CisgICAgb3B1c19pbnQzMiAgIHExX1EwLCBx
MV9RMTAsIHEyX1ExMCwgZXhjX1ExNCwgTFBDX2V4Y19RMTQsIHhxX1ExNCwgR2Fpbl9RMTA7Cisg
ICAgb3B1c19pbnQzMiAgIHRtcDEsIHRtcDIsIHNMRl9BUl9zaHBfUTE0OworICAgIG9wdXNfaW50
MzIgICAqcHJlZF9sYWdfcHRyLCAqc2hwX2xhZ19wdHIsICpwc0xQQ19RMTQ7CisgICAgVkFSREVD
TCggTlNRX3NhbXBsZV9wYWlyLCBwc1NhbXBsZVN0YXRlICk7CisgICAgTlNRX2RlbF9kZWNfc3Ry
dWN0ICpwc0REOworICAgIE5TUV9zYW1wbGVfc3RydWN0ICAqcHNTUzsKKworICAgIF9fbTEyOGkg
YV9RMTJfMDEyMywgYV9RMTJfNDU2NywgYV9RMTJfODlBQiwgYV9RMTJfQ0RFRjsKKyAgICBfX20x
MjhpIGJfUTEyXzAxMjMsIGJfc3JfUTEyXzAxMjM7CisgICAgU0FWRV9TVEFDSzsKKworICAgIGNl
bHRfYXNzZXJ0KCBuU3RhdGVzRGVsYXllZERlY2lzaW9uID4gMCApOworICAgIEFMTE9DKCBwc1Nh
bXBsZVN0YXRlLCBuU3RhdGVzRGVsYXllZERlY2lzaW9uLCBOU1Ffc2FtcGxlX3BhaXIgKTsKKwor
ICAgIHNocF9sYWdfcHRyICA9ICZOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQX3NocF9idWZf
aWR4IC0gbGFnICsgSEFSTV9TSEFQRV9GSVJfVEFQUyAvIDIgXTsKKyAgICBwcmVkX2xhZ19wdHIg
PSAmc0xUUF9RMTVbIE5TUS0+c0xUUF9idWZfaWR4IC0gbGFnICsgTFRQX09SREVSIC8gMiBdOwor
ICAgIEdhaW5fUTEwICAgICA9IHNpbGtfUlNISUZUKCBHYWluX1ExNiwgNiApOworCisgICAgYV9R
MTJfMDEyMyA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggYV9RMTIgKTsKKyAgICBhX1ExMl80NTY3
ID0gT1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCBhX1ExMiArIDQgKTsKKworICAgIGlmKCBvcHVzX2xp
a2VseSggcHJlZGljdExQQ09yZGVyID09IDE2ICkgKSB7CisgICAgICAgIGFfUTEyXzg5QUIgPSBP
UF9DVlRFUEkxNl9FUEkzMl9NNjQoIGFfUTEyICsgOCApOworICAgICAgICBhX1ExMl9DREVGID0g
T1BfQ1ZURVBJMTZfRVBJMzJfTTY0KCBhX1ExMiArIDEyICk7CisgICAgfQorCisgICAgaWYoIHNp
Z25hbFR5cGUgPT0gVFlQRV9WT0lDRUQgKXsKKyAgICAgICAgYl9RMTJfMDEyMyA9IE9QX0NWVEVQ
STE2X0VQSTMyX002NCggYl9RMTQgKTsKKyAgICAgICAgYl9zcl9RMTJfMDEyMyA9IF9tbV9zaHVm
ZmxlX2VwaTMyKCBiX1ExMl8wMTIzLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8qIGVx
dWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KKyAgICB9CisgICAgZm9yKCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrICkgeworICAgICAgICAvKiBQZXJmb3JtIGNvbW1vbiBjYWxjdWxhdGlvbnMgdXNl
ZCBpbiBhbGwgc3RhdGVzICovCisKKyAgICAgICAgLyogTG9uZy10ZXJtIHByZWRpY3Rpb24gKi8K
KyAgICAgICAgaWYoIHNpZ25hbFR5cGUgPT0gVFlQRV9WT0lDRUQgKSB7CisgICAgICAgICAgICAv
KiBVbnJvbGxlZCBsb29wICovCisgICAgICAgICAgICAvKiBBdm9pZHMgaW50cm9kdWNpbmcgYSBi
aWFzIGJlY2F1c2Ugc2lsa19TTUxBV0IoKSBhbHdheXMgcm91bmRzIHRvIC1pbmYgKi8KKyAgICAg
ICAgICAgIExUUF9wcmVkX1ExNCA9IDI7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
X19tMTI4aSB0bXBhLCB0bXBiLCBwcmVkX2xhZ19wdHJfdG1wOworICAgICAgICAgICAgICAgIHBy
ZWRfbGFnX3B0cl90bXAgICAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwcmVkX2xh
Z19wdHJbIC0zIF0gKSApOworICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0cl90bXAgICAgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwgMHgxQiApOworICAgICAgICAgICAg
ICAgIHRtcGEgICAgICAgICAgICAgICAgPSBfbW1fbXVsX2VwaTMyKCBwcmVkX2xhZ19wdHJfdG1w
LCBiX1ExMl8wMTIzICk7CisgICAgICAgICAgICAgICAgdG1wYSAgICAgICAgICAgICAgICA9IF9t
bV9zcmxpX3NpMTI4KCB0bXBhLCAyICk7CisKKyAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJf
dG1wID0gX21tX3NodWZmbGVfZXBpMzIoIHByZWRfbGFnX3B0cl90bXAsIF9NTV9TSFVGRkxFKCAw
LCAzLCAyLCAxICkgKTsvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCisgICAgICAgICAg
ICAgICAgcHJlZF9sYWdfcHRyX3RtcCAgICA9IF9tbV9tdWxfZXBpMzIoIHByZWRfbGFnX3B0cl90
bXAsIGJfc3JfUTEyXzAxMjMgKTsKKyAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfdG1wICAg
ID0gX21tX3NybGlfc2kxMjgoIHByZWRfbGFnX3B0cl90bXAsIDIgKTsKKyAgICAgICAgICAgICAg
ICBwcmVkX2xhZ19wdHJfdG1wICAgID0gX21tX2FkZF9lcGkzMiggcHJlZF9sYWdfcHRyX3RtcCwg
dG1wYSApOworCisgICAgICAgICAgICAgICAgdG1wYiA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwcmVk
X2xhZ19wdHJfdG1wLCBfTU1fU0hVRkZMRSggMCwgMCwgMywgMiApICk7LyogZXF1YWwgc2hpZnQg
cmlnaHQgOCBieXRlcyAqLworICAgICAgICAgICAgICAgIHByZWRfbGFnX3B0cl90bXAgICAgPSBf
bW1fYWRkX2VwaTMyKCBwcmVkX2xhZ19wdHJfdG1wLCB0bXBiICk7CisgICAgICAgICAgICAgICAg
TFRQX3ByZWRfUTE0ICAgICAgICArPSBfbW1fY3Z0c2kxMjhfc2kzMiggcHJlZF9sYWdfcHRyX3Rt
cCApOworCisgICAgICAgICAgICAgICAgTFRQX3ByZWRfUTE0ID0gc2lsa19TTUxBV0IoIExUUF9w
cmVkX1ExNCwgcHJlZF9sYWdfcHRyWyAtNCBdLCBiX1ExNFsgNCBdICk7CisgICAgICAgICAgICAg
ICAgTFRQX3ByZWRfUTE0ID0gc2lsa19MU0hJRlQoIExUUF9wcmVkX1ExNCwgMSApOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogUTEzIC0+IFExNCAqLworICAgICAgICAgICAgICAgIHByZWRf
bGFnX3B0cisrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
TFRQX3ByZWRfUTE0ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIExvbmctdGVybSBzaGFw
aW5nICovCisgICAgICAgIGlmKCBsYWcgPiAwICkgeworICAgICAgICAgICAgLyogU3ltbWV0cmlj
LCBwYWNrZWQgRklSIGNvZWZmaWNpZW50cyAqLworICAgICAgICAgICAgbl9MVFBfUTE0ID0gc2ls
a19TTVVMV0IoIHNpbGtfQUREMzIoIHNocF9sYWdfcHRyWyAwIF0sIHNocF9sYWdfcHRyWyAtMiBd
ICksIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgKTsKKyAgICAgICAgICAgIG5fTFRQX1ExNCA9IHNp
bGtfU01MQVdUKCBuX0xUUF9RMTQsIHNocF9sYWdfcHRyWyAtMSBdLCAgICAgICAgICAgICAgICAg
ICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICk7CisgICAgICAgICAgICBuX0xUUF9RMTQgPSBz
aWxrX1NVQl9MU0hJRlQzMiggTFRQX3ByZWRfUTE0LCBuX0xUUF9RMTQsIDIgKTsgICAgICAgICAg
ICAvKiBRMTIgLT4gUTE0ICovCisgICAgICAgICAgICBzaHBfbGFnX3B0cisrOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbl9MVFBfUTE0ID0gMDsKKyAgICAgICAgfQorICAgICAgICB7
CisgICAgICAgICAgICBfX20xMjhpIHRtcGEsIHRtcGIsIHBzTFBDX1ExNF90bXAsIGFfUTEyX3Rt
cDsKKworICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8IG5TdGF0ZXNEZWxheWVkRGVjaXNpb247
IGsrKyApIHsKKyAgICAgICAgICAgICAgICAvKiBEZWxheWVkIGRlY2lzaW9uIHN0YXRlICovCisg
ICAgICAgICAgICAgICAgcHNERCA9ICZwc0RlbERlY1sgayBdOworCisgICAgICAgICAgICAgICAg
LyogU2FtcGxlIHN0YXRlICovCisgICAgICAgICAgICAgICAgcHNTUyA9IHBzU2FtcGxlU3RhdGVb
IGsgXTsKKworICAgICAgICAgICAgICAgIC8qIEdlbmVyYXRlIGRpdGhlciAqLworICAgICAgICAg
ICAgICAgIHBzREQtPlNlZWQgPSBzaWxrX1JBTkQoIHBzREQtPlNlZWQgKTsKKworICAgICAgICAg
ICAgICAgIC8qIFBvaW50ZXIgdXNlZCBpbiBzaG9ydCB0ZXJtIHByZWRpY3Rpb24gYW5kIHNoYXBp
bmcgKi8KKyAgICAgICAgICAgICAgICBwc0xQQ19RMTQgPSAmcHNERC0+c0xQQ19RMTRbIE5TUV9M
UENfQlVGX0xFTkdUSCAtIDEgKyBpIF07CisgICAgICAgICAgICAgICAgLyogU2hvcnQtdGVybSBw
cmVkaWN0aW9uICovCisgICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHByZWRpY3RMUENPcmRl
ciA9PSAxMCB8fCBwcmVkaWN0TFBDT3JkZXIgPT0gMTYgKTsKKyAgICAgICAgICAgICAgICAvKiBB
dm9pZHMgaW50cm9kdWNpbmcgYSBiaWFzIGJlY2F1c2Ugc2lsa19TTUxBV0IoKSBhbHdheXMgcm91
bmRzIHRvIC1pbmYgKi8KKyAgICAgICAgICAgICAgICBMUENfcHJlZF9RMTQgPSBzaWxrX1JTSElG
VCggcHJlZGljdExQQ09yZGVyLCAxICk7CisKKyAgICAgICAgICAgICAgICB0bXBiID0gX21tX3Nl
dHplcm9fc2kxMjgoKTsKKworICAgICAgICAgICAgICAgIC8qIHN0ZXAgMSAqLworICAgICAgICAg
ICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJnBz
TFBDX1ExNFsgLTMgXSApICk7IC8qIC0zLCAtMiAsIC0xLCAwICovCisgICAgICAgICAgICAgICAg
cHNMUENfUTE0X3RtcCAgID0gX21tX3NodWZmbGVfZXBpMzIoIHBzTFBDX1ExNF90bXAsIDB4MUIg
KTsgICAgICAvKiAwLCAtMSwgLTIsIC0zICovCisgICAgICAgICAgICAgICAgdG1wYSAgICAgICAg
ICAgID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3RtcCwgYV9RMTJfMDEyMyApOyAgICAvKiAw
LCAtMSwgLTIsIC0zICogMDEyMyAtPiAwKjAsIDIqLTIgKi8KKworICAgICAgICAgICAgICAgIHRt
cGEgICAgICAgICAgICA9IF9tbV9zcmxpX2VwaTY0KCB0bXBhLCAxNiApOworICAgICAgICAgICAg
ICAgIHRtcGIgICAgICAgICAgICA9IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHRtcGEgKTsKKworICAg
ICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0
X3RtcCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0
IGJ5dGVzICovCisgICAgICAgICAgICAgICAgYV9RMTJfdG1wID0gX21tX3NodWZmbGVfZXBpMzIo
IGFfUTEyXzAxMjMsIF9NTV9TSFVGRkxFKDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCBy
aWdodCA0IGJ5dGVzICovCisgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX211
bF9lcGkzMiggcHNMUENfUTE0X3RtcCwgYV9RMTJfdG1wICk7IC8qIDEqLTEsIDMqLTMgKi8KKyAg
ICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fc3JsaV9lcGk2NCggcHNMUENfUTE0
X3RtcCwgMTYgKTsKKyAgICAgICAgICAgICAgICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2Vw
aTMyKCB0bXBiLCBwc0xQQ19RMTRfdG1wICk7CisKKyAgICAgICAgICAgICAgICAvKiBzdGVwIDIg
Ki8KKyAgICAgICAgICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fbG9hZHVfc2kxMjgoIChf
X20xMjhpICopKCZwc0xQQ19RMTRbIC03IF0gKSApOworICAgICAgICAgICAgICAgIHBzTFBDX1Ex
NF90bXAgICA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCAweDFCICk7CisgICAg
ICAgICAgICAgICAgdG1wYSAgICAgICAgICAgID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3Rt
cCwgYV9RMTJfNDU2NyApOworICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICA9IF9tbV9z
cmxpX2VwaTY0KCB0bXBhLCAxNiApOworICAgICAgICAgICAgICAgIHRtcGIgICAgICAgICAgICA9
IF9tbV9hZGRfZXBpMzIoIHRtcGIsIHRtcGEgKTsKKworICAgICAgICAgICAgICAgIHBzTFBDX1Ex
NF90bXAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgX01NX1NIVUZGTEUoIDAs
IDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCisgICAgICAgICAg
ICAgICAgYV9RMTJfdG1wID0gX21tX3NodWZmbGVfZXBpMzIoIGFfUTEyXzQ1NjcsIF9NTV9TSFVG
RkxFKDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzICovCisgICAg
ICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX211bF9lcGkzMiggcHNMUENfUTE0X3Rt
cCwgYV9RMTJfdG1wICk7CisgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX3Ny
bGlfZXBpNjQoIHBzTFBDX1ExNF90bXAsIDE2ICk7CisgICAgICAgICAgICAgICAgdG1wYiAgICAg
ICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1wYiwgcHNMUENfUTE0X3RtcCApOworCisgICAgICAg
ICAgICAgICAgaWYgKCBvcHVzX2xpa2VseSggcHJlZGljdExQQ09yZGVyID09IDE2ICkgKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogc3RlcCAzICovCisgICAgICAg
ICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkg
KikoJnBzTFBDX1ExNFsgLTExIF0gKSApOworICAgICAgICAgICAgICAgICAgICBwc0xQQ19RMTRf
dG1wICAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgMHgxQiApOworICAgICAg
ICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fbXVsX2VwaTMyKCBwc0xQQ19RMTRf
dG1wLCBhX1ExMl84OUFCICk7CisgICAgICAgICAgICAgICAgICAgIHRtcGEgICAgICAgICAgICA9
IF9tbV9zcmxpX2VwaTY0KCB0bXBhLCAxNiApOworICAgICAgICAgICAgICAgICAgICB0bXBiICAg
ICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7CisKKyAgICAgICAgICAgICAg
ICAgICAgcHNMUENfUTE0X3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwc0xQQ19RMTRfdG1wLCBf
TU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMg
Ki8KKyAgICAgICAgICAgICAgICAgICAgYV9RMTJfdG1wID0gX21tX3NodWZmbGVfZXBpMzIoIGFf
UTEyXzg5QUIsIF9NTV9TSFVGRkxFKDAsIDMsIDIsIDEgKSApOy8qIGVxdWFsIHNoaWZ0IHJpZ2h0
IDQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgcHNMUENfUTE0X3RtcCAgID0gX21tX211
bF9lcGkzMiggcHNMUENfUTE0X3RtcCwgYV9RMTJfdG1wICk7CisgICAgICAgICAgICAgICAgICAg
IHBzTFBDX1ExNF90bXAgICA9IF9tbV9zcmxpX2VwaTY0KCBwc0xQQ19RMTRfdG1wLCAxNiApOwor
ICAgICAgICAgICAgICAgICAgICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBi
LCBwc0xQQ19RMTRfdG1wICk7CisKKyAgICAgICAgICAgICAgICAgICAgLyogc2V0cCA0ICovCisg
ICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9IF9tbV9sb2FkdV9zaTEyOCggKF9f
bTEyOGkgKikoJnBzTFBDX1ExNFsgLTE1IF0gKSApOworICAgICAgICAgICAgICAgICAgICBwc0xQ
Q19RMTRfdG1wICAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHNMUENfUTE0X3RtcCwgMHgxQiApOwor
ICAgICAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fbXVsX2VwaTMyKCBwc0xQ
Q19RMTRfdG1wLCBhX1ExMl9DREVGICk7CisgICAgICAgICAgICAgICAgICAgIHRtcGEgICAgICAg
ICAgICA9IF9tbV9zcmxpX2VwaTY0KCB0bXBhLCAxNiApOworICAgICAgICAgICAgICAgICAgICB0
bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcHNMUENfUTE0X3RtcCA9IF9tbV9zaHVmZmxlX2VwaTMyKCBwc0xQQ19RMTRf
dG1wLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQg
Ynl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgYV9RMTJfdG1wID0gX21tX3NodWZmbGVfZXBp
MzIoIGFfUTEyX0NERUYsIF9NTV9TSFVGRkxFKDAsIDMsIDIsIDEgKSApOyAvKiBlcXVhbCBzaGlm
dCByaWdodCA0IGJ5dGVzICovCisgICAgICAgICAgICAgICAgICAgIHBzTFBDX1ExNF90bXAgICA9
IF9tbV9tdWxfZXBpMzIoIHBzTFBDX1ExNF90bXAsIGFfUTEyX3RtcCApOworICAgICAgICAgICAg
ICAgICAgICBwc0xQQ19RMTRfdG1wICAgPSBfbW1fc3JsaV9lcGk2NCggcHNMUENfUTE0X3RtcCwg
MTYgKTsKKyAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkz
MiggdG1wYiwgcHNMUENfUTE0X3RtcCApOworCisgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBh
dCBsYXN0ICovCisgICAgICAgICAgICAgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDggYnl0
ZXMqLworICAgICAgICAgICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc2h1ZmZsZV9l
cGkzMiggdG1wYiwgX01NX1NIVUZGTEUoIDAsIDAsIDMsIDIgKSApOworICAgICAgICAgICAgICAg
ICAgICB0bXBiICAgICAgICAgICAgPSBfbW1fYWRkX2VwaTMyKCB0bXBiLCB0bXBhICk7CisgICAg
ICAgICAgICAgICAgICAgIExQQ19wcmVkX1ExNCAgICArPSBfbW1fY3Z0c2kxMjhfc2kzMiggdG1w
YiApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBhZGQgYXQgbGFzdCAqLworICAgICAgICAg
ICAgICAgICAgICB0bXBhICAgICAgICAgICAgPSBfbW1fc2h1ZmZsZV9lcGkzMiggdG1wYiwgX01N
X1NIVUZGTEUoIDAsIDAsIDMsIDIgKSApOyAvKiBlcXVhbCBzaGlmdCByaWdodCA4IGJ5dGVzKi8K
KyAgICAgICAgICAgICAgICAgICAgdG1wYiAgICAgICAgICAgID0gX21tX2FkZF9lcGkzMiggdG1w
YiwgdG1wYSApOworICAgICAgICAgICAgICAgICAgICBMUENfcHJlZF9RMTQgICAgKz0gX21tX2N2
dHNpMTI4X3NpMzIoIHRtcGIgKTsKKworICAgICAgICAgICAgICAgICAgICBMUENfcHJlZF9RMTQg
PSBzaWxrX1NNTEFXQiggTFBDX3ByZWRfUTE0LCBwc0xQQ19RMTRbIC04IF0sIGFfUTEyWyA4IF0g
KTsKKyAgICAgICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ID0gc2lsa19TTUxBV0IoIExQQ19w
cmVkX1ExNCwgcHNMUENfUTE0WyAtOSBdLCBhX1ExMlsgOSBdICk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgTFBDX3ByZWRfUTE0ID0gc2lsa19MU0hJRlQoIExQQ19wcmVk
X1ExNCwgNCApOyAvKiBRMTAgLT4gUTE0ICovCisKKyAgICAgICAgICAgICAgICAvKiBOb2lzZSBz
aGFwZSBmZWVkYmFjayAqLworICAgICAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCAoIHNoYXBpbmdM
UENPcmRlciAmIDEgKSA9PSAwICk7ICAgLyogY2hlY2sgdGhhdCBvcmRlciBpcyBldmVuICovCisg
ICAgICAgICAgICAgICAgLyogT3V0cHV0IG9mIGxvd3Bhc3Mgc2VjdGlvbiAqLworICAgICAgICAg
ICAgICAgIHRtcDIgPSBzaWxrX1NNTEFXQiggcHNMUENfUTE0WyAwIF0sIHBzREQtPnNBUjJfUTE0
WyAwIF0sIHdhcnBpbmdfUTE2ICk7CisgICAgICAgICAgICAgICAgLyogT3V0cHV0IG9mIGFsbHBh
c3Mgc2VjdGlvbiAqLworICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxrX1NNTEFXQiggcHNERC0+
c0FSMl9RMTRbIDAgXSwgcHNERC0+c0FSMl9RMTRbIDEgXSAtIHRtcDIsIHdhcnBpbmdfUTE2ICk7
CisgICAgICAgICAgICAgICAgcHNERC0+c0FSMl9RMTRbIDAgXSA9IHRtcDI7CisgICAgICAgICAg
ICAgICAgbl9BUl9RMTQgPSBzaWxrX1JTSElGVCggc2hhcGluZ0xQQ09yZGVyLCAxICk7CisgICAg
ICAgICAgICAgICAgbl9BUl9RMTQgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTQsIHRtcDIsIEFSX3No
cF9RMTNbIDAgXSApOworICAgICAgICAgICAgICAgIC8qIExvb3Agb3ZlciBhbGxwYXNzIHNlY3Rp
b25zICovCisgICAgICAgICAgICAgICAgZm9yKCBqID0gMjsgaiA8IHNoYXBpbmdMUENPcmRlcjsg
aiArPSAyICkgeworICAgICAgICAgICAgICAgICAgICAvKiBPdXRwdXQgb2YgYWxscGFzcyBzZWN0
aW9uICovCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBzaWxrX1NNTEFXQiggcHNERC0+c0FS
Ml9RMTRbIGogLSAxIF0sIHBzREQtPnNBUjJfUTE0WyBqICsgMCBdIC0gdG1wMSwgd2FycGluZ19R
MTYgKTsKKyAgICAgICAgICAgICAgICAgICAgcHNERC0+c0FSMl9RMTRbIGogLSAxIF0gPSB0bXAx
OworICAgICAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtfU01MQVdCKCBuX0FSX1ExNCwg
dG1wMSwgQVJfc2hwX1ExM1sgaiAtIDEgXSApOworICAgICAgICAgICAgICAgICAgICAvKiBPdXRw
dXQgb2YgYWxscGFzcyBzZWN0aW9uICovCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxr
X1NNTEFXQiggcHNERC0+c0FSMl9RMTRbIGogKyAwIF0sIHBzREQtPnNBUjJfUTE0WyBqICsgMSBd
IC0gdG1wMiwgd2FycGluZ19RMTYgKTsKKyAgICAgICAgICAgICAgICAgICAgcHNERC0+c0FSMl9R
MTRbIGogKyAwIF0gPSB0bXAyOworICAgICAgICAgICAgICAgICAgICBuX0FSX1ExNCA9IHNpbGtf
U01MQVdCKCBuX0FSX1ExNCwgdG1wMiwgQVJfc2hwX1ExM1sgaiBdICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHBzREQtPnNBUjJfUTE0WyBzaGFwaW5nTFBDT3JkZXIgLSAx
IF0gPSB0bXAxOworICAgICAgICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19TTUxBV0IoIG5fQVJf
UTE0LCB0bXAxLCBBUl9zaHBfUTEzWyBzaGFwaW5nTFBDT3JkZXIgLSAxIF0gKTsKKworICAgICAg
ICAgICAgICAgIG5fQVJfUTE0ID0gc2lsa19MU0hJRlQoIG5fQVJfUTE0LCAxICk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTEgLT4gUTEyICovCisgICAgICAgICAg
ICAgICAgbl9BUl9RMTQgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTQsIHBzREQtPkxGX0FSX1ExNCwg
VGlsdF9RMTQgKTsgICAgICAgICAgICAgIC8qIFExMiAqLworICAgICAgICAgICAgICAgIG5fQVJf
UTE0ID0gc2lsa19MU0hJRlQoIG5fQVJfUTE0LCAyICk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBRMTIgLT4gUTE0ICovCisKKyAgICAgICAgICAgICAgICBuX0xGX1Ex
NCA9IHNpbGtfU01VTFdCKCBwc0RELT5TaGFwZV9RMTRbICpzbXBsX2J1Zl9pZHggXSwgTEZfc2hw
X1ExNCApOyAgICAgLyogUTEyICovCisgICAgICAgICAgICAgICAgbl9MRl9RMTQgPSBzaWxrX1NN
TEFXVCggbl9MRl9RMTQsIHBzREQtPkxGX0FSX1ExNCwgTEZfc2hwX1ExNCApOyAgICAgICAgICAg
IC8qIFExMiAqLworICAgICAgICAgICAgICAgIG5fTEZfUTE0ID0gc2lsa19MU0hJRlQoIG5fTEZf
UTE0LCAyICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTIgLT4g
UTE0ICovCisKKyAgICAgICAgICAgICAgICAvKiBJbnB1dCBtaW51cyBwcmVkaWN0aW9uIHBsdXMg
bm9pc2UgZmVlZGJhY2sgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAg
LyogciA9IHhbIGkgXSAtIExUUF9wcmVkIC0gTFBDX3ByZWQgKyBuX0FSICsgbl9UaWx0ICsgbl9M
RiArIG5fTFRQICAqLworICAgICAgICAgICAgICAgIHRtcDEgPSBzaWxrX0FERDMyKCBuX0FSX1Ex
NCwgbl9MRl9RMTQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTQg
Ki8KKyAgICAgICAgICAgICAgICB0bXAyID0gc2lsa19BREQzMiggbl9MVFBfUTE0LCBMUENfcHJl
ZF9RMTQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTEzICovCisgICAgICAg
ICAgICAgICAgdG1wMSA9IHNpbGtfU1VCMzIoIHRtcDIsIHRtcDEgKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMyAqLworICAgICAgICAgICAgICAgIHRt
cDEgPSBzaWxrX1JTSElGVF9ST1VORCggdG1wMSwgNCApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBRMTAgKi8KKworICAgICAgICAgICAgICAgIHJfUTEwID0gc2ls
a19TVUIzMiggeF9RMTBbIGkgXSwgdG1wMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiByZXNpZHVhbCBlcnJvciBRMTAgKi8KKworICAgICAgICAgICAgICAgIC8qIEZs
aXAgc2lnbiBkZXBlbmRpbmcgb24gZGl0aGVyICovCisgICAgICAgICAgICAgICAgaWYgKCBwc0RE
LT5TZWVkIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgcl9RMTAgPSAtcl9RMTA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJfUTEwID0gc2lsa19MSU1JVF8zMiggcl9R
MTAsIC0oMzEgPDwgMTApLCAzMCA8PCAxMCApOworCisgICAgICAgICAgICAgICAgLyogRmluZCB0
d28gcXVhbnRpemF0aW9uIGxldmVsIGNhbmRpZGF0ZXMgYW5kIG1lYXN1cmUgdGhlaXIgcmF0ZS1k
aXN0b3J0aW9uICovCisgICAgICAgICAgICAgICAgcTFfUTEwID0gc2lsa19TVUIzMiggcl9RMTAs
IG9mZnNldF9RMTAgKTsKKyAgICAgICAgICAgICAgICBxMV9RMCA9IHNpbGtfUlNISUZUKCBxMV9R
MTAsIDEwICk7CisgICAgICAgICAgICAgICAgaWYoIHExX1EwID4gMCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgcTFfUTEwICA9IHNpbGtfU1VCMzIoIHNpbGtfTFNISUZUKCBxMV9RMCwgMTAgKSwg
UVVBTlRfTEVWRUxfQURKVVNUX1ExMCApOworICAgICAgICAgICAgICAgICAgICBxMV9RMTAgID0g
c2lsa19BREQzMiggcTFfUTEwLCBvZmZzZXRfUTEwICk7CisgICAgICAgICAgICAgICAgICAgIHEy
X1ExMCAgPSBzaWxrX0FERDMyKCBxMV9RMTAsIDEwMjQgKTsKKyAgICAgICAgICAgICAgICAgICAg
cmQxX1ExMCA9IHNpbGtfU01VTEJCKCBxMV9RMTAsIExhbWJkYV9RMTAgKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmQyX1ExMCA9IHNpbGtfU01VTEJCKCBxMl9RMTAsIExhbWJkYV9RMTAgKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYoIHExX1EwID09IDAgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHExX1ExMCAgPSBvZmZzZXRfUTEwOworICAgICAgICAgICAgICAgICAgICBxMl9RMTAgID0g
c2lsa19BREQzMiggcTFfUTEwLCAxMDI0IC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMCApOworICAg
ICAgICAgICAgICAgICAgICByZDFfUTEwID0gc2lsa19TTVVMQkIoIHExX1ExMCwgTGFtYmRhX1Ex
MCApOworICAgICAgICAgICAgICAgICAgICByZDJfUTEwID0gc2lsa19TTVVMQkIoIHEyX1ExMCwg
TGFtYmRhX1ExMCApOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiggcTFfUTAgPT0gLTEgKSB7
CisgICAgICAgICAgICAgICAgICAgIHEyX1ExMCAgPSBvZmZzZXRfUTEwOworICAgICAgICAgICAg
ICAgICAgICBxMV9RMTAgID0gc2lsa19TVUIzMiggcTJfUTEwLCAxMDI0IC0gUVVBTlRfTEVWRUxf
QURKVVNUX1ExMCApOworICAgICAgICAgICAgICAgICAgICByZDFfUTEwID0gc2lsa19TTVVMQkIo
IC1xMV9RMTAsIExhbWJkYV9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcmQyX1ExMCA9IHNp
bGtfU01VTEJCKCAgcTJfUTEwLCBMYW1iZGFfUTEwICk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsgICAgICAgICAgICAvKiBxMV9RMCA8IC0xICovCisgICAgICAgICAgICAgICAgICAgIHExX1Ex
MCAgPSBzaWxrX0FERDMyKCBzaWxrX0xTSElGVCggcTFfUTAsIDEwICksIFFVQU5UX0xFVkVMX0FE
SlVTVF9RMTAgKTsKKyAgICAgICAgICAgICAgICAgICAgcTFfUTEwICA9IHNpbGtfQUREMzIoIHEx
X1ExMCwgb2Zmc2V0X1ExMCApOworICAgICAgICAgICAgICAgICAgICBxMl9RMTAgID0gc2lsa19B
REQzMiggcTFfUTEwLCAxMDI0ICk7CisgICAgICAgICAgICAgICAgICAgIHJkMV9RMTAgPSBzaWxr
X1NNVUxCQiggLXExX1ExMCwgTGFtYmRhX1ExMCApOworICAgICAgICAgICAgICAgICAgICByZDJf
UTEwID0gc2lsa19TTVVMQkIoIC1xMl9RMTAsIExhbWJkYV9RMTAgKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcnJfUTEwICA9IHNpbGtfU1VCMzIoIHJfUTEwLCBxMV9RMTAg
KTsKKyAgICAgICAgICAgICAgICByZDFfUTEwID0gc2lsa19SU0hJRlQoIHNpbGtfU01MQUJCKCBy
ZDFfUTEwLCBycl9RMTAsIHJyX1ExMCApLCAxMCApOworICAgICAgICAgICAgICAgIHJyX1ExMCAg
PSBzaWxrX1NVQjMyKCByX1ExMCwgcTJfUTEwICk7CisgICAgICAgICAgICAgICAgcmQyX1ExMCA9
IHNpbGtfUlNISUZUKCBzaWxrX1NNTEFCQiggcmQyX1ExMCwgcnJfUTEwLCBycl9RMTAgKSwgMTAg
KTsKKworICAgICAgICAgICAgICAgIGlmKCByZDFfUTEwIDwgcmQyX1ExMCApIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHNTU1sgMCBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzREQtPlJEX1ExMCwg
cmQxX1ExMCApOworICAgICAgICAgICAgICAgICAgICBwc1NTWyAxIF0uUkRfUTEwID0gc2lsa19B
REQzMiggcHNERC0+UkRfUTEwLCByZDJfUTEwICk7CisgICAgICAgICAgICAgICAgICAgIHBzU1Nb
IDAgXS5RX1ExMCAgPSBxMV9RMTA7CisgICAgICAgICAgICAgICAgICAgIHBzU1NbIDEgXS5RX1Ex
MCAgPSBxMl9RMTA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHNTU1sgMCBdLlJEX1ExMCA9IHNpbGtfQUREMzIoIHBzREQtPlJEX1ExMCwgcmQyX1ExMCAp
OworICAgICAgICAgICAgICAgICAgICBwc1NTWyAxIF0uUkRfUTEwID0gc2lsa19BREQzMiggcHNE
RC0+UkRfUTEwLCByZDFfUTEwICk7CisgICAgICAgICAgICAgICAgICAgIHBzU1NbIDAgXS5RX1Ex
MCAgPSBxMl9RMTA7CisgICAgICAgICAgICAgICAgICAgIHBzU1NbIDEgXS5RX1ExMCAgPSBxMV9R
MTA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogVXBkYXRlIHN0YXRl
cyBmb3IgYmVzdCBxdWFudGl6YXRpb24gKi8KKworICAgICAgICAgICAgICAgIC8qIFF1YW50aXpl
ZCBleGNpdGF0aW9uICovCisgICAgICAgICAgICAgICAgZXhjX1ExNCA9IHNpbGtfTFNISUZUMzIo
IHBzU1NbIDAgXS5RX1ExMCwgNCApOworICAgICAgICAgICAgICAgIGlmICggcHNERC0+U2VlZCA8
IDAgKSB7CisgICAgICAgICAgICAgICAgICAgIGV4Y19RMTQgPSAtZXhjX1ExNDsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBBZGQgcHJlZGljdGlvbnMgKi8KKyAgICAg
ICAgICAgICAgICBMUENfZXhjX1ExNCA9IHNpbGtfQUREMzIoIGV4Y19RMTQsIExUUF9wcmVkX1Ex
NCApOworICAgICAgICAgICAgICAgIHhxX1ExNCAgICAgID0gc2lsa19BREQzMiggTFBDX2V4Y19R
MTQsIExQQ19wcmVkX1ExNCApOworCisgICAgICAgICAgICAgICAgLyogVXBkYXRlIHN0YXRlcyAq
LworICAgICAgICAgICAgICAgIHNMRl9BUl9zaHBfUTE0ICAgICAgICAgPSBzaWxrX1NVQjMyKCB4
cV9RMTQsIG5fQVJfUTE0ICk7CisgICAgICAgICAgICAgICAgcHNTU1sgMCBdLnNMVFBfc2hwX1Ex
NCA9IHNpbGtfU1VCMzIoIHNMRl9BUl9zaHBfUTE0LCBuX0xGX1ExNCApOworICAgICAgICAgICAg
ICAgIHBzU1NbIDAgXS5MRl9BUl9RMTQgICAgPSBzTEZfQVJfc2hwX1ExNDsKKyAgICAgICAgICAg
ICAgICBwc1NTWyAwIF0uTFBDX2V4Y19RMTQgID0gTFBDX2V4Y19RMTQ7CisgICAgICAgICAgICAg
ICAgcHNTU1sgMCBdLnhxX1ExNCAgICAgICA9IHhxX1ExNDsKKworICAgICAgICAgICAgICAgIC8q
IFVwZGF0ZSBzdGF0ZXMgZm9yIHNlY29uZCBiZXN0IHF1YW50aXphdGlvbiAqLworCisgICAgICAg
ICAgICAgICAgLyogUXVhbnRpemVkIGV4Y2l0YXRpb24gKi8KKyAgICAgICAgICAgICAgICBleGNf
UTE0ID0gc2lsa19MU0hJRlQzMiggcHNTU1sgMSBdLlFfUTEwLCA0ICk7CisgICAgICAgICAgICAg
ICAgaWYgKCBwc0RELT5TZWVkIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgZXhjX1ExNCA9
IC1leGNfUTE0OworICAgICAgICAgICAgICAgIH0KKworCisgICAgICAgICAgICAgICAgLyogQWRk
IHByZWRpY3Rpb25zICovCisgICAgICAgICAgICAgICAgTFBDX2V4Y19RMTQgPSBzaWxrX0FERDMy
KCBleGNfUTE0LCBMVFBfcHJlZF9RMTQgKTsKKyAgICAgICAgICAgICAgICB4cV9RMTQgICAgICA9
IHNpbGtfQUREMzIoIExQQ19leGNfUTE0LCBMUENfcHJlZF9RMTQgKTsKKworICAgICAgICAgICAg
ICAgIC8qIFVwZGF0ZSBzdGF0ZXMgKi8KKyAgICAgICAgICAgICAgICBzTEZfQVJfc2hwX1ExNCAg
ICAgICAgID0gc2lsa19TVUIzMiggeHFfUTE0LCBuX0FSX1ExNCApOworICAgICAgICAgICAgICAg
IHBzU1NbIDEgXS5zTFRQX3NocF9RMTQgPSBzaWxrX1NVQjMyKCBzTEZfQVJfc2hwX1ExNCwgbl9M
Rl9RMTQgKTsKKyAgICAgICAgICAgICAgICBwc1NTWyAxIF0uTEZfQVJfUTE0ICAgID0gc0xGX0FS
X3NocF9RMTQ7CisgICAgICAgICAgICAgICAgcHNTU1sgMSBdLkxQQ19leGNfUTE0ICA9IExQQ19l
eGNfUTE0OworICAgICAgICAgICAgICAgIHBzU1NbIDEgXS54cV9RMTQgICAgICAgPSB4cV9RMTQ7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKnNtcGxfYnVmX2lkeCAgPSAoICpz
bXBsX2J1Zl9pZHggLSAxICkgJSBERUNJU0lPTl9ERUxBWTsKKyAgICAgICAgaWYoICpzbXBsX2J1
Zl9pZHggPCAwICkgKnNtcGxfYnVmX2lkeCArPSBERUNJU0lPTl9ERUxBWTsKKyAgICAgICAgbGFz
dF9zbXBsZV9pZHggPSAoICpzbXBsX2J1Zl9pZHggKyBkZWNpc2lvbkRlbGF5ICkgJSBERUNJU0lP
Tl9ERUxBWTsKKworICAgICAgICAvKiBGaW5kIHdpbm5lciAqLworICAgICAgICBSRG1pbl9RMTAg
PSBwc1NhbXBsZVN0YXRlWyAwIF1bIDAgXS5SRF9RMTA7CisgICAgICAgIFdpbm5lcl9pbmQgPSAw
OworICAgICAgICBmb3IoIGsgPSAxOyBrIDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkg
eworICAgICAgICAgICAgaWYoIHBzU2FtcGxlU3RhdGVbIGsgXVsgMCBdLlJEX1ExMCA8IFJEbWlu
X1ExMCApIHsKKyAgICAgICAgICAgICAgICBSRG1pbl9RMTAgID0gcHNTYW1wbGVTdGF0ZVsgayBd
WyAwIF0uUkRfUTEwOworICAgICAgICAgICAgICAgIFdpbm5lcl9pbmQgPSBrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogSW5jcmVhc2UgUkQgdmFsdWVzIG9mIGV4cGly
ZWQgc3RhdGVzICovCisgICAgICAgIFdpbm5lcl9yYW5kX3N0YXRlID0gcHNEZWxEZWNbIFdpbm5l
cl9pbmQgXS5SYW5kU3RhdGVbIGxhc3Rfc21wbGVfaWR4IF07CisgICAgICAgIGZvciggayA9IDA7
IGsgPCBuU3RhdGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7CisgICAgICAgICAgICBpZiggcHNE
ZWxEZWNbIGsgXS5SYW5kU3RhdGVbIGxhc3Rfc21wbGVfaWR4IF0gIT0gV2lubmVyX3JhbmRfc3Rh
dGUgKSB7CisgICAgICAgICAgICAgICAgcHNTYW1wbGVTdGF0ZVsgayBdWyAwIF0uUkRfUTEwID0g
c2lsa19BREQzMiggcHNTYW1wbGVTdGF0ZVsgayBdWyAwIF0uUkRfUTEwLCBzaWxrX2ludDMyX01B
WCA+PiA0ICk7CisgICAgICAgICAgICAgICAgcHNTYW1wbGVTdGF0ZVsgayBdWyAxIF0uUkRfUTEw
ID0gc2lsa19BREQzMiggcHNTYW1wbGVTdGF0ZVsgayBdWyAxIF0uUkRfUTEwLCBzaWxrX2ludDMy
X01BWCA+PiA0ICk7CisgICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHBzU2FtcGxlU3RhdGVb
IGsgXVsgMCBdLlJEX1ExMCA+PSAwICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvKiBGaW5kIHdvcnN0IGluIGZpcnN0IHNldCBhbmQgYmVzdCBpbiBzZWNvbmQgc2V0ICov
CisgICAgICAgIFJEbWF4X1ExMCAgPSBwc1NhbXBsZVN0YXRlWyAwIF1bIDAgXS5SRF9RMTA7Cisg
ICAgICAgIFJEbWluX1ExMCAgPSBwc1NhbXBsZVN0YXRlWyAwIF1bIDEgXS5SRF9RMTA7CisgICAg
ICAgIFJEbWF4X2luZCA9IDA7CisgICAgICAgIFJEbWluX2luZCA9IDA7CisgICAgICAgIGZvcigg
ayA9IDE7IGsgPCBuU3RhdGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7CisgICAgICAgICAgICAv
KiBmaW5kIHdvcnN0IGluIGZpcnN0IHNldCAqLworICAgICAgICAgICAgaWYoIHBzU2FtcGxlU3Rh
dGVbIGsgXVsgMCBdLlJEX1ExMCA+IFJEbWF4X1ExMCApIHsKKyAgICAgICAgICAgICAgICBSRG1h
eF9RMTAgID0gcHNTYW1wbGVTdGF0ZVsgayBdWyAwIF0uUkRfUTEwOworICAgICAgICAgICAgICAg
IFJEbWF4X2luZCA9IGs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBmaW5kIGJlc3Qg
aW4gc2Vjb25kIHNldCAqLworICAgICAgICAgICAgaWYoIHBzU2FtcGxlU3RhdGVbIGsgXVsgMSBd
LlJEX1ExMCA8IFJEbWluX1ExMCApIHsKKyAgICAgICAgICAgICAgICBSRG1pbl9RMTAgID0gcHNT
YW1wbGVTdGF0ZVsgayBdWyAxIF0uUkRfUTEwOworICAgICAgICAgICAgICAgIFJEbWluX2luZCA9
IGs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBSZXBsYWNlIGEgc3Rh
dGUgaWYgYmVzdCBmcm9tIHNlY29uZCBzZXQgb3V0cGVyZm9ybXMgd29yc3QgaW4gZmlyc3Qgc2V0
ICovCisgICAgICAgIGlmKCBSRG1pbl9RMTAgPCBSRG1heF9RMTAgKSB7CisgICAgICAgICAgICBz
aWxrX21lbWNweSggKCAob3B1c19pbnQzMiAqKSZwc0RlbERlY1sgUkRtYXhfaW5kIF0gKSArIGks
CisgICAgICAgICAgICAgICAgICAgICAgICAgKCAob3B1c19pbnQzMiAqKSZwc0RlbERlY1sgUkRt
aW5faW5kIF0gKSArIGksIHNpemVvZiggTlNRX2RlbF9kZWNfc3RydWN0ICkgLSBpICogc2l6ZW9m
KCBvcHVzX2ludDMyKSApOworICAgICAgICAgICAgc2lsa19tZW1jcHkoICZwc1NhbXBsZVN0YXRl
WyBSRG1heF9pbmQgXVsgMCBdLCAmcHNTYW1wbGVTdGF0ZVsgUkRtaW5faW5kIF1bIDEgXSwgc2l6
ZW9mKCBOU1Ffc2FtcGxlX3N0cnVjdCApICk7CisgICAgICAgIH0KKworICAgICAgICAvKiBXcml0
ZSBzYW1wbGVzIGZyb20gd2lubmVyIHRvIG91dHB1dCBhbmQgbG9uZy10ZXJtIGZpbHRlciBzdGF0
ZXMgKi8KKyAgICAgICAgcHNERCA9ICZwc0RlbERlY1sgV2lubmVyX2luZCBdOworICAgICAgICBp
Ziggc3ViZnIgPiAwIHx8IGkgPj0gZGVjaXNpb25EZWxheSApIHsKKyAgICAgICAgICAgIHB1bHNl
c1sgIGkgLSBkZWNpc2lvbkRlbGF5IF0gPSAob3B1c19pbnQ4KXNpbGtfUlNISUZUX1JPVU5EKCBw
c0RELT5RX1ExMFsgbGFzdF9zbXBsZV9pZHggXSwgMTAgKTsKKyAgICAgICAgICAgIHhxWyBpIC0g
ZGVjaXNpb25EZWxheSBdID0gKG9wdXNfaW50MTYpc2lsa19TQVQxNiggc2lsa19SU0hJRlRfUk9V
TkQoCisgICAgICAgICAgICAgICAgc2lsa19TTVVMV1coIHBzREQtPlhxX1ExNFsgbGFzdF9zbXBs
ZV9pZHggXSwgZGVsYXllZEdhaW5fUTEwWyBsYXN0X3NtcGxlX2lkeCBdICksIDggKSApOworICAg
ICAgICAgICAgTlNRLT5zTFRQX3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIGRlY2lz
aW9uRGVsYXkgXSA9IHBzREQtPlNoYXBlX1ExNFsgbGFzdF9zbXBsZV9pZHggXTsKKyAgICAgICAg
ICAgIHNMVFBfUTE1WyAgICAgICAgICBOU1EtPnNMVFBfYnVmX2lkeCAgICAgLSBkZWNpc2lvbkRl
bGF5IF0gPSBwc0RELT5QcmVkX1ExNVsgIGxhc3Rfc21wbGVfaWR4IF07CisgICAgICAgIH0KKyAg
ICAgICAgTlNRLT5zTFRQX3NocF9idWZfaWR4Kys7CisgICAgICAgIE5TUS0+c0xUUF9idWZfaWR4
Kys7CisKKyAgICAgICAgLyogVXBkYXRlIHN0YXRlcyAqLworICAgICAgICBmb3IoIGsgPSAwOyBr
IDwgblN0YXRlc0RlbGF5ZWREZWNpc2lvbjsgaysrICkgeworICAgICAgICAgICAgcHNERCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICZwc0RlbERlY1sgayBdOworICAgICAg
ICAgICAgcHNTUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICZwc1NhbXBs
ZVN0YXRlWyBrIF1bIDAgXTsKKyAgICAgICAgICAgIHBzREQtPkxGX0FSX1ExNCAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBwc1NTLT5MRl9BUl9RMTQ7CisgICAgICAgICAgICBwc0RELT5zTFBD
X1ExNFsgTlNRX0xQQ19CVUZfTEVOR1RIICsgaSBdID0gcHNTUy0+eHFfUTE0OworICAgICAgICAg
ICAgcHNERC0+WHFfUTE0WyAgICAqc21wbF9idWZfaWR4IF0gICAgICAgICA9IHBzU1MtPnhxX1Ex
NDsKKyAgICAgICAgICAgIHBzREQtPlFfUTEwWyAgICAgKnNtcGxfYnVmX2lkeCBdICAgICAgICAg
PSBwc1NTLT5RX1ExMDsKKyAgICAgICAgICAgIHBzREQtPlByZWRfUTE1WyAgKnNtcGxfYnVmX2lk
eCBdICAgICAgICAgPSBzaWxrX0xTSElGVDMyKCBwc1NTLT5MUENfZXhjX1ExNCwgMSApOworICAg
ICAgICAgICAgcHNERC0+U2hhcGVfUTE0WyAqc21wbF9idWZfaWR4IF0gICAgICAgICA9IHBzU1Mt
PnNMVFBfc2hwX1ExNDsKKyAgICAgICAgICAgIHBzREQtPlNlZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBzaWxrX0FERDMyX292Zmx3KCBwc0RELT5TZWVkLCBzaWxrX1JTSElGVF9S
T1VORCggcHNTUy0+UV9RMTAsIDEwICkgKTsKKyAgICAgICAgICAgIHBzREQtPlJhbmRTdGF0ZVsg
KnNtcGxfYnVmX2lkeCBdICAgICAgICAgPSBwc0RELT5TZWVkOworICAgICAgICAgICAgcHNERC0+
UkRfUTEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBzU1MtPlJEX1ExMDsKKyAgICAg
ICAgfQorICAgICAgICBkZWxheWVkR2Fpbl9RMTBbICAgICAqc21wbF9idWZfaWR4IF0gICAgICAg
ICA9IEdhaW5fUTEwOworICAgIH0KKyAgICAvKiBVcGRhdGUgTFBDIHN0YXRlcyAqLworICAgIGZv
ciggayA9IDA7IGsgPCBuU3RhdGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7CisgICAgICAgIHBz
REQgPSAmcHNEZWxEZWNbIGsgXTsKKyAgICAgICAgc2lsa19tZW1jcHkoIHBzREQtPnNMUENfUTE0
LCAmcHNERC0+c0xQQ19RMTRbIGxlbmd0aCBdLCBOU1FfTFBDX0JVRl9MRU5HVEggKiBzaXplb2Yo
IG9wdXNfaW50MzIgKSApOworICAgIH0KKyAgICBSRVNUT1JFX1NUQUNLOworfQorCitzdGF0aWMg
T1BVU19JTkxJTkUgdm9pZCBzaWxrX25zcV9kZWxfZGVjX3NjYWxlX3N0YXRlc19zc2U0XzEoCisg
ICAgY29uc3Qgc2lsa19lbmNvZGVyX3N0YXRlICpwc0VuY0MsICAgICAgICAgICAgICAgLyogSSAg
ICBFbmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHNpbGtfbnNxX3N0
YXRlICAgICAgKk5TUSwgICAgICAgICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBOU1FfZGVsX2RlY19zdHJ1Y3QgIHBzRGVs
RGVjW10sICAgICAgICAgICAgICAgICAvKiBJL08gIERlbGF5ZWQgZGVjaXNpb24gc3RhdGVzICAg
ICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQzMiAgICB4X1EzW10sICAgICAgICAgICAg
ICAgICAgICAgLyogSSAgICBJbnB1dCBpbiBRMyAgICAgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIG9wdXNfaW50MzIgICAgICAgICAgeF9zY19RMTBbXSwgICAgICAgICAgICAgICAgIC8qIE8g
ICAgSW5wdXQgc2NhbGVkIHdpdGggMS9HYWluIGluIFExMCAgICAgKi8KKyAgICBjb25zdCBvcHVz
X2ludDE2ICAgIHNMVFBbXSwgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIFJlLXdoaXRlbmVk
IExUUCBzdGF0ZSBpbiBRMCAgICAgICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBzTFRQ
X1ExNVtdLCAgICAgICAgICAgICAgICAgLyogTyAgICBMVFAgc3RhdGUgbWF0Y2hpbmcgc2NhbGVk
IGlucHV0ICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgc3ViZnIsICAgICAgICAgICAg
ICAgICAgICAgIC8qIEkgICAgU3ViZnJhbWUgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgKi8K
KyAgICBvcHVzX2ludCAgICAgICAgICAgIG5TdGF0ZXNEZWxheWVkRGVjaXNpb24sICAgICAvKiBJ
ICAgIE51bWJlciBvZiBkZWwgZGVjIHN0YXRlcyAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1
c19pbnQgICAgICBMVFBfc2NhbGVfUTE0LCAgICAgICAgICAgICAgLyogSSAgICBMVFAgc3RhdGUg
c2NhbGluZyAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgR2Fp
bnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgIHBpdGNoTFsgTUFYX05CX1NV
QkZSIF0sICAgICAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgY29uc3Qgb3B1c19pbnQgICAgICBzaWduYWxfdHlwZSwgICAgICAgICAgICAgICAgLyog
SSAgICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9w
dXNfaW50ICAgICAgZGVjaXNpb25EZWxheSAgICAgICAgICAgICAgIC8qIEkgICAgRGVjaXNpb24g
ZGVsYXkgICAgICAgICAgICAgICAgICAgICAgKi8KKykKK3sKKyAgICBvcHVzX2ludCAgICAgICAg
ICAgIGksIGssIGxhZzsKKyAgICBvcHVzX2ludDMyICAgICAgICAgIGdhaW5fYWRqX1ExNiwgaW52
X2dhaW5fUTMxLCBpbnZfZ2Fpbl9RMjM7CisgICAgTlNRX2RlbF9kZWNfc3RydWN0ICAqcHNERDsK
KyAgICBfX20xMjhpIHhtbV9pbnZfZ2Fpbl9RMjMsIHhtbV94X1EzX3gyeDAsIHhtbV94X1EzX3gz
eDE7CisKKyAgICBsYWcgICAgICAgICAgPSBwaXRjaExbIHN1YmZyIF07CisgICAgaW52X2dhaW5f
UTMxID0gc2lsa19JTlZFUlNFMzJfdmFyUSggc2lsa19tYXgoIEdhaW5zX1ExNlsgc3ViZnIgXSwg
MSApLCA0NyApOworCisgICAgc2lsa19hc3NlcnQoIGludl9nYWluX1EzMSAhPSAwICk7CisKKyAg
ICAvKiBDYWxjdWxhdGUgZ2FpbiBhZGp1c3RtZW50IGZhY3RvciAqLworICAgIGlmKCBHYWluc19R
MTZbIHN1YmZyIF0gIT0gTlNRLT5wcmV2X2dhaW5fUTE2ICkgeworICAgICAgICBnYWluX2Fkal9R
MTYgPSAgc2lsa19ESVYzMl92YXJRKCBOU1EtPnByZXZfZ2Fpbl9RMTYsIEdhaW5zX1ExNlsgc3Vi
ZnIgXSwgMTYgKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnYWluX2Fkal9RMTYgPSAob3B1c19p
bnQzMikxIDw8IDE2OworICAgIH0KKworICAgIC8qIFNjYWxlIGlucHV0ICovCisgICAgaW52X2dh
aW5fUTIzID0gc2lsa19SU0hJRlRfUk9VTkQoIGludl9nYWluX1EzMSwgOCApOworCisgICAgLyog
cHJlcGFyZSBpbnZfZ2Fpbl9RMjMgaW4gcGFja2VkIDQgMzItYml0cyAqLworICAgIHhtbV9pbnZf
Z2Fpbl9RMjMgPSBfbW1fc2V0MV9lcGkzMihpbnZfZ2Fpbl9RMjMpOworCisgICAgZm9yKCBpID0g
MDsgaSA8IHBzRW5jQy0+c3ViZnJfbGVuZ3RoIC0gMzsgaSArPSA0ICkgeworICAgICAgICB4bW1f
eF9RM194MngwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmKHhfUTNbIGkgXSApICkg
KTsKKyAgICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyovCisgICAgICAgIHhtbV94
X1EzX3gzeDEgPSBfbW1fc2h1ZmZsZV9lcGkzMiggeG1tX3hfUTNfeDJ4MCwgX01NX1NIVUZGTEUo
IDAsIDMsIDIsIDEgKSApOworCisgICAgICAgIHhtbV94X1EzX3gyeDAgPSBfbW1fbXVsX2VwaTMy
KCB4bW1feF9RM194MngwLCB4bW1faW52X2dhaW5fUTIzICk7CisgICAgICAgIHhtbV94X1EzX3gz
eDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9RM194M3gxLCB4bW1faW52X2dhaW5fUTIzICk7CisK
KyAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1feF9RM194MngwLCAx
NiApOworICAgICAgICB4bW1feF9RM194M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV94X1EzX3gz
eDEsIDE2ICk7CisKKyAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9ibGVuZF9lcGkxNiggeG1t
X3hfUTNfeDJ4MCwgeG1tX3hfUTNfeDN4MSwgMHhDQyApOworCisgICAgICAgIF9tbV9zdG9yZXVf
c2kxMjgoIChfX20xMjhpICopKCYoeF9zY19RMTBbIGkgXSkpLCB4bW1feF9RM194MngwICk7Cisg
ICAgfQorCisgICAgZm9yKCA7IGkgPCBwc0VuY0MtPnN1YmZyX2xlbmd0aDsgaSsrICkgeworICAg
ICAgICB4X3NjX1ExMFsgaSBdID0gc2lsa19TTVVMV1coIHhfUTNbIGkgXSwgaW52X2dhaW5fUTIz
ICk7CisgICAgfQorCisgICAgLyogU2F2ZSBpbnZlcnNlIGdhaW4gKi8KKyAgICBOU1EtPnByZXZf
Z2Fpbl9RMTYgPSBHYWluc19RMTZbIHN1YmZyIF07CisKKyAgICAvKiBBZnRlciByZXdoaXRlbmlu
ZyB0aGUgTFRQIHN0YXRlIGlzIHVuLXNjYWxlZCwgc28gc2NhbGUgd2l0aCBpbnZfZ2Fpbl9RMTYg
Ki8KKyAgICBpZiggTlNRLT5yZXdoaXRlX2ZsYWcgKSB7CisgICAgICAgIGlmKCBzdWJmciA9PSAw
ICkgeworICAgICAgICAgICAgLyogRG8gTFRQIGRvd25zY2FsaW5nICovCisgICAgICAgICAgICBp
bnZfZ2Fpbl9RMzEgPSBzaWxrX0xTSElGVCggc2lsa19TTVVMV0IoIGludl9nYWluX1EzMSwgTFRQ
X3NjYWxlX1ExNCApLCAyICk7CisgICAgICAgIH0KKyAgICAgICAgZm9yKCBpID0gTlNRLT5zTFRQ
X2J1Zl9pZHggLSBsYWcgLSBMVFBfT1JERVIgLyAyOyBpIDwgTlNRLT5zTFRQX2J1Zl9pZHg7IGkr
KyApIHsKKyAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBpIDwgTUFYX0ZSQU1FX0xFTkdUSCApOwor
ICAgICAgICAgICAgc0xUUF9RMTVbIGkgXSA9IHNpbGtfU01VTFdCKCBpbnZfZ2Fpbl9RMzEsIHNM
VFBbIGkgXSApOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQWRqdXN0IGZvciBjaGFuZ2lu
ZyBnYWluICovCisgICAgaWYoIGdhaW5fYWRqX1ExNiAhPSAob3B1c19pbnQzMikxIDw8IDE2ICkg
eworICAgICAgICAvKiBTY2FsZSBsb25nLXRlcm0gc2hhcGluZyBzdGF0ZSAqLworICAgICAgICB7
CisgICAgICAgICAgICBfX20xMjhpIHhtbV9nYWluX2Fkal9RMTYsIHhtbV9zTFRQX3NocF9RMTRf
eDJ4MCwgeG1tX3NMVFBfc2hwX1ExNF94M3gxOworCisgICAgICAgICAgICAvKiBwcmVwYXJlIGdh
aW5fYWRqX1ExNiBpbiBwYWNrZWQgNCAzMi1iaXRzICovCisgICAgICAgICAgICB4bW1fZ2Fpbl9h
ZGpfUTE2ID0gX21tX3NldDFfZXBpMzIoIGdhaW5fYWRqX1ExNiApOworCisgICAgICAgICAgICBm
b3IoIGkgPSBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOyBp
IDwgTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gMzsgaSArPSA0ICkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgPSBfbW1fbG9hZHVfc2kxMjgoIChf
X20xMjhpICopKCYoTlNRLT5zTFRQX3NocF9RMTRbIGkgXSApICkgKTsKKyAgICAgICAgICAgICAg
ICAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzKi8KKyAgICAgICAgICAgICAgICB4bW1fc0xU
UF9zaHBfUTE0X3gzeDEgPSBfbW1fc2h1ZmZsZV9lcGkzMiggeG1tX3NMVFBfc2hwX1ExNF94Mngw
LCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7CisKKyAgICAgICAgICAgICAgICB4bW1fc0xU
UF9zaHBfUTE0X3gyeDAgPSBfbW1fbXVsX2VwaTMyKCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIHht
bV9nYWluX2Fkal9RMTYgKTsKKyAgICAgICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gzeDEg
PSBfbW1fbXVsX2VwaTMyKCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIHhtbV9nYWluX2Fkal9RMTYg
KTsKKworICAgICAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCA9IF9tbV9zcmxpX2Vw
aTY0KCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIDE2ICk7CisgICAgICAgICAgICAgICAgeG1tX3NM
VFBfc2hwX1ExNF94M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV9zTFRQX3NocF9RMTRfeDN4MSwg
MTYgKTsKKworICAgICAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCA9IF9tbV9ibGVu
ZF9lcGkxNiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIDB4
Q0MgKTsKKworICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopKCYo
TlNRLT5zTFRQX3NocF9RMTRbIGkgXSApICksIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IoIDsgaSA8IE5TUS0+c0xUUF9zaHBfYnVmX2lk
eDsgaSsrICkgeworICAgICAgICAgICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gPSBzaWxr
X1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBOU1EtPnNMVFBfc2hwX1ExNFsgaSBdICk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8qIFNjYWxlIGxvbmctdGVybSBwcmVkaWN0aW9uIHN0YXRl
ICovCisgICAgICAgICAgICBpZiggc2lnbmFsX3R5cGUgPT0gVFlQRV9WT0lDRUQgJiYgTlNRLT5y
ZXdoaXRlX2ZsYWcgPT0gMCApIHsKKyAgICAgICAgICAgICAgICBmb3IoIGkgPSBOU1EtPnNMVFBf
YnVmX2lkeCAtIGxhZyAtIExUUF9PUkRFUiAvIDI7IGkgPCBOU1EtPnNMVFBfYnVmX2lkeCAtIGRl
Y2lzaW9uRGVsYXk7IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgc0xUUF9RMTVbIGkgXSA9
IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIHNMVFBfUTE1WyBpIF0gKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciggayA9IDA7IGsgPCBuU3Rh
dGVzRGVsYXllZERlY2lzaW9uOyBrKysgKSB7CisgICAgICAgICAgICAgICAgcHNERCA9ICZwc0Rl
bERlY1sgayBdOworCisgICAgICAgICAgICAgICAgLyogU2NhbGUgc2NhbGFyIHN0YXRlcyAqLwor
ICAgICAgICAgICAgICAgIHBzREQtPkxGX0FSX1ExNCA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9R
MTYsIHBzREQtPkxGX0FSX1ExNCApOworCisgICAgICAgICAgICAgICAgLyogU2NhbGUgc2hvcnQt
dGVybSBwcmVkaWN0aW9uIGFuZCBzaGFwaW5nIHN0YXRlcyAqLworICAgICAgICAgICAgICAgIGZv
ciggaSA9IDA7IGkgPCBOU1FfTFBDX0JVRl9MRU5HVEg7IGkrKyApIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHNERC0+c0xQQ19RMTRbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIHBz
REQtPnNMUENfUTE0WyBpIF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Zm9yKCBpID0gMDsgaSA8IE1BWF9TSEFQRV9MUENfT1JERVI7IGkrKyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHNERC0+c0FSMl9RMTRbIGkgXSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYs
IHBzREQtPnNBUjJfUTE0WyBpIF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZm9yKCBpID0gMDsgaSA8IERFQ0lTSU9OX0RFTEFZOyBpKysgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHBzREQtPlByZWRfUTE1WyAgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwg
cHNERC0+UHJlZF9RMTVbICBpIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgcHNERC0+U2hhcGVf
UTE0WyBpIF0gPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBwc0RELT5TaGFwZV9RMTRbIGkg
XSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvc2lsay94ODYvTlNRX3NzZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1Ffc3NlLmMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhOWU2ZTk2Y2ZhYjg1YzQ3YWVkZDUyYWRjYTVl
YzRiNDYyYWI4MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL3g4Ni9OU1Ffc3NlLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3MTkgKzAsMCBAQAotLyog
Q29weXJpZ2h0IChjKSAyMDE0LCBDaXNjbyBTeXN0ZW1zLCBJTkMKLSAgIFdyaXR0ZW4gYnkgWGlh
bmdNaW5nWmh1IFdlaVpob3UgTWluUGVuZyBZYW5XYW5nCi0KLSAgIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSAgIC0gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSAgIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAgIGBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKLSAgIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gICBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
Ci0gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORwotICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZmRlZiBIQVZF
X0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHhtbWlu
dHJpbi5oPgotI2luY2x1ZGUgPGVtbWludHJpbi5oPgotI2luY2x1ZGUgPHNtbWludHJpbi5oPgot
I2luY2x1ZGUgIm1haW4uaCIKLSNpbmNsdWRlICJjZWx0L3g4Ni94ODZjcHUuaCIKLSNpbmNsdWRl
ICJzdGFja19hbGxvYy5oIgotCi1zdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxrX25zcV9zY2Fs
ZV9zdGF0ZXNfc3NlNF8xKAotICAgIGNvbnN0IHNpbGtfZW5jb2Rlcl9zdGF0ZSAqcHNFbmNDLCAg
ICAgICAgICAgLyogSSAgICBFbmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAgICovCi0gICAg
c2lsa19uc3Ffc3RhdGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBz
dGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgIHhf
UTNbXSwgICAgICAgICAgICAgICAgIC8qIEkgICAgaW5wdXQgaW4gUTMgICAgICAgICAgICAgICAg
ICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgeF9zY19RMTBbXSwgICAgICAgICAgICAg
LyogTyAgICBpbnB1dCBzY2FsZWQgd2l0aCAxL0dhaW4gICAgICAgICovCi0gICAgY29uc3Qgb3B1
c19pbnQxNiAgICBzTFRQW10sICAgICAgICAgICAgICAgICAvKiBJICAgIHJlLXdoaXRlbmVkIExU
UCBzdGF0ZSBpbiBRMCAgICAgKi8KLSAgICBvcHVzX2ludDMyICAgICAgICAgIHNMVFBfUTE1W10s
ICAgICAgICAgICAgIC8qIE8gICAgTFRQIHN0YXRlIG1hdGNoaW5nIHNjYWxlZCBpbnB1dCAqLwot
ICAgIG9wdXNfaW50ICAgICAgICAgICAgc3ViZnIsICAgICAgICAgICAgICAgICAgLyogSSAgICBz
dWJmcmFtZSBudW1iZXIgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAg
ICBMVFBfc2NhbGVfUTE0LCAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgIEdhaW5zX1ExNlsgTUFYX05CX1NV
QkZSIF0sIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0
IG9wdXNfaW50ICAgICAgcGl0Y2hMWyBNQVhfTkJfU1VCRlIgXSwgLyogSSAgICBQaXRjaCBsYWcg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICBzaWduYWxf
dHlwZSAgICAgICAgICAgICAvKiBJICAgIFNpZ25hbCB0eXBlICAgICAgICAgICAgICAgICAgICAg
Ki8KLSk7Ci0KLXN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVfcXVhbnRp
emVyXzEwXzE2X3NzZTRfMSgKLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1EsICAgICAgICAg
ICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAqLwotICAg
IG9wdXNfaW50ICAgICAgICAgICAgc2lnbmFsVHlwZSwgICAgICAgICAgICAgLyogSSAgICBTaWdu
YWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICB4
X3NjX1ExMFtdLCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICBvcHVzX2ludDggICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAgICAgICAg
IC8qIE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50
MTYgICAgICAgICAgeHFbXSwgICAgICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAgICBzTFRQX1ExNVtd
LCAgICAgICAgICAgICAvKiBJL08gIExUUCBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgKi8K
LSAgICBjb25zdCBvcHVzX2ludDE2ICAgIGFfUTEyW10sICAgICAgICAgICAgICAgIC8qIEkgICAg
U2hvcnQgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYg
ICAgYl9RMTRbXSwgICAgICAgICAgICAgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGljdGlvbiBj
b2VmcyAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICBBUl9zaHBfUTEzW10sICAgICAg
ICAgICAvKiBJICAgIE5vaXNlIHNoYXBpbmcgQVIgY29lZnMgICAgICAgICAgKi8KLSAgICBvcHVz
X2ludCAgICAgICAgICAgIGxhZywgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgUGl0Y2ggbGFn
ICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgSGFybVNo
YXBlRklSUGFja2VkX1ExNCwgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICBUaWx0X1ExNCwgICAgICAgICAgICAgICAvKiBJ
ICAgIFNwZWN0cmFsIHRpbHQgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAg
ICAgICAgIExGX3NocF9RMTQsICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgR2Fpbl9RMTYsICAgICAg
ICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAg
b3B1c19pbnQgICAgICAgICAgICBvZmZzZXRfUTEwLCAgICAgICAgICAgICAvKiBJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIGxl
bmd0aCwgICAgICAgICAgICAgICAgIC8qIEkgICAgSW5wdXQgbGVuZ3RoICAgICAgICAgICAgICAg
ICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgdGFibGVbXVs0XSAgICAgICAgICAgICAg
LyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0pOwotCi12b2lkIHNp
bGtfTlNRX3NzZTRfMSgKLSAgICBjb25zdCBzaWxrX2VuY29kZXJfc3RhdGUgICAgKnBzRW5jQywg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICAgIEVuY29kZXIgU3RhdGUg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICAgICAgICAgKk5T
USwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0
ZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBTaWRlSW5mb0luZGljZXMgICAgICAgICAg
ICAgKnBzSW5kaWNlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJL08gIFF1
YW50aXphdGlvbiBJbmRpY2VzICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAg
ICAgICAgICAgeF9RM1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ
ICAgIFByZWZpbHRlcmVkIGlucHV0IHNpZ25hbCAgICAgICAgKi8KLSAgICBvcHVzX2ludDggICAg
ICAgICAgICAgICAgICAgcHVsc2VzW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBPICAgIFF1YW50aXplZCBwdWxzZSBzaWduYWwgICAgICAgICAgKi8KLSAgICBjb25zdCBv
cHVzX2ludDE2ICAgICAgICAgICAgUHJlZENvZWZfUTEyWyAyICogTUFYX0xQQ19PUkRFUiBdLCAg
ICAgICAgICAvKiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgKi8KLSAgICBj
b25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgTFRQQ29lZl9RMTRbIExUUF9PUkRFUiAqIE1BWF9O
Ql9TVUJGUiBdLCAgICAvKiBJICAgIExvbmcgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAgKi8K
LSAgICBjb25zdCBvcHVzX2ludDE2ICAgICAgICAgICAgQVIyX1ExM1sgTUFYX05CX1NVQkZSICog
TUFYX1NIQVBFX0xQQ19PUkRFUiBdLCAvKiBJIE5vaXNlIHNoYXBpbmcgY29lZnMgICAgICAgICAg
ICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgSGFybVNoYXBlR2Fpbl9RMTRb
IE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAvKiBJICAgIExvbmcgdGVybSBzaGFwaW5nIGNvZWZz
ICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAgICAgICAgVGlsdF9RMTRbIE1B
WF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAgICAvKiBJICAgIFNwZWN0cmFsIHRpbHQgICAg
ICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgICAgICAgICAgTEZfc2hw
X1ExNFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAgICAgICAvKiBJICAgIExvdyBmcmVxdWVu
Y3kgc2hhcGluZyBjb2VmcyAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDMyICAgICAgICAgICAg
R2FpbnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAvKiBJICAgIFF1YW50
aXphdGlvbiBzdGVwIHNpemVzICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgICAg
ICAgICAgcGl0Y2hMWyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAgICAvKiBJICAg
IFBpdGNoIGxhZ3MgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAg
ICAgICAgICAgICAgTGFtYmRhX1ExMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBJICAgIFJhdGUvZGlzdG9ydGlvbiB0cmFkZW9mZiAgICAgICAgKi8KLSAgICBjb25zdCBvcHVz
X2ludCAgICAgICAgICAgICAgTFRQX3NjYWxlX1ExNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBJICAgIExUUCBzdGF0ZSBzY2FsaW5nICAgICAgICAgICAgICAgKi8KLSkKLXsKLSAg
ICBvcHVzX2ludCAgICAgICAgICAgIGssIGxhZywgc3RhcnRfaWR4LCBMU0ZfaW50ZXJwb2xhdGlv
bl9mbGFnOwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgKkFfUTEyLCAqQl9RMTQsICpBUl9zaHBf
UTEzOwotICAgIG9wdXNfaW50MTYgICAgICAgICAgKnB4cTsKLSAgICBWQVJERUNMKCBvcHVzX2lu
dDMyLCBzTFRQX1ExNSApOwotICAgIFZBUkRFQ0woIG9wdXNfaW50MTYsIHNMVFAgKTsKLSAgICBv
cHVzX2ludDMyICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQ7Ci0gICAgb3B1c19pbnQg
ICAgICAgICAgICBvZmZzZXRfUTEwOwotICAgIFZBUkRFQ0woIG9wdXNfaW50MzIsIHhfc2NfUTEw
ICk7Ci0KLSAgICBvcHVzX2ludDMyICAgdGFibGVbIDY0IF1bIDQgXTsKLSAgICBvcHVzX2ludDMy
ICAgdG1wMTsKLSAgICBvcHVzX2ludDMyICAgcTFfUTEwLCBxMl9RMTAsIHJkMV9RMjAsIHJkMl9R
MjA7Ci0KLSAgICBTQVZFX1NUQUNLOwotCi0gICAgTlNRLT5yYW5kX3NlZWQgPSBwc0luZGljZXMt
PlNlZWQ7Ci0KLSAgICAvKiBTZXQgdW52b2ljZWQgbGFnIHRvIHRoZSBwcmV2aW91cyBvbmUsIG92
ZXJ3cml0ZSBsYXRlciBmb3Igdm9pY2VkICovCi0gICAgbGFnID0gTlNRLT5sYWdQcmV2OwotCi0g
ICAgc2lsa19hc3NlcnQoIE5TUS0+cHJldl9nYWluX1ExNiAhPSAwICk7Ci0KLSAgICBvZmZzZXRf
UTEwID0gc2lsa19RdWFudGl6YXRpb25fT2Zmc2V0c19RMTBbIHBzSW5kaWNlcy0+c2lnbmFsVHlw
ZSA+PiAxIF1bIHBzSW5kaWNlcy0+cXVhbnRPZmZzZXRUeXBlIF07Ci0KLSAgICAvKiAwICovCi0g
ICAgcTFfUTEwICA9IG9mZnNldF9RMTA7Ci0gICAgcTJfUTEwICA9IG9mZnNldF9RMTAgKyAoIDEw
MjQgLSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICk7Ci0gICAgcmQxX1EyMCA9IHExX1ExMCAqIExh
bWJkYV9RMTA7Ci0gICAgcmQyX1EyMCA9IHEyX1ExMCAqIExhbWJkYV9RMTA7Ci0KLSAgICB0YWJs
ZVsgMzIgXVsgMCBdID0gcTFfUTEwOwotICAgIHRhYmxlWyAzMiBdWyAxIF0gPSBxMl9RMTA7Ci0g
ICAgdGFibGVbIDMyIF1bIDIgXSA9IDIgKiAocTFfUTEwIC0gcTJfUTEwKTsKLSAgICB0YWJsZVsg
MzIgXVsgMyBdID0gKHJkMV9RMjAgLSByZDJfUTIwKSArIChxMV9RMTAgKiBxMV9RMTAgLSBxMl9R
MTAgKiBxMl9RMTApOwotCi0gICAgLyogLTEgKi8KLSAgICBxMV9RMTAgID0gb2Zmc2V0X1ExMCAt
ICggMTAyNCAtIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKTsKLSAgICBxMl9RMTAgID0gb2Zmc2V0
X1ExMDsKLSAgICByZDFfUTIwID0gLSBxMV9RMTAgKiBMYW1iZGFfUTEwOwotICAgIHJkMl9RMjAg
PSBxMl9RMTAgKiBMYW1iZGFfUTEwOwotCi0gICAgdGFibGVbIDMxIF1bIDAgXSA9IHExX1ExMDsK
LSAgICB0YWJsZVsgMzEgXVsgMSBdID0gcTJfUTEwOwotICAgIHRhYmxlWyAzMSBdWyAyIF0gPSAy
ICogKHExX1ExMCAtIHEyX1ExMCk7Ci0gICAgdGFibGVbIDMxIF1bIDMgXSA9IChyZDFfUTIwIC0g
cmQyX1EyMCkgKyAocTFfUTEwICogcTFfUTEwIC0gcTJfUTEwICogcTJfUTEwKTsKLQotICAgIC8q
ID4gMCAqLwotICAgIGZvciAoayA9IDE7IGsgPD0gMzE7IGsrKykKLSAgICB7Ci0gICAgICAgIHRt
cDEgPSBvZmZzZXRfUTEwICsgc2lsa19MU0hJRlQoIGssIDEwICk7Ci0KLSAgICAgICAgcTFfUTEw
ICA9IHRtcDEgLSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwOwotICAgICAgICBxMl9RMTAgID0gdG1w
MSAtIFFVQU5UX0xFVkVMX0FESlVTVF9RMTAgKyAxMDI0OwotICAgICAgICByZDFfUTIwID0gcTFf
UTEwICogTGFtYmRhX1ExMDsKLSAgICAgICAgcmQyX1EyMCA9IHEyX1ExMCAqIExhbWJkYV9RMTA7
Ci0KLSAgICAgICAgdGFibGVbIDMyICsgayBdWyAwIF0gPSBxMV9RMTA7Ci0gICAgICAgIHRhYmxl
WyAzMiArIGsgXVsgMSBdID0gcTJfUTEwOwotICAgICAgICB0YWJsZVsgMzIgKyBrIF1bIDIgXSA9
IDIgKiAocTFfUTEwIC0gcTJfUTEwKTsKLSAgICAgICAgdGFibGVbIDMyICsgayBdWyAzIF0gPSAo
cmQxX1EyMCAtIHJkMl9RMjApICsgKHExX1ExMCAqIHExX1ExMCAtIHEyX1ExMCAqIHEyX1ExMCk7
Ci0gICAgfQotCi0gICAgLyogPCAtMSAqLwotICAgIGZvciAoayA9IC0zMjsgayA8PSAtMjsgaysr
KQotICAgIHsKLSAgICAgICAgdG1wMSA9IG9mZnNldF9RMTAgKyBzaWxrX0xTSElGVCggaywgMTAg
KTsKLQotICAgICAgICBxMV9RMTAgID0gdG1wMSArIFFVQU5UX0xFVkVMX0FESlVTVF9RMTA7Ci0g
ICAgICAgIHEyX1ExMCAgPSB0bXAxICsgUVVBTlRfTEVWRUxfQURKVVNUX1ExMCArIDEwMjQ7Ci0g
ICAgICAgIHJkMV9RMjAgPSAtIHExX1ExMCAqIExhbWJkYV9RMTA7Ci0gICAgICAgIHJkMl9RMjAg
PSAtIHEyX1ExMCAqIExhbWJkYV9RMTA7Ci0KLSAgICAgICAgdGFibGVbIDMyICsgayBdWyAwIF0g
PSBxMV9RMTA7Ci0gICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMSBdID0gcTJfUTEwOwotICAgICAg
ICB0YWJsZVsgMzIgKyBrIF1bIDIgXSA9IDIgKiAocTFfUTEwIC0gcTJfUTEwKTsKLSAgICAgICAg
dGFibGVbIDMyICsgayBdWyAzIF0gPSAocmQxX1EyMCAtIHJkMl9RMjApICsgKHExX1ExMCAqIHEx
X1ExMCAtIHEyX1ExMCAqIHEyX1ExMCk7Ci0gICAgfQotCi0gICAgaWYoIHBzSW5kaWNlcy0+TkxT
RkludGVycENvZWZfUTIgPT0gNCApIHsKLSAgICAgICAgTFNGX2ludGVycG9sYXRpb25fZmxhZyA9
IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTFNGX2ludGVycG9sYXRpb25fZmxhZyA9IDE7Ci0g
ICAgfQotCi0gICAgQUxMT0MoIHNMVFBfUTE1LAotICAgICAgICAgICBwc0VuY0MtPmx0cF9tZW1f
bGVuZ3RoICsgcHNFbmNDLT5mcmFtZV9sZW5ndGgsIG9wdXNfaW50MzIgKTsKLSAgICBBTExPQygg
c0xUUCwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCArIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCBvcHVz
X2ludDE2ICk7Ci0gICAgQUxMT0MoIHhfc2NfUTEwLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCwgb3B1
c19pbnQzMiApOwotICAgIC8qIFNldCB1cCBwb2ludGVycyB0byBzdGFydCBvZiBzdWIgZnJhbWUg
Ki8KLSAgICBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggPSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOwot
ICAgIE5TUS0+c0xUUF9idWZfaWR4ICAgICA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7Ci0gICAg
cHhxICAgICAgICAgICAgICAgICAgID0gJk5TUS0+eHFbIHBzRW5jQy0+bHRwX21lbV9sZW5ndGgg
XTsKLSAgICBmb3IoIGsgPSAwOyBrIDwgcHNFbmNDLT5uYl9zdWJmcjsgaysrICkgewotICAgICAg
ICBBX1ExMiAgICAgID0gJlByZWRDb2VmX1ExMlsgKCggayA+PiAxICkgfCAoIDEgLSBMU0ZfaW50
ZXJwb2xhdGlvbl9mbGFnICkpICogTUFYX0xQQ19PUkRFUiBdOwotICAgICAgICBCX1ExNCAgICAg
ID0gJkxUUENvZWZfUTE0WyBrICogTFRQX09SREVSIF07Ci0gICAgICAgIEFSX3NocF9RMTMgPSAm
QVIyX1ExM1sgICAgIGsgKiBNQVhfU0hBUEVfTFBDX09SREVSIF07Ci0KLSAgICAgICAgLyogTm9p
c2Ugc2hhcGUgcGFyYW1ldGVycyAqLwotICAgICAgICBzaWxrX2Fzc2VydCggSGFybVNoYXBlR2Fp
bl9RMTRbIGsgXSA+PSAwICk7Ci0gICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgID0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpbGtfUlNISUZUKCBIYXJtU2hhcGVHYWluX1ExNFsgayBd
LCAyICk7Ci0gICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQgfD0gc2lsa19MU0hJRlQoIChv
cHVzX2ludDMyKXNpbGtfUlNISUZUKCBIYXJtU2hhcGVHYWluX1ExNFsgayBdLCAxICksIDE2ICk7
Ci0KLSAgICAgICAgTlNRLT5yZXdoaXRlX2ZsYWcgPSAwOwotICAgICAgICBpZiggcHNJbmRpY2Vz
LT5zaWduYWxUeXBlID09IFRZUEVfVk9JQ0VEICkgewotICAgICAgICAgICAgLyogVm9pY2VkICov
Ci0gICAgICAgICAgICBsYWcgPSBwaXRjaExbIGsgXTsKLQotICAgICAgICAgICAgLyogUmUtd2hp
dGVuaW5nICovCi0gICAgICAgICAgICBpZiggKCBrICYgKCAzIC0gc2lsa19MU0hJRlQoIExTRl9p
bnRlcnBvbGF0aW9uX2ZsYWcsIDEgKSApICkgPT0gMCApIHsKLSAgICAgICAgICAgICAgICAvKiBS
ZXdoaXRlbiB3aXRoIG5ldyBBIGNvZWZzICovCi0gICAgICAgICAgICAgICAgc3RhcnRfaWR4ID0g
cHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAtIGxhZyAtIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyIC0g
TFRQX09SREVSIC8gMjsKLSAgICAgICAgICAgICAgICBzaWxrX2Fzc2VydCggc3RhcnRfaWR4ID4g
MCApOwotCi0gICAgICAgICAgICAgICAgc2lsa19MUENfYW5hbHlzaXNfZmlsdGVyKCAmc0xUUFsg
c3RhcnRfaWR4IF0sICZOU1EtPnhxWyBzdGFydF9pZHggKyBrICogcHNFbmNDLT5zdWJmcl9sZW5n
dGggXSwKLSAgICAgICAgICAgICAgICAgICAgQV9RMTIsIHBzRW5jQy0+bHRwX21lbV9sZW5ndGgg
LSBzdGFydF9pZHgsIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyLCBwc0VuY0MtPmFyY2ggKTsKLQot
ICAgICAgICAgICAgICAgIE5TUS0+cmV3aGl0ZV9mbGFnID0gMTsKLSAgICAgICAgICAgICAgICBO
U1EtPnNMVFBfYnVmX2lkeCA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBzaWxrX25zcV9zY2FsZV9zdGF0ZXNfc3NlNF8xKCBwc0Vu
Y0MsIE5TUSwgeF9RMywgeF9zY19RMTAsIHNMVFAsIHNMVFBfUTE1LCBrLCBMVFBfc2NhbGVfUTE0
LCBHYWluc19RMTYsIHBpdGNoTCwgcHNJbmRpY2VzLT5zaWduYWxUeXBlICk7Ci0KLSAgICAgICAg
aWYgKCBvcHVzX2xpa2VseSggKCAxMCA9PSBwc0VuY0MtPnNoYXBpbmdMUENPcmRlciApICYmICgg
MTYgPT0gcHNFbmNDLT5wcmVkaWN0TFBDT3JkZXIpICkgKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXplcl8xMF8xNl9zc2U0XzEoIE5TUSwgcHNJbmRpY2Vz
LT5zaWduYWxUeXBlLCB4X3NjX1ExMCwgcHVsc2VzLCBweHEsIHNMVFBfUTE1LCBBX1ExMiwgQl9R
MTQsCi0gICAgICAgICAgICAgICAgQVJfc2hwX1ExMywgbGFnLCBIYXJtU2hhcGVGSVJQYWNrZWRf
UTE0LCBUaWx0X1ExNFsgayBdLCBMRl9zaHBfUTE0WyBrIF0sIEdhaW5zX1ExNlsgayBdLAotICAg
ICAgICAgICAgICAgIG9mZnNldF9RMTAsIHBzRW5jQy0+c3ViZnJfbGVuZ3RoLCAmKHRhYmxlWzMy
XSkgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNp
bGtfbm9pc2Vfc2hhcGVfcXVhbnRpemVyKCBOU1EsIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSwgeF9z
Y19RMTAsIHB1bHNlcywgcHhxLCBzTFRQX1ExNSwgQV9RMTIsIEJfUTE0LAotICAgICAgICAgICAg
ICAgIEFSX3NocF9RMTMsIGxhZywgSGFybVNoYXBlRklSUGFja2VkX1ExNCwgVGlsdF9RMTRbIGsg
XSwgTEZfc2hwX1ExNFsgayBdLCBHYWluc19RMTZbIGsgXSwgTGFtYmRhX1ExMCwKLSAgICAgICAg
ICAgICAgICBvZmZzZXRfUTEwLCBwc0VuY0MtPnN1YmZyX2xlbmd0aCwgcHNFbmNDLT5zaGFwaW5n
TFBDT3JkZXIsIHBzRW5jQy0+cHJlZGljdExQQ09yZGVyLCBwc0VuY0MtPmFyY2ggKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHhfUTMgICArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsKLSAgICAgICAg
cHVsc2VzICs9IHBzRW5jQy0+c3ViZnJfbGVuZ3RoOwotICAgICAgICBweHEgICAgKz0gcHNFbmND
LT5zdWJmcl9sZW5ndGg7Ci0gICAgfQotCi0gICAgLyogVXBkYXRlIGxhZ1ByZXYgZm9yIG5leHQg
ZnJhbWUgKi8KLSAgICBOU1EtPmxhZ1ByZXYgPSBwaXRjaExbIHBzRW5jQy0+bmJfc3ViZnIgLSAx
IF07Ci0KLSAgICAvKiBTYXZlIHF1YW50aXplZCBzcGVlY2ggYW5kIG5vaXNlIHNoYXBpbmcgc2ln
bmFscyAqLwotICAgIHNpbGtfbWVtbW92ZSggTlNRLT54cSwgICAgICAgICAgICZOU1EtPnhxWyAg
ICAgICAgICAgcHNFbmNDLT5mcmFtZV9sZW5ndGggXSwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAq
IHNpemVvZiggb3B1c19pbnQxNiApICk7Ci0gICAgc2lsa19tZW1tb3ZlKCBOU1EtPnNMVFBfc2hw
X1ExNCwgJk5TUS0+c0xUUF9zaHBfUTE0WyBwc0VuY0MtPmZyYW1lX2xlbmd0aCBdLCBwc0VuY0Mt
Pmx0cF9tZW1fbGVuZ3RoICogc2l6ZW9mKCBvcHVzX2ludDMyICkgKTsKLSAgICBSRVNUT1JFX1NU
QUNLOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBzaWxr
X25vaXNlX3NoYXBlX3F1YW50aXplcl8xMF8xNiAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KLXN0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbm9pc2Vfc2hhcGVf
cXVhbnRpemVyXzEwXzE2X3NzZTRfMSgKLSAgICBzaWxrX25zcV9zdGF0ZSAgICAgICpOU1EsICAg
ICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAq
LwotICAgIG9wdXNfaW50ICAgICAgICAgICAgc2lnbmFsVHlwZSwgICAgICAgICAgICAgLyogSSAg
ICBTaWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQz
MiAgICB4X3NjX1ExMFtdLCAgICAgICAgICAgICAvKiBJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDggICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAg
ICAgICAgIC8qIE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9w
dXNfaW50MTYgICAgICAgICAgeHFbXSwgICAgICAgICAgICAgICAgICAgLyogTyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAgICBzTFRQ
X1ExNVtdLCAgICAgICAgICAgICAvKiBJL08gIExUUCBzdGF0ZSAgICAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBjb25zdCBvcHVzX2ludDE2ICAgIGFfUTEyW10sICAgICAgICAgICAgICAgIC8q
IEkgICAgU2hvcnQgdGVybSBwcmVkaWN0aW9uIGNvZWZzICAgICAqLwotICAgIGNvbnN0IG9wdXNf
aW50MTYgICAgYl9RMTRbXSwgICAgICAgICAgICAgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGlj
dGlvbiBjb2VmcyAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQxNiAgICBBUl9zaHBfUTEzW10s
ICAgICAgICAgICAvKiBJICAgIE5vaXNlIHNoYXBpbmcgQVIgY29lZnMgICAgICAgICAgKi8KLSAg
ICBvcHVzX2ludCAgICAgICAgICAgIGxhZywgICAgICAgICAgICAgICAgICAgIC8qIEkgICAgUGl0
Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAg
SGFybVNoYXBlRklSUGFja2VkX1ExNCwgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICBUaWx0X1ExNCwgICAgICAgICAgICAg
ICAvKiBJICAgIFNwZWN0cmFsIHRpbHQgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2lu
dDMyICAgICAgICAgIExGX3NocF9RMTQsICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgR2Fpbl9RMTYs
ICAgICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
Ci0gICAgb3B1c19pbnQgICAgICAgICAgICBvZmZzZXRfUTEwLCAgICAgICAgICAgICAvKiBJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludCAgICAgICAg
ICAgIGxlbmd0aCwgICAgICAgICAgICAgICAgIC8qIEkgICAgSW5wdXQgbGVuZ3RoICAgICAgICAg
ICAgICAgICAgICAqLwotICAgIG9wdXNfaW50MzIgICAgICAgICAgdGFibGVbXVs0XSAgICAgICAg
ICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0pCi17Ci0g
ICAgb3B1c19pbnQgICAgIGk7Ci0gICAgb3B1c19pbnQzMiAgIExUUF9wcmVkX1ExMywgTFBDX3By
ZWRfUTEwLCBuX0FSX1ExMiwgbl9MVFBfUTEzOwotICAgIG9wdXNfaW50MzIgICBuX0xGX1ExMiwg
cl9RMTAsIHExX1EwLCBxMV9RMTAsIHEyX1ExMDsKLSAgICBvcHVzX2ludDMyICAgZXhjX1ExNCwg
TFBDX2V4Y19RMTQsIHhxX1ExNCwgR2Fpbl9RMTA7Ci0gICAgb3B1c19pbnQzMiAgIHRtcDEsIHRt
cDIsIHNMRl9BUl9zaHBfUTE0OwotICAgIG9wdXNfaW50MzIgICAqcHNMUENfUTE0LCAqc2hwX2xh
Z19wdHIsICpwcmVkX2xhZ19wdHI7Ci0KLSAgICBfX20xMjhpIHhtbV90ZW1wYSwgeG1tX3RlbXBi
OwotCi0gICAgX19tMTI4aSB4bW1fb25lOwotCi0gICAgX19tMTI4aSBwc0xQQ19RMTRfaGlfMDEy
MzQ1NjcsIHBzTFBDX1ExNF9oaV84OUFCQ0RFRjsKLSAgICBfX20xMjhpIHBzTFBDX1ExNF9sb18w
MTIzNDU2NywgcHNMUENfUTE0X2xvXzg5QUJDREVGOwotICAgIF9fbTEyOGkgYV9RMTJfMDEyMzQ1
NjcsICAgICAgICBhX1ExMl84OUFCQ0RFRjsKLQotICAgIF9fbTEyOGkgc0FSMl9RMTRfaGlfNzY1
NDMyMTAsIHNBUjJfUTE0X2xvXzc2NTQzMjEwOwotICAgIF9fbTEyOGkgQVJfc2hwX1ExM183NjU0
MzIxMDsKLQotICAgIHNocF9sYWdfcHRyICA9ICZOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5zTFRQ
X3NocF9idWZfaWR4IC0gbGFnICsgSEFSTV9TSEFQRV9GSVJfVEFQUyAvIDIgXTsKLSAgICBwcmVk
X2xhZ19wdHIgPSAmc0xUUF9RMTVbIE5TUS0+c0xUUF9idWZfaWR4IC0gbGFnICsgTFRQX09SREVS
IC8gMiBdOwotICAgIEdhaW5fUTEwICAgICA9IHNpbGtfUlNISUZUKCBHYWluX1ExNiwgNiApOwot
Ci0gICAgLyogU2V0IHVwIHNob3J0IHRlcm0gQVIgc3RhdGUgKi8KLSAgICBwc0xQQ19RMTQgPSAm
TlNRLT5zTFBDX1ExNFsgTlNRX0xQQ19CVUZfTEVOR1RIIC0gMSBdOwotCi0gICAgc0xGX0FSX3No
cF9RMTQgPSBOU1EtPnNMRl9BUl9zaHBfUTE0OwotICAgIHhxX1ExNCAgICAgICAgID0gcHNMUENf
UTE0WyAwIF07Ci0gICAgTFRQX3ByZWRfUTEzICAgPSAwOwotCi0gICAgLyogbG9hZCBhX1ExMiAq
LwotICAgIHhtbV9vbmUgPSBfbW1fc2V0X2VwaTgoIDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYsIDks
IDgsIDExLCAxMCwgMTMsIDEyLCAxNSwgMTQgKTsKLQotICAgIC8qIGxvYWQgYV9RMTJbMF0gLSBh
X1ExMls3XSAqLwotICAgIGFfUTEyXzAxMjM0NTY3ID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4
aSAqKSgmYV9RMTJbIDAgXSApICk7Ci0gICAgLyogbG9hZCBhX1ExMlsgOCBdIC0gYV9RMTJbIDE1
IF0gKi8KLSAgICBhX1ExMl84OUFCQ0RFRiA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKiko
JmFfUTEyWyA4IF0gKSApOwotCi0gICAgYV9RMTJfMDEyMzQ1NjcgPSBfbW1fc2h1ZmZsZV9lcGk4
KCBhX1ExMl8wMTIzNDU2NywgeG1tX29uZSApOwotICAgIGFfUTEyXzg5QUJDREVGID0gX21tX3No
dWZmbGVfZXBpOCggYV9RMTJfODlBQkNERUYsIHhtbV9vbmUgKTsKLQotICAgIC8qIGxvYWQgQVJf
c2hwX1ExMyAqLwotICAgIEFSX3NocF9RMTNfNzY1NDMyMTAgPSBfbW1fbG9hZHVfc2kxMjgoIChf
X20xMjhpICopKCZBUl9zaHBfUTEzWzBdICkgKTsKLQotICAgIC8qIGxvYWQgcHNMUENfUTE0ICov
Ci0gICAgeG1tX29uZSA9IF9tbV9zZXRfZXBpOCgxNSwgMTQsIDExLCAxMCwgNywgNiwgMywgMiwg
MTMsIDEyLCA5LCA4LCA1LCA0LCAxLCAwICk7Ci0KLSAgICB4bW1fdGVtcGEgPSBfbW1fbG9hZHVf
c2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbLTE2XSkgKTsKLSAgICB4bW1fdGVtcGIgPSBf
bW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbLTEyXSkgKTsKLQotICAgIHht
bV90ZW1wYSA9IF9tbV9zaHVmZmxlX2VwaTgoIHhtbV90ZW1wYSwgeG1tX29uZSApOwotICAgIHht
bV90ZW1wYiA9IF9tbV9zaHVmZmxlX2VwaTgoIHhtbV90ZW1wYiwgeG1tX29uZSApOwotCi0gICAg
cHNMUENfUTE0X2hpXzg5QUJDREVGID0gX21tX3VucGFja2hpX2VwaTY0KCB4bW1fdGVtcGEsIHht
bV90ZW1wYiApOwotICAgIHBzTFBDX1ExNF9sb184OUFCQ0RFRiA9IF9tbV91bnBhY2tsb19lcGk2
NCggeG1tX3RlbXBhLCB4bW1fdGVtcGIgKTsKLQotICAgIHhtbV90ZW1wYSA9IF9tbV9sb2FkdV9z
aTEyOCggKF9fbTEyOGkgKikoJnBzTFBDX1ExNFsgLTggXSkgKTsKLSAgICB4bW1fdGVtcGIgPSBf
bW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbIC00IF0pICk7Ci0KLSAgICB4
bW1fdGVtcGEgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGEsIHhtbV9vbmUgKTsKLSAgICB4
bW1fdGVtcGIgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGIsIHhtbV9vbmUgKTsKLQotICAg
IHBzTFBDX1ExNF9oaV8wMTIzNDU2NyA9IF9tbV91bnBhY2toaV9lcGk2NCggeG1tX3RlbXBhLCB4
bW1fdGVtcGIgKTsKLSAgICBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcgPSBfbW1fdW5wYWNrbG9fZXBp
NjQoIHhtbV90ZW1wYSwgeG1tX3RlbXBiICk7Ci0KLSAgICAvKiBsb2FkIHNBUjJfUTE0ICovCi0g
ICAgeG1tX3RlbXBhID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5TUS0+c0FSMl9R
MTRbIDAgXSkgKSApOwotICAgIHhtbV90ZW1wYiA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkg
KikoJihOU1EtPnNBUjJfUTE0WyA0IF0pICkgKTsKLQotICAgIHhtbV90ZW1wYSA9IF9tbV9zaHVm
ZmxlX2VwaTgoIHhtbV90ZW1wYSwgeG1tX29uZSApOwotICAgIHhtbV90ZW1wYiA9IF9tbV9zaHVm
ZmxlX2VwaTgoIHhtbV90ZW1wYiwgeG1tX29uZSApOwotCi0gICAgc0FSMl9RMTRfaGlfNzY1NDMy
MTAgPSBfbW1fdW5wYWNraGlfZXBpNjQoIHhtbV90ZW1wYSwgeG1tX3RlbXBiICk7Ci0gICAgc0FS
Ml9RMTRfbG9fNzY1NDMyMTAgPSBfbW1fdW5wYWNrbG9fZXBpNjQoIHhtbV90ZW1wYSwgeG1tX3Rl
bXBiICk7Ci0KLSAgICAvKiBwcmVwYXJlIDEgaW4gOCAqIDE2Yml0ICovCi0gICAgeG1tX29uZSA9
IF9tbV9zZXQxX2VwaTE2KDEpOwotCi0gICAgZm9yKCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrICkK
LSAgICB7Ci0gICAgICAgIC8qIFNob3J0LXRlcm0gcHJlZGljdGlvbiAqLwotICAgICAgICBfX20x
MjhpIHhtbV9oaV8wNywgeG1tX2hpXzhGLCB4bW1fbG9fMDcsIHhtbV9sb184RjsKLQotICAgICAg
ICAvKiBBdm9pZHMgaW50cm9kdWNpbmcgYSBiaWFzIGJlY2F1c2Ugc2lsa19TTUxBV0IoKSBhbHdh
eXMgcm91bmRzIHRvIC1pbmYgKi8KLSAgICAgICAgTFBDX3ByZWRfUTEwID0gODsgLyogc2lsa19S
U0hJRlQoIHByZWRpY3RMUENPcmRlciwgMSApOyAqLwotCi0gICAgICAgIC8qIHNoaWZ0IHBzTFBD
X1ExNCAqLwotICAgICAgICBwc0xQQ19RMTRfaGlfODlBQkNERUYgPSBfbW1fYWxpZ25yX2VwaTgo
IHBzTFBDX1ExNF9oaV8wMTIzNDU2NywgcHNMUENfUTE0X2hpXzg5QUJDREVGLCAyICk7Ci0gICAg
ICAgIHBzTFBDX1ExNF9sb184OUFCQ0RFRiA9IF9tbV9hbGlnbnJfZXBpOCggcHNMUENfUTE0X2xv
XzAxMjM0NTY3LCBwc0xQQ19RMTRfbG9fODlBQkNERUYsIDIgKTsKLQotICAgICAgICBwc0xQQ19R
MTRfaGlfMDEyMzQ1NjcgPSBfbW1fc3JsaV9zaTEyOCggcHNMUENfUTE0X2hpXzAxMjM0NTY3LCAy
ICk7Ci0gICAgICAgIHBzTFBDX1ExNF9sb18wMTIzNDU2NyA9IF9tbV9zcmxpX3NpMTI4KCBwc0xQ
Q19RMTRfbG9fMDEyMzQ1NjcsIDIgKTsKLQotICAgICAgICBwc0xQQ19RMTRfaGlfMDEyMzQ1Njcg
PSBfbW1faW5zZXJ0X2VwaTE2KCBwc0xQQ19RMTRfaGlfMDEyMzQ1NjcsICh4cV9RMTQgPj4gMTYp
LCA3ICk7Ci0gICAgICAgIHBzTFBDX1ExNF9sb18wMTIzNDU2NyA9IF9tbV9pbnNlcnRfZXBpMTYo
IHBzTFBDX1ExNF9sb18wMTIzNDU2NywgKHhxX1ExNCksICAgICAgIDcgKTsKLQotICAgICAgICAv
KiBoaWdoIHBhcnQsIHVzZSBwbWFkZHdkLCByZXN1bHRzIGluIDQgMzItYml0ICovCi0gICAgICAg
IHhtbV9oaV8wNyA9IF9tbV9tYWRkX2VwaTE2KCBwc0xQQ19RMTRfaGlfMDEyMzQ1NjcsIGFfUTEy
XzAxMjM0NTY3ICk7Ci0gICAgICAgIHhtbV9oaV84RiA9IF9tbV9tYWRkX2VwaTE2KCBwc0xQQ19R
MTRfaGlfODlBQkNERUYsIGFfUTEyXzg5QUJDREVGICk7Ci0KLSAgICAgICAgLyogbG93IHBhcnQs
IHVzZSBwbXVsaHcsIHJlc3VsdHMgaW4gOCAxNi1iaXQsIG5vdGUgd2UgbmVlZCBzaW11bGF0ZSB1
bnNpZ25lZCAqIHNpZ25lZCwgX21tX3NyYWlfZXBpMTYocHNMUENfUTE0X2xvXzAxMjM0NTY3LCAx
NSkgKi8KLSAgICAgICAgeG1tX3RlbXBhID0gX21tX2NtcGd0X2VwaTE2KCBfbW1fc2V0emVyb19z
aTEyOCgpLCBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcgKTsKLSAgICAgICAgeG1tX3RlbXBiID0gX21t
X2NtcGd0X2VwaTE2KCBfbW1fc2V0emVyb19zaTEyOCgpLCBwc0xQQ19RMTRfbG9fODlBQkNERUYg
KTsKLQotICAgICAgICB4bW1fdGVtcGEgPSBfbW1fYW5kX3NpMTI4KCB4bW1fdGVtcGEsIGFfUTEy
XzAxMjM0NTY3ICk7Ci0gICAgICAgIHhtbV90ZW1wYiA9IF9tbV9hbmRfc2kxMjgoIHhtbV90ZW1w
YiwgYV9RMTJfODlBQkNERUYgKTsKLQotICAgICAgICB4bW1fbG9fMDcgPSBfbW1fbXVsaGlfZXBp
MTYoIHBzTFBDX1ExNF9sb18wMTIzNDU2NywgYV9RMTJfMDEyMzQ1NjcgKTsKLSAgICAgICAgeG1t
X2xvXzhGID0gX21tX211bGhpX2VwaTE2KCBwc0xQQ19RMTRfbG9fODlBQkNERUYsIGFfUTEyXzg5
QUJDREVGICk7Ci0KLSAgICAgICAgeG1tX2xvXzA3ID0gX21tX2FkZF9lcGkxNiggeG1tX2xvXzA3
LCB4bW1fdGVtcGEgKTsKLSAgICAgICAgeG1tX2xvXzhGID0gX21tX2FkZF9lcGkxNiggeG1tX2xv
XzhGLCB4bW1fdGVtcGIgKTsKLQotICAgICAgICB4bW1fbG9fMDcgPSBfbW1fbWFkZF9lcGkxNigg
eG1tX2xvXzA3LCB4bW1fb25lICk7Ci0gICAgICAgIHhtbV9sb184RiA9IF9tbV9tYWRkX2VwaTE2
KCB4bW1fbG9fOEYsIHhtbV9vbmUgKTsKLQotICAgICAgICAvKiBhY2N1bXVsYXRlICovCi0gICAg
ICAgIHhtbV9oaV8wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9oaV8wNywgeG1tX2hpXzhGICk7Ci0g
ICAgICAgIHhtbV9sb18wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9sb18wNywgeG1tX2xvXzhGICk7
Ci0KLSAgICAgICAgeG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3LCB4bW1fbG9f
MDcgKTsKLQotICAgICAgICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIF9t
bV91bnBhY2toaV9lcGk2NCh4bW1faGlfMDcsIHhtbV9oaV8wNyApICk7Ci0gICAgICAgIHhtbV9o
aV8wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9oaV8wNywgX21tX3NodWZmbGVsb19lcGkxNih4bW1f
aGlfMDcsIDB4MEUgKSApOwotCi0gICAgICAgIExQQ19wcmVkX1ExMCArPSBfbW1fY3Z0c2kxMjhf
c2kzMiggeG1tX2hpXzA3ICk7Ci0KLSAgICAgICAgLyogTG9uZy10ZXJtIHByZWRpY3Rpb24gKi8K
LSAgICAgICAgaWYgKCBvcHVzX2xpa2VseSggc2lnbmFsVHlwZSA9PSBUWVBFX1ZPSUNFRCApICkg
ewotICAgICAgICAgICAgLyogVW5yb2xsZWQgbG9vcCAqLwotICAgICAgICAgICAgLyogQXZvaWRz
IGludHJvZHVjaW5nIGEgYmlhcyBiZWNhdXNlIHNpbGtfU01MQVdCKCkgYWx3YXlzIHJvdW5kcyB0
byAtaW5mICovCi0gICAgICAgICAgICBMVFBfcHJlZF9RMTMgPSAyOwotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIF9fbTEyOGkgYl9RMTRfMzIxMCwgYl9RMTRfMDEyMywgcHJlZF9sYWdf
cHRyXzAxMjM7Ci0KLSAgICAgICAgICAgICAgICBiX1ExNF8zMjEwID0gT1BfQ1ZURVBJMTZfRVBJ
MzJfTTY0KCBiX1ExNCApOwotICAgICAgICAgICAgICAgIGJfUTE0XzAxMjMgPSBfbW1fc2h1ZmZs
ZV9lcGkzMiggYl9RMTRfMzIxMCwgMHgxQiApOwotCi0gICAgICAgICAgICAgICAgLyogbG9hZGVk
OiBbMF0gWy0xXSBbLTJdIFstM10gKi8KLSAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfMDEy
MyA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJnByZWRfbGFnX3B0clsgLTMgXSApICk7
Ci0gICAgICAgICAgICAgICAgLyogc2h1ZmZsZSB0byBbLTNdIFstMl0gWy0xXSBbMF0gYW5kIHRv
IG5ldyB4bW0gKi8KLSAgICAgICAgICAgICAgICB4bW1fdGVtcGEgPSBfbW1fc2h1ZmZsZV9lcGkz
MiggcHJlZF9sYWdfcHRyXzAxMjMsIDB4MUIgKTsKLSAgICAgICAgICAgICAgICAvKjY0LWJpdCBt
dWx0aXBseSwgYVsyXSAqIGJbLTJdLCBhWzBdICogYlswXSAqLwotICAgICAgICAgICAgICAgIHht
bV90ZW1wYSA9IF9tbV9tdWxfZXBpMzIoIHhtbV90ZW1wYSwgYl9RMTRfMzIxMCApOwotICAgICAg
ICAgICAgICAgIC8qIHJpZ2h0IHNoaWZ0IDIgYnl0ZXMgKDE2IGJpdHMpLCB6ZXJvIGV4dGVuZGVk
ICovCi0gICAgICAgICAgICAgICAgeG1tX3RlbXBhID0gX21tX3NybGlfc2kxMjgoIHhtbV90ZW1w
YSwgMiApOwotCi0gICAgICAgICAgICAgICAgLyogYVsxXSAqIGJbLTFdLCBhWzNdICogYlstM10g
Ki8KLSAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfMDEyMyA9IF9tbV9tdWxfZXBpMzIoIHBy
ZWRfbGFnX3B0cl8wMTIzLCBiX1ExNF8wMTIzICk7Ci0gICAgICAgICAgICAgICAgcHJlZF9sYWdf
cHRyXzAxMjMgPSBfbW1fc3JsaV9zaTEyOCggcHJlZF9sYWdfcHRyXzAxMjMsIDIgKTsKLQotICAg
ICAgICAgICAgICAgIHByZWRfbGFnX3B0cl8wMTIzID0gX21tX2FkZF9lcGkzMiggcHJlZF9sYWdf
cHRyXzAxMjMsIHhtbV90ZW1wYSApOwotICAgICAgICAgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJp
Z2h0IDggYnl0ZXMqLwotICAgICAgICAgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9zaHVmZmxlX2Vw
aTMyKCBwcmVkX2xhZ19wdHJfMDEyMywgX01NX1NIVUZGTEUoIDAsIDAsIDMsIDIgKSApOwotICAg
ICAgICAgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9hZGRfZXBpMzIoIHhtbV90ZW1wYSwgcHJlZF9s
YWdfcHRyXzAxMjMgKTsKLQotICAgICAgICAgICAgICAgIExUUF9wcmVkX1ExMyArPSBfbW1fY3Z0
c2kxMjhfc2kzMiggeG1tX3RlbXBhICk7Ci0KLSAgICAgICAgICAgICAgICBMVFBfcHJlZF9RMTMg
PSBzaWxrX1NNTEFXQiggTFRQX3ByZWRfUTEzLCBwcmVkX2xhZ19wdHJbIC00IF0sIGJfUTE0WyA0
IF0gKTsKLSAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHIrKzsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIC8qIE5vaXNlIHNoYXBlIGZlZWRiYWNrICovCi0gICAgICAgIE5T
US0+c0FSMl9RMTRbIDkgXSA9IE5TUS0+c0FSMl9RMTRbIDggXTsKLSAgICAgICAgTlNRLT5zQVIy
X1ExNFsgOCBdID0gX21tX2N2dHNpMTI4X3NpMzIoIF9tbV9zcmxpX3NpMTI4KF9tbV91bnBhY2to
aV9lcGkxNiggc0FSMl9RMTRfbG9fNzY1NDMyMTAsIHNBUjJfUTE0X2hpXzc2NTQzMjEwICksIDEy
ICkgKTsKLQotICAgICAgICBzQVIyX1ExNF9oaV83NjU0MzIxMCA9IF9tbV9zbGxpX3NpMTI4KCBz
QVIyX1ExNF9oaV83NjU0MzIxMCwgMiApOwotICAgICAgICBzQVIyX1ExNF9sb183NjU0MzIxMCA9
IF9tbV9zbGxpX3NpMTI4KCBzQVIyX1ExNF9sb183NjU0MzIxMCwgMiApOwotCi0gICAgICAgIHNB
UjJfUTE0X2hpXzc2NTQzMjEwID0gX21tX2luc2VydF9lcGkxNiggc0FSMl9RMTRfaGlfNzY1NDMy
MTAsICh4cV9RMTQgPj4gMTYpLCAwICk7Ci0gICAgICAgIHNBUjJfUTE0X2xvXzc2NTQzMjEwID0g
X21tX2luc2VydF9lcGkxNiggc0FSMl9RMTRfbG9fNzY1NDMyMTAsICh4cV9RMTQpLCAgICAgICAw
ICk7Ci0KLSAgICAgICAgLyogaGlnaCBwYXJ0LCB1c2UgcG1hZGR3ZCwgcmVzdWx0cyBpbiA0IDMy
LWJpdCAqLwotICAgICAgICB4bW1faGlfMDcgPSBfbW1fbWFkZF9lcGkxNiggc0FSMl9RMTRfaGlf
NzY1NDMyMTAsIEFSX3NocF9RMTNfNzY1NDMyMTAgKTsKLQotICAgICAgICAvKiBsb3cgcGFydCwg
dXNlIHBtdWxodywgcmVzdWx0cyBpbiA4IDE2LWJpdCwgbm90ZSB3ZSBuZWVkIHNpbXVsYXRlIHVu
c2lnbmVkICogc2lnbmVkLF9tbV9zcmFpX2VwaTE2KHNBUjJfUTE0X2xvXzc2NTQzMjEwLCAxNSkg
Ki8KLSAgICAgICAgeG1tX3RlbXBhID0gX21tX2NtcGd0X2VwaTE2KCBfbW1fc2V0emVyb19zaTEy
OCgpLCBzQVIyX1ExNF9sb183NjU0MzIxMCApOwotICAgICAgICB4bW1fdGVtcGEgPSBfbW1fYW5k
X3NpMTI4KCB4bW1fdGVtcGEsIEFSX3NocF9RMTNfNzY1NDMyMTAgKTsKLQotICAgICAgICB4bW1f
bG9fMDcgPSBfbW1fbXVsaGlfZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCBBUl9zaHBfUTEz
Xzc2NTQzMjEwICk7Ci0gICAgICAgIHhtbV9sb18wNyA9IF9tbV9hZGRfZXBpMTYoIHhtbV9sb18w
NywgeG1tX3RlbXBhICk7Ci0KLSAgICAgICAgeG1tX2xvXzA3ID0gX21tX21hZGRfZXBpMTYoIHht
bV9sb18wNywgeG1tX29uZSApOwotCi0gICAgICAgIC8qIGFjY3VtdWxhdGUgKi8KLSAgICAgICAg
eG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hpXzA3LCB4bW1fbG9fMDcgKTsKLQotICAg
ICAgICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIF9tbV91bnBhY2toaV9l
cGk2NCh4bW1faGlfMDcsIHhtbV9oaV8wNyApICk7Ci0gICAgICAgIHhtbV9oaV8wNyA9IF9tbV9h
ZGRfZXBpMzIoIHhtbV9oaV8wNywgX21tX3NodWZmbGVsb19lcGkxNih4bW1faGlfMDcsIDB4MEUg
KSApOwotCi0gICAgICAgIG5fQVJfUTEyID0gNSArIF9tbV9jdnRzaTEyOF9zaTMyKCB4bW1faGlf
MDcgKTsKLQotICAgICAgICBuX0FSX1ExMiA9IHNpbGtfU01MQVdCKCBuX0FSX1ExMiwgTlNRLT5z
QVIyX1ExNFsgOCBdLCBBUl9zaHBfUTEzWyA4IF0gKTsKLSAgICAgICAgbl9BUl9RMTIgPSBzaWxr
X1NNTEFXQiggbl9BUl9RMTIsIE5TUS0+c0FSMl9RMTRbIDkgXSwgQVJfc2hwX1ExM1sgOSBdICk7
Ci0KLSAgICAgICAgbl9BUl9RMTIgPSBzaWxrX0xTSElGVDMyKCBuX0FSX1ExMiwgMSApOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUTExIC0+IFExMiAqLwotICAgICAgICBuX0FS
X1ExMiA9IHNpbGtfU01MQVdCKCBuX0FSX1ExMiwgc0xGX0FSX3NocF9RMTQsIFRpbHRfUTE0ICk7
Ci0KLSAgICAgICAgbl9MRl9RMTIgPSBzaWxrX1NNVUxXQiggTlNRLT5zTFRQX3NocF9RMTRbIE5T
US0+c0xUUF9zaHBfYnVmX2lkeCAtIDEgXSwgTEZfc2hwX1ExNCApOwotICAgICAgICBuX0xGX1Ex
MiA9IHNpbGtfU01MQVdUKCBuX0xGX1ExMiwgc0xGX0FSX3NocF9RMTQsIExGX3NocF9RMTQgKTsK
LQotICAgICAgICBzaWxrX2Fzc2VydCggbGFnID4gMCB8fCBzaWduYWxUeXBlICE9IFRZUEVfVk9J
Q0VEICk7Ci0KLSAgICAgICAgLyogQ29tYmluZSBwcmVkaWN0aW9uIGFuZCBub2lzZSBzaGFwaW5n
IHNpZ25hbHMgKi8KLSAgICAgICAgdG1wMSA9IHNpbGtfU1VCMzIoIHNpbGtfTFNISUZUMzIoIExQ
Q19wcmVkX1ExMCwgMiApLCBuX0FSX1ExMiApOyAgICAgICAgLyogUTEyICovCi0gICAgICAgIHRt
cDEgPSBzaWxrX1NVQjMyKCB0bXAxLCBuX0xGX1ExMiApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFExMiAqLwotICAgICAgICBpZiggbGFnID4gMCApIHsKLSAgICAgICAg
ICAgIC8qIFN5bW1ldHJpYywgcGFja2VkIEZJUiBjb2VmZmljaWVudHMgKi8KLSAgICAgICAgICAg
IG5fTFRQX1ExMyA9IHNpbGtfU01VTFdCKCBzaWxrX0FERDMyKCBzaHBfbGFnX3B0clsgMCBdLCBz
aHBfbGFnX3B0clsgLTIgXSApLCBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0ICk7Ci0gICAgICAgICAg
ICBuX0xUUF9RMTMgPSBzaWxrX1NNTEFXVCggbl9MVFBfUTEzLCBzaHBfbGFnX3B0clsgLTEgXSwg
ICAgICAgICAgICAgICAgICAgICAgSGFybVNoYXBlRklSUGFja2VkX1ExNCApOwotICAgICAgICAg
ICAgbl9MVFBfUTEzID0gc2lsa19MU0hJRlQoIG5fTFRQX1ExMywgMSApOwotICAgICAgICAgICAg
c2hwX2xhZ19wdHIrKzsKLQotICAgICAgICAgICAgdG1wMiA9IHNpbGtfU1VCMzIoIExUUF9wcmVk
X1ExMywgbl9MVFBfUTEzICk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTMgKi8KLSAgICAg
ICAgICAgIHRtcDEgPSBzaWxrX0FERF9MU0hJRlQzMiggdG1wMiwgdG1wMSwgMSApOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogUTEzICovCi0gICAgICAgICAgICB0bXAxID0gc2lsa19SU0hJ
RlRfUk9VTkQoIHRtcDEsIDMgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFEx
MCAqLwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdG1wMSA9IHNpbGtfUlNISUZUX1JP
VU5EKCB0bXAxLCAyICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTAgKi8K
LSAgICAgICAgfQotCi0gICAgICAgIHJfUTEwID0gc2lsa19TVUIzMiggeF9zY19RMTBbIGkgXSwg
dG1wMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2lkdWFsIGVycm9yIFEx
MCAqLwotCi0gICAgICAgIC8qIEdlbmVyYXRlIGRpdGhlciAqLwotICAgICAgICBOU1EtPnJhbmRf
c2VlZCA9IHNpbGtfUkFORCggTlNRLT5yYW5kX3NlZWQgKTsKLQotICAgICAgICAvKiBGbGlwIHNp
Z24gZGVwZW5kaW5nIG9uIGRpdGhlciAqLwotICAgICAgICB0bXAyID0gLXJfUTEwOwotICAgICAg
ICBpZiAoIE5TUS0+cmFuZF9zZWVkIDwgMCApIHJfUTEwID0gdG1wMjsKLQotICAgICAgICByX1Ex
MCA9IHNpbGtfTElNSVRfMzIoIHJfUTEwLCAtKDMxIDw8IDEwKSwgMzAgPDwgMTAgKTsKLQotICAg
ICAgICAvKiBGaW5kIHR3byBxdWFudGl6YXRpb24gbGV2ZWwgY2FuZGlkYXRlcyBhbmQgbWVhc3Vy
ZSB0aGVpciByYXRlLWRpc3RvcnRpb24gKi8KLSAgICAgICAgcTFfUTEwID0gc2lsa19TVUIzMigg
cl9RMTAsIG9mZnNldF9RMTAgKTsKLSAgICAgICAgcTFfUTAgPSBzaWxrX1JTSElGVCggcTFfUTEw
LCAxMCApOwotCi0gICAgICAgIHExX1ExMCA9IHRhYmxlW3ExX1EwXVswXTsKLSAgICAgICAgcTJf
UTEwID0gdGFibGVbcTFfUTBdWzFdOwotCi0gICAgICAgIGlmIChyX1ExMCAqIHRhYmxlW3ExX1Ew
XVsyXSAtIHRhYmxlW3ExX1EwXVszXSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHExX1Ex
MCA9IHEyX1ExMDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1bHNlc1sgaSBdID0gKG9wdXNfaW50
OClzaWxrX1JTSElGVF9ST1VORCggcTFfUTEwLCAxMCApOwotCi0gICAgICAgIC8qIEV4Y2l0YXRp
b24gKi8KLSAgICAgICAgZXhjX1ExNCA9IHNpbGtfTFNISUZUKCBxMV9RMTAsIDQgKTsKLQotICAg
ICAgICB0bXAyID0gLWV4Y19RMTQ7Ci0gICAgICAgIGlmICggTlNRLT5yYW5kX3NlZWQgPCAwICkg
ZXhjX1ExNCA9IHRtcDI7Ci0KLSAgICAgICAgLyogQWRkIHByZWRpY3Rpb25zICovCi0gICAgICAg
IExQQ19leGNfUTE0ID0gc2lsa19BRERfTFNISUZUMzIoIGV4Y19RMTQsIExUUF9wcmVkX1ExMywg
MSApOwotICAgICAgICB4cV9RMTQgICAgICA9IHNpbGtfQUREX0xTSElGVDMyKCBMUENfZXhjX1Ex
NCwgTFBDX3ByZWRfUTEwLCA0ICk7Ci0KLSAgICAgICAgLyogVXBkYXRlIHN0YXRlcyAqLwotICAg
ICAgICBwc0xQQ19RMTQrKzsKLSAgICAgICAgKnBzTFBDX1ExNCA9IHhxX1ExNDsKLSAgICAgICAg
c0xGX0FSX3NocF9RMTQgPSBzaWxrX1NVQl9MU0hJRlQzMiggeHFfUTE0LCBuX0FSX1ExMiwgMiAp
OwotCi0gICAgICAgIE5TUS0+c0xUUF9zaHBfUTE0WyBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggXSA9
IHNpbGtfU1VCX0xTSElGVDMyKCBzTEZfQVJfc2hwX1ExNCwgbl9MRl9RMTIsIDIgKTsKLSAgICAg
ICAgc0xUUF9RMTVbIE5TUS0+c0xUUF9idWZfaWR4IF0gPSBzaWxrX0xTSElGVCggTFBDX2V4Y19R
MTQsIDEgKTsKLSAgICAgICAgTlNRLT5zTFRQX3NocF9idWZfaWR4Kys7Ci0gICAgICAgIE5TUS0+
c0xUUF9idWZfaWR4Kys7Ci0KLSAgICAgICAgLyogTWFrZSBkaXRoZXIgZGVwZW5kZW50IG9uIHF1
YW50aXplZCBzaWduYWwgKi8KLSAgICAgICAgTlNRLT5yYW5kX3NlZWQgPSBzaWxrX0FERDMyX292
Zmx3KCBOU1EtPnJhbmRfc2VlZCwgcHVsc2VzWyBpIF0gKTsKLSAgICB9Ci0KLSAgICBOU1EtPnNM
Rl9BUl9zaHBfUTE0ID0gc0xGX0FSX3NocF9RMTQ7Ci0KLSAgICAvKiBTY2FsZSBYUSBiYWNrIHRv
IG5vcm1hbCBsZXZlbCBiZWZvcmUgc2F2aW5nICovCi0gICAgcHNMUENfUTE0ID0gJk5TUS0+c0xQ
Q19RMTRbIE5TUV9MUENfQlVGX0xFTkdUSCBdOwotCi0gICAgLyogd3JpdGUgYmFjayBzQVIyX1Ex
NCAqLwotICAgIHhtbV90ZW1wYSA9IF9tbV91bnBhY2toaV9lcGkxNiggc0FSMl9RMTRfbG9fNzY1
NDMyMTAsIHNBUjJfUTE0X2hpXzc2NTQzMjEwICk7Ci0gICAgeG1tX3RlbXBiID0gX21tX3VucGFj
a2xvX2VwaTE2KCBzQVIyX1ExNF9sb183NjU0MzIxMCwgc0FSMl9RMTRfaGlfNzY1NDMyMTAgKTsK
LSAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSgmTlNRLT5zQVIyX1ExNFsgNCBdKSwg
eG1tX3RlbXBhICk7Ci0gICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJk5TUS0+c0FS
Ml9RMTRbIDAgXSksIHhtbV90ZW1wYiApOwotCi0gICAgLyogeHFbIGkgXSA9IChvcHVzX2ludDE2
KXNpbGtfU0FUMTYoIHNpbGtfUlNISUZUX1JPVU5EKCBzaWxrX1NNVUxXVyggcHNMUENfUTE0WyBp
IF0sIEdhaW5fUTEwICksIDggKSApOyAqLwotICAgIHsKLSAgICAgICAgX19tMTI4aSB4bW1fR2Fp
bl9RMTA7Ci0gICAgICAgIF9fbTEyOGkgeG1tX3hxX1ExNF8zMjEwLCB4bW1feHFfUTE0X3gzeDEs
IHhtbV94cV9RMTRfNzY1NCwgeG1tX3hxX1ExNF94N3g1OwotCi0gICAgICAgIC8qIHByZXBhcmUg
KDEgPDwgNykgaW4gcGFja2VkIDQgMzItYml0cyAqLwotICAgICAgICB4bW1fdGVtcGEgPSBfbW1f
c2V0MV9lcGkzMiggKDEgPDwgNykgKTsKLQotICAgICAgICAvKiBwcmVwYXJlIEdhaW5fUTEwIGlu
IHBhY2tlZCA0IDMyLWJpdHMgKi8KLSAgICAgICAgeG1tX0dhaW5fUTEwID0gX21tX3NldDFfZXBp
MzIoIEdhaW5fUTEwICk7Ci0KLSAgICAgICAgLyogcHJvY2VzcyB4cSAqLwotICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgbGVuZ3RoIC0gNzsgaSArPSA4KQotICAgICAgICB7Ci0gICAgICAgICAgICB4
bW1feHFfUTE0XzMyMTAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCYocHNMUENfUTE0
WyBpICsgMCBdICkgKSApOwotICAgICAgICAgICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX2xvYWR1
X3NpMTI4KCAoX19tMTI4aSAqKSgmKHBzTFBDX1ExNFsgaSArIDQgXSApICkgKTsKLQotICAgICAg
ICAgICAgLyogZXF1YWwgc2hpZnQgcmlnaHQgNCBieXRlcyovCi0gICAgICAgICAgICB4bW1feHFf
UTE0X3gzeDEgPSBfbW1fc2h1ZmZsZV9lcGkzMiggeG1tX3hxX1ExNF8zMjEwLCBfTU1fU0hVRkZM
RSggMCwgMywgMiwgMSApICk7Ci0gICAgICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5
dGVzKi8KLSAgICAgICAgICAgIHhtbV94cV9RMTRfeDd4NSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4
bW1feHFfUTE0Xzc2NTQsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsKLQotICAgICAgICAg
ICAgeG1tX3hxX1ExNF8zMjEwID0gX21tX211bF9lcGkzMiggeG1tX3hxX1ExNF8zMjEwLCB4bW1f
R2Fpbl9RMTAgKTsKLSAgICAgICAgICAgIHhtbV94cV9RMTRfeDN4MSA9IF9tbV9tdWxfZXBpMzIo
IHhtbV94cV9RMTRfeDN4MSwgeG1tX0dhaW5fUTEwICk7Ci0gICAgICAgICAgICB4bW1feHFfUTE0
Xzc2NTQgPSBfbW1fbXVsX2VwaTMyKCB4bW1feHFfUTE0Xzc2NTQsIHhtbV9HYWluX1ExMCApOwot
ICAgICAgICAgICAgeG1tX3hxX1ExNF94N3g1ID0gX21tX211bF9lcGkzMiggeG1tX3hxX1ExNF94
N3g1LCB4bW1fR2Fpbl9RMTAgKTsKLQotICAgICAgICAgICAgeG1tX3hxX1ExNF8zMjEwID0gX21t
X3NybGlfZXBpNjQoIHhtbV94cV9RMTRfMzIxMCwgMTYgKTsKLSAgICAgICAgICAgIHhtbV94cV9R
MTRfeDN4MSA9IF9tbV9zbGxpX2VwaTY0KCB4bW1feHFfUTE0X3gzeDEsIDE2ICk7Ci0gICAgICAg
ICAgICB4bW1feHFfUTE0Xzc2NTQgPSBfbW1fc3JsaV9lcGk2NCggeG1tX3hxX1ExNF83NjU0LCAx
NiApOwotICAgICAgICAgICAgeG1tX3hxX1ExNF94N3g1ID0gX21tX3NsbGlfZXBpNjQoIHhtbV94
cV9RMTRfeDd4NSwgMTYgKTsKLQotICAgICAgICAgICAgeG1tX3hxX1ExNF8zMjEwID0gX21tX2Js
ZW5kX2VwaTE2KCB4bW1feHFfUTE0XzMyMTAsIHhtbV94cV9RMTRfeDN4MSwgMHhDQyApOwotICAg
ICAgICAgICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX2JsZW5kX2VwaTE2KCB4bW1feHFfUTE0Xzc2
NTQsIHhtbV94cV9RMTRfeDd4NSwgMHhDQyApOwotCi0gICAgICAgICAgICAvKiBzaWxrX1JTSElG
VF9ST1VORCh4cSwgOCkgKi8KLSAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9hZGRf
ZXBpMzIoIHhtbV94cV9RMTRfMzIxMCwgeG1tX3RlbXBhICk7Ci0gICAgICAgICAgICB4bW1feHFf
UTE0Xzc2NTQgPSBfbW1fYWRkX2VwaTMyKCB4bW1feHFfUTE0Xzc2NTQsIHhtbV90ZW1wYSApOwot
Ci0gICAgICAgICAgICB4bW1feHFfUTE0XzMyMTAgPSBfbW1fc3JhaV9lcGkzMiggeG1tX3hxX1Ex
NF8zMjEwLCA4ICk7Ci0gICAgICAgICAgICB4bW1feHFfUTE0Xzc2NTQgPSBfbW1fc3JhaV9lcGkz
MiggeG1tX3hxX1ExNF83NjU0LCA4ICk7Ci0KLSAgICAgICAgICAgIC8qIHNpbGtfU0FUMTYgKi8K
LSAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9wYWNrc19lcGkzMiggeG1tX3hxX1Ex
NF8zMjEwLCB4bW1feHFfUTE0Xzc2NTQgKTsKLQotICAgICAgICAgICAgLyogc2F2ZSB0byB4cSAq
LwotICAgICAgICAgICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJnhxWyBpIF0gKSwg
eG1tX3hxX1ExNF8zMjEwICk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICggOyBpIDwgbGVu
Z3RoOyBpKyspCi0gICAgewotICAgICAgICB4cVtpXSA9IChvcHVzX2ludDE2KXNpbGtfU0FUMTYo
IHNpbGtfUlNISUZUX1JPVU5EKCBzaWxrX1NNVUxXVyggcHNMUENfUTE0WyBpIF0sIEdhaW5fUTEw
ICksIDggKSApOwotICAgIH0KLQotICAgIC8qIFVwZGF0ZSBMUEMgc3ludGggYnVmZmVyICovCi0g
ICAgc2lsa19tZW1jcHkoIE5TUS0+c0xQQ19RMTQsICZOU1EtPnNMUENfUTE0WyBsZW5ndGggXSwg
TlNRX0xQQ19CVUZfTEVOR1RIICogc2l6ZW9mKCBvcHVzX2ludDMyICkgKTsKLX0KLQotc3RhdGlj
IE9QVVNfSU5MSU5FIHZvaWQgc2lsa19uc3Ffc2NhbGVfc3RhdGVzX3NzZTRfMSgKLSAgICBjb25z
dCBzaWxrX2VuY29kZXJfc3RhdGUgKnBzRW5jQywgICAgICAgICAgIC8qIEkgICAgRW5jb2RlciBT
dGF0ZSAgICAgICAgICAgICAgICAgICAqLwotICAgIHNpbGtfbnNxX3N0YXRlICAgICAgKk5TUSwg
ICAgICAgICAgICAgICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAg
ICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICB4X1EzW10sICAgICAgICAgICAgICAgICAvKiBJ
ICAgIGlucHV0IGluIFEzICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvcHVzX2ludDMyICAg
ICAgICAgIHhfc2NfUTEwW10sICAgICAgICAgICAgIC8qIE8gICAgaW5wdXQgc2NhbGVkIHdpdGgg
MS9HYWluICAgICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50MTYgICAgc0xUUFtdLCAgICAgICAg
ICAgICAgICAgLyogSSAgICByZS13aGl0ZW5lZCBMVFAgc3RhdGUgaW4gUTAgICAgICovCi0gICAg
b3B1c19pbnQzMiAgICAgICAgICBzTFRQX1ExNVtdLCAgICAgICAgICAgICAvKiBPICAgIExUUCBz
dGF0ZSBtYXRjaGluZyBzY2FsZWQgaW5wdXQgKi8KLSAgICBvcHVzX2ludCAgICAgICAgICAgIHN1
YmZyLCAgICAgICAgICAgICAgICAgIC8qIEkgICAgc3ViZnJhbWUgbnVtYmVyICAgICAgICAgICAg
ICAgICAqLwotICAgIGNvbnN0IG9wdXNfaW50ICAgICAgTFRQX3NjYWxlX1ExNCwgICAgICAgICAg
LyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1
c19pbnQzMiAgICBHYWluc19RMTZbIE1BWF9OQl9TVUJGUiBdLCAvKiBJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICBjb25zdCBvcHVzX2ludCAgICAgIHBpdGNoTFsgTUFY
X05CX1NVQkZSIF0sIC8qIEkgICAgUGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAqLwot
ICAgIGNvbnN0IG9wdXNfaW50ICAgICAgc2lnbmFsX3R5cGUgICAgICAgICAgICAgLyogSSAgICBT
aWduYWwgdHlwZSAgICAgICAgICAgICAgICAgICAgICovCi0pCi17Ci0gICAgb3B1c19pbnQgICBp
LCBsYWc7Ci0gICAgb3B1c19pbnQzMiBnYWluX2Fkal9RMTYsIGludl9nYWluX1EzMSwgaW52X2dh
aW5fUTIzOwotICAgIF9fbTEyOGkgeG1tX2ludl9nYWluX1EyMywgeG1tX3hfUTNfeDJ4MCwgeG1t
X3hfUTNfeDN4MTsKLQotICAgIGxhZyAgICAgICAgICA9IHBpdGNoTFsgc3ViZnIgXTsKLSAgICBp
bnZfZ2Fpbl9RMzEgPSBzaWxrX0lOVkVSU0UzMl92YXJRKCBzaWxrX21heCggR2FpbnNfUTE2WyBz
dWJmciBdLCAxICksIDQ3ICk7Ci0gICAgc2lsa19hc3NlcnQoIGludl9nYWluX1EzMSAhPSAwICk7
Ci0KLSAgICAvKiBDYWxjdWxhdGUgZ2FpbiBhZGp1c3RtZW50IGZhY3RvciAqLwotICAgIGlmKCBH
YWluc19RMTZbIHN1YmZyIF0gIT0gTlNRLT5wcmV2X2dhaW5fUTE2ICkgewotICAgICAgICBnYWlu
X2Fkal9RMTYgPSAgc2lsa19ESVYzMl92YXJRKCBOU1EtPnByZXZfZ2Fpbl9RMTYsIEdhaW5zX1Ex
Nlsgc3ViZnIgXSwgMTYgKTsKLSAgICB9IGVsc2UgewotICAgICAgICBnYWluX2Fkal9RMTYgPSAo
b3B1c19pbnQzMikxIDw8IDE2OwotICAgIH0KLQotICAgIC8qIFNjYWxlIGlucHV0ICovCi0gICAg
aW52X2dhaW5fUTIzID0gc2lsa19SU0hJRlRfUk9VTkQoIGludl9nYWluX1EzMSwgOCApOwotCi0g
ICAgLyogcHJlcGFyZSBpbnZfZ2Fpbl9RMjMgaW4gcGFja2VkIDQgMzItYml0cyAqLwotICAgIHht
bV9pbnZfZ2Fpbl9RMjMgPSBfbW1fc2V0MV9lcGkzMihpbnZfZ2Fpbl9RMjMpOwotCi0gICAgZm9y
KCBpID0gMDsgaSA8IHBzRW5jQy0+c3ViZnJfbGVuZ3RoIC0gMzsgaSArPSA0ICkgewotICAgICAg
ICB4bW1feF9RM194MngwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmKHhfUTNbIGkg
XSApICkgKTsKLQotICAgICAgICAvKiBlcXVhbCBzaGlmdCByaWdodCA0IGJ5dGVzKi8KLSAgICAg
ICAgeG1tX3hfUTNfeDN4MSA9IF9tbV9zaHVmZmxlX2VwaTMyKCB4bW1feF9RM194MngwLCBfTU1f
U0hVRkZMRSggMCwgMywgMiwgMSApICk7Ci0KLSAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9t
dWxfZXBpMzIoIHhtbV94X1EzX3gyeDAsIHhtbV9pbnZfZ2Fpbl9RMjMgKTsKLSAgICAgICAgeG1t
X3hfUTNfeDN4MSA9IF9tbV9tdWxfZXBpMzIoIHhtbV94X1EzX3gzeDEsIHhtbV9pbnZfZ2Fpbl9R
MjMgKTsKLQotICAgICAgICB4bW1feF9RM194MngwID0gX21tX3NybGlfZXBpNjQoIHhtbV94X1Ez
X3gyeDAsIDE2ICk7Ci0gICAgICAgIHhtbV94X1EzX3gzeDEgPSBfbW1fc2xsaV9lcGk2NCggeG1t
X3hfUTNfeDN4MSwgMTYgKTsKLQotICAgICAgICB4bW1feF9RM194MngwID0gX21tX2JsZW5kX2Vw
aTE2KCB4bW1feF9RM194MngwLCB4bW1feF9RM194M3gxLCAweENDICk7Ci0KLSAgICAgICAgX21t
X3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJih4X3NjX1ExMFsgaSBdICkgKSwgeG1tX3hfUTNf
eDJ4MCApOwotICAgIH0KLQotICAgIGZvciggOyBpIDwgcHNFbmNDLT5zdWJmcl9sZW5ndGg7IGkr
KyApIHsKLSAgICAgICAgeF9zY19RMTBbIGkgXSA9IHNpbGtfU01VTFdXKCB4X1EzWyBpIF0sIGlu
dl9nYWluX1EyMyApOwotICAgIH0KLQotICAgIC8qIFNhdmUgaW52ZXJzZSBnYWluICovCi0gICAg
TlNRLT5wcmV2X2dhaW5fUTE2ID0gR2FpbnNfUTE2WyBzdWJmciBdOwotCi0gICAgLyogQWZ0ZXIg
cmV3aGl0ZW5pbmcgdGhlIExUUCBzdGF0ZSBpcyB1bi1zY2FsZWQsIHNvIHNjYWxlIHdpdGggaW52
X2dhaW5fUTE2ICovCi0gICAgaWYoIE5TUS0+cmV3aGl0ZV9mbGFnICkgewotICAgICAgICBpZigg
c3ViZnIgPT0gMCApIHsKLSAgICAgICAgICAgIC8qIERvIExUUCBkb3duc2NhbGluZyAqLwotICAg
ICAgICAgICAgaW52X2dhaW5fUTMxID0gc2lsa19MU0hJRlQoIHNpbGtfU01VTFdCKCBpbnZfZ2Fp
bl9RMzEsIExUUF9zY2FsZV9RMTQgKSwgMiApOwotICAgICAgICB9Ci0gICAgICAgIGZvciggaSA9
IE5TUS0+c0xUUF9idWZfaWR4IC0gbGFnIC0gTFRQX09SREVSIC8gMjsgaSA8IE5TUS0+c0xUUF9i
dWZfaWR4OyBpKysgKSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggaSA8IE1BWF9GUkFNRV9M
RU5HVEggKTsKLSAgICAgICAgICAgIHNMVFBfUTE1WyBpIF0gPSBzaWxrX1NNVUxXQiggaW52X2dh
aW5fUTMxLCBzTFRQWyBpIF0gKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEFkanVzdCBm
b3IgY2hhbmdpbmcgZ2FpbiAqLwotICAgIGlmKCBnYWluX2Fkal9RMTYgIT0gKG9wdXNfaW50MzIp
MSA8PCAxNiApIHsKLSAgICAgICAgLyogU2NhbGUgbG9uZy10ZXJtIHNoYXBpbmcgc3RhdGUgKi8K
LSAgICAgICAgX19tMTI4aSB4bW1fZ2Fpbl9hZGpfUTE2LCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAs
IHhtbV9zTFRQX3NocF9RMTRfeDN4MTsKLQotICAgICAgICAvKiBwcmVwYXJlIGdhaW5fYWRqX1Ex
NiBpbiBwYWNrZWQgNCAzMi1iaXRzICovCi0gICAgICAgIHhtbV9nYWluX2Fkal9RMTYgPSBfbW1f
c2V0MV9lcGkzMihnYWluX2Fkal9RMTYpOwotCi0gICAgICAgIGZvciggaSA9IE5TUS0+c0xUUF9z
aHBfYnVmX2lkeCAtIHBzRW5jQy0+bHRwX21lbV9sZW5ndGg7IGkgPCBOU1EtPnNMVFBfc2hwX2J1
Zl9pZHggLSAzOyBpICs9IDQgKQotICAgICAgICB7Ci0gICAgICAgICAgICB4bW1fc0xUUF9zaHBf
UTE0X3gyeDAgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCYoTlNRLT5zTFRQX3NocF9R
MTRbIGkgXSApICkgKTsKLSAgICAgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMq
LwotICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94M3gxID0gX21tX3NodWZmbGVfZXBpMzIo
IHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOwotCi0g
ICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgPSBfbW1fbXVsX2VwaTMyKCB4bW1fc0xU
UF9zaHBfUTE0X3gyeDAsIHhtbV9nYWluX2Fkal9RMTYgKTsKLSAgICAgICAgICAgIHhtbV9zTFRQ
X3NocF9RMTRfeDN4MSA9IF9tbV9tdWxfZXBpMzIoIHhtbV9zTFRQX3NocF9RMTRfeDN4MSwgeG1t
X2dhaW5fYWRqX1ExNiApOwotCi0gICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgPSBf
bW1fc3JsaV9lcGk2NCggeG1tX3NMVFBfc2hwX1ExNF94MngwLCAxNiApOwotICAgICAgICAgICAg
eG1tX3NMVFBfc2hwX1ExNF94M3gxID0gX21tX3NsbGlfZXBpNjQoIHhtbV9zTFRQX3NocF9RMTRf
eDN4MSwgMTYgKTsKLQotICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21tX2Js
ZW5kX2VwaTE2KCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIHhtbV9zTFRQX3NocF9RMTRfeDN4MSwg
MHhDQyApOwotCi0gICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KCAoX19tMTI4aSAqKSgmKE5T
US0+c0xUUF9zaHBfUTE0WyBpIF0gKSApLCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAgKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciggOyBpIDwgTlNRLT5zTFRQX3NocF9idWZfaWR4OyBpKysgKSB7
Ci0gICAgICAgICAgICBOU1EtPnNMVFBfc2hwX1ExNFsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5f
YWRqX1ExNiwgTlNRLT5zTFRQX3NocF9RMTRbIGkgXSApOwotICAgICAgICB9Ci0KLSAgICAgICAg
LyogU2NhbGUgbG9uZy10ZXJtIHByZWRpY3Rpb24gc3RhdGUgKi8KLSAgICAgICAgaWYoIHNpZ25h
bF90eXBlID09IFRZUEVfVk9JQ0VEICYmIE5TUS0+cmV3aGl0ZV9mbGFnID09IDAgKSB7Ci0gICAg
ICAgICAgICBmb3IoIGkgPSBOU1EtPnNMVFBfYnVmX2lkeCAtIGxhZyAtIExUUF9PUkRFUiAvIDI7
IGkgPCBOU1EtPnNMVFBfYnVmX2lkeDsgaSsrICkgewotICAgICAgICAgICAgICAgIHNMVFBfUTE1
WyBpIF0gPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBzTFRQX1ExNVsgaSBdICk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBOU1EtPnNMRl9BUl9zaHBfUTE0ID0gc2ls
a19TTVVMV1coIGdhaW5fYWRqX1ExNiwgTlNRLT5zTEZfQVJfc2hwX1ExNCApOwotCi0gICAgICAg
IC8qIFNjYWxlIHNob3J0LXRlcm0gcHJlZGljdGlvbiBhbmQgc2hhcGluZyBzdGF0ZXMgKi8KLSAg
ICAgICAgZm9yKCBpID0gMDsgaSA8IE5TUV9MUENfQlVGX0xFTkdUSDsgaSsrICkgewotICAgICAg
ICAgICAgTlNRLT5zTFBDX1ExNFsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgTlNR
LT5zTFBDX1ExNFsgaSBdICk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yKCBpID0gMDsgaSA8IE1B
WF9TSEFQRV9MUENfT1JERVI7IGkrKyApIHsKLSAgICAgICAgICAgIE5TUS0+c0FSMl9RMTRbIGkg
XSA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIE5TUS0+c0FSMl9RMTRbIGkgXSApOwotICAg
ICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1Ffc3NlNF8xLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NpbGsv
eDg2L05TUV9zc2U0XzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDMxNWUzNWZjODk2YjEzZWUyMzMxMzI2ZGJi
OWQ2ZjhkOGE2ZGFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9OU1Ffc3NlNF8xLmMKQEAg
LTAsMCArMSw3MTkgQEAKKy8qIENvcHlyaWdodCAoYykgMjAxNCwgQ2lzY28gU3lzdGVtcywgSU5D
CisgICBXcml0dGVuIGJ5IFhpYW5nTWluZ1podSBXZWlaaG91IE1pblBlbmcgWWFuV2FuZworCisg
ICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJlIG1ldDoKKworICAgLSBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisg
ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgICBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSCisgICBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAgIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRgorICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAgIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICAgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlm
CisKKyNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpbmNs
dWRlIDxzbW1pbnRyaW4uaD4KKyNpbmNsdWRlICJtYWluLmgiCisjaW5jbHVkZSAiY2VsdC94ODYv
eDg2Y3B1LmgiCisjaW5jbHVkZSAic3RhY2tfYWxsb2MuaCIKKworc3RhdGljIE9QVVNfSU5MSU5F
IHZvaWQgc2lsa19uc3Ffc2NhbGVfc3RhdGVzX3NzZTRfMSgKKyAgICBjb25zdCBzaWxrX2VuY29k
ZXJfc3RhdGUgKnBzRW5jQywgICAgICAgICAgIC8qIEkgICAgRW5jb2RlciBTdGF0ZSAgICAgICAg
ICAgICAgICAgICAqLworICAgIHNpbGtfbnNxX3N0YXRlICAgICAgKk5TUSwgICAgICAgICAgICAg
ICAgICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29u
c3Qgb3B1c19pbnQzMiAgICB4X1EzW10sICAgICAgICAgICAgICAgICAvKiBJICAgIGlucHV0IGlu
IFEzICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludDMyICAgICAgICAgIHhfc2Nf
UTEwW10sICAgICAgICAgICAgIC8qIE8gICAgaW5wdXQgc2NhbGVkIHdpdGggMS9HYWluICAgICAg
ICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAgc0xUUFtdLCAgICAgICAgICAgICAgICAgLyog
SSAgICByZS13aGl0ZW5lZCBMVFAgc3RhdGUgaW4gUTAgICAgICovCisgICAgb3B1c19pbnQzMiAg
ICAgICAgICBzTFRQX1ExNVtdLCAgICAgICAgICAgICAvKiBPICAgIExUUCBzdGF0ZSBtYXRjaGlu
ZyBzY2FsZWQgaW5wdXQgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIHN1YmZyLCAgICAgICAg
ICAgICAgICAgIC8qIEkgICAgc3ViZnJhbWUgbnVtYmVyICAgICAgICAgICAgICAgICAqLworICAg
IGNvbnN0IG9wdXNfaW50ICAgICAgTFRQX3NjYWxlX1ExNCwgICAgICAgICAgLyogSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQzMiAgICBH
YWluc19RMTZbIE1BWF9OQl9TVUJGUiBdLCAvKiBJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgIHBpdGNoTFsgTUFYX05CX1NVQkZSIF0s
IC8qIEkgICAgUGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9w
dXNfaW50ICAgICAgc2lnbmFsX3R5cGUgICAgICAgICAgICAgLyogSSAgICBTaWduYWwgdHlwZSAg
ICAgICAgICAgICAgICAgICAgICovCispOworCitzdGF0aWMgT1BVU19JTkxJTkUgdm9pZCBzaWxr
X25vaXNlX3NoYXBlX3F1YW50aXplcl8xMF8xNl9zc2U0XzEoCisgICAgc2lsa19uc3Ffc3RhdGUg
ICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIHNpZ25hbFR5cGUsICAgICAg
ICAgICAgIC8qIEkgICAgU2lnbmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNv
bnN0IG9wdXNfaW50MzIgICAgeF9zY19RMTBbXSwgICAgICAgICAgICAgLyogSSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQ4ICAgICAgICAgICBwdWxz
ZXNbXSwgICAgICAgICAgICAgICAvKiBPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KKyAgICBvcHVzX2ludDE2ICAgICAgICAgIHhxW10sICAgICAgICAgICAgICAgICAgIC8q
IE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50MzIg
ICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyogSS9PICBMVFAgc3RhdGUgICAgICAg
ICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBhX1ExMltdLCAgICAg
ICAgICAgICAgICAvKiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAgKi8KKyAg
ICBjb25zdCBvcHVzX2ludDE2ICAgIGJfUTE0W10sICAgICAgICAgICAgICAgIC8qIEkgICAgTG9u
ZyB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MTYgICAg
QVJfc2hwX1ExM1tdLCAgICAgICAgICAgLyogSSAgICBOb2lzZSBzaGFwaW5nIEFSIGNvZWZzICAg
ICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBsYWcsICAgICAgICAgICAgICAgICAg
ICAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2lu
dDMyICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQsIC8qIEkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgVGlsdF9RMTQs
ICAgICAgICAgICAgICAgLyogSSAgICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICov
CisgICAgb3B1c19pbnQzMiAgICAgICAgICBMRl9zaHBfUTE0LCAgICAgICAgICAgICAvKiBJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludDMyICAgICAg
ICAgIEdhaW5fUTE2LCAgICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwgICAgICAg
ICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1
c19pbnQgICAgICAgICAgICBsZW5ndGgsICAgICAgICAgICAgICAgICAvKiBJICAgIElucHV0IGxl
bmd0aCAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludDMyICAgICAgICAgIHRhYmxl
W11bNF0gICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLworKTsKKwordm9pZCBzaWxrX05TUV9zc2U0XzEoCisgICAgY29uc3Qgc2lsa19lbmNvZGVy
X3N0YXRlICAgICpwc0VuY0MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
SSAgICBFbmNvZGVyIFN0YXRlICAgICAgICAgICAgICAgICAgICovCisgICAgc2lsa19uc3Ffc3Rh
dGUgICAgICAgICAgICAgICpOU1EsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSS9PICBOU1Egc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgU2lkZUlu
Zm9JbmRpY2VzICAgICAgICAgICAgICpwc0luZGljZXMsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSS9PICBRdWFudGl6YXRpb24gSW5kaWNlcyAgICAgICAgICAgICovCisgICAg
Y29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgIHhfUTNbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogSSAgICBQcmVmaWx0ZXJlZCBpbnB1dCBzaWduYWwgICAgICAgICov
CisgICAgb3B1c19pbnQ4ICAgICAgICAgICAgICAgICAgIHB1bHNlc1tdLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBRdWFudGl6ZWQgcHVsc2Ugc2lnbmFsICAgICAg
ICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIFByZWRDb2VmX1ExMlsgMiAq
IE1BWF9MUENfT1JERVIgXSwgICAgICAgICAgLyogSSAgICBTaG9ydCB0ZXJtIHByZWRpY3Rpb24g
Y29lZnMgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIExUUENvZWZfUTE0
WyBMVFBfT1JERVIgKiBNQVhfTkJfU1VCRlIgXSwgICAgLyogSSAgICBMb25nIHRlcm0gcHJlZGlj
dGlvbiBjb2VmcyAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIEFSMl9R
MTNbIE1BWF9OQl9TVUJGUiAqIE1BWF9TSEFQRV9MUENfT1JERVIgXSwgLyogSSBOb2lzZSBzaGFw
aW5nIGNvZWZzICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAg
IEhhcm1TaGFwZUdhaW5fUTE0WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgLyogSSAgICBMb25n
IHRlcm0gc2hhcGluZyBjb2VmcyAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICAg
ICAgICAgIFRpbHRfUTE0WyBNQVhfTkJfU1VCRlIgXSwgICAgICAgICAgICAgICAgICAgLyogSSAg
ICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQz
MiAgICAgICAgICAgIExGX3NocF9RMTRbIE1BWF9OQl9TVUJGUiBdLCAgICAgICAgICAgICAgICAg
LyogSSAgICBMb3cgZnJlcXVlbmN5IHNoYXBpbmcgY29lZnMgICAgICovCisgICAgY29uc3Qgb3B1
c19pbnQzMiAgICAgICAgICAgIEdhaW5zX1ExNlsgTUFYX05CX1NVQkZSIF0sICAgICAgICAgICAg
ICAgICAgLyogSSAgICBRdWFudGl6YXRpb24gc3RlcCBzaXplcyAgICAgICAgICovCisgICAgY29u
c3Qgb3B1c19pbnQgICAgICAgICAgICAgIHBpdGNoTFsgTUFYX05CX1NVQkZSIF0sICAgICAgICAg
ICAgICAgICAgICAgLyogSSAgICBQaXRjaCBsYWdzICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIExhbWJkYV9RMTAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogSSAgICBSYXRlL2Rpc3RvcnRpb24gdHJhZGVvZmYgICAgICAg
ICovCisgICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIExUUF9zY2FsZV9RMTQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBMVFAgc3RhdGUgc2NhbGluZyAgICAgICAg
ICAgICAgICovCispCit7CisgICAgb3B1c19pbnQgICAgICAgICAgICBrLCBsYWcsIHN0YXJ0X2lk
eCwgTFNGX2ludGVycG9sYXRpb25fZmxhZzsKKyAgICBjb25zdCBvcHVzX2ludDE2ICAgICpBX1Ex
MiwgKkJfUTE0LCAqQVJfc2hwX1ExMzsKKyAgICBvcHVzX2ludDE2ICAgICAgICAgICpweHE7Cisg
ICAgVkFSREVDTCggb3B1c19pbnQzMiwgc0xUUF9RMTUgKTsKKyAgICBWQVJERUNMKCBvcHVzX2lu
dDE2LCBzTFRQICk7CisgICAgb3B1c19pbnQzMiAgICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRf
UTE0OworICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMDsKKyAgICBWQVJERUNMKCBv
cHVzX2ludDMyLCB4X3NjX1ExMCApOworCisgICAgb3B1c19pbnQzMiAgIHRhYmxlWyA2NCBdWyA0
IF07CisgICAgb3B1c19pbnQzMiAgIHRtcDE7CisgICAgb3B1c19pbnQzMiAgIHExX1ExMCwgcTJf
UTEwLCByZDFfUTIwLCByZDJfUTIwOworCisgICAgU0FWRV9TVEFDSzsKKworICAgIE5TUS0+cmFu
ZF9zZWVkID0gcHNJbmRpY2VzLT5TZWVkOworCisgICAgLyogU2V0IHVudm9pY2VkIGxhZyB0byB0
aGUgcHJldmlvdXMgb25lLCBvdmVyd3JpdGUgbGF0ZXIgZm9yIHZvaWNlZCAqLworICAgIGxhZyA9
IE5TUS0+bGFnUHJldjsKKworICAgIHNpbGtfYXNzZXJ0KCBOU1EtPnByZXZfZ2Fpbl9RMTYgIT0g
MCApOworCisgICAgb2Zmc2V0X1ExMCA9IHNpbGtfUXVhbnRpemF0aW9uX09mZnNldHNfUTEwWyBw
c0luZGljZXMtPnNpZ25hbFR5cGUgPj4gMSBdWyBwc0luZGljZXMtPnF1YW50T2Zmc2V0VHlwZSBd
OworCisgICAgLyogMCAqLworICAgIHExX1ExMCAgPSBvZmZzZXRfUTEwOworICAgIHEyX1ExMCAg
PSBvZmZzZXRfUTEwICsgKCAxMDI0IC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMCApOworICAgIHJk
MV9RMjAgPSBxMV9RMTAgKiBMYW1iZGFfUTEwOworICAgIHJkMl9RMjAgPSBxMl9RMTAgKiBMYW1i
ZGFfUTEwOworCisgICAgdGFibGVbIDMyIF1bIDAgXSA9IHExX1ExMDsKKyAgICB0YWJsZVsgMzIg
XVsgMSBdID0gcTJfUTEwOworICAgIHRhYmxlWyAzMiBdWyAyIF0gPSAyICogKHExX1ExMCAtIHEy
X1ExMCk7CisgICAgdGFibGVbIDMyIF1bIDMgXSA9IChyZDFfUTIwIC0gcmQyX1EyMCkgKyAocTFf
UTEwICogcTFfUTEwIC0gcTJfUTEwICogcTJfUTEwKTsKKworICAgIC8qIC0xICovCisgICAgcTFf
UTEwICA9IG9mZnNldF9RMTAgLSAoIDEwMjQgLSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICk7Cisg
ICAgcTJfUTEwICA9IG9mZnNldF9RMTA7CisgICAgcmQxX1EyMCA9IC0gcTFfUTEwICogTGFtYmRh
X1ExMDsKKyAgICByZDJfUTIwID0gcTJfUTEwICogTGFtYmRhX1ExMDsKKworICAgIHRhYmxlWyAz
MSBdWyAwIF0gPSBxMV9RMTA7CisgICAgdGFibGVbIDMxIF1bIDEgXSA9IHEyX1ExMDsKKyAgICB0
YWJsZVsgMzEgXVsgMiBdID0gMiAqIChxMV9RMTAgLSBxMl9RMTApOworICAgIHRhYmxlWyAzMSBd
WyAzIF0gPSAocmQxX1EyMCAtIHJkMl9RMjApICsgKHExX1ExMCAqIHExX1ExMCAtIHEyX1ExMCAq
IHEyX1ExMCk7CisKKyAgICAvKiA+IDAgKi8KKyAgICBmb3IgKGsgPSAxOyBrIDw9IDMxOyBrKysp
CisgICAgeworICAgICAgICB0bXAxID0gb2Zmc2V0X1ExMCArIHNpbGtfTFNISUZUKCBrLCAxMCAp
OworCisgICAgICAgIHExX1ExMCAgPSB0bXAxIC0gUVVBTlRfTEVWRUxfQURKVVNUX1ExMDsKKyAg
ICAgICAgcTJfUTEwICA9IHRtcDEgLSBRVUFOVF9MRVZFTF9BREpVU1RfUTEwICsgMTAyNDsKKyAg
ICAgICAgcmQxX1EyMCA9IHExX1ExMCAqIExhbWJkYV9RMTA7CisgICAgICAgIHJkMl9RMjAgPSBx
Ml9RMTAgKiBMYW1iZGFfUTEwOworCisgICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMCBdID0gcTFf
UTEwOworICAgICAgICB0YWJsZVsgMzIgKyBrIF1bIDEgXSA9IHEyX1ExMDsKKyAgICAgICAgdGFi
bGVbIDMyICsgayBdWyAyIF0gPSAyICogKHExX1ExMCAtIHEyX1ExMCk7CisgICAgICAgIHRhYmxl
WyAzMiArIGsgXVsgMyBdID0gKHJkMV9RMjAgLSByZDJfUTIwKSArIChxMV9RMTAgKiBxMV9RMTAg
LSBxMl9RMTAgKiBxMl9RMTApOworICAgIH0KKworICAgIC8qIDwgLTEgKi8KKyAgICBmb3IgKGsg
PSAtMzI7IGsgPD0gLTI7IGsrKykKKyAgICB7CisgICAgICAgIHRtcDEgPSBvZmZzZXRfUTEwICsg
c2lsa19MU0hJRlQoIGssIDEwICk7CisKKyAgICAgICAgcTFfUTEwICA9IHRtcDEgKyBRVUFOVF9M
RVZFTF9BREpVU1RfUTEwOworICAgICAgICBxMl9RMTAgID0gdG1wMSArIFFVQU5UX0xFVkVMX0FE
SlVTVF9RMTAgKyAxMDI0OworICAgICAgICByZDFfUTIwID0gLSBxMV9RMTAgKiBMYW1iZGFfUTEw
OworICAgICAgICByZDJfUTIwID0gLSBxMl9RMTAgKiBMYW1iZGFfUTEwOworCisgICAgICAgIHRh
YmxlWyAzMiArIGsgXVsgMCBdID0gcTFfUTEwOworICAgICAgICB0YWJsZVsgMzIgKyBrIF1bIDEg
XSA9IHEyX1ExMDsKKyAgICAgICAgdGFibGVbIDMyICsgayBdWyAyIF0gPSAyICogKHExX1ExMCAt
IHEyX1ExMCk7CisgICAgICAgIHRhYmxlWyAzMiArIGsgXVsgMyBdID0gKHJkMV9RMjAgLSByZDJf
UTIwKSArIChxMV9RMTAgKiBxMV9RMTAgLSBxMl9RMTAgKiBxMl9RMTApOworICAgIH0KKworICAg
IGlmKCBwc0luZGljZXMtPk5MU0ZJbnRlcnBDb2VmX1EyID09IDQgKSB7CisgICAgICAgIExTRl9p
bnRlcnBvbGF0aW9uX2ZsYWcgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIExTRl9pbnRlcnBv
bGF0aW9uX2ZsYWcgPSAxOworICAgIH0KKworICAgIEFMTE9DKCBzTFRQX1ExNSwKKyAgICAgICAg
ICAgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCArIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCBvcHVzX2lu
dDMyICk7CisgICAgQUxMT0MoIHNMVFAsIHBzRW5jQy0+bHRwX21lbV9sZW5ndGggKyBwc0VuY0Mt
PmZyYW1lX2xlbmd0aCwgb3B1c19pbnQxNiApOworICAgIEFMTE9DKCB4X3NjX1ExMCwgcHNFbmND
LT5zdWJmcl9sZW5ndGgsIG9wdXNfaW50MzIgKTsKKyAgICAvKiBTZXQgdXAgcG9pbnRlcnMgdG8g
c3RhcnQgb2Ygc3ViIGZyYW1lICovCisgICAgTlNRLT5zTFRQX3NocF9idWZfaWR4ID0gcHNFbmND
LT5sdHBfbWVtX2xlbmd0aDsKKyAgICBOU1EtPnNMVFBfYnVmX2lkeCAgICAgPSBwc0VuY0MtPmx0
cF9tZW1fbGVuZ3RoOworICAgIHB4cSAgICAgICAgICAgICAgICAgICA9ICZOU1EtPnhxWyBwc0Vu
Y0MtPmx0cF9tZW1fbGVuZ3RoIF07CisgICAgZm9yKCBrID0gMDsgayA8IHBzRW5jQy0+bmJfc3Vi
ZnI7IGsrKyApIHsKKyAgICAgICAgQV9RMTIgICAgICA9ICZQcmVkQ29lZl9RMTJbICgoIGsgPj4g
MSApIHwgKCAxIC0gTFNGX2ludGVycG9sYXRpb25fZmxhZyApKSAqIE1BWF9MUENfT1JERVIgXTsK
KyAgICAgICAgQl9RMTQgICAgICA9ICZMVFBDb2VmX1ExNFsgayAqIExUUF9PUkRFUiBdOworICAg
ICAgICBBUl9zaHBfUTEzID0gJkFSMl9RMTNbICAgICBrICogTUFYX1NIQVBFX0xQQ19PUkRFUiBd
OworCisgICAgICAgIC8qIE5vaXNlIHNoYXBlIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgc2lsa19h
c3NlcnQoIEhhcm1TaGFwZUdhaW5fUTE0WyBrIF0gPj0gMCApOworICAgICAgICBIYXJtU2hhcGVG
SVJQYWNrZWRfUTE0ICA9ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxrX1JTSElGVCggSGFy
bVNoYXBlR2Fpbl9RMTRbIGsgXSwgMiApOworICAgICAgICBIYXJtU2hhcGVGSVJQYWNrZWRfUTE0
IHw9IHNpbGtfTFNISUZUKCAob3B1c19pbnQzMilzaWxrX1JTSElGVCggSGFybVNoYXBlR2Fpbl9R
MTRbIGsgXSwgMSApLCAxNiApOworCisgICAgICAgIE5TUS0+cmV3aGl0ZV9mbGFnID0gMDsKKyAg
ICAgICAgaWYoIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSA9PSBUWVBFX1ZPSUNFRCApIHsKKyAgICAg
ICAgICAgIC8qIFZvaWNlZCAqLworICAgICAgICAgICAgbGFnID0gcGl0Y2hMWyBrIF07CisKKyAg
ICAgICAgICAgIC8qIFJlLXdoaXRlbmluZyAqLworICAgICAgICAgICAgaWYoICggayAmICggMyAt
IHNpbGtfTFNISUZUKCBMU0ZfaW50ZXJwb2xhdGlvbl9mbGFnLCAxICkgKSApID09IDAgKSB7Cisg
ICAgICAgICAgICAgICAgLyogUmV3aGl0ZW4gd2l0aCBuZXcgQSBjb2VmcyAqLworICAgICAgICAg
ICAgICAgIHN0YXJ0X2lkeCA9IHBzRW5jQy0+bHRwX21lbV9sZW5ndGggLSBsYWcgLSBwc0VuY0Mt
PnByZWRpY3RMUENPcmRlciAtIExUUF9PUkRFUiAvIDI7CisgICAgICAgICAgICAgICAgY2VsdF9h
c3NlcnQoIHN0YXJ0X2lkeCA+IDAgKTsKKworICAgICAgICAgICAgICAgIHNpbGtfTFBDX2FuYWx5
c2lzX2ZpbHRlciggJnNMVFBbIHN0YXJ0X2lkeCBdLCAmTlNRLT54cVsgc3RhcnRfaWR4ICsgayAq
IHBzRW5jQy0+c3ViZnJfbGVuZ3RoIF0sCisgICAgICAgICAgICAgICAgICAgIEFfUTEyLCBwc0Vu
Y0MtPmx0cF9tZW1fbGVuZ3RoIC0gc3RhcnRfaWR4LCBwc0VuY0MtPnByZWRpY3RMUENPcmRlciwg
cHNFbmNDLT5hcmNoICk7CisKKyAgICAgICAgICAgICAgICBOU1EtPnJld2hpdGVfZmxhZyA9IDE7
CisgICAgICAgICAgICAgICAgTlNRLT5zTFRQX2J1Zl9pZHggPSBwc0VuY0MtPmx0cF9tZW1fbGVu
Z3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2lsa19uc3Ffc2NhbGVf
c3RhdGVzX3NzZTRfMSggcHNFbmNDLCBOU1EsIHhfUTMsIHhfc2NfUTEwLCBzTFRQLCBzTFRQX1Ex
NSwgaywgTFRQX3NjYWxlX1ExNCwgR2FpbnNfUTE2LCBwaXRjaEwsIHBzSW5kaWNlcy0+c2lnbmFs
VHlwZSApOworCisgICAgICAgIGlmICggb3B1c19saWtlbHkoICggMTAgPT0gcHNFbmNDLT5zaGFw
aW5nTFBDT3JkZXIgKSAmJiAoIDE2ID09IHBzRW5jQy0+cHJlZGljdExQQ09yZGVyKSApICkKKyAg
ICAgICAgeworICAgICAgICAgICAgc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfMTBfMTZfc3Nl
NF8xKCBOU1EsIHBzSW5kaWNlcy0+c2lnbmFsVHlwZSwgeF9zY19RMTAsIHB1bHNlcywgcHhxLCBz
TFRQX1ExNSwgQV9RMTIsIEJfUTE0LAorICAgICAgICAgICAgICAgIEFSX3NocF9RMTMsIGxhZywg
SGFybVNoYXBlRklSUGFja2VkX1ExNCwgVGlsdF9RMTRbIGsgXSwgTEZfc2hwX1ExNFsgayBdLCBH
YWluc19RMTZbIGsgXSwKKyAgICAgICAgICAgICAgICBvZmZzZXRfUTEwLCBwc0VuY0MtPnN1YmZy
X2xlbmd0aCwgJih0YWJsZVszMl0pICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXplciggTlNRLCBwc0luZGlj
ZXMtPnNpZ25hbFR5cGUsIHhfc2NfUTEwLCBwdWxzZXMsIHB4cSwgc0xUUF9RMTUsIEFfUTEyLCBC
X1ExNCwKKyAgICAgICAgICAgICAgICBBUl9zaHBfUTEzLCBsYWcsIEhhcm1TaGFwZUZJUlBhY2tl
ZF9RMTQsIFRpbHRfUTE0WyBrIF0sIExGX3NocF9RMTRbIGsgXSwgR2FpbnNfUTE2WyBrIF0sIExh
bWJkYV9RMTAsCisgICAgICAgICAgICAgICAgb2Zmc2V0X1ExMCwgcHNFbmNDLT5zdWJmcl9sZW5n
dGgsIHBzRW5jQy0+c2hhcGluZ0xQQ09yZGVyLCBwc0VuY0MtPnByZWRpY3RMUENPcmRlciwgcHNF
bmNDLT5hcmNoICk7CisgICAgICAgIH0KKworICAgICAgICB4X1EzICAgKz0gcHNFbmNDLT5zdWJm
cl9sZW5ndGg7CisgICAgICAgIHB1bHNlcyArPSBwc0VuY0MtPnN1YmZyX2xlbmd0aDsKKyAgICAg
ICAgcHhxICAgICs9IHBzRW5jQy0+c3ViZnJfbGVuZ3RoOworICAgIH0KKworICAgIC8qIFVwZGF0
ZSBsYWdQcmV2IGZvciBuZXh0IGZyYW1lICovCisgICAgTlNRLT5sYWdQcmV2ID0gcGl0Y2hMWyBw
c0VuY0MtPm5iX3N1YmZyIC0gMSBdOworCisgICAgLyogU2F2ZSBxdWFudGl6ZWQgc3BlZWNoIGFu
ZCBub2lzZSBzaGFwaW5nIHNpZ25hbHMgKi8KKyAgICBzaWxrX21lbW1vdmUoIE5TUS0+eHEsICAg
ICAgICAgICAmTlNRLT54cVsgICAgICAgICAgIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoIF0sIHBzRW5j
Qy0+bHRwX21lbV9sZW5ndGggKiBzaXplb2YoIG9wdXNfaW50MTYgKSApOworICAgIHNpbGtfbWVt
bW92ZSggTlNRLT5zTFRQX3NocF9RMTQsICZOU1EtPnNMVFBfc2hwX1ExNFsgcHNFbmNDLT5mcmFt
ZV9sZW5ndGggXSwgcHNFbmNDLT5sdHBfbWVtX2xlbmd0aCAqIHNpemVvZiggb3B1c19pbnQzMiAp
ICk7CisgICAgUkVTVE9SRV9TVEFDSzsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLworLyogc2lsa19ub2lzZV9zaGFwZV9xdWFudGl6ZXJfMTBfMTYgICovCisvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgT1BVU19JTkxJTkUgdm9p
ZCBzaWxrX25vaXNlX3NoYXBlX3F1YW50aXplcl8xMF8xNl9zc2U0XzEoCisgICAgc2lsa19uc3Ff
c3RhdGUgICAgICAqTlNRLCAgICAgICAgICAgICAgICAgICAvKiBJL08gIE5TUSBzdGF0ZSAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludCAgICAgICAgICAgIHNpZ25hbFR5cGUs
ICAgICAgICAgICAgIC8qIEkgICAgU2lnbmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9zY19RMTBbXSwgICAgICAgICAgICAgLyogSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb3B1c19pbnQ4ICAgICAgICAg
ICBwdWxzZXNbXSwgICAgICAgICAgICAgICAvKiBPICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICBvcHVzX2ludDE2ICAgICAgICAgIHhxW10sICAgICAgICAgICAgICAg
ICAgIC8qIE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNf
aW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAgICAgICAgLyogSS9PICBMVFAgc3RhdGUg
ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICBhX1ExMltd
LCAgICAgICAgICAgICAgICAvKiBJICAgIFNob3J0IHRlcm0gcHJlZGljdGlvbiBjb2VmcyAgICAg
Ki8KKyAgICBjb25zdCBvcHVzX2ludDE2ICAgIGJfUTE0W10sICAgICAgICAgICAgICAgIC8qIEkg
ICAgTG9uZyB0ZXJtIHByZWRpY3Rpb24gY29lZnMgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50
MTYgICAgQVJfc2hwX1ExM1tdLCAgICAgICAgICAgLyogSSAgICBOb2lzZSBzaGFwaW5nIEFSIGNv
ZWZzICAgICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICBsYWcsICAgICAgICAgICAg
ICAgICAgICAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBv
cHVzX2ludDMyICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tlZF9RMTQsIC8qIEkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgVGls
dF9RMTQsICAgICAgICAgICAgICAgLyogSSAgICBTcGVjdHJhbCB0aWx0ICAgICAgICAgICAgICAg
ICAgICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICBMRl9zaHBfUTE0LCAgICAgICAgICAgICAv
KiBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludDMy
ICAgICAgICAgIEdhaW5fUTE2LCAgICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworICAgIG9wdXNfaW50ICAgICAgICAgICAgb2Zmc2V0X1ExMCwg
ICAgICAgICAgICAgLyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgb3B1c19pbnQgICAgICAgICAgICBsZW5ndGgsICAgICAgICAgICAgICAgICAvKiBJICAgIElu
cHV0IGxlbmd0aCAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvcHVzX2ludDMyICAgICAgICAg
IHRhYmxlW11bNF0gICAgICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworKQoreworICAgIG9wdXNfaW50ICAgICBpOworICAgIG9wdXNfaW50MzIgICBM
VFBfcHJlZF9RMTMsIExQQ19wcmVkX1ExMCwgbl9BUl9RMTIsIG5fTFRQX1ExMzsKKyAgICBvcHVz
X2ludDMyICAgbl9MRl9RMTIsIHJfUTEwLCBxMV9RMCwgcTFfUTEwLCBxMl9RMTA7CisgICAgb3B1
c19pbnQzMiAgIGV4Y19RMTQsIExQQ19leGNfUTE0LCB4cV9RMTQsIEdhaW5fUTEwOworICAgIG9w
dXNfaW50MzIgICB0bXAxLCB0bXAyLCBzTEZfQVJfc2hwX1ExNDsKKyAgICBvcHVzX2ludDMyICAg
KnBzTFBDX1ExNCwgKnNocF9sYWdfcHRyLCAqcHJlZF9sYWdfcHRyOworCisgICAgX19tMTI4aSB4
bW1fdGVtcGEsIHhtbV90ZW1wYjsKKworICAgIF9fbTEyOGkgeG1tX29uZTsKKworICAgIF9fbTEy
OGkgcHNMUENfUTE0X2hpXzAxMjM0NTY3LCBwc0xQQ19RMTRfaGlfODlBQkNERUY7CisgICAgX19t
MTI4aSBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcsIHBzTFBDX1ExNF9sb184OUFCQ0RFRjsKKyAgICBf
X20xMjhpIGFfUTEyXzAxMjM0NTY3LCAgICAgICAgYV9RMTJfODlBQkNERUY7CisKKyAgICBfX20x
MjhpIHNBUjJfUTE0X2hpXzc2NTQzMjEwLCBzQVIyX1ExNF9sb183NjU0MzIxMDsKKyAgICBfX20x
MjhpIEFSX3NocF9RMTNfNzY1NDMyMTA7CisKKyAgICBzaHBfbGFnX3B0ciAgPSAmTlNRLT5zTFRQ
X3NocF9RMTRbIE5TUS0+c0xUUF9zaHBfYnVmX2lkeCAtIGxhZyArIEhBUk1fU0hBUEVfRklSX1RB
UFMgLyAyIF07CisgICAgcHJlZF9sYWdfcHRyID0gJnNMVFBfUTE1WyBOU1EtPnNMVFBfYnVmX2lk
eCAtIGxhZyArIExUUF9PUkRFUiAvIDIgXTsKKyAgICBHYWluX1ExMCAgICAgPSBzaWxrX1JTSElG
VCggR2Fpbl9RMTYsIDYgKTsKKworICAgIC8qIFNldCB1cCBzaG9ydCB0ZXJtIEFSIHN0YXRlICov
CisgICAgcHNMUENfUTE0ID0gJk5TUS0+c0xQQ19RMTRbIE5TUV9MUENfQlVGX0xFTkdUSCAtIDEg
XTsKKworICAgIHNMRl9BUl9zaHBfUTE0ID0gTlNRLT5zTEZfQVJfc2hwX1ExNDsKKyAgICB4cV9R
MTQgICAgICAgICA9IHBzTFBDX1ExNFsgMCBdOworICAgIExUUF9wcmVkX1ExMyAgID0gMDsKKwor
ICAgIC8qIGxvYWQgYV9RMTIgKi8KKyAgICB4bW1fb25lID0gX21tX3NldF9lcGk4KCAxLCAwLCAz
LCAyLCA1LCA0LCA3LCA2LCA5LCA4LCAxMSwgMTAsIDEzLCAxMiwgMTUsIDE0ICk7CisKKyAgICAv
KiBsb2FkIGFfUTEyWzBdIC0gYV9RMTJbN10gKi8KKyAgICBhX1ExMl8wMTIzNDU2NyA9IF9tbV9s
b2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJmFfUTEyWyAwIF0gKSApOworICAgIC8qIGxvYWQgYV9R
MTJbIDggXSAtIGFfUTEyWyAxNSBdICovCisgICAgYV9RMTJfODlBQkNERUYgPSBfbW1fbG9hZHVf
c2kxMjgoIChfX20xMjhpICopKCZhX1ExMlsgOCBdICkgKTsKKworICAgIGFfUTEyXzAxMjM0NTY3
ID0gX21tX3NodWZmbGVfZXBpOCggYV9RMTJfMDEyMzQ1NjcsIHhtbV9vbmUgKTsKKyAgICBhX1Ex
Ml84OUFCQ0RFRiA9IF9tbV9zaHVmZmxlX2VwaTgoIGFfUTEyXzg5QUJDREVGLCB4bW1fb25lICk7
CisKKyAgICAvKiBsb2FkIEFSX3NocF9RMTMgKi8KKyAgICBBUl9zaHBfUTEzXzc2NTQzMjEwID0g
X21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmQVJfc2hwX1ExM1swXSApICk7CisKKyAgICAv
KiBsb2FkIHBzTFBDX1ExNCAqLworICAgIHhtbV9vbmUgPSBfbW1fc2V0X2VwaTgoMTUsIDE0LCAx
MSwgMTAsIDcsIDYsIDMsIDIsIDEzLCAxMiwgOSwgOCwgNSwgNCwgMSwgMCApOworCisgICAgeG1t
X3RlbXBhID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0Wy0xNl0pICk7
CisgICAgeG1tX3RlbXBiID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0
Wy0xMl0pICk7CisKKyAgICB4bW1fdGVtcGEgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGEs
IHhtbV9vbmUgKTsKKyAgICB4bW1fdGVtcGIgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGIs
IHhtbV9vbmUgKTsKKworICAgIHBzTFBDX1ExNF9oaV84OUFCQ0RFRiA9IF9tbV91bnBhY2toaV9l
cGk2NCggeG1tX3RlbXBhLCB4bW1fdGVtcGIgKTsKKyAgICBwc0xQQ19RMTRfbG9fODlBQkNERUYg
PSBfbW1fdW5wYWNrbG9fZXBpNjQoIHhtbV90ZW1wYSwgeG1tX3RlbXBiICk7CisKKyAgICB4bW1f
dGVtcGEgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwc0xQQ19RMTRbIC04IF0pICk7
CisgICAgeG1tX3RlbXBiID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSgmcHNMUENfUTE0
WyAtNCBdKSApOworCisgICAgeG1tX3RlbXBhID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBh
LCB4bW1fb25lICk7CisgICAgeG1tX3RlbXBiID0gX21tX3NodWZmbGVfZXBpOCggeG1tX3RlbXBi
LCB4bW1fb25lICk7CisKKyAgICBwc0xQQ19RMTRfaGlfMDEyMzQ1NjcgPSBfbW1fdW5wYWNraGlf
ZXBpNjQoIHhtbV90ZW1wYSwgeG1tX3RlbXBiICk7CisgICAgcHNMUENfUTE0X2xvXzAxMjM0NTY3
ID0gX21tX3VucGFja2xvX2VwaTY0KCB4bW1fdGVtcGEsIHhtbV90ZW1wYiApOworCisgICAgLyog
bG9hZCBzQVIyX1ExNCAqLworICAgIHhtbV90ZW1wYSA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEy
OGkgKikoJihOU1EtPnNBUjJfUTE0WyAwIF0pICkgKTsKKyAgICB4bW1fdGVtcGIgPSBfbW1fbG9h
ZHVfc2kxMjgoIChfX20xMjhpICopKCYoTlNRLT5zQVIyX1ExNFsgNCBdKSApICk7CisKKyAgICB4
bW1fdGVtcGEgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGEsIHhtbV9vbmUgKTsKKyAgICB4
bW1fdGVtcGIgPSBfbW1fc2h1ZmZsZV9lcGk4KCB4bW1fdGVtcGIsIHhtbV9vbmUgKTsKKworICAg
IHNBUjJfUTE0X2hpXzc2NTQzMjEwID0gX21tX3VucGFja2hpX2VwaTY0KCB4bW1fdGVtcGEsIHht
bV90ZW1wYiApOworICAgIHNBUjJfUTE0X2xvXzc2NTQzMjEwID0gX21tX3VucGFja2xvX2VwaTY0
KCB4bW1fdGVtcGEsIHhtbV90ZW1wYiApOworCisgICAgLyogcHJlcGFyZSAxIGluIDggKiAxNmJp
dCAqLworICAgIHhtbV9vbmUgPSBfbW1fc2V0MV9lcGkxNigxKTsKKworICAgIGZvciggaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKyApCisgICAgeworICAgICAgICAvKiBTaG9ydC10ZXJtIHByZWRpY3Rp
b24gKi8KKyAgICAgICAgX19tMTI4aSB4bW1faGlfMDcsIHhtbV9oaV84RiwgeG1tX2xvXzA3LCB4
bW1fbG9fOEY7CisKKyAgICAgICAgLyogQXZvaWRzIGludHJvZHVjaW5nIGEgYmlhcyBiZWNhdXNl
IHNpbGtfU01MQVdCKCkgYWx3YXlzIHJvdW5kcyB0byAtaW5mICovCisgICAgICAgIExQQ19wcmVk
X1ExMCA9IDg7IC8qIHNpbGtfUlNISUZUKCBwcmVkaWN0TFBDT3JkZXIsIDEgKTsgKi8KKworICAg
ICAgICAvKiBzaGlmdCBwc0xQQ19RMTQgKi8KKyAgICAgICAgcHNMUENfUTE0X2hpXzg5QUJDREVG
ID0gX21tX2FsaWducl9lcGk4KCBwc0xQQ19RMTRfaGlfMDEyMzQ1NjcsIHBzTFBDX1ExNF9oaV84
OUFCQ0RFRiwgMiApOworICAgICAgICBwc0xQQ19RMTRfbG9fODlBQkNERUYgPSBfbW1fYWxpZ25y
X2VwaTgoIHBzTFBDX1ExNF9sb18wMTIzNDU2NywgcHNMUENfUTE0X2xvXzg5QUJDREVGLCAyICk7
CisKKyAgICAgICAgcHNMUENfUTE0X2hpXzAxMjM0NTY3ID0gX21tX3NybGlfc2kxMjgoIHBzTFBD
X1ExNF9oaV8wMTIzNDU2NywgMiApOworICAgICAgICBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcgPSBf
bW1fc3JsaV9zaTEyOCggcHNMUENfUTE0X2xvXzAxMjM0NTY3LCAyICk7CisKKyAgICAgICAgcHNM
UENfUTE0X2hpXzAxMjM0NTY3ID0gX21tX2luc2VydF9lcGkxNiggcHNMUENfUTE0X2hpXzAxMjM0
NTY3LCAoeHFfUTE0ID4+IDE2KSwgNyApOworICAgICAgICBwc0xQQ19RMTRfbG9fMDEyMzQ1Njcg
PSBfbW1faW5zZXJ0X2VwaTE2KCBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcsICh4cV9RMTQpLCAgICAg
ICA3ICk7CisKKyAgICAgICAgLyogaGlnaCBwYXJ0LCB1c2UgcG1hZGR3ZCwgcmVzdWx0cyBpbiA0
IDMyLWJpdCAqLworICAgICAgICB4bW1faGlfMDcgPSBfbW1fbWFkZF9lcGkxNiggcHNMUENfUTE0
X2hpXzAxMjM0NTY3LCBhX1ExMl8wMTIzNDU2NyApOworICAgICAgICB4bW1faGlfOEYgPSBfbW1f
bWFkZF9lcGkxNiggcHNMUENfUTE0X2hpXzg5QUJDREVGLCBhX1ExMl84OUFCQ0RFRiApOworCisg
ICAgICAgIC8qIGxvdyBwYXJ0LCB1c2UgcG11bGh3LCByZXN1bHRzIGluIDggMTYtYml0LCBub3Rl
IHdlIG5lZWQgc2ltdWxhdGUgdW5zaWduZWQgKiBzaWduZWQsIF9tbV9zcmFpX2VwaTE2KHBzTFBD
X1ExNF9sb18wMTIzNDU2NywgMTUpICovCisgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9jbXBndF9l
cGkxNiggX21tX3NldHplcm9fc2kxMjgoKSwgcHNMUENfUTE0X2xvXzAxMjM0NTY3ICk7CisgICAg
ICAgIHhtbV90ZW1wYiA9IF9tbV9jbXBndF9lcGkxNiggX21tX3NldHplcm9fc2kxMjgoKSwgcHNM
UENfUTE0X2xvXzg5QUJDREVGICk7CisKKyAgICAgICAgeG1tX3RlbXBhID0gX21tX2FuZF9zaTEy
OCggeG1tX3RlbXBhLCBhX1ExMl8wMTIzNDU2NyApOworICAgICAgICB4bW1fdGVtcGIgPSBfbW1f
YW5kX3NpMTI4KCB4bW1fdGVtcGIsIGFfUTEyXzg5QUJDREVGICk7CisKKyAgICAgICAgeG1tX2xv
XzA3ID0gX21tX211bGhpX2VwaTE2KCBwc0xQQ19RMTRfbG9fMDEyMzQ1NjcsIGFfUTEyXzAxMjM0
NTY3ICk7CisgICAgICAgIHhtbV9sb184RiA9IF9tbV9tdWxoaV9lcGkxNiggcHNMUENfUTE0X2xv
Xzg5QUJDREVGLCBhX1ExMl84OUFCQ0RFRiApOworCisgICAgICAgIHhtbV9sb18wNyA9IF9tbV9h
ZGRfZXBpMTYoIHhtbV9sb18wNywgeG1tX3RlbXBhICk7CisgICAgICAgIHhtbV9sb184RiA9IF9t
bV9hZGRfZXBpMTYoIHhtbV9sb184RiwgeG1tX3RlbXBiICk7CisKKyAgICAgICAgeG1tX2xvXzA3
ID0gX21tX21hZGRfZXBpMTYoIHhtbV9sb18wNywgeG1tX29uZSApOworICAgICAgICB4bW1fbG9f
OEYgPSBfbW1fbWFkZF9lcGkxNiggeG1tX2xvXzhGLCB4bW1fb25lICk7CisKKyAgICAgICAgLyog
YWNjdW11bGF0ZSAqLworICAgICAgICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlf
MDcsIHhtbV9oaV84RiApOworICAgICAgICB4bW1fbG9fMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1f
bG9fMDcsIHhtbV9sb184RiApOworCisgICAgICAgIHhtbV9oaV8wNyA9IF9tbV9hZGRfZXBpMzIo
IHhtbV9oaV8wNywgeG1tX2xvXzA3ICk7CisKKyAgICAgICAgeG1tX2hpXzA3ID0gX21tX2FkZF9l
cGkzMiggeG1tX2hpXzA3LCBfbW1fdW5wYWNraGlfZXBpNjQoeG1tX2hpXzA3LCB4bW1faGlfMDcg
KSApOworICAgICAgICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIF9tbV9z
aHVmZmxlbG9fZXBpMTYoeG1tX2hpXzA3LCAweDBFICkgKTsKKworICAgICAgICBMUENfcHJlZF9R
MTAgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHhtbV9oaV8wNyApOworCisgICAgICAgIC8qIExvbmct
dGVybSBwcmVkaWN0aW9uICovCisgICAgICAgIGlmICggb3B1c19saWtlbHkoIHNpZ25hbFR5cGUg
PT0gVFlQRV9WT0lDRUQgKSApIHsKKyAgICAgICAgICAgIC8qIFVucm9sbGVkIGxvb3AgKi8KKyAg
ICAgICAgICAgIC8qIEF2b2lkcyBpbnRyb2R1Y2luZyBhIGJpYXMgYmVjYXVzZSBzaWxrX1NNTEFX
QigpIGFsd2F5cyByb3VuZHMgdG8gLWluZiAqLworICAgICAgICAgICAgTFRQX3ByZWRfUTEzID0g
MjsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfX20xMjhpIGJfUTE0XzMyMTAsIGJf
UTE0XzAxMjMsIHByZWRfbGFnX3B0cl8wMTIzOworCisgICAgICAgICAgICAgICAgYl9RMTRfMzIx
MCA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggYl9RMTQgKTsKKyAgICAgICAgICAgICAgICBiX1Ex
NF8wMTIzID0gX21tX3NodWZmbGVfZXBpMzIoIGJfUTE0XzMyMTAsIDB4MUIgKTsKKworICAgICAg
ICAgICAgICAgIC8qIGxvYWRlZDogWzBdIFstMV0gWy0yXSBbLTNdICovCisgICAgICAgICAgICAg
ICAgcHJlZF9sYWdfcHRyXzAxMjMgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZwcmVk
X2xhZ19wdHJbIC0zIF0gKSApOworICAgICAgICAgICAgICAgIC8qIHNodWZmbGUgdG8gWy0zXSBb
LTJdIFstMV0gWzBdIGFuZCB0byBuZXcgeG1tICovCisgICAgICAgICAgICAgICAgeG1tX3RlbXBh
ID0gX21tX3NodWZmbGVfZXBpMzIoIHByZWRfbGFnX3B0cl8wMTIzLCAweDFCICk7CisgICAgICAg
ICAgICAgICAgLyo2NC1iaXQgbXVsdGlwbHksIGFbMl0gKiBiWy0yXSwgYVswXSAqIGJbMF0gKi8K
KyAgICAgICAgICAgICAgICB4bW1fdGVtcGEgPSBfbW1fbXVsX2VwaTMyKCB4bW1fdGVtcGEsIGJf
UTE0XzMyMTAgKTsKKyAgICAgICAgICAgICAgICAvKiByaWdodCBzaGlmdCAyIGJ5dGVzICgxNiBi
aXRzKSwgemVybyBleHRlbmRlZCAqLworICAgICAgICAgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9z
cmxpX3NpMTI4KCB4bW1fdGVtcGEsIDIgKTsKKworICAgICAgICAgICAgICAgIC8qIGFbMV0gKiBi
Wy0xXSwgYVszXSAqIGJbLTNdICovCisgICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyXzAxMjMg
PSBfbW1fbXVsX2VwaTMyKCBwcmVkX2xhZ19wdHJfMDEyMywgYl9RMTRfMDEyMyApOworICAgICAg
ICAgICAgICAgIHByZWRfbGFnX3B0cl8wMTIzID0gX21tX3NybGlfc2kxMjgoIHByZWRfbGFnX3B0
cl8wMTIzLCAyICk7CisKKyAgICAgICAgICAgICAgICBwcmVkX2xhZ19wdHJfMDEyMyA9IF9tbV9h
ZGRfZXBpMzIoIHByZWRfbGFnX3B0cl8wMTIzLCB4bW1fdGVtcGEgKTsKKyAgICAgICAgICAgICAg
ICAvKiBlcXVhbCBzaGlmdCByaWdodCA4IGJ5dGVzKi8KKyAgICAgICAgICAgICAgICB4bW1fdGVt
cGEgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcHJlZF9sYWdfcHRyXzAxMjMsIF9NTV9TSFVGRkxFKCAw
LCAwLCAzLCAyICkgKTsKKyAgICAgICAgICAgICAgICB4bW1fdGVtcGEgPSBfbW1fYWRkX2VwaTMy
KCB4bW1fdGVtcGEsIHByZWRfbGFnX3B0cl8wMTIzICk7CisKKyAgICAgICAgICAgICAgICBMVFBf
cHJlZF9RMTMgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHhtbV90ZW1wYSApOworCisgICAgICAgICAg
ICAgICAgTFRQX3ByZWRfUTEzID0gc2lsa19TTUxBV0IoIExUUF9wcmVkX1ExMywgcHJlZF9sYWdf
cHRyWyAtNCBdLCBiX1ExNFsgNCBdICk7CisgICAgICAgICAgICAgICAgcHJlZF9sYWdfcHRyKys7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBOb2lzZSBzaGFwZSBmZWVk
YmFjayAqLworICAgICAgICBOU1EtPnNBUjJfUTE0WyA5IF0gPSBOU1EtPnNBUjJfUTE0WyA4IF07
CisgICAgICAgIE5TUS0+c0FSMl9RMTRbIDggXSA9IF9tbV9jdnRzaTEyOF9zaTMyKCBfbW1fc3Js
aV9zaTEyOChfbW1fdW5wYWNraGlfZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCBzQVIyX1Ex
NF9oaV83NjU0MzIxMCApLCAxMiApICk7CisKKyAgICAgICAgc0FSMl9RMTRfaGlfNzY1NDMyMTAg
PSBfbW1fc2xsaV9zaTEyOCggc0FSMl9RMTRfaGlfNzY1NDMyMTAsIDIgKTsKKyAgICAgICAgc0FS
Ml9RMTRfbG9fNzY1NDMyMTAgPSBfbW1fc2xsaV9zaTEyOCggc0FSMl9RMTRfbG9fNzY1NDMyMTAs
IDIgKTsKKworICAgICAgICBzQVIyX1ExNF9oaV83NjU0MzIxMCA9IF9tbV9pbnNlcnRfZXBpMTYo
IHNBUjJfUTE0X2hpXzc2NTQzMjEwLCAoeHFfUTE0ID4+IDE2KSwgMCApOworICAgICAgICBzQVIy
X1ExNF9sb183NjU0MzIxMCA9IF9tbV9pbnNlcnRfZXBpMTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEw
LCAoeHFfUTE0KSwgICAgICAgMCApOworCisgICAgICAgIC8qIGhpZ2ggcGFydCwgdXNlIHBtYWRk
d2QsIHJlc3VsdHMgaW4gNCAzMi1iaXQgKi8KKyAgICAgICAgeG1tX2hpXzA3ID0gX21tX21hZGRf
ZXBpMTYoIHNBUjJfUTE0X2hpXzc2NTQzMjEwLCBBUl9zaHBfUTEzXzc2NTQzMjEwICk7CisKKyAg
ICAgICAgLyogbG93IHBhcnQsIHVzZSBwbXVsaHcsIHJlc3VsdHMgaW4gOCAxNi1iaXQsIG5vdGUg
d2UgbmVlZCBzaW11bGF0ZSB1bnNpZ25lZCAqIHNpZ25lZCxfbW1fc3JhaV9lcGkxNihzQVIyX1Ex
NF9sb183NjU0MzIxMCwgMTUpICovCisgICAgICAgIHhtbV90ZW1wYSA9IF9tbV9jbXBndF9lcGkx
NiggX21tX3NldHplcm9fc2kxMjgoKSwgc0FSMl9RMTRfbG9fNzY1NDMyMTAgKTsKKyAgICAgICAg
eG1tX3RlbXBhID0gX21tX2FuZF9zaTEyOCggeG1tX3RlbXBhLCBBUl9zaHBfUTEzXzc2NTQzMjEw
ICk7CisKKyAgICAgICAgeG1tX2xvXzA3ID0gX21tX211bGhpX2VwaTE2KCBzQVIyX1ExNF9sb183
NjU0MzIxMCwgQVJfc2hwX1ExM183NjU0MzIxMCApOworICAgICAgICB4bW1fbG9fMDcgPSBfbW1f
YWRkX2VwaTE2KCB4bW1fbG9fMDcsIHhtbV90ZW1wYSApOworCisgICAgICAgIHhtbV9sb18wNyA9
IF9tbV9tYWRkX2VwaTE2KCB4bW1fbG9fMDcsIHhtbV9vbmUgKTsKKworICAgICAgICAvKiBhY2N1
bXVsYXRlICovCisgICAgICAgIHhtbV9oaV8wNyA9IF9tbV9hZGRfZXBpMzIoIHhtbV9oaV8wNywg
eG1tX2xvXzA3ICk7CisKKyAgICAgICAgeG1tX2hpXzA3ID0gX21tX2FkZF9lcGkzMiggeG1tX2hp
XzA3LCBfbW1fdW5wYWNraGlfZXBpNjQoeG1tX2hpXzA3LCB4bW1faGlfMDcgKSApOworICAgICAg
ICB4bW1faGlfMDcgPSBfbW1fYWRkX2VwaTMyKCB4bW1faGlfMDcsIF9tbV9zaHVmZmxlbG9fZXBp
MTYoeG1tX2hpXzA3LCAweDBFICkgKTsKKworICAgICAgICBuX0FSX1ExMiA9IDUgKyBfbW1fY3Z0
c2kxMjhfc2kzMiggeG1tX2hpXzA3ICk7CisKKyAgICAgICAgbl9BUl9RMTIgPSBzaWxrX1NNTEFX
Qiggbl9BUl9RMTIsIE5TUS0+c0FSMl9RMTRbIDggXSwgQVJfc2hwX1ExM1sgOCBdICk7CisgICAg
ICAgIG5fQVJfUTEyID0gc2lsa19TTUxBV0IoIG5fQVJfUTEyLCBOU1EtPnNBUjJfUTE0WyA5IF0s
IEFSX3NocF9RMTNbIDkgXSApOworCisgICAgICAgIG5fQVJfUTEyID0gc2lsa19MU0hJRlQzMigg
bl9BUl9RMTIsIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMSAtPiBR
MTIgKi8KKyAgICAgICAgbl9BUl9RMTIgPSBzaWxrX1NNTEFXQiggbl9BUl9RMTIsIHNMRl9BUl9z
aHBfUTE0LCBUaWx0X1ExNCApOworCisgICAgICAgIG5fTEZfUTEyID0gc2lsa19TTVVMV0IoIE5T
US0+c0xUUF9zaHBfUTE0WyBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSAxIF0sIExGX3NocF9RMTQg
KTsKKyAgICAgICAgbl9MRl9RMTIgPSBzaWxrX1NNTEFXVCggbl9MRl9RMTIsIHNMRl9BUl9zaHBf
UTE0LCBMRl9zaHBfUTE0ICk7CisKKyAgICAgICAgc2lsa19hc3NlcnQoIGxhZyA+IDAgfHwgc2ln
bmFsVHlwZSAhPSBUWVBFX1ZPSUNFRCApOworCisgICAgICAgIC8qIENvbWJpbmUgcHJlZGljdGlv
biBhbmQgbm9pc2Ugc2hhcGluZyBzaWduYWxzICovCisgICAgICAgIHRtcDEgPSBzaWxrX1NVQjMy
KCBzaWxrX0xTSElGVDMyKCBMUENfcHJlZF9RMTAsIDIgKSwgbl9BUl9RMTIgKTsgICAgICAgIC8q
IFExMiAqLworICAgICAgICB0bXAxID0gc2lsa19TVUIzMiggdG1wMSwgbl9MRl9RMTIgKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRMTIgKi8KKyAgICAgICAgaWYoIGxh
ZyA+IDAgKSB7CisgICAgICAgICAgICAvKiBTeW1tZXRyaWMsIHBhY2tlZCBGSVIgY29lZmZpY2ll
bnRzICovCisgICAgICAgICAgICBuX0xUUF9RMTMgPSBzaWxrX1NNVUxXQiggc2lsa19BREQzMigg
c2hwX2xhZ19wdHJbIDAgXSwgc2hwX2xhZ19wdHJbIC0yIF0gKSwgSGFybVNoYXBlRklSUGFja2Vk
X1ExNCApOworICAgICAgICAgICAgbl9MVFBfUTEzID0gc2lsa19TTUxBV1QoIG5fTFRQX1ExMywg
c2hwX2xhZ19wdHJbIC0xIF0sICAgICAgICAgICAgICAgICAgICAgIEhhcm1TaGFwZUZJUlBhY2tl
ZF9RMTQgKTsKKyAgICAgICAgICAgIG5fTFRQX1ExMyA9IHNpbGtfTFNISUZUKCBuX0xUUF9RMTMs
IDEgKTsKKyAgICAgICAgICAgIHNocF9sYWdfcHRyKys7CisKKyAgICAgICAgICAgIHRtcDIgPSBz
aWxrX1NVQjMyKCBMVFBfcHJlZF9RMTMsIG5fTFRQX1ExMyApOyAgICAgICAgICAgICAgICAgICAg
ICAgLyogUTEzICovCisgICAgICAgICAgICB0bXAxID0gc2lsa19BRERfTFNISUZUMzIoIHRtcDIs
IHRtcDEsIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExMyAqLworICAgICAgICAg
ICAgdG1wMSA9IHNpbGtfUlNISUZUX1JPVU5EKCB0bXAxLCAzICk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBRMTAgKi8KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRt
cDEgPSBzaWxrX1JTSElGVF9ST1VORCggdG1wMSwgMiApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogUTEwICovCisgICAgICAgIH0KKworICAgICAgICByX1ExMCA9IHNpbGtfU1VC
MzIoIHhfc2NfUTEwWyBpIF0sIHRtcDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiByZXNpZHVhbCBlcnJvciBRMTAgKi8KKworICAgICAgICAvKiBHZW5lcmF0ZSBkaXRoZXIgKi8K
KyAgICAgICAgTlNRLT5yYW5kX3NlZWQgPSBzaWxrX1JBTkQoIE5TUS0+cmFuZF9zZWVkICk7CisK
KyAgICAgICAgLyogRmxpcCBzaWduIGRlcGVuZGluZyBvbiBkaXRoZXIgKi8KKyAgICAgICAgdG1w
MiA9IC1yX1ExMDsKKyAgICAgICAgaWYgKCBOU1EtPnJhbmRfc2VlZCA8IDAgKSByX1ExMCA9IHRt
cDI7CisKKyAgICAgICAgcl9RMTAgPSBzaWxrX0xJTUlUXzMyKCByX1ExMCwgLSgzMSA8PCAxMCks
IDMwIDw8IDEwICk7CisKKyAgICAgICAgLyogRmluZCB0d28gcXVhbnRpemF0aW9uIGxldmVsIGNh
bmRpZGF0ZXMgYW5kIG1lYXN1cmUgdGhlaXIgcmF0ZS1kaXN0b3J0aW9uICovCisgICAgICAgIHEx
X1ExMCA9IHNpbGtfU1VCMzIoIHJfUTEwLCBvZmZzZXRfUTEwICk7CisgICAgICAgIHExX1EwID0g
c2lsa19SU0hJRlQoIHExX1ExMCwgMTAgKTsKKworICAgICAgICBxMV9RMTAgPSB0YWJsZVtxMV9R
MF1bMF07CisgICAgICAgIHEyX1ExMCA9IHRhYmxlW3ExX1EwXVsxXTsKKworICAgICAgICBpZiAo
cl9RMTAgKiB0YWJsZVtxMV9RMF1bMl0gLSB0YWJsZVtxMV9RMF1bM10gPCAwKQorICAgICAgICB7
CisgICAgICAgICAgICBxMV9RMTAgPSBxMl9RMTA7CisgICAgICAgIH0KKworICAgICAgICBwdWxz
ZXNbIGkgXSA9IChvcHVzX2ludDgpc2lsa19SU0hJRlRfUk9VTkQoIHExX1ExMCwgMTAgKTsKKwor
ICAgICAgICAvKiBFeGNpdGF0aW9uICovCisgICAgICAgIGV4Y19RMTQgPSBzaWxrX0xTSElGVCgg
cTFfUTEwLCA0ICk7CisKKyAgICAgICAgdG1wMiA9IC1leGNfUTE0OworICAgICAgICBpZiAoIE5T
US0+cmFuZF9zZWVkIDwgMCApIGV4Y19RMTQgPSB0bXAyOworCisgICAgICAgIC8qIEFkZCBwcmVk
aWN0aW9ucyAqLworICAgICAgICBMUENfZXhjX1ExNCA9IHNpbGtfQUREX0xTSElGVDMyKCBleGNf
UTE0LCBMVFBfcHJlZF9RMTMsIDEgKTsKKyAgICAgICAgeHFfUTE0ICAgICAgPSBzaWxrX0FERF9M
U0hJRlQzMiggTFBDX2V4Y19RMTQsIExQQ19wcmVkX1ExMCwgNCApOworCisgICAgICAgIC8qIFVw
ZGF0ZSBzdGF0ZXMgKi8KKyAgICAgICAgcHNMUENfUTE0Kys7CisgICAgICAgICpwc0xQQ19RMTQg
PSB4cV9RMTQ7CisgICAgICAgIHNMRl9BUl9zaHBfUTE0ID0gc2lsa19TVUJfTFNISUZUMzIoIHhx
X1ExNCwgbl9BUl9RMTIsIDIgKTsKKworICAgICAgICBOU1EtPnNMVFBfc2hwX1ExNFsgTlNRLT5z
TFRQX3NocF9idWZfaWR4IF0gPSBzaWxrX1NVQl9MU0hJRlQzMiggc0xGX0FSX3NocF9RMTQsIG5f
TEZfUTEyLCAyICk7CisgICAgICAgIHNMVFBfUTE1WyBOU1EtPnNMVFBfYnVmX2lkeCBdID0gc2ls
a19MU0hJRlQoIExQQ19leGNfUTE0LCAxICk7CisgICAgICAgIE5TUS0+c0xUUF9zaHBfYnVmX2lk
eCsrOworICAgICAgICBOU1EtPnNMVFBfYnVmX2lkeCsrOworCisgICAgICAgIC8qIE1ha2UgZGl0
aGVyIGRlcGVuZGVudCBvbiBxdWFudGl6ZWQgc2lnbmFsICovCisgICAgICAgIE5TUS0+cmFuZF9z
ZWVkID0gc2lsa19BREQzMl9vdmZsdyggTlNRLT5yYW5kX3NlZWQsIHB1bHNlc1sgaSBdICk7Cisg
ICAgfQorCisgICAgTlNRLT5zTEZfQVJfc2hwX1ExNCA9IHNMRl9BUl9zaHBfUTE0OworCisgICAg
LyogU2NhbGUgWFEgYmFjayB0byBub3JtYWwgbGV2ZWwgYmVmb3JlIHNhdmluZyAqLworICAgIHBz
TFBDX1ExNCA9ICZOU1EtPnNMUENfUTE0WyBOU1FfTFBDX0JVRl9MRU5HVEggXTsKKworICAgIC8q
IHdyaXRlIGJhY2sgc0FSMl9RMTQgKi8KKyAgICB4bW1fdGVtcGEgPSBfbW1fdW5wYWNraGlfZXBp
MTYoIHNBUjJfUTE0X2xvXzc2NTQzMjEwLCBzQVIyX1ExNF9oaV83NjU0MzIxMCApOworICAgIHht
bV90ZW1wYiA9IF9tbV91bnBhY2tsb19lcGkxNiggc0FSMl9RMTRfbG9fNzY1NDMyMTAsIHNBUjJf
UTE0X2hpXzc2NTQzMjEwICk7CisgICAgX21tX3N0b3JldV9zaTEyOCggKF9fbTEyOGkgKikoJk5T
US0+c0FSMl9RMTRbIDQgXSksIHhtbV90ZW1wYSApOworICAgIF9tbV9zdG9yZXVfc2kxMjgoIChf
X20xMjhpICopKCZOU1EtPnNBUjJfUTE0WyAwIF0pLCB4bW1fdGVtcGIgKTsKKworICAgIC8qIHhx
WyBpIF0gPSAob3B1c19pbnQxNilzaWxrX1NBVDE2KCBzaWxrX1JTSElGVF9ST1VORCggc2lsa19T
TVVMV1coIHBzTFBDX1ExNFsgaSBdLCBHYWluX1ExMCApLCA4ICkgKTsgKi8KKyAgICB7CisgICAg
ICAgIF9fbTEyOGkgeG1tX0dhaW5fUTEwOworICAgICAgICBfX20xMjhpIHhtbV94cV9RMTRfMzIx
MCwgeG1tX3hxX1ExNF94M3gxLCB4bW1feHFfUTE0Xzc2NTQsIHhtbV94cV9RMTRfeDd4NTsKKwor
ICAgICAgICAvKiBwcmVwYXJlICgxIDw8IDcpIGluIHBhY2tlZCA0IDMyLWJpdHMgKi8KKyAgICAg
ICAgeG1tX3RlbXBhID0gX21tX3NldDFfZXBpMzIoICgxIDw8IDcpICk7CisKKyAgICAgICAgLyog
cHJlcGFyZSBHYWluX1ExMCBpbiBwYWNrZWQgNCAzMi1iaXRzICovCisgICAgICAgIHhtbV9HYWlu
X1ExMCA9IF9tbV9zZXQxX2VwaTMyKCBHYWluX1ExMCApOworCisgICAgICAgIC8qIHByb2Nlc3Mg
eHEgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aCAtIDc7IGkgKz0gOCkKKyAgICAg
ICAgeworICAgICAgICAgICAgeG1tX3hxX1ExNF8zMjEwID0gX21tX2xvYWR1X3NpMTI4KCAoX19t
MTI4aSAqKSgmKHBzTFBDX1ExNFsgaSArIDAgXSApICkgKTsKKyAgICAgICAgICAgIHhtbV94cV9R
MTRfNzY1NCA9IF9tbV9sb2FkdV9zaTEyOCggKF9fbTEyOGkgKikoJihwc0xQQ19RMTRbIGkgKyA0
IF0gKSApICk7CisKKyAgICAgICAgICAgIC8qIGVxdWFsIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMqLwor
ICAgICAgICAgICAgeG1tX3hxX1ExNF94M3gxID0gX21tX3NodWZmbGVfZXBpMzIoIHhtbV94cV9R
MTRfMzIxMCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOworICAgICAgICAgICAgLyogZXF1
YWwgc2hpZnQgcmlnaHQgNCBieXRlcyovCisgICAgICAgICAgICB4bW1feHFfUTE0X3g3eDUgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggeG1tX3hxX1ExNF83NjU0LCBfTU1fU0hVRkZMRSggMCwgMywgMiwg
MSApICk7CisKKyAgICAgICAgICAgIHhtbV94cV9RMTRfMzIxMCA9IF9tbV9tdWxfZXBpMzIoIHht
bV94cV9RMTRfMzIxMCwgeG1tX0dhaW5fUTEwICk7CisgICAgICAgICAgICB4bW1feHFfUTE0X3gz
eDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feHFfUTE0X3gzeDEsIHhtbV9HYWluX1ExMCApOworICAg
ICAgICAgICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX211bF9lcGkzMiggeG1tX3hxX1ExNF83NjU0
LCB4bW1fR2Fpbl9RMTAgKTsKKyAgICAgICAgICAgIHhtbV94cV9RMTRfeDd4NSA9IF9tbV9tdWxf
ZXBpMzIoIHhtbV94cV9RMTRfeDd4NSwgeG1tX0dhaW5fUTEwICk7CisKKyAgICAgICAgICAgIHht
bV94cV9RMTRfMzIxMCA9IF9tbV9zcmxpX2VwaTY0KCB4bW1feHFfUTE0XzMyMTAsIDE2ICk7Cisg
ICAgICAgICAgICB4bW1feHFfUTE0X3gzeDEgPSBfbW1fc2xsaV9lcGk2NCggeG1tX3hxX1ExNF94
M3gxLCAxNiApOworICAgICAgICAgICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX3NybGlfZXBpNjQo
IHhtbV94cV9RMTRfNzY1NCwgMTYgKTsKKyAgICAgICAgICAgIHhtbV94cV9RMTRfeDd4NSA9IF9t
bV9zbGxpX2VwaTY0KCB4bW1feHFfUTE0X3g3eDUsIDE2ICk7CisKKyAgICAgICAgICAgIHhtbV94
cV9RMTRfMzIxMCA9IF9tbV9ibGVuZF9lcGkxNiggeG1tX3hxX1ExNF8zMjEwLCB4bW1feHFfUTE0
X3gzeDEsIDB4Q0MgKTsKKyAgICAgICAgICAgIHhtbV94cV9RMTRfNzY1NCA9IF9tbV9ibGVuZF9l
cGkxNiggeG1tX3hxX1ExNF83NjU0LCB4bW1feHFfUTE0X3g3eDUsIDB4Q0MgKTsKKworICAgICAg
ICAgICAgLyogc2lsa19SU0hJRlRfUk9VTkQoeHEsIDgpICovCisgICAgICAgICAgICB4bW1feHFf
UTE0XzMyMTAgPSBfbW1fYWRkX2VwaTMyKCB4bW1feHFfUTE0XzMyMTAsIHhtbV90ZW1wYSApOwor
ICAgICAgICAgICAgeG1tX3hxX1ExNF83NjU0ID0gX21tX2FkZF9lcGkzMiggeG1tX3hxX1ExNF83
NjU0LCB4bW1fdGVtcGEgKTsKKworICAgICAgICAgICAgeG1tX3hxX1ExNF8zMjEwID0gX21tX3Ny
YWlfZXBpMzIoIHhtbV94cV9RMTRfMzIxMCwgOCApOworICAgICAgICAgICAgeG1tX3hxX1ExNF83
NjU0ID0gX21tX3NyYWlfZXBpMzIoIHhtbV94cV9RMTRfNzY1NCwgOCApOworCisgICAgICAgICAg
ICAvKiBzaWxrX1NBVDE2ICovCisgICAgICAgICAgICB4bW1feHFfUTE0XzMyMTAgPSBfbW1fcGFj
a3NfZXBpMzIoIHhtbV94cV9RMTRfMzIxMCwgeG1tX3hxX1ExNF83NjU0ICk7CisKKyAgICAgICAg
ICAgIC8qIHNhdmUgdG8geHEgKi8KKyAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20x
MjhpICopKCZ4cVsgaSBdICksIHhtbV94cV9RMTRfMzIxMCApOworICAgICAgICB9CisgICAgfQor
ICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrKQorICAgIHsKKyAgICAgICAgeHFbaV0gPSAob3B1
c19pbnQxNilzaWxrX1NBVDE2KCBzaWxrX1JTSElGVF9ST1VORCggc2lsa19TTVVMV1coIHBzTFBD
X1ExNFsgaSBdLCBHYWluX1ExMCApLCA4ICkgKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgTFBD
IHN5bnRoIGJ1ZmZlciAqLworICAgIHNpbGtfbWVtY3B5KCBOU1EtPnNMUENfUTE0LCAmTlNRLT5z
TFBDX1ExNFsgbGVuZ3RoIF0sIE5TUV9MUENfQlVGX0xFTkdUSCAqIHNpemVvZiggb3B1c19pbnQz
MiApICk7Cit9CisKK3N0YXRpYyBPUFVTX0lOTElORSB2b2lkIHNpbGtfbnNxX3NjYWxlX3N0YXRl
c19zc2U0XzEoCisgICAgY29uc3Qgc2lsa19lbmNvZGVyX3N0YXRlICpwc0VuY0MsICAgICAgICAg
ICAvKiBJICAgIEVuY29kZXIgU3RhdGUgICAgICAgICAgICAgICAgICAgKi8KKyAgICBzaWxrX25z
cV9zdGF0ZSAgICAgICpOU1EsICAgICAgICAgICAgICAgICAgIC8qIEkvTyAgTlNRIHN0YXRlICAg
ICAgICAgICAgICAgICAgICAgICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgeF9RM1tdLCAg
ICAgICAgICAgICAgICAgLyogSSAgICBpbnB1dCBpbiBRMyAgICAgICAgICAgICAgICAgICAgICov
CisgICAgb3B1c19pbnQzMiAgICAgICAgICB4X3NjX1ExMFtdLCAgICAgICAgICAgICAvKiBPICAg
IGlucHV0IHNjYWxlZCB3aXRoIDEvR2FpbiAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludDE2
ICAgIHNMVFBbXSwgICAgICAgICAgICAgICAgIC8qIEkgICAgcmUtd2hpdGVuZWQgTFRQIHN0YXRl
IGluIFEwICAgICAqLworICAgIG9wdXNfaW50MzIgICAgICAgICAgc0xUUF9RMTVbXSwgICAgICAg
ICAgICAgLyogTyAgICBMVFAgc3RhdGUgbWF0Y2hpbmcgc2NhbGVkIGlucHV0ICovCisgICAgb3B1
c19pbnQgICAgICAgICAgICBzdWJmciwgICAgICAgICAgICAgICAgICAvKiBJICAgIHN1YmZyYW1l
IG51bWJlciAgICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgIExUUF9z
Y2FsZV9RMTQsICAgICAgICAgIC8qIEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLworICAgIGNvbnN0IG9wdXNfaW50MzIgICAgR2FpbnNfUTE2WyBNQVhfTkJfU1VCRlIgXSwg
LyogSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19p
bnQgICAgICBwaXRjaExbIE1BWF9OQl9TVUJGUiBdLCAvKiBJICAgIFBpdGNoIGxhZyAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICBjb25zdCBvcHVzX2ludCAgICAgIHNpZ25hbF90eXBlICAg
ICAgICAgICAgIC8qIEkgICAgU2lnbmFsIHR5cGUgICAgICAgICAgICAgICAgICAgICAqLworKQor
eworICAgIG9wdXNfaW50ICAgaSwgbGFnOworICAgIG9wdXNfaW50MzIgZ2Fpbl9hZGpfUTE2LCBp
bnZfZ2Fpbl9RMzEsIGludl9nYWluX1EyMzsKKyAgICBfX20xMjhpIHhtbV9pbnZfZ2Fpbl9RMjMs
IHhtbV94X1EzX3gyeDAsIHhtbV94X1EzX3gzeDE7CisKKyAgICBsYWcgICAgICAgICAgPSBwaXRj
aExbIHN1YmZyIF07CisgICAgaW52X2dhaW5fUTMxID0gc2lsa19JTlZFUlNFMzJfdmFyUSggc2ls
a19tYXgoIEdhaW5zX1ExNlsgc3ViZnIgXSwgMSApLCA0NyApOworICAgIHNpbGtfYXNzZXJ0KCBp
bnZfZ2Fpbl9RMzEgIT0gMCApOworCisgICAgLyogQ2FsY3VsYXRlIGdhaW4gYWRqdXN0bWVudCBm
YWN0b3IgKi8KKyAgICBpZiggR2FpbnNfUTE2WyBzdWJmciBdICE9IE5TUS0+cHJldl9nYWluX1Ex
NiApIHsKKyAgICAgICAgZ2Fpbl9hZGpfUTE2ID0gIHNpbGtfRElWMzJfdmFyUSggTlNRLT5wcmV2
X2dhaW5fUTE2LCBHYWluc19RMTZbIHN1YmZyIF0sIDE2ICk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZ2Fpbl9hZGpfUTE2ID0gKG9wdXNfaW50MzIpMSA8PCAxNjsKKyAgICB9CisKKyAgICAvKiBT
Y2FsZSBpbnB1dCAqLworICAgIGludl9nYWluX1EyMyA9IHNpbGtfUlNISUZUX1JPVU5EKCBpbnZf
Z2Fpbl9RMzEsIDggKTsKKworICAgIC8qIHByZXBhcmUgaW52X2dhaW5fUTIzIGluIHBhY2tlZCA0
IDMyLWJpdHMgKi8KKyAgICB4bW1faW52X2dhaW5fUTIzID0gX21tX3NldDFfZXBpMzIoaW52X2dh
aW5fUTIzKTsKKworICAgIGZvciggaSA9IDA7IGkgPCBwc0VuY0MtPnN1YmZyX2xlbmd0aCAtIDM7
IGkgKz0gNCApIHsKKyAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9sb2FkdV9zaTEyOCggKF9f
bTEyOGkgKikoJih4X1EzWyBpIF0gKSApICk7CisKKyAgICAgICAgLyogZXF1YWwgc2hpZnQgcmln
aHQgNCBieXRlcyovCisgICAgICAgIHhtbV94X1EzX3gzeDEgPSBfbW1fc2h1ZmZsZV9lcGkzMigg
eG1tX3hfUTNfeDJ4MCwgX01NX1NIVUZGTEUoIDAsIDMsIDIsIDEgKSApOworCisgICAgICAgIHht
bV94X1EzX3gyeDAgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9RM194MngwLCB4bW1faW52X2dhaW5f
UTIzICk7CisgICAgICAgIHhtbV94X1EzX3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1feF9RM194
M3gxLCB4bW1faW52X2dhaW5fUTIzICk7CisKKyAgICAgICAgeG1tX3hfUTNfeDJ4MCA9IF9tbV9z
cmxpX2VwaTY0KCB4bW1feF9RM194MngwLCAxNiApOworICAgICAgICB4bW1feF9RM194M3gxID0g
X21tX3NsbGlfZXBpNjQoIHhtbV94X1EzX3gzeDEsIDE2ICk7CisKKyAgICAgICAgeG1tX3hfUTNf
eDJ4MCA9IF9tbV9ibGVuZF9lcGkxNiggeG1tX3hfUTNfeDJ4MCwgeG1tX3hfUTNfeDN4MSwgMHhD
QyApOworCisgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoIChfX20xMjhpICopKCYoeF9zY19RMTBb
IGkgXSApICksIHhtbV94X1EzX3gyeDAgKTsKKyAgICB9CisKKyAgICBmb3IoIDsgaSA8IHBzRW5j
Qy0+c3ViZnJfbGVuZ3RoOyBpKysgKSB7CisgICAgICAgIHhfc2NfUTEwWyBpIF0gPSBzaWxrX1NN
VUxXVyggeF9RM1sgaSBdLCBpbnZfZ2Fpbl9RMjMgKTsKKyAgICB9CisKKyAgICAvKiBTYXZlIGlu
dmVyc2UgZ2FpbiAqLworICAgIE5TUS0+cHJldl9nYWluX1ExNiA9IEdhaW5zX1ExNlsgc3ViZnIg
XTsKKworICAgIC8qIEFmdGVyIHJld2hpdGVuaW5nIHRoZSBMVFAgc3RhdGUgaXMgdW4tc2NhbGVk
LCBzbyBzY2FsZSB3aXRoIGludl9nYWluX1ExNiAqLworICAgIGlmKCBOU1EtPnJld2hpdGVfZmxh
ZyApIHsKKyAgICAgICAgaWYoIHN1YmZyID09IDAgKSB7CisgICAgICAgICAgICAvKiBEbyBMVFAg
ZG93bnNjYWxpbmcgKi8KKyAgICAgICAgICAgIGludl9nYWluX1EzMSA9IHNpbGtfTFNISUZUKCBz
aWxrX1NNVUxXQiggaW52X2dhaW5fUTMxLCBMVFBfc2NhbGVfUTE0ICksIDIgKTsKKyAgICAgICAg
fQorICAgICAgICBmb3IoIGkgPSBOU1EtPnNMVFBfYnVmX2lkeCAtIGxhZyAtIExUUF9PUkRFUiAv
IDI7IGkgPCBOU1EtPnNMVFBfYnVmX2lkeDsgaSsrICkgeworICAgICAgICAgICAgc2lsa19hc3Nl
cnQoIGkgPCBNQVhfRlJBTUVfTEVOR1RIICk7CisgICAgICAgICAgICBzTFRQX1ExNVsgaSBdID0g
c2lsa19TTVVMV0IoIGludl9nYWluX1EzMSwgc0xUUFsgaSBdICk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvKiBBZGp1c3QgZm9yIGNoYW5naW5nIGdhaW4gKi8KKyAgICBpZiggZ2Fpbl9hZGpf
UTE2ICE9IChvcHVzX2ludDMyKTEgPDwgMTYgKSB7CisgICAgICAgIC8qIFNjYWxlIGxvbmctdGVy
bSBzaGFwaW5nIHN0YXRlICovCisgICAgICAgIF9fbTEyOGkgeG1tX2dhaW5fYWRqX1ExNiwgeG1t
X3NMVFBfc2hwX1ExNF94MngwLCB4bW1fc0xUUF9zaHBfUTE0X3gzeDE7CisKKyAgICAgICAgLyog
cHJlcGFyZSBnYWluX2Fkal9RMTYgaW4gcGFja2VkIDQgMzItYml0cyAqLworICAgICAgICB4bW1f
Z2Fpbl9hZGpfUTE2ID0gX21tX3NldDFfZXBpMzIoZ2Fpbl9hZGpfUTE2KTsKKworICAgICAgICBm
b3IoIGkgPSBOU1EtPnNMVFBfc2hwX2J1Zl9pZHggLSBwc0VuY0MtPmx0cF9tZW1fbGVuZ3RoOyBp
IDwgTlNRLT5zTFRQX3NocF9idWZfaWR4IC0gMzsgaSArPSA0ICkKKyAgICAgICAgeworICAgICAg
ICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21tX2xvYWR1X3NpMTI4KCAoX19tMTI4aSAq
KSgmKE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gKSApICk7CisgICAgICAgICAgICAvKiBlcXVhbCBz
aGlmdCByaWdodCA0IGJ5dGVzKi8KKyAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDN4MSA9
IF9tbV9zaHVmZmxlX2VwaTMyKCB4bW1fc0xUUF9zaHBfUTE0X3gyeDAsIF9NTV9TSFVGRkxFKCAw
LCAzLCAyLCAxICkgKTsKKworICAgICAgICAgICAgeG1tX3NMVFBfc2hwX1ExNF94MngwID0gX21t
X211bF9lcGkzMiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1fZ2Fpbl9hZGpfUTE2ICk7Cisg
ICAgICAgICAgICB4bW1fc0xUUF9zaHBfUTE0X3gzeDEgPSBfbW1fbXVsX2VwaTMyKCB4bW1fc0xU
UF9zaHBfUTE0X3gzeDEsIHhtbV9nYWluX2Fkal9RMTYgKTsKKworICAgICAgICAgICAgeG1tX3NM
VFBfc2hwX1ExNF94MngwID0gX21tX3NybGlfZXBpNjQoIHhtbV9zTFRQX3NocF9RMTRfeDJ4MCwg
MTYgKTsKKyAgICAgICAgICAgIHhtbV9zTFRQX3NocF9RMTRfeDN4MSA9IF9tbV9zbGxpX2VwaTY0
KCB4bW1fc0xUUF9zaHBfUTE0X3gzeDEsIDE2ICk7CisKKyAgICAgICAgICAgIHhtbV9zTFRQX3No
cF9RMTRfeDJ4MCA9IF9tbV9ibGVuZF9lcGkxNiggeG1tX3NMVFBfc2hwX1ExNF94MngwLCB4bW1f
c0xUUF9zaHBfUTE0X3gzeDEsIDB4Q0MgKTsKKworICAgICAgICAgICAgX21tX3N0b3JldV9zaTEy
OCggKF9fbTEyOGkgKikoJihOU1EtPnNMVFBfc2hwX1ExNFsgaSBdICkgKSwgeG1tX3NMVFBfc2hw
X1ExNF94MngwICk7CisgICAgICAgIH0KKworICAgICAgICBmb3IoIDsgaSA8IE5TUS0+c0xUUF9z
aHBfYnVmX2lkeDsgaSsrICkgeworICAgICAgICAgICAgTlNRLT5zTFRQX3NocF9RMTRbIGkgXSA9
IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIE5TUS0+c0xUUF9zaHBfUTE0WyBpIF0gKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8qIFNjYWxlIGxvbmctdGVybSBwcmVkaWN0aW9uIHN0YXRlICov
CisgICAgICAgIGlmKCBzaWduYWxfdHlwZSA9PSBUWVBFX1ZPSUNFRCAmJiBOU1EtPnJld2hpdGVf
ZmxhZyA9PSAwICkgeworICAgICAgICAgICAgZm9yKCBpID0gTlNRLT5zTFRQX2J1Zl9pZHggLSBs
YWcgLSBMVFBfT1JERVIgLyAyOyBpIDwgTlNRLT5zTFRQX2J1Zl9pZHg7IGkrKyApIHsKKyAgICAg
ICAgICAgICAgICBzTFRQX1ExNVsgaSBdID0gc2lsa19TTVVMV1coIGdhaW5fYWRqX1ExNiwgc0xU
UF9RMTVbIGkgXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgTlNRLT5z
TEZfQVJfc2hwX1ExNCA9IHNpbGtfU01VTFdXKCBnYWluX2Fkal9RMTYsIE5TUS0+c0xGX0FSX3No
cF9RMTQgKTsKKworICAgICAgICAvKiBTY2FsZSBzaG9ydC10ZXJtIHByZWRpY3Rpb24gYW5kIHNo
YXBpbmcgc3RhdGVzICovCisgICAgICAgIGZvciggaSA9IDA7IGkgPCBOU1FfTFBDX0JVRl9MRU5H
VEg7IGkrKyApIHsKKyAgICAgICAgICAgIE5TUS0+c0xQQ19RMTRbIGkgXSA9IHNpbGtfU01VTFdX
KCBnYWluX2Fkal9RMTYsIE5TUS0+c0xQQ19RMTRbIGkgXSApOworICAgICAgICB9CisgICAgICAg
IGZvciggaSA9IDA7IGkgPCBNQVhfU0hBUEVfTFBDX09SREVSOyBpKysgKSB7CisgICAgICAgICAg
ICBOU1EtPnNBUjJfUTE0WyBpIF0gPSBzaWxrX1NNVUxXVyggZ2Fpbl9hZGpfUTE2LCBOU1EtPnNB
UjJfUTE0WyBpIF0gKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYv
VkFEX3NzZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zaWxrL3g4Ni9WQURfc3NlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRlOTBmNDQxMGQ4MWZjODU4NjAxOTRhZmVmZTFkMmIwYzBiZTNkZWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9WQURfc3NlLmMKKysr
IC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDE0LCBDaXNj
byBTeXN0ZW1zLCBJTkMKLSAgIFdyaXR0ZW4gYnkgWGlhbmdNaW5nWmh1IFdlaVpob3UgTWluUGVu
ZyBZYW5XYW5nCi0KLSAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0g
ICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0KLSAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0KLSAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAgIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAgIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIKLSAgIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICAgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCi0gICBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotICAgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHhtbWludHJpbi5oPgotI2luY2x1ZGUgPGVtbWlu
dHJpbi5oPgotI2luY2x1ZGUgPHNtbWludHJpbi5oPgotCi0jaW5jbHVkZSAibWFpbi5oIgotI2lu
Y2x1ZGUgInN0YWNrX2FsbG9jLmgiCi0KLS8qIFdlaWdodGluZyBmYWN0b3JzIGZvciB0aWx0IG1l
YXN1cmUgKi8KLXN0YXRpYyBjb25zdCBvcHVzX2ludDMyIHRpbHRXZWlnaHRzWyBWQURfTl9CQU5E
UyBdID0geyAzMDAwMCwgNjAwMCwgLTEyMDAwLCAtMTIwMDAgfTsKLQotLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIEdldCB0aGUgc3BlZWNoIGFjdGl2aXR5IGxl
dmVsIGluIFE4ICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot
b3B1c19pbnQgc2lsa19WQURfR2V0U0FfUThfc3NlNF8xKCAgICAgICAgICAgICAgICAgIC8qIE8g
ICAgUmV0dXJuIHZhbHVlLCAwIGlmIHN1Y2Nlc3MgICAgICAgICAgICAgICAgICAqLwotICAgIHNp
bGtfZW5jb2Rlcl9zdGF0ZSAgICAgICAgICAqcHNFbmNDLCAgICAgICAgICAgIC8qIEkvTyAgRW5j
b2RlciBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGNvbnN0IG9w
dXNfaW50MTYgICAgICAgICAgICBwSW5bXSAgICAgICAgICAgICAgIC8qIEkgICAgUENNIGlucHV0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKQotewotICAgIG9wdXNfaW50
ICAgU0FfUTE1LCBwU05SX2RCX1E3LCBpbnB1dF90aWx0OwotICAgIG9wdXNfaW50ICAgZGVjaW1h
dGVkX2ZyYW1lbGVuZ3RoMSwgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoMjsKLSAgICBvcHVzX2ludCAg
IGRlY2ltYXRlZF9mcmFtZWxlbmd0aDsKLSAgICBvcHVzX2ludCAgIGRlY19zdWJmcmFtZV9sZW5n
dGgsIGRlY19zdWJmcmFtZV9vZmZzZXQsIFNOUl9RNywgaSwgYiwgczsKLSAgICBvcHVzX2ludDMy
IHN1bVNxdWFyZWQsIHNtb290aF9jb2VmX1ExNjsKLSAgICBvcHVzX2ludDE2IEhQc3RhdGVUbXA7
Ci0gICAgVkFSREVDTCggb3B1c19pbnQxNiwgWCApOwotICAgIG9wdXNfaW50MzIgWG5yZ1sgVkFE
X05fQkFORFMgXTsKLSAgICBvcHVzX2ludDMyIE5yZ1RvTm9pc2VSYXRpb19ROFsgVkFEX05fQkFO
RFMgXTsKLSAgICBvcHVzX2ludDMyIHNwZWVjaF9ucmcsIHhfdG1wOwotICAgIG9wdXNfaW50ICAg
WF9vZmZzZXRbIFZBRF9OX0JBTkRTIF07Ci0gICAgb3B1c19pbnQgICByZXQgPSAwOwotICAgIHNp
bGtfVkFEX3N0YXRlICpwc1NpbGtfVkFEID0gJnBzRW5jQy0+c1ZBRDsKLQotICAgIFNBVkVfU1RB
Q0s7Ci0KLSAgICAvKiBTYWZldHkgY2hlY2tzICovCi0gICAgc2lsa19hc3NlcnQoIFZBRF9OX0JB
TkRTID09IDQgKTsKLSAgICBzaWxrX2Fzc2VydCggTUFYX0ZSQU1FX0xFTkdUSCA+PSBwc0VuY0Mt
PmZyYW1lX2xlbmd0aCApOwotICAgIHNpbGtfYXNzZXJ0KCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA8
PSA1MTIgKTsKLSAgICBzaWxrX2Fzc2VydCggcHNFbmNDLT5mcmFtZV9sZW5ndGggPT0gOCAqIHNp
bGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMyApICk7Ci0KLSAgICAvKioqKioqKioq
KioqKioqKioqKioqKiovCi0gICAgLyogRmlsdGVyIGFuZCBEZWNpbWF0ZSAqLwotICAgIC8qKioq
KioqKioqKioqKioqKioqKioqKi8KLSAgICBkZWNpbWF0ZWRfZnJhbWVsZW5ndGgxID0gc2lsa19S
U0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCAxICk7Ci0gICAgZGVjaW1hdGVkX2ZyYW1lbGVu
Z3RoMiA9IHNpbGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMiApOwotICAgIGRlY2lt
YXRlZF9mcmFtZWxlbmd0aCA9IHNpbGtfUlNISUZUKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCwgMyAp
OwotICAgIC8qIERlY2ltYXRlIGludG8gNCBiYW5kczoKLSAgICAgICAwICAgICAgIEwgICAgICAz
TCAgICAgICBMICAgICAgICAgICAgICAzTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNUwK
LSAgICAgICAgICAgICAgIC0gICAgICAtLSAgICAgICAtICAgICAgICAgICAgICAtLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLS0KLSAgICAgICAgICAgICAgIDggICAgICAgOCAgICAgICAy
ICAgICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQKLQotICAgICAg
IFswLTEga0h6fCB0ZW1wLiB8MS0yIGtIenwgICAgMi00IGtIeiAgICB8ICAgICAgICAgICAgNC04
IGtIeiAgICAgICAgICAgfAotCi0gICAgICAgVGhleSdyZSBhcnJhbmdlZCB0byBhbGxvdyB0aGUg
bWluaW1hbCAoIGZyYW1lX2xlbmd0aCAvIDQgKSBleHRyYQotICAgICAgIHNjcmF0Y2ggc3BhY2Ug
ZHVyaW5nIHRoZSBkb3duc2FtcGxpbmcgcHJvY2VzcyAqLwotICAgIFhfb2Zmc2V0WyAwIF0gPSAw
OwotICAgIFhfb2Zmc2V0WyAxIF0gPSBkZWNpbWF0ZWRfZnJhbWVsZW5ndGggKyBkZWNpbWF0ZWRf
ZnJhbWVsZW5ndGgyOwotICAgIFhfb2Zmc2V0WyAyIF0gPSBYX29mZnNldFsgMSBdICsgZGVjaW1h
dGVkX2ZyYW1lbGVuZ3RoOwotICAgIFhfb2Zmc2V0WyAzIF0gPSBYX29mZnNldFsgMiBdICsgZGVj
aW1hdGVkX2ZyYW1lbGVuZ3RoMjsKLSAgICBBTExPQyggWCwgWF9vZmZzZXRbIDMgXSArIGRlY2lt
YXRlZF9mcmFtZWxlbmd0aDEsIG9wdXNfaW50MTYgKTsKLQotICAgIC8qIDAtOCBrSHogdG8gMC00
IGtIeiBhbmQgNC04IGtIeiAqLwotICAgIHNpbGtfYW5hX2ZpbHRfYmFua18xKCBwSW4sICZwc1Np
bGtfVkFELT5BbmFTdGF0ZVsgIDAgXSwKLSAgICAgICAgWCwgJlhbIFhfb2Zmc2V0WyAzIF0gXSwg
cHNFbmNDLT5mcmFtZV9sZW5ndGggKTsKLQotICAgIC8qIDAtNCBrSHogdG8gMC0yIGtIeiBhbmQg
Mi00IGtIeiAqLwotICAgIHNpbGtfYW5hX2ZpbHRfYmFua18xKCBYLCAmcHNTaWxrX1ZBRC0+QW5h
U3RhdGUxWyAwIF0sCi0gICAgICAgIFgsICZYWyBYX29mZnNldFsgMiBdIF0sIGRlY2ltYXRlZF9m
cmFtZWxlbmd0aDEgKTsKLQotICAgIC8qIDAtMiBrSHogdG8gMC0xIGtIeiBhbmQgMS0yIGtIeiAq
LwotICAgIHNpbGtfYW5hX2ZpbHRfYmFua18xKCBYLCAmcHNTaWxrX1ZBRC0+QW5hU3RhdGUyWyAw
IF0sCi0gICAgICAgIFgsICZYWyBYX29mZnNldFsgMSBdIF0sIGRlY2ltYXRlZF9mcmFtZWxlbmd0
aDIgKTsKLQotICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi0gICAgLyogSFAgZmlsdGVyIG9uIGxvd2VzdCBiYW5kIChkaWZmZXJlbnRpYXRvcikgKi8K
LSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAg
IFhbIGRlY2ltYXRlZF9mcmFtZWxlbmd0aCAtIDEgXSA9IHNpbGtfUlNISUZUKCBYWyBkZWNpbWF0
ZWRfZnJhbWVsZW5ndGggLSAxIF0sIDEgKTsKLSAgICBIUHN0YXRlVG1wID0gWFsgZGVjaW1hdGVk
X2ZyYW1lbGVuZ3RoIC0gMSBdOwotICAgIGZvciggaSA9IGRlY2ltYXRlZF9mcmFtZWxlbmd0aCAt
IDE7IGkgPiAwOyBpLS0gKSB7Ci0gICAgICAgIFhbIGkgLSAxIF0gID0gc2lsa19SU0hJRlQoIFhb
IGkgLSAxIF0sIDEgKTsKLSAgICAgICAgWFsgaSBdICAgICAtPSBYWyBpIC0gMSBdOwotICAgIH0K
LSAgICBYWyAwIF0gLT0gcHNTaWxrX1ZBRC0+SFBzdGF0ZTsKLSAgICBwc1NpbGtfVkFELT5IUHN0
YXRlID0gSFBzdGF0ZVRtcDsKLQotICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwotICAgIC8qIENhbGN1bGF0ZSB0aGUgZW5lcmd5IGluIGVhY2ggYmFuZCAqLwotICAg
IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIGZvciggYiA9IDA7
IGIgPCBWQURfTl9CQU5EUzsgYisrICkgewotICAgICAgICAvKiBGaW5kIHRoZSBkZWNpbWF0ZWQg
ZnJhbWVsZW5ndGggaW4gdGhlIG5vbi11bmlmb3JtbHkgZGl2aWRlZCBiYW5kcyAqLwotICAgICAg
ICBkZWNpbWF0ZWRfZnJhbWVsZW5ndGggPSBzaWxrX1JTSElGVCggcHNFbmNDLT5mcmFtZV9sZW5n
dGgsIHNpbGtfbWluX2ludCggVkFEX05fQkFORFMgLSBiLCBWQURfTl9CQU5EUyAtIDEgKSApOwot
Ci0gICAgICAgIC8qIFNwbGl0IGxlbmd0aCBpbnRvIHN1YmZyYW1lIGxlbmd0aHMgKi8KLSAgICAg
ICAgZGVjX3N1YmZyYW1lX2xlbmd0aCA9IHNpbGtfUlNISUZUKCBkZWNpbWF0ZWRfZnJhbWVsZW5n
dGgsIFZBRF9JTlRFUk5BTF9TVUJGUkFNRVNfTE9HMiApOwotICAgICAgICBkZWNfc3ViZnJhbWVf
b2Zmc2V0ID0gMDsKLQotICAgICAgICAvKiBDb21wdXRlIGVuZXJneSBwZXIgc3ViLWZyYW1lICov
Ci0gICAgICAgIC8qIGluaXRpYWxpemUgd2l0aCBzdW1tZWQgZW5lcmd5IG9mIGxhc3Qgc3ViZnJh
bWUgKi8KLSAgICAgICAgWG5yZ1sgYiBdID0gcHNTaWxrX1ZBRC0+WG5yZ1N1YmZyWyBiIF07Ci0g
ICAgICAgIGZvciggcyA9IDA7IHMgPCBWQURfSU5URVJOQUxfU1VCRlJBTUVTOyBzKysgKSB7Ci0g
ICAgICAgICAgICBfX20xMjhpIHhtbV9YLCB4bW1fYWNjOwotICAgICAgICAgICAgc3VtU3F1YXJl
ZCA9IDA7Ci0KLSAgICAgICAgICAgIHhtbV9hY2MgPSBfbW1fc2V0emVyb19zaTEyOCgpOwotCi0g
ICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgZGVjX3N1YmZyYW1lX2xlbmd0aCAtIDc7IGkgKz0g
OCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeG1tX1ggICA9IF9tbV9sb2FkdV9z
aTEyOCggKF9fbTEyOGkgKikmKFhbIFhfb2Zmc2V0WyBiIF0gKyBpICsgZGVjX3N1YmZyYW1lX29m
ZnNldCBdICkgKTsKLSAgICAgICAgICAgICAgICB4bW1fWCAgID0gX21tX3NyYWlfZXBpMTYoIHht
bV9YLCAzICk7Ci0gICAgICAgICAgICAgICAgeG1tX1ggICA9IF9tbV9tYWRkX2VwaTE2KCB4bW1f
WCwgeG1tX1ggKTsKLSAgICAgICAgICAgICAgICB4bW1fYWNjID0gX21tX2FkZF9lcGkzMiggeG1t
X2FjYywgeG1tX1ggKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgeG1tX2FjYyA9IF9t
bV9hZGRfZXBpMzIoIHhtbV9hY2MsIF9tbV91bnBhY2toaV9lcGk2NCggeG1tX2FjYywgeG1tX2Fj
YyApICk7Ci0gICAgICAgICAgICB4bW1fYWNjID0gX21tX2FkZF9lcGkzMiggeG1tX2FjYywgX21t
X3NodWZmbGVsb19lcGkxNiggeG1tX2FjYywgMHgwRSApICk7Ci0KLSAgICAgICAgICAgIHN1bVNx
dWFyZWQgKz0gX21tX2N2dHNpMTI4X3NpMzIoIHhtbV9hY2MgKTsKLQotICAgICAgICAgICAgZm9y
KCA7IGkgPCBkZWNfc3ViZnJhbWVfbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgLyog
VGhlIGVuZXJneSB3aWxsIGJlIGxlc3MgdGhhbiBkZWNfc3ViZnJhbWVfbGVuZ3RoICogKCBzaWxr
X2ludDE2X01JTiAvIDggKSBeIDIuICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAvKiBU
aGVyZWZvcmUgd2UgY2FuIGFjY3VtdWxhdGUgd2l0aCBubyByaXNrIG9mIG92ZXJmbG93ICh1bmxl
c3MgZGVjX3N1YmZyYW1lX2xlbmd0aCA+IDEyOCkgICovCi0gICAgICAgICAgICAgICAgeF90bXAg
PSBzaWxrX1JTSElGVCgKLSAgICAgICAgICAgICAgICAgICAgWFsgWF9vZmZzZXRbIGIgXSArIGkg
KyBkZWNfc3ViZnJhbWVfb2Zmc2V0IF0sIDMgKTsKLSAgICAgICAgICAgICAgICBzdW1TcXVhcmVk
ID0gc2lsa19TTUxBQkIoIHN1bVNxdWFyZWQsIHhfdG1wLCB4X3RtcCApOwotCi0gICAgICAgICAg
ICAgICAgLyogU2FmZXR5IGNoZWNrICovCi0gICAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIHN1
bVNxdWFyZWQgPj0gMCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBBZGQvc2F0
dXJhdGUgc3VtbWVkIGVuZXJneSBvZiBjdXJyZW50IHN1YmZyYW1lICovCi0gICAgICAgICAgICBp
ZiggcyA8IFZBRF9JTlRFUk5BTF9TVUJGUkFNRVMgLSAxICkgewotICAgICAgICAgICAgICAgIFhu
cmdbIGIgXSA9IHNpbGtfQUREX1BPU19TQVQzMiggWG5yZ1sgYiBdLCBzdW1TcXVhcmVkICk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8qIExvb2stYWhlYWQgc3ViZnJh
bWUgKi8KLSAgICAgICAgICAgICAgICBYbnJnWyBiIF0gPSBzaWxrX0FERF9QT1NfU0FUMzIoIFhu
cmdbIGIgXSwgc2lsa19SU0hJRlQoIHN1bVNxdWFyZWQsIDEgKSApOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBkZWNfc3ViZnJhbWVfb2Zmc2V0ICs9IGRlY19zdWJmcmFtZV9sZW5ndGg7
Ci0gICAgICAgIH0KLSAgICAgICAgcHNTaWxrX1ZBRC0+WG5yZ1N1YmZyWyBiIF0gPSBzdW1TcXVh
cmVkOwotICAgIH0KLQotICAgIC8qKioqKioqKioqKioqKioqKioqKi8KLSAgICAvKiBOb2lzZSBl
c3RpbWF0aW9uICovCi0gICAgLyoqKioqKioqKioqKioqKioqKioqLwotICAgIHNpbGtfVkFEX0dl
dE5vaXNlTGV2ZWxzKCAmWG5yZ1sgMCBdLCBwc1NpbGtfVkFEICk7Ci0KLSAgICAvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgLyogU2lnbmFsLXBs
dXMtbm9pc2UgdG8gbm9pc2UgcmF0aW8gZXN0aW1hdGlvbiAqLwotICAgIC8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBzdW1TcXVhcmVkID0gMDsK
LSAgICBpbnB1dF90aWx0ID0gMDsKLSAgICBmb3IoIGIgPSAwOyBiIDwgVkFEX05fQkFORFM7IGIr
KyApIHsKLSAgICAgICAgc3BlZWNoX25yZyA9IFhucmdbIGIgXSAtIHBzU2lsa19WQUQtPk5MWyBi
IF07Ci0gICAgICAgIGlmKCBzcGVlY2hfbnJnID4gMCApIHsKLSAgICAgICAgICAgIC8qIERpdmlk
ZSwgd2l0aCBzdWZmaWNpZW50IHJlc29sdXRpb24gKi8KLSAgICAgICAgICAgIGlmKCAoIFhucmdb
IGIgXSAmIDB4RkY4MDAwMDAgKSA9PSAwICkgewotICAgICAgICAgICAgICAgIE5yZ1RvTm9pc2VS
YXRpb19ROFsgYiBdID0gc2lsa19ESVYzMiggc2lsa19MU0hJRlQoIFhucmdbIGIgXSwgOCApLCBw
c1NpbGtfVkFELT5OTFsgYiBdICsgMSApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBOcmdUb05vaXNlUmF0aW9fUThbIGIgXSA9IHNpbGtfRElWMzIoIFhucmdbIGIgXSwg
c2lsa19SU0hJRlQoIHBzU2lsa19WQUQtPk5MWyBiIF0sIDggKSArIDEgKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLyogQ29udmVydCB0byBsb2cgZG9tYWluICovCi0gICAgICAgICAg
ICBTTlJfUTcgPSBzaWxrX2xpbjJsb2coIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdICkgLSA4ICog
MTI4OwotCi0gICAgICAgICAgICAvKiBTdW0tb2Ytc3F1YXJlcyAqLwotICAgICAgICAgICAgc3Vt
U3F1YXJlZCA9IHNpbGtfU01MQUJCKCBzdW1TcXVhcmVkLCBTTlJfUTcsIFNOUl9RNyApOyAgICAg
ICAgICAvKiBRMTQgKi8KLQotICAgICAgICAgICAgLyogVGlsdCBtZWFzdXJlICovCi0gICAgICAg
ICAgICBpZiggc3BlZWNoX25yZyA8ICggKG9wdXNfaW50MzIpMSA8PCAyMCApICkgewotICAgICAg
ICAgICAgICAgIC8qIFNjYWxlIGRvd24gU05SIHZhbHVlIGZvciBzbWFsbCBzdWJiYW5kIHNwZWVj
aCBlbmVyZ2llcyAqLwotICAgICAgICAgICAgICAgIFNOUl9RNyA9IHNpbGtfU01VTFdCKCBzaWxr
X0xTSElGVCggc2lsa19TUVJUX0FQUFJPWCggc3BlZWNoX25yZyApLCA2ICksIFNOUl9RNyApOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5wdXRfdGlsdCA9IHNpbGtfU01MQVdCKCBpbnB1
dF90aWx0LCB0aWx0V2VpZ2h0c1sgYiBdLCBTTlJfUTcgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdID0gMjU2OwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLyogTWVhbi1vZi1zcXVhcmVzICovCi0gICAgc3VtU3F1YXJlZCA9IHNpbGtfRElW
MzJfMTYoIHN1bVNxdWFyZWQsIFZBRF9OX0JBTkRTICk7IC8qIFExNCAqLwotCi0gICAgLyogUm9v
dC1tZWFuLXNxdWFyZSBhcHByb3hpbWF0aW9uLCBzY2FsZSB0byBkQnMsIGFuZCB3cml0ZSB0byBv
dXRwdXQgcG9pbnRlciAqLwotICAgIHBTTlJfZEJfUTcgPSAob3B1c19pbnQxNikoIDMgKiBzaWxr
X1NRUlRfQVBQUk9YKCBzdW1TcXVhcmVkICkgKTsgLyogUTcgKi8KLQotICAgIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgLyogU3BlZWNoIFByb2JhYmlsaXR5IEVzdGlt
YXRpb24gKi8KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIFNB
X1ExNSA9IHNpbGtfc2lnbV9RMTUoIHNpbGtfU01VTFdCKCBWQURfU05SX0ZBQ1RPUl9RMTYsIHBT
TlJfZEJfUTcgKSAtIFZBRF9ORUdBVElWRV9PRkZTRVRfUTUgKTsKLQotICAgIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKi8KLSAgICAvKiBGcmVxdWVuY3kgVGlsdCBNZWFzdXJlICovCi0gICAg
LyoqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIHBzRW5jQy0+aW5wdXRfdGlsdF9RMTUg
PSBzaWxrX0xTSElGVCggc2lsa19zaWdtX1ExNSggaW5wdXRfdGlsdCApIC0gMTYzODQsIDEgKTsK
LQotICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLSAgICAvKiBTY2FsZSB0aGUgc2lnbW9pZCBvdXRwdXQgYmFzZWQgb24gcG93ZXIgbGV2ZWxz
ICovCi0gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLwotICAgIHNwZWVjaF9ucmcgPSAwOwotICAgIGZvciggYiA9IDA7IGIgPCBWQURfTl9CQU5E
UzsgYisrICkgewotICAgICAgICAvKiBBY2N1bXVsYXRlIHNpZ25hbC13aXRob3V0LW5vaXNlIGVu
ZXJnaWVzLCBoaWdoZXIgZnJlcXVlbmN5IGJhbmRzIGhhdmUgbW9yZSB3ZWlnaHQgKi8KLSAgICAg
ICAgc3BlZWNoX25yZyArPSAoIGIgKyAxICkgKiBzaWxrX1JTSElGVCggWG5yZ1sgYiBdIC0gcHNT
aWxrX1ZBRC0+TkxbIGIgXSwgNCApOwotICAgIH0KLQotICAgIC8qIFBvd2VyIHNjYWxpbmcgKi8K
LSAgICBpZiggc3BlZWNoX25yZyA8PSAwICkgewotICAgICAgICBTQV9RMTUgPSBzaWxrX1JTSElG
VCggU0FfUTE1LCAxICk7Ci0gICAgfSBlbHNlIGlmKCBzcGVlY2hfbnJnIDwgMzI3NjggKSB7Ci0g
ICAgICAgIGlmKCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSAxMCAqIHBzRW5jQy0+ZnNfa0h6ICkg
ewotICAgICAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtfTFNISUZUX1NBVDMyKCBzcGVlY2hfbnJn
LCAxNiApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtf
TFNISUZUX1NBVDMyKCBzcGVlY2hfbnJnLCAxNSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLyog
c3F1YXJlLXJvb3QgKi8KLSAgICAgICAgc3BlZWNoX25yZyA9IHNpbGtfU1FSVF9BUFBST1goIHNw
ZWVjaF9ucmcgKTsKLSAgICAgICAgU0FfUTE1ID0gc2lsa19TTVVMV0IoIDMyNzY4ICsgc3BlZWNo
X25yZywgU0FfUTE1ICk7Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdWx0aW5nIHNwZWVj
aCBhY3Rpdml0eSBpbiBROCAqLwotICAgIHBzRW5jQy0+c3BlZWNoX2FjdGl2aXR5X1E4ID0gc2ls
a19taW5faW50KCBzaWxrX1JTSElGVCggU0FfUTE1LCA3ICksIHNpbGtfdWludDhfTUFYICk7Ci0K
LSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgLyogRW5lcmd5
IExldmVsIGFuZCBTTlIgZXN0aW1hdGlvbiAqLwotICAgIC8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KLSAgICAvKiBTbW9vdGhpbmcgY29lZmZpY2llbnQgKi8KLSAgICBzbW9v
dGhfY29lZl9RMTYgPSBzaWxrX1NNVUxXQiggVkFEX1NOUl9TTU9PVEhfQ09FRl9RMTgsIHNpbGtf
U01VTFdCKCAob3B1c19pbnQzMilTQV9RMTUsIFNBX1ExNSApICk7Ci0KLSAgICBpZiggcHNFbmND
LT5mcmFtZV9sZW5ndGggPT0gMTAgKiBwc0VuY0MtPmZzX2tIeiApIHsKLSAgICAgICAgc21vb3Ro
X2NvZWZfUTE2ID4+PSAxOwotICAgIH0KLQotICAgIGZvciggYiA9IDA7IGIgPCBWQURfTl9CQU5E
UzsgYisrICkgewotICAgICAgICAvKiBjb21wdXRlIHNtb290aGVkIGVuZXJneS10by1ub2lzZSBy
YXRpbyBwZXIgYmFuZCAqLwotICAgICAgICBwc1NpbGtfVkFELT5OcmdSYXRpb1NtdGhfUThbIGIg
XSA9IHNpbGtfU01MQVdCKCBwc1NpbGtfVkFELT5OcmdSYXRpb1NtdGhfUThbIGIgXSwKLSAgICAg
ICAgICAgIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdIC0gcHNTaWxrX1ZBRC0+TnJnUmF0aW9TbXRo
X1E4WyBiIF0sIHNtb290aF9jb2VmX1ExNiApOwotCi0gICAgICAgIC8qIHNpZ25hbCB0byBub2lz
ZSByYXRpbyBpbiBkQiBwZXIgYmFuZCAqLwotICAgICAgICBTTlJfUTcgPSAzICogKCBzaWxrX2xp
bjJsb2coIHBzU2lsa19WQUQtPk5yZ1JhdGlvU210aF9ROFtiXSApIC0gOCAqIDEyOCApOwotICAg
ICAgICAvKiBxdWFsaXR5ID0gc2lnbW9pZCggMC4yNSAqICggU05SX2RCIC0gMTYgKSApOyAqLwot
ICAgICAgICBwc0VuY0MtPmlucHV0X3F1YWxpdHlfYmFuZHNfUTE1WyBiIF0gPSBzaWxrX3NpZ21f
UTE1KCBzaWxrX1JTSElGVCggU05SX1E3IC0gMTYgKiAxMjgsIDQgKSApOwotICAgIH0KLQotICAg
IFJFU1RPUkVfU1RBQ0s7Ci0gICAgcmV0dXJuKCByZXQgKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94
ODYvVkFEX3NzZTRfMS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9WQURfc3NlNF8xLmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyZGRm
NGFkMDgxNWZkZTI0NmMyMDE0YWQ2YjgwZGYwM2IzYmY3NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay94ODYvVkFEX3NzZTRfMS5jCkBAIC0wLDAgKzEsMjc3IEBACisvKiBDb3B5cmlnaHQgKGMpIDIw
MTQsIENpc2NvIFN5c3RlbXMsIElOQworICAgV3JpdHRlbiBieSBYaWFuZ01pbmdaaHUgV2VpWmhv
dSBNaW5QZW5nIFlhbldhbmcKKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBt
ZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
CisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8eG1taW50cmluLmg+CisjaW5jbHVk
ZSA8ZW1taW50cmluLmg+CisjaW5jbHVkZSA8c21taW50cmluLmg+CisKKyNpbmNsdWRlICJtYWlu
LmgiCisjaW5jbHVkZSAic3RhY2tfYWxsb2MuaCIKKworLyogV2VpZ2h0aW5nIGZhY3RvcnMgZm9y
IHRpbHQgbWVhc3VyZSAqLworc3RhdGljIGNvbnN0IG9wdXNfaW50MzIgdGlsdFdlaWdodHNbIFZB
RF9OX0JBTkRTIF0gPSB7IDMwMDAwLCA2MDAwLCAtMTIwMDAsIC0xMjAwMCB9OworCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogR2V0IHRoZSBzcGVlY2ggYWN0
aXZpdHkgbGV2ZWwgaW4gUTggKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCitvcHVzX2ludCBzaWxrX1ZBRF9HZXRTQV9ROF9zc2U0XzEoICAgICAgICAgICAgICAg
ICAgLyogTyAgICBSZXR1cm4gdmFsdWUsIDAgaWYgc3VjY2VzcyAgICAgICAgICAgICAgICAgICov
CisgICAgc2lsa19lbmNvZGVyX3N0YXRlICAgICAgICAgICpwc0VuY0MsICAgICAgICAgICAgLyog
SS9PICBFbmNvZGVyIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAg
Y29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgIHBJbltdICAgICAgICAgICAgICAgLyogSSAgICBQ
Q00gaW5wdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCispCit7CisgICAg
b3B1c19pbnQgICBTQV9RMTUsIHBTTlJfZEJfUTcsIGlucHV0X3RpbHQ7CisgICAgb3B1c19pbnQg
ICBkZWNpbWF0ZWRfZnJhbWVsZW5ndGgxLCBkZWNpbWF0ZWRfZnJhbWVsZW5ndGgyOworICAgIG9w
dXNfaW50ICAgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoOworICAgIG9wdXNfaW50ICAgZGVjX3N1YmZy
YW1lX2xlbmd0aCwgZGVjX3N1YmZyYW1lX29mZnNldCwgU05SX1E3LCBpLCBiLCBzOworICAgIG9w
dXNfaW50MzIgc3VtU3F1YXJlZCwgc21vb3RoX2NvZWZfUTE2OworICAgIG9wdXNfaW50MTYgSFBz
dGF0ZVRtcDsKKyAgICBWQVJERUNMKCBvcHVzX2ludDE2LCBYICk7CisgICAgb3B1c19pbnQzMiBY
bnJnWyBWQURfTl9CQU5EUyBdOworICAgIG9wdXNfaW50MzIgTnJnVG9Ob2lzZVJhdGlvX1E4WyBW
QURfTl9CQU5EUyBdOworICAgIG9wdXNfaW50MzIgc3BlZWNoX25yZywgeF90bXA7CisgICAgb3B1
c19pbnQgICBYX29mZnNldFsgVkFEX05fQkFORFMgXTsKKyAgICBvcHVzX2ludCAgIHJldCA9IDA7
CisgICAgc2lsa19WQURfc3RhdGUgKnBzU2lsa19WQUQgPSAmcHNFbmNDLT5zVkFEOworCisgICAg
U0FWRV9TVEFDSzsKKworICAgIC8qIFNhZmV0eSBjaGVja3MgKi8KKyAgICBzaWxrX2Fzc2VydCgg
VkFEX05fQkFORFMgPT0gNCApOworICAgIGNlbHRfYXNzZXJ0KCBNQVhfRlJBTUVfTEVOR1RIID49
IHBzRW5jQy0+ZnJhbWVfbGVuZ3RoICk7CisgICAgY2VsdF9hc3NlcnQoIHBzRW5jQy0+ZnJhbWVf
bGVuZ3RoIDw9IDUxMiApOworICAgIGNlbHRfYXNzZXJ0KCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9
PSA4ICogc2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCAzICkgKTsKKworICAgIC8q
KioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiBGaWx0ZXIgYW5kIERlY2ltYXRlICovCisg
ICAgLyoqKioqKioqKioqKioqKioqKioqKioqLworICAgIGRlY2ltYXRlZF9mcmFtZWxlbmd0aDEg
PSBzaWxrX1JTSElGVCggcHNFbmNDLT5mcmFtZV9sZW5ndGgsIDEgKTsKKyAgICBkZWNpbWF0ZWRf
ZnJhbWVsZW5ndGgyID0gc2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoLCAyICk7Cisg
ICAgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoID0gc2lsa19SU0hJRlQoIHBzRW5jQy0+ZnJhbWVfbGVu
Z3RoLCAzICk7CisgICAgLyogRGVjaW1hdGUgaW50byA0IGJhbmRzOgorICAgICAgIDAgICAgICAg
TCAgICAgIDNMICAgICAgIEwgICAgICAgICAgICAgIDNMICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1TAorICAgICAgICAgICAgICAgLSAgICAgIC0tICAgICAgIC0gICAgICAgICAgICAgIC0t
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorICAgICAgICAgICAgICAgOCAgICAgICA4
ICAgICAgIDIgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAor
CisgICAgICAgWzAtMSBrSHp8IHRlbXAuIHwxLTIga0h6fCAgICAyLTQga0h6ICAgIHwgICAgICAg
ICAgICA0LTgga0h6ICAgICAgICAgICB8CisKKyAgICAgICBUaGV5J3JlIGFycmFuZ2VkIHRvIGFs
bG93IHRoZSBtaW5pbWFsICggZnJhbWVfbGVuZ3RoIC8gNCApIGV4dHJhCisgICAgICAgc2NyYXRj
aCBzcGFjZSBkdXJpbmcgdGhlIGRvd25zYW1wbGluZyBwcm9jZXNzICovCisgICAgWF9vZmZzZXRb
IDAgXSA9IDA7CisgICAgWF9vZmZzZXRbIDEgXSA9IGRlY2ltYXRlZF9mcmFtZWxlbmd0aCArIGRl
Y2ltYXRlZF9mcmFtZWxlbmd0aDI7CisgICAgWF9vZmZzZXRbIDIgXSA9IFhfb2Zmc2V0WyAxIF0g
KyBkZWNpbWF0ZWRfZnJhbWVsZW5ndGg7CisgICAgWF9vZmZzZXRbIDMgXSA9IFhfb2Zmc2V0WyAy
IF0gKyBkZWNpbWF0ZWRfZnJhbWVsZW5ndGgyOworICAgIEFMTE9DKCBYLCBYX29mZnNldFsgMyBd
ICsgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoMSwgb3B1c19pbnQxNiApOworCisgICAgLyogMC04IGtI
eiB0byAwLTQga0h6IGFuZCA0LTgga0h6ICovCisgICAgc2lsa19hbmFfZmlsdF9iYW5rXzEoIHBJ
biwgJnBzU2lsa19WQUQtPkFuYVN0YXRlWyAgMCBdLAorICAgICAgICBYLCAmWFsgWF9vZmZzZXRb
IDMgXSBdLCBwc0VuY0MtPmZyYW1lX2xlbmd0aCApOworCisgICAgLyogMC00IGtIeiB0byAwLTIg
a0h6IGFuZCAyLTQga0h6ICovCisgICAgc2lsa19hbmFfZmlsdF9iYW5rXzEoIFgsICZwc1NpbGtf
VkFELT5BbmFTdGF0ZTFbIDAgXSwKKyAgICAgICAgWCwgJlhbIFhfb2Zmc2V0WyAyIF0gXSwgZGVj
aW1hdGVkX2ZyYW1lbGVuZ3RoMSApOworCisgICAgLyogMC0yIGtIeiB0byAwLTEga0h6IGFuZCAx
LTIga0h6ICovCisgICAgc2lsa19hbmFfZmlsdF9iYW5rXzEoIFgsICZwc1NpbGtfVkFELT5BbmFT
dGF0ZTJbIDAgXSwKKyAgICAgICAgWCwgJlhbIFhfb2Zmc2V0WyAxIF0gXSwgZGVjaW1hdGVkX2Zy
YW1lbGVuZ3RoMiApOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KKyAgICAvKiBIUCBmaWx0ZXIgb24gbG93ZXN0IGJhbmQgKGRpZmZlcmVudGlh
dG9yKSAqLworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCisgICAgWFsgZGVjaW1hdGVkX2ZyYW1lbGVuZ3RoIC0gMSBdID0gc2lsa19SU0hJRlQoIFhb
IGRlY2ltYXRlZF9mcmFtZWxlbmd0aCAtIDEgXSwgMSApOworICAgIEhQc3RhdGVUbXAgPSBYWyBk
ZWNpbWF0ZWRfZnJhbWVsZW5ndGggLSAxIF07CisgICAgZm9yKCBpID0gZGVjaW1hdGVkX2ZyYW1l
bGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHsKKyAgICAgICAgWFsgaSAtIDEgXSAgPSBzaWxrX1JT
SElGVCggWFsgaSAtIDEgXSwgMSApOworICAgICAgICBYWyBpIF0gICAgIC09IFhbIGkgLSAxIF07
CisgICAgfQorICAgIFhbIDAgXSAtPSBwc1NpbGtfVkFELT5IUHN0YXRlOworICAgIHBzU2lsa19W
QUQtPkhQc3RhdGUgPSBIUHN0YXRlVG1wOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCisgICAgLyogQ2FsY3VsYXRlIHRoZSBlbmVyZ3kgaW4gZWFjaCBiYW5k
ICovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgZm9y
KCBiID0gMDsgYiA8IFZBRF9OX0JBTkRTOyBiKysgKSB7CisgICAgICAgIC8qIEZpbmQgdGhlIGRl
Y2ltYXRlZCBmcmFtZWxlbmd0aCBpbiB0aGUgbm9uLXVuaWZvcm1seSBkaXZpZGVkIGJhbmRzICov
CisgICAgICAgIGRlY2ltYXRlZF9mcmFtZWxlbmd0aCA9IHNpbGtfUlNISUZUKCBwc0VuY0MtPmZy
YW1lX2xlbmd0aCwgc2lsa19taW5faW50KCBWQURfTl9CQU5EUyAtIGIsIFZBRF9OX0JBTkRTIC0g
MSApICk7CisKKyAgICAgICAgLyogU3BsaXQgbGVuZ3RoIGludG8gc3ViZnJhbWUgbGVuZ3RocyAq
LworICAgICAgICBkZWNfc3ViZnJhbWVfbGVuZ3RoID0gc2lsa19SU0hJRlQoIGRlY2ltYXRlZF9m
cmFtZWxlbmd0aCwgVkFEX0lOVEVSTkFMX1NVQkZSQU1FU19MT0cyICk7CisgICAgICAgIGRlY19z
dWJmcmFtZV9vZmZzZXQgPSAwOworCisgICAgICAgIC8qIENvbXB1dGUgZW5lcmd5IHBlciBzdWIt
ZnJhbWUgKi8KKyAgICAgICAgLyogaW5pdGlhbGl6ZSB3aXRoIHN1bW1lZCBlbmVyZ3kgb2YgbGFz
dCBzdWJmcmFtZSAqLworICAgICAgICBYbnJnWyBiIF0gPSBwc1NpbGtfVkFELT5YbnJnU3ViZnJb
IGIgXTsKKyAgICAgICAgZm9yKCBzID0gMDsgcyA8IFZBRF9JTlRFUk5BTF9TVUJGUkFNRVM7IHMr
KyApIHsKKyAgICAgICAgICAgIF9fbTEyOGkgeG1tX1gsIHhtbV9hY2M7CisgICAgICAgICAgICBz
dW1TcXVhcmVkID0gMDsKKworICAgICAgICAgICAgeG1tX2FjYyA9IF9tbV9zZXR6ZXJvX3NpMTI4
KCk7CisKKyAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBkZWNfc3ViZnJhbWVfbGVuZ3RoIC0g
NzsgaSArPSA4ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB4bW1fWCAgID0gX21t
X2xvYWR1X3NpMTI4KCAoX19tMTI4aSAqKSYoWFsgWF9vZmZzZXRbIGIgXSArIGkgKyBkZWNfc3Vi
ZnJhbWVfb2Zmc2V0IF0gKSApOworICAgICAgICAgICAgICAgIHhtbV9YICAgPSBfbW1fc3JhaV9l
cGkxNiggeG1tX1gsIDMgKTsKKyAgICAgICAgICAgICAgICB4bW1fWCAgID0gX21tX21hZGRfZXBp
MTYoIHhtbV9YLCB4bW1fWCApOworICAgICAgICAgICAgICAgIHhtbV9hY2MgPSBfbW1fYWRkX2Vw
aTMyKCB4bW1fYWNjLCB4bW1fWCApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB4bW1f
YWNjID0gX21tX2FkZF9lcGkzMiggeG1tX2FjYywgX21tX3VucGFja2hpX2VwaTY0KCB4bW1fYWNj
LCB4bW1fYWNjICkgKTsKKyAgICAgICAgICAgIHhtbV9hY2MgPSBfbW1fYWRkX2VwaTMyKCB4bW1f
YWNjLCBfbW1fc2h1ZmZsZWxvX2VwaTE2KCB4bW1fYWNjLCAweDBFICkgKTsKKworICAgICAgICAg
ICAgc3VtU3F1YXJlZCArPSBfbW1fY3Z0c2kxMjhfc2kzMiggeG1tX2FjYyApOworCisgICAgICAg
ICAgICBmb3IoIDsgaSA8IGRlY19zdWJmcmFtZV9sZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAg
ICAgICAvKiBUaGUgZW5lcmd5IHdpbGwgYmUgbGVzcyB0aGFuIGRlY19zdWJmcmFtZV9sZW5ndGgg
KiAoIHNpbGtfaW50MTZfTUlOIC8gOCApIF4gMi4gICAgICAgICAgICAqLworICAgICAgICAgICAg
ICAgIC8qIFRoZXJlZm9yZSB3ZSBjYW4gYWNjdW11bGF0ZSB3aXRoIG5vIHJpc2sgb2Ygb3ZlcmZs
b3cgKHVubGVzcyBkZWNfc3ViZnJhbWVfbGVuZ3RoID4gMTI4KSAgKi8KKyAgICAgICAgICAgICAg
ICB4X3RtcCA9IHNpbGtfUlNISUZUKAorICAgICAgICAgICAgICAgICAgICBYWyBYX29mZnNldFsg
YiBdICsgaSArIGRlY19zdWJmcmFtZV9vZmZzZXQgXSwgMyApOworICAgICAgICAgICAgICAgIHN1
bVNxdWFyZWQgPSBzaWxrX1NNTEFCQiggc3VtU3F1YXJlZCwgeF90bXAsIHhfdG1wICk7CisKKyAg
ICAgICAgICAgICAgICAvKiBTYWZldHkgY2hlY2sgKi8KKyAgICAgICAgICAgICAgICBzaWxrX2Fz
c2VydCggc3VtU3F1YXJlZCA+PSAwICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8q
IEFkZC9zYXR1cmF0ZSBzdW1tZWQgZW5lcmd5IG9mIGN1cnJlbnQgc3ViZnJhbWUgKi8KKyAgICAg
ICAgICAgIGlmKCBzIDwgVkFEX0lOVEVSTkFMX1NVQkZSQU1FUyAtIDEgKSB7CisgICAgICAgICAg
ICAgICAgWG5yZ1sgYiBdID0gc2lsa19BRERfUE9TX1NBVDMyKCBYbnJnWyBiIF0sIHN1bVNxdWFy
ZWQgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogTG9vay1haGVh
ZCBzdWJmcmFtZSAqLworICAgICAgICAgICAgICAgIFhucmdbIGIgXSA9IHNpbGtfQUREX1BPU19T
QVQzMiggWG5yZ1sgYiBdLCBzaWxrX1JTSElGVCggc3VtU3F1YXJlZCwgMSApICk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGRlY19zdWJmcmFtZV9vZmZzZXQgKz0gZGVjX3N1YmZyYW1l
X2xlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBwc1NpbGtfVkFELT5YbnJnU3ViZnJbIGIgXSA9
IHN1bVNxdWFyZWQ7CisgICAgfQorCisgICAgLyoqKioqKioqKioqKioqKioqKioqLworICAgIC8q
IE5vaXNlIGVzdGltYXRpb24gKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKiovCisgICAgc2ls
a19WQURfR2V0Tm9pc2VMZXZlbHMoICZYbnJnWyAwIF0sIHBzU2lsa19WQUQgKTsKKworICAgIC8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiBT
aWduYWwtcGx1cy1ub2lzZSB0byBub2lzZSByYXRpbyBlc3RpbWF0aW9uICovCisgICAgLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIHN1bVNxdWFy
ZWQgPSAwOworICAgIGlucHV0X3RpbHQgPSAwOworICAgIGZvciggYiA9IDA7IGIgPCBWQURfTl9C
QU5EUzsgYisrICkgeworICAgICAgICBzcGVlY2hfbnJnID0gWG5yZ1sgYiBdIC0gcHNTaWxrX1ZB
RC0+TkxbIGIgXTsKKyAgICAgICAgaWYoIHNwZWVjaF9ucmcgPiAwICkgeworICAgICAgICAgICAg
LyogRGl2aWRlLCB3aXRoIHN1ZmZpY2llbnQgcmVzb2x1dGlvbiAqLworICAgICAgICAgICAgaWYo
ICggWG5yZ1sgYiBdICYgMHhGRjgwMDAwMCApID09IDAgKSB7CisgICAgICAgICAgICAgICAgTnJn
VG9Ob2lzZVJhdGlvX1E4WyBiIF0gPSBzaWxrX0RJVjMyKCBzaWxrX0xTSElGVCggWG5yZ1sgYiBd
LCA4ICksIHBzU2lsa19WQUQtPk5MWyBiIF0gKyAxICk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIE5yZ1RvTm9pc2VSYXRpb19ROFsgYiBdID0gc2lsa19ESVYzMiggWG5y
Z1sgYiBdLCBzaWxrX1JTSElGVCggcHNTaWxrX1ZBRC0+TkxbIGIgXSwgOCApICsgMSApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb252ZXJ0IHRvIGxvZyBkb21haW4gKi8KKyAg
ICAgICAgICAgIFNOUl9RNyA9IHNpbGtfbGluMmxvZyggTnJnVG9Ob2lzZVJhdGlvX1E4WyBiIF0g
KSAtIDggKiAxMjg7CisKKyAgICAgICAgICAgIC8qIFN1bS1vZi1zcXVhcmVzICovCisgICAgICAg
ICAgICBzdW1TcXVhcmVkID0gc2lsa19TTUxBQkIoIHN1bVNxdWFyZWQsIFNOUl9RNywgU05SX1E3
ICk7ICAgICAgICAgIC8qIFExNCAqLworCisgICAgICAgICAgICAvKiBUaWx0IG1lYXN1cmUgKi8K
KyAgICAgICAgICAgIGlmKCBzcGVlY2hfbnJnIDwgKCAob3B1c19pbnQzMikxIDw8IDIwICkgKSB7
CisgICAgICAgICAgICAgICAgLyogU2NhbGUgZG93biBTTlIgdmFsdWUgZm9yIHNtYWxsIHN1YmJh
bmQgc3BlZWNoIGVuZXJnaWVzICovCisgICAgICAgICAgICAgICAgU05SX1E3ID0gc2lsa19TTVVM
V0IoIHNpbGtfTFNISUZUKCBzaWxrX1NRUlRfQVBQUk9YKCBzcGVlY2hfbnJnICksIDYgKSwgU05S
X1E3ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnB1dF90aWx0ID0gc2lsa19TTUxB
V0IoIGlucHV0X3RpbHQsIHRpbHRXZWlnaHRzWyBiIF0sIFNOUl9RNyApOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgTnJnVG9Ob2lzZVJhdGlvX1E4WyBiIF0gPSAyNTY7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvKiBNZWFuLW9mLXNxdWFyZXMgKi8KKyAgICBzdW1TcXVhcmVkID0g
c2lsa19ESVYzMl8xNiggc3VtU3F1YXJlZCwgVkFEX05fQkFORFMgKTsgLyogUTE0ICovCisKKyAg
ICAvKiBSb290LW1lYW4tc3F1YXJlIGFwcHJveGltYXRpb24sIHNjYWxlIHRvIGRCcywgYW5kIHdy
aXRlIHRvIG91dHB1dCBwb2ludGVyICovCisgICAgcFNOUl9kQl9RNyA9IChvcHVzX2ludDE2KSgg
MyAqIHNpbGtfU1FSVF9BUFBST1goIHN1bVNxdWFyZWQgKSApOyAvKiBRNyAqLworCisgICAgLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiBTcGVlY2ggUHJvYmFiaWxp
dHkgRXN0aW1hdGlvbiAqLworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisgICAgU0FfUTE1ID0gc2lsa19zaWdtX1ExNSggc2lsa19TTVVMV0IoIFZBRF9TTlJfRkFDVE9S
X1ExNiwgcFNOUl9kQl9RNyApIC0gVkFEX05FR0FUSVZFX09GRlNFVF9RNSApOworCisgICAgLyoq
KioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qIEZyZXF1ZW5jeSBUaWx0IE1lYXN1cmUg
Ki8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgcHNFbmNDLT5pbnB1dF90
aWx0X1ExNSA9IHNpbGtfTFNISUZUKCBzaWxrX3NpZ21fUTE1KCBpbnB1dF90aWx0ICkgLSAxNjM4
NCwgMSApOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLworICAgIC8qIFNjYWxlIHRoZSBzaWdtb2lkIG91dHB1dCBiYXNlZCBvbiBwb3dl
ciBsZXZlbHMgKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCisgICAgc3BlZWNoX25yZyA9IDA7CisgICAgZm9yKCBiID0gMDsgYiA8IFZB
RF9OX0JBTkRTOyBiKysgKSB7CisgICAgICAgIC8qIEFjY3VtdWxhdGUgc2lnbmFsLXdpdGhvdXQt
bm9pc2UgZW5lcmdpZXMsIGhpZ2hlciBmcmVxdWVuY3kgYmFuZHMgaGF2ZSBtb3JlIHdlaWdodCAq
LworICAgICAgICBzcGVlY2hfbnJnICs9ICggYiArIDEgKSAqIHNpbGtfUlNISUZUKCBYbnJnWyBi
IF0gLSBwc1NpbGtfVkFELT5OTFsgYiBdLCA0ICk7CisgICAgfQorCisgICAgLyogUG93ZXIgc2Nh
bGluZyAqLworICAgIGlmKCBzcGVlY2hfbnJnIDw9IDAgKSB7CisgICAgICAgIFNBX1ExNSA9IHNp
bGtfUlNISUZUKCBTQV9RMTUsIDEgKTsKKyAgICB9IGVsc2UgaWYoIHNwZWVjaF9ucmcgPCAzMjc2
OCApIHsKKyAgICAgICAgaWYoIHBzRW5jQy0+ZnJhbWVfbGVuZ3RoID09IDEwICogcHNFbmNDLT5m
c19rSHogKSB7CisgICAgICAgICAgICBzcGVlY2hfbnJnID0gc2lsa19MU0hJRlRfU0FUMzIoIHNw
ZWVjaF9ucmcsIDE2ICk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzcGVlY2hfbnJn
ID0gc2lsa19MU0hJRlRfU0FUMzIoIHNwZWVjaF9ucmcsIDE1ICk7CisgICAgICAgIH0KKworICAg
ICAgICAvKiBzcXVhcmUtcm9vdCAqLworICAgICAgICBzcGVlY2hfbnJnID0gc2lsa19TUVJUX0FQ
UFJPWCggc3BlZWNoX25yZyApOworICAgICAgICBTQV9RMTUgPSBzaWxrX1NNVUxXQiggMzI3Njgg
KyBzcGVlY2hfbnJnLCBTQV9RMTUgKTsKKyAgICB9CisKKyAgICAvKiBDb3B5IHRoZSByZXN1bHRp
bmcgc3BlZWNoIGFjdGl2aXR5IGluIFE4ICovCisgICAgcHNFbmNDLT5zcGVlY2hfYWN0aXZpdHlf
UTggPSBzaWxrX21pbl9pbnQoIHNpbGtfUlNISUZUKCBTQV9RMTUsIDcgKSwgc2lsa191aW50OF9N
QVggKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAv
KiBFbmVyZ3kgTGV2ZWwgYW5kIFNOUiBlc3RpbWF0aW9uICovCisgICAgLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLworICAgIC8qIFNtb290aGluZyBjb2VmZmljaWVudCAqLwor
ICAgIHNtb290aF9jb2VmX1ExNiA9IHNpbGtfU01VTFdCKCBWQURfU05SX1NNT09USF9DT0VGX1Ex
OCwgc2lsa19TTVVMV0IoIChvcHVzX2ludDMyKVNBX1ExNSwgU0FfUTE1ICkgKTsKKworICAgIGlm
KCBwc0VuY0MtPmZyYW1lX2xlbmd0aCA9PSAxMCAqIHBzRW5jQy0+ZnNfa0h6ICkgeworICAgICAg
ICBzbW9vdGhfY29lZl9RMTYgPj49IDE7CisgICAgfQorCisgICAgZm9yKCBiID0gMDsgYiA8IFZB
RF9OX0JBTkRTOyBiKysgKSB7CisgICAgICAgIC8qIGNvbXB1dGUgc21vb3RoZWQgZW5lcmd5LXRv
LW5vaXNlIHJhdGlvIHBlciBiYW5kICovCisgICAgICAgIHBzU2lsa19WQUQtPk5yZ1JhdGlvU210
aF9ROFsgYiBdID0gc2lsa19TTUxBV0IoIHBzU2lsa19WQUQtPk5yZ1JhdGlvU210aF9ROFsgYiBd
LAorICAgICAgICAgICAgTnJnVG9Ob2lzZVJhdGlvX1E4WyBiIF0gLSBwc1NpbGtfVkFELT5OcmdS
YXRpb1NtdGhfUThbIGIgXSwgc21vb3RoX2NvZWZfUTE2ICk7CisKKyAgICAgICAgLyogc2lnbmFs
IHRvIG5vaXNlIHJhdGlvIGluIGRCIHBlciBiYW5kICovCisgICAgICAgIFNOUl9RNyA9IDMgKiAo
IHNpbGtfbGluMmxvZyggcHNTaWxrX1ZBRC0+TnJnUmF0aW9TbXRoX1E4W2JdICkgLSA4ICogMTI4
ICk7CisgICAgICAgIC8qIHF1YWxpdHkgPSBzaWdtb2lkKCAwLjI1ICogKCBTTlJfZEIgLSAxNiAp
ICk7ICovCisgICAgICAgIHBzRW5jQy0+aW5wdXRfcXVhbGl0eV9iYW5kc19RMTVbIGIgXSA9IHNp
bGtfc2lnbV9RMTUoIHNpbGtfUlNISUZUKCBTTlJfUTcgLSAxNiAqIDEyOCwgNCApICk7CisgICAg
fQorCisgICAgUkVTVE9SRV9TVEFDSzsKKyAgICByZXR1cm4oIHJldCApOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3Ny
Yy9zaWxrL3g4Ni9WUV9XTWF0X0VDX3NzZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9WUV9XTWF0X0VDX3NzZS5jCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGQ2YzZkMGVjNmU0ZTlhNzQxNGNkNGRlODdk
ZTk3MjdhYzIwNjg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvc2lsay94ODYvVlFfV01hdF9FQ19zc2UuYworKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCww
IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENpc2NvIFN5c3RlbXMsIElOQwotICAgV3JpdHRl
biBieSBYaWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5QZW5nIFlhbldhbmcKLQotICAgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotICAg
LSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICAgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgot
ICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YKLSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAgIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lm
ZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVk
ZSA8eG1taW50cmluLmg+Ci0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jaW5jbHVkZSA8c21taW50
cmluLmg+Ci0jaW5jbHVkZSAibWFpbi5oIgotI2luY2x1ZGUgImNlbHQveDg2L3g4NmNwdS5oIgot
Ci0vKiBFbnRyb3B5IGNvbnN0cmFpbmVkIG1hdHJpeC13ZWlnaHRlZCBWUSwgaGFyZC1jb2RlZCB0
byA1LWVsZW1lbnQgdmVjdG9ycywgZm9yIGEgc2luZ2xlIGlucHV0IGRhdGEgdmVjdG9yICovCi12
b2lkIHNpbGtfVlFfV01hdF9FQ19zc2U0XzEoCi0gICAgb3B1c19pbnQ4ICAgICAgICAgICAgICAg
ICAgICppbmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBpbmRleCBvZiBiZXN0
IGNvZGVib29rIHZlY3RvciAgICAgICAgICAgICAgICovCi0gICAgb3B1c19pbnQzMiAgICAgICAg
ICAgICAgICAgICpyYXRlX2Rpc3RfUTE0LCAgICAgICAgICAgICAgICAgLyogTyAgICBiZXN0IHdl
aWdodGVkIHF1YW50IGVycm9yICsgbXUgKiByYXRlICAgICAgICovCi0gICAgb3B1c19pbnQgICAg
ICAgICAgICAgICAgICAgICpnYWluX1E3LCAgICAgICAgICAgICAgICAgICAgICAgLyogTyAgICBz
dW0gb2YgYWJzb2x1dGUgTFRQIGNvZWZmaWNpZW50cyAgICAgICAgICAgICovCi0gICAgY29uc3Qg
b3B1c19pbnQxNiAgICAgICAgICAgICppbl9RMTQsICAgICAgICAgICAgICAgICAgICAgICAgLyog
SSAgICBpbnB1dCB2ZWN0b3IgdG8gYmUgcXVhbnRpemVkICAgICAgICAgICAgICAgICovCi0gICAg
Y29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgICpXX1ExOCwgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSSAgICB3ZWlnaHRpbmcgbWF0cml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
Ci0gICAgY29uc3Qgb3B1c19pbnQ4ICAgICAgICAgICAgICpjYl9RNywgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSSAgICBjb2RlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgY29uc3Qgb3B1c191aW50OCAgICAgICAgICAgICpjYl9nYWluX1E3LCAgICAg
ICAgICAgICAgICAgICAgLyogSSAgICBjb2RlYm9vayBlZmZlY3RpdmUgZ2FpbiAgICAgICAgICAg
ICAgICAgICAgICovCi0gICAgY29uc3Qgb3B1c191aW50OCAgICAgICAgICAgICpjbF9RNSwgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBjb2RlIGxlbmd0aCBmb3IgZWFjaCBjb2RlYm9v
ayB2ZWN0b3IgICAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQgICAgICAgICAgICAgIG11X1E5
LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICB0cmFkZW9mZiBiZXR3LiB3ZWlnaHRl
ZCBlcnJvciBhbmQgcmF0ZSAgICAgICovCi0gICAgY29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAg
IG1heF9nYWluX1E3LCAgICAgICAgICAgICAgICAgICAgLyogSSAgICBtYXhpbXVtIHN1bSBvZiBh
YnNvbHV0ZSBMVFAgY29lZmZpY2llbnRzICAgICovCi0gICAgb3B1c19pbnQgICAgICAgICAgICAg
ICAgICAgIEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBudW1iZXIgb2Yg
dmVjdG9ycyBpbiBjb2RlYm9vayAgICAgICAgICAgICAgICovCi0pCi17Ci0gICAgb3B1c19pbnQg
ICBrLCBnYWluX3RtcF9RNzsKLSAgICBjb25zdCBvcHVzX2ludDggKmNiX3Jvd19RNzsKLSAgICBv
cHVzX2ludDE2IGRpZmZfUTE0WyA1IF07Ci0gICAgb3B1c19pbnQzMiBzdW0xX1ExNCwgc3VtMl9R
MTY7Ci0KLSAgICBfX20xMjhpIENfdG1wMSwgQ190bXAyLCBDX3RtcDMsIENfdG1wNCwgQ190bXA1
OwotICAgIC8qIExvb3Agb3ZlciBjb2RlYm9vayAqLwotICAgICpyYXRlX2Rpc3RfUTE0ID0gc2ls
a19pbnQzMl9NQVg7Ci0gICAgY2Jfcm93X1E3ID0gY2JfUTc7Ci0gICAgZm9yKCBrID0gMDsgayA8
IEw7IGsrKyApIHsKLSAgICAgICAgZ2Fpbl90bXBfUTcgPSBjYl9nYWluX1E3W2tdOwotCi0gICAg
ICAgIGRpZmZfUTE0WyAwIF0gPSBpbl9RMTRbIDAgXSAtIHNpbGtfTFNISUZUKCBjYl9yb3dfUTdb
IDAgXSwgNyApOwotCi0gICAgICAgIENfdG1wMSA9IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJmlu
X1ExNFsgMSBdICk7Ci0gICAgICAgIENfdG1wMiA9IE9QX0NWVEVQSThfRVBJMzJfTTMyKCAmY2Jf
cm93X1E3WyAxIF0gKTsKLSAgICAgICAgQ190bXAyID0gX21tX3NsbGlfZXBpMzIoIENfdG1wMiwg
NyApOwotICAgICAgICBDX3RtcDEgPSBfbW1fc3ViX2VwaTMyKCBDX3RtcDEsIENfdG1wMiApOwot
Ci0gICAgICAgIGRpZmZfUTE0WyAxIF0gPSBfbW1fZXh0cmFjdF9lcGkxNiggQ190bXAxLCAwICk7
Ci0gICAgICAgIGRpZmZfUTE0WyAyIF0gPSBfbW1fZXh0cmFjdF9lcGkxNiggQ190bXAxLCAyICk7
Ci0gICAgICAgIGRpZmZfUTE0WyAzIF0gPSBfbW1fZXh0cmFjdF9lcGkxNiggQ190bXAxLCA0ICk7
Ci0gICAgICAgIGRpZmZfUTE0WyA0IF0gPSBfbW1fZXh0cmFjdF9lcGkxNiggQ190bXAxLCA2ICk7
Ci0KLSAgICAgICAgLyogV2VpZ2h0ZWQgcmF0ZSAqLwotICAgICAgICBzdW0xX1ExNCA9IHNpbGtf
U01VTEJCKCBtdV9ROSwgY2xfUTVbIGsgXSApOwotCi0gICAgICAgIC8qIFBlbmFsdHkgZm9yIHRv
byBsYXJnZSBnYWluICovCi0gICAgICAgIHN1bTFfUTE0ID0gc2lsa19BRERfTFNISUZUMzIoIHN1
bTFfUTE0LCBzaWxrX21heCggc2lsa19TVUIzMiggZ2Fpbl90bXBfUTcsIG1heF9nYWluX1E3ICks
IDAgKSwgMTAgKTsKLQotICAgICAgICBzaWxrX2Fzc2VydCggc3VtMV9RMTQgPj0gMCApOwotCi0g
ICAgICAgIC8qIGZpcnN0IHJvdyBvZiBXX1ExOCAqLwotICAgICAgICBDX3RtcDMgPSBfbW1fbG9h
ZHVfc2kxMjgoIChfX20xMjhpICopKCZXX1ExOFsgMSBdICkgKTsKLSAgICAgICAgQ190bXA0ID0g
X21tX211bF9lcGkzMiggQ190bXAzLCBDX3RtcDEgKTsKLSAgICAgICAgQ190bXA0ID0gX21tX3Ny
bGlfc2kxMjgoIENfdG1wNCwgMiApOwotCi0gICAgICAgIENfdG1wMSA9IF9tbV9zaHVmZmxlX2Vw
aTMyKCBDX3RtcDEsIF9NTV9TSFVGRkxFKCAwLCAzLCAyLCAxICkgKTsgLyogc2hpZnQgcmlnaHQg
NCBieXRlcyAqLwotICAgICAgICBDX3RtcDMgPSBfbW1fc2h1ZmZsZV9lcGkzMiggQ190bXAzLCBf
TU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8qIHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KLQot
ICAgICAgICBDX3RtcDUgPSBfbW1fbXVsX2VwaTMyKCBDX3RtcDMsIENfdG1wMSApOwotICAgICAg
ICBDX3RtcDUgPSBfbW1fc3JsaV9zaTEyOCggQ190bXA1LCAyICk7Ci0KLSAgICAgICAgQ190bXA1
ID0gX21tX2FkZF9lcGkzMiggQ190bXA0LCBDX3RtcDUgKTsKLSAgICAgICAgQ190bXA1ID0gX21t
X3NsbGlfZXBpMzIoIENfdG1wNSwgMSApOwotCi0gICAgICAgIENfdG1wNSA9IF9tbV9hZGRfZXBp
MzIoIENfdG1wNSwgX21tX3NodWZmbGVfZXBpMzIoIENfdG1wNSwgX01NX1NIVUZGTEUoIDAsIDAs
IDAsIDIgKSApICk7Ci0gICAgICAgIHN1bTJfUTE2ID0gX21tX2N2dHNpMTI4X3NpMzIoIENfdG1w
NSApOwotCi0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1bTJfUTE2LCBXX1ExOFsg
IDAgXSwgZGlmZl9RMTRbIDAgXSApOwotICAgICAgICBzdW0xX1ExNCA9IHNpbGtfU01MQVdCKCBz
dW0xX1ExNCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0WyAwIF0gKTsKLQotICAgICAgICAvKiBzZWNv
bmQgcm93IG9mIFdfUTE4ICovCi0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTVVMV0IoICAgICAg
ICAgICBXX1ExOFsgIDcgXSwgZGlmZl9RMTRbIDIgXSApOwotICAgICAgICBzdW0yX1ExNiA9IHNp
bGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbICA4IF0sIGRpZmZfUTE0WyAzIF0gKTsKLSAgICAg
ICAgc3VtMl9RMTYgPSBzaWxrX1NNTEFXQiggc3VtMl9RMTYsIFdfUTE4WyAgOSBdLCBkaWZmX1Ex
NFsgNCBdICk7Ci0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19MU0hJRlQoIHN1bTJfUTE2LCAxICk7
Ci0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1bTJfUTE2LCBXX1ExOFsgIDYgXSwg
ZGlmZl9RMTRbIDEgXSApOwotICAgICAgICBzdW0xX1ExNCA9IHNpbGtfU01MQVdCKCBzdW0xX1Ex
NCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0WyAxIF0gKTsKLQotICAgICAgICAvKiB0aGlyZCByb3cg
b2YgV19RMTggKi8KLSAgICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNVUxXQiggICAgICAgICAgIFdf
UTE4WyAxMyBdLCBkaWZmX1ExNFsgMyBdICk7Ci0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxB
V0IoIHN1bTJfUTE2LCBXX1ExOFsgMTQgXSwgZGlmZl9RMTRbIDQgXSApOwotICAgICAgICBzdW0y
X1ExNiA9IHNpbGtfTFNISUZUKCBzdW0yX1ExNiwgMSApOwotICAgICAgICBzdW0yX1ExNiA9IHNp
bGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbIDEyIF0sIGRpZmZfUTE0WyAyIF0gKTsKLSAgICAg
ICAgc3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3VtMV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1Ex
NFsgMiBdICk7Ci0KLSAgICAgICAgLyogZm91cnRoIHJvdyBvZiBXX1ExOCAqLwotICAgICAgICBz
dW0yX1ExNiA9IHNpbGtfU01VTFdCKCAgICAgICAgICAgV19RMThbIDE5IF0sIGRpZmZfUTE0WyA0
IF0gKTsKLSAgICAgICAgc3VtMl9RMTYgPSBzaWxrX0xTSElGVCggc3VtMl9RMTYsIDEgKTsKLSAg
ICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNTEFXQiggc3VtMl9RMTYsIFdfUTE4WyAxOCBdLCBkaWZm
X1ExNFsgMyBdICk7Ci0gICAgICAgIHN1bTFfUTE0ID0gc2lsa19TTUxBV0IoIHN1bTFfUTE0LCBz
dW0yX1ExNiwgICAgZGlmZl9RMTRbIDMgXSApOwotCi0gICAgICAgIC8qIGxhc3Qgcm93IG9mIFdf
UTE4ICovCi0gICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTVVMV0IoICAgICAgICAgICBXX1ExOFsg
MjQgXSwgZGlmZl9RMTRbIDQgXSApOwotICAgICAgICBzdW0xX1ExNCA9IHNpbGtfU01MQVdCKCBz
dW0xX1ExNCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0WyA0IF0gKTsKLQotICAgICAgICBzaWxrX2Fz
c2VydCggc3VtMV9RMTQgPj0gMCApOwotCi0gICAgICAgIC8qIGZpbmQgYmVzdCAqLwotICAgICAg
ICBpZiggc3VtMV9RMTQgPCAqcmF0ZV9kaXN0X1ExNCApIHsKLSAgICAgICAgICAgICpyYXRlX2Rp
c3RfUTE0ID0gc3VtMV9RMTQ7Ci0gICAgICAgICAgICAqaW5kID0gKG9wdXNfaW50OClrOwotICAg
ICAgICAgICAgKmdhaW5fUTcgPSBnYWluX3RtcF9RNzsKLSAgICAgICAgfQotCi0gICAgICAgIC8q
IEdvIHRvIG5leHQgY2JrIHZlY3RvciAqLwotICAgICAgICBjYl9yb3dfUTcgKz0gTFRQX09SREVS
OwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2lsay94ODYvVlFfV01hdF9FQ19zc2U0XzEuYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc2ls
ay94ODYvVlFfV01hdF9FQ19zc2U0XzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGQ2YzZkMGVjNmU0ZTlhNzQx
NGNkNGRlODdkZTk3MjdhYzIwNjg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zaWxrL3g4Ni9WUV9XTWF0
X0VDX3NzZTRfMS5jCkBAIC0wLDAgKzEsMTQyIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENp
c2NvIFN5c3RlbXMsIElOQworICAgV3JpdHRlbiBieSBYaWFuZ01pbmdaaHUgV2VpWmhvdSBNaW5Q
ZW5nIFlhbldhbmcKKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBtZXQ6CisK
KyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8eG1taW50cmluLmg+CisjaW5jbHVkZSA8ZW1t
aW50cmluLmg+CisjaW5jbHVkZSA8c21taW50cmluLmg+CisjaW5jbHVkZSAibWFpbi5oIgorI2lu
Y2x1ZGUgImNlbHQveDg2L3g4NmNwdS5oIgorCisvKiBFbnRyb3B5IGNvbnN0cmFpbmVkIG1hdHJp
eC13ZWlnaHRlZCBWUSwgaGFyZC1jb2RlZCB0byA1LWVsZW1lbnQgdmVjdG9ycywgZm9yIGEgc2lu
Z2xlIGlucHV0IGRhdGEgdmVjdG9yICovCit2b2lkIHNpbGtfVlFfV01hdF9FQ19zc2U0XzEoCisg
ICAgb3B1c19pbnQ4ICAgICAgICAgICAgICAgICAgICppbmQsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogTyAgICBpbmRleCBvZiBiZXN0IGNvZGVib29rIHZlY3RvciAgICAgICAgICAgICAg
ICovCisgICAgb3B1c19pbnQzMiAgICAgICAgICAgICAgICAgICpyYXRlX2Rpc3RfUTE0LCAgICAg
ICAgICAgICAgICAgLyogTyAgICBiZXN0IHdlaWdodGVkIHF1YW50IGVycm9yICsgbXUgKiByYXRl
ICAgICAgICovCisgICAgb3B1c19pbnQgICAgICAgICAgICAgICAgICAgICpnYWluX1E3LCAgICAg
ICAgICAgICAgICAgICAgICAgLyogTyAgICBzdW0gb2YgYWJzb2x1dGUgTFRQIGNvZWZmaWNpZW50
cyAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQxNiAgICAgICAgICAgICppbl9RMTQs
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBpbnB1dCB2ZWN0b3IgdG8gYmUgcXVhbnRp
emVkICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgICpX
X1ExOCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICB3ZWlnaHRpbmcgbWF0cml4ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c19pbnQ4ICAgICAgICAg
ICAgICpjYl9RNywgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBjb2RlYm9vayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c191aW50OCAg
ICAgICAgICAgICpjYl9nYWluX1E3LCAgICAgICAgICAgICAgICAgICAgLyogSSAgICBjb2RlYm9v
ayBlZmZlY3RpdmUgZ2FpbiAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29uc3Qgb3B1c191
aW50OCAgICAgICAgICAgICpjbF9RNSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgICBj
b2RlIGxlbmd0aCBmb3IgZWFjaCBjb2RlYm9vayB2ZWN0b3IgICAgICAgICovCisgICAgY29uc3Qg
b3B1c19pbnQgICAgICAgICAgICAgIG11X1E5LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
SSAgICB0cmFkZW9mZiBiZXR3LiB3ZWlnaHRlZCBlcnJvciBhbmQgcmF0ZSAgICAgICovCisgICAg
Y29uc3Qgb3B1c19pbnQzMiAgICAgICAgICAgIG1heF9nYWluX1E3LCAgICAgICAgICAgICAgICAg
ICAgLyogSSAgICBtYXhpbXVtIHN1bSBvZiBhYnNvbHV0ZSBMVFAgY29lZmZpY2llbnRzICAgICov
CisgICAgb3B1c19pbnQgICAgICAgICAgICAgICAgICAgIEwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSSAgICBudW1iZXIgb2YgdmVjdG9ycyBpbiBjb2RlYm9vayAgICAgICAgICAg
ICAgICovCispCit7CisgICAgb3B1c19pbnQgICBrLCBnYWluX3RtcF9RNzsKKyAgICBjb25zdCBv
cHVzX2ludDggKmNiX3Jvd19RNzsKKyAgICBvcHVzX2ludDE2IGRpZmZfUTE0WyA1IF07CisgICAg
b3B1c19pbnQzMiBzdW0xX1ExNCwgc3VtMl9RMTY7CisKKyAgICBfX20xMjhpIENfdG1wMSwgQ190
bXAyLCBDX3RtcDMsIENfdG1wNCwgQ190bXA1OworICAgIC8qIExvb3Agb3ZlciBjb2RlYm9vayAq
LworICAgICpyYXRlX2Rpc3RfUTE0ID0gc2lsa19pbnQzMl9NQVg7CisgICAgY2Jfcm93X1E3ID0g
Y2JfUTc7CisgICAgZm9yKCBrID0gMDsgayA8IEw7IGsrKyApIHsKKyAgICAgICAgZ2Fpbl90bXBf
UTcgPSBjYl9nYWluX1E3W2tdOworCisgICAgICAgIGRpZmZfUTE0WyAwIF0gPSBpbl9RMTRbIDAg
XSAtIHNpbGtfTFNISUZUKCBjYl9yb3dfUTdbIDAgXSwgNyApOworCisgICAgICAgIENfdG1wMSA9
IE9QX0NWVEVQSTE2X0VQSTMyX002NCggJmluX1ExNFsgMSBdICk7CisgICAgICAgIENfdG1wMiA9
IE9QX0NWVEVQSThfRVBJMzJfTTMyKCAmY2Jfcm93X1E3WyAxIF0gKTsKKyAgICAgICAgQ190bXAy
ID0gX21tX3NsbGlfZXBpMzIoIENfdG1wMiwgNyApOworICAgICAgICBDX3RtcDEgPSBfbW1fc3Vi
X2VwaTMyKCBDX3RtcDEsIENfdG1wMiApOworCisgICAgICAgIGRpZmZfUTE0WyAxIF0gPSBfbW1f
ZXh0cmFjdF9lcGkxNiggQ190bXAxLCAwICk7CisgICAgICAgIGRpZmZfUTE0WyAyIF0gPSBfbW1f
ZXh0cmFjdF9lcGkxNiggQ190bXAxLCAyICk7CisgICAgICAgIGRpZmZfUTE0WyAzIF0gPSBfbW1f
ZXh0cmFjdF9lcGkxNiggQ190bXAxLCA0ICk7CisgICAgICAgIGRpZmZfUTE0WyA0IF0gPSBfbW1f
ZXh0cmFjdF9lcGkxNiggQ190bXAxLCA2ICk7CisKKyAgICAgICAgLyogV2VpZ2h0ZWQgcmF0ZSAq
LworICAgICAgICBzdW0xX1ExNCA9IHNpbGtfU01VTEJCKCBtdV9ROSwgY2xfUTVbIGsgXSApOwor
CisgICAgICAgIC8qIFBlbmFsdHkgZm9yIHRvbyBsYXJnZSBnYWluICovCisgICAgICAgIHN1bTFf
UTE0ID0gc2lsa19BRERfTFNISUZUMzIoIHN1bTFfUTE0LCBzaWxrX21heCggc2lsa19TVUIzMigg
Z2Fpbl90bXBfUTcsIG1heF9nYWluX1E3ICksIDAgKSwgMTAgKTsKKworICAgICAgICBzaWxrX2Fz
c2VydCggc3VtMV9RMTQgPj0gMCApOworCisgICAgICAgIC8qIGZpcnN0IHJvdyBvZiBXX1ExOCAq
LworICAgICAgICBDX3RtcDMgPSBfbW1fbG9hZHVfc2kxMjgoIChfX20xMjhpICopKCZXX1ExOFsg
MSBdICkgKTsKKyAgICAgICAgQ190bXA0ID0gX21tX211bF9lcGkzMiggQ190bXAzLCBDX3RtcDEg
KTsKKyAgICAgICAgQ190bXA0ID0gX21tX3NybGlfc2kxMjgoIENfdG1wNCwgMiApOworCisgICAg
ICAgIENfdG1wMSA9IF9tbV9zaHVmZmxlX2VwaTMyKCBDX3RtcDEsIF9NTV9TSFVGRkxFKCAwLCAz
LCAyLCAxICkgKTsgLyogc2hpZnQgcmlnaHQgNCBieXRlcyAqLworICAgICAgICBDX3RtcDMgPSBf
bW1fc2h1ZmZsZV9lcGkzMiggQ190bXAzLCBfTU1fU0hVRkZMRSggMCwgMywgMiwgMSApICk7IC8q
IHNoaWZ0IHJpZ2h0IDQgYnl0ZXMgKi8KKworICAgICAgICBDX3RtcDUgPSBfbW1fbXVsX2VwaTMy
KCBDX3RtcDMsIENfdG1wMSApOworICAgICAgICBDX3RtcDUgPSBfbW1fc3JsaV9zaTEyOCggQ190
bXA1LCAyICk7CisKKyAgICAgICAgQ190bXA1ID0gX21tX2FkZF9lcGkzMiggQ190bXA0LCBDX3Rt
cDUgKTsKKyAgICAgICAgQ190bXA1ID0gX21tX3NsbGlfZXBpMzIoIENfdG1wNSwgMSApOworCisg
ICAgICAgIENfdG1wNSA9IF9tbV9hZGRfZXBpMzIoIENfdG1wNSwgX21tX3NodWZmbGVfZXBpMzIo
IENfdG1wNSwgX01NX1NIVUZGTEUoIDAsIDAsIDAsIDIgKSApICk7CisgICAgICAgIHN1bTJfUTE2
ID0gX21tX2N2dHNpMTI4X3NpMzIoIENfdG1wNSApOworCisgICAgICAgIHN1bTJfUTE2ID0gc2ls
a19TTUxBV0IoIHN1bTJfUTE2LCBXX1ExOFsgIDAgXSwgZGlmZl9RMTRbIDAgXSApOworICAgICAg
ICBzdW0xX1ExNCA9IHNpbGtfU01MQVdCKCBzdW0xX1ExNCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0
WyAwIF0gKTsKKworICAgICAgICAvKiBzZWNvbmQgcm93IG9mIFdfUTE4ICovCisgICAgICAgIHN1
bTJfUTE2ID0gc2lsa19TTVVMV0IoICAgICAgICAgICBXX1ExOFsgIDcgXSwgZGlmZl9RMTRbIDIg
XSApOworICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbICA4
IF0sIGRpZmZfUTE0WyAzIF0gKTsKKyAgICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNTEFXQiggc3Vt
Ml9RMTYsIFdfUTE4WyAgOSBdLCBkaWZmX1ExNFsgNCBdICk7CisgICAgICAgIHN1bTJfUTE2ID0g
c2lsa19MU0hJRlQoIHN1bTJfUTE2LCAxICk7CisgICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxB
V0IoIHN1bTJfUTE2LCBXX1ExOFsgIDYgXSwgZGlmZl9RMTRbIDEgXSApOworICAgICAgICBzdW0x
X1ExNCA9IHNpbGtfU01MQVdCKCBzdW0xX1ExNCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0WyAxIF0g
KTsKKworICAgICAgICAvKiB0aGlyZCByb3cgb2YgV19RMTggKi8KKyAgICAgICAgc3VtMl9RMTYg
PSBzaWxrX1NNVUxXQiggICAgICAgICAgIFdfUTE4WyAxMyBdLCBkaWZmX1ExNFsgMyBdICk7Cisg
ICAgICAgIHN1bTJfUTE2ID0gc2lsa19TTUxBV0IoIHN1bTJfUTE2LCBXX1ExOFsgMTQgXSwgZGlm
Zl9RMTRbIDQgXSApOworICAgICAgICBzdW0yX1ExNiA9IHNpbGtfTFNISUZUKCBzdW0yX1ExNiwg
MSApOworICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01MQVdCKCBzdW0yX1ExNiwgV19RMThbIDEy
IF0sIGRpZmZfUTE0WyAyIF0gKTsKKyAgICAgICAgc3VtMV9RMTQgPSBzaWxrX1NNTEFXQiggc3Vt
MV9RMTQsIHN1bTJfUTE2LCAgICBkaWZmX1ExNFsgMiBdICk7CisKKyAgICAgICAgLyogZm91cnRo
IHJvdyBvZiBXX1ExOCAqLworICAgICAgICBzdW0yX1ExNiA9IHNpbGtfU01VTFdCKCAgICAgICAg
ICAgV19RMThbIDE5IF0sIGRpZmZfUTE0WyA0IF0gKTsKKyAgICAgICAgc3VtMl9RMTYgPSBzaWxr
X0xTSElGVCggc3VtMl9RMTYsIDEgKTsKKyAgICAgICAgc3VtMl9RMTYgPSBzaWxrX1NNTEFXQigg
c3VtMl9RMTYsIFdfUTE4WyAxOCBdLCBkaWZmX1ExNFsgMyBdICk7CisgICAgICAgIHN1bTFfUTE0
ID0gc2lsa19TTUxBV0IoIHN1bTFfUTE0LCBzdW0yX1ExNiwgICAgZGlmZl9RMTRbIDMgXSApOwor
CisgICAgICAgIC8qIGxhc3Qgcm93IG9mIFdfUTE4ICovCisgICAgICAgIHN1bTJfUTE2ID0gc2ls
a19TTVVMV0IoICAgICAgICAgICBXX1ExOFsgMjQgXSwgZGlmZl9RMTRbIDQgXSApOworICAgICAg
ICBzdW0xX1ExNCA9IHNpbGtfU01MQVdCKCBzdW0xX1ExNCwgc3VtMl9RMTYsICAgIGRpZmZfUTE0
WyA0IF0gKTsKKworICAgICAgICBzaWxrX2Fzc2VydCggc3VtMV9RMTQgPj0gMCApOworCisgICAg
ICAgIC8qIGZpbmQgYmVzdCAqLworICAgICAgICBpZiggc3VtMV9RMTQgPCAqcmF0ZV9kaXN0X1Ex
NCApIHsKKyAgICAgICAgICAgICpyYXRlX2Rpc3RfUTE0ID0gc3VtMV9RMTQ7CisgICAgICAgICAg
ICAqaW5kID0gKG9wdXNfaW50OClrOworICAgICAgICAgICAgKmdhaW5fUTcgPSBnYWluX3RtcF9R
NzsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEdvIHRvIG5leHQgY2JrIHZlY3RvciAqLworICAg
ICAgICBjYl9yb3dfUTcgKz0gTFRQX09SREVSOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL2Fu
YWx5c2lzLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NyYy9hbmFseXNpcy5jCmluZGV4IGY0MTYwZTRiNGVkNWMxMTRjZjdkNjEwZGJk
OTdhMTU2OTA2MGEwNzcuLmNiNDZkZWM1ODJkMmVjY2FkODM5MTRiNzA3MWE4NGY4ODc2YWY5ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc3JjL2FuYWx5c2lzLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvYW5hbHlzaXMuYwpAQCAtNTAsNiAr
NTAsOCBAQAogCiAjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCiAKKyNkZWZpbmUgVFJBTlNJVElP
Tl9QRU5BTFRZIDEwCisKIHN0YXRpYyBjb25zdCBmbG9hdCBkY3RfdGFibGVbMTI4XSA9IHsKICAg
ICAgICAgMC4yNTAwMDBmLCAwLjI1MDAwMGYsIDAuMjUwMDAwZiwgMC4yNTAwMDBmLCAwLjI1MDAw
MGYsIDAuMjUwMDAwZiwgMC4yNTAwMDBmLCAwLjI1MDAwMGYsCiAgICAgICAgIDAuMjUwMDAwZiwg
MC4yNTAwMDBmLCAwLjI1MDAwMGYsIDAuMjUwMDAwZiwgMC4yNTAwMDBmLCAwLjI1MDAwMGYsIDAu
MjUwMDAwZiwgMC4yNTAwMDBmLApAQCAtMjI0LDI1ICsyMjYsMzggQEAgdm9pZCB0b25hbGl0eV9h
bmFseXNpc19yZXNldChUb25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsKQogICAvKiBDbGVhciBu
b24tcmV1c2FibGUgZmllbGRzLiAqLwogICBjaGFyICpzdGFydCA9IChjaGFyKikmdG9uYWwtPlRP
TkFMSVRZX0FOQUxZU0lTX1JFU0VUX1NUQVJUOwogICBPUFVTX0NMRUFSKHN0YXJ0LCBzaXplb2Yo
VG9uYWxpdHlBbmFseXNpc1N0YXRlKSAtIChzdGFydCAtIChjaGFyKil0b25hbCkpOwotICB0b25h
bC0+bXVzaWNfY29uZmlkZW5jZSA9IC45ZjsKLSAgdG9uYWwtPnNwZWVjaF9jb25maWRlbmNlID0g
LjFmOwogfQogCiB2b2lkIHRvbmFsaXR5X2dldF9pbmZvKFRvbmFsaXR5QW5hbHlzaXNTdGF0ZSAq
dG9uYWwsIEFuYWx5c2lzSW5mbyAqaW5mb19vdXQsIGludCBsZW4pCiB7CiAgICBpbnQgcG9zOwog
ICAgaW50IGN1cnJfbG9va2FoZWFkOwotICAgZmxvYXQgcHN1bTsKICAgIGZsb2F0IHRvbmFsaXR5
X21heDsKICAgIGZsb2F0IHRvbmFsaXR5X2F2ZzsKICAgIGludCB0b25hbGl0eV9jb3VudDsKICAg
IGludCBpOworICAgaW50IHBvczA7CisgICBmbG9hdCBwcm9iX2F2ZzsKKyAgIGZsb2F0IHByb2Jf
Y291bnQ7CisgICBmbG9hdCBwcm9iX21pbiwgcHJvYl9tYXg7CisgICBmbG9hdCB2YWRfcHJvYjsK
KyAgIGludCBtcG9zLCB2cG9zOworICAgaW50IGJhbmR3aWR0aF9zcGFuOwogCiAgICBwb3MgPSB0
b25hbC0+cmVhZF9wb3M7CiAgICBjdXJyX2xvb2thaGVhZCA9IHRvbmFsLT53cml0ZV9wb3MtdG9u
YWwtPnJlYWRfcG9zOwogICAgaWYgKGN1cnJfbG9va2FoZWFkPDApCiAgICAgICBjdXJyX2xvb2th
aGVhZCArPSBERVRFQ1RfU0laRTsKIAorICAgdG9uYWwtPnJlYWRfc3ViZnJhbWUgKz0gbGVuLyh0
b25hbC0+RnMvNDAwKTsKKyAgIHdoaWxlICh0b25hbC0+cmVhZF9zdWJmcmFtZT49OCkKKyAgIHsK
KyAgICAgIHRvbmFsLT5yZWFkX3N1YmZyYW1lIC09IDg7CisgICAgICB0b25hbC0+cmVhZF9wb3Mr
KzsKKyAgIH0KKyAgIGlmICh0b25hbC0+cmVhZF9wb3M+PURFVEVDVF9TSVpFKQorICAgICAgdG9u
YWwtPnJlYWRfcG9zLT1ERVRFQ1RfU0laRTsKKwogICAgLyogT24gbG9uZyBmcmFtZXMsIGxvb2sg
YXQgdGhlIHNlY29uZCBhbmFseXNpcyB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZpcnN0LiAqLwog
ICAgaWYgKGxlbiA+IHRvbmFsLT5Gcy81MCAmJiBwb3MgIT0gdG9uYWwtPndyaXRlX3BvcykKICAg
IHsKQEAgLTI1NCw5ICsyNjksMTQgQEAgdm9pZCB0b25hbGl0eV9nZXRfaW5mbyhUb25hbGl0eUFu
YWx5c2lzU3RhdGUgKnRvbmFsLCBBbmFseXNpc0luZm8gKmluZm9fb3V0LCBpbnQKICAgICAgIHBv
cy0tOwogICAgaWYgKHBvczwwKQogICAgICAgcG9zID0gREVURUNUX1NJWkUtMTsKKyAgIHBvczAg
PSBwb3M7CiAgICBPUFVTX0NPUFkoaW5mb19vdXQsICZ0b25hbC0+aW5mb1twb3NdLCAxKTsKKyAg
IGlmICghaW5mb19vdXQtPnZhbGlkKQorICAgICAgcmV0dXJuOwogICAgdG9uYWxpdHlfbWF4ID0g
dG9uYWxpdHlfYXZnID0gaW5mb19vdXQtPnRvbmFsaXR5OwogICAgdG9uYWxpdHlfY291bnQgPSAx
OworICAgLyogTG9vayBhdCB0aGUgbmVpZ2hib3VyaW5nIGZyYW1lcyBhbmQgcGljayBsYXJnZXN0
IGJhbmR3aWR0aCBmb3VuZCAodG8gYmUgc2FmZSkuICovCisgICBiYW5kd2lkdGhfc3BhbiA9IDY7
CiAgICAvKiBJZiBwb3NzaWJsZSwgbG9vayBhaGVhZCBmb3IgYSB0b25lIHRvIGNvbXBlbnNhdGUg
Zm9yIHRoZSBkZWxheSBpbiB0aGUgdG9uZSBkZXRlY3Rvci4gKi8KICAgIGZvciAoaT0wO2k8Mztp
KyspCiAgICB7CkBAIC0yNjgsMzEgKzI4OCwxMjIgQEAgdm9pZCB0b25hbGl0eV9nZXRfaW5mbyhU
b25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsLCBBbmFseXNpc0luZm8gKmluZm9fb3V0LCBpbnQK
ICAgICAgIHRvbmFsaXR5X21heCA9IE1BWDMyKHRvbmFsaXR5X21heCwgdG9uYWwtPmluZm9bcG9z
XS50b25hbGl0eSk7CiAgICAgICB0b25hbGl0eV9hdmcgKz0gdG9uYWwtPmluZm9bcG9zXS50b25h
bGl0eTsKICAgICAgIHRvbmFsaXR5X2NvdW50Kys7CisgICAgICBpbmZvX291dC0+YmFuZHdpZHRo
ID0gSU1BWChpbmZvX291dC0+YmFuZHdpZHRoLCB0b25hbC0+aW5mb1twb3NdLmJhbmR3aWR0aCk7
CisgICAgICBiYW5kd2lkdGhfc3Bhbi0tOwogICAgfQotICAgaW5mb19vdXQtPnRvbmFsaXR5ID0g
TUFYMzIodG9uYWxpdHlfYXZnL3RvbmFsaXR5X2NvdW50LCB0b25hbGl0eV9tYXgtLjJmKTsKLSAg
IHRvbmFsLT5yZWFkX3N1YmZyYW1lICs9IGxlbi8odG9uYWwtPkZzLzQwMCk7Ci0gICB3aGlsZSAo
dG9uYWwtPnJlYWRfc3ViZnJhbWU+PTgpCisgICBwb3MgPSBwb3MwOworICAgLyogTG9vayBiYWNr
IGluIHRpbWUgdG8gc2VlIGlmIGFueSBoYXMgYSB3aWRlciBiYW5kd2lkdGggdGhhbiB0aGUgY3Vy
cmVudCBmcmFtZS4gKi8KKyAgIGZvciAoaT0wO2k8YmFuZHdpZHRoX3NwYW47aSsrKQogICAgewot
ICAgICAgdG9uYWwtPnJlYWRfc3ViZnJhbWUgLT0gODsKLSAgICAgIHRvbmFsLT5yZWFkX3Bvcysr
OworICAgICAgcG9zLS07CisgICAgICBpZiAocG9zIDwgMCkKKyAgICAgICAgIHBvcyA9IERFVEVD
VF9TSVpFLTE7CisgICAgICBpZiAocG9zID09IHRvbmFsLT53cml0ZV9wb3MpCisgICAgICAgICBi
cmVhazsKKyAgICAgIGluZm9fb3V0LT5iYW5kd2lkdGggPSBJTUFYKGluZm9fb3V0LT5iYW5kd2lk
dGgsIHRvbmFsLT5pbmZvW3Bvc10uYmFuZHdpZHRoKTsKICAgIH0KLSAgIGlmICh0b25hbC0+cmVh
ZF9wb3M+PURFVEVDVF9TSVpFKQotICAgICAgdG9uYWwtPnJlYWRfcG9zLT1ERVRFQ1RfU0laRTsK
KyAgIGluZm9fb3V0LT50b25hbGl0eSA9IE1BWDMyKHRvbmFsaXR5X2F2Zy90b25hbGl0eV9jb3Vu
dCwgdG9uYWxpdHlfbWF4LS4yZik7CiAKLSAgIC8qIFRoZSAtMSBpcyB0byBjb21wZW5zYXRlIGZv
ciB0aGUgZGVsYXkgaW4gdGhlIGZlYXR1cmVzIHRoZW1zZWx2ZXMuICovCi0gICBjdXJyX2xvb2th
aGVhZCA9IElNQVgoY3Vycl9sb29rYWhlYWQtMSwgMCk7CisgICBtcG9zID0gdnBvcyA9IHBvczA7
CisgICAvKiBJZiB3ZSBoYXZlIGVub3VnaCBsb29rLWFoZWFkLCBjb21wZW5zYXRlIGZvciB0aGUg
fjUtZnJhbWUgZGVsYXkgaW4gdGhlIG11c2ljIHByb2IgYW5kCisgICAgICB+MSBmcmFtZSBkZWxh
eSBpbiB0aGUgVkFEIHByb2IuICovCisgICBpZiAoY3Vycl9sb29rYWhlYWQgPiAxNSkKKyAgIHsK
KyAgICAgIG1wb3MgKz0gNTsKKyAgICAgIGlmIChtcG9zPj1ERVRFQ1RfU0laRSkKKyAgICAgICAg
IG1wb3MgLT0gREVURUNUX1NJWkU7CisgICAgICB2cG9zICs9IDE7CisgICAgICBpZiAodnBvcz49
REVURUNUX1NJWkUpCisgICAgICAgICB2cG9zIC09IERFVEVDVF9TSVpFOworICAgfQogCi0gICBw
c3VtPTA7Ci0gICAvKiBTdW1taW5nIHRoZSBwcm9iYWJpbGl0eSBvZiB0cmFuc2l0aW9uIHBhdHRl
cm5zIHRoYXQgaW52b2x2ZSBtdXNpYyBhdAotICAgICAgdGltZSAoREVURUNUX1NJWkUtY3Vycl9s
b29rYWhlYWQtMSkgKi8KLSAgIGZvciAoaT0wO2k8REVURUNUX1NJWkUtY3Vycl9sb29rYWhlYWQ7
aSsrKQotICAgICAgcHN1bSArPSB0b25hbC0+cG11c2ljW2ldOwotICAgZm9yICg7aTxERVRFQ1Rf
U0laRTtpKyspCi0gICAgICBwc3VtICs9IHRvbmFsLT5wc3BlZWNoW2ldOwotICAgcHN1bSA9IHBz
dW0qdG9uYWwtPm11c2ljX2NvbmZpZGVuY2UgKyAoMS1wc3VtKSp0b25hbC0+c3BlZWNoX2NvbmZp
ZGVuY2U7Ci0gICAvKnByaW50ZigiJWYgJWYgJWYgJWYgJWZcbiIsIHBzdW0sIGluZm9fb3V0LT5t
dXNpY19wcm9iLCBpbmZvX291dC0+dmFkX3Byb2IsIGluZm9fb3V0LT5hY3Rpdml0eV9wcm9iYWJp
bGl0eSwgaW5mb19vdXQtPnRvbmFsaXR5KTsqLworICAgLyogVGhlIGZvbGxvd2luZyBjYWxjdWxh
dGlvbnMgYXR0ZW1wdCB0byBtaW5pbWl6ZSBhICJiYWRuZXNzIGZ1bmN0aW9uIgorICAgICAgZm9y
IHRoZSB0cmFuc2l0aW9uLiBXaGVuIHN3aXRjaGluZyBmcm9tIHNwZWVjaCB0byBtdXNpYywgdGhl
IGJhZG5lc3MKKyAgICAgIG9mIHN3aXRjaGluZyBhdCBmcmFtZSBrIGlzCisgICAgICBiX2sgPSBT
KnZfayArIFxzdW1fe2k9MH1ee2stMX0gdl9pKihwX2kgLSBUKQorICAgICAgd2hlcmUKKyAgICAg
IHZfaSBpcyB0aGUgYWN0aXZpdHkgcHJvYmFiaWxpdHkgKFZBRCkgYXQgZnJhbWUgaSwKKyAgICAg
IHBfaSBpcyB0aGUgbXVzaWMgcHJvYmFiaWxpdHkgYXQgZnJhbWUgaQorICAgICAgVCBpcyB0aGUg
cHJvYmFiaWxpdHkgdGhyZXNob2xkIGZvciBzd2l0Y2hpbmcKKyAgICAgIFMgaXMgdGhlIHBlbmFs
dHkgZm9yIHN3aXRjaGluZyBkdXJpbmcgYWN0aXZlIGF1ZGlvIHJhdGhlciB0aGFuIHNpbGVuY2UK
KyAgICAgIHRoZSBjdXJyZW50IGZyYW1lIGhhcyBpbmRleCBpPTAKKworICAgICAgUmF0aGVyIHRo
YW4gYXBwbHkgYmFkbmVzcyB0byBkaXJlY3RseSBkZWNpZGUgd2hlbiB0byBzd2l0Y2gsIHdoYXQg
d2UgY29tcHV0ZQorICAgICAgaW5zdGVhZCBpcyB0aGUgdGhyZXNob2xkIGZvciB3aGljaCB0aGUg
b3B0aW1hbCBzd2l0Y2hpbmcgcG9pbnQgaXMgbm93LiBXaGVuCisgICAgICBjb25zaWRlcmluZyB3
aGV0aGVyIHRvIHN3aXRjaCBub3cgKGZyYW1lIDApIG9yIGF0IGZyYW1lIGssIHdlIGhhdmU6Cisg
ICAgICBTKnZfMCA9IFMqdl9rICsgXHN1bV97aT0wfV57ay0xfSB2X2kqKHBfaSAtIFQpCisgICAg
ICB3aGljaCBnaXZlcyB1czoKKyAgICAgIFQgPSAoIFxzdW1fe2k9MH1ee2stMX0gdl9pKnBfaSAr
IFMqKHZfay12XzApICkgLyAoIFxzdW1fe2k9MH1ee2stMX0gdl9pICkKKyAgICAgIFdlIHRha2Ug
dGhlIG1pbiB0aHJlc2hvbGQgYWNyb3NzIGFsbCBwb3NpdGl2ZSB2YWx1ZXMgb2YgayAodXAgdG8g
dGhlIG1heGltdW0KKyAgICAgIGFtb3VudCBvZiBsb29rYWhlYWQgd2UgaGF2ZSkgdG8gZ2l2ZSB1
cyB0aGUgdGhyZXNob2xkIGZvciB3aGljaCB0aGUgY3VycmVudAorICAgICAgZnJhbWUgaXMgdGhl
IG9wdGltYWwgc3dpdGNoIHBvaW50LgorCisgICAgICBUaGUgbGFzdCBzdGVwIGlzIHRoYXQgd2Ug
bmVlZCB0byBjb25zaWRlciB3aGV0aGVyIHdlIHdhbnQgdG8gc3dpdGNoIGF0IGFsbC4KKyAgICAg
IEZvciB0aGF0IHdlIHVzZSB0aGUgYXZlcmFnZSBvZiB0aGUgbXVzaWMgcHJvYmFiaWxpdHkgb3Zl
ciB0aGUgZW50aXJlIHdpbmRvdy4KKyAgICAgIElmIHRoZSB0aHJlc2hvbGQgaXMgaGlnaGVyIHRo
YW4gdGhhdCBhdmVyYWdlIHdlJ3JlIG5vdCBnb2luZyB0bworICAgICAgc3dpdGNoLCBzbyB3ZSBj
b21wdXRlIGEgbWluIHdpdGggdGhlIGF2ZXJhZ2UgYXMgd2VsbC4gVGhlIHJlc3VsdCBvZiBhbGwg
dGhlc2UKKyAgICAgIG1pbiBvcGVyYXRpb25zIGlzIG11c2ljX3Byb2JfbWluLCB3aGljaCBnaXZl
cyB0aGUgdGhyZXNob2xkIGZvciBzd2l0Y2hpbmcgdG8gbXVzaWMKKyAgICAgIGlmIHdlJ3JlIGN1
cnJlbnRseSBlbmNvZGluZyBmb3Igc3BlZWNoLgorCisgICAgICBXZSBkbyB0aGUgZXhhY3Qgb3Bw
b3NpdGUgdG8gY29tcHV0ZSBtdXNpY19wcm9iX21heCB3aGljaCBpcyB1c2VkIGZvciBzd2l0Y2hp
bmcKKyAgICAgIGZyb20gbXVzaWMgdG8gc3BlZWNoLgorICAgICovCisgICBwcm9iX21pbiA9IDEu
ZjsKKyAgIHByb2JfbWF4ID0gMC5mOworICAgdmFkX3Byb2IgPSB0b25hbC0+aW5mb1t2cG9zXS5h
Y3Rpdml0eV9wcm9iYWJpbGl0eTsKKyAgIHByb2JfY291bnQgPSBNQVgxNiguMWYsIHZhZF9wcm9i
KTsKKyAgIHByb2JfYXZnID0gTUFYMTYoLjFmLCB2YWRfcHJvYikqdG9uYWwtPmluZm9bbXBvc10u
bXVzaWNfcHJvYjsKKyAgIHdoaWxlICgxKQorICAgeworICAgICAgZmxvYXQgcG9zX3ZhZDsKKyAg
ICAgIG1wb3MrKzsKKyAgICAgIGlmIChtcG9zPT1ERVRFQ1RfU0laRSkKKyAgICAgICAgIG1wb3Mg
PSAwOworICAgICAgaWYgKG1wb3MgPT0gdG9uYWwtPndyaXRlX3BvcykKKyAgICAgICAgIGJyZWFr
OworICAgICAgdnBvcysrOworICAgICAgaWYgKHZwb3M9PURFVEVDVF9TSVpFKQorICAgICAgICAg
dnBvcyA9IDA7CisgICAgICBpZiAodnBvcyA9PSB0b25hbC0+d3JpdGVfcG9zKQorICAgICAgICAg
YnJlYWs7CisgICAgICBwb3NfdmFkID0gdG9uYWwtPmluZm9bdnBvc10uYWN0aXZpdHlfcHJvYmFi
aWxpdHk7CisgICAgICBwcm9iX21pbiA9IE1JTjE2KChwcm9iX2F2ZyAtIFRSQU5TSVRJT05fUEVO
QUxUWSoodmFkX3Byb2IgLSBwb3NfdmFkKSkvcHJvYl9jb3VudCwgcHJvYl9taW4pOworICAgICAg
cHJvYl9tYXggPSBNQVgxNigocHJvYl9hdmcgKyBUUkFOU0lUSU9OX1BFTkFMVFkqKHZhZF9wcm9i
IC0gcG9zX3ZhZCkpL3Byb2JfY291bnQsIHByb2JfbWF4KTsKKyAgICAgIHByb2JfY291bnQgKz0g
TUFYMTYoLjFmLCBwb3NfdmFkKTsKKyAgICAgIHByb2JfYXZnICs9IE1BWDE2KC4xZiwgcG9zX3Zh
ZCkqdG9uYWwtPmluZm9bbXBvc10ubXVzaWNfcHJvYjsKKyAgIH0KKyAgIGluZm9fb3V0LT5tdXNp
Y19wcm9iID0gcHJvYl9hdmcvcHJvYl9jb3VudDsKKyAgIHByb2JfbWluID0gTUlOMTYocHJvYl9h
dmcvcHJvYl9jb3VudCwgcHJvYl9taW4pOworICAgcHJvYl9tYXggPSBNQVgxNihwcm9iX2F2Zy9w
cm9iX2NvdW50LCBwcm9iX21heCk7CisgICBwcm9iX21pbiA9IE1BWDE2KHByb2JfbWluLCAwLmYp
OworICAgcHJvYl9tYXggPSBNSU4xNihwcm9iX21heCwgMS5mKTsKKworICAgLyogSWYgd2UgZG9u
J3QgaGF2ZSBlbm91Z2ggbG9vay1haGVhZCwgZG8gb3VyIGJlc3QgdG8gbWFrZSBhIGRlY2VudCBk
ZWNpc2lvbi4gKi8KKyAgIGlmIChjdXJyX2xvb2thaGVhZCA8IDEwKQorICAgeworICAgICAgZmxv
YXQgcG1pbiwgcG1heDsKKyAgICAgIHBtaW4gPSBwcm9iX21pbjsKKyAgICAgIHBtYXggPSBwcm9i
X21heDsKKyAgICAgIHBvcyA9IHBvczA7CisgICAgICAvKiBMb29rIGZvciBtaW4vbWF4IGluIHRo
ZSBwYXN0LiAqLworICAgICAgZm9yIChpPTA7aTxJTUlOKHRvbmFsLT5jb3VudC0xLCAxNSk7aSsr
KQorICAgICAgeworICAgICAgICAgcG9zLS07CisgICAgICAgICBpZiAocG9zIDwgMCkKKyAgICAg
ICAgICAgIHBvcyA9IERFVEVDVF9TSVpFLTE7CisgICAgICAgICBwbWluID0gTUlOMTYocG1pbiwg
dG9uYWwtPmluZm9bcG9zXS5tdXNpY19wcm9iKTsKKyAgICAgICAgIHBtYXggPSBNQVgxNihwbWF4
LCB0b25hbC0+aW5mb1twb3NdLm11c2ljX3Byb2IpOworICAgICAgfQorICAgICAgLyogQmlhcyBh
Z2FpbnN0IHN3aXRjaGluZyBvbiBhY3RpdmUgYXVkaW8uICovCisgICAgICBwbWluID0gTUFYMTYo
MC5mLCBwbWluIC0gLjFmKnZhZF9wcm9iKTsKKyAgICAgIHBtYXggPSBNSU4xNigxLmYsIHBtYXgg
KyAuMWYqdmFkX3Byb2IpOworICAgICAgcHJvYl9taW4gKz0gKDEuZi0uMWYqY3Vycl9sb29rYWhl
YWQpKihwbWluIC0gcHJvYl9taW4pOworICAgICAgcHJvYl9tYXggKz0gKDEuZi0uMWYqY3Vycl9s
b29rYWhlYWQpKihwbWF4IC0gcHJvYl9tYXgpOworICAgfQorICAgaW5mb19vdXQtPm11c2ljX3By
b2JfbWluID0gcHJvYl9taW47CisgICBpbmZvX291dC0+bXVzaWNfcHJvYl9tYXggPSBwcm9iX21h
eDsKIAotICAgaW5mb19vdXQtPm11c2ljX3Byb2IgPSBwc3VtOworICAgLyogcHJpbnRmKCIlZiAl
ZiAlZiAlZiAlZlxuIiwgcHJvYl9taW4sIHByb2JfbWF4LCBwcm9iX2F2Zy9wcm9iX2NvdW50LCB2
YWRfcHJvYiwgaW5mb19vdXQtPm11c2ljX3Byb2IpOyAqLwogfQogCiBzdGF0aWMgY29uc3QgZmxv
YXQgc3RkX2ZlYXR1cmVfYmlhc1s5XSA9IHsKQEAgLTMxMiw2ICs0MjMsMjQgQEAgc3RhdGljIGNv
bnN0IGZsb2F0IHN0ZF9mZWF0dXJlX2JpYXNbOV0gPSB7CiAjZGVmaW5lIFNDQUxFX0VORVIoZSkg
KGUpCiAjZW5kaWYKIAorI2lmZGVmIEZJWEVEX1BPSU5UCitzdGF0aWMgaW50IGlzX2RpZ2l0YWxf
c2lsZW5jZTMyKGNvbnN0IG9wdXNfdmFsMzIqIHBjbSwgaW50IGZyYW1lX3NpemUsIGludCBjaGFu
bmVscywgaW50IGxzYl9kZXB0aCkKK3sKKyAgIGludCBzaWxlbmNlID0gMDsKKyAgIG9wdXNfdmFs
MzIgc2FtcGxlX21heCA9IDA7CisjaWZkZWYgTUxQX1RSQUlOSU5HCisgICByZXR1cm4gMDsKKyNl
bmRpZgorICAgc2FtcGxlX21heCA9IGNlbHRfbWF4YWJzMzIocGNtLCBmcmFtZV9zaXplKmNoYW5u
ZWxzKTsKKworICAgc2lsZW5jZSA9IChzYW1wbGVfbWF4ID09IDApOworICAgKHZvaWQpbHNiX2Rl
cHRoOworICAgcmV0dXJuIHNpbGVuY2U7Cit9CisjZWxzZQorI2RlZmluZSBpc19kaWdpdGFsX3Np
bGVuY2UzMihwY20sIGZyYW1lX3NpemUsIGNoYW5uZWxzLCBsc2JfZGVwdGgpIGlzX2RpZ2l0YWxf
c2lsZW5jZShwY20sIGZyYW1lX3NpemUsIGNoYW5uZWxzLCBsc2JfZGVwdGgpCisjZW5kaWYKKwog
c3RhdGljIHZvaWQgdG9uYWxpdHlfYW5hbHlzaXMoVG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25h
bCwgY29uc3QgQ0VMVE1vZGUgKmNlbHRfbW9kZSwgY29uc3Qgdm9pZCAqeCwgaW50IGxlbiwgaW50
IG9mZnNldCwgaW50IGMxLCBpbnQgYzIsIGludCBDLCBpbnQgbHNiX2RlcHRoLCBkb3dubWl4X2Z1
bmMgZG93bm1peCkKIHsKICAgICBpbnQgaSwgYjsKQEAgLTM0MCw2ICs0NjksNyBAQCBzdGF0aWMg
dm9pZCB0b25hbGl0eV9hbmFseXNpcyhUb25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsLCBjb25z
dCBDRUxUTW9kZSAqY2VsdAogICAgIGZsb2F0IGFscGhhLCBhbHBoYUUsIGFscGhhRTI7CiAgICAg
ZmxvYXQgZnJhbWVfbG91ZG5lc3M7CiAgICAgZmxvYXQgYmFuZHdpZHRoX21hc2s7CisgICAgaW50
IGlzX21hc2tlZFtOQl9UQkFORFMrMV07CiAgICAgaW50IGJhbmR3aWR0aD0wOwogICAgIGZsb2F0
IG1heEUgPSAwOwogICAgIGZsb2F0IG5vaXNlX2Zsb29yOwpAQCAtMzUyLDExICs0ODIsMjIgQEAg
c3RhdGljIHZvaWQgdG9uYWxpdHlfYW5hbHlzaXMoVG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25h
bCwgY29uc3QgQ0VMVE1vZGUgKmNlbHQKICAgICBmbG9hdCBiYW5kX2xvZzJbTkJfVEJBTkRTKzFd
OwogICAgIGZsb2F0IGxlYWthZ2VfZnJvbVtOQl9UQkFORFMrMV07CiAgICAgZmxvYXQgbGVha2Fn
ZV90b1tOQl9UQkFORFMrMV07CisgICAgZmxvYXQgbGF5ZXJfb3V0W01BWF9ORVVST05TXTsKKyAg
ICBmbG9hdCBiZWxvd19tYXhfcGl0Y2g7CisgICAgZmxvYXQgYWJvdmVfbWF4X3BpdGNoOworICAg
IGludCBpc19zaWxlbmNlOwogICAgIFNBVkVfU1RBQ0s7CiAKKyAgICBpZiAoIXRvbmFsLT5pbml0
aWFsaXplZCkKKyAgICB7CisgICAgICAgdG9uYWwtPm1lbV9maWxsID0gMjQwOworICAgICAgIHRv
bmFsLT5pbml0aWFsaXplZCA9IDE7CisgICAgfQogICAgIGFscGhhID0gMS5mL0lNSU4oMTAsIDEr
dG9uYWwtPmNvdW50KTsKICAgICBhbHBoYUUgPSAxLmYvSU1JTigyNSwgMSt0b25hbC0+Y291bnQp
OwotICAgIGFscGhhRTIgPSAxLmYvSU1JTig1MDAsIDErdG9uYWwtPmNvdW50KTsKKyAgICAvKiBO
b2lzZSBmbG9vciByZWxhdGVkIGRlY2F5IGZvciBiYW5kd2lkdGggZGV0ZWN0aW9uOiAtMi4yIGRC
L3NlY29uZCAqLworICAgIGFscGhhRTIgPSAxLmYvSU1JTigxMDAsIDErdG9uYWwtPmNvdW50KTsK
KyAgICBpZiAodG9uYWwtPmNvdW50IDw9IDEpIGFscGhhRTIgPSAxOwogCiAgICAgaWYgKHRvbmFs
LT5GcyA9PSA0ODAwMCkKICAgICB7CkBAIC0zNjgsMTUgKzUwOSw3IEBAIHN0YXRpYyB2b2lkIHRv
bmFsaXR5X2FuYWx5c2lzKFRvbmFsaXR5QW5hbHlzaXNTdGF0ZSAqdG9uYWwsIGNvbnN0IENFTFRN
b2RlICpjZWx0CiAgICAgICAgb2Zmc2V0ID0gMypvZmZzZXQvMjsKICAgICB9CiAKLSAgICBpZiAo
dG9uYWwtPmNvdW50PDQpIHsKLSAgICAgICBpZiAodG9uYWwtPmFwcGxpY2F0aW9uID09IE9QVVNf
QVBQTElDQVRJT05fVk9JUCkKLSAgICAgICAgICB0b25hbC0+bXVzaWNfcHJvYiA9IC4xZjsKLSAg
ICAgICBlbHNlCi0gICAgICAgICAgdG9uYWwtPm11c2ljX3Byb2IgPSAuNjI1ZjsKLSAgICB9CiAg
ICAga2ZmdCA9IGNlbHRfbW9kZS0+bWRjdC5rZmZ0WzBdOwotICAgIGlmICh0b25hbC0+Y291bnQ9
PTApCi0gICAgICAgdG9uYWwtPm1lbV9maWxsID0gMjQwOwogICAgIHRvbmFsLT5ocF9lbmVyX2Fj
Y3VtICs9IChmbG9hdClkb3dubWl4X2FuZF9yZXNhbXBsZShkb3dubWl4LCB4LAogICAgICAgICAg
ICZ0b25hbC0+aW5tZW1bdG9uYWwtPm1lbV9maWxsXSwgdG9uYWwtPmRvd25taXhfc3RhdGUsCiAg
ICAgICAgICAgSU1JTihsZW4sIEFOQUxZU0lTX0JVRl9TSVpFLXRvbmFsLT5tZW1fZmlsbCksIG9m
ZnNldCwgYzEsIGMyLCBDLCB0b25hbC0+RnMpOwpAQCAtMzkyLDYgKzUyNSw4IEBAIHN0YXRpYyB2
b2lkIHRvbmFsaXR5X2FuYWx5c2lzKFRvbmFsaXR5QW5hbHlzaXNTdGF0ZSAqdG9uYWwsIGNvbnN0
IENFTFRNb2RlICpjZWx0CiAgICAgaWYgKHRvbmFsLT53cml0ZV9wb3M+PURFVEVDVF9TSVpFKQog
ICAgICAgIHRvbmFsLT53cml0ZV9wb3MtPURFVEVDVF9TSVpFOwogCisgICAgaXNfc2lsZW5jZSA9
IGlzX2RpZ2l0YWxfc2lsZW5jZTMyKHRvbmFsLT5pbm1lbSwgQU5BTFlTSVNfQlVGX1NJWkUsIDEs
IGxzYl9kZXB0aCk7CisKICAgICBBTExPQyhpbiwgNDgwLCBraXNzX2ZmdF9jcHgpOwogICAgIEFM
TE9DKG91dCwgNDgwLCBraXNzX2ZmdF9jcHgpOwogICAgIEFMTE9DKHRvbmFsaXR5LCAyNDAsIGZs
b2F0KTsKQEAgLTQxMCw2ICs1NDUsMTYgQEAgc3RhdGljIHZvaWQgdG9uYWxpdHlfYW5hbHlzaXMo
VG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCwgY29uc3QgQ0VMVE1vZGUgKmNlbHQKICAgICAg
ICAgICAmdG9uYWwtPmlubWVtWzI0MF0sIHRvbmFsLT5kb3dubWl4X3N0YXRlLCByZW1haW5pbmcs
CiAgICAgICAgICAgb2Zmc2V0K0FOQUxZU0lTX0JVRl9TSVpFLXRvbmFsLT5tZW1fZmlsbCwgYzEs
IGMyLCBDLCB0b25hbC0+RnMpOwogICAgIHRvbmFsLT5tZW1fZmlsbCA9IDI0MCArIHJlbWFpbmlu
ZzsKKyAgICBpZiAoaXNfc2lsZW5jZSkKKyAgICB7CisgICAgICAgLyogT24gc2lsZW5jZSwgY29w
eSB0aGUgcHJldmlvdXMgYW5hbHlzaXMuICovCisgICAgICAgaW50IHByZXZfcG9zID0gdG9uYWwt
PndyaXRlX3Bvcy0yOworICAgICAgIGlmIChwcmV2X3BvcyA8IDApCisgICAgICAgICAgcHJldl9w
b3MgKz0gREVURUNUX1NJWkU7CisgICAgICAgT1BVU19DT1BZKGluZm8sICZ0b25hbC0+aW5mb1tw
cmV2X3Bvc10sIDEpOworICAgICAgIFJFU1RPUkVfU1RBQ0s7CisgICAgICAgcmV0dXJuOworICAg
IH0KICAgICBvcHVzX2ZmdChrZmZ0LCBpbiwgb3V0LCB0b25hbC0+YXJjaCk7CiAjaWZuZGVmIEZJ
WEVEX1BPSU5UCiAgICAgLyogSWYgdGhlcmUncyBhbnkgTmFOIG9uIHRoZSBpbnB1dCwgdGhlIGVu
dGlyZSBvdXRwdXQgd2lsbCBiZSBOYU4sIHNvIHdlIG9ubHkgbmVlZCB0byBjaGVjayBvbmUgdmFs
dWUuICovCkBAIC01NDYsNyArNjkxLDcgQEAgc3RhdGljIHZvaWQgdG9uYWxpdHlfYW5hbHlzaXMo
VG9uYWxpdHlBbmFseXNpc1N0YXRlICp0b25hbCwgY29uc3QgQ0VMVE1vZGUgKmNlbHQKICAgICAg
ICAgICB0b25hbC0+bG93RVtiXSA9IGxvZ0VbYl07CiAgICAgICAgICAgdG9uYWwtPmhpZ2hFW2Jd
ID0gTUlOMzIodG9uYWwtPmxvd0VbYl0rMTUsIHRvbmFsLT5oaWdoRVtiXSk7CiAgICAgICAgfQot
ICAgICAgIHJlbGF0aXZlRSArPSAobG9nRVtiXS10b25hbC0+bG93RVtiXSkvKDFlLTE1ZiArICh0
b25hbC0+aGlnaEVbYl0tdG9uYWwtPmxvd0VbYl0pKTsKKyAgICAgICByZWxhdGl2ZUUgKz0gKGxv
Z0VbYl0tdG9uYWwtPmxvd0VbYl0pLygxZS01ZiArICh0b25hbC0+aGlnaEVbYl0tdG9uYWwtPmxv
d0VbYl0pKTsKIAogICAgICAgIEwxPUwyPTA7CiAgICAgICAgZm9yIChpPTA7aTxOQl9GUkFNRVM7
aSsrKQpAQCAtNjMyLDkgKzc3NywxMiBAQCBzdGF0aWMgdm9pZCB0b25hbGl0eV9hbmFseXNpcyhU
b25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsLCBjb25zdCBDRUxUTW9kZSAqY2VsdAogICAgIG1h
eEUgPSAwOwogICAgIG5vaXNlX2Zsb29yID0gNS43ZS00Zi8oMTw8KElNQVgoMCxsc2JfZGVwdGgt
OCkpKTsKICAgICBub2lzZV9mbG9vciAqPSBub2lzZV9mbG9vcjsKKyAgICBiZWxvd19tYXhfcGl0
Y2g9MDsKKyAgICBhYm92ZV9tYXhfcGl0Y2g9MDsKICAgICBmb3IgKGI9MDtiPE5CX1RCQU5EUzti
KyspCiAgICAgewogICAgICAgIGZsb2F0IEU9MDsKKyAgICAgICBmbG9hdCBFbTsKICAgICAgICBp
bnQgYmFuZF9zdGFydCwgYmFuZF9lbmQ7CiAgICAgICAgLyogS2VlcCBhIG1hcmdpbiBvZiAzMDAg
SHogZm9yIGFsaWFzaW5nICovCiAgICAgICAgYmFuZF9zdGFydCA9IHRiYW5kc1tiXTsKQEAgLTY0
Nyw0MSArNzk1LDU5IEBAIHN0YXRpYyB2b2lkIHRvbmFsaXR5X2FuYWx5c2lzKFRvbmFsaXR5QW5h
bHlzaXNTdGF0ZSAqdG9uYWwsIGNvbnN0IENFTFRNb2RlICpjZWx0CiAgICAgICAgfQogICAgICAg
IEUgPSBTQ0FMRV9FTkVSKEUpOwogICAgICAgIG1heEUgPSBNQVgzMihtYXhFLCBFKTsKKyAgICAg
ICBpZiAoYmFuZF9zdGFydCA8IDY0KQorICAgICAgIHsKKyAgICAgICAgICBiZWxvd19tYXhfcGl0
Y2ggKz0gRTsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAgIGFib3ZlX21heF9waXRjaCArPSBF
OworICAgICAgIH0KICAgICAgICB0b25hbC0+bWVhbkVbYl0gPSBNQVgzMigoMS1hbHBoYUUyKSp0
b25hbC0+bWVhbkVbYl0sIEUpOwotICAgICAgIEUgPSBNQVgzMihFLCB0b25hbC0+bWVhbkVbYl0p
OwotICAgICAgIC8qIFVzZSBhIHNpbXBsZSBmb2xsb3dlciB3aXRoIDEzIGRCL0Jhcmsgc2xvcGUg
Zm9yIHNwcmVhZGluZyBmdW5jdGlvbiAqLwotICAgICAgIGJhbmR3aWR0aF9tYXNrID0gTUFYMzIo
LjA1ZipiYW5kd2lkdGhfbWFzaywgRSk7CisgICAgICAgRW0gPSBNQVgzMihFLCB0b25hbC0+bWVh
bkVbYl0pOwogICAgICAgIC8qIENvbnNpZGVyIHRoZSBiYW5kICJhY3RpdmUiIG9ubHkgaWYgYWxs
IHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAgICAgICAgICAxKSBsZXNzIHRoYW4gMTAgZEIg
YmVsb3cgdGhlIHNpbXBsZSBmb2xsb3dlcgotICAgICAgICAgIDIpIGxlc3MgdGhhbiA5MCBkQiBi
ZWxvdyB0aGUgcGVhayBiYW5kIChtYXhpbWFsIG1hc2tpbmcgcG9zc2libGUgY29uc2lkZXJpbmcK
KyAgICAgICAgICAxKSBsZXNzIHRoYW4gOTAgZEIgYmVsb3cgdGhlIHBlYWsgYmFuZCAobWF4aW1h
bCBtYXNraW5nIHBvc3NpYmxlIGNvbnNpZGVyaW5nCiAgICAgICAgICAgICAgYm90aCB0aGUgQVRI
IGFuZCB0aGUgbG91ZG5lc3MtZGVwZW5kZW50IHNsb3BlIG9mIHRoZSBzcHJlYWRpbmcgZnVuY3Rp
b24pCi0gICAgICAgICAgMykgYWJvdmUgdGhlIFBDTSBxdWFudGl6YXRpb24gbm9pc2UgZmxvb3IK
KyAgICAgICAgICAyKSBhYm92ZSB0aGUgUENNIHF1YW50aXphdGlvbiBub2lzZSBmbG9vcgogICAg
ICAgICAgIFdlIHVzZSBiKzEgYmVjYXVzZSB0aGUgZmlyc3QgQ0VMVCBiYW5kIGlzbid0IGluY2x1
ZGVkIGluIHRiYW5kc1tdCiAgICAgICAgKi8KLSAgICAgICBpZiAoRT4uMSpiYW5kd2lkdGhfbWFz
ayAmJiBFKjFlOWYgPiBtYXhFICYmIEUgPiBub2lzZV9mbG9vciooYmFuZF9lbmQtYmFuZF9zdGFy
dCkpCisgICAgICAgaWYgKEUqMWU5ZiA+IG1heEUgJiYgKEVtID4gMypub2lzZV9mbG9vciooYmFu
ZF9lbmQtYmFuZF9zdGFydCkgfHwgRSA+IG5vaXNlX2Zsb29yKihiYW5kX2VuZC1iYW5kX3N0YXJ0
KSkpCiAgICAgICAgICAgYmFuZHdpZHRoID0gYisxOworICAgICAgIC8qIENoZWNrIGlmIHRoZSBi
YW5kIGlzIG1hc2tlZCAoc2VlIGJlbG93KS4gKi8KKyAgICAgICBpc19tYXNrZWRbYl0gPSBFIDwg
KHRvbmFsLT5wcmV2X2JhbmR3aWR0aCA+PSBiKzEgID8gLjAxZiA6IC4wNWYpKmJhbmR3aWR0aF9t
YXNrOworICAgICAgIC8qIFVzZSBhIHNpbXBsZSBmb2xsb3dlciB3aXRoIDEzIGRCL0Jhcmsgc2xv
cGUgZm9yIHNwcmVhZGluZyBmdW5jdGlvbi4gKi8KKyAgICAgICBiYW5kd2lkdGhfbWFzayA9IE1B
WDMyKC4wNWYqYmFuZHdpZHRoX21hc2ssIEUpOwogICAgIH0KICAgICAvKiBTcGVjaWFsIGNhc2Ug
Zm9yIHRoZSBsYXN0IHR3byBiYW5kcywgZm9yIHdoaWNoIHdlIGRvbid0IGhhdmUgc3BlY3RydW0g
YnV0IG9ubHkKLSAgICAgICB0aGUgZW5lcmd5IGFib3ZlIDEyIGtIei4gKi8KKyAgICAgICB0aGUg
ZW5lcmd5IGFib3ZlIDEyIGtIei4gVGhlIGRpZmZpY3VsdHkgaGVyZSBpcyB0aGF0IHRoZSBoaWdo
LXBhc3Mgd2UgdXNlCisgICAgICAgbGVha3Mgc29tZSBMRiBlbmVyZ3ksIHNvIHdlIG5lZWQgdG8g
aW5jcmVhc2UgdGhlIHRocmVzaG9sZCB3aXRob3V0IGFjY2lkZW50YWxseSBjdXR0aW5nCisgICAg
ICAgb2ZmIHRoZSBiYW5kLiAqLwogICAgIGlmICh0b25hbC0+RnMgPT0gNDgwMDApIHsKLSAgICAg
ICBmbG9hdCByYXRpbzsKLSAgICAgICBmbG9hdCBFID0gaHBfZW5lciooMS5mLygyNDAqMjQwKSk7
Ci0gICAgICAgcmF0aW8gPSB0b25hbC0+cHJldl9iYW5kd2lkdGg9PTIwID8gMC4wM2YgOiAwLjA3
ZjsKKyAgICAgICBmbG9hdCBub2lzZV9yYXRpbzsKKyAgICAgICBmbG9hdCBFbTsKKyAgICAgICBm
bG9hdCBFID0gaHBfZW5lciooMS5mLyg2MCo2MCkpOworICAgICAgIG5vaXNlX3JhdGlvID0gdG9u
YWwtPnByZXZfYmFuZHdpZHRoPT0yMCA/IDEwLmYgOiAzMC5mOworCiAjaWZkZWYgRklYRURfUE9J
TlQKICAgICAgICAvKiBzaWxrX3Jlc2FtcGxlcl9kb3duMl9ocCgpIHNoaWZ0ZWQgcmlnaHQgYnkg
YW4gZXh0cmEgOCBiaXRzLiAqLwogICAgICAgIEUgKj0gMjU2LmYqKDEuZi9RMTVPTkUpKigxLmYv
UTE1T05FKTsKICNlbmRpZgotICAgICAgIG1heEUgPSBNQVgzMihtYXhFLCBFKTsKKyAgICAgICBh
Ym92ZV9tYXhfcGl0Y2ggKz0gRTsKICAgICAgICB0b25hbC0+bWVhbkVbYl0gPSBNQVgzMigoMS1h
bHBoYUUyKSp0b25hbC0+bWVhbkVbYl0sIEUpOwotICAgICAgIEUgPSBNQVgzMihFLCB0b25hbC0+
bWVhbkVbYl0pOwotICAgICAgIC8qIFVzZSBhIHNpbXBsZSBmb2xsb3dlciB3aXRoIDEzIGRCL0Jh
cmsgc2xvcGUgZm9yIHNwcmVhZGluZyBmdW5jdGlvbiAqLwotICAgICAgIGJhbmR3aWR0aF9tYXNr
ID0gTUFYMzIoLjA1ZipiYW5kd2lkdGhfbWFzaywgRSk7Ci0gICAgICAgaWYgKEU+cmF0aW8qYmFu
ZHdpZHRoX21hc2sgJiYgRSoxZTlmID4gbWF4RSAmJiBFID4gbm9pc2VfZmxvb3IqMTYwKQotICAg
ICAgICAgIGJhbmR3aWR0aCA9IDIwOwotICAgICAgIC8qIFRoaXMgZGV0ZWN0b3IgaXMgdW5yZWxp
YWJsZSwgc28gaWYgdGhlIGJhbmR3aWR0aCBpcyBjbG9zZSB0byBTV0IsIGFzc3VtZSBpdCdzIEZC
LiAqLwotICAgICAgIGlmIChiYW5kd2lkdGggPj0gMTcpCisgICAgICAgRW0gPSBNQVgzMihFLCB0
b25hbC0+bWVhbkVbYl0pOworICAgICAgIGlmIChFbSA+IDMqbm9pc2VfcmF0aW8qbm9pc2VfZmxv
b3IqMTYwIHx8IEUgPiBub2lzZV9yYXRpbypub2lzZV9mbG9vcioxNjApCiAgICAgICAgICAgYmFu
ZHdpZHRoID0gMjA7CisgICAgICAgLyogQ2hlY2sgaWYgdGhlIGJhbmQgaXMgbWFza2VkIChzZWUg
YmVsb3cpLiAqLworICAgICAgIGlzX21hc2tlZFtiXSA9IEUgPCAodG9uYWwtPnByZXZfYmFuZHdp
ZHRoID09IDIwICA/IC4wMWYgOiAuMDVmKSpiYW5kd2lkdGhfbWFzazsKICAgICB9CisgICAgaWYg
KGFib3ZlX21heF9waXRjaCA+IGJlbG93X21heF9waXRjaCkKKyAgICAgICBpbmZvLT5tYXhfcGl0
Y2hfcmF0aW8gPSBiZWxvd19tYXhfcGl0Y2gvYWJvdmVfbWF4X3BpdGNoOworICAgIGVsc2UKKyAg
ICAgICBpbmZvLT5tYXhfcGl0Y2hfcmF0aW8gPSAxOworICAgIC8qIEluIHNvbWUgY2FzZXMsIHJl
c2FtcGxpbmcgYWxpYXNpbmcgY2FuIGNyZWF0ZSBhIHNtYWxsIGFtb3VudCBvZiBlbmVyZ3kgaW4g
dGhlIGZpcnN0IGJhbmQKKyAgICAgICBiZWluZyBjdXQuIFNvIGlmIHRoZSBsYXN0IGJhbmQgaXMg
bWFza2VkLCB3ZSBkb24ndCBpbmNsdWRlIGl0LiAgKi8KKyAgICBpZiAoYmFuZHdpZHRoID09IDIw
ICYmIGlzX21hc2tlZFtOQl9UQkFORFNdKQorICAgICAgIGJhbmR3aWR0aC09MjsKKyAgICBlbHNl
IGlmIChiYW5kd2lkdGggPiAwICYmIGJhbmR3aWR0aCA8PSBOQl9UQkFORFMgJiYgaXNfbWFza2Vk
W2JhbmR3aWR0aC0xXSkKKyAgICAgICBiYW5kd2lkdGgtLTsKICAgICBpZiAodG9uYWwtPmNvdW50
PD0yKQogICAgICAgIGJhbmR3aWR0aCA9IDIwOwogICAgIGZyYW1lX2xvdWRuZXNzID0gMjAqKGZs
b2F0KWxvZzEwKGZyYW1lX2xvdWRuZXNzKTsKQEAgLTc2MSwxMzkgKzkyNywxNSBAQCBzdGF0aWMg
dm9pZCB0b25hbGl0eV9hbmFseXNpcyhUb25hbGl0eUFuYWx5c2lzU3RhdGUgKnRvbmFsLCBjb25z
dCBDRUxUTW9kZSAqY2VsdAogICAgIGZlYXR1cmVzWzIzXSA9IGluZm8tPnRvbmFsaXR5X3Nsb3Bl
ICsgMC4wNjkyMTZmOwogICAgIGZlYXR1cmVzWzI0XSA9IHRvbmFsLT5sb3dFQ291bnQgLSAwLjA2
NzkzMGY7CiAKLSAgICBtbHBfcHJvY2VzcygmbmV0LCBmZWF0dXJlcywgZnJhbWVfcHJvYnMpOwot
ICAgIGZyYW1lX3Byb2JzWzBdID0gLjVmKihmcmFtZV9wcm9ic1swXSsxKTsKLSAgICAvKiBDdXJ2
ZSBmaXR0aW5nIGJldHdlZW4gdGhlIE1MUCBwcm9iYWJpbGl0eSBhbmQgdGhlIGFjdHVhbCBwcm9i
YWJpbGl0eSAqLwotICAgIC8qZnJhbWVfcHJvYnNbMF0gPSAuMDFmICsgMS4yMWYqZnJhbWVfcHJv
YnNbMF0qZnJhbWVfcHJvYnNbMF0gLSAuMjNmKihmbG9hdClwb3coZnJhbWVfcHJvYnNbMF0sIDEw
KTsqLwotICAgIC8qIFByb2JhYmlsaXR5IG9mIGFjdGl2ZSBhdWRpbyAoYXMgb3Bwb3NlZCB0byBz
aWxlbmNlKSAqLwotICAgIGZyYW1lX3Byb2JzWzFdID0gLjVmKmZyYW1lX3Byb2JzWzFdKy41ZjsK
LSAgICBmcmFtZV9wcm9ic1sxXSAqPSBmcmFtZV9wcm9ic1sxXTsKKyAgICBjb21wdXRlX2RlbnNl
KCZsYXllcjAsIGxheWVyX291dCwgZmVhdHVyZXMpOworICAgIGNvbXB1dGVfZ3J1KCZsYXllcjEs
IHRvbmFsLT5ybm5fc3RhdGUsIGxheWVyX291dCk7CisgICAgY29tcHV0ZV9kZW5zZSgmbGF5ZXIy
LCBmcmFtZV9wcm9icywgdG9uYWwtPnJubl9zdGF0ZSk7CiAKICAgICAvKiBQcm9iYWJpbGl0eSBv
ZiBzcGVlY2ggb3IgbXVzaWMgdnMgbm9pc2UgKi8KICAgICBpbmZvLT5hY3Rpdml0eV9wcm9iYWJp
bGl0eSA9IGZyYW1lX3Byb2JzWzFdOworICAgIGluZm8tPm11c2ljX3Byb2IgPSBmcmFtZV9wcm9i
c1swXTsKIAotICAgIC8qcHJpbnRmKCIlZiAlZlxuIiwgZnJhbWVfcHJvYnNbMF0sIGZyYW1lX3By
b2JzWzFdKTsqLwotICAgIHsKLSAgICAgICAvKiBQcm9iYWJpbGl0eSBvZiBzdGF0ZSB0cmFuc2l0
aW9uICovCi0gICAgICAgZmxvYXQgdGF1OwotICAgICAgIC8qIFJlcHJlc2VudHMgaW5kZXBlbmRl
bmNlIG9mIHRoZSBNTFAgcHJvYmFiaWxpdGllcywgd2hlcmUKLSAgICAgICAgICBiZXRhPTEgbWVh
bnMgZnVsbHkgaW5kZXBlbmRlbnQuICovCi0gICAgICAgZmxvYXQgYmV0YTsKLSAgICAgICAvKiBE
ZW5vcm1hbGl6ZWQgcHJvYmFiaWxpdHkgb2Ygc3BlZWNoIChwMCkgYW5kIG11c2ljIChwMSkgYWZ0
ZXIgdXBkYXRlICovCi0gICAgICAgZmxvYXQgcDAsIHAxOwotICAgICAgIC8qIFByb2JhYmlsaXRp
ZXMgZm9yICJhbGwgc3BlZWNoIiBhbmQgImFsbCBtdXNpYyIgKi8KLSAgICAgICBmbG9hdCBzMCwg
bTA7Ci0gICAgICAgLyogUHJvYmFiaWxpdHkgc3VtIGZvciByZW5vcm1hbGlzYXRpb24gKi8KLSAg
ICAgICBmbG9hdCBwc3VtOwotICAgICAgIC8qIEluc3RhbnRhbmVvdXMgcHJvYmFiaWxpdHkgb2Yg
c3BlZWNoIGFuZCBtdXNpYywgd2l0aCBiZXRhIHByZS1hcHBsaWVkLiAqLwotICAgICAgIGZsb2F0
IHNwZWVjaDA7Ci0gICAgICAgZmxvYXQgbXVzaWMwOwotICAgICAgIGZsb2F0IHAsIHE7Ci0KLSAg
ICAgICAvKiBNb3JlIHNpbGVuY2UgdHJhbnNpdGlvbnMgZm9yIHNwZWVjaCB0aGFuIGZvciBtdXNp
Yy4gKi8KLSAgICAgICB0YXUgPSAuMDAxZip0b25hbC0+bXVzaWNfcHJvYiArIC4wMWYqKDEtdG9u
YWwtPm11c2ljX3Byb2IpOwotICAgICAgIHAgPSBNQVgxNiguMDVmLE1JTjE2KC45NWYsZnJhbWVf
cHJvYnNbMV0pKTsKLSAgICAgICBxID0gTUFYMTYoLjA1ZixNSU4xNiguOTVmLHRvbmFsLT52YWRf
cHJvYikpOwotICAgICAgIGJldGEgPSAuMDJmKy4wNWYqQUJTMTYocC1xKS8ocCooMS1xKStxKigx
LXApKTsKLSAgICAgICAvKiBwMCBhbmQgcDEgYXJlIHRoZSBwcm9iYWJpbGl0aWVzIG9mIHNwZWVj
aCBhbmQgbXVzaWMgYXQgdGhpcyBmcmFtZQotICAgICAgICAgIHVzaW5nIG9ubHkgaW5mb3JtYXRp
b24gZnJvbSBwcmV2aW91cyBmcmFtZSBhbmQgYXBwbHlpbmcgdGhlCi0gICAgICAgICAgc3RhdGUg
dHJhbnNpdGlvbiBtb2RlbCAqLwotICAgICAgIHAwID0gKDEtdG9uYWwtPnZhZF9wcm9iKSooMS10
YXUpICsgICAgdG9uYWwtPnZhZF9wcm9iICp0YXU7Ci0gICAgICAgcDEgPSAgICB0b25hbC0+dmFk
X3Byb2IgKigxLXRhdSkgKyAoMS10b25hbC0+dmFkX3Byb2IpKnRhdTsKLSAgICAgICAvKiBXZSBh
cHBseSB0aGUgY3VycmVudCBwcm9iYWJpbGl0eSB3aXRoIGV4cG9uZW50IGJldGEgdG8gd29yayBh
cm91bmQKLSAgICAgICAgICB0aGUgZmFjdCB0aGF0IHRoZSBwcm9iYWJpbGl0eSBlc3RpbWF0ZXMg
YXJlbid0IGluZGVwZW5kZW50LiAqLwotICAgICAgIHAwICo9IChmbG9hdClwb3coMS1mcmFtZV9w
cm9ic1sxXSwgYmV0YSk7Ci0gICAgICAgcDEgKj0gKGZsb2F0KXBvdyhmcmFtZV9wcm9ic1sxXSwg
YmV0YSk7Ci0gICAgICAgLyogTm9ybWFsaXNlIHRoZSBwcm9iYWJpbGl0aWVzIHRvIGdldCB0aGUg
TWFyb2t2IHByb2JhYmlsaXR5IG9mIG11c2ljLiAqLwotICAgICAgIHRvbmFsLT52YWRfcHJvYiA9
IHAxLyhwMCtwMSk7Ci0gICAgICAgaW5mby0+dmFkX3Byb2IgPSB0b25hbC0+dmFkX3Byb2I7Ci0g
ICAgICAgLyogQ29uc2lkZXIgdGhhdCBzaWxlbmNlIGhhcyBhIDUwLTUwIHByb2JhYmlsaXR5IG9m
IGJlaW5nIHNwZWVjaCBvciBtdXNpYy4gKi8KLSAgICAgICBmcmFtZV9wcm9ic1swXSA9IHRvbmFs
LT52YWRfcHJvYipmcmFtZV9wcm9ic1swXSArICgxLXRvbmFsLT52YWRfcHJvYikqLjVmOwotCi0g
ICAgICAgLyogT25lIHRyYW5zaXRpb24gZXZlcnkgMyBtaW51dGVzIG9mIGFjdGl2ZSBhdWRpbyAq
LwotICAgICAgIHRhdSA9IC4wMDAxZjsKLSAgICAgICAvKiBBZGFwdCBiZXRhIGJhc2VkIG9uIGhv
dyAidW5leHBlY3RlZCIgdGhlIG5ldyBwcm9iIGlzICovCi0gICAgICAgcCA9IE1BWDE2KC4wNWYs
TUlOMTYoLjk1ZixmcmFtZV9wcm9ic1swXSkpOwotICAgICAgIHEgPSBNQVgxNiguMDVmLE1JTjE2
KC45NWYsdG9uYWwtPm11c2ljX3Byb2IpKTsKLSAgICAgICBiZXRhID0gLjAyZisuMDVmKkFCUzE2
KHAtcSkvKHAqKDEtcSkrcSooMS1wKSk7Ci0gICAgICAgLyogcDAgYW5kIHAxIGFyZSB0aGUgcHJv
YmFiaWxpdGllcyBvZiBzcGVlY2ggYW5kIG11c2ljIGF0IHRoaXMgZnJhbWUKLSAgICAgICAgICB1
c2luZyBvbmx5IGluZm9ybWF0aW9uIGZyb20gcHJldmlvdXMgZnJhbWUgYW5kIGFwcGx5aW5nIHRo
ZQotICAgICAgICAgIHN0YXRlIHRyYW5zaXRpb24gbW9kZWwgKi8KLSAgICAgICBwMCA9ICgxLXRv
bmFsLT5tdXNpY19wcm9iKSooMS10YXUpICsgICAgdG9uYWwtPm11c2ljX3Byb2IgKnRhdTsKLSAg
ICAgICBwMSA9ICAgIHRvbmFsLT5tdXNpY19wcm9iICooMS10YXUpICsgKDEtdG9uYWwtPm11c2lj
X3Byb2IpKnRhdTsKLSAgICAgICAvKiBXZSBhcHBseSB0aGUgY3VycmVudCBwcm9iYWJpbGl0eSB3
aXRoIGV4cG9uZW50IGJldGEgdG8gd29yayBhcm91bmQKLSAgICAgICAgICB0aGUgZmFjdCB0aGF0
IHRoZSBwcm9iYWJpbGl0eSBlc3RpbWF0ZXMgYXJlbid0IGluZGVwZW5kZW50LiAqLwotICAgICAg
IHAwICo9IChmbG9hdClwb3coMS1mcmFtZV9wcm9ic1swXSwgYmV0YSk7Ci0gICAgICAgcDEgKj0g
KGZsb2F0KXBvdyhmcmFtZV9wcm9ic1swXSwgYmV0YSk7Ci0gICAgICAgLyogTm9ybWFsaXNlIHRo
ZSBwcm9iYWJpbGl0aWVzIHRvIGdldCB0aGUgTWFyb2t2IHByb2JhYmlsaXR5IG9mIG11c2ljLiAq
LwotICAgICAgIHRvbmFsLT5tdXNpY19wcm9iID0gcDEvKHAwK3AxKTsKLSAgICAgICBpbmZvLT5t
dXNpY19wcm9iID0gdG9uYWwtPm11c2ljX3Byb2I7Ci0KLSAgICAgICAvKnByaW50ZigiJWYgJWYg
JWYgJWZcbiIsIGZyYW1lX3Byb2JzWzBdLCBmcmFtZV9wcm9ic1sxXSwgdG9uYWwtPm11c2ljX3By
b2IsIHRvbmFsLT52YWRfcHJvYik7Ki8KLSAgICAgICAvKiBUaGlzIGNodW5rIG9mIGNvZGUgZGVh
bHMgd2l0aCBkZWxheWVkIGRlY2lzaW9uLiAqLwotICAgICAgIHBzdW09MWUtMjBmOwotICAgICAg
IC8qIEluc3RhbnRhbmVvdXMgcHJvYmFiaWxpdHkgb2Ygc3BlZWNoIGFuZCBtdXNpYywgd2l0aCBi
ZXRhIHByZS1hcHBsaWVkLiAqLwotICAgICAgIHNwZWVjaDAgPSAoZmxvYXQpcG93KDEtZnJhbWVf
cHJvYnNbMF0sIGJldGEpOwotICAgICAgIG11c2ljMCAgPSAoZmxvYXQpcG93KGZyYW1lX3Byb2Jz
WzBdLCBiZXRhKTsKLSAgICAgICBpZiAodG9uYWwtPmNvdW50PT0xKQotICAgICAgIHsKLSAgICAg
ICAgICBpZiAodG9uYWwtPmFwcGxpY2F0aW9uID09IE9QVVNfQVBQTElDQVRJT05fVk9JUCkKLSAg
ICAgICAgICAgICB0b25hbC0+cG11c2ljWzBdID0gLjFmOwotICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICB0b25hbC0+cG11c2ljWzBdID0gLjYyNWY7Ci0gICAgICAgICAgdG9uYWwtPnBzcGVl
Y2hbMF0gPSAxLXRvbmFsLT5wbXVzaWNbMF07Ci0gICAgICAgfQotICAgICAgIC8qIFVwZGF0ZWQg
cHJvYmFiaWxpdHkgb2YgaGF2aW5nIG9ubHkgc3BlZWNoIChzMCkgb3Igb25seSBtdXNpYyAobTAp
LAotICAgICAgICAgIGJlZm9yZSBjb25zaWRlcmluZyB0aGUgbmV3IG9ic2VydmF0aW9uLiAqLwot
ICAgICAgIHMwID0gdG9uYWwtPnBzcGVlY2hbMF0gKyB0b25hbC0+cHNwZWVjaFsxXTsKLSAgICAg
ICBtMCA9IHRvbmFsLT5wbXVzaWMgWzBdICsgdG9uYWwtPnBtdXNpYyBbMV07Ci0gICAgICAgLyog
VXBkYXRlcyBzMCBhbmQgbTAgd2l0aCBpbnN0YW50YW5lb3VzIHByb2JhYmlsaXR5LiAqLwotICAg
ICAgIHRvbmFsLT5wc3BlZWNoWzBdID0gczAqKDEtdGF1KSpzcGVlY2gwOwotICAgICAgIHRvbmFs
LT5wbXVzaWMgWzBdID0gbTAqKDEtdGF1KSptdXNpYzA7Ci0gICAgICAgLyogUHJvcGFnYXRlIHRo
ZSB0cmFuc2l0aW9uIHByb2JhYmlsaXRpZXMgKi8KLSAgICAgICBmb3IgKGk9MTtpPERFVEVDVF9T
SVpFLTE7aSsrKQotICAgICAgIHsKLSAgICAgICAgICB0b25hbC0+cHNwZWVjaFtpXSA9IHRvbmFs
LT5wc3BlZWNoW2krMV0qc3BlZWNoMDsKLSAgICAgICAgICB0b25hbC0+cG11c2ljIFtpXSA9IHRv
bmFsLT5wbXVzaWMgW2krMV0qbXVzaWMwOwotICAgICAgIH0KLSAgICAgICAvKiBQcm9iYWJpbGl0
eSB0aGF0IHRoZSBsYXRlc3QgZnJhbWUgaXMgc3BlZWNoLCB3aGVuIGFsbCB0aGUgcHJldmlvdXMg
b25lcyB3ZXJlIG11c2ljLiAqLwotICAgICAgIHRvbmFsLT5wc3BlZWNoW0RFVEVDVF9TSVpFLTFd
ID0gbTAqdGF1KnNwZWVjaDA7Ci0gICAgICAgLyogUHJvYmFiaWxpdHkgdGhhdCB0aGUgbGF0ZXN0
IGZyYW1lIGlzIG11c2ljLCB3aGVuIGFsbCB0aGUgcHJldmlvdXMgb25lcyB3ZXJlIHNwZWVjaC4g
Ki8KLSAgICAgICB0b25hbC0+cG11c2ljIFtERVRFQ1RfU0laRS0xXSA9IHMwKnRhdSptdXNpYzA7
Ci0KLSAgICAgICAvKiBSZW5vcm1hbGlzZSBwcm9iYWJpbGl0aWVzIHRvIDEgKi8KLSAgICAgICBm
b3IgKGk9MDtpPERFVEVDVF9TSVpFO2krKykKLSAgICAgICAgICBwc3VtICs9IHRvbmFsLT5wc3Bl
ZWNoW2ldICsgdG9uYWwtPnBtdXNpY1tpXTsKLSAgICAgICBwc3VtID0gMS5mL3BzdW07Ci0gICAg
ICAgZm9yIChpPTA7aTxERVRFQ1RfU0laRTtpKyspCi0gICAgICAgewotICAgICAgICAgIHRvbmFs
LT5wc3BlZWNoW2ldICo9IHBzdW07Ci0gICAgICAgICAgdG9uYWwtPnBtdXNpYyBbaV0gKj0gcHN1
bTsKLSAgICAgICB9Ci0gICAgICAgcHN1bSA9IHRvbmFsLT5wbXVzaWNbMF07Ci0gICAgICAgZm9y
IChpPTE7aTxERVRFQ1RfU0laRTtpKyspCi0gICAgICAgICAgcHN1bSArPSB0b25hbC0+cHNwZWVj
aFtpXTsKLQotICAgICAgIC8qIEVzdGltYXRlIG91ciBjb25maWRlbmNlIGluIHRoZSBzcGVlY2gv
bXVzaWMgZGVjaXNpb25zICovCi0gICAgICAgaWYgKGZyYW1lX3Byb2JzWzFdPi43NSkKLSAgICAg
ICB7Ci0gICAgICAgICAgaWYgKHRvbmFsLT5tdXNpY19wcm9iPi45KQotICAgICAgICAgIHsKLSAg
ICAgICAgICAgICBmbG9hdCBhZGFwdDsKLSAgICAgICAgICAgICBhZGFwdCA9IDEuZi8oKyt0b25h
bC0+bXVzaWNfY29uZmlkZW5jZV9jb3VudCk7Ci0gICAgICAgICAgICAgdG9uYWwtPm11c2ljX2Nv
bmZpZGVuY2VfY291bnQgPSBJTUlOKHRvbmFsLT5tdXNpY19jb25maWRlbmNlX2NvdW50LCA1MDAp
OwotICAgICAgICAgICAgIHRvbmFsLT5tdXNpY19jb25maWRlbmNlICs9IGFkYXB0Kk1BWDE2KC0u
MmYsZnJhbWVfcHJvYnNbMF0tdG9uYWwtPm11c2ljX2NvbmZpZGVuY2UpOwotICAgICAgICAgIH0K
LSAgICAgICAgICBpZiAodG9uYWwtPm11c2ljX3Byb2I8LjEpCi0gICAgICAgICAgewotICAgICAg
ICAgICAgIGZsb2F0IGFkYXB0OwotICAgICAgICAgICAgIGFkYXB0ID0gMS5mLygrK3RvbmFsLT5z
cGVlY2hfY29uZmlkZW5jZV9jb3VudCk7Ci0gICAgICAgICAgICAgdG9uYWwtPnNwZWVjaF9jb25m
aWRlbmNlX2NvdW50ID0gSU1JTih0b25hbC0+c3BlZWNoX2NvbmZpZGVuY2VfY291bnQsIDUwMCk7
Ci0gICAgICAgICAgICAgdG9uYWwtPnNwZWVjaF9jb25maWRlbmNlICs9IGFkYXB0Kk1JTjE2KC4y
ZixmcmFtZV9wcm9ic1swXS10b25hbC0+c3BlZWNoX2NvbmZpZGVuY2UpOwotICAgICAgICAgIH0K
LSAgICAgICB9Ci0gICAgfQotICAgIHRvbmFsLT5sYXN0X211c2ljID0gdG9uYWwtPm11c2ljX3By
b2I+LjVmOworICAgIC8qcHJpbnRmKCIlZiAlZiAlZlxuIiwgZnJhbWVfcHJvYnNbMF0sIGZyYW1l
X3Byb2JzWzFdLCBpbmZvLT5tdXNpY19wcm9iKTsqLwogI2lmZGVmIE1MUF9UUkFJTklORwogICAg
IGZvciAoaT0wO2k8MjU7aSsrKQogICAgICAgIHByaW50ZigiJWYgIiwgZmVhdHVyZXNbaV0pOwpA
QCAtOTMzLDcgKzk3NSw2IEBAIHZvaWQgcnVuX2FuYWx5c2lzKFRvbmFsaXR5QW5hbHlzaXNTdGF0
ZSAqYW5hbHlzaXMsIGNvbnN0IENFTFRNb2RlICpjZWx0X21vZGUsIGNvCiAgICAgICBhbmFseXNp
cy0+YW5hbHlzaXNfb2Zmc2V0IC09IGZyYW1lX3NpemU7CiAgICB9CiAKLSAgIGFuYWx5c2lzX2lu
Zm8tPnZhbGlkID0gMDsKICAgIHRvbmFsaXR5X2dldF9pbmZvKGFuYWx5c2lzLCBhbmFseXNpc19p
bmZvLCBmcmFtZV9zaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvYW5hbHlzaXMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL2Fu
YWx5c2lzLmgKaW5kZXggY2FjNTFkZmE0ZWI1NWQ4ZDFhYmJiMGRlZTlmMDcwNDYzNTQyZGYxZC4u
MGI2NjU1NWYyMTUzYmMwMzZhYWZhODBjOWQ0NTNkMzAxZTg3OTM4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMv
YW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3NyYy9hbmFseXNpcy5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJjZWx0LmgiCiAjaW5jbHVkZSAib3B1c19wcml2YXRlLmgiCisjaW5jbHVkZSAibWxwLmgi
CiAKICNkZWZpbmUgTkJfRlJBTUVTIDgKICNkZWZpbmUgTkJfVEJBTkRTIDE4CkBAIC02NCwyOCAr
NjUsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgZmxvYXQgbWVtWzMyXTsKICAgIGZsb2F0IGNt
ZWFuWzhdOwogICAgZmxvYXQgc3RkWzldOwotICAgZmxvYXQgbXVzaWNfcHJvYjsKLSAgIGZsb2F0
IHZhZF9wcm9iOwogICAgZmxvYXQgRXRyYWNrZXI7CiAgICBmbG9hdCBsb3dFQ291bnQ7CiAgICBp
bnQgRV9jb3VudDsKLSAgIGludCBsYXN0X211c2ljOwogICAgaW50IGNvdW50OwogICAgaW50IGFu
YWx5c2lzX29mZnNldDsKLSAgIC8qKiBQcm9iYWJpbGl0eSBvZiBoYXZpbmcgc3BlZWNoIGZvciB0
aW1lIGkgdG8gREVURUNUX1NJWkUtMSAoYW5kIG11c2ljIGJlZm9yZSkuCi0gICAgICAgcHNwZWVj
aFswXSBpcyB0aGUgcHJvYmFiaWxpdHkgdGhhdCBhbGwgZnJhbWVzIGluIHRoZSB3aW5kb3cgYXJl
IHNwZWVjaC4gKi8KLSAgIGZsb2F0IHBzcGVlY2hbREVURUNUX1NJWkVdOwotICAgLyoqIFByb2Jh
YmlsaXR5IG9mIGhhdmluZyBtdXNpYyBmb3IgdGltZSBpIHRvIERFVEVDVF9TSVpFLTEgKGFuZCBz
cGVlY2ggYmVmb3JlKS4KLSAgICAgICBwbXVzaWNbMF0gaXMgdGhlIHByb2JhYmlsaXR5IHRoYXQg
YWxsIGZyYW1lcyBpbiB0aGUgd2luZG93IGFyZSBtdXNpYy4gKi8KLSAgIGZsb2F0IHBtdXNpY1tE
RVRFQ1RfU0laRV07Ci0gICBmbG9hdCBzcGVlY2hfY29uZmlkZW5jZTsKLSAgIGZsb2F0IG11c2lj
X2NvbmZpZGVuY2U7Ci0gICBpbnQgc3BlZWNoX2NvbmZpZGVuY2VfY291bnQ7Ci0gICBpbnQgbXVz
aWNfY29uZmlkZW5jZV9jb3VudDsKICAgIGludCB3cml0ZV9wb3M7CiAgICBpbnQgcmVhZF9wb3M7
CiAgICBpbnQgcmVhZF9zdWJmcmFtZTsKICAgIGZsb2F0IGhwX2VuZXJfYWNjdW07CisgICBpbnQg
aW5pdGlhbGl6ZWQ7CisgICBmbG9hdCBybm5fc3RhdGVbTUFYX05FVVJPTlNdOwogICAgb3B1c192
YWwzMiBkb3dubWl4X3N0YXRlWzNdOwogICAgQW5hbHlzaXNJbmZvIGluZm9bREVURUNUX1NJWkVd
OwogfSBUb25hbGl0eUFuYWx5c2lzU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tYXBwaW5nX21hdHJp
eC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zcmMvbWFwcGluZ19tYXRyaXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTI5OGFmMDU3NTU3MTVmODZh
MTI4NjUyNzViMTNlYjg5MzMwOGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWFwcGluZ19tYXRy
aXguYwpAQCAtMCwwICsxLDM3OCBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE3IEdvb2dsZSBJbmMu
CisgICBXcml0dGVuIGJ5IEFuZHJldyBBbGxlbiAqLworLyoKKyAgIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgICBhcmUgbWV0OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
CisgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZF
X0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImFyY2gu
aCIKKyNpbmNsdWRlICJmbG9hdF9jYXN0LmgiCisjaW5jbHVkZSAib3B1c19wcml2YXRlLmgiCisj
aW5jbHVkZSAib3B1c19kZWZpbmVzLmgiCisjaW5jbHVkZSAibWFwcGluZ19tYXRyaXguaCIKKwor
I2RlZmluZSBNQVRSSVhfSU5ERVgobmJfcm93cywgcm93LCBjb2wpIChuYl9yb3dzICogY29sICsg
cm93KQorCitvcHVzX2ludDMyIG1hcHBpbmdfbWF0cml4X2dldF9zaXplKGludCByb3dzLCBpbnQg
Y29scykKK3sKKyAgb3B1c19pbnQzMiBzaXplOworCisgIC8qIE1hcHBpbmcgTWF0cml4IG11c3Qg
b25seSBzdXBwb3J0IHVwIHRvIDI1NSBjaGFubmVscyBpbiBvciBvdXQuCisgICAqIEFkZGl0aW9u
YWxseSwgdGhlIHRvdGFsIGNlbGwgY291bnQgbXVzdCBiZSA8PSA2NTAwNCBvY3RldHMgaW4gb3Jk
ZXIKKyAgICogZm9yIHRoZSBtYXRyaXggdG8gYmUgc3RvcmVkIGluIGFuIE9HRyBoZWFkZXIuCisg
ICAqLworICBpZiAocm93cyA+IDI1NSB8fCBjb2xzID4gMjU1KQorICAgICAgcmV0dXJuIDA7Cisg
IHNpemUgPSByb3dzICogKG9wdXNfaW50MzIpY29scyAqIHNpemVvZihvcHVzX2ludDE2KTsKKyAg
aWYgKHNpemUgPiA2NTAwNCkKKyAgICByZXR1cm4gMDsKKworICByZXR1cm4gYWxpZ24oc2l6ZW9m
KE1hcHBpbmdNYXRyaXgpKSArIGFsaWduKHNpemUpOworfQorCitvcHVzX2ludDE2ICptYXBwaW5n
X21hdHJpeF9nZXRfZGF0YShjb25zdCBNYXBwaW5nTWF0cml4ICptYXRyaXgpCit7CisgIC8qIHZv
aWQqIGNhc3QgYXZvaWRzIGNsYW5nIC1XY2FzdC1hbGlnbiB3YXJuaW5nICovCisgIHJldHVybiAo
b3B1c19pbnQxNiopKHZvaWQqKSgoY2hhciopbWF0cml4ICsgYWxpZ24oc2l6ZW9mKE1hcHBpbmdN
YXRyaXgpKSk7Cit9CisKK3ZvaWQgbWFwcGluZ19tYXRyaXhfaW5pdChNYXBwaW5nTWF0cml4ICog
Y29uc3QgbWF0cml4LAorICBpbnQgcm93cywgaW50IGNvbHMsIGludCBnYWluLCBjb25zdCBvcHVz
X2ludDE2ICpkYXRhLCBvcHVzX2ludDMyIGRhdGFfc2l6ZSkKK3sKKyAgaW50IGk7CisgIG9wdXNf
aW50MTYgKnB0cjsKKworI2lmICFkZWZpbmVkKEVOQUJMRV9BU1NFUlRJT05TKQorICAodm9pZClk
YXRhX3NpemU7CisjZW5kaWYKKyAgY2VsdF9hc3NlcnQoYWxpZ24oZGF0YV9zaXplKSA9PSBhbGln
bihyb3dzICogY29scyAqIHNpemVvZihvcHVzX2ludDE2KSkpOworCisgIG1hdHJpeC0+cm93cyA9
IHJvd3M7CisgIG1hdHJpeC0+Y29scyA9IGNvbHM7CisgIG1hdHJpeC0+Z2FpbiA9IGdhaW47Cisg
IHB0ciA9IG1hcHBpbmdfbWF0cml4X2dldF9kYXRhKG1hdHJpeCk7CisgIGZvciAoaSA9IDA7IGkg
PCByb3dzICogY29sczsgaSsrKQorICB7CisgICAgIHB0cltpXSA9IGRhdGFbaV07CisgIH0KK30K
KworI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQordm9pZCBtYXBwaW5nX21hdHJpeF9tdWx0aXBs
eV9jaGFubmVsX2luX2Zsb2F0KAorICAgIGNvbnN0IE1hcHBpbmdNYXRyaXggKm1hdHJpeCwKKyAg
ICBjb25zdCBmbG9hdCAqaW5wdXQsCisgICAgaW50IGlucHV0X3Jvd3MsCisgICAgb3B1c192YWwx
NiAqb3V0cHV0LAorICAgIGludCBvdXRwdXRfcm93LAorICAgIGludCBvdXRwdXRfcm93cywKKyAg
ICBpbnQgZnJhbWVfc2l6ZSkKK3sKKyAgLyogTWF0cml4IGRhdGEgaXMgb3JkZXJlZCBjb2wtd2lz
ZS4gKi8KKyAgb3B1c19pbnQxNiogbWF0cml4X2RhdGE7CisgIGludCBpLCBjb2w7CisKKyAgY2Vs
dF9hc3NlcnQoaW5wdXRfcm93cyA8PSBtYXRyaXgtPmNvbHMgJiYgb3V0cHV0X3Jvd3MgPD0gbWF0
cml4LT5yb3dzKTsKKworICBtYXRyaXhfZGF0YSA9IG1hcHBpbmdfbWF0cml4X2dldF9kYXRhKG1h
dHJpeCk7CisKKyAgZm9yIChpID0gMDsgaSA8IGZyYW1lX3NpemU7IGkrKykKKyAgeworICAgIGZs
b2F0IHRtcCA9IDA7CisgICAgZm9yIChjb2wgPSAwOyBjb2wgPCBpbnB1dF9yb3dzOyBjb2wrKykK
KyAgICB7CisgICAgICB0bXAgKz0KKyAgICAgICAgbWF0cml4X2RhdGFbTUFUUklYX0lOREVYKG1h
dHJpeC0+cm93cywgb3V0cHV0X3JvdywgY29sKV0gKgorICAgICAgICBpbnB1dFtNQVRSSVhfSU5E
RVgoaW5wdXRfcm93cywgY29sLCBpKV07CisgICAgfQorI2lmIGRlZmluZWQoRklYRURfUE9JTlQp
CisgICAgb3V0cHV0W291dHB1dF9yb3dzICogaV0gPSBGTE9BVDJJTlQxNigoMS8zMjc2OC5mKSp0
bXApOworI2Vsc2UKKyAgICBvdXRwdXRbb3V0cHV0X3Jvd3MgKiBpXSA9ICgxLzMyNzY4LmYpKnRt
cDsKKyNlbmRpZgorICB9Cit9CisKK3ZvaWQgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5l
bF9vdXRfZmxvYXQoCisgICAgY29uc3QgTWFwcGluZ01hdHJpeCAqbWF0cml4LAorICAgIGNvbnN0
IG9wdXNfdmFsMTYgKmlucHV0LAorICAgIGludCBpbnB1dF9yb3csCisgICAgaW50IGlucHV0X3Jv
d3MsCisgICAgZmxvYXQgKm91dHB1dCwKKyAgICBpbnQgb3V0cHV0X3Jvd3MsCisgICAgaW50IGZy
YW1lX3NpemUKKykKK3sKKyAgLyogTWF0cml4IGRhdGEgaXMgb3JkZXJlZCBjb2wtd2lzZS4gKi8K
KyAgb3B1c19pbnQxNiogbWF0cml4X2RhdGE7CisgIGludCBpLCByb3c7CisgIGZsb2F0IGlucHV0
X3NhbXBsZTsKKworICBjZWx0X2Fzc2VydChpbnB1dF9yb3dzIDw9IG1hdHJpeC0+Y29scyAmJiBv
dXRwdXRfcm93cyA8PSBtYXRyaXgtPnJvd3MpOworCisgIG1hdHJpeF9kYXRhID0gbWFwcGluZ19t
YXRyaXhfZ2V0X2RhdGEobWF0cml4KTsKKworICBmb3IgKGkgPSAwOyBpIDwgZnJhbWVfc2l6ZTsg
aSsrKQorICB7CisjaWYgZGVmaW5lZChGSVhFRF9QT0lOVCkKKyAgICBpbnB1dF9zYW1wbGUgPSAo
MS8zMjc2OC5mKSppbnB1dFtpbnB1dF9yb3dzICogaV07CisjZWxzZQorICAgIGlucHV0X3NhbXBs
ZSA9IGlucHV0W2lucHV0X3Jvd3MgKiBpXTsKKyNlbmRpZgorICAgIGZvciAocm93ID0gMDsgcm93
IDwgb3V0cHV0X3Jvd3M7IHJvdysrKQorICAgIHsKKyAgICAgIGZsb2F0IHRtcCA9CisgICAgICAg
ICgxLzMyNzY4LmYpKm1hdHJpeF9kYXRhW01BVFJJWF9JTkRFWChtYXRyaXgtPnJvd3MsIHJvdywg
aW5wdXRfcm93KV0gKgorICAgICAgICBpbnB1dF9zYW1wbGU7CisgICAgICBvdXRwdXRbTUFUUklY
X0lOREVYKG91dHB1dF9yb3dzLCByb3csIGkpXSArPSB0bXA7CisgICAgfQorICB9Cit9CisjZW5k
aWYgLyogRElTQUJMRV9GTE9BVF9BUEkgKi8KKwordm9pZCBtYXBwaW5nX21hdHJpeF9tdWx0aXBs
eV9jaGFubmVsX2luX3Nob3J0KAorICAgIGNvbnN0IE1hcHBpbmdNYXRyaXggKm1hdHJpeCwKKyAg
ICBjb25zdCBvcHVzX2ludDE2ICppbnB1dCwKKyAgICBpbnQgaW5wdXRfcm93cywKKyAgICBvcHVz
X3ZhbDE2ICpvdXRwdXQsCisgICAgaW50IG91dHB1dF9yb3csCisgICAgaW50IG91dHB1dF9yb3dz
LAorICAgIGludCBmcmFtZV9zaXplKQoreworICAvKiBNYXRyaXggZGF0YSBpcyBvcmRlcmVkIGNv
bC13aXNlLiAqLworICBvcHVzX2ludDE2KiBtYXRyaXhfZGF0YTsKKyAgaW50IGksIGNvbDsKKwor
ICBjZWx0X2Fzc2VydChpbnB1dF9yb3dzIDw9IG1hdHJpeC0+Y29scyAmJiBvdXRwdXRfcm93cyA8
PSBtYXRyaXgtPnJvd3MpOworCisgIG1hdHJpeF9kYXRhID0gbWFwcGluZ19tYXRyaXhfZ2V0X2Rh
dGEobWF0cml4KTsKKworICBmb3IgKGkgPSAwOyBpIDwgZnJhbWVfc2l6ZTsgaSsrKQorICB7Cisg
ICAgb3B1c192YWwzMiB0bXAgPSAwOworICAgIGZvciAoY29sID0gMDsgY29sIDwgaW5wdXRfcm93
czsgY29sKyspCisgICAgeworI2lmIGRlZmluZWQoRklYRURfUE9JTlQpCisgICAgICB0bXAgKz0K
KyAgICAgICAgKChvcHVzX2ludDMyKW1hdHJpeF9kYXRhW01BVFJJWF9JTkRFWChtYXRyaXgtPnJv
d3MsIG91dHB1dF9yb3csIGNvbCldICoKKyAgICAgICAgKG9wdXNfaW50MzIpaW5wdXRbTUFUUklY
X0lOREVYKGlucHV0X3Jvd3MsIGNvbCwgaSldKSA+PiA4OworI2Vsc2UKKyAgICAgIHRtcCArPQor
ICAgICAgICBtYXRyaXhfZGF0YVtNQVRSSVhfSU5ERVgobWF0cml4LT5yb3dzLCBvdXRwdXRfcm93
LCBjb2wpXSAqCisgICAgICAgIGlucHV0W01BVFJJWF9JTkRFWChpbnB1dF9yb3dzLCBjb2wsIGkp
XTsKKyNlbmRpZgorICAgIH0KKyNpZiBkZWZpbmVkKEZJWEVEX1BPSU5UKQorICAgIG91dHB1dFtv
dXRwdXRfcm93cyAqIGldID0gKG9wdXNfaW50MTYpKCh0bXAgKyA2NCkgPj4gNyk7CisjZWxzZQor
ICAgIG91dHB1dFtvdXRwdXRfcm93cyAqIGldID0gKDEvKDMyNzY4LmYqMzI3NjguZikpKnRtcDsK
KyNlbmRpZgorICB9Cit9CisKK3ZvaWQgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5lbF9v
dXRfc2hvcnQoCisgICAgY29uc3QgTWFwcGluZ01hdHJpeCAqbWF0cml4LAorICAgIGNvbnN0IG9w
dXNfdmFsMTYgKmlucHV0LAorICAgIGludCBpbnB1dF9yb3csCisgICAgaW50IGlucHV0X3Jvd3Ms
CisgICAgb3B1c19pbnQxNiAqb3V0cHV0LAorICAgIGludCBvdXRwdXRfcm93cywKKyAgICBpbnQg
ZnJhbWVfc2l6ZSkKK3sKKyAgLyogTWF0cml4IGRhdGEgaXMgb3JkZXJlZCBjb2wtd2lzZS4gKi8K
KyAgb3B1c19pbnQxNiogbWF0cml4X2RhdGE7CisgIGludCBpLCByb3c7CisgIG9wdXNfaW50MzIg
aW5wdXRfc2FtcGxlOworCisgIGNlbHRfYXNzZXJ0KGlucHV0X3Jvd3MgPD0gbWF0cml4LT5jb2xz
ICYmIG91dHB1dF9yb3dzIDw9IG1hdHJpeC0+cm93cyk7CisKKyAgbWF0cml4X2RhdGEgPSBtYXBw
aW5nX21hdHJpeF9nZXRfZGF0YShtYXRyaXgpOworCisgIGZvciAoaSA9IDA7IGkgPCBmcmFtZV9z
aXplOyBpKyspCisgIHsKKyNpZiBkZWZpbmVkKEZJWEVEX1BPSU5UKQorICAgIGlucHV0X3NhbXBs
ZSA9IChvcHVzX2ludDMyKWlucHV0W2lucHV0X3Jvd3MgKiBpXTsKKyNlbHNlCisgICAgaW5wdXRf
c2FtcGxlID0gKG9wdXNfaW50MzIpRkxPQVQySU5UMTYoaW5wdXRbaW5wdXRfcm93cyAqIGldKTsK
KyNlbmRpZgorICAgIGZvciAocm93ID0gMDsgcm93IDwgb3V0cHV0X3Jvd3M7IHJvdysrKQorICAg
IHsKKyAgICAgIG9wdXNfaW50MzIgdG1wID0KKyAgICAgICAgKG9wdXNfaW50MzIpbWF0cml4X2Rh
dGFbTUFUUklYX0lOREVYKG1hdHJpeC0+cm93cywgcm93LCBpbnB1dF9yb3cpXSAqCisgICAgICAg
IGlucHV0X3NhbXBsZTsKKyAgICAgIG91dHB1dFtNQVRSSVhfSU5ERVgob3V0cHV0X3Jvd3MsIHJv
dywgaSldICs9ICh0bXAgKyAxNjM4NCkgPj4gMTU7CisgICAgfQorICB9Cit9CisKK2NvbnN0IE1h
cHBpbmdNYXRyaXggbWFwcGluZ19tYXRyaXhfZm9hX21peGluZyA9IHsgNiwgNiwgMCB9OworY29u
c3Qgb3B1c19pbnQxNiBtYXBwaW5nX21hdHJpeF9mb2FfbWl4aW5nX2RhdGFbMzZdID0geworICAg
ICAxNjM4NCwgICAgICAwLCAtMTYzODQsICAyMzE3MCwgICAgICAwLCAgICAgIDAsICAxNjM4NCwg
IDIzMTcwLAorICAgICAxNjM4NCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgIDE2Mzg0LCAgICAg
IDAsIC0xNjM4NCwgLTIzMTcwLAorICAgICAgICAgMCwgICAgICAwLCAgMTYzODQsIC0yMzE3MCwg
IDE2Mzg0LCAgICAgIDAsICAgICAgMCwgICAgICAwLAorICAgICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgIDMyNzY3LCAgICAgIDAsICAgICAgMCwgICAgICAwLAorICAgICAgICAgMCwg
ICAgICAwLCAgICAgIDAsICAzMjc2NworfTsKKworY29uc3QgTWFwcGluZ01hdHJpeCBtYXBwaW5n
X21hdHJpeF9zb2FfbWl4aW5nID0geyAxMSwgMTEsIDAgfTsKK2NvbnN0IG9wdXNfaW50MTYgbWFw
cGluZ19tYXRyaXhfc29hX21peGluZ19kYXRhWzEyMV0gPSB7CisgICAgIDEwOTIzLCAgIDc3MjMs
ICAxMzM3NywgLTEzMzc3LCAgMTE1ODUsICAgOTQ1OSwgICA3NzIzLCAtMTYzODQsCisgICAgIC02
Njg5LCAgICAgIDAsICAgICAgMCwgIDEwOTIzLCAgIDc3MjMsICAxMzM3NywgIDEzMzc3LCAtMTE1
ODUsCisgICAgICA5NDU5LCAgIDc3MjMsICAxNjM4NCwgIC02Njg5LCAgICAgIDAsICAgICAgMCwg
IDEwOTIzLCAtMTU0NDcsCisgICAgIDEzMzc3LCAgICAgIDAsICAgICAgMCwgLTE4OTE5LCAgIDc3
MjMsICAgICAgMCwgIDEzMzc3LCAgICAgIDAsCisgICAgICAgICAwLCAgMTA5MjMsICAgNzcyMywg
LTEzMzc3LCAtMTMzNzcsICAxMTU4NSwgIC05NDU5LCAgIDc3MjMsCisgICAgIDE2Mzg0LCAgLTY2
ODksICAgICAgMCwgICAgICAwLCAgMTA5MjMsICAtNzcyMywgICAgICAwLCAgMTMzNzcsCisgICAg
LTE2Mzg0LCAgICAgIDAsIC0xNTQ0NywgICAgICAwLCAgIDk0NTksICAgICAgMCwgICAgICAwLCAg
MTA5MjMsCisgICAgIC03NzIzLCAgICAgIDAsIC0xMzM3NywgIDE2Mzg0LCAgICAgIDAsIC0xNTQ0
NywgICAgICAwLCAgIDk0NTksCisgICAgICAgICAwLCAgICAgIDAsICAxMDkyMywgIDE1NDQ3LCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgLTE1NDQ3LCAgICAgIDAsIC0xODkx
OSwgICAgICAwLCAgICAgIDAsICAxMDkyMywgICA3NzIzLCAtMTMzNzcsCisgICAgIDEzMzc3LCAt
MTE1ODUsICAtOTQ1OSwgICA3NzIzLCAtMTYzODQsICAtNjY4OSwgICAgICAwLCAgICAgIDAsCisg
ICAgIDEwOTIzLCAtMTU0NDcsIC0xMzM3NywgICAgICAwLCAgICAgIDAsICAxODkxOSwgICA3NzIz
LCAgICAgIDAsCisgICAgIDEzMzc3LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgMzI3NjcsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCisgICAgIDMyNzY3
Cit9OworCitjb25zdCBNYXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4X3RvYV9taXhpbmcgPSB7
IDE4LCAxOCwgMCB9OworY29uc3Qgb3B1c19pbnQxNiBtYXBwaW5nX21hdHJpeF90b2FfbWl4aW5n
X2RhdGFbMzI0XSA9IHsKKyAgICAgIDgyMDgsICAgICAgMCwgICAtODgxLCAgMTQzNjksICAgICAg
MCwgICAgICAwLCAgLTgxOTIsICAtNDE2MywKKyAgICAgMTMyMTgsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAxMTA5NSwgIC04ODM2LCAgLTYyMTgsICAxNDgzMywKKyAgICAgICAgIDAsICAgICAg
MCwgICA4MjA4LCAtMTAxNjEsICAgIDg4MSwgIDEwMTYxLCAtMTMyMTgsICAtMjk0NCwKKyAgICAg
LTgxOTIsICAgMjk0NCwgICAgICAwLCAtMTA0ODgsICAtNjIxOCwgICA2MjQ4LCAtMTEwOTUsICAt
NjI0OCwKKyAgICAgICAgIDAsIC0xMDQ4OCwgICAgICAwLCAgICAgIDAsICAgODIwOCwgIDEwMTYx
LCAgICA4ODEsIC0xMDE2MSwKKyAgICAtMTMyMTgsICAgMjk0NCwgIC04MTkyLCAgLTI5NDQsICAg
ICAgMCwgIDEwNDg4LCAgLTYyMTgsICAtNjI0OCwKKyAgICAtMTEwOTUsICAgNjI0OCwgICAgICAw
LCAgMTA0ODgsICAgICAgMCwgICAgICAwLCAgIDgxNzYsICAgNTU2NiwKKyAgICAtMTE1NTIsICAg
NTU2NiwgICA5NjgxLCAtMTEyMDUsICAgODE5MiwgLTExMjA1LCAgICAgIDAsICAgNDkyMCwKKyAg
ICAtMTUxNTgsICAgOTc1NiwgIC0zMzM0LCAgIDk3NTYsICAgICAgMCwgIC00OTIwLCAgICAgIDAs
ICAgICAgMCwKKyAgICAgIDgxNzYsICAgNzg3MSwgIDExNTUyLCAgICAgIDAsICAgICAgMCwgIDE1
ODQ2LCAgIDgxOTIsICAgICAgMCwKKyAgICAgLTk2ODEsICAtNjk1OCwgICAgICAwLCAgMTM3OTcs
ICAgMzMzNCwgICAgICAwLCAtMTUxNTgsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICA4
MTc2LCAgICAgIDAsICAxMTU1MiwgICA3ODcxLCAgICAgIDAsICAgICAgMCwKKyAgICAgIDgxOTIs
ICAxNTg0NiwgICA5NjgxLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgIDMzMzQsICAxMzc5NywK
KyAgICAgMTUxNTgsICAgNjk1OCwgICAgICAwLCAgICAgIDAsICAgODE3NiwgICA1NTY2LCAtMTE1
NTIsICAtNTU2NiwKKyAgICAgLTk2ODEsIC0xMTIwNSwgICA4MTkyLCAgMTEyMDUsICAgICAgMCwg
ICA0OTIwLCAgMTUxNTgsICAgOTc1NiwKKyAgICAgLTMzMzQsICAtOTc1NiwgICAgICAwLCAgIDQ5
MjAsICAgICAgMCwgICAgICAwLCAgIDgyMDgsICAxNDM2OSwKKyAgICAgIC04ODEsICAgICAgMCwg
ICAgICAwLCAgLTQxNjMsICAtODE5MiwgICAgICAwLCAtMTMyMTgsIC0xNDgzMywKKyAgICAgICAg
IDAsICAtODgzNiwgIDExMDk1LCAgICAgIDAsICAgNjIxOCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwKKyAgICAgIDgyMDgsICAxMDE2MSwgICAgODgxLCAgMTAxNjEsICAxMzIxOCwgICAyOTQ0LCAg
LTgxOTIsICAgMjk0NCwKKyAgICAgICAgIDAsICAxMDQ4OCwgICA2MjE4LCAgLTYyNDgsIC0xMTA5
NSwgIC02MjQ4LCAgICAgIDAsIC0xMDQ4OCwKKyAgICAgICAgIDAsICAgICAgMCwgICA4MjA4LCAt
MTQzNjksICAgLTg4MSwgICAgICAwLCAgICAgIDAsICAgNDE2MywKKyAgICAgLTgxOTIsICAgICAg
MCwgLTEzMjE4LCAgMTQ4MzMsICAgICAgMCwgICA4ODM2LCAgMTEwOTUsICAgICAgMCwKKyAgICAg
IDYyMTgsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgODIwOCwgICAgICAwLCAgIC04ODEsIC0x
NDM2OSwKKyAgICAgICAgIDAsICAgICAgMCwgIC04MTkyLCAgIDQxNjMsICAxMzIxOCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwKKyAgICAgMTEwOTUsICAgODgzNiwgIC02MjE4LCAtMTQ4MzMsICAg
ICAgMCwgICAgICAwLCAgIDgxNzYsICAtNTU2NiwKKyAgICAtMTE1NTIsICAgNTU2NiwgIC05Njgx
LCAgMTEyMDUsICAgODE5MiwgLTExMjA1LCAgICAgIDAsICAtNDkyMCwKKyAgICAgMTUxNTgsICAt
OTc1NiwgIC0zMzM0LCAgIDk3NTYsICAgICAgMCwgIC00OTIwLCAgICAgIDAsICAgICAgMCwKKyAg
ICAgIDgxNzYsICAgICAgMCwgIDExNTUyLCAgLTc4NzEsICAgICAgMCwgICAgICAwLCAgIDgxOTIs
IC0xNTg0NiwKKyAgICAgIDk2ODEsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgMzMzNCwgLTEz
Nzk3LCAgMTUxNTgsICAtNjk1OCwKKyAgICAgICAgIDAsICAgICAgMCwgICA4MTc2LCAgLTc4NzEs
ICAxMTU1MiwgICAgICAwLCAgICAgIDAsIC0xNTg0NiwKKyAgICAgIDgxOTIsICAgICAgMCwgIC05
NjgxLCAgIDY5NTgsICAgICAgMCwgLTEzNzk3LCAgIDMzMzQsICAgICAgMCwKKyAgICAtMTUxNTgs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgODE3NiwgIC01NTY2LCAtMTE1NTIsICAtNTU2NiwK
KyAgICAgIDk2ODEsICAxMTIwNSwgICA4MTkyLCAgMTEyMDUsICAgICAgMCwgIC00OTIwLCAtMTUx
NTgsICAtOTc1NiwKKyAgICAgLTMzMzQsICAtOTc1NiwgICAgICAwLCAgIDQ5MjAsICAgICAgMCwg
ICAgICAwLCAgIDgyMDgsIC0xMDE2MSwKKyAgICAgICA4ODEsIC0xMDE2MSwgIDEzMjE4LCAgLTI5
NDQsICAtODE5MiwgIC0yOTQ0LCAgICAgIDAsIC0xMDQ4OCwKKyAgICAgIDYyMTgsICAgNjI0OCwg
LTExMDk1LCAgIDYyNDgsICAgICAgMCwgIDEwNDg4LCAgICAgIDAsICAgICAgMCwKKyAgICAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwKKyAgICAgMzI3NjcsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgMzI3NjcKK307CisKK2NvbnN0IE1hcHBpbmdNYXRyaXggbWFwcGluZ19tYXRy
aXhfZm9hX2RlbWl4aW5nID0geyA2LCA2LCAwIH07Citjb25zdCBvcHVzX2ludDE2IG1hcHBpbmdf
bWF0cml4X2ZvYV9kZW1peGluZ19kYXRhWzM2XSA9IHsKKyAgICAgMTYzODQsICAxNjM4NCwgIDE2
Mzg0LCAgMTYzODQsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAyMzE3MCwKKyAgICAgICAgIDAs
IC0yMzE3MCwgICAgICAwLCAgICAgIDAsIC0xNjM4NCwgIDE2Mzg0LCAtMTYzODQsICAxNjM4NCwK
KyAgICAgICAgIDAsICAgICAgMCwgIDIzMTcwLCAgICAgIDAsIC0yMzE3MCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAzMjc2Nywg
ICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgMzI3
NjcKK307CisKK2NvbnN0IE1hcHBpbmdNYXRyaXggbWFwcGluZ19tYXRyaXhfc29hX2RlbWl4aW5n
ID0geyAxMSwgMTEsIDMwNTAgfTsKK2NvbnN0IG9wdXNfaW50MTYgbWFwcGluZ19tYXRyaXhfc29h
X2RlbWl4aW5nX2RhdGFbMTIxXSA9IHsKKyAgICAgIDI3NzEsICAgMjc3MSwgICAyNzcxLCAgIDI3
NzEsICAgMjc3MSwgICAyNzcxLCAgIDI3NzEsICAgMjc3MSwKKyAgICAgIDI3NzEsICAgICAgMCwg
ICAgICAwLCAgMTAwMzMsICAxMDAzMywgLTIwMDY2LCAgMTAwMzMsICAxNDE4OSwKKyAgICAgMTQx
ODksIC0yODM3OCwgIDEwMDMzLCAtMjAwNjYsICAgICAgMCwgICAgICAwLCAgIDMzOTMsICAgMzM5
MywKKyAgICAgIDMzOTMsICAtMzM5MywgICAgICAwLCAgICAgIDAsICAgICAgMCwgIC0zMzkzLCAg
LTMzOTMsICAgICAgMCwKKyAgICAgICAgIDAsIC0xNzM3OCwgIDE3Mzc4LCAgICAgIDAsIC0xNzM3
OCwgLTI0NTc2LCAgMjQ1NzYsICAgICAgMCwKKyAgICAgMTczNzgsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsIC0xNDE4OSwgIDE0MTg5LCAgICAgIDAsIC0xNDE4OSwKKyAgICAtMjgzNzgsICAyODM3
OCwgICAgICAwLCAgMTQxODksICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgMjM5OSwKKyAgICAg
IDIzOTksICAtNDc5OSwgIC0yMzk5LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgLTIzOTksICAg
NDc5OSwKKyAgICAgICAgIDAsICAgICAgMCwgICAxOTU5LCAgIDE5NTksICAgMTk1OSwgICAxOTU5
LCAgLTM5MTgsICAtMzkxOCwKKyAgICAgLTM5MTgsICAgMTk1OSwgICAxOTU5LCAgICAgIDAsICAg
ICAgMCwgIC00MTU2LCAgIDQxNTYsICAgICAgMCwKKyAgICAgIDQxNTYsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAtNDE1NiwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgIDgxOTIsICAg
ODE5MiwgLTE2Mzg0LCAgIDgxOTIsICAxNjM4NCwgIDE2Mzg0LCAtMzI3NjgsICAgODE5MiwKKyAg
ICAtMTYzODQsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgODMxMiwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgIDgzMTIKK307CisKK2NvbnN0
IE1hcHBpbmdNYXRyaXggbWFwcGluZ19tYXRyaXhfdG9hX2RlbWl4aW5nID0geyAxOCwgMTgsIDAg
fTsKK2NvbnN0IG9wdXNfaW50MTYgbWFwcGluZ19tYXRyaXhfdG9hX2RlbWl4aW5nX2RhdGFbMzI0
XSA9IHsKKyAgICAgIDgxOTIsICAgODE5MiwgICA4MTkyLCAgIDgxOTIsICAgODE5MiwgICA4MTky
LCAgIDgxOTIsICAgODE5MiwKKyAgICAgIDgxOTIsICAgODE5MiwgICA4MTkyLCAgIDgxOTIsICAg
ODE5MiwgICA4MTkyLCAgIDgxOTIsICAgODE5MiwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgLTk3NzksICAgOTc3OSwgICA2MjYzLCAgIDg4NTcsICAgICAgMCwKKyAgICAgIDYyNjMsICAx
MzgyOSwgICA5Nzc5LCAtMTM4MjksICAgICAgMCwgIC02MjYzLCAgICAgIDAsICAtODg1NywKKyAg
ICAgLTYyNjMsICAtOTc3OSwgICAgICAwLCAgICAgIDAsICAtMzQxMywgICAzNDEzLCAgIDM0MTMs
IC0xMTM1OSwKKyAgICAgMTEzNTksICAxMTM1OSwgLTExMzU5LCAgLTM0MTMsICAgMzQxMywgIC0z
NDEzLCAgLTM0MTMsIC0xMTM1OSwKKyAgICAgMTEzNTksICAxMTM1OSwgLTExMzU5LCAgIDM0MTMs
ICAgICAgMCwgICAgICAwLCAgMTM4MjksICAgOTc3OSwKKyAgICAgLTk3NzksICAgNjI2MywgICAg
ICAwLCAgIDg4NTcsICAtNjI2MywgICAgICAwLCAgIDk3NzksICAgICAgMCwKKyAgICAtMTM4Mjks
ICAgNjI2MywgIC04ODU3LCAgICAgIDAsICAtNjI2MywgIC05Nzc5LCAgICAgIDAsICAgICAgMCwK
KyAgICAgICAgIDAsIC0xNTYxNywgLTE1NjE3LCAgIDY0MDYsICAgICAgMCwgICAgICAwLCAgLTY0
MDYsICAgICAgMCwKKyAgICAgMTU2MTcsICAgICAgMCwgICAgICAwLCAgLTY0MDYsICAgICAgMCwg
ICAgICAwLCAgIDY0MDYsICAxNTYxNywKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgLTUw
MDMsICAgNTAwMywgLTEwNjY0LCAgMTUwODEsICAgICAgMCwKKyAgICAtMTA2NjQsICAtNzA3NSwg
ICA1MDAzLCAgIDcwNzUsICAgICAgMCwgIDEwNjY0LCAgICAgIDAsIC0xNTA4MSwKKyAgICAgMTA2
NjQsICAtNTAwMywgICAgICAwLCAgICAgIDAsICAtODE3NiwgIC04MTc2LCAgLTgxNzYsICAgODIw
OCwKKyAgICAgIDgyMDgsICAgODIwOCwgICA4MjA4LCAgLTgxNzYsICAtODE3NiwgIC04MTc2LCAg
LTgxNzYsICAgODIwOCwKKyAgICAgIDgyMDgsICAgODIwOCwgICA4MjA4LCAgLTgxNzYsICAgICAg
MCwgICAgICAwLCAgLTcwNzUsICAgNTAwMywKKyAgICAgLTUwMDMsIC0xMDY2NCwgICAgICAwLCAg
MTUwODEsICAxMDY2NCwgICAgICAwLCAgIDUwMDMsICAgICAgMCwKKyAgICAgIDcwNzUsIC0xMDY2
NCwgLTE1MDgxLCAgICAgIDAsICAxMDY2NCwgIC01MDAzLCAgICAgIDAsICAgICAgMCwKKyAgICAg
MTU2MTcsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAtNjQwNiwgICA2NDA2LCAgICAgIDAsIC0x
NTYxNywKKyAgICAgICAgIDAsIC0xNTYxNywgIDE1NjE3LCAgICAgIDAsICAgNjQwNiwgIC02NDA2
LCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAtMTEzOTMsICAx
MTM5MywgICAyOTkzLCAgLTQyMzMsICAgICAgMCwKKyAgICAgIDI5OTMsIC0xNjExMiwgIDExMzkz
LCAgMTYxMTIsICAgICAgMCwgIC0yOTkzLCAgICAgIDAsICAgNDIzMywKKyAgICAgLTI5OTMsIC0x
MTM5MywgICAgICAwLCAgICAgIDAsICAgICAgMCwgIC05OTc0LCAgLTk5NzQsIC0xMzYxNywKKyAg
ICAgICAgIDAsICAgICAgMCwgIDEzNjE3LCAgICAgIDAsICAgOTk3NCwgICAgICAwLCAgICAgIDAs
ICAxMzYxNywKKyAgICAgICAgIDAsICAgICAgMCwgLTEzNjE3LCAgIDk5NzQsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgNTU3OSwKKyAgICAgLTU1NzksICAxMDE4NSwgIDE0NDAzLCAgICAgIDAs
ICAxMDE4NSwgIC03ODkwLCAgLTU1NzksICAgNzg5MCwKKyAgICAgICAgIDAsIC0xMDE4NSwgICAg
ICAwLCAtMTQ0MDMsIC0xMDE4NSwgICA1NTc5LCAgICAgIDAsICAgICAgMCwKKyAgICAgMTE4MjYs
IC0xMTgyNiwgLTExODI2LCAgIC05MDEsICAgIDkwMSwgICAgOTAxLCAgIC05MDEsICAxMTgyNiwK
KyAgICAtMTE4MjYsICAxMTgyNiwgIDExODI2LCAgIC05MDEsICAgIDkwMSwgICAgOTAxLCAgIC05
MDEsIC0xMTgyNiwKKyAgICAgICAgIDAsICAgICAgMCwgIC03ODkwLCAgLTU1NzksICAgNTU3OSwg
IDEwMTg1LCAgICAgIDAsICAxNDQwMywKKyAgICAtMTAxODUsICAgICAgMCwgIC01NTc5LCAgICAg
IDAsICAgNzg5MCwgIDEwMTg1LCAtMTQ0MDMsICAgICAgMCwKKyAgICAtMTAxODUsICAgNTU3OSwg
ICAgICAwLCAgICAgIDAsICAtOTk3NCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAtMTM2
MTcsICAxMzYxNywgICAgICAwLCAgIDk5NzQsICAgICAgMCwgICA5OTc0LCAgLTk5NzQsICAgICAg
MCwKKyAgICAgMTM2MTcsIC0xMzYxNywgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
MTYxMTIsIC0xMTM5MywKKyAgICAgMTEzOTMsICAtMjk5MywgICAgICAwLCAgIDQyMzMsICAgMjk5
MywgICAgICAwLCAtMTEzOTMsICAgICAgMCwKKyAgICAtMTYxMTIsICAtMjk5MywgIC00MjMzLCAg
ICAgIDAsICAgMjk5MywgIDExMzkzLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwKKyAgICAgMzI3NjcsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKyAgICAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgMzI3NjcKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21hcHBpbmdfbWF0cml4LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tYXBw
aW5nX21hdHJpeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4YmM4MmRmM2ViYTVlM2NhZDhhM2RlNDc4YzdmOWIx
NTJiM2Q0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tYXBwaW5nX21hdHJpeC5oCkBAIC0wLDAg
KzEsMTMzIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTcgR29vZ2xlIEluYy4KKyAgIFdyaXR0ZW4g
YnkgQW5kcmV3IEFsbGVuICovCisvKgorICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFy
ZSBtZXQ6CisKKyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAgYGBBUyBJUycnIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorICAgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
ICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoqCisgKiBAZmlsZSBtYXBwaW5nX21h
dHJpeC5oCisgKiBAYnJpZWYgT3B1cyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gbWFwcGluZyBt
YXRyaXggQVBJCisgKi8KKworI2lmbmRlZiBNQVBQSU5HX01BVFJJWF9ICisjZGVmaW5lIE1BUFBJ
TkdfTUFUUklYX0gKKworI2luY2x1ZGUgIm9wdXNfdHlwZXMuaCIKKyNpbmNsdWRlICJvcHVzX3By
b2plY3Rpb24uaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
Cit0eXBlZGVmIHN0cnVjdCBNYXBwaW5nTWF0cml4Cit7CisgICAgaW50IHJvd3M7IC8qIG51bWJl
ciBvZiBjaGFubmVscyBvdXRwdXR0ZWQgZnJvbSBtYXRyaXguICovCisgICAgaW50IGNvbHM7IC8q
IG51bWJlciBvZiBjaGFubmVscyBpbnB1dHRlZCB0byBtYXRyaXguICovCisgICAgaW50IGdhaW47
IC8qIGluIGRCLiBTNy44LWZvcm1hdC4gKi8KKyAgICAvKiBNYXRyaXggY2VsbCBkYXRhIGdvZXMg
aGVyZSB1c2luZyBjb2wtd2lzZSBvcmRlcmluZy4gKi8KK30gTWFwcGluZ01hdHJpeDsKKworb3B1
c19pbnQzMiBtYXBwaW5nX21hdHJpeF9nZXRfc2l6ZShpbnQgcm93cywgaW50IGNvbHMpOworCitv
cHVzX2ludDE2ICptYXBwaW5nX21hdHJpeF9nZXRfZGF0YShjb25zdCBNYXBwaW5nTWF0cml4ICpt
YXRyaXgpOworCit2b2lkIG1hcHBpbmdfbWF0cml4X2luaXQoCisgICAgTWFwcGluZ01hdHJpeCAq
IGNvbnN0IG1hdHJpeCwKKyAgICBpbnQgcm93cywKKyAgICBpbnQgY29scywKKyAgICBpbnQgZ2Fp
biwKKyAgICBjb25zdCBvcHVzX2ludDE2ICpkYXRhLAorICAgIG9wdXNfaW50MzIgZGF0YV9zaXpl
CispOworCisjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCit2b2lkIG1hcHBpbmdfbWF0cml4X211
bHRpcGx5X2NoYW5uZWxfaW5fZmxvYXQoCisgICAgY29uc3QgTWFwcGluZ01hdHJpeCAqbWF0cml4
LAorICAgIGNvbnN0IGZsb2F0ICppbnB1dCwKKyAgICBpbnQgaW5wdXRfcm93cywKKyAgICBvcHVz
X3ZhbDE2ICpvdXRwdXQsCisgICAgaW50IG91dHB1dF9yb3csCisgICAgaW50IG91dHB1dF9yb3dz
LAorICAgIGludCBmcmFtZV9zaXplCispOworCit2b2lkIG1hcHBpbmdfbWF0cml4X211bHRpcGx5
X2NoYW5uZWxfb3V0X2Zsb2F0KAorICAgIGNvbnN0IE1hcHBpbmdNYXRyaXggKm1hdHJpeCwKKyAg
ICBjb25zdCBvcHVzX3ZhbDE2ICppbnB1dCwKKyAgICBpbnQgaW5wdXRfcm93LAorICAgIGludCBp
bnB1dF9yb3dzLAorICAgIGZsb2F0ICpvdXRwdXQsCisgICAgaW50IG91dHB1dF9yb3dzLAorICAg
IGludCBmcmFtZV9zaXplCispOworI2VuZGlmIC8qIERJU0FCTEVfRkxPQVRfQVBJICovCisKK3Zv
aWQgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5lbF9pbl9zaG9ydCgKKyAgICBjb25zdCBN
YXBwaW5nTWF0cml4ICptYXRyaXgsCisgICAgY29uc3Qgb3B1c19pbnQxNiAqaW5wdXQsCisgICAg
aW50IGlucHV0X3Jvd3MsCisgICAgb3B1c192YWwxNiAqb3V0cHV0LAorICAgIGludCBvdXRwdXRf
cm93LAorICAgIGludCBvdXRwdXRfcm93cywKKyAgICBpbnQgZnJhbWVfc2l6ZQorKTsKKwordm9p
ZCBtYXBwaW5nX21hdHJpeF9tdWx0aXBseV9jaGFubmVsX291dF9zaG9ydCgKKyAgICBjb25zdCBN
YXBwaW5nTWF0cml4ICptYXRyaXgsCisgICAgY29uc3Qgb3B1c192YWwxNiAqaW5wdXQsCisgICAg
aW50IGlucHV0X3JvdywKKyAgICBpbnQgaW5wdXRfcm93cywKKyAgICBvcHVzX2ludDE2ICpvdXRw
dXQsCisgICAgaW50IG91dHB1dF9yb3dzLAorICAgIGludCBmcmFtZV9zaXplCispOworCisvKiBQ
cmUtY29tcHV0ZWQgbWl4aW5nIGFuZCBkZW1peGluZyBtYXRyaWNlcyBmb3IgMXN0IHRvIDNyZC1v
cmRlciBhbWJpc29uaWNzLgorICogICBmb2E6IGZpcnN0LW9yZGVyIGFtYmlzb25pY3MKKyAqICAg
c29hOiBzZWNvbmQtb3JkZXIgYW1iaXNvbmljcworICogICB0b2E6IHRoaXJkLW9yZGVyIGFtYmlz
b25pY3MKKyAqLworZXh0ZXJuIGNvbnN0IE1hcHBpbmdNYXRyaXggbWFwcGluZ19tYXRyaXhfZm9h
X21peGluZzsKK2V4dGVybiBjb25zdCBvcHVzX2ludDE2IG1hcHBpbmdfbWF0cml4X2ZvYV9taXhp
bmdfZGF0YVszNl07CisKK2V4dGVybiBjb25zdCBNYXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4
X3NvYV9taXhpbmc7CitleHRlcm4gY29uc3Qgb3B1c19pbnQxNiBtYXBwaW5nX21hdHJpeF9zb2Ff
bWl4aW5nX2RhdGFbMTIxXTsKKworZXh0ZXJuIGNvbnN0IE1hcHBpbmdNYXRyaXggbWFwcGluZ19t
YXRyaXhfdG9hX21peGluZzsKK2V4dGVybiBjb25zdCBvcHVzX2ludDE2IG1hcHBpbmdfbWF0cml4
X3RvYV9taXhpbmdfZGF0YVszMjRdOworCitleHRlcm4gY29uc3QgTWFwcGluZ01hdHJpeCBtYXBw
aW5nX21hdHJpeF9mb2FfZGVtaXhpbmc7CitleHRlcm4gY29uc3Qgb3B1c19pbnQxNiBtYXBwaW5n
X21hdHJpeF9mb2FfZGVtaXhpbmdfZGF0YVszNl07CisKK2V4dGVybiBjb25zdCBNYXBwaW5nTWF0
cml4IG1hcHBpbmdfbWF0cml4X3NvYV9kZW1peGluZzsKK2V4dGVybiBjb25zdCBvcHVzX2ludDE2
IG1hcHBpbmdfbWF0cml4X3NvYV9kZW1peGluZ19kYXRhWzEyMV07CisKK2V4dGVybiBjb25zdCBN
YXBwaW5nTWF0cml4IG1hcHBpbmdfbWF0cml4X3RvYV9kZW1peGluZzsKK2V4dGVybiBjb25zdCBv
cHVzX2ludDE2IG1hcHBpbmdfbWF0cml4X3RvYV9kZW1peGluZ19kYXRhWzMyNF07CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBNQVBQSU5HX01BVFJJWF9IICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NyYy9tbHAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5jCmluZGV4IGZmOWU1MGRmNDcyOTgxMmMz
ZGE5MDg0MDQ2YmYyZWQ5OTI5ODNiZTUuLjk2NGM2YTk4ZjZkNDMwMWYzNzkyZGRmMDU0MmZhMjY0
ODFhODc3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5jCkBAIC0xLDUgKzEs
NSBAQAogLyogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTEgT2N0YXNpYyBJbmMuCi0gICBXcml0dGVu
IGJ5IEplYW4tTWFyYyBWYWxpbiAqLworICAgICAgICAgICAgICAgICAyMDEyLTIwMTcgSmVhbi1N
YXJjIFZhbGluICovCiAvKgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDQyICsy
OSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxtYXRoLmg+
CiAjaW5jbHVkZSAib3B1c190eXBlcy5oIgogI2luY2x1ZGUgIm9wdXNfZGVmaW5lcy5oIgotCi0j
aW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgIm1scC5oIgogI2luY2x1ZGUgImFyY2guaCIKICNp
bmNsdWRlICJ0YW5zaWdfdGFibGUuaCIKLSNkZWZpbmUgTUFYX05FVVJPTlMgMTAwCisjaW5jbHVk
ZSAibWxwLmgiCiAKLSNpZiAwCi1zdGF0aWMgT1BVU19JTkxJTkUgb3B1c192YWwxNiB0YW5zaWdf
YXBwcm94KG9wdXNfdmFsMzIgX3gpIC8qIFExOSAqLwotewotICAgIGludCBpOwotICAgIG9wdXNf
dmFsMTYgeHg7IC8qIFExMSAqLwotICAgIC8qZG91YmxlIHgsIHk7Ki8KLSAgICBvcHVzX3ZhbDE2
IGR5LCB5eTsgLyogUTE0ICovCi0gICAgLyp4ID0gMS45MDczZS0wNipfeDsqLwotICAgIGlmIChf
eD49UUNPTlNUMzIoOCwxOSkpCi0gICAgICAgIHJldHVybiBRQ09OU1QzMigxLiwxNCk7Ci0gICAg
aWYgKF94PD0tUUNPTlNUMzIoOCwxOSkpCi0gICAgICAgIHJldHVybiAtUUNPTlNUMzIoMS4sMTQp
OwotICAgIHh4ID0gRVhUUkFDVDE2KFNIUjMyKF94LCA4KSk7Ci0gICAgLyppID0gbHJpbnQoMjUq
eCk7Ki8KLSAgICBpID0gU0hSMzIoQUREMzIoMTAyNCxNVUxUMTZfMTYoMjUsIHh4KSksMTEpOwot
ICAgIC8qeCAtPSAuMDQqaTsqLwotICAgIHh4IC09IEVYVFJBQ1QxNihTSFIzMihNVUxUMTZfMTYo
MjA5NzIsaSksOCkpOwotICAgIC8qeCA9IHh4KigxLi8yMDQ4KTsqLwotICAgIC8qeSA9IHRhbnNp
Z190YWJsZVsyNTAraV07Ki8KLSAgICB5eSA9IHRhbnNpZ190YWJsZVsyNTAraV07Ci0gICAgLyp5
ID0geXkqKDEuLzE2Mzg0KTsqLwotICAgIGR5ID0gMTYzODQtTVVMVDE2XzE2X1ExNCh5eSx5eSk7
Ci0gICAgeXkgPSB5eSArIE1VTFQxNl8xNl9RMTQoTVVMVDE2XzE2X1ExMSh4eCxkeSksKDE2Mzg0
IC0gTVVMVDE2XzE2X1ExMSh5eSx4eCkpKTsKLSAgICByZXR1cm4geXk7Ci19Ci0jZWxzZQotLypl
eHRlcm4gY29uc3QgZmxvYXQgdGFuc2lnX3RhYmxlWzUwMV07Ki8KIHN0YXRpYyBPUFVTX0lOTElO
RSBmbG9hdCB0YW5zaWdfYXBwcm94KGZsb2F0IHgpCiB7CiAgICAgaW50IGk7CkBAIC05Miw1NCAr
NjMsODIgQEAgc3RhdGljIE9QVVNfSU5MSU5FIGZsb2F0IHRhbnNpZ19hcHByb3goZmxvYXQgeCkK
ICAgICB5ID0geSArIHgqZHkqKDEgLSB5KngpOwogICAgIHJldHVybiBzaWduKnk7CiB9Ci0jZW5k
aWYKIAotI2lmIDAKLXZvaWQgbWxwX3Byb2Nlc3MoY29uc3QgTUxQICptLCBjb25zdCBvcHVzX3Zh
bDE2ICppbiwgb3B1c192YWwxNiAqb3V0KQorc3RhdGljIE9QVVNfSU5MSU5FIGZsb2F0IHNpZ21v
aWRfYXBwcm94KGZsb2F0IHgpCiB7Ci0gICAgaW50IGo7Ci0gICAgb3B1c192YWwxNiBoaWRkZW5b
TUFYX05FVVJPTlNdOwotICAgIGNvbnN0IG9wdXNfdmFsMTYgKlcgPSBtLT53ZWlnaHRzOwotICAg
IC8qIENvcHkgdG8gdG1wX2luICovCi0gICAgZm9yIChqPTA7ajxtLT50b3BvWzFdO2orKykKLSAg
ICB7Ci0gICAgICAgIGludCBrOwotICAgICAgICBvcHVzX3ZhbDMyIHN1bSA9IFNITDMyKEVYVEVO
RDMyKCpXKyspLDgpOwotICAgICAgICBmb3IgKGs9MDtrPG0tPnRvcG9bMF07aysrKQotICAgICAg
ICAgICAgc3VtID0gTUFDMTZfMTYoc3VtLCBpbltrXSwqVysrKTsKLSAgICAgICAgaGlkZGVuW2pd
ID0gdGFuc2lnX2FwcHJveChzdW0pOwotICAgIH0KLSAgICBmb3IgKGo9MDtqPG0tPnRvcG9bMl07
aisrKQotICAgIHsKLSAgICAgICAgaW50IGs7Ci0gICAgICAgIG9wdXNfdmFsMzIgc3VtID0gU0hM
MzIoRVhURU5EMzIoKlcrKyksMTQpOwotICAgICAgICBmb3IgKGs9MDtrPG0tPnRvcG9bMV07aysr
KQotICAgICAgICAgICAgc3VtID0gTUFDMTZfMTYoc3VtLCBoaWRkZW5ba10sICpXKyspOwotICAg
ICAgICBvdXRbal0gPSB0YW5zaWdfYXBwcm94KEVYVFJBQ1QxNihQU0hSMzIoc3VtLDE3KSkpOwot
ICAgIH0KKyAgIHJldHVybiAuNWYgKyAuNWYqdGFuc2lnX2FwcHJveCguNWYqeCk7Cit9CisKK3N0
YXRpYyB2b2lkIGdlbW1fYWNjdW0oZmxvYXQgKm91dCwgY29uc3Qgb3B1c19pbnQ4ICp3ZWlnaHRz
LCBpbnQgcm93cywgaW50IGNvbHMsIGludCBjb2xfc3RyaWRlLCBjb25zdCBmbG9hdCAqeCkKK3sK
KyAgIGludCBpLCBqOworICAgZm9yIChpPTA7aTxyb3dzO2krKykKKyAgIHsKKyAgICAgIGZvciAo
aj0wO2o8Y29scztqKyspCisgICAgICAgICBvdXRbaV0gKz0gd2VpZ2h0c1tqKmNvbF9zdHJpZGUg
KyBpXSp4W2pdOworICAgfQogfQotI2Vsc2UKLXZvaWQgbWxwX3Byb2Nlc3MoY29uc3QgTUxQICpt
LCBjb25zdCBmbG9hdCAqaW4sIGZsb2F0ICpvdXQpCisKK3ZvaWQgY29tcHV0ZV9kZW5zZShjb25z
dCBEZW5zZUxheWVyICpsYXllciwgZmxvYXQgKm91dHB1dCwgY29uc3QgZmxvYXQgKmlucHV0KQog
ewotICAgIGludCBqOwotICAgIGZsb2F0IGhpZGRlbltNQVhfTkVVUk9OU107Ci0gICAgY29uc3Qg
ZmxvYXQgKlcgPSBtLT53ZWlnaHRzOwotICAgIC8qIENvcHkgdG8gdG1wX2luICovCi0gICAgZm9y
IChqPTA7ajxtLT50b3BvWzFdO2orKykKLSAgICB7Ci0gICAgICAgIGludCBrOwotICAgICAgICBm
bG9hdCBzdW0gPSAqVysrOwotICAgICAgICBmb3IgKGs9MDtrPG0tPnRvcG9bMF07aysrKQotICAg
ICAgICAgICAgc3VtID0gc3VtICsgaW5ba10qKlcrKzsKLSAgICAgICAgaGlkZGVuW2pdID0gdGFu
c2lnX2FwcHJveChzdW0pOwotICAgIH0KLSAgICBmb3IgKGo9MDtqPG0tPnRvcG9bMl07aisrKQot
ICAgIHsKLSAgICAgICAgaW50IGs7Ci0gICAgICAgIGZsb2F0IHN1bSA9ICpXKys7Ci0gICAgICAg
IGZvciAoaz0wO2s8bS0+dG9wb1sxXTtrKyspCi0gICAgICAgICAgICBzdW0gPSBzdW0gKyBoaWRk
ZW5ba10qKlcrKzsKLSAgICAgICAgb3V0W2pdID0gdGFuc2lnX2FwcHJveChzdW0pOwotICAgIH0K
KyAgIGludCBpOworICAgaW50IE4sIE07CisgICBpbnQgc3RyaWRlOworICAgTSA9IGxheWVyLT5u
Yl9pbnB1dHM7CisgICBOID0gbGF5ZXItPm5iX25ldXJvbnM7CisgICBzdHJpZGUgPSBOOworICAg
Zm9yIChpPTA7aTxOO2krKykKKyAgICAgIG91dHB1dFtpXSA9IGxheWVyLT5iaWFzW2ldOworICAg
Z2VtbV9hY2N1bShvdXRwdXQsIGxheWVyLT5pbnB1dF93ZWlnaHRzLCBOLCBNLCBzdHJpZGUsIGlu
cHV0KTsKKyAgIGZvciAoaT0wO2k8TjtpKyspCisgICAgICBvdXRwdXRbaV0gKj0gV0VJR0hUU19T
Q0FMRTsKKyAgIGlmIChsYXllci0+c2lnbW9pZCkgeworICAgICAgZm9yIChpPTA7aTxOO2krKykK
KyAgICAgICAgIG91dHB1dFtpXSA9IHNpZ21vaWRfYXBwcm94KG91dHB1dFtpXSk7CisgICB9IGVs
c2UgeworICAgICAgZm9yIChpPTA7aTxOO2krKykKKyAgICAgICAgIG91dHB1dFtpXSA9IHRhbnNp
Z19hcHByb3gob3V0cHV0W2ldKTsKKyAgIH0KIH0KLSNlbmRpZgorCit2b2lkIGNvbXB1dGVfZ3J1
KGNvbnN0IEdSVUxheWVyICpncnUsIGZsb2F0ICpzdGF0ZSwgY29uc3QgZmxvYXQgKmlucHV0KQor
eworICAgaW50IGk7CisgICBpbnQgTiwgTTsKKyAgIGludCBzdHJpZGU7CisgICBmbG9hdCB0bXBb
TUFYX05FVVJPTlNdOworICAgZmxvYXQgeltNQVhfTkVVUk9OU107CisgICBmbG9hdCByW01BWF9O
RVVST05TXTsKKyAgIGZsb2F0IGhbTUFYX05FVVJPTlNdOworICAgTSA9IGdydS0+bmJfaW5wdXRz
OworICAgTiA9IGdydS0+bmJfbmV1cm9uczsKKyAgIHN0cmlkZSA9IDMqTjsKKyAgIC8qIENvbXB1
dGUgdXBkYXRlIGdhdGUuICovCisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgeltpXSA9IGdy
dS0+Ymlhc1tpXTsKKyAgIGdlbW1fYWNjdW0oeiwgZ3J1LT5pbnB1dF93ZWlnaHRzLCBOLCBNLCBz
dHJpZGUsIGlucHV0KTsKKyAgIGdlbW1fYWNjdW0oeiwgZ3J1LT5yZWN1cnJlbnRfd2VpZ2h0cywg
TiwgTiwgc3RyaWRlLCBzdGF0ZSk7CisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgeltpXSA9
IHNpZ21vaWRfYXBwcm94KFdFSUdIVFNfU0NBTEUqeltpXSk7CisKKyAgIC8qIENvbXB1dGUgcmVz
ZXQgZ2F0ZS4gKi8KKyAgIGZvciAoaT0wO2k8TjtpKyspCisgICAgICByW2ldID0gZ3J1LT5iaWFz
W04gKyBpXTsKKyAgIGdlbW1fYWNjdW0ociwgJmdydS0+aW5wdXRfd2VpZ2h0c1tOXSwgTiwgTSwg
c3RyaWRlLCBpbnB1dCk7CisgICBnZW1tX2FjY3VtKHIsICZncnUtPnJlY3VycmVudF93ZWlnaHRz
W05dLCBOLCBOLCBzdHJpZGUsIHN0YXRlKTsKKyAgIGZvciAoaT0wO2k8TjtpKyspCisgICAgICBy
W2ldID0gc2lnbW9pZF9hcHByb3goV0VJR0hUU19TQ0FMRSpyW2ldKTsKKworICAgLyogQ29tcHV0
ZSBvdXRwdXQuICovCisgICBmb3IgKGk9MDtpPE47aSsrKQorICAgICAgaFtpXSA9IGdydS0+Ymlh
c1syKk4gKyBpXTsKKyAgIGZvciAoaT0wO2k8TjtpKyspCisgICAgICB0bXBbaV0gPSBzdGF0ZVtp
XSAqIHJbaV07CisgICBnZW1tX2FjY3VtKGgsICZncnUtPmlucHV0X3dlaWdodHNbMipOXSwgTiwg
TSwgc3RyaWRlLCBpbnB1dCk7CisgICBnZW1tX2FjY3VtKGgsICZncnUtPnJlY3VycmVudF93ZWln
aHRzWzIqTl0sIE4sIE4sIHN0cmlkZSwgdG1wKTsKKyAgIGZvciAoaT0wO2k8TjtpKyspCisgICAg
ICBoW2ldID0geltpXSpzdGF0ZVtpXSArICgxLXpbaV0pKnRhbnNpZ19hcHByb3goV0VJR0hUU19T
Q0FMRSpoW2ldKTsKKyAgIGZvciAoaT0wO2k8TjtpKyspCisgICAgICBzdGF0ZVtpXSA9IGhbaV07
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvb3B1cy9zcmMvc3JjL21scC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwLmgKaW5kZXggNjE4ZTI0NmUyYzRi
YmVmOTc3MjIzZGE5YzY2MjgwNjMzMWFjODEwNy4uZDc2NzA1NTBmZDg4OWUzYmZhMTFkYTljZjMz
MmRlMzhmMDBjOGU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwLmgKQEAgLTEs
NSArMSw0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMSBPY3Rhc2ljIEluYy4KLSAgIFdy
aXR0ZW4gYnkgSmVhbi1NYXJjIFZhbGluICovCisvKiBDb3B5cmlnaHQgKGMpIDIwMTcgSmVhbi1N
YXJjIFZhbGluICovCiAvKgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE2ICsy
NywzNCBAQAogI2lmbmRlZiBfTUxQX0hfCiAjZGVmaW5lIF9NTFBfSF8KIAotI2luY2x1ZGUgImFy
Y2guaCIKKyNpbmNsdWRlICJvcHVzX3R5cGVzLmgiCisKKyNkZWZpbmUgV0VJR0hUU19TQ0FMRSAo
MS5mLzEyOCkKKworI2RlZmluZSBNQVhfTkVVUk9OUyAzMgogCiB0eXBlZGVmIHN0cnVjdCB7Ci0g
ICAgaW50IGxheWVyczsKLSAgICBjb25zdCBpbnQgKnRvcG87Ci0gICAgY29uc3QgZmxvYXQgKndl
aWdodHM7Ci19IE1MUDsKKyAgY29uc3Qgb3B1c19pbnQ4ICpiaWFzOworICBjb25zdCBvcHVzX2lu
dDggKmlucHV0X3dlaWdodHM7CisgIGludCBuYl9pbnB1dHM7CisgIGludCBuYl9uZXVyb25zOwor
ICBpbnQgc2lnbW9pZDsKK30gRGVuc2VMYXllcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBjb25z
dCBvcHVzX2ludDggKmJpYXM7CisgIGNvbnN0IG9wdXNfaW50OCAqaW5wdXRfd2VpZ2h0czsKKyAg
Y29uc3Qgb3B1c19pbnQ4ICpyZWN1cnJlbnRfd2VpZ2h0czsKKyAgaW50IG5iX2lucHV0czsKKyAg
aW50IG5iX25ldXJvbnM7Cit9IEdSVUxheWVyOworCitleHRlcm4gY29uc3QgRGVuc2VMYXllciBs
YXllcjA7CitleHRlcm4gY29uc3QgR1JVTGF5ZXIgbGF5ZXIxOworZXh0ZXJuIGNvbnN0IERlbnNl
TGF5ZXIgbGF5ZXIyOwogCi1leHRlcm4gY29uc3QgTUxQIG5ldDsKK3ZvaWQgY29tcHV0ZV9kZW5z
ZShjb25zdCBEZW5zZUxheWVyICpsYXllciwgZmxvYXQgKm91dHB1dCwgY29uc3QgZmxvYXQgKmlu
cHV0KTsKIAotdm9pZCBtbHBfcHJvY2Vzcyhjb25zdCBNTFAgKm0sIGNvbnN0IGZsb2F0ICppbiwg
ZmxvYXQgKm91dCk7Cit2b2lkIGNvbXB1dGVfZ3J1KGNvbnN0IEdSVUxheWVyICpncnUsIGZsb2F0
ICpzdGF0ZSwgY29uc3QgZmxvYXQgKmlucHV0KTsKIAogI2VuZGlmIC8qIF9NTFBfSF8gKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
b3B1cy9zcmMvc3JjL21scF9kYXRhLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHBfZGF0YS5jCmluZGV4IGE4MTk4ODBiZmY1
YTg5OTVkMjExYjdiYjM0M2E3MDMzYzljNzE2OTIuLmFlNDE3OGRmNzY0ZWJkZTQ3MmJhMjQ5NTVk
ZGU5YTVmYWUwMTE4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scF9kYXRhLmMKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwX2Rh
dGEuYwpAQCAtMSwxMTIgKzEsNjcyIEBACisvKlRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIGEgS2VyYXMgbW9kZWwqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2VuZGlmCiAKICNpbmNsdWRlICJtbHAuaCIKIAotLyogUk1TIGVy
cm9yIHdhcyAwLjI4MDQ5Miwgc2VlZCB3YXMgMTQ4MDQ3ODE3MyAqLwotLyogMC4wMDU5NzYgMC4w
MzE4MjEgKDAuMjgwNDk0IDAuMjgwNDkyKSBkb25lICovCitzdGF0aWMgY29uc3Qgb3B1c19pbnQ4
IGxheWVyMF93ZWlnaHRzWzgwMF0gPSB7CisgICAtMzAsIC05LCAyLCAtMTIsIDUsIC0xLCA4LCA5
LAorICAgOSwgOCwgLTEzLCAxOCwgLTE3LCAtMzQsIC01LCAxNywKKyAgIC0xMSwgMCwgLTQsIDEw
LCAyLCAxMCwgMTUsIC04LAorICAgMiwgLTEsIDAsIDUsIDEzLCAtMywgLTE2LCAxLAorICAgLTUs
IDMsIDcsIC0yOCwgLTEzLCA2LCAzNiwgLTMsCisgICAxOSwgLTYwLCAtMTcsIC0yOCwgNywgLTEx
LCAtMzAsIC03LAorICAgMiwgLTQyLCAtMjEsIC0zLCA2LCAtMjIsIDMzLCAtOSwKKyAgIDcsIC0z
MCwgMjEsIC0xNCwgMjQsIC0xMSwgLTIwLCAtMTgsCisgICAtNSwgLTEyLCAxMiwgLTQ5LCAtNTAs
IC00OSwgMTYsIDksCisgICAtMzcsIC0xLCA5LCAzNCwgLTEzLCAtMzEsIC0zMSwgMTIsCisgICAx
NiwgNDQsIC00MiwgMiwgLTksIDgsIC0xOCwgLTYsCisgICA5LCAzNiwgMTksIDExLCAxMywgMTIs
IC0yMSwgMywKKyAgIC0yOCwgLTEyLCAzLCAzMywgMjUsIC0xNCwgMTEsIDEsCisgICAtOTQsIC0z
OSwgMTgsIC0xMiwgLTExLCAtMTUsIC03LCA0OSwKKyAgIDUyLCAxMCwgLTQzLCA5LCA1NywgOCwg
MjEsIC02LAorICAgMTQsIC0xNSwgNDQsIC04LCA3LCAtMzAsIC0xMywgLTIsCisgICAtOSwgMjUs
IC0yLCAtMTI3LCAxOCwgLTExLCAtNTIsIDI2LAorICAgLTI3LCAyNywgMTAsIC0xMCwgNywgNDMs
IDYsIC0yNCwKKyAgIDQxLCAxMCwgLTE4LCAtMjcsIDEwLCAxNywgOSwgMTAsCisgICAtMTcsIC0x
MCwgMjAsIC02LCAyMiwgNTUsIDM1LCAtODAsCisgICAzNiwgMjUsIC0yNCwgLTM2LCAxNSwgOSwg
LTE5LCA4OCwKKyAgIDE5LCA2NCwgLTUxLCAtMzUsIDE3LCAwLCAtNywgNDEsCisgICAtMTYsIDI3
LCA0LCAxNSwgLTEsIDE4LCAtMTYsIDQ3LAorICAgLTM5LCAtNTQsIC04LCAxMywgLTI1LCAtMjAs
IDEwMiwgLTE4LAorICAgLTUsIDQ0LCAxMSwgLTI4LCA3MSwgMiwgLTUxLCAtNSwKKyAgIDUsIDIs
IC04MywgLTksIC0yOSwgOCwgMjEsIC01MywKKyAgIDU4LCAtMzcsIC03LCAxMywgMzgsIDksIDM0
LCAtMSwKKyAgIC00MSwgMjEsIDQsIC0yNCwgLTM2LCAtMzMsIC0yMSwgMzIsCisgICA3NSwgLTIs
IDEsIC02OCwgLTEsIDQ3LCAtMjksIDMyLAorICAgMjAsIDEyLCAtNjUsIC04NywgNSwgMTYsIC0x
MiwgMjQsCisgICA0MCwgMTUsIDcsIDE5LCAtMjYsIC0xNywgMTcsIDYsCisgICAtMiwgLTM3LCAt
MzAsIC05LCAzMiwgLTEyNywgLTM5LCAwLAorICAgLTMxLCAtMjcsIDQsIC0yMiwgMjMsIC02LCAt
NzcsIDM1LAorICAgLTYxLCAzMiwgLTM3LCAtMjQsIDEzLCAtMTEsIC0xLCAtNDAsCisgICAtMywg
MTcsIC03LCAxMywgMTEsIDU5LCAtMTksIDEwLAorICAgNiwgLTE4LCAwLCAxMywgMywgLTYsIC0y
MywgMTksCisgICAxMSwgLTE3LCAxMywgLTEsIC04MCwgNDAsIC01MywgNjksCisgICAtMjksIC01
NCwgMCwgLTQsIDMzLCAtMjUsIC0yLCAzOCwKKyAgIDM1LCAzNiwgLTE1LCA0NiwgMiwgLTEzLCAt
MTYsIC04LAorICAgLTgsIDEyLCAtMjQsIC05LCAtNTUsIC01LCAtOSwgMzIsCisgICAxMSwgNywg
MTIsIC0xOCwgLTEwLCAtODYsIC0zOCwgNTQsCisgICAzNywgLTI1LCAxOCwgLTQzLCA3LCAtMjcs
IC0yNywgLTU0LAorICAgMTMsIDksIDIyLCA3MCwgNiwgMzUsIC03LCAyMywKKyAgIC0xNSwgLTQ0
LCAtNiwgNywgLTY2LCAtODUsIDMyLCA0MCwKKyAgIC0xOSwgLTksIC03LCAxMiwgLTE1LCA3LCAy
LCA2LAorICAgLTM1LCAxMSwgMjgsIDAsIDI2LCAxNCwgMSwgMSwKKyAgIDQsIDEyLCAxOCwgMzUs
IDIyLCAtMTgsIC0zLCAxNCwKKyAgIC0xLCA3LCAxNCwgLTgsIC0xNCwgLTMsIDQsIC0zLAorICAg
LTE5LCAtNywgLTEsIC0yNSwgLTI3LCAyNSwgLTI2LCAtMiwKKyAgIDMzLCAtMjIsIC0yNywgLTI1
LCA0LCAtOSwgNywgMjEsCisgICAyNiwgLTMwLCAxMCwgLTksIC0yMCwgMTEsIDI3LCAxMCwKKyAg
IDUsIC0xOCwgMTQsIC00LCAyLCAtMTcsIC01LCAtNywKKyAgIC05LCAtMTMsIDE1LCAyOSwgMSwg
LTEwLCAtMTYsIC0xMCwKKyAgIDM1LCAzNiwgLTcsIC0yMiwgLTQ0LCAxNywgMzAsIDIyLAorICAg
MjEsIC0xLCAyMiwgLTExLCAzMiwgLTgsIC03LCA1LAorICAgLTEwLCA1LCAzMCwgLTIwLCAyOSwg
LTIwLCAtMzQsIDEyLAorICAgLTQsIC02LCA2LCAtMTMsIDEwLCAtNSwgLTY4LCAtMSwKKyAgIDI0
LCA5LCAxOSwgLTI0LCAtNjQsIDMxLCAxOSwgMjcsCisgICAtMjYsIDc1LCAtNDUsIDQxLCAzOSwg
LTQyLCA4LCA2LAorICAgMjMsIC0zMCwgMTYsIC0yNSwgMzAsIDM0LCA4LCAtMzgsCisgICAtMywg
MTgsIDE2LCAtMzEsIDIyLCAtNCwgLTksIDEsCisgICAyMCwgOSwgMzgsIC0zMiwgMCwgLTQ1LCAw
LCAtNiwKKyAgIC0xMywgMTEsIC0yNSwgLTMyLCAtMjIsIDMxLCAtMjQsIC0xMSwKKyAgIC0xMSwg
LTQsIC00LCAyMCwgLTM0LCAyMiwgMjAsIDksCisgICAtMjUsIDI3LCAtNSwgMjgsIC0yOSwgMjks
IDYsIDIxLAorICAgLTYsIC0xOCwgNTQsIDQsIC00NiwgMjMsIDIxLCAtMTQsCisgICAtMzEsIDM2
LCAtNDEsIC0yNCwgNCwgMjIsIDEwLCAxMSwKKyAgIDcsIDM2LCAtMzIsIC0xMywgLTUyLCAtMTcs
IDI0LCAyOCwKKyAgIC0zNywgLTM2LCAtMSwgMjQsIDksIC0zOCwgMzUsIDQ4LAorICAgMTgsIDIs
IC0xLCA0NSwgMTAsIDM5LCAyNCwgLTM4LAorICAgMTMsIDgsIC0xNiwgOCwgMjUsIDExLCA3LCAt
MjksCisgICAtMTEsIDcsIDIwLCAtMzAsIC0zOCwgLTQ1LCAxNCwgLTE4LAorICAgLTI4LCAtOSwg
NjUsIDYxLCAyMiwgLTUzLCAtMzgsIC0xNiwKKyAgIDM2LCA0NiwgMjAsIC0zOSwgMzIsIC02MSwg
LTYsIC02LAorICAgLTM2LCAtMzMsIC0xOCwgLTI4LCA1NiwgMTAxLCA0NSwgMTEsCisgICAtMjgs
IC0yMywgLTI5LCAtNjEsIDIwLCAtNDcsIDIsIDQ4LAorICAgMjcsIC0xNywgMSwgNDAsIDEsIDMs
IC01MSwgMTUsCisgICAzNSwgMjgsIDIyLCAzNSwgNTMsIC02MSwgLTI5LCAxMiwKKyAgIC02LCAt
MjEsIDEwLCAzLCAtMjAsIDIsIC0yNSwgMSwKKyAgIC02LCAzMSwgMTEsIC0zLCAxLCAtMTAsIC01
MiwgNiwKKyAgIDEyNiwgLTEwNSwgMTIyLCAxMjcsIC0xMjgsIDEyNywgMTI3LCAtMTI4LAorICAg
MTI3LCAxMDgsIDEyLCAxMjcsIDQ4LCAtMTI4LCAtMzYsIC0xMjgsCisgICAxMjcsIDEyNywgLTEy
OCwgLTEyOCwgMTI3LCA4OSwgLTEyOCwgMTI3LAorICAgLTEyOCwgLTEyOCwgLTEyOCwgMTI3LCAx
MjcsIC0xMjgsIC0xMjgsIC05MywKKyAgIC04MiwgMjAsIDEyNSwgNjUsIC04MiwgMTI3LCAzOCwg
LTc0LAorICAgODEsIDg4LCAtODgsIDc5LCA1MSwgLTQ3LCAtMTExLCAtMjYsCisgICAxNCwgODMs
IC04OCwgLTExMiwgMjQsIDM1LCAtMTAxLCA5OCwKKyAgIC05OSwgLTQ4LCAtNDUsIDQ2LCA4Mywg
LTYwLCAtNzksIDQ1LAorICAgLTIwLCAtNDEsIDksIDQsIDUyLCA1NCwgOTMsIC0xMCwKKyAgIDQs
IDEzLCAzLCAxMjMsIDYsIDk0LCAtMTExLCAtNjksCisgICAtMTQsIC0zMSwgMTAsIDEyLCA1Mywg
LTc5LCAtMTEsIC0yMSwKKyAgIC0yLCAtNDQsIC03MiwgOTIsIDY1LCAtNTcsIDU2LCAtMzgsCisg
ICAxMjcsIC01NiwgLTEyOCwgMTI3LCAxMjcsIC0xMjgsIDg2LCAxMTcsCisgICAtNzUsIC0xMjgs
IDEyNywgLTE5LCAtOTksIC0xMTIsIDEyNywgLTEyOCwKKyAgIDEyNywgLTQ4LCAxMTQsIDExOCwg
LTEyOCwgLTEyOCwgMTE3LCAtMTcsCisgICAtNiwgMTIxLCAtMTI4LCAxMjcsIC0xMjgsIDgyLCA1
NCwgLTEwNiwKKyAgIDEyNywgMTI3LCAtMzMsIDEwMCwgLTM5LCAtMjMsIDE4LCAtNzgsCisgICAt
MzQsIC0yOSwgLTEsIC0zMCwgMTI3LCAtMjYsIDEyNywgLTEyOCwKKyAgIDEyNiwgLTEyOCwgMjcs
IC0yMywgLTc5LCAtMTIwLCAtMTI3LCAxMjcsCisgICA3MiwgNjYsIDI5LCA3LCAtNjYsIC01Niwg
LTExNywgLTEyOAorfTsKKworc3RhdGljIGNvbnN0IG9wdXNfaW50OCBsYXllcjBfYmlhc1szMl0g
PSB7CisgICA1MSwgLTE2LCAxLCAxMywgLTUsIC02LCAtMTYsIC03LAorICAgMTEsIC02LCAxMDYs
IDI2LCAyOCwgLTE0LCAyMSwgLTI5LAorICAgNywgMTgsIC0xOCwgLTE3LCAyMSwgLTE3LCAtOSwg
MjAsCisgICAtMjUsIC0zLCAtMzQsIDQ4LCAxMSwgLTEzLCAtMzEsIC0yMAorfTsKKworc3RhdGlj
IGNvbnN0IG9wdXNfaW50OCBsYXllcjFfd2VpZ2h0c1syMzA0XSA9IHsKKyAgIDIyLCAtMSwgLTcs
IDcsIDI5LCAtMjcsIC0zMSwgLTE3LAorICAgLTEzLCAzMywgNDQsIC04LCAxMSwgMzMsIDI0LCA3
OCwKKyAgIDE1LCAxOSwgMzAsIC0yLCAtMjQsIDUsIDQ5LCA1LAorICAgMzYsIDI5LCAtMTQsIC0x
MSwgLTQ4LCAtMzMsIDIxLCAtNDIsCisgICAtMzgsIC0xMiwgNTUsIC0zNywgNTQsIC04LCAxLCAz
NiwKKyAgIDE3LCAwLCA1MSwgMzEsIDU5LCA3LCAtMTIsIDUzLAorICAgNCwgMzIsIC0xNCwgNDgs
IDUsIC0xMCwgLTE2LCAtOCwKKyAgIDEsIC0xNiwgLTU2LCAtMjQsIC02LCAxOCwgLTIsIDIzLAor
ICAgNiwgNDYsIC02LCAtMTAsIDIwLCAzNSwgLTQ0LCAtMTUsCisgICAtNDksIDM2LCAxNiwgNSwg
LTcsIC03OSwgLTY3LCAxMiwKKyAgIDcwLCAtMywgLTc5LCAtNTQsIC04NSwgLTI0LCA0NywgLTIy
LAorICAgMzMsIDIxLCA2OSwgLTEsIDExLCAyMiwgMTQsIC0xNiwKKyAgIC0xNiwgLTIyLCAtMjgs
IC0xMSwgMTEsIC00MSwgMzEsIC0yNiwKKyAgIC0zMywgLTE5LCAtNCwgMjcsIDMyLCAtNTAsIDUs
IC0xMCwKKyAgIC0zOCwgLTIyLCAtOCwgMzUsIC0zMSwgMSwgLTQxLCAtMTUsCisgICAtMTEsIDQ0
LCAyOCwgLTE3LCAtNDEsIC0yMywgMTcsIDIsCisgICAtMjMsIC0yNiwgLTEzLCAtMTMsIC0xNywg
NiwgMTQsIC0zMSwKKyAgIC0yNSwgOSwgLTE5LCAzOSwgLTgsIDQsIDMxLCAtMSwKKyAgIC00NSwg
LTExLCAtMjgsIC05MiwgLTQ2LCAtMTUsIDIxLCAxMTgsCisgICAtMjIsIDQ1LCAtNTEsIDExLCAt
MjAsIC0yMCwgLTE1LCAxMywKKyAgIC0yMSwgLTk3LCAtMjksIC0zMiwgLTIzLCAtNDIsIDk0LCAx
LAorICAgMjMsIC04LCA2MywgLTMsIC00NiwgMTksIC0yNiwgMzIsCisgICAtNDAsIC03NCwgLTI2
LCAyNiwgLTQsIC0xMywgMzAsIC0yMCwKKyAgIC0zMCwgLTI1LCAtMTQsIC0zMSwgLTQ1LCAtNDMs
IDQsIC02MCwKKyAgIC00OCwgLTEyLCAtMzQsIDIsIDIsIDMsIDEzLCAxNSwKKyAgIDExLCAxNiwg
NSwgNDYsIC05LCAtNTUsIC0xNiwgLTU3LAorICAgMjksIDE0LCAzOCwgLTUwLCAtMiwgLTQ0LCAt
MTEsIC04LAorICAgNTIsIC0yNywgLTM4LCAtNywgMjAsIDQ3LCAxNywgLTU5LAorICAgMCwgNDcs
IDQ2LCAtNjMsIDM1LCAtMTcsIDE5LCAzMywKKyAgIDY4LCAtMTksIDIsIDE1LCAtMTYsIDI4LCAt
MTYsIC0xMDMsCisgICAyNiwgLTM1LCA0NywgLTM5LCAtNjAsIDMwLCAzMSwgLTIzLAorICAgLTUy
LCAtMTMsIDExNiwgNDcsIC0yNSwgMzAsIDQwLCAzMCwKKyAgIC0yMiwgMiwgMTIsIC0yNywgLTE4
LCAzMSwgLTEwLCAyNywKKyAgIC04LCAtNjYsIDEyLCAxNCwgNCwgLTI2LCAtMjgsIC0xMywKKyAg
IDMsIDEzLCAtMjYsIC01MSwgMzcsIDUsIDIsIC0yMSwKKyAgIDQ3LCAzLCAxMywgMjUsIC00MSwg
LTI3LCAtOCwgLTQsCisgICA1LCAtNzYsIC0zMywgMjgsIDEwLCA5LCAtNDYsIC03NCwKKyAgIDE5
LCAyOCwgMjUsIDMxLCA1NCwgLTU1LCA2OCwgMzgsCisgICAtMjQsIC0zMiwgMiwgNCwgNjgsIDEx
LCAtMSwgOTksCisgICA1LCAxNiwgLTIsIC03NCwgNDAsIDI2LCAtMjYsIDMzLAorICAgMzEsIC0x
LCAtNjgsIDE0LCAtNiwgMjUsIDksIDI5LAorICAgNjAsIDYxLCA3LCAtNywgMCwgLTI0LCA3LCA3
NywKKyAgIDQsIC0xLCAxNiwgLTcsIDEzLCAtMTUsIC0xOSwgMjgsCisgICAtMzEsIC0yNCwgLTE2
LCAzNywgMjQsIDEzLCAzMCwgMTAsCisgICAtMzAsIDExLCAxMSwgLTEwLCAyMiwgNjAsIDI4LCA0
NSwKKyAgIC0zLCAtNDAsIC02MiwgLTUsIC0xMDIsIDksIC0zMiwgLTI3LAorICAgLTU0LCAyMSwg
MTUsIC01LCAzNywgLTQzLCAtMTEsIDM3LAorICAgLTE5LCA0NywgLTY0LCAtMTI4LCAtMjcsIC0x
MTQsIDIxLCAtNjYsCisgICA1OSwgNDYsIC0zLCAtMTIsIC04NywgLTksIDQsIDE5LAorICAgLTEx
MywgLTM2LCA3OCwgNTcsIC0yNiwgLTM4LCAtNzcsIC0xMCwKKyAgIDYsIDYsIC03NSwgMjUsIC05
NywgLTExLCAzMywgLTQ2LAorICAgMSwgMTMsIC0yMSwgLTMzLCAtMjAsIDE2LCAtNiwgLTMsCisg
ICAtMTEsIC00LCAtMjcsIDM4LCA4LCAtNDEsIC0yLCAtMzMsCisgICAxOCwgMTksIC0yNiwgMSwg
LTI5LCAtMjIsIC00LCAtMTQsCisgICAtNTUsIC0xMSwgLTgwLCAtMywgMTEsIDM0LCA5MCwgNTEs
CisgICAxMSwgMTcsIDQzLCAzNiwgMTI3LCAtMzIsIDI5LCAxMDMsCisgICA5LCAyNywgMTMsIDY0
LCA1NiwgNzAsIC0xNCwgMywKKyAgIC0xMiwgMTAsIDM3LCAzLCAxMiwgLTIyLCAtMTAsIDQ2LAor
ICAgMjgsIDEwLCAyMCwgMjYsIC0yNCwgMTgsIDksIDcsCisgICAxNCwgMzQsIC01LCAtNywgMzEs
IC0xNCwgLTU2LCAxMSwKKyAgIC0xOCwgLTgsIC0xNywgLTcsIC0xMCwgLTQwLCAxMCwgLTMzLAor
ICAgLTMyLCAtNDMsIDUsIDksIDExLCAtNCwgMTAsIDUwLAorICAgLTEyLCAtNSwgNDYsIDksIDcs
IDEsIDExLCAxNSwKKyAgIDkxLCAtMTcsIDcsIC01MCwgMjMsIDYsIC0zMCwgLTk5LAorICAgMCwg
LTE3LCAxNCwgOCwgLTEwLCAtMjUsIC0zMCwgLTY5LAorICAgLTYyLCAzMSwgMTI3LCAxMTQsIC0y
MywgMTAxLCAtNSwgLTU0LAorICAgLTYsIC0yMiwgNywgLTU2LCAzOSwgMTgsIC0yOSwgMCwKKyAg
IDQ2LCA4LCAtNzksIDQsIC0yMSwgMTgsIC0zMiwgNjIsCisgICAtMTIsIC04LCAtMTIsIC01OCwg
MzEsIC0zMiwgMTcsIDYsCisgICAtMjQsIDI1LCAyNCwgOSwgLTQsIC0xOSwgNDUsIDYsCisgICAx
NywgLTE0LCA1LCAtMjcsIDE2LCAtNCwgLTQxLCAyNSwKKyAgIC0zNiwgNSwgMTUsIDEyLCA1MCwg
MjcsIDI1LCAyMywKKyAgIC00NCwgLTY5LCAtOSwgLTE5LCAtNDgsIC04LCA0LCAxMiwKKyAgIC02
LCAxMywgLTE5LCAtMzAsIC0zNiwgMjYsIDM3LCAtMSwKKyAgIC0zLCAtMzAsIC00MiwgLTE0LCAt
MTAsIC0yMCwgMjYsIC01NCwKKyAgIC0yNywgLTQ0LCA0LCA3MywgLTI2LCA5MCwgMzIsIC02OSwK
KyAgIC0yOSwgLTE2LCAzLCAxMDMsIDE1LCAtMTcsIDM3LCAyNCwKKyAgIC0yMywgLTMxLCAzMywg
LTM3LCAtNjQsIDI1LCAxMywgLTgxLAorICAgLTI4LCAtMzIsIDI3LCA1LCAtMzUsIC0yMywgMTUs
IC0yMiwKKyAgIDE5LCAtNywgOSwgMzAsIDE5LCAtMjMsIDI3LCAtMTMsCisgICA0MywgMjksIC0y
OSwgLTYsIDksIC00MCwgLTMzLCAtMzMsCisgICAtMzIsIDksIDExLCAtNDgsIC04LCAtMjMsIC01
MiwgNDYsCisgICAxNywgLTIyLCAtNDIsIDM1LCAtMTUsIC00MSwgMTYsIDM0LAorICAgMzEsIC00
MiwgLTE5LCAtMTEsIDU1LCA3LCAtMzksIDg5LAorICAgLTExLCAtMzMsIDIwLCAtMTQsIDIyLCAz
MiwgMywgLTE3LAorICAgLTYsIDE0LCAzNCwgMSwgNTUsIC0yMSwgLTkwLCAtOCwKKyAgIDE4LCAy
NywgMTMsIC0yOSwgMjEsIDE1LCAtMzMsIC01MSwKKyAgIC05LCAtMTEsIDQsIC0xNiwgLTE4LCAy
MywgLTQsIC00LAorICAgNDgsIDEsIDcsIDI5LCAtMTQsIC0xMiwgLTE2LCAxNywKKyAgIDM1LCA4
LCAwLCAtNywgLTIsIDksIDgsIDE3LAorICAgLTYsIDUzLCAtMzIsIC0yMSwgLTUwLCA1LCA5OSwg
LTYwLAorICAgLTUsIC01MywgMTAsIC0zMSwgMTIsIC01LCA3LCA4MCwKKyAgIDM2LCAxOCwgLTMx
LCA5LCA5OCwgMzYsIC02MywgLTM1LAorICAgNCwgLTEzLCAtMjgsIC0yNCwgMjgsIC0xMywgMTgs
IDE2LAorICAgLTEsIC0xOCwgLTM0LCAxMCwgMjAsIDcsIDQsIDI5LAorICAgMTEsIDI1LCAtNywg
MzYsIDE0LCA0NSwgMjQsIDEsCisgICAtMTYsIDMwLCA2LCAzNSwgLTYsIC0xMSwgLTI0LCAxMywK
KyAgIC0xLCAyNywgMzksIDIwLCA0OCwgLTExLCAtNCwgLTEzLAorICAgMjgsIDExLCAtMzEsIC0x
OCwgMzEsIC0yOSwgMjIsIC0yLAorICAgLTIwLCAtMTYsIDUsIDMwLCAtMTIsIC0yOCwgLTMsIDkz
LAorICAgLTE2LCAyMywgMTgsIC0yOSwgNiwgLTU0LCAtMzcsIDI4LAorICAgLTMsIC0zLCAtNDcs
IC0zLCAtMzYsIC01NSwgLTMsIDQxLAorICAgLTEwLCA0NywgLTIsIDIzLCA0MiwgLTcsIC03MSwg
LTI3LAorICAgODMsIC02NCwgNywgLTI0LCA4LCAyNiwgLTE3LCAxNSwKKyAgIDEyLCAzMSwgLTMw
LCAtMzgsIC0xMywgLTMzLCAtNTYsIDQsCisgICAtMTcsIDIwLCAxOCwgMSwgLTMwLCAtNSwgLTYs
IC0zMSwKKyAgIC0xNCwgLTM3LCAwLCAyMiwgMTAsIC0zMCwgMzcsIC0xNywKKyAgIDE4LCA2LCA1
LCAyMywgLTM2LCAtMzIsIDE0LCAxOCwKKyAgIC0xMywgLTYxLCAtNTIsIC02OSwgNDQsIC0zMCwg
MTYsIDE4LAorICAgLTQsIC0yNSwgMTQsIDgxLCAyNiwgLTgsIC0yMywgLTU5LAorICAgNTIsIC0x
MDQsIDE3LCAxMTksIC0zMiwgMjYsIDE3LCAxLAorICAgMjMsIDQ1LCAyOSwgLTY0LCAtNTcsIC0x
NCwgNzMsIDIxLAorICAgLTEzLCAtMTMsIDksIC02OCwgLTcsIC01MiwgMywgMjQsCisgICAtMzks
IDQ0LCAtMTUsIDI3LCAxNCwgMTksIC05LCAtMjgsCisgICAtMTEsIDUsIDMsIC0zNCwgLTIsIDIs
IDIyLCAtNiwKKyAgIC0yMywgNCwgMywgMTMsIC0yMiwgLTEzLCAtMTAsIC0xOCwKKyAgIDI5LCA2
LCA0NCwgLTEzLCAtMjQsIC04LCAyLCAzMCwKKyAgIDE0LCA0MywgNiwgMTcsIC03MywgLTYsIC03
LCAyMCwKKyAgIC04MCwgLTcsIC03LCAtMjgsIDE1LCAtNjksIC0zOCwgLTUsCisgICAtMTAwLCAt
MzUsIDE1LCAtNzksIDIzLCAyOSwgLTE4LCAtMjcsCisgICAyMSwgLTY2LCAtMzcsIDgsIC0yMiwg
LTM5LCA0OCwgNCwKKyAgIC0xMywgMSwgLTksIDExLCAtMjksIDIyLCA2LCAtNDksCisgICAzMiwg
LTE0LCA0NywgLTE4LCAtNCwgNDQsIC01MiwgLTc0LAorICAgNDMsIDMwLCAyMywgLTE0LCA1LCAw
LCAtMjcsIDQsCisgICAtNywgMTAsIC00LCAxMCwgMSwgLTE2LCAxMSwgLTE4LAorICAgLTIsIC01
LCAyLCAtMTEsIDAsIC0yMCwgLTQsIDM4LAorICAgNzQsIDU5LCAzOSwgNjQsIC0xMCwgMjYsIC0z
LCAtNDAsCisgICAtNjgsIDMsIC0zMCwgLTUxLCA4LCAtMTksIC0yNywgLTQ2LAorICAgNTEsIDUy
LCA1NCwgMzYsIDkwLCA5MiwgMTQsIDEzLAorICAgLTUsIDAsIDE2LCAtNjIsIDE2LCAxMSwgLTQ3
LCAtMzcsCisgICAtNiwgLTUsIDIxLCA1NCwgLTU3LCAzMiwgNDIsIC02LAorICAgNjIsIC05LCAx
NiwgMjEsIDI0LCA5LCAtMTAsIC00LAorICAgMzMsIDUwLCAxMywgLTE1LCAxLCAtMzUsIC00OCwg
MTgsCisgICAtMTEsIC0xNywgLTY3LCAtMTMsIDIxLCAzOCwgLTQ0LCAzNiwKKyAgIC0xNiwgMjks
IDE3LCA1LCAtMTAsIDE4LCAxNywgLTMyLAorICAgMiwgOCwgMjIsIC01NiwgLTE1LCAtMzIsIDQw
LCA0MywKKyAgIDE5LCA0NiwgLTcsIC0xMDAsIC05NiwgMTksIDUzLCAyNCwKKyAgIDIxLCAtMjYs
IC00OCwgLTEwMSwgLTgyLCA2MSwgMzgsIC04NSwKKyAgIC0yOCwgLTM0LCAtMSwgNjMsIC01LCAt
NSwgMzksIDM5LAorICAgLTM4LCAzMiwgLTEyLCAtMjgsIDIwLCA0MCwgLTgsIDIsCisgICAzMSwg
MTIsIC0zNSwgLTEzLCAyMCwgLTI1LCAzMCwgOCwKKyAgIDMsIC0xMywgLTksIC0yMCwgMiwgLTEz
LCAyNCwgMzcsCisgICAtMTAsIDMzLCA2LCAyMCwgLTE2LCAtMjQsIC02LCAtNiwKKyAgIC0xOSwg
LTUsIDIyLCAyMSwgMTAsIDExLCAtNCwgLTM5LAorICAgLTEsIDYsIDQ5LCA0MSwgLTE1LCAtNTcs
IDIxLCAtNjIsCisgICA3NywgLTY5LCAtMTMsIDAsIC03NCwgMSwgLTcsIC0zOCwKKyAgIC04LCA2
LCA2MywgMjgsIDQsIDI2LCAtNTIsIDgyLAorICAgNjMsIDEzLCA0NSwgLTMzLCA0NCwgLTUyLCAt
NjUsIC0yMSwKKyAgIC00NiwgLTQ5LCA2NCwgLTE3LCAzMiwgMjQsIDY4LCAtMzksCisgICAtMTYs
IC01LCAtMjYsIDI4LCA1LCAtNjEsIC0yOCwgMiwKKyAgIDI0LCAxMSwgLTEyLCAtMzMsIDksIC0z
NywgLTMsIC0yOCwKKyAgIDIyLCAtMzcsIC0xMiwgMTksIDAsIC0xOCwgLTIsIDE0LAorICAgMSwg
NCwgOCwgLTksIC0yLCA0MywgLTE3LCAtMiwKKyAgIC02NiwgLTMxLCA1NiwgLTQwLCAtODcsIC0z
NiwgLTIsIC00LAorICAgLTQyLCAtNDUsIC0xLCAzMSwgLTQzLCAtMTUsIDI3LCA2MywKKyAgIC0x
MSwgMzIsIC0xMCwgLTMzLCAyNywgLTE5LCA0LCAxNSwKKyAgIC0yNiwgLTM0LCAyOSwgLTQsIC0z
OSwgLTY1LCAxNCwgLTIwLAorICAgLTIxLCAtMTcsIC0zNiwgMTMsIDU5LCA0NywgLTM4LCAtMzMs
CisgICAxMywgLTM3LCAtOCwgLTM3LCAtNywgLTYsIC03NiwgLTMxLAorICAgLTEyLCAtNDYsIDcs
IDI0LCAtMjEsIC0zMCwgLTE0LCA5LAorICAgMTUsIC0xMiwgLTEzLCA0NywgLTI3LCAtMjUsIC0x
LCAtMzksCisgICAwLCAyMCwgLTksIDYsIDcsIDQsIDMsIDcsCisgICAzOSwgNTAsIDIyLCAtNywg
MTQsIC0yMCwgMSwgNzAsCisgICAtMjgsIDI5LCAtNDEsIDEwLCAtMTYsIC01LCAtMjgsIC0yLAor
ICAgLTM3LCAzMiwgLTE4LCAxNywgNjIsIC0xMSwgLTIwLCAtNTAsCisgICAzNiwgMjEsIC02Miwg
LTEyLCAtNTYsIDUyLCA1MCwgMTcsCisgICAzLCA0OCwgNDQsIC00MSwgLTI1LCAzLCAxNiwgLTMs
CisgICAwLCAzMywgLTYsIDE1LCAyNywgMzQsIC0yNSwgMjIsCisgICA5LCAxNywgLTExLCAzNiwg
MTYsIC0yLCAxMiwgMjEsCisgICAtNTIsIDQ1LCAtMiwgLTEwLCA0NiwgMjEsIC0xOCwgNjcsCisg
ICAtMjgsIC0xMywgMzAsIDM3LCA0MiwgMTYsIC05LCAxMSwKKyAgIDc1LCA3LCAtNjQsIC00MCwg
LTEwLCAyOSwgNTcsIC0yMywKKyAgIDUsIDUzLCAtNzcsIDMsIC0xNywgLTUsIDQ3LCAtNTUsCisg
ICAtMzUsIC0zNiwgLTEzLCA1MiwgLTUzLCAtNzEsIDUyLCAtMTExLAorICAgLTIzLCAtMjYsIC0y
OCwgMjksIC00MywgNTUsIC0xOSwgNDMsCisgICAtMTksIDU0LCAtMTIsIC0zMywgLTQ0LCAtMzks
IC0xOSwgLTEwLAorICAgLTMxLCAtMTAsIDIxLCAzOCwgLTU3LCAtMjAsIDIsIC0yNSwKKyAgIDgs
IC02LCA1MCwgMTIsIDE1LCAyNSwgLTI1LCAxNSwKKyAgIC0zMCwgLTYsIDksIDI1LCAzNywgMTks
IC00LCAzMSwKKyAgIC0yMiwgMiwgNCwgMiwgMzYsIDcsIDMsIC0zNCwKKyAgIC04MCwgMzYsIC0x
MCwgLTIsIC01LCAzMSwgLTM2LCA0OSwKKyAgIC03MCwgMjAsIC0zNiwgMjEsIDI0LCAyNSwgLTQ2
LCAtNTEsCisgICAzNiwgLTU4LCAtNDgsIC00MCwgLTEwLCA1NSwgNzEsIDQ3LAorICAgMTAsIC0x
LCAxLCAyLCAtNDYsIC02OCwgMTYsIDEzLAorICAgMCwgLTc0LCAtMjksIDczLCAtNTIsIC0xOCwg
LTExLCA3LAorICAgLTQ0LCAtODIsIC0zMiwgLTcwLCAtMjgsIC0xLCAtMzksIC02OCwKKyAgIC02
LCAtNDEsIDEyLCAtMjIsIC0xNiwgNDAsIC0xMSwgLTI1LAorICAgNTEsIC05LCAyMSwgNCwgNCwg
LTM0LCA3LCAtNzgsCisgICAxNiwgNiwgLTM4LCAtMzAsIC0yLCAtNDQsIDMyLCAwLAorICAgMjIs
IDY0LCA1LCAtNzIsIC0yLCAtMTQsIC0xMCwgLTE2LAorICAgLTgsIC0yNSwgMTIsIDEwMiwgLTU4
LCAzNywgLTEwLCAtMjMsCisgICAxNSwgNDksIDcsIC03LCAyLCAtMjAsIC0zMiwgNDUsCisgICAt
NiwgNDgsIDI4LCAzMCwgMzMsIC0xLCAyMiwgLTYsCisgICAzMCwgNjUsIC0xNywgMjksIDc0LCAz
NywgLTI2LCAtMTAsCisgICAxNSwgLTI0LCAxOSwgLTY2LCAyMiwgLTEwLCAtMzEsIC0xLAorICAg
LTE4LCAtOSwgMTEsIDM3LCAtNCwgNDUsIDUsIDQxLAorICAgMTcsIDEsIDEsIDI0LCAtNTgsIDQx
LCA1LCAtNTEsCisgICAxNCwgOCwgNDMsIDE2LCAtMTAsIC0xLCA0NSwgMzIsCisgICAtNjQsIDMs
IC0zMywgLTI1LCAtMywgLTI3LCAtNjgsIDEyLAorICAgMjMsIC0xMSwgLTEzLCAtMzcsIC00MCwg
NCwgLTIxLCAtMTIsCisgICAzMiwgLTIzLCAtMTksIDc2LCA0MSwgLTIzLCAtMjQsIC00NCwKKyAg
IC02NSwgLTEsIC0xNSwgMSwgNzEsIDYzLCA1LCAyMCwKKyAgIC0zLCAyMSwgLTIzLCAzMSwgLTMy
LCAxOCwgLTIsIDI3LAorICAgMzEsIDQ2LCAtNSwgLTM5LCAtNSwgLTM1LCAxOCwgLTE4LAorICAg
LTQwLCAtMTAsIDMsIDEyLCAyLCAtMiwgLTIyLCA0MCwKKyAgIDUsIC02LCA2MCwgMzYsIDMsIDI5
LCAtMjcsIDEwLAorICAgMjUsIC01NCwgNSwgMjYsIDM5LCAzNSwgLTI0LCAtMzcsCisgICAzMCwg
LTkxLCAyOCwgLTQsIC0yMSwgLTI3LCAtMzksIC02LAorICAgNSwgMTIsIC0xMjgsIDM4LCAtMTYs
IDI5LCAtOTUsIC0yOSwKKyAgIDgyLCAtMiwgMzUsIDIsIDEyLCA4LCAtMjIsIDEwLAorICAgODAs
IC00NywgMiwgLTI1LCAtNzMsIC03OSwgMTYsIC0zMCwKKyAgIC0zMiwgLTY2LCA0OCwgMjEsIC00
NSwgLTExLCAtNDcsIDE0LAorICAgLTI3LCAtMTcsIC03LCAxNSwgLTQ0LCAtMTQsIC00NCwgLTI2
LAorICAgLTMyLCAyNiwgLTIzLCAxNywgLTcsIC0yOCwgMjYsIC02LAorICAgMjgsIDYsIC0yNiwg
MiwgMTMsIC0xNCwgLTIzLCAtMTQsCisgICAxOSwgNDYsIDE2LCAyLCAtMzMsIC0yMSwgMjgsIC0x
NywKKyAgIC00MiwgNDQsIC0zNywgMSwgLTM5LCAyOCwgODQsIC00NiwKKyAgIDE1LCAxMCwgMTMs
IC00NCwgNzIsIC0yNiwgMjYsIDMyLAorICAgLTI4LCAtMTIsIC04MywgMiwgMTAsIC0zMCwgLTQ0
LCAtMTAsCisgICAtMjgsIDUzLCA0NSwgNjUsIDAsIC0yNSwgNTcsIDM2LAorICAgLTMzLCA2LCAy
OSwgNDQsIC01MywgMTEsIDE5LCAtMiwKKyAgIC0yNywgMzUsIDMyLCA0OSwgNCwgMjMsIDM4LCAz
NiwKKyAgIDI0LCAxMCwgNTEsIC0zOSwgNCwgLTcsIDI2LCAzNywKKyAgIC0zNSwgMTEsIC00Nywg
LTE4LCAyOCwgMTYsIC0zNSwgNDIsCisgICAxNywgLTIxLCAtNDEsIDI4LCAxNCwgLTEyLCAxMSwg
LTQ1LAorICAgNywgLTQzLCAtMTUsIDE4LCAtNSwgMzgsIC00MCwgLTUwLAorICAgLTMwLCAtMjEs
IDksIC05OCwgMTMsIDEyLCAyMywgNzUsCisgICAtNTYsIC03LCAtMywgLTQsIC0xLCAtMzQsIDEy
LCAtNDksCisgICAxMSwgMjYsIC0xOCwgLTI4LCAtMTcsIDMzLCAxMywgLTE0LAorICAgNDAsIDI0
LCAtNzIsIC0zNywgMTAsIDE3LCAtNiwgMjIsCisgICAxNiwgMTYsIC02LCAtMTIsIC0zMCwgLTE0
LCAxMCwgNDAsCisgICAtMjMsIDEyLCAxNSwgLTMsIC0xNSwgMTMsIC01NiwgLTQsCisgICAtMzAs
IDEsIC0zLCAtMTcsIDI3LCA1MCwgLTUsIDY0LAorICAgLTM2LCAtMTksIDcsIDI5LCAyMiwgMjUs
IDksIC0xNiwKKyAgIC01OCwgLTY5LCAtNDAsIC02MSwgLTcxLCAtMTQsIDQyLCA5MywKKyAgIDI2
LCAxMSwgLTYsIC01OCwgLTExLCA3MCwgLTUyLCAxOSwKKyAgIDksIC0zMCwgLTMzLCAxMSwgLTM3
LCAtNDcsIC0yMSwgLTIyLAorICAgLTQwLCAxMCwgNDcsIDQsIC0yMywgMTcsIDQ4LCA0MSwKKyAg
IC00OCwgMTQsIDEwLCAxNSwgMzQsIC0yMywgLTIsIC00NywKKyAgIDIzLCAtMzIsIC0xMywgLTEw
LCAtMjYsIC0yNiwgLTQsIDE2LAorICAgMzgsIC0xNCwgMCwgLTEyLCAtNywgLTcsIDIwLCA0NCwK
KyAgIC0xLCAtMzIsIC0yNywgLTE2LCA0LCAtNiwgLTE4LCAxNCwKKyAgIDUsIDQsIC0yOSwgMjgs
IDcsIC03LCAxNSwgLTExLAorICAgLTIwLCAtNDUsIC0zNiwgMTYsIDg0LCAzNCwgLTU5LCAtMzAs
CisgICAyMiwgMTI2LCA4LCA2OCwgNzksIC0xNywgMjEsIC02OCwKKyAgIDM3LCA1LCAxNSwgNjMs
IDQ5LCAxMjcsIC05MCwgODUsCisgICA0MywgNywgMTYsIDksIDYsIC00NSwgLTU3LCAtNDMsCisg
ICA1NywgMTEsIC0yMywgLTExLCAtMjksIDYwLCAtMjYsIDAsCisgICA3LCA0MiwgLTI0LCAxMCwg
MjMsIC0yNSwgOCwgLTcsCisgICAtNDAsIDE5LCAtMTcsIDM1LCA0LCAyNywgLTM5LCAtOTEsCisg
ICAyNywgLTM2LCAzNCwgMiwgMTYsIC0yNCwgMjUsIDcsCisgICAtMjEsIDUsIDE3LCAxMCwgLTIy
LCAtMzAsIDksIC0xNywKKyAgIC02MSwgLTI2LCAzMywgMjEsIDU4LCAtNTEsIC0xNCwgNjksCisg
ICAtMzgsIDIwLCA3LCA4MCwgLTQsIC02NSwgLTYsIC0yNywKKyAgIDUzLCAtMTIsIDQ3LCAtMSwg
LTE1LCAxLCA2MCwgMTAyLAorICAgLTc5LCAtNCwgMTIsIDksIDIyLCAzNywgLTgsIC00LAorICAg
MzcsIDIsIC0zLCAtMTUsIC0xNiwgLTExLCAtNSwgMTksCisgICAtNiwgLTQzLCAyMCwgLTI1LCAt
MTgsIDEwLCAtMjcsIDAsCisgICAtMjgsIC0yNywgLTExLCAxMCwgLTE4LCAtMiwgLTQsIC0xNiwK
KyAgIDI2LCAxNCwgLTYsIDcsIC02LCAxLCA1MywgLTIsCisgICAtMjksIDIzLCA5LCAtMzAsIC02
LCAtNCwgLTYsIDU2LAorICAgNzAsIDAsIC0zMywgLTIwLCAtMTcsIC05LCAtMjQsIDQ2LAorICAg
LTUsIC0xMDUsIDQ3LCAtNDYsIC01MSwgMjAsIDIwLCAtNTMsCisgICAtODEsIC0xLCAtNywgNzUs
IC01LCAtMjEsIC02NSwgMTIsCisgICAtNTIsIDIyLCAtNTAsIC0xMiwgNDksIDU0LCA3NiwgLTgx
LAorICAgMTAsIDQ1LCAtNDEsIC01OSwgMTgsIC0xOSwgMjUsIDE0LAorICAgLTMxLCAtNTMsIC01
LCAxMiwgMzEsIDg0LCAtMjMsIDIsCisgICA3LCAyLCAxMCwgLTMyLCAzOSwgLTIsIC0xMiwgMSwK
KyAgIC05LCAwLCAtMTAsIC0xMSwgOSwgMTUsIC04LCAtMiwKKyAgIDIsIC0xLCAxMCwgMTQsIC01
LCAtNDAsIDE5LCAtNywKKyAgIC03LCAyNiwgLTQsIDIsIDEsIC0yNywgMzUsIDMyLAorICAgMjEs
IC0zMSwgMjYsIDQzLCAtOSwgNCwgLTMyLCA0MCwKKyAgIC02MiwgLTUyLCAzNiwgMjIsIDM4LCAy
MiwgMzYsIC05NiwKKyAgIDYsIC0xMCwgLTIzLCAtNDksIDE1LCAtMzMsIC0xOCwgLTMsCisgICAw
LCA0MSwgMjEsIC0xOSwgMjEsIDIzLCAtMzksIC0yMywKKyAgIC02LCA2LCA0NywgNTYsIDQsIDc0
LCAwLCAtOTgsCisgICAyOSwgLTQ3LCAtMTQsIC0zNiwgMjEsIC0yMiwgMjIsIDE2LAorICAgMTMs
IDEyLCAxNiwgLTUsIDEzLCAxNywgLTEzLCAtMTUsCisgICAxLCAtMzQsIC0yNiwgMjYsIDEyLCAz
MiwgMjcsIDEzLAorICAgLTY3LCAyNywgMiwgOCwgMTAsIDE4LCAxNiwgMjAsCisgICAtMTcsIC0x
NywgNTcsIC02NCwgNSwgMTQsIDE5LCAzMSwKKyAgIC0xOCwgLTQ0LCAtNDYsIC0xNiwgNCwgLTI1
LCAxNywgLTEyNiwKKyAgIC0yNCwgMzksIDQsIDgsIDU1LCAtMjUsIC0zNCwgMzksCisgICAtMTYs
IDMsIDksIDcxLCA3MiwgLTMxLCAtNTUsIDYsCisgICAxMCwgLTI1LCAzMiwgLTg1LCAtMjEsIDE4
LCAtOCwgMTUsCisgICAxMiwgLTI3LCAtNywgMSwgLTIxLCAtMiwgLTUsIDQ4LAorICAgLTE2LCAx
OCwgMSwgLTIyLCAtMjYsIDE2LCAxNCwgLTMxLAorICAgMjcsIC02LCAtMTUsIC0yMSwgNCwgLTE0
LCAxOCwgLTM2Cit9OworCitzdGF0aWMgY29uc3Qgb3B1c19pbnQ4IGxheWVyMV9yZWN1cl93ZWln
aHRzWzE3MjhdID0geworICAgMjAsIDY3LCAtOTksIDEyLCA0MSwgLTI1LCA0OSwgLTQ0LAorICAg
MzUsIDgxLCAxMTAsIDQ3LCAzNCwgLTY2LCAtMTQsIDE0LAorICAgLTYwLCAzNCwgMjksIC03Mywg
MTAsIDQxLCAzNSwgODksCisgICA3LCAtMzUsIDIyLCA3LCAyNywgLTIwLCAtNiwgNTYsCisgICAy
NiwgNjYsIDYsIDMzLCAtNTUsIDUzLCAxLCAtMjEsCisgICAxNCwgMTcsIDY4LCA1NSwgNTksIDAs
IDE4LCAtOSwKKyAgIDUsIC00MSwgNiwgLTUsIC0xMTQsIC0xMiwgMjksIDQyLAorICAgLTIzLCAx
MCwgODEsIC0yNywgMjAsIC01MywgLTMwLCAtNjIsCisgICA0MCwgOTUsIDI1LCAtNCwgMywgMTgs
IC04LCAtMTUsCisgICAtMjksIC04MiwgMiwgLTU3LCAtMywgLTYxLCAtMjksIC0yOSwKKyAgIDQ5
LCAyLCAtNTUsIDUsIC02OSwgLTk5LCAtNDksIC01MSwKKyAgIDYsIC0yNSwgMTIsIDg5LCA0NCwg
LTMzLCA1LCA0MSwKKyAgIDEsIDIzLCAtMzcsIC0zNywgLTI4LCAtNDgsIDMsIDQsCisgICAtNDEs
IC0zMCwgLTU3LCAtMzUsIC0zOSwgLTEsIC0xMywgLTU2LAorICAgLTUsIDUwLCA0OSwgNDEsIC00
LCAtNCwgMzMsIC0yMiwKKyAgIC0xLCAzMywgMzQsIDE4LCA0MCwgLTQyLCAxMiwgMSwKKyAgIC02
LCAtMiwgMTgsIDE3LCAzOSwgNDQsIDExLCA2NSwKKyAgIC02MCwgLTQ1LCAxMCwgOTEsIDIxLCA5
LCAtNjIsIC0xMSwKKyAgIDgsIDY5LCAzNywgMjQsIC0zMCwgMjEsIDI2LCAtMjcsCisgICAxLCAt
MjgsIDI0LCA2NiwgLTgsIDYsIC03MSwgMzQsCisgICAyNCwgNDQsIDU4LCAtNzgsIC0xOSwgNTcs
IDE3LCAtNjAsCisgICAxLCAxMiwgLTMsIC0xLCAtNDAsIDIyLCAxMSwgLTUsCisgICAyNSwgMTIs
IDEsIDcyLCA3OSwgNywgLTUwLCAyMywKKyAgIDE4LCAxMywgMjEsIC0xMSwgLTIwLCA1LCA3Nywg
LTk0LAorICAgMjQsIDE1LCA1NywgLTUxLCAzLCAzNiwgNTMsIC0xLAorICAgNCwgMTQsIDMwLCAt
MzEsIDIyLCA0MCwgMzIsIC0xMSwKKyAgIC0zNCwgLTM2LCAtNTksIDU4LCAyNSwgMjEsIC01NCwg
LTIzLAorICAgNDAsIDQ2LCAxOCwgMCwgMTIsIDU0LCAtOTYsIC05OSwKKyAgIC01OSwgNSwgMTE5
LCAtMzgsIDUwLCA1NSwgMTIsIC0xNiwKKyAgIDY3LCAwLCAzNCwgMzUsIDM5LCAzNSwgLTEsIDY5
LAorICAgMjQsIDI3LCAtMzAsIC0zNSwgLTQsIC03MCwgMiwgLTQ0LAorICAgLTcsIC02LCAxOSwg
LTksIDYwLCA0NCwgLTIxLCAtMTAsCisgICAzNywgNDMsIC0xNiwgLTMsIDMwLCAtMTUsIC02NSwg
MzEsCisgICAtNTUsIDE4LCAtOTgsIDc2LCA2NCwgMjUsIDI0LCAtMTgsCisgICAtNywgLTY4LCAt
MTAsIDM4LCAyNywgLTYwLCAzNiwgMzMsCisgICAxNiwgMzAsIDM0LCAtMzksIC0zNywgMzEsIDEy
LCA1MywKKyAgIC01NCwgMTQsIC0yNiwgLTQ5LCAtMTI4LCAtMTMsIC01LCAtMjIsCisgICAtMTEs
IC04NSwgNTUsIC04LCAtNTEsIC0xMSwgLTMzLCAtMTAsCisgICAtMzEsIC03NiwgLTQxLCAyMywg
NDQsIC00MCwgLTU0LCAtMTI3LAorICAgLTEwMSwgMTksIC0yMywgLTE1LCAxNSwgMjcsIDU4LCAt
NjAsCisgICA4LCAxNCwgLTMzLCAxLCA0OCwgLTksIC0xMSwgLTEyMywKKyAgIDMsIDUzLCAyMywg
NCwgLTI4LCAyMiwgMiwgLTI5LAorICAgLTY3LCAzNiwgMTIsIDcsIDU1LCAtMjEsIDg4LCAyMCwK
KyAgIC0xLCAtMjEsIC0xNywgMywgNDEsIDMyLCAtMTAsIC0xNCwKKyAgIC01LCAtNTcsIDY3LCA1
NywgMjEsIDIzLCAtMiwgLTI3LAorICAgLTczLCAtMjQsIDEyMCwgMjEsIDE4LCAtMzUsIDQyLCAt
NywKKyAgIDMsIC00NSwgLTI1LCA3NiwgLTM0LCA1MCwgMTEsIC01NCwKKyAgIC05MSwgMywgLTEx
MywgLTIwLCAtNSwgNDcsIDE1LCAtNDcsCisgICAxNywgMjcsIC0zLCAtMjYsIC03LCAxMCwgNywg
NzQsCisgICAtNDAsIDY0LCAtNywgLTUsIC0yNCwgLTQ5LCAtMjQsIC0zLAorICAgLTEwLCAyNywg
LTE3LCAtOCwgLTMsIDE0LCAtMjcsIDMzLAorICAgMTMsIDM5LCAyOCwgLTcsIC0zOCwgMjksIDE2
LCA0NCwKKyAgIDE5LCA1NSwgLTMsIDksIC0xMywgLTU3LCA0MywgNDMsCisgICAzMSwgMCwgLTkz
LCAtMTcsIDE5LCAtNTYsIDQsIC0xMiwKKyAgIC0yNSwgMzcsIC04NSwgLTEzLCAtMTE4LCAzMywg
LTE3LCA1NiwKKyAgIDcxLCAtODAsIC00LCA2LCAtMTEsIC0xOCwgNDcsIC01MiwKKyAgIDI1LCA5
LCA0OCwgLTEwNywgMSwgMjEsIDIwLCAtMywKKyAgIDEwLCAtMTYsIC00LCAyNCwgMTcsIDMxLCAt
NjEsIC0xOCwKKyAgIC01MCwgMjQsIC0xMCwgMTIsIDcxLCAyNiwgMTEsIC0zLAorICAgNCwgMSwg
MCwgLTcsIC00MCwgMTgsIDM4LCAtMzQsCisgICAzOCwgMTcsIDgsIC0zNCwgMiwgMjEsIDEyMywg
LTMyLAorICAgLTI2LCA0MywgMTQsIC0zNCwgLTEsIC05LCAzNywgLTE2LAorICAgNiwgLTE3LCAt
NjIsIDY4LCAyMiwgMTcsIDExLCAtNzUsCisgICAzMywgLTgwLCA2MiwgLTksIC03NSwgNzYsIDM2
LCAtNDEsCisgICAtOCwgLTQwLCAtMTEsIC03MSwgNDAsIC0zOSwgNjIsIC00OSwKKyAgIC04MSwg
MTYsIC05LCAtNTIsIDUyLCA2MSwgMTcsIC0xMDMsCisgICAtMjcsIC0xMCwgLTgsIC01NCwgLTU3
LCAyMSwgMjMsIC0xNiwKKyAgIC01MiwgMzYsIDE4LCAxMCwgLTUsIDgsIDE1LCAtMjksCisgICA1
LCAtMTksIC0zNywgOCwgLTUzLCA2LCAxOSwgLTM3LAorICAgMzgsIC0xNywgNDgsIDEwLCAwLCA4
MSwgNDYsIDcwLAorICAgLTI5LCAxMDEsIDExLCA0NCwgLTQ0LCAtMywgMjQsIDExLAorICAgMywg
MTQsIC05LCAxMSwgMTQsIC00NSwgMTMsIDQ2LAorICAgLTMsIC01NywgNjgsIDQ0LCA2MywgOTgs
IDI1LCAtMjgsCisgICAtMjMsIDE1LCAzMiwgLTEwLCA1MywgLTYsIC0yLCAtOSwKKyAgIC02LCAx
NiwgLTEwNywgLTExLCAtMTEsIC0yOCwgNTksIDU3LAorICAgLTIyLCAzOCwgNDIsIDgzLCAyNywg
NSwgMjksIC0zMCwKKyAgIDEyLCAtMjEsIC0xMywgMzEsIDM4LCAtMjEsIDU4LCAtMTAsCisgICAt
MTAsIC0xNSwgLTIsIC01LCAxMSwgMTIsIC03MywgLTI4LAorICAgLTM4LCAyMiwgMiwgLTI1LCA3
MywgLTUyLCAtMTIsIC01NSwKKyAgIDMyLCAtNjMsIDIxLCA1MSwgMzMsIDUyLCAtMjYsIDU1LAor
ICAgLTI2LCAtMjYsIDU3LCAtMzIsIC00LCAtNTIsIC02MSwgMjEsCisgICAtMzMsIC05MSwgLTUx
LCA2OSwgLTkwLCAtNTMsIC0zOCwgLTQ0LAorICAgMTIsIC03NiwgLTIwLCA3NywgLTQ1LCAtNywg
ODYsIDQzLAorICAgLTEwOSwgLTMzLCAtMTA1LCAtNDAsIC0xMjEsIC0xMCwgMCwgLTcyLAorICAg
NDUsIC01MSwgLTc1LCAtNDksIC0zOCwgLTEsIC02MiwgMTgsCisgICAtMSwgMzAsIC00NCwgLTE0
LCAtMTAsIC02NywgNDAsIC0xMCwKKyAgIC0zNCwgNDYsIC02NCwgLTMyLCAyOSwgLTEzLCAzMywg
MywKKyAgIC0zMiwgLTUsIDI4LCAtMjcsIC0yNSwgOTMsIDI0LCA2OCwKKyAgIC00MCwgNTcsIDIz
LCAtMywgLTIxLCAtNTgsIDE3LCAtMzksCisgICAtMTcsIC0yMiwgLTg5LCAxMSwgMTgsIC00Niwg
MjcsIDI0LAorICAgNDYsIDEyNywgNjEsIDg3LCAzMSwgMTI3LCAtMzYsIDQ3LAorICAgLTIzLCA0
NywgMTI3LCAtMjQsIDExMCwgMTIyLCAzMCwgMTAwLAorICAgMCwgOTYsIC0xMiwgNiwgNTAsIDQ0
LCAtMTMsIDczLAorICAgNCwgNTUsIC0xMSwgLTE1LCA0OSwgNDIsIC02LCAyMCwKKyAgIC0zNSwg
NTgsIDE4LCAzOCwgNDIsIDcyLCAxOSwgLTIxLAorICAgMTEsIDksIC0zNywgNywgMjksIDMxLCAx
NiwgLTE3LAorICAgMTMsIC01MCwgMTksIDUsIC0yMywgNTEsIC0xNiwgLTUsCisgICA0LCAtMjQs
IDc2LCAxMCwgLTUzLCAtMjgsIC03LCAtNjUsCisgICA3NCwgNDAsIC0xNiwgLTI5LCAzMiwgLTE2
LCAtNDksIC0zNSwKKyAgIC0zLCA1OSwgLTk2LCAtNTAsIC00MywgLTQzLCAtNjEsIC0xNSwKKyAg
IC04LCAtMzYsIC0zNCwgLTMzLCAtMTQsIDExLCAtMywgLTM5LAorICAgNCwgLTExNCwgLTEyMywg
LTExLCAtNDksIC0yMSwgMTQsIC01NiwKKyAgIDEsIDQzLCAtNjMsIDI2LCA0MCwgMTgsIC0xMCwg
LTI2LAorICAgLTE0LCAtMTUsIC0zNSwgLTM1LCAtMTEsIDMyLCAtNDQsIC02NywKKyAgIDIsIDIy
LCA3LCAzLCAtOSwgLTMwLCAtNTEsIC0yOCwKKyAgIDI4LCA2LCAtMjIsIDE2LCAzNCwgLTI1LCAt
NTIsIC01NCwKKyAgIC04LCAtNiwgNSwgOCwgMjAsIC0xNiwgLTE3LCAtNDQsCisgICAyNywgMywg
MzEsIC01LCAtNDgsIC0xLCAtMywgMTE2LAorICAgMTEsIDcxLCAtMzEsIC00NywgMTA5LCA1MCwg
LTIyLCAtMTIsCisgICAtNTcsIDMyLCA2NiwgOCwgLTI1LCAtOTMsIC01NCwgLTEwLAorICAgMTks
IC03NiwgLTM0LCA5NywgNDgsIC0zNiwgLTE4LCAtMzAsCisgICAtMzksIC0yNiwgLTEyLCAyOCwg
MTQsIDEyLCAtMTIsIC0zMSwKKyAgIDM4LCAyLCAxMCwgNCwgLTQwLCAyMCwgMTYsIC02MSwKKyAg
IDIsIDY0LCAzOSwgNSwgMTUsIDMzLCA0MCwgLTYxLAorICAgLTQ5LCA5MywgLTEwLCAzMywgMjgs
IC0xMSwgLTI3LCAtMTgsCisgICAzOSwgLTYyLCAtNiwgLTYsIDYyLCAxMSwgLTgsIDM4LAorICAg
LTY3LCAxMiwgMjcsIDM5LCAtMjcsIDEyMywgLTE4LCAtNiwKKyAgIC02NSwgODMsIC02NCwgMjAs
IDE5LCAtMTEsIDMzLCAyNCwKKyAgIDE3LCA1NiwgNzgsIDcsIC0xNSwgNTQsIC0xMDEsIC05LAor
ICAgMTE1LCAtOTYsIDUwLCA1MSwgMzUsIDM0LCAyNywgMzcsCisgICAtNDAsIC0xMSwgOCwgLTM2
LCA0MiwgLTQ1LCAyLCAtMjMsCisgICAwLCA2NywgLTgsIC05LCAtMTMsIDUwLCAtMTQsIC0yNywK
KyAgIDQsIDAsIC04LCAtMTQsIDMwLCAtOSwgMjksIDE1LAorICAgOSwgLTM4LCAzNywgLTgsIDUw
LCAtNDYsIDU0LCA0MSwKKyAgIC0xMSwgLTgsIC0xMSwgLTI2LCAzOSwgNDUsIDE0LCAtMjYsCisg
ICAtMTcsIC0yNywgNjksIDM4LCAzOSwgOTgsIDY2LCAwLAorICAgNDIsIDEyMywgLTEwMSwgLTE5
LCAtODMsIDExNywgLTMyLCA1NiwKKyAgIDEwLCAxMiwgLTg4LCA3OSwgLTUzLCA1NiwgNjMsIDk1
LAorICAgLTYyLCA5LCAzNiwgLTEzLCAtNzksIC0xNiwgMzcsIC00NiwKKyAgIDM1LCAtMzQsIDE0
LCAxNywgLTU0LCA1LCAyMSwgLTcsCisgICA3LCA2MywgNTYsIDE1LCAyNywgLTc2LCAtMjUsIDQs
CisgICAtMjYsIC02MywgMjgsIC02NywgLTUyLCA0MywgLTQ3LCAtNzAsCisgICA0MCwgLTEyLCA0
MCwgLTY2LCAtMzcsIDAsIDM1LCAzNywKKyAgIC01MywgNCwgLTE3LCAtNTEsIDExLCAyMSwgMTQs
IC0zNCwKKyAgIC00LCAyNCwgLTQyLCAyOSwgMjIsIDcsIDI4LCAxMiwKKyAgIDM3LCAzOSwgLTM5
LCAtMTksIDY1LCAtNjAsIC01MCwgLTIsCisgICAxLCA4MiwgMzksIDE5LCAtMjMsIC00MywgLTIy
LCAtNjcsCisgICAtMzUsIC0zNCwgMzIsIDEwMiwgODEsIDEyNywgMzYsIDY3LAorICAgLTQ1LCAx
LCAtNjcsIC01MiwgLTQsIDM1LCAyMCwgMjgsCisgICA3MSwgODYsIC0zNSwgLTksIC04MywgLTM0
LCAxMiwgOSwKKyAgIC0yMywgMiwgMTQsIDI4LCAtMjMsIDcsIC0yNSwgNDUsCisgICA3LCAxNywg
LTM3LCAwLCAtMTksIDMxLCAyNiwgNDAsCisgICAtMjcsIC0xNiwgMTcsIDUsIC0yMSwgMjMsIDI0
LCA5NiwKKyAgIC01NSwgNTIsIC0xOSwgLTE0LCAtNiwgMSwgNTAsIC0zNCwKKyAgIDg2LCAtNTMs
IDM4LCAyLCAtNTIsIC0zNiwgLTEzLCA2MCwKKyAgIC04NSwgLTEyMCwgMzIsIDcsIC0xMiwgMjIs
IDcwLCAtNywKKyAgIC05NCwgMzgsIC03NiwgLTMxLCAtMjAsIDE1LCAtMjgsIDcsCisgICA2LCA0
MCwgNTMsIDg4LCAzLCAzOCwgMTgsIC04LAorICAgLTIyLCAtMjMsIDUxLCAzNywgLTksIDEzLCAt
MzIsIDI1LAorICAgLTIxLCAyNywgMzEsIDIwLCAxOCwgLTksIC0xMywgMSwKKyAgIDIxLCAtMjQs
IC0xMywgMzksIDE1LCAtMTEsIC0yOSwgLTM2LAorICAgMTgsIDE1LCA4LCAyNywgMjEsIC05NCwg
LTEsIC0yMiwKKyAgIDQ5LCA2NiwgLTEsIDYsIC0zLCAtNDAsIC0xOCwgNiwKKyAgIDI4LCAxMiwg
MzMsIC01OSwgNjIsIDYwLCAtNDgsIDkwLAorICAgLTEsIDEwOCwgOSwgMTgsIC0yLCAyNywgNzcs
IC02NSwKKyAgIDgyLCAtNDgsIC0zOCwgLTE5LCAtMTEsIDEyNywgNTAsIDY2LAorICAgMTgsIC0x
MywgLTIyLCA2MCwgLTM4LCA0MCwgLTE0LCAtMjYsCisgICAtMTMsIDM4LCA2NywgNTcsIDMwLCAz
MywgMjYsIDM2LAorICAgMzgsIC0xNywgMjcsIC0yOCwgMjAsIDEyLCAtNjQsIDE4LAorICAgNSwg
LTMzLCAtMjcsIDEzLCAtMjYsIDMyLCAzNSwgLTUsCisgICAtNDgsIC0xNCwgOTIsIDQzLCAtNDcs
IC0xNCwgNDAsIDExLAorICAgNTEsIDY2LCAyMiwgLTYzLCAtMTYsIC02MSwgNCwgLTI4LAorICAg
MjcsIDIwLCAtMzMsIC0zMCwgLTIxLCAtMjksIC01MywgMzEsCisgICAtNDAsIDI0LCA0MywgLTQs
IC0xOSwgMjEsIDY3LCAyMCwKKyAgIDEwMCwgLTE2LCAtOTMsIDc4LCAtNiwgLTE4LCAtNTIsIC0z
NywKKyAgIC05LCA2NiwgLTMxLCAtOCwgMjYsIDE4LCA0LCAyNCwKKyAgIC0yMiwgMTcsIC0yLCAt
MTMsIDI3LCAwLCA4LCAtMTgsCisgICAtMjUsIDUsIC0yMSwgLTI0LCAtNywgMTgsIC05MywgMjEs
CisgICA3LCAyLCAtNzUsIDY5LCA1MCwgLTUsIC0xNSwgLTE3LAorICAgNjAsIC00MiwgNTUsIDEs
IC00LCAzLCAxMCwgNDYsCisgICAxNiwgLTEzLCA0NSwgLTcsIC0xMCwgLTQ0LCAtMTA4LCA0OSwK
KyAgIDIsIC0xNSwgLTY0LCAtMTIsIC03MiwgMzIsIC0zOCwgLTQ1LAorICAgMTAsIC01NCwgMTMs
IC0xMywgLTI3LCAtMzYsIC02NCwgNTgsCisgICAtNjIsIC0xMDEsIDg4LCAtODYsIC03MSwgLTM5
LCAtOSwgLTEyOCwKKyAgIDMyLCAxNSwgLTQsIDU0LCAtMTYsIC0zOSwgLTI2LCAtMzYsCisgICA0
NiwgNDgsIC02NCwgLTEwLCAxOSwgMzAsIC0xMywgMzQsCisgICAtOCwgNTAsIDYwLCAtMjIsIC02
LCAtMTEsIC0zMCwgNSwKKyAgIDUwLCAzMiwgNTYsIDAsIDI1LCA2LCA2OCwgMTEsCisgICAtMjks
IDQ1LCAtOSwgLTEyLCA0LCAxLCAxOCwgLTQ5LAorICAgMCwgLTM4LCAtMTksIDkwLCAyOSwgMzUs
IDUxLCA4LAorICAgLTQ4LCA5NiwgLTEsIC0xMiwgLTksIC0zMiwgLTYzLCAtNjUsCisgICAtNywg
MzgsIDg5LCAyOCwgLTg1LCAtMjgsIC0yMywgLTI1LAorICAgLTEyOCwgNTYsIDc5LCAtMzYsIDk5
LCAtNiwgLTM3LCA3LAorICAgLTEzLCAtNjksIC00NiwgLTI5LCAyNSwgNjQsIC0yMSwgMTcsCisg
ICAxLCA0MiwgLTY2LCAxLCA4MCwgMjYsIC0zMiwgMjEsCisgICAxNSwgMTUsIDYsIDYsIC0xMCwg
MTUsIDEyNywgNSwKKyAgIDM4LCAyNywgODcsIC01NywgLTI1LCAxMSwgNzIsIC0yMSwKKyAgIC01
LCAxMSwgLTEzLCAtNjYsIDc4LCAzNiwgLTMsIDQxLAorICAgLTIxLCA4LCAtMzMsIDIzLCA3Mywg
MjgsIDU3LCAtMjUsCisgICAtNSwgNCwgLTIyLCAtNDcsIDE1LCA0LCAtNTcsIC03MiwKKyAgIDMz
LCAxLCAxOCwgMiwgNTMsIC03MSwgLTk5LCAtMjEsCisgICAtMywgLTExMSwgMTA4LCA3MSwgLTE0
LCA4MiwgMjUsIDYxLAorICAgLTQ4LCA1LCA5LCAtNTEsIC0yMCwgLTI1LCAtMywgMTQsCisgICAt
MzMsIDE0LCAtMywgLTM0LCAyMiwgMTIsIC0xOSwgLTM4LAorICAgLTE2LCAyLCAyMSwgMTYsIDI2
LCAtMzEsIDc1LCA0NCwKKyAgIC0zMSwgMTYsIDI2LCA2NiwgMTcsIC05LCAtMjIsIC0yMiwKKyAg
IDIyLCAtNDQsIDIyLCAyNywgMiwgNTgsIC0xNCwgMTAsCisgICAtNzMsIC00MiwgNTUsIC0yNSwg
LTYxLCA3MiwgLTEsIDMwLAorICAgLTU4LCAtMjUsIDYzLCAyNiwgLTQ4LCAtNDAsIDI2LCAtMzAs
CisgICA2MCwgOCwgLTE3LCAtMSwgLTE4LCAtMjAsIDQzLCAtMjAsCisgICAtNCwgLTI4LCAxMjcs
IC0xMDYsIDI5LCA3MCwgNjQsIC0yNywKKyAgIDM5LCAtMzMsIC01LCAtODgsIC00MCwgLTUyLCAy
NiwgNDQsCisgICAtMTcsIDIzLCAyLCAtNDksIDIyLCAtOSwgLTgsIDg2LAorICAgNDksIC00Mywg
LTYwLCAxLCAxMCwgNDUsIDM2LCAtNTMsCisgICAtNCwgMzMsIDM4LCA0OCwgLTcyLCAxLCAxOSwg
MjEsCisgICAtNjUsIDQsIC01LCAtNjIsIDI3LCAtMjUsIDE3LCAtNiwKKyAgIDYsIC00NSwgLTM5
LCAtNDYsIDQsIDI2LCAxMjcsIC05LAorICAgMTgsIC0zMywgLTE4LCAtMywgMzMsIDIsIC01LCAx
NSwKKyAgIC0yNiwgLTIyLCAtMTE3LCAtNjMsIC0xNywgLTU5LCA2MSwgLTc0LAorICAgNywgLTQ3
LCAtNTgsIC0xMjgsIC02NywgMTUsIC0xNiwgLTEyOCwKKyAgIDEyLCAyLCAyMCwgOSwgLTQ4LCAt
NDAsIDQzLCAzLAorICAgLTQwLCAtMTYsIC0zOCwgLTYsIC0yMiwgLTI4LCAtMTYsIC01OSwKKyAg
IC0yMiwgNiwgLTUsIDExLCAtMTIsIC02NiwgLTQwLCAyNywKKyAgIC02MiwgLTQ0LCAtMTksIDM4
LCAtMywgMzksIC04LCA0MCwKKyAgIC0yNCwgMTMsIDIxLCA1MCwgLTYwLCAtMjIsIDUzLCAtMjks
CisgICAtNiwgMSwgMjIsIC01OSwgMCwgMTcsIC0zOSwgMTE1Cit9OworCitzdGF0aWMgY29uc3Qg
b3B1c19pbnQ4IGxheWVyMV9iaWFzWzcyXSA9IHsKKyAgIC00MiwgMjAsIDE2LCAwLCAxMDUsIDYw
LCAxLCAtOTcsCisgICAyNCwgNjAsIDE4LCAxMywgNjIsIDI1LCAxMjcsIDM0LAorICAgNzksIDU1
LCAxMTgsIDEyNywgOTUsIDMxLCAtNCwgODcsCisgICAyMSwgMTIsIDIsIC0xNCwgMTgsIDIzLCA4
LCAxNywKKyAgIC0xLCAtOCwgNSwgNCwgMjQsIDM3LCAyMSwgMTMsCisgICAzNiwgMTMsIDE3LCAx
OCwgMzcsIDMwLCAzMywgMSwKKyAgIDgsIC0xNiwgLTExLCAtNSwgLTMxLCAtMywgLTUsIDAsCisg
ICA2LCAzLCA1OCwgLTcsIC0xLCAtMTYsIDUsIC0xMywKKyAgIDE2LCAxMCwgLTIsIC0xNCwgMTEs
IC00LCAzLCAtMTEKK307CisKK3N0YXRpYyBjb25zdCBvcHVzX2ludDggbGF5ZXIyX3dlaWdodHNb
NDhdID0geworICAgLTExMywgLTg4LCAzMSwgLTEyOCwgLTEyNiwgLTYxLCA4NSwgLTM1LAorICAg
MTE4LCAtMTI4LCAtNjEsIDEyNywgLTEyOCwgLTE3LCAtMTI4LCAxMjcsCisgICAxMDQsIC05LCAt
MTI4LCAzMywgNDUsIDEyNywgNSwgODMsCisgICA4NCwgLTEyOCwgLTg1LCAtMTI4LCAtNDUsIDQ4
LCAtNTMsIC0xMjgsCisgICA0NiwgMTI3LCAtMTcsIDEyNSwgMTE3LCAtNDEsIC0xMTcsIC05MSwK
KyAgIC0xMjcsIC02OCwgLTEsIC04OSwgLTgwLCAzMiwgMTA2LCA3Cit9OwogCi1zdGF0aWMgY29u
c3QgZmxvYXQgd2VpZ2h0c1s0NTBdID0geworc3RhdGljIGNvbnN0IG9wdXNfaW50OCBsYXllcjJf
Ymlhc1syXSA9IHsKKyAgIDE0LCAxMTcKK307CiAKLS8qIGhpZGRlbiBsYXllciAqLwotLTAuNTE0
NjI0ZiwgMC4wMjM0MjI3ZiwgLTAuMTQzMjlmLCAtMC4wODc4MjE2ZiwgLTAuMDAxODc4MjdmLAot
LTAuMDI1NzQ0M2YsIDAuMTA4NTI0ZiwgMC4wMDMzMzg4MWYsIDAuMDA1ODUwMTdmLCAtMC4wMjQ2
MTMyZiwKLTAuMTQyNzIzZiwgLTAuMDA0MzY0OTRmLCAwLjAxMDEzNTRmLCAtMC4xMTEyNGYsIC0w
LjA4MDkzNjdmLAotLTAuMDc1MDc3MmYsIDAuMDI5NTUyNGYsIDAuMDA4MjM5NDRmLCAwLjE1MDM5
MmYsIDAuMDMyMDg3NmYsCi0tMC4wNzEwNTY0ZiwgLTEuNDM4MThmLCAwLjY1MjA3NmYsIDAuMDY1
MDc0NGYsIC0xLjU0ODIxZiwKLTAuMTY4OTQ5ZiwgLTEuOTI3MjRmLCAwLjA1MTc5NzZmLCAtMC4w
NjcwNzM3ZiwgLTAuMDY5MDEyMWYsCi0wLjAwMjQ3NTI4ZiwgLTAuMDUyMjAyNGYsIDAuMDYzMTM2
OGYsIDAuMDUzMjc3NmYsIDAuMDQ3NzUxZiwKLS0wLjAxMTcxNWYsIDAuMTQyMzc0ZiwgLTAuMDI5
MDg4NWYsIC0wLjI3OTI2M2YsIC0wLjQzMzQ5OWYsCi0tMC4wNzk1MTc0ZiwgLTAuMzgwNDU4Ziwg
LTAuMDUxMjYzZiwgMC4yMTg1MzdmLCAtMC4zMjI0NzhmLAotMS4wNjY2N2YsIC0wLjEwNDYwN2Ys
IC00LjcwMTA4ZiwgMC4zMTIwMzdmLCAwLjI3NzM5N2YsCi0tMi43MTg1OWYsIDEuNzAwMzdmLCAt
MC4xNDE4NDVmLCAwLjAxMTU2MThmLCAwLjA2Mjk4ODNmLAotMC4wNDAzODcxZiwgMC4wMTM5NDI4
ZiwgLTAuMDA0MzA3MzNmLCAtMC4wNDI5MDM4ZiwgLTAuMDU5MDMxOGYsCi0tMC4wNTAxNTI2Ziwg
LTAuMDI4NDgwMmYsIC0wLjA0MTU2ODZmLCAtMC4wNDM4OTk5ZiwgMC4wODIyNjY2ZiwKLTAuMTk3
MTk0ZiwgMC4wMzYzMjc1ZiwgLTAuMDU4NDMwN2YsIDAuMDc1MjM2NGYsIC0wLjA3OTk3OTZmLAot
LTAuMTQ2Mjc1ZiwgMC4xNjE2NjFmLCAtMC4xODQ1ODVmLCAwLjE0NTU2OGYsIDAuNDQyODIzZiwK
LTEuNjEyMjFmLCAxLjExMTYyZiwgMi42MjE3N2YsIC0yLjQ4MmYsIC0wLjExMjU5OWYsCi0tMC4x
MTAzNjZmLCAtMC4xNDA3OTRmLCAtMC4xODE2OTRmLCAwLjA2NDg2NzRmLCAwLjA4NDIyNDhmLAot
MC4wOTMzOTkzZiwgMC4xNTAxMjJmLCAwLjEyOTE3MWYsIDAuMTc2ODQ4ZiwgMC4xNDE3NThmLAot
LTAuMjcxODIyZiwgMC4yMzUxMTNmLCAwLjA2Njg1NzlmLCAtMC40MzM5NTdmLCAwLjExMzYzM2Ys
Ci0tMC4xNjkzNDhmLCAtMS40MDA5MWYsIDAuNjI4NjFmLCAtMC4xMzQyMzZmLCAwLjQwMjE3M2Ys
Ci0xLjg2MzczZiwgMS41Mzk5OGYsIC00LjMyMDg0ZiwgMC43MzUzNDNmLCAwLjgwMDIxNGYsCi0t
MC4wMDk2ODQxNWYsIDAuMDQyNTkwNGYsIDAuMDE5NjgxMWYsIC0wLjAxODQyNmYsIC0wLjAwMDM0
Mzk1M2YsCi0tMC4wMDQxNjM4OWYsIDAuMDAxMTE1NThmLCAwLjAxNzMwNjlmLCAtMC4wMDk5ODU5
NmYsIC0wLjAyNTg5OGYsCi0wLjAwMTIzNzY0ZiwgLTAuMDA1MjAzNzNmLCAtMC4wNTY1MDMzZiwg
MC4wNjM3Mzk0ZiwgMC4wMDUxMjEzZiwKLTAuMDIyMTM2MWYsIDAuMDA4MTk5NjJmLCAtMC4wNDY3
MDYxZiwgLTAuMDU0ODI1OGYsIC0wLjAwMzE0MDYzZiwKLS0xLjE4MzMyZiwgMS44ODA5MWYsIC0w
LjQxMTQ4ZiwgLTIuOTU3MjdmLCAtMC41MjE0NDlmLAotLTAuMjcxNjQxZiwgMC4xMjQ5NDZmLCAt
MC4wNTMyOTM2ZiwgMC4xMDE1MTVmLCAwLjAwMDIwODU2NGYsCi0tMC4wNDg4NzQ4ZiwgMC4wNjQy
Mzg4ZiwgLTAuMDM4Mzg0OGYsIDAuMDEzNTA0NmYsIC0wLjA0MTM1OTJmLAotLTAuMDMyNjQwMmYs
IC0wLjAxMzc0MjFmLCAtMC4wMjI1MjE5ZiwgLTAuMDkxNzI5NGYsIC0wLjI3Nzc1OWYsCi0tMC4x
ODU0MThmLCAwLjA0NzExMjhmLCAtMC4xMjU4NzlmLCAwLjI2MjQ2N2YsIC0wLjIxMjc5NGYsCi0t
MC4xMTI5MzFmLCAtMS45OTg4NWYsIC0wLjQwNDc4N2YsIDAuMjI0NDAyZiwgMC42Mzc5NjJmLAot
LTAuMjc4MDhmLCAtMC4wNzIzOTUzZiwgLTAuMDUzNzY1NWYsIC0wLjAzMzYzNTlmLCAtMC4wOTA2
NjAxZiwKLS0wLjA2NDEzMDlmLCAtMC4wNzEzNTQyZiwgMC4wNTI0MzE3ZiwgMC4wMDYwODgxOWYs
IDAuMDc1NDEwMWYsCi0tMC4wNDg4NDAxZiwgLTAuMDA2NzE4NjVmLCAwLjA0MTgyMzlmLCAwLjA1
MzYyODRmLCAtMC4xMzI2MzlmLAotMC4wMjY3NjQ4ZiwgLTAuMjQ4NDMyZiwgLTAuMDEwNDE1M2Ys
IDAuMDM1NTQ0ZiwgLTAuMjEyNzUzZiwKLS0wLjMwMjg5NWYsIC0wLjAzNTc4NTRmLCAwLjM3Njgz
OGYsIDAuNTk3MDI1ZiwgLTAuNjY0NjQ3ZiwKLTAuMjY4NDIyZiwgLTAuMzc2NzcyZiwgLTEuMDU0
NzJmLCAwLjAxNDQxNzhmLCAwLjE3OTEyMmYsCi0wLjAzNjAxNTVmLCAwLjIyMDI2MmYsIC0wLjAw
NTYzODFmLCAwLjAzMTcxOTdmLCAwLjA2MjEwNjZmLAotLTAuMDA3NzkyOThmLCAwLjAwNzg5Mzc4
ZiwgMC4wMDM1MDYwNWYsIDAuMDEwNDgwOWYsIDAuMDM2Mjg3MWYsCi0tMC4xNTc3MDhmLCAtMC4w
NjU5Nzc5ZiwgLTAuMDkyNjI3OGYsIDAuMDA3NzA3OTFmLCAwLjA2MzE2MjFmLAotMC4wODE3MzQz
ZiwgLTAuNDI0Mjk1ZiwgLTAuMDQzNzcyN2YsIC0wLjI0MjUxZiwgMC43MTEyMTdmLAotLTAuNzM2
NDU1ZiwgLTIuMTk0ZiwgLTAuMTA3NjEyZiwgLTAuMTc1MTU2ZiwgLTAuMDM2NjU3M2YsCi0tMC4w
MTIzMTU2ZiwgLTAuMDYyODUxNmYsIC0wLjAyMTg5NzdmLCAtMC4wMDY5MzY5OWYsIDAuMDA2OTUx
ODVmLAotMC4wMDUwNzM2MmYsIDAuMDAzNTkzMzRmLCAwLjAwNTI2NjFmLCAwLjAzNTU2MWYsIDAu
MDM4MjcwMWYsCi0wLjAzNDIxNzlmLCAtMC4wMDc5MDI3MWYsIC0wLjAxNzA5MjVmLCAwLjA0NzAy
OWYsIDAuMDE5NzM2MmYsCi0tMC4wMTUzNDM1ZiwgMC4wNjQ0MTUyZiwgLTAuMzY4NjJmLCAtMC4w
Njc0ODc2ZiwgLTIuODI2NzJmLAotMS4zNDEyMmYsIC0wLjA3ODgwMjlmLCAtMy40Nzc5MmYsIDAu
NTA3MjQ2ZiwgLTAuODE2Mzc4ZiwKLS0wLjAxNDIzODNmLCAtMC4xMjczNDlmLCAtMC4xMDY5MjZm
LCAtMC4wMzU5NTI0ZiwgMC4xMDUwNDVmLAotMC4yOTE1NTRmLCAwLjE5NTQxM2YsIDAuMDg2NjIx
NGYsIC0wLjA2NjU3N2YsIC0wLjEwMjE4OGYsCi0wLjA5Nzk0NjZmLCAtMC4xMjk4MmYsIDAuNDAw
MTgxZiwgLTAuNDA5MzM2ZiwgLTAuMDU5MzMyNmYsCi0tMC4wNjU2MjAzZiwgLTAuMjA0NDc0Ziwg
MC4xNzk4MDJmLCAwLjAwMDUwOTA4NGYsIDAuMDk5NTk1NGYsCi0tMi4zNzdmLCAtMC42ODYzNTlm
LCAwLjkzNDg2MWYsIDEuMTAyNjFmLCAxLjM5MDFmLAotLTQuMzM2MTZmLCAtMC4wMDI2NDAxN2Ys
IDAuMDA3MTMwNDVmLCAwLjEwNjI2NGYsIDAuMTQzNzI2ZiwKLS0wLjA2ODUzMDVmLCAtMC4wNTQ2
NTZmLCAtMC4wMTc2NzI1ZiwgLTAuMDc3MjY2OWYsIC0wLjAyNjQ1MjZmLAotLTAuMDEwMzgyNGYs
IC0wLjAyNjk4NzJmLCAtMC4wMDY4N2YsIDAuMjI1ODA0ZiwgMC40MDc3NTFmLAotLTAuMDYxMjYx
MWYsIC0wLjA1NzY4NjNmLCAtMC4xODAxMzFmLCAtMC4yMjI3NzJmLCAtMC40NjE3NDJmLAotMC4z
MzUyMzZmLCAxLjAzMzk5ZiwgNC4yNDExMmYsIC0wLjM0NTc5NmYsIC0wLjU5NDU0OWYsCi0tNzYu
MTQwN2YsIC0wLjI2NTI3NmYsIDAuMDUwNzcxOWYsIDAuMDY0MzA0NGYsIDAuMDM4NDgzMmYsCi0w
LjA0MjQ0NTlmLCAtMC4wMzg3ODE3ZiwgLTAuMDIzNTk5NmYsIC0wLjA3NDA1NTZmLCAtMC4wMjcw
MDI5ZiwKLTAuMDA4ODIxNzdmLCAtMC4wNTUyMzcxZiwgLTAuMDA0ODU4NTFmLCAwLjMxNDI5NWYs
IDAuMzYwNDMxZiwKLS0wLjA3ODcwODVmLCAwLjExMDM1NWYsIC0wLjQxNTk1OGYsIC0wLjM4NTA4
OGYsIC0wLjI3MjIyNGYsCi0tMS41NTEwOGYsIC0wLjE0MTg0OGYsIDAuNDQ4ODc3ZiwgLTAuNTYz
NDQ3ZiwgLTIuMzE0MDNmLAotLTAuMTIwMDc3ZiwgLTEuNDk5MThmLCAtMC44MTc3MjZmLCAtMC4w
NDk1ODU0ZiwgLTAuMDIzMDc4MmYsCi0tMC4wMjI0MDE0ZiwgMC4xMTcwNzZmLCAwLjAzOTMyMTZm
LCAwLjA1MTk5N2YsIDAuMDMzMDc2M2YsCi0tMC4xMTA3OTZmLCAwLjAyMTExMTdmLCAtMC4wMTk3
MjU4ZiwgMC4wMTg3NDYxZiwgMC4wMTI1MTgzZiwKLTAuMTQ4NzZmLCAwLjA5MjA1NjVmLCAtMC4z
NDI0NzVmLCAwLjEzNTI3MmYsIC0wLjE2ODE1NWYsCi0tMC4wMzM0MjNmLCAtMC4wNjA0NjExZiwg
LTAuMTI4ODM1ZiwgMC42NjQ5NDdmLCAtMC4xNDQ5OTdmLAotMi4yNzY0OWYsIDEuMjg2NjNmLCAw
Ljg0MTIxN2YsIC0yLjQyODA3ZiwgMC4wMjMwNDcxZiwKLTAuMjI2NzA5ZiwgLTAuMDM3NDgwM2Ys
IDAuMTU1NDM2ZiwgMC4wNDAwMzQyZiwgLTAuMTg0Njg2ZiwKLTAuMTI4NDg4ZiwgLTAuMDkzOTUx
OGYsIC0wLjA1Nzg1NTlmLCAwLjAyNjU5NjdmLCAtMC4wOTk5MzIyZiwKLS0wLjAzMjI3NjhmLCAt
MC4zMjI5OTRmLCAtMC4xODkzNzFmLCAtMC43MzgwNjlmLCAtMC4wNzU0OTE0ZiwKLTAuMjE0NzE3
ZiwgLTAuMDkzNzI4ZiwgLTAuNjk1NzQxZiwgMC4wODk5Mjk4ZiwgLTIuMDYxODhmLAotLTAuMjcz
NzE5ZiwgLTAuODk2OTc3ZiwgMC4xMzA1NTNmLCAwLjEzNDYzOGYsIDEuMjkzNTVmLAotMC4wMDUy
MDc0OWYsIC0wLjAzMjQyMjRmLCAwLjAwNTMwNDUxZiwgMC4wMTkyMzg1ZiwgMC4wMDMyODcwOGYs
Ci0wLjAyNTA4MzhmLCAwLjAwNTMzNjVmLCAtMC4wMTc3MzIxZiwgMC4wMDYxODc4OWYsIDAuMDA1
MjUzNjRmLAotMC4wMDEwNDU5NmYsIC0wLjAzNjA0NTlmLCAwLjA0MDI0MDNmLCAtMC4wNDA2MzUx
ZiwgMC4wMTM2ODgzZiwKLTAuMDg4MDcyMmYsIC0wLjAxOTc0NDlmLCAwLjA4OTkzOGYsIDAuMDEw
MDQ1NmYsIC0wLjA0NzU2MzhmLAotLTAuNzMyNjdmLCAwLjAzNzQzM2YsIC0wLjE0NjU1MWYsIC0w
LjIzMDIyMWYsIC0zLjA2NDg5ZiwKLS0xLjQwMTk0ZiwgMC4wMTk4NDgzZiwgMC4wMzk3OTUzZiwg
LTAuMDE5MDIzOWYsIDAuMDQ3MDcxNWYsCi0tMC4xMzEzNjNmLCAtMC4xOTE3MjFmLCAtMC4wMTc2
MjI0ZiwgLTAuMDQ4MDM1MmYsIC0wLjIyMTc5OWYsCi0tMC4yNjc5NGYsIC0wLjAyOTI2MTVmLCAw
LjA2MTIxMjdmLCAtMC4xMjk4NzdmLCAwLjAwNjI4MzMyZiwKLS0wLjA4NTkxOGYsIDAuMDE3NTM3
OWYsIDAuMDU0MTAxMWYsIC0wLjA4MTA4NzRmLCAtMC4zODA4MDlmLAotLTAuMjIyMDU2ZiwgLTAu
NTA4ODU5ZiwgLTAuNDczMzY5ZiwgMC40ODQ5NThmLCAtMi4yODQxMWYsCi0wLjAxMzk1MTZmLAot
Lyogb3V0cHV0IGxheWVyICovCi0zLjkwMDE3ZiwgMS43MTc4OWYsIC0xLjQzMzcyZiwgLTIuNzA4
MzlmLCAxLjc3MTA3ZiwKLTUuNDgwMDZmLCAxLjQ0NjYxZiwgMi4wMTEzNGYsIC0xLjg4MzgzZiwg
LTMuNjQ5NThmLAotLTEuMjYzNTFmLCAwLjc3OTQyMWYsIDIuMTEzNTdmLCAzLjEwNDA5ZiwgMS42
ODg0NmYsCi0tNC40NjE5N2YsIC0xLjYxNDU1ZiwgMy41OTgzMmYsIDIuNDM1MzFmLCAtMS4yNjQ1
OGYsCi0wLjQxNzk0MWYsIDEuNDc0MzdmLCAyLjE2NjM1ZiwgLTEuOTA5ZiwgLTAuODI4ODY5ZiwK
LTEuMzg4MDVmLCAtMi42Nzk3NWYsIC0wLjExMDA0NGYsIDEuOTU1OTZmLCAwLjY5NzkzMWYsCi0t
MC4zMTMyMjZmLCAtMC44ODkzMTVmLCAwLjI4MzIzNmYsIDAuOTQ2MTAyZiwgfTsKK2NvbnN0IERl
bnNlTGF5ZXIgbGF5ZXIwID0geworICAgbGF5ZXIwX2JpYXMsCisgICBsYXllcjBfd2VpZ2h0cywK
KyAgIDI1LCAzMiwgMAorfTsKIAotc3RhdGljIGNvbnN0IGludCB0b3BvWzNdID0gezI1LCAxNiwg
Mn07Citjb25zdCBHUlVMYXllciBsYXllcjEgPSB7CisgICBsYXllcjFfYmlhcywKKyAgIGxheWVy
MV93ZWlnaHRzLAorICAgbGF5ZXIxX3JlY3VyX3dlaWdodHMsCisgICAzMiwgMjQKK307CiAKLWNv
bnN0IE1MUCBuZXQgPSB7Ci0gICAgMywKLSAgICB0b3BvLAotICAgIHdlaWdodHMKK2NvbnN0IERl
bnNlTGF5ZXIgbGF5ZXIyID0geworICAgbGF5ZXIyX2JpYXMsCisgICBsYXllcjJfd2VpZ2h0cywK
KyAgIDI0LCAyLCAxCiB9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9tbHBfdHJhaW4uYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scF90
cmFpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDlkMTI3YTZkYmJiNGU1OTZl
OWZkMjhiNWMxYWIxYWM1MzA3ZjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc3JjL21scF90cmFpbi5jCisrKyAvZGV2L251bGwKQEAgLTEsNTAxICswLDAg
QEAKLS8qIENvcHlyaWdodCAoYykgMjAwOC0yMDExIE9jdGFzaWMgSW5jLgotICAgV3JpdHRlbiBi
eSBKZWFuLU1hcmMgVmFsaW4gKi8KLS8qCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICAg
YXJlIG1ldDoKLQotICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0gICAtIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICBgYEFTIElTJycgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
ICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IKLSAgIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICAg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCi0gICBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RwotICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLQotI2luY2x1ZGUgIm1scF90cmFpbi5oIgot
I2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8c2VtYXBob3JlLmg+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2luY2x1
ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotaW50IHN0b3BwZWQgPSAwOwotCi12
b2lkIGhhbmRsZXIoaW50IHNpZykKLXsKLSAgICBzdG9wcGVkID0gMTsKLSAgICBzaWduYWwoc2ln
LCBoYW5kbGVyKTsKLX0KLQotTUxQVHJhaW4gKiBtbHBfaW5pdChpbnQgKnRvcG8sIGludCBuYkxh
eWVycywgZmxvYXQgKmlucHV0cywgZmxvYXQgKm91dHB1dHMsIGludCBuYlNhbXBsZXMpCi17Ci0g
ICAgaW50IGksIGosIGs7Ci0gICAgTUxQVHJhaW4gKm5ldDsKLSAgICBpbnQgaW5EaW0sIG91dERp
bTsKLSAgICBuZXQgPSBtYWxsb2Moc2l6ZW9mKCpuZXQpKTsKLSAgICBuZXQtPnRvcG8gPSBtYWxs
b2MobmJMYXllcnMqc2l6ZW9mKG5ldC0+dG9wb1swXSkpOwotICAgIGZvciAoaT0wO2k8bmJMYXll
cnM7aSsrKQotICAgICAgICBuZXQtPnRvcG9baV0gPSB0b3BvW2ldOwotICAgIGluRGltID0gdG9w
b1swXTsKLSAgICBvdXREaW0gPSB0b3BvW25iTGF5ZXJzLTFdOwotICAgIG5ldC0+aW5fcmF0ZSA9
IG1hbGxvYygoaW5EaW0rMSkqc2l6ZW9mKG5ldC0+aW5fcmF0ZVswXSkpOwotICAgIG5ldC0+d2Vp
Z2h0cyA9IG1hbGxvYygobmJMYXllcnMtMSkqc2l6ZW9mKG5ldC0+d2VpZ2h0cykpOwotICAgIG5l
dC0+YmVzdF93ZWlnaHRzID0gbWFsbG9jKChuYkxheWVycy0xKSpzaXplb2YobmV0LT53ZWlnaHRz
KSk7Ci0gICAgZm9yIChpPTA7aTxuYkxheWVycy0xO2krKykKLSAgICB7Ci0gICAgICAgIG5ldC0+
d2VpZ2h0c1tpXSA9IG1hbGxvYygodG9wb1tpXSsxKSp0b3BvW2krMV0qc2l6ZW9mKG5ldC0+d2Vp
Z2h0c1swXVswXSkpOwotICAgICAgICBuZXQtPmJlc3Rfd2VpZ2h0c1tpXSA9IG1hbGxvYygodG9w
b1tpXSsxKSp0b3BvW2krMV0qc2l6ZW9mKG5ldC0+d2VpZ2h0c1swXVswXSkpOwotICAgIH0KLSAg
ICBkb3VibGUgaW5NZWFuW2luRGltXTsKLSAgICBmb3IgKGo9MDtqPGluRGltO2orKykKLSAgICB7
Ci0gICAgICAgIGRvdWJsZSBzdGQ9MDsKLSAgICAgICAgaW5NZWFuW2pdID0gMDsKLSAgICAgICAg
Zm9yIChpPTA7aTxuYlNhbXBsZXM7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbk1lYW5b
al0gKz0gaW5wdXRzW2kqaW5EaW0ral07Ci0gICAgICAgICAgICBzdGQgKz0gaW5wdXRzW2kqaW5E
aW0ral0qaW5wdXRzW2kqaW5EaW0ral07Ci0gICAgICAgIH0KLSAgICAgICAgaW5NZWFuW2pdIC89
IG5iU2FtcGxlczsKLSAgICAgICAgc3RkIC89IG5iU2FtcGxlczsKLSAgICAgICAgbmV0LT5pbl9y
YXRlWzEral0gPSAuNS8oLjAwMDErc3RkKTsKLSAgICAgICAgc3RkID0gc3RkLWluTWVhbltqXSpp
bk1lYW5bal07Ci0gICAgICAgIGlmIChzdGQ8LjAwMSkKLSAgICAgICAgICAgIHN0ZCA9IC4wMDE7
Ci0gICAgICAgIHN0ZCA9IDEvc3FydChpbkRpbSpzdGQpOwotICAgICAgICBmb3IgKGs9MDtrPHRv
cG9bMV07aysrKQotICAgICAgICAgICAgbmV0LT53ZWlnaHRzWzBdW2sqKHRvcG9bMF0rMSkraisx
XSA9IHJhbmRuKHN0ZCk7Ci0gICAgfQotICAgIG5ldC0+aW5fcmF0ZVswXSA9IDE7Ci0gICAgZm9y
IChqPTA7ajx0b3BvWzFdO2orKykKLSAgICB7Ci0gICAgICAgIGRvdWJsZSBzdW0gPSAwOwotICAg
ICAgICBmb3IgKGs9MDtrPGluRGltO2srKykKLSAgICAgICAgICAgIHN1bSArPSBpbk1lYW5ba10q
bmV0LT53ZWlnaHRzWzBdW2oqKHRvcG9bMF0rMSkraysxXTsKLSAgICAgICAgbmV0LT53ZWlnaHRz
WzBdW2oqKHRvcG9bMF0rMSldID0gLXN1bTsKLSAgICB9Ci0gICAgZm9yIChqPTA7ajxvdXREaW07
aisrKQotICAgIHsKLSAgICAgICAgZG91YmxlIG1lYW4gPSAwOwotICAgICAgICBkb3VibGUgc3Rk
OwotICAgICAgICBmb3IgKGk9MDtpPG5iU2FtcGxlcztpKyspCi0gICAgICAgICAgICBtZWFuICs9
IG91dHB1dHNbaSpvdXREaW0ral07Ci0gICAgICAgIG1lYW4gLz0gbmJTYW1wbGVzOwotICAgICAg
ICBzdGQgPSAxL3NxcnQodG9wb1tuYkxheWVycy0yXSk7Ci0gICAgICAgIG5ldC0+d2VpZ2h0c1tu
YkxheWVycy0yXVtqKih0b3BvW25iTGF5ZXJzLTJdKzEpXSA9IG1lYW47Ci0gICAgICAgIGZvciAo
az0wO2s8dG9wb1tuYkxheWVycy0yXTtrKyspCi0gICAgICAgICAgICBuZXQtPndlaWdodHNbbmJM
YXllcnMtMl1baioodG9wb1tuYkxheWVycy0yXSsxKStrKzFdID0gcmFuZG4oc3RkKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG5ldDsKLX0KLQotI2RlZmluZSBNQVhfTkVVUk9OUyAxMDAKLSNkZWZpbmUg
TUFYX09VVCAxMAotCi1kb3VibGUgY29tcHV0ZV9ncmFkaWVudChNTFBUcmFpbiAqbmV0LCBmbG9h
dCAqaW5wdXRzLCBmbG9hdCAqb3V0cHV0cywgaW50IG5iU2FtcGxlcywgZG91YmxlICpXMF9ncmFk
LCBkb3VibGUgKlcxX2dyYWQsIGRvdWJsZSAqZXJyb3JfcmF0ZSkKLXsKLSAgICBpbnQgaSxqOwot
ICAgIGludCBzOwotICAgIGludCBpbkRpbSwgb3V0RGltLCBoaWRkZW5EaW07Ci0gICAgaW50ICp0
b3BvOwotICAgIGRvdWJsZSAqVzAsICpXMTsKLSAgICBkb3VibGUgcm1zPTA7Ci0gICAgaW50IFcw
X3NpemUsIFcxX3NpemU7Ci0gICAgZG91YmxlIGhpZGRlbltNQVhfTkVVUk9OU107Ci0gICAgZG91
YmxlIG5ldE91dFtNQVhfTkVVUk9OU107Ci0gICAgZG91YmxlIGVycm9yW01BWF9ORVVST05TXTsK
LQotICAgIHRvcG8gPSBuZXQtPnRvcG87Ci0gICAgaW5EaW0gPSBuZXQtPnRvcG9bMF07Ci0gICAg
aGlkZGVuRGltID0gbmV0LT50b3BvWzFdOwotICAgIG91dERpbSA9IG5ldC0+dG9wb1syXTsKLSAg
ICBXMF9zaXplID0gKHRvcG9bMF0rMSkqdG9wb1sxXTsKLSAgICBXMV9zaXplID0gKHRvcG9bMV0r
MSkqdG9wb1syXTsKLSAgICBXMCA9IG5ldC0+d2VpZ2h0c1swXTsKLSAgICBXMSA9IG5ldC0+d2Vp
Z2h0c1sxXTsKLSAgICBtZW1zZXQoVzBfZ3JhZCwgMCwgVzBfc2l6ZSpzaXplb2YoZG91YmxlKSk7
Ci0gICAgbWVtc2V0KFcxX2dyYWQsIDAsIFcxX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwotICAgIGZv
ciAoaT0wO2k8b3V0RGltO2krKykKLSAgICAgICAgbmV0T3V0W2ldID0gb3V0cHV0c1tpXTsKLSAg
ICBmb3IgKGk9MDtpPG91dERpbTtpKyspCi0gICAgICAgIGVycm9yX3JhdGVbaV0gPSAwOwotICAg
IGZvciAocz0wO3M8bmJTYW1wbGVzO3MrKykKLSAgICB7Ci0gICAgICAgIGZsb2F0ICppbiwgKm91
dDsKLSAgICAgICAgZmxvYXQgaW5wW2luRGltXTsKLSAgICAgICAgaW4gPSBpbnB1dHMrcyppbkRp
bTsKLSAgICAgICAgb3V0ID0gb3V0cHV0cyArIHMqb3V0RGltOwotICAgICAgICBmb3IgKGo9MDtq
PGluRGltO2orKykKLSAgICAgICAgICAgaW5wW2pdID0gaW5bal07Ci0gICAgICAgIGZvciAoaT0w
O2k8aGlkZGVuRGltO2krKykKLSAgICAgICAgewotICAgICAgICAgICAgZG91YmxlIHN1bSA9IFcw
W2kqKGluRGltKzEpXTsKLSAgICAgICAgICAgIGZvciAoaj0wO2o8aW5EaW07aisrKQotICAgICAg
ICAgICAgICAgIHN1bSArPSBXMFtpKihpbkRpbSsxKStqKzFdKmlucFtqXTsKLSAgICAgICAgICAg
IGhpZGRlbltpXSA9IHRhbnNpZ19hcHByb3goc3VtKTsKLSAgICAgICAgfQotICAgICAgICBmb3Ig
KGk9MDtpPG91dERpbTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBzdW0gPSBX
MVtpKihoaWRkZW5EaW0rMSldOwotICAgICAgICAgICAgZm9yIChqPTA7ajxoaWRkZW5EaW07aisr
KQotICAgICAgICAgICAgICAgIHN1bSArPSBXMVtpKihoaWRkZW5EaW0rMSkraisxXSpoaWRkZW5b
al07Ci0gICAgICAgICAgICBuZXRPdXRbaV0gPSB0YW5zaWdfYXBwcm94KHN1bSk7Ci0gICAgICAg
ICAgICBlcnJvcltpXSA9IG91dFtpXSAtIG5ldE91dFtpXTsKLSAgICAgICAgICAgIGlmIChvdXRb
aV0gPT0gMCkgZXJyb3JbaV0gKj0gLjA7Ci0gICAgICAgICAgICBlcnJvcl9yYXRlW2ldICs9IGZh
YnMoZXJyb3JbaV0pPjE7Ci0gICAgICAgICAgICBpZiAoaT09MCkgZXJyb3JbaV0gKj0gNTsKLSAg
ICAgICAgICAgIHJtcyArPSBlcnJvcltpXSplcnJvcltpXTsKLSAgICAgICAgICAgIC8qZXJyb3Jb
aV0gPSBlcnJvcltpXS8oMStmYWJzKGVycm9yW2ldKSk7Ki8KLSAgICAgICAgfQotICAgICAgICAv
KiBCYWNrLXByb3BhZ2F0ZSBlcnJvciAqLwotICAgICAgICBmb3IgKGk9MDtpPG91dERpbTtpKysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBncmFkID0gMS1uZXRPdXRbaV0qbmV0T3V0
W2ldOwotICAgICAgICAgICAgVzFfZ3JhZFtpKihoaWRkZW5EaW0rMSldICs9IGVycm9yW2ldKmdy
YWQ7Ci0gICAgICAgICAgICBmb3IgKGo9MDtqPGhpZGRlbkRpbTtqKyspCi0gICAgICAgICAgICAg
ICAgVzFfZ3JhZFtpKihoaWRkZW5EaW0rMSkraisxXSArPSBncmFkKmVycm9yW2ldKmhpZGRlbltq
XTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGk9MDtpPGhpZGRlbkRpbTtpKyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGRvdWJsZSBncmFkOwotICAgICAgICAgICAgZ3JhZCA9IDA7Ci0gICAg
ICAgICAgICBmb3IgKGo9MDtqPG91dERpbTtqKyspCi0gICAgICAgICAgICAgICAgZ3JhZCArPSBl
cnJvcltqXSpXMVtqKihoaWRkZW5EaW0rMSkraSsxXTsKLSAgICAgICAgICAgIGdyYWQgKj0gMS1o
aWRkZW5baV0qaGlkZGVuW2ldOwotICAgICAgICAgICAgVzBfZ3JhZFtpKihpbkRpbSsxKV0gKz0g
Z3JhZDsKLSAgICAgICAgICAgIGZvciAoaj0wO2o8aW5EaW07aisrKQotICAgICAgICAgICAgICAg
IFcwX2dyYWRbaSooaW5EaW0rMSkraisxXSArPSBncmFkKmlucFtqXTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gcm1zOwotfQotCi0jZGVmaW5lIE5CX1RIUkVBRFMgOAotCi1zZW1fdCBz
ZW1fYmVnaW5bTkJfVEhSRUFEU107Ci1zZW1fdCBzZW1fZW5kW05CX1RIUkVBRFNdOwotCi1zdHJ1
Y3QgR3JhZGllbnRBcmcgewotICAgIGludCBpZDsKLSAgICBpbnQgZG9uZTsKLSAgICBNTFBUcmFp
biAqbmV0OwotICAgIGZsb2F0ICppbnB1dHM7Ci0gICAgZmxvYXQgKm91dHB1dHM7Ci0gICAgaW50
IG5iU2FtcGxlczsKLSAgICBkb3VibGUgKlcwX2dyYWQ7Ci0gICAgZG91YmxlICpXMV9ncmFkOwot
ICAgIGRvdWJsZSBybXM7Ci0gICAgZG91YmxlIGVycm9yX3JhdGVbTUFYX09VVF07Ci19OwotCi12
b2lkICpncmFkaWVudF90aHJlYWRfcHJvY2Vzcyh2b2lkICpfYXJnKQotewotICAgIGludCBXMF9z
aXplLCBXMV9zaXplOwotICAgIHN0cnVjdCBHcmFkaWVudEFyZyAqYXJnID0gX2FyZzsKLSAgICBp
bnQgKnRvcG8gPSBhcmctPm5ldC0+dG9wbzsKLSAgICBXMF9zaXplID0gKHRvcG9bMF0rMSkqdG9w
b1sxXTsKLSAgICBXMV9zaXplID0gKHRvcG9bMV0rMSkqdG9wb1syXTsKLSAgICBkb3VibGUgVzBf
Z3JhZFtXMF9zaXplXTsKLSAgICBkb3VibGUgVzFfZ3JhZFtXMV9zaXplXTsKLSAgICBhcmctPlcw
X2dyYWQgPSBXMF9ncmFkOwotICAgIGFyZy0+VzFfZ3JhZCA9IFcxX2dyYWQ7Ci0gICAgd2hpbGUg
KDEpCi0gICAgewotICAgICAgICBzZW1fd2FpdCgmc2VtX2JlZ2luW2FyZy0+aWRdKTsKLSAgICAg
ICAgaWYgKGFyZy0+ZG9uZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBhcmctPnJtcyA9
IGNvbXB1dGVfZ3JhZGllbnQoYXJnLT5uZXQsIGFyZy0+aW5wdXRzLCBhcmctPm91dHB1dHMsIGFy
Zy0+bmJTYW1wbGVzLCBhcmctPlcwX2dyYWQsIGFyZy0+VzFfZ3JhZCwgYXJnLT5lcnJvcl9yYXRl
KTsKLSAgICAgICAgc2VtX3Bvc3QoJnNlbV9lbmRbYXJnLT5pZF0pOwotICAgIH0KLSAgICBmcHJp
bnRmKHN0ZGVyciwgImRvbmVcbiIpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1mbG9hdCBtbHBf
dHJhaW5fYmFja3Byb3AoTUxQVHJhaW4gKm5ldCwgZmxvYXQgKmlucHV0cywgZmxvYXQgKm91dHB1
dHMsIGludCBuYlNhbXBsZXMsIGludCBuYkVwb2NoLCBmbG9hdCByYXRlKQotewotICAgIGludCBp
LCBqOwotICAgIGludCBlOwotICAgIGZsb2F0IGJlc3Rfcm1zID0gMWUxMDsKLSAgICBpbnQgaW5E
aW0sIG91dERpbSwgaGlkZGVuRGltOwotICAgIGludCAqdG9wbzsKLSAgICBkb3VibGUgKlcwLCAq
VzEsICpiZXN0X1cwLCAqYmVzdF9XMTsKLSAgICBkb3VibGUgKlcwX2dyYWQsICpXMV9ncmFkOwot
ICAgIGRvdWJsZSAqVzBfb2xkZ3JhZCwgKlcxX29sZGdyYWQ7Ci0gICAgZG91YmxlICpXMF9yYXRl
LCAqVzFfcmF0ZTsKLSAgICBkb3VibGUgKmJlc3RfVzBfcmF0ZSwgKmJlc3RfVzFfcmF0ZTsKLSAg
ICBpbnQgVzBfc2l6ZSwgVzFfc2l6ZTsKLSAgICB0b3BvID0gbmV0LT50b3BvOwotICAgIFcwX3Np
emUgPSAodG9wb1swXSsxKSp0b3BvWzFdOwotICAgIFcxX3NpemUgPSAodG9wb1sxXSsxKSp0b3Bv
WzJdOwotICAgIHN0cnVjdCBHcmFkaWVudEFyZyBhcmdzW05CX1RIUkVBRFNdOwotICAgIHB0aHJl
YWRfdCB0aHJlYWRbTkJfVEhSRUFEU107Ci0gICAgaW50IHNhbXBsZVBlclBhcnQgPSBuYlNhbXBs
ZXMvTkJfVEhSRUFEUzsKLSAgICBpbnQgY291bnRfd29yc2U9MDsKLSAgICBpbnQgY291bnRfcmV0
cmllcz0wOwotCi0gICAgdG9wbyA9IG5ldC0+dG9wbzsKLSAgICBpbkRpbSA9IG5ldC0+dG9wb1sw
XTsKLSAgICBoaWRkZW5EaW0gPSBuZXQtPnRvcG9bMV07Ci0gICAgb3V0RGltID0gbmV0LT50b3Bv
WzJdOwotICAgIFcwID0gbmV0LT53ZWlnaHRzWzBdOwotICAgIFcxID0gbmV0LT53ZWlnaHRzWzFd
OwotICAgIGJlc3RfVzAgPSBuZXQtPmJlc3Rfd2VpZ2h0c1swXTsKLSAgICBiZXN0X1cxID0gbmV0
LT5iZXN0X3dlaWdodHNbMV07Ci0gICAgVzBfZ3JhZCA9IG1hbGxvYyhXMF9zaXplKnNpemVvZihk
b3VibGUpKTsKLSAgICBXMV9ncmFkID0gbWFsbG9jKFcxX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwot
ICAgIFcwX29sZGdyYWQgPSBtYWxsb2MoVzBfc2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0gICAgVzFf
b2xkZ3JhZCA9IG1hbGxvYyhXMV9zaXplKnNpemVvZihkb3VibGUpKTsKLSAgICBXMF9yYXRlID0g
bWFsbG9jKFcwX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwotICAgIFcxX3JhdGUgPSBtYWxsb2MoVzFf
c2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0gICAgYmVzdF9XMF9yYXRlID0gbWFsbG9jKFcwX3NpemUq
c2l6ZW9mKGRvdWJsZSkpOwotICAgIGJlc3RfVzFfcmF0ZSA9IG1hbGxvYyhXMV9zaXplKnNpemVv
Zihkb3VibGUpKTsKLSAgICBtZW1zZXQoVzBfZ3JhZCwgMCwgVzBfc2l6ZSpzaXplb2YoZG91Ymxl
KSk7Ci0gICAgbWVtc2V0KFcwX29sZGdyYWQsIDAsIFcwX3NpemUqc2l6ZW9mKGRvdWJsZSkpOwot
ICAgIG1lbXNldChXMV9ncmFkLCAwLCBXMV9zaXplKnNpemVvZihkb3VibGUpKTsKLSAgICBtZW1z
ZXQoVzFfb2xkZ3JhZCwgMCwgVzFfc2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0KLSAgICByYXRlIC89
IG5iU2FtcGxlczsKLSAgICBmb3IgKGk9MDtpPGhpZGRlbkRpbTtpKyspCi0gICAgICAgIGZvciAo
aj0wO2o8aW5EaW0rMTtqKyspCi0gICAgICAgICAgICBXMF9yYXRlW2kqKGluRGltKzEpK2pdID0g
cmF0ZSpuZXQtPmluX3JhdGVbal07Ci0gICAgZm9yIChpPTA7aTxXMV9zaXplO2krKykKLSAgICAg
ICAgVzFfcmF0ZVtpXSA9IHJhdGU7Ci0KLSAgICBmb3IgKGk9MDtpPE5CX1RIUkVBRFM7aSsrKQot
ICAgIHsKLSAgICAgICAgYXJnc1tpXS5uZXQgPSBuZXQ7Ci0gICAgICAgIGFyZ3NbaV0uaW5wdXRz
ID0gaW5wdXRzK2kqc2FtcGxlUGVyUGFydCppbkRpbTsKLSAgICAgICAgYXJnc1tpXS5vdXRwdXRz
ID0gb3V0cHV0cytpKnNhbXBsZVBlclBhcnQqb3V0RGltOwotICAgICAgICBhcmdzW2ldLm5iU2Ft
cGxlcyA9IHNhbXBsZVBlclBhcnQ7Ci0gICAgICAgIGFyZ3NbaV0uaWQgPSBpOwotICAgICAgICBh
cmdzW2ldLmRvbmUgPSAwOwotICAgICAgICBzZW1faW5pdCgmc2VtX2JlZ2luW2ldLCAwLCAwKTsK
LSAgICAgICAgc2VtX2luaXQoJnNlbV9lbmRbaV0sIDAsIDApOwotICAgICAgICBwdGhyZWFkX2Ny
ZWF0ZSgmdGhyZWFkW2ldLCBOVUxMLCBncmFkaWVudF90aHJlYWRfcHJvY2VzcywgJmFyZ3NbaV0p
OwotICAgIH0KLSAgICBmb3IgKGU9MDtlPG5iRXBvY2g7ZSsrKQotICAgIHsKLSAgICAgICAgZG91
YmxlIHJtcz0wOwotICAgICAgICBkb3VibGUgZXJyb3JfcmF0ZVsyXSA9IHswLDB9OwotICAgICAg
ICBmb3IgKGk9MDtpPE5CX1RIUkVBRFM7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBzZW1f
cG9zdCgmc2VtX2JlZ2luW2ldKTsKLSAgICAgICAgfQotICAgICAgICBtZW1zZXQoVzBfZ3JhZCwg
MCwgVzBfc2l6ZSpzaXplb2YoZG91YmxlKSk7Ci0gICAgICAgIG1lbXNldChXMV9ncmFkLCAwLCBX
MV9zaXplKnNpemVvZihkb3VibGUpKTsKLSAgICAgICAgZm9yIChpPTA7aTxOQl9USFJFQURTO2kr
KykKLSAgICAgICAgewotICAgICAgICAgICAgc2VtX3dhaXQoJnNlbV9lbmRbaV0pOwotICAgICAg
ICAgICAgcm1zICs9IGFyZ3NbaV0ucm1zOwotICAgICAgICAgICAgZXJyb3JfcmF0ZVswXSArPSBh
cmdzW2ldLmVycm9yX3JhdGVbMF07Ci0gICAgICAgICAgICBlcnJvcl9yYXRlWzFdICs9IGFyZ3Nb
aV0uZXJyb3JfcmF0ZVsxXTsKLSAgICAgICAgICAgIGZvciAoaj0wO2o8VzBfc2l6ZTtqKyspCi0g
ICAgICAgICAgICAgICAgVzBfZ3JhZFtqXSArPSBhcmdzW2ldLlcwX2dyYWRbal07Ci0gICAgICAg
ICAgICBmb3IgKGo9MDtqPFcxX3NpemU7aisrKQotICAgICAgICAgICAgICAgIFcxX2dyYWRbal0g
Kz0gYXJnc1tpXS5XMV9ncmFkW2pdOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgbWVhbl9y
YXRlID0gMCwgbWluX3JhdGUgPSAxZTEwOwotICAgICAgICBybXMgPSAocm1zLyhvdXREaW0qbmJT
YW1wbGVzKSk7Ci0gICAgICAgIGVycm9yX3JhdGVbMF0gPSAoZXJyb3JfcmF0ZVswXS8obmJTYW1w
bGVzKSk7Ci0gICAgICAgIGVycm9yX3JhdGVbMV0gPSAoZXJyb3JfcmF0ZVsxXS8obmJTYW1wbGVz
KSk7Ci0gICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVmICVmICglZiAlZikgIiwgZXJyb3JfcmF0
ZVswXSwgZXJyb3JfcmF0ZVsxXSwgcm1zLCBiZXN0X3Jtcyk7Ci0gICAgICAgIGlmIChybXMgPCBi
ZXN0X3JtcykKLSAgICAgICAgewotICAgICAgICAgICAgYmVzdF9ybXMgPSBybXM7Ci0gICAgICAg
ICAgICBmb3IgKGk9MDtpPFcwX3NpemU7aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGJlc3RfVzBbaV0gPSBXMFtpXTsKLSAgICAgICAgICAgICAgICBiZXN0X1cwX3JhdGVbaV0g
PSBXMF9yYXRlW2ldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChpPTA7aTxXMV9z
aXplO2krKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiZXN0X1cxW2ldID0gVzFb
aV07Ci0gICAgICAgICAgICAgICAgYmVzdF9XMV9yYXRlW2ldID0gVzFfcmF0ZVtpXTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNvdW50X3dvcnNlPTA7Ci0gICAgICAgICAgICBjb3VudF9y
ZXRyaWVzPTA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb3VudF93b3JzZSsrOwot
ICAgICAgICAgICAgaWYgKGNvdW50X3dvcnNlPjMwKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvdW50X3JldHJpZXMrKzsKLSAgICAgICAgICAgICAgICBjb3VudF93b3JzZT0wOwot
ICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8VzBfc2l6ZTtpKyspCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBXMFtpXSA9IGJlc3RfVzBbaV07Ci0gICAgICAgICAgICAg
ICAgICAgIGJlc3RfVzBfcmF0ZVtpXSAqPSAuNzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJl
c3RfVzBfcmF0ZVtpXTwxZS0xNSkgYmVzdF9XMF9yYXRlW2ldPTFlLTE1OwotICAgICAgICAgICAg
ICAgICAgICBXMF9yYXRlW2ldID0gYmVzdF9XMF9yYXRlW2ldOwotICAgICAgICAgICAgICAgICAg
ICBXMF9ncmFkW2ldID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9y
IChpPTA7aTxXMV9zaXplO2krKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIFcxW2ldID0gYmVzdF9XMVtpXTsKLSAgICAgICAgICAgICAgICAgICAgYmVzdF9XMV9yYXRl
W2ldICo9IC44OwotICAgICAgICAgICAgICAgICAgICBpZiAoYmVzdF9XMV9yYXRlW2ldPDFlLTE1
KSBiZXN0X1cxX3JhdGVbaV09MWUtMTU7Ci0gICAgICAgICAgICAgICAgICAgIFcxX3JhdGVbaV0g
PSBiZXN0X1cxX3JhdGVbaV07Ci0gICAgICAgICAgICAgICAgICAgIFcxX2dyYWRbaV0gPSAwOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAo
Y291bnRfcmV0cmllcz4xMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBmb3IgKGk9MDtp
PFcwX3NpemU7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoVzBfb2xkZ3JhZFtpXSpX
MF9ncmFkW2ldID4gMCkKLSAgICAgICAgICAgICAgICBXMF9yYXRlW2ldICo9IDEuMDE7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChXMF9vbGRncmFkW2ldKlcwX2dyYWRbaV0gPCAwKQotICAgICAgICAg
ICAgICAgIFcwX3JhdGVbaV0gKj0gLjk7Ci0gICAgICAgICAgICBtZWFuX3JhdGUgKz0gVzBfcmF0
ZVtpXTsKLSAgICAgICAgICAgIGlmIChXMF9yYXRlW2ldIDwgbWluX3JhdGUpCi0gICAgICAgICAg
ICAgICAgbWluX3JhdGUgPSBXMF9yYXRlW2ldOwotICAgICAgICAgICAgaWYgKFcwX3JhdGVbaV0g
PCAxZS0xNSkKLSAgICAgICAgICAgICAgICBXMF9yYXRlW2ldID0gMWUtMTU7Ci0gICAgICAgICAg
ICAvKmlmIChXMF9yYXRlW2ldID4gLjAxKQotICAgICAgICAgICAgICAgIFcwX3JhdGVbaV0gPSAu
MDE7Ki8KLSAgICAgICAgICAgIFcwX29sZGdyYWRbaV0gPSBXMF9ncmFkW2ldOwotICAgICAgICAg
ICAgVzBbaV0gKz0gVzBfZ3JhZFtpXSpXMF9yYXRlW2ldOwotICAgICAgICB9Ci0gICAgICAgIGZv
ciAoaT0wO2k8VzFfc2l6ZTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChXMV9vbGRn
cmFkW2ldKlcxX2dyYWRbaV0gPiAwKQotICAgICAgICAgICAgICAgIFcxX3JhdGVbaV0gKj0gMS4w
MTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFcxX29sZGdyYWRbaV0qVzFfZ3JhZFtpXSA8IDApCi0g
ICAgICAgICAgICAgICAgVzFfcmF0ZVtpXSAqPSAuOTsKLSAgICAgICAgICAgIG1lYW5fcmF0ZSAr
PSBXMV9yYXRlW2ldOwotICAgICAgICAgICAgaWYgKFcxX3JhdGVbaV0gPCBtaW5fcmF0ZSkKLSAg
ICAgICAgICAgICAgICBtaW5fcmF0ZSA9IFcxX3JhdGVbaV07Ci0gICAgICAgICAgICBpZiAoVzFf
cmF0ZVtpXSA8IDFlLTE1KQotICAgICAgICAgICAgICAgIFcxX3JhdGVbaV0gPSAxZS0xNTsKLSAg
ICAgICAgICAgIFcxX29sZGdyYWRbaV0gPSBXMV9ncmFkW2ldOwotICAgICAgICAgICAgVzFbaV0g
Kz0gVzFfZ3JhZFtpXSpXMV9yYXRlW2ldOwotICAgICAgICB9Ci0gICAgICAgIG1lYW5fcmF0ZSAv
PSAodG9wb1swXSsxKSp0b3BvWzFdICsgKHRvcG9bMV0rMSkqdG9wb1syXTsKLSAgICAgICAgZnBy
aW50ZiAoc3RkZXJyLCAiJWcgJWQiLCBtZWFuX3JhdGUsIGUpOwotICAgICAgICBpZiAoY291bnRf
cmV0cmllcykKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICVkIiwgY291bnRfcmV0cmll
cyk7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKLSAgICAgICAgaWYgKHN0b3BwZWQp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZm9yIChpPTA7aTxOQl9USFJFQURTO2kr
KykKLSAgICB7Ci0gICAgICAgIGFyZ3NbaV0uZG9uZSA9IDE7Ci0gICAgICAgIHNlbV9wb3N0KCZz
ZW1fYmVnaW5baV0pOwotICAgICAgICBwdGhyZWFkX2pvaW4odGhyZWFkW2ldLCBOVUxMKTsKLSAg
ICAgICAgZnByaW50ZiAoc3RkZXJyLCAiam9pbmVkICVkXG4iLCBpKTsKLSAgICB9Ci0gICAgZnJl
ZShXMF9ncmFkKTsKLSAgICBmcmVlKFcwX29sZGdyYWQpOwotICAgIGZyZWUoVzFfZ3JhZCk7Ci0g
ICAgZnJlZShXMV9vbGRncmFkKTsKLSAgICBmcmVlKFcwX3JhdGUpOwotICAgIGZyZWUoYmVzdF9X
MF9yYXRlKTsKLSAgICBmcmVlKFcxX3JhdGUpOwotICAgIGZyZWUoYmVzdF9XMV9yYXRlKTsKLSAg
ICByZXR1cm4gYmVzdF9ybXM7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK
LXsKLSAgICBpbnQgaSwgajsKLSAgICBpbnQgbmJJbnB1dHM7Ci0gICAgaW50IG5iT3V0cHV0czsK
LSAgICBpbnQgbmJIaWRkZW47Ci0gICAgaW50IG5iU2FtcGxlczsKLSAgICBpbnQgbmJFcG9jaDsK
LSAgICBpbnQgbmJSZWFsSW5wdXRzOwotICAgIHVuc2lnbmVkIGludCBzZWVkOwotICAgIGludCBy
ZXQ7Ci0gICAgZmxvYXQgcm1zOwotICAgIGZsb2F0ICppbnB1dHM7Ci0gICAgZmxvYXQgKm91dHB1
dHM7Ci0gICAgaWYgKGFyZ2MhPTYpCi0gICAgewotICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJ1
c2FnZTogbWxwX3RyYWluIDxpbnB1dHM+IDxoaWRkZW4+IDxvdXRwdXRzPiA8bmIgc2FtcGxlcz4g
PG5iIGVwb2NoPlxuIik7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICBuYklucHV0cyA9
IGF0b2koYXJndlsxXSk7Ci0gICAgbmJIaWRkZW4gPSBhdG9pKGFyZ3ZbMl0pOwotICAgIG5iT3V0
cHV0cyA9IGF0b2koYXJndlszXSk7Ci0gICAgbmJTYW1wbGVzID0gYXRvaShhcmd2WzRdKTsKLSAg
ICBuYkVwb2NoID0gYXRvaShhcmd2WzVdKTsKLSAgICBuYlJlYWxJbnB1dHMgPSBuYklucHV0czsK
LSAgICBpbnB1dHMgPSBtYWxsb2MobmJJbnB1dHMqbmJTYW1wbGVzKnNpemVvZigqaW5wdXRzKSk7
Ci0gICAgb3V0cHV0cyA9IG1hbGxvYyhuYk91dHB1dHMqbmJTYW1wbGVzKnNpemVvZigqb3V0cHV0
cykpOwotCi0gICAgc2VlZCA9IHRpbWUoTlVMTCk7Ci0gICAgLypzZWVkID0gMTQ1MjIwOTA0MDsq
LwotICAgIGZwcmludGYgKHN0ZGVyciwgIlNlZWQgaXMgJXVcbiIsIHNlZWQpOwotICAgIHNyYW5k
KHNlZWQpOwotICAgIGJ1aWxkX3RhbnNpZ190YWJsZSgpOwotICAgIHNpZ25hbChTSUdURVJNLCBo
YW5kbGVyKTsKLSAgICBzaWduYWwoU0lHSU5ULCBoYW5kbGVyKTsKLSAgICBzaWduYWwoU0lHSFVQ
LCBoYW5kbGVyKTsKLSAgICBmb3IgKGk9MDtpPG5iU2FtcGxlcztpKyspCi0gICAgewotICAgICAg
ICBmb3IgKGo9MDtqPG5iUmVhbElucHV0cztqKyspCi0gICAgICAgICAgICByZXQgPSBzY2FuZigi
ICVmIiwgJmlucHV0c1tpKm5iSW5wdXRzK2pdKTsKLSAgICAgICAgZm9yIChqPTA7ajxuYk91dHB1
dHM7aisrKQotICAgICAgICAgICAgcmV0ID0gc2NhbmYoIiAlZiIsICZvdXRwdXRzW2kqbmJPdXRw
dXRzK2pdKTsKLSAgICAgICAgaWYgKGZlb2Yoc3RkaW4pKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBuYlNhbXBsZXMgPSBpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgaW50IHRvcG9bM10gPSB7bmJJbnB1dHMsIG5iSGlkZGVuLCBuYk91dHB1dHN9OwotICAgIE1M
UFRyYWluICpuZXQ7Ci0KLSAgICBmcHJpbnRmIChzdGRlcnIsICJHb3QgJWQgc2FtcGxlc1xuIiwg
bmJTYW1wbGVzKTsKLSAgICBuZXQgPSBtbHBfaW5pdCh0b3BvLCAzLCBpbnB1dHMsIG91dHB1dHMs
IG5iU2FtcGxlcyk7Ci0gICAgcm1zID0gbWxwX3RyYWluX2JhY2twcm9wKG5ldCwgaW5wdXRzLCBv
dXRwdXRzLCBuYlNhbXBsZXMsIG5iRXBvY2gsIDEpOwotICAgIHByaW50ZiAoIiNpZmRlZiBIQVZF
X0NPTkZJR19IXG4iKTsKLSAgICBwcmludGYgKCIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiIpOwot
ICAgIHByaW50ZiAoIiNlbmRpZlxuXG4iKTsKLSAgICBwcmludGYgKCIjaW5jbHVkZSBcIm1scC5o
XCJcblxuIik7Ci0gICAgcHJpbnRmICgiLyogUk1TIGVycm9yIHdhcyAlZiwgc2VlZCB3YXMgJXUg
Ki9cblxuIiwgcm1zLCBzZWVkKTsKLSAgICBwcmludGYgKCJzdGF0aWMgY29uc3QgZmxvYXQgd2Vp
Z2h0c1slZF0gPSB7XG4iLCAodG9wb1swXSsxKSp0b3BvWzFdICsgKHRvcG9bMV0rMSkqdG9wb1sy
XSk7Ci0gICAgcHJpbnRmICgiXG4vKiBoaWRkZW4gbGF5ZXIgKi9cbiIpOwotICAgIGZvciAoaT0w
O2k8KHRvcG9bMF0rMSkqdG9wb1sxXTtpKyspCi0gICAgewotICAgICAgICBwcmludGYgKCIlZ2Ys
IiwgbmV0LT53ZWlnaHRzWzBdW2ldKTsKLSAgICAgICAgaWYgKGklNT09NCkKLSAgICAgICAgICAg
IHByaW50ZigiXG4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIgIik7Ci0g
ICAgfQotICAgIHByaW50ZiAoIlxuLyogb3V0cHV0IGxheWVyICovXG4iKTsKLSAgICBmb3IgKGk9
MDtpPCh0b3BvWzFdKzEpKnRvcG9bMl07aSsrKQotICAgIHsKLSAgICAgICAgcHJpbnRmICgiJWdm
LCIsIG5ldC0+d2VpZ2h0c1sxXVtpXSk7Ci0gICAgICAgIGlmIChpJTU9PTQpCi0gICAgICAgICAg
ICBwcmludGYoIlxuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiICIpOwot
ICAgIH0KLSAgICBwcmludGYgKCJ9O1xuXG4iKTsKLSAgICBwcmludGYgKCJzdGF0aWMgY29uc3Qg
aW50IHRvcG9bM10gPSB7JWQsICVkLCAlZH07XG5cbiIsIHRvcG9bMF0sIHRvcG9bMV0sIHRvcG9b
Ml0pOwotICAgIHByaW50ZiAoImNvbnN0IE1MUCBuZXQgPSB7XG4iKTsKLSAgICBwcmludGYgKCIg
ICAgMyxcbiIpOwotICAgIHByaW50ZiAoIiAgICB0b3BvLFxuIik7Ci0gICAgcHJpbnRmICgiICAg
IHdlaWdodHNcbn07XG4iKTsKLSAgICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL21scF90
cmFpbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3NyYy9zcmMvbWxwX3RyYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5
NDA0MTU4NWEzZjljYjY0MzM0OGE5OTIxNDVhYmNlMDZmZTdlYmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvbWxwX3RyYWluLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4NiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMSBPY3Rhc2ljIElu
Yy4KLSAgIFdyaXR0ZW4gYnkgSmVhbi1NYXJjIFZhbGluICovCi0vKgotICAgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
ICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAgIGFyZSBtZXQ6Ci0KLSAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotICAgLSBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICAgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICAgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SCi0gICBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RgotICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcKLSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZuZGVmIF9N
TFBfVFJBSU5fSF8KLSNkZWZpbmUgX01MUF9UUkFJTl9IXwotCi0jaW5jbHVkZSA8bWF0aC5oPgot
I2luY2x1ZGUgPHN0ZGxpYi5oPgotCi1kb3VibGUgdGFuc2lnX3RhYmxlWzUwMV07Ci1zdGF0aWMg
aW5saW5lIGRvdWJsZSB0YW5zaWdfZG91YmxlKGRvdWJsZSB4KQotewotICAgIHJldHVybiAyLi8o
MS4rZXhwKC0yLip4KSkgLSAxLjsKLX0KLXN0YXRpYyBpbmxpbmUgdm9pZCBidWlsZF90YW5zaWdf
dGFibGUodm9pZCkKLXsKLSAgICBpbnQgaTsKLSAgICBmb3IgKGk9MDtpPDUwMTtpKyspCi0gICAg
ICAgIHRhbnNpZ190YWJsZVtpXSA9IHRhbnNpZ19kb3VibGUoLjA0KihpLTI1MCkpOwotfQotCi1z
dGF0aWMgaW5saW5lIGRvdWJsZSB0YW5zaWdfYXBwcm94KGRvdWJsZSB4KQotewotICAgIGludCBp
OwotICAgIGRvdWJsZSB5LCBkeTsKLSAgICBpZiAoeD49MTApCi0gICAgICAgIHJldHVybiAxOwot
ICAgIGlmICh4PD0tMTApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpID0gbHJpbnQoMjUqeCk7
Ci0gICAgeCAtPSAuMDQqaTsKLSAgICB5ID0gdGFuc2lnX3RhYmxlWzI1MCtpXTsKLSAgICBkeSA9
IDEteSp5OwotICAgIHkgPSB5ICsgeCpkeSooMSAtIHkqeCk7Ci0gICAgcmV0dXJuIHk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgZmxvYXQgcmFuZG4oZmxvYXQgc2QpCi17Ci0gICBmbG9hdCBVMSwgVTIs
IFMsIHg7Ci0gICBkbyB7Ci0gICAgICBVMSA9ICgoZmxvYXQpcmFuZCgpKS9SQU5EX01BWDsKLSAg
ICAgIFUyID0gKChmbG9hdClyYW5kKCkpL1JBTkRfTUFYOwotICAgICAgVTEgPSAyKlUxLTE7Ci0g
ICAgICBVMiA9IDIqVTItMTsKLSAgICAgIFMgPSBVMSpVMSArIFUyKlUyOwotICAgfSB3aGlsZSAo
UyA+PSAxIHx8IFMgPT0gMC4wZik7Ci0gICB4ID0gc2Qqc3FydCgtMiAqIGxvZyhTKSAvIFMpICog
VTE7Ci0gICByZXR1cm4geDsKLX0KLQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50IGxheWVy
czsKLSAgICBpbnQgKnRvcG87Ci0gICAgZG91YmxlICoqd2VpZ2h0czsKLSAgICBkb3VibGUgKipi
ZXN0X3dlaWdodHM7Ci0gICAgZG91YmxlICppbl9yYXRlOwotfSBNTFBUcmFpbjsKLQotCi0jZW5k
aWYgLyogX01MUF9UUkFJTl9IXyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1cy5jIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1cy5j
CmluZGV4IGNkYmQxM2ExMWNkNzhkNDcwYTk4MTU0ZmMxZWExZThhNmMzZGNlZjMuLjUzOGI1ZWE3
NGViZWU3ZGZhZTJkYzg5ZTBiYzkwMTJhMWUyNGZmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXMuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NyYy9vcHVzLmMKQEAgLTI1Miw3ICsyNTIsNyBAQCBpbnQgb3B1c19wYWNrZXRfcGFyc2Vf
aW1wbChjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBvcHVzX2ludDMyIGxlbiwKICAgICAgIC8q
IE51bWJlciBvZiBmcmFtZXMgZW5jb2RlZCBpbiBiaXRzIDAgdG8gNSAqLwogICAgICAgY2ggPSAq
ZGF0YSsrOwogICAgICAgY291bnQgPSBjaCYweDNGOwotICAgICAgaWYgKGNvdW50IDw9IDAgfHwg
ZnJhbWVzaXplKmNvdW50ID4gNTc2MCkKKyAgICAgIGlmIChjb3VudCA8PSAwIHx8IGZyYW1lc2l6
ZSoob3B1c19pbnQzMiljb3VudCA+IDU3NjApCiAgICAgICAgICByZXR1cm4gT1BVU19JTlZBTElE
X1BBQ0tFVDsKICAgICAgIGxlbi0tOwogICAgICAgLyogUGFkZGluZyBmbGFnIGlzIGJpdCA2ICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L29wdXMvc3JjL3NyYy9vcHVzX2NvbXBhcmUuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfY29tcGFyZS5jCmluZGV4
IDk0OGZlZWEyMDM4NTJmMGIzM2JhNjFmNGE1Njk0OWY4ZDI1YTFmMzcuLjE5NTZlMDhmYTVjZWUw
ZTliODdlNWYyYWI1MjE3ZTI0ZWFjOThkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfY29tcGFyZS5j
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc3JjL29wdXNfY29tcGFyZS5jCkBAIC0yMzgsMTUgKzIzOCwxMSBAQCBpbnQgbWFpbihp
bnQgX2FyZ2MsY29uc3QgY2hhciAqKl9hcmd2KXsKICAgaWYoeGxlbmd0aCE9eWxlbmd0aCpkb3du
c2FtcGxlKXsKICAgICBmcHJpbnRmKHN0ZGVyciwiU2FtcGxlIGNvdW50cyBkbyBub3QgbWF0Y2gg
KCVsdSE9JWx1KS5cbiIsCiAgICAgICh1bnNpZ25lZCBsb25nKXhsZW5ndGgsKHVuc2lnbmVkIGxv
bmcpeWxlbmd0aCpkb3duc2FtcGxlKTsKLSAgICBmcmVlKHgpOwotICAgIGZyZWUoeSk7CiAgICAg
cmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgfQogICBpZih4bGVuZ3RoPFRFU1RfV0lOX1NJWkUpewog
ICAgIGZwcmludGYoc3RkZXJyLCJJbnN1ZmZpY2llbnQgc2FtcGxlIGRhdGEgKCVsdTwlaSkuXG4i
LAogICAgICAodW5zaWduZWQgbG9uZyl4bGVuZ3RoLFRFU1RfV0lOX1NJWkUpOwotICAgIGZyZWUo
eCk7Ci0gICAgZnJlZSh5KTsKICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CiAgIG5mcmFt
ZXM9KHhsZW5ndGgtVEVTVF9XSU5fU0laRStURVNUX1dJTl9TVEVQKS9URVNUX1dJTl9TVEVQOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zcmMvb3B1c19kZWNvZGVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX2RlY29kZXIuYwppbmRleCAx
NDlhZTdmMjFkOGJiNDE2N2ZjYzkyNjJkMzJkNDM5M2IzMTlmNDYwLi45MTEzNjM4YTAwMGJhYjJh
MDE5NzdiODFjOGZkN2ZiMDMyODE3NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX2RlY29kZXIuYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NyYy9vcHVzX2RlY29kZXIuYwpAQCAtNzgsNiArNzgsMjYgQEAgc3RydWN0IE9wdXNEZWNv
ZGVyIHsKICAgIG9wdXNfdWludDMyICByYW5nZUZpbmFsOwogfTsKIAorI2lmIGRlZmluZWQoRU5B
QkxFX0hBUkRFTklORykgfHwgZGVmaW5lZChFTkFCTEVfQVNTRVJUSU9OUykKK3N0YXRpYyB2b2lk
IHZhbGlkYXRlX29wdXNfZGVjb2RlcihPcHVzRGVjb2RlciAqc3QpCit7CisgICBjZWx0X2Fzc2Vy
dChzdC0+Y2hhbm5lbHMgPT0gMSB8fCBzdC0+Y2hhbm5lbHMgPT0gMik7CisgICBjZWx0X2Fzc2Vy
dChzdC0+RnMgPT0gNDgwMDAgfHwgc3QtPkZzID09IDI0MDAwIHx8IHN0LT5GcyA9PSAxNjAwMCB8
fCBzdC0+RnMgPT0gMTIwMDAgfHwgc3QtPkZzID09IDgwMDApOworICAgY2VsdF9hc3NlcnQoc3Qt
PkRlY0NvbnRyb2wuQVBJX3NhbXBsZVJhdGUgPT0gc3QtPkZzKTsKKyAgIGNlbHRfYXNzZXJ0KHN0
LT5EZWNDb250cm9sLmludGVybmFsU2FtcGxlUmF0ZSA9PSAwIHx8IHN0LT5EZWNDb250cm9sLmlu
dGVybmFsU2FtcGxlUmF0ZSA9PSAxNjAwMCB8fCBzdC0+RGVjQ29udHJvbC5pbnRlcm5hbFNhbXBs
ZVJhdGUgPT0gMTIwMDAgfHwgc3QtPkRlY0NvbnRyb2wuaW50ZXJuYWxTYW1wbGVSYXRlID09IDgw
MDApOworICAgY2VsdF9hc3NlcnQoc3QtPkRlY0NvbnRyb2wubkNoYW5uZWxzQVBJID09IHN0LT5j
aGFubmVscyk7CisgICBjZWx0X2Fzc2VydChzdC0+RGVjQ29udHJvbC5uQ2hhbm5lbHNJbnRlcm5h
bCA9PSAwIHx8IHN0LT5EZWNDb250cm9sLm5DaGFubmVsc0ludGVybmFsID09IDEgfHwgc3QtPkRl
Y0NvbnRyb2wubkNoYW5uZWxzSW50ZXJuYWwgPT0gMik7CisgICBjZWx0X2Fzc2VydChzdC0+RGVj
Q29udHJvbC5wYXlsb2FkU2l6ZV9tcyA9PSAwIHx8IHN0LT5EZWNDb250cm9sLnBheWxvYWRTaXpl
X21zID09IDEwIHx8IHN0LT5EZWNDb250cm9sLnBheWxvYWRTaXplX21zID09IDIwIHx8IHN0LT5E
ZWNDb250cm9sLnBheWxvYWRTaXplX21zID09IDQwIHx8IHN0LT5EZWNDb250cm9sLnBheWxvYWRT
aXplX21zID09IDYwKTsKKyNpZmRlZiBPUFVTX0FSQ0hNQVNLCisgICBjZWx0X2Fzc2VydChzdC0+
YXJjaCA+PSAwKTsKKyAgIGNlbHRfYXNzZXJ0KHN0LT5hcmNoIDw9IE9QVVNfQVJDSE1BU0spOwor
I2VuZGlmCisgICBjZWx0X2Fzc2VydChzdC0+c3RyZWFtX2NoYW5uZWxzID09IDEgfHwgc3QtPnN0
cmVhbV9jaGFubmVscyA9PSAyKTsKK30KKyNkZWZpbmUgVkFMSURBVEVfT1BVU19ERUNPREVSKHN0
KSB2YWxpZGF0ZV9vcHVzX2RlY29kZXIoc3QpCisjZWxzZQorI2RlZmluZSBWQUxJREFURV9PUFVT
X0RFQ09ERVIoc3QpCisjZW5kaWYKIAogaW50IG9wdXNfZGVjb2Rlcl9nZXRfc2l6ZShpbnQgY2hh
bm5lbHMpCiB7CkBAIC0xMDQsNyArMTI0LDcgQEAgaW50IG9wdXNfZGVjb2Rlcl9pbml0KE9wdXNE
ZWNvZGVyICpzdCwgb3B1c19pbnQzMiBGcywgaW50IGNoYW5uZWxzKQogICAgICAgcmV0dXJuIE9Q
VVNfQkFEX0FSRzsKIAogICAgT1BVU19DTEVBUigoY2hhciopc3QsIG9wdXNfZGVjb2Rlcl9nZXRf
c2l6ZShjaGFubmVscykpOwotICAgLyogSW5pdGlhbGl6ZSBTSUxLIGVuY29kZXIgKi8KKyAgIC8q
IEluaXRpYWxpemUgU0lMSyBkZWNvZGVyICovCiAgICByZXQgPSBzaWxrX0dldF9EZWNvZGVyX1Np
emUoJnNpbGtEZWNTaXplQnl0ZXMpOwogICAgaWYgKHJldCkKICAgICAgIHJldHVybiBPUFVTX0lO
VEVSTkFMX0VSUk9SOwpAQCAtMjE3LDYgKzIzNyw3IEBAIHN0YXRpYyBpbnQgb3B1c19kZWNvZGVf
ZnJhbWUoT3B1c0RlY29kZXIgKnN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAogCiAgICBp
bnQgYXVkaW9zaXplOwogICAgaW50IG1vZGU7CisgICBpbnQgYmFuZHdpZHRoOwogICAgaW50IHRy
YW5zaXRpb249MDsKICAgIGludCBzdGFydF9iYW5kOwogICAgaW50IHJlZHVuZGFuY3k9MDsKQEAg
LTI1MywxMCArMjc0LDEyIEBAIHN0YXRpYyBpbnQgb3B1c19kZWNvZGVfZnJhbWUoT3B1c0RlY29k
ZXIgKnN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgewogICAgICAgYXVkaW9zaXpl
ID0gc3QtPmZyYW1lX3NpemU7CiAgICAgICBtb2RlID0gc3QtPm1vZGU7CisgICAgICBiYW5kd2lk
dGggPSBzdC0+YmFuZHdpZHRoOwogICAgICAgZWNfZGVjX2luaXQoJmRlYywodW5zaWduZWQgY2hh
ciopZGF0YSxsZW4pOwogICAgfSBlbHNlIHsKICAgICAgIGF1ZGlvc2l6ZSA9IGZyYW1lX3NpemU7
CiAgICAgICBtb2RlID0gc3QtPnByZXZfbW9kZTsKKyAgICAgIGJhbmR3aWR0aCA9IDA7CiAKICAg
ICAgIGlmIChtb2RlID09IDApCiAgICAgICB7CkBAIC0zNTUsMTUgKzM3OCwxNSBAQCBzdGF0aWMg
aW50IG9wdXNfZGVjb2RlX2ZyYW1lKE9wdXNEZWNvZGVyICpzdCwgY29uc3QgdW5zaWduZWQgY2hh
ciAqZGF0YSwKICAgICAgIHsKICAgICAgICAgc3QtPkRlY0NvbnRyb2wubkNoYW5uZWxzSW50ZXJu
YWwgPSBzdC0+c3RyZWFtX2NoYW5uZWxzOwogICAgICAgICBpZiggbW9kZSA9PSBNT0RFX1NJTEtf
T05MWSApIHsKLSAgICAgICAgICAgaWYoIHN0LT5iYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhf
TkFSUk9XQkFORCApIHsKKyAgICAgICAgICAgaWYoIGJhbmR3aWR0aCA9PSBPUFVTX0JBTkRXSURU
SF9OQVJST1dCQU5EICkgewogICAgICAgICAgICAgICBzdC0+RGVjQ29udHJvbC5pbnRlcm5hbFNh
bXBsZVJhdGUgPSA4MDAwOwotICAgICAgICAgICB9IGVsc2UgaWYoIHN0LT5iYW5kd2lkdGggPT0g
T1BVU19CQU5EV0lEVEhfTUVESVVNQkFORCApIHsKKyAgICAgICAgICAgfSBlbHNlIGlmKCBiYW5k
d2lkdGggPT0gT1BVU19CQU5EV0lEVEhfTUVESVVNQkFORCApIHsKICAgICAgICAgICAgICAgc3Qt
PkRlY0NvbnRyb2wuaW50ZXJuYWxTYW1wbGVSYXRlID0gMTIwMDA7Ci0gICAgICAgICAgIH0gZWxz
ZSBpZiggc3QtPmJhbmR3aWR0aCA9PSBPUFVTX0JBTkRXSURUSF9XSURFQkFORCApIHsKKyAgICAg
ICAgICAgfSBlbHNlIGlmKCBiYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhfV0lERUJBTkQgKSB7
CiAgICAgICAgICAgICAgIHN0LT5EZWNDb250cm9sLmludGVybmFsU2FtcGxlUmF0ZSA9IDE2MDAw
OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICBzdC0+RGVjQ29udHJvbC5pbnRl
cm5hbFNhbXBsZVJhdGUgPSAxNjAwMDsKLSAgICAgICAgICAgICAgc2lsa19hc3NlcnQoIDAgKTsK
KyAgICAgICAgICAgICAgY2VsdF9hc3NlcnQoIDAgKTsKICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAvKiBIeWJyaWQgbW9kZSAqLwpAQCAtNDI3LDEwICs0NTAsMjYg
QEAgc3RhdGljIGludCBvcHVzX2RlY29kZV9mcmFtZShPcHVzRGVjb2RlciAqc3QsIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKmRhdGEsCiAgICBpZiAobW9kZSAhPSBNT0RFX0NFTFRfT05MWSkKICAgICAg
IHN0YXJ0X2JhbmQgPSAxNzsKIAorICAgaWYgKHJlZHVuZGFuY3kpCisgICB7CisgICAgICB0cmFu
c2l0aW9uID0gMDsKKyAgICAgIHBjbV90cmFuc2l0aW9uX3NpbGtfc2l6ZT1BTExPQ19OT05FOwor
ICAgfQorCisgICBBTExPQyhwY21fdHJhbnNpdGlvbl9zaWxrLCBwY21fdHJhbnNpdGlvbl9zaWxr
X3NpemUsIG9wdXNfdmFsMTYpOworCisgICBpZiAodHJhbnNpdGlvbiAmJiBtb2RlICE9IE1PREVf
Q0VMVF9PTkxZKQorICAgeworICAgICAgcGNtX3RyYW5zaXRpb24gPSBwY21fdHJhbnNpdGlvbl9z
aWxrOworICAgICAgb3B1c19kZWNvZGVfZnJhbWUoc3QsIE5VTEwsIDAsIHBjbV90cmFuc2l0aW9u
LCBJTUlOKEY1LCBhdWRpb3NpemUpLCAwKTsKKyAgIH0KKworCisgICBpZiAoYmFuZHdpZHRoKQog
ICAgewogICAgICAgaW50IGVuZGJhbmQ9MjE7CiAKLSAgICAgIHN3aXRjaChzdC0+YmFuZHdpZHRo
KQorICAgICAgc3dpdGNoKGJhbmR3aWR0aCkKICAgICAgIHsKICAgICAgIGNhc2UgT1BVU19CQU5E
V0lEVEhfTkFSUk9XQkFORDoKICAgICAgICAgIGVuZGJhbmQgPSAxMzsKQEAgLTQ0NSwyNCArNDg0
LDEzIEBAIHN0YXRpYyBpbnQgb3B1c19kZWNvZGVfZnJhbWUoT3B1c0RlY29kZXIgKnN0LCBjb25z
dCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgICAgY2FzZSBPUFVTX0JBTkRXSURUSF9GVUxMQkFO
RDoKICAgICAgICAgIGVuZGJhbmQgPSAyMTsKICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgIGNlbHRfYXNzZXJ0KDApOworICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0g
ICAgICBjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX1NFVF9FTkRfQkFORChlbmRiYW5k
KSk7Ci0gICAgICBjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX1NFVF9DSEFOTkVMUyhz
dC0+c3RyZWFtX2NoYW5uZWxzKSk7Ci0gICB9Ci0KLSAgIGlmIChyZWR1bmRhbmN5KQotICAgewot
ICAgICAgdHJhbnNpdGlvbiA9IDA7Ci0gICAgICBwY21fdHJhbnNpdGlvbl9zaWxrX3NpemU9QUxM
T0NfTk9ORTsKLSAgIH0KLQotICAgQUxMT0MocGNtX3RyYW5zaXRpb25fc2lsaywgcGNtX3RyYW5z
aXRpb25fc2lsa19zaXplLCBvcHVzX3ZhbDE2KTsKLQotICAgaWYgKHRyYW5zaXRpb24gJiYgbW9k
ZSAhPSBNT0RFX0NFTFRfT05MWSkKLSAgIHsKLSAgICAgIHBjbV90cmFuc2l0aW9uID0gcGNtX3Ry
YW5zaXRpb25fc2lsazsKLSAgICAgIG9wdXNfZGVjb2RlX2ZyYW1lKHN0LCBOVUxMLCAwLCBwY21f
dHJhbnNpdGlvbiwgSU1JTihGNSwgYXVkaW9zaXplKSwgMCk7CisgICAgICBNVVNUX1NVQ0NFRUQo
Y2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRfRU5EX0JBTkQoZW5kYmFuZCkpKTsK
ICAgIH0KKyAgIE1VU1RfU1VDQ0VFRChjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX1NF
VF9DSEFOTkVMUyhzdC0+c3RyZWFtX2NoYW5uZWxzKSkpOwogCiAgICAvKiBPbmx5IGFsbG9jYXRp
b24gbWVtb3J5IGZvciByZWR1bmRhbmN5IGlmL3doZW4gbmVlZGVkICovCiAgICByZWR1bmRhbnRf
YXVkaW9fc2l6ZSA9IHJlZHVuZGFuY3kgPyBGNSpzdC0+Y2hhbm5lbHMgOiBBTExPQ19OT05FOwpA
QCAtNDcxLDIxICs0OTksMjEgQEAgc3RhdGljIGludCBvcHVzX2RlY29kZV9mcmFtZShPcHVzRGVj
b2RlciAqc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCiAgICAvKiA1IG1zIHJlZHVuZGFu
dCBmcmFtZSBmb3IgQ0VMVC0+U0lMSyovCiAgICBpZiAocmVkdW5kYW5jeSAmJiBjZWx0X3RvX3Np
bGspCiAgICB7Ci0gICAgICBjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVjLCBDRUxUX1NFVF9TVEFS
VF9CQU5EKDApKTsKKyAgICAgIE1VU1RfU1VDQ0VFRChjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVj
LCBDRUxUX1NFVF9TVEFSVF9CQU5EKDApKSk7CiAgICAgICBjZWx0X2RlY29kZV93aXRoX2VjKGNl
bHRfZGVjLCBkYXRhK2xlbiwgcmVkdW5kYW5jeV9ieXRlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVkdW5kYW50X2F1ZGlvLCBGNSwgTlVMTCwgMCk7Ci0gICAgICBjZWx0X2RlY29kZXJf
Y3RsKGNlbHRfZGVjLCBPUFVTX0dFVF9GSU5BTF9SQU5HRSgmcmVkdW5kYW50X3JuZykpOworICAg
ICAgTVVTVF9TVUNDRUVEKGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfR0VUX0ZJTkFM
X1JBTkdFKCZyZWR1bmRhbnRfcm5nKSkpOwogICAgfQogCiAgICAvKiBNVVNUIGJlIGFmdGVyIFBM
QyAqLwotICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRfU1RBUlRfQkFORChz
dGFydF9iYW5kKSk7CisgICBNVVNUX1NVQ0NFRUQoY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywg
Q0VMVF9TRVRfU1RBUlRfQkFORChzdGFydF9iYW5kKSkpOwogCiAgICBpZiAobW9kZSAhPSBNT0RF
X1NJTEtfT05MWSkKICAgIHsKICAgICAgIGludCBjZWx0X2ZyYW1lX3NpemUgPSBJTUlOKEYyMCwg
ZnJhbWVfc2l6ZSk7CiAgICAgICAvKiBNYWtlIHN1cmUgdG8gZGlzY2FyZCBhbnkgcHJldmlvdXMg
Q0VMVCBzdGF0ZSAqLwogICAgICAgaWYgKG1vZGUgIT0gc3QtPnByZXZfbW9kZSAmJiBzdC0+cHJl
dl9tb2RlID4gMCAmJiAhc3QtPnByZXZfcmVkdW5kYW5jeSkKLSAgICAgICAgIGNlbHRfZGVjb2Rl
cl9jdGwoY2VsdF9kZWMsIE9QVVNfUkVTRVRfU1RBVEUpOworICAgICAgICAgTVVTVF9TVUNDRUVE
KGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfUkVTRVRfU1RBVEUpKTsKICAgICAgIC8q
IERlY29kZSBDRUxUICovCiAgICAgICBjZWx0X3JldCA9IGNlbHRfZGVjb2RlX3dpdGhfZWMoY2Vs
dF9kZWMsIGRlY29kZV9mZWMgPyBOVUxMIDogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZW4sIHBjbSwgY2VsdF9mcmFtZV9zaXplLCAmZGVjLCBjZWx0X2FjY3Vt
KTsKQEAgLTUwMCw3ICs1MjgsNyBAQCBzdGF0aWMgaW50IG9wdXNfZGVjb2RlX2ZyYW1lKE9wdXNE
ZWNvZGVyICpzdCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKICAgICAgICAgIGRvIGEgZmFk
ZS1vdXQgYnkgZGVjb2RpbmcgYSBzaWxlbmNlIGZyYW1lICovCiAgICAgICBpZiAoc3QtPnByZXZf
bW9kZSA9PSBNT0RFX0hZQlJJRCAmJiAhKHJlZHVuZGFuY3kgJiYgY2VsdF90b19zaWxrICYmIHN0
LT5wcmV2X3JlZHVuZGFuY3kpICkKICAgICAgIHsKLSAgICAgICAgIGNlbHRfZGVjb2Rlcl9jdGwo
Y2VsdF9kZWMsIENFTFRfU0VUX1NUQVJUX0JBTkQoMCkpOworICAgICAgICAgTVVTVF9TVUNDRUVE
KGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENFTFRfU0VUX1NUQVJUX0JBTkQoMCkpKTsKICAg
ICAgICAgIGNlbHRfZGVjb2RlX3dpdGhfZWMoY2VsdF9kZWMsIHNpbGVuY2UsIDIsIHBjbSwgRjJf
NSwgTlVMTCwgY2VsdF9hY2N1bSk7CiAgICAgICB9CiAgICB9CkBAIC01MTgsMTggKzU0NiwxOCBA
QCBzdGF0aWMgaW50IG9wdXNfZGVjb2RlX2ZyYW1lKE9wdXNEZWNvZGVyICpzdCwgY29uc3QgdW5z
aWduZWQgY2hhciAqZGF0YSwKIAogICAgewogICAgICAgY29uc3QgQ0VMVE1vZGUgKmNlbHRfbW9k
ZTsKLSAgICAgIGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENFTFRfR0VUX01PREUoJmNlbHRf
bW9kZSkpOworICAgICAgTVVTVF9TVUNDRUVEKGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENF
TFRfR0VUX01PREUoJmNlbHRfbW9kZSkpKTsKICAgICAgIHdpbmRvdyA9IGNlbHRfbW9kZS0+d2lu
ZG93OwogICAgfQogCiAgICAvKiA1IG1zIHJlZHVuZGFudCBmcmFtZSBmb3IgU0lMSy0+Q0VMVCAq
LwogICAgaWYgKHJlZHVuZGFuY3kgJiYgIWNlbHRfdG9fc2lsaykKICAgIHsKLSAgICAgIGNlbHRf
ZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfUkVTRVRfU1RBVEUpOwotICAgICAgY2VsdF9kZWNv
ZGVyX2N0bChjZWx0X2RlYywgQ0VMVF9TRVRfU1RBUlRfQkFORCgwKSk7CisgICAgICBNVVNUX1NV
Q0NFRUQoY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgT1BVU19SRVNFVF9TVEFURSkpOworICAg
ICAgTVVTVF9TVUNDRUVEKGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIENFTFRfU0VUX1NUQVJU
X0JBTkQoMCkpKTsKIAogICAgICAgY2VsdF9kZWNvZGVfd2l0aF9lYyhjZWx0X2RlYywgZGF0YSts
ZW4sIHJlZHVuZGFuY3lfYnl0ZXMsIHJlZHVuZGFudF9hdWRpbywgRjUsIE5VTEwsIDApOwotICAg
ICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgT1BVU19HRVRfRklOQUxfUkFOR0UoJnJlZHVu
ZGFudF9ybmcpKTsKKyAgICAgIE1VU1RfU1VDQ0VFRChjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVj
LCBPUFVTX0dFVF9GSU5BTF9SQU5HRSgmcmVkdW5kYW50X3JuZykpKTsKICAgICAgIHNtb290aF9m
YWRlKHBjbStzdC0+Y2hhbm5lbHMqKGZyYW1lX3NpemUtRjJfNSksIHJlZHVuZGFudF9hdWRpbytz
dC0+Y2hhbm5lbHMqRjJfNSwKICAgICAgICAgICAgICAgICAgIHBjbStzdC0+Y2hhbm5lbHMqKGZy
YW1lX3NpemUtRjJfNSksIEYyXzUsIHN0LT5jaGFubmVscywgd2luZG93LCBzdC0+RnMpOwogICAg
fQpAQCAtNjA1LDYgKzYzMyw3IEBAIGludCBvcHVzX2RlY29kZV9uYXRpdmUoT3B1c0RlY29kZXIg
KnN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgaW50IHBhY2tldF9mcmFtZV9zaXpl
LCBwYWNrZXRfYmFuZHdpZHRoLCBwYWNrZXRfbW9kZSwgcGFja2V0X3N0cmVhbV9jaGFubmVsczsK
ICAgIC8qIDQ4IHggMi41IG1zID0gMTIwIG1zICovCiAgICBvcHVzX2ludDE2IHNpemVbNDhdOwor
ICAgVkFMSURBVEVfT1BVU19ERUNPREVSKHN0KTsKICAgIGlmIChkZWNvZGVfZmVjPDAgfHwgZGVj
b2RlX2ZlYz4xKQogICAgICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKICAgIC8qIEZvciBGRUMvUExD
LCBmcmFtZV9zaXplIGhhcyB0byBiZSB0byBoYXZlIGEgbXVsdGlwbGUgb2YgMi41IG1zICovCkBA
IC03NDAsNiArNzY5LDcgQEAgaW50IG9wdXNfZGVjb2RlX2Zsb2F0KE9wdXNEZWNvZGVyICpzdCwg
Y29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBP
UFVTX0lOVkFMSURfUEFDS0VUOwogICAgfQorICAgY2VsdF9hc3NlcnQoc3QtPmNoYW5uZWxzID09
IDEgfHwgc3QtPmNoYW5uZWxzID09IDIpOwogICAgQUxMT0Mob3V0LCBmcmFtZV9zaXplKnN0LT5j
aGFubmVscywgb3B1c19pbnQxNik7CiAKICAgIHJldCA9IG9wdXNfZGVjb2RlX25hdGl2ZShzdCwg
ZGF0YSwgbGVuLCBvdXQsIGZyYW1lX3NpemUsIGRlY29kZV9mZWMsIDAsIE5VTEwsIDApOwpAQCAt
Nzc3LDYgKzgwNyw3IEBAIGludCBvcHVzX2RlY29kZShPcHVzRGVjb2RlciAqc3QsIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKmRhdGEsCiAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gT1BVU19JTlZB
TElEX1BBQ0tFVDsKICAgIH0KKyAgIGNlbHRfYXNzZXJ0KHN0LT5jaGFubmVscyA9PSAxIHx8IHN0
LT5jaGFubmVscyA9PSAyKTsKICAgIEFMTE9DKG91dCwgZnJhbWVfc2l6ZSpzdC0+Y2hhbm5lbHMs
IGZsb2F0KTsKIAogICAgcmV0ID0gb3B1c19kZWNvZGVfbmF0aXZlKHN0LCBkYXRhLCBsZW4sIG91
dCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywgMCwgTlVMTCwgMSk7CkBAIC04NjQsNyArODk1LDcg
QEAgaW50IG9wdXNfZGVjb2Rlcl9jdGwoT3B1c0RlY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwgLi4u
KQogICAgICAgICAgZ290byBiYWRfYXJnOwogICAgICAgfQogICAgICAgaWYgKHN0LT5wcmV2X21v
ZGUgPT0gTU9ERV9DRUxUX09OTFkpCi0gICAgICAgICBjZWx0X2RlY29kZXJfY3RsKGNlbHRfZGVj
LCBPUFVTX0dFVF9QSVRDSCh2YWx1ZSkpOworICAgICAgICAgcmV0ID0gY2VsdF9kZWNvZGVyX2N0
bChjZWx0X2RlYywgT1BVU19HRVRfUElUQ0godmFsdWUpKTsKICAgICAgIGVsc2UKICAgICAgICAg
ICp2YWx1ZSA9IHN0LT5EZWNDb250cm9sLnByZXZQaXRjaExhZzsKICAgIH0KQEAgLTkwNiw3ICs5
MzcsNyBAQCBpbnQgb3B1c19kZWNvZGVyX2N0bChPcHVzRGVjb2RlciAqc3QsIGludCByZXF1ZXN0
LCAuLi4pCiAgICAgICAgewogICAgICAgICAgIGdvdG8gYmFkX2FyZzsKICAgICAgICB9Ci0gICAg
ICAgY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywgT1BVU19TRVRfUEhBU0VfSU5WRVJTSU9OX0RJ
U0FCTEVEKHZhbHVlKSk7CisgICAgICAgcmV0ID0gY2VsdF9kZWNvZGVyX2N0bChjZWx0X2RlYywg
T1BVU19TRVRfUEhBU0VfSU5WRVJTSU9OX0RJU0FCTEVEKHZhbHVlKSk7CiAgICB9CiAgICBicmVh
azsKICAgIGNhc2UgT1BVU19HRVRfUEhBU0VfSU5WRVJTSU9OX0RJU0FCTEVEX1JFUVVFU1Q6CkBA
IC05MTYsNyArOTQ3LDcgQEAgaW50IG9wdXNfZGVjb2Rlcl9jdGwoT3B1c0RlY29kZXIgKnN0LCBp
bnQgcmVxdWVzdCwgLi4uKQogICAgICAgIHsKICAgICAgICAgICBnb3RvIGJhZF9hcmc7CiAgICAg
ICAgfQotICAgICAgIGNlbHRfZGVjb2Rlcl9jdGwoY2VsdF9kZWMsIE9QVVNfR0VUX1BIQVNFX0lO
VkVSU0lPTl9ESVNBQkxFRCh2YWx1ZSkpOworICAgICAgIHJldCA9IGNlbHRfZGVjb2Rlcl9jdGwo
Y2VsdF9kZWMsIE9QVVNfR0VUX1BIQVNFX0lOVkVSU0lPTl9ESVNBQkxFRCh2YWx1ZSkpOwogICAg
fQogICAgYnJlYWs7CiAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19kZW1vLmMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Ny
Yy9vcHVzX2RlbW8uYwppbmRleCA4MzZhN2JlNmFlYmVmOThjNmUyOGU4ZjhlYzRlMTc3YTRhNGJh
NWJjLi40Y2MyNmE2Yzc3MWZkMDI2ZjkwNTIwNjM2ZDBiYjg1OWVhNzA1MTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NyYy9vcHVzX2RlbW8uYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX2RlbW8uYwpAQCAtNzksMTQgKzc5LDcgQEAg
c3RhdGljIG9wdXNfdWludDMyIGNoYXJfdG9faW50KHVuc2lnbmVkIGNoYXIgY2hbNF0pCiAgICAg
ICAgICB8ICgob3B1c191aW50MzIpY2hbMl08PCA4KSB8ICAob3B1c191aW50MzIpY2hbM107CiB9
CiAKLXN0YXRpYyB2b2lkIGNoZWNrX2VuY29kZXJfb3B0aW9uKGludCBkZWNvZGVfb25seSwgY29u
c3QgY2hhciAqb3B0KQotewotICAgaWYgKGRlY29kZV9vbmx5KQotICAgewotICAgICAgZnByaW50
ZihzdGRlcnIsICJvcHRpb24gJXMgaXMgb25seSBmb3IgZW5jb2RpbmdcbiIsIG9wdCk7Ci0gICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gICB9Ci19CisjZGVmaW5lIGNoZWNrX2VuY29kZXJfb3B0
aW9uKGRlY29kZV9vbmx5LCBvcHQpIGRvIHtpZiAoZGVjb2RlX29ubHkpIHtmcHJpbnRmKHN0ZGVy
ciwgIm9wdGlvbiAlcyBpcyBvbmx5IGZvciBlbmNvZGluZ1xuIiwgb3B0KTsgZ290byBmYWlsdXJl
O319IHdoaWxlKDApCiAKIHN0YXRpYyBjb25zdCBpbnQgc2lsazhfdGVzdFtdWzRdID0gewogICAg
ICAge01PREVfU0lMS19PTkxZLCBPUFVTX0JBTkRXSURUSF9OQVJST1dCQU5ELCA5NjAqMywgMX0s
CkBAIC0yMTgsMTUgKzIxMSwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ewogICAgIGludCBlcnI7CiAgICAgY2hhciAqaW5GaWxlLCAqb3V0RmlsZTsKLSAgICBGSUxFICpm
aW4sICpmb3V0OworICAgIEZJTEUgKmZpbj1OVUxMOworICAgIEZJTEUgKmZvdXQ9TlVMTDsKICAg
ICBPcHVzRW5jb2RlciAqZW5jPU5VTEw7CiAgICAgT3B1c0RlY29kZXIgKmRlYz1OVUxMOwogICAg
IGludCBhcmdzOwogICAgIGludCBsZW5bMl07CiAgICAgaW50IGZyYW1lX3NpemUsIGNoYW5uZWxz
OwogICAgIG9wdXNfaW50MzIgYml0cmF0ZV9icHM9MDsKLSAgICB1bnNpZ25lZCBjaGFyICpkYXRh
WzJdOwotICAgIHVuc2lnbmVkIGNoYXIgKmZieXRlczsKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRh
WzJdID0ge05VTEwsIE5VTEx9OworICAgIHVuc2lnbmVkIGNoYXIgKmZieXRlcz1OVUxMOwogICAg
IG9wdXNfaW50MzIgc2FtcGxpbmdfcmF0ZTsKICAgICBpbnQgdXNlX3ZicjsKICAgICBpbnQgbWF4
X3BheWxvYWRfYnl0ZXM7CkBAIC0yNDAsNyArMjM0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKICAgICBpbnQgazsKICAgICBvcHVzX2ludDMyIHNraXA9MDsKICAgICBpbnQg
c3RvcD0wOwotICAgIHNob3J0ICppbiwgKm91dDsKKyAgICBzaG9ydCAqaW49TlVMTDsKKyAgICBz
aG9ydCAqb3V0PU5VTEw7CiAgICAgaW50IGFwcGxpY2F0aW9uPU9QVVNfQVBQTElDQVRJT05fQVVE
SU87CiAgICAgZG91YmxlIGJpdHM9MC4wLCBiaXRzX21heD0wLjAsIGJpdHNfYWN0PTAuMCwgYml0
czI9MC4wLCBucmc7CiAgICAgZG91YmxlIHRvdF9zYW1wbGVzPTA7CkBAIC0yNjgsMTEgKzI2Mywx
MiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGludCByZW1haW5pbmc9
MDsKICAgICBpbnQgdmFyaWFibGVfZHVyYXRpb249T1BVU19GUkFNRVNJWkVfQVJHOwogICAgIGlu
dCBkZWxheWVkX2RlY2lzaW9uPTA7CisgICAgaW50IHJldCA9IEVYSVRfRkFJTFVSRTsKIAogICAg
IGlmIChhcmdjIDwgNSApCiAgICAgewogICAgICAgIHByaW50X3VzYWdlKCBhcmd2ICk7Ci0gICAg
ICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgfQogCiAg
ICAgdG90X2luPXRvdF9vdXQ9MDsKQEAgLTI5MSw3ICsyODcsNyBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqYXJndltdKQogICAgIGlmICghZGVjb2RlX29ubHkgJiYgYXJnYyA8IDcgKQogICAg
IHsKICAgICAgICBwcmludF91c2FnZSggYXJndiApOwotICAgICAgIHJldHVybiBFWElUX0ZBSUxV
UkU7CisgICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KIAogICAgIGlmICghZGVjb2RlX29ubHkp
CkBAIC0zMDMsNyArMjk5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAg
ICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlthcmdzXSwgImF1ZGlvIikhPTApIHsKICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgInVua25vd24gYXBwbGljYXRpb246ICVzXG4iLCBhcmd2W2FyZ3Nd
KTsKICAgICAgICAgICBwcmludF91c2FnZShhcmd2KTsKLSAgICAgICAgICByZXR1cm4gRVhJVF9G
QUlMVVJFOworICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICB9CiAgICAgICAgYXJncysr
OwogICAgIH0KQEAgLTMxNiw3ICszMTIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTdXBwb3J0ZWQgc2FtcGxpbmcg
cmF0ZXMgYXJlIDgwMDAsIDEyMDAwLCAiCiAgICAgICAgICAgICAgICAgIjE2MDAwLCAyNDAwMCBh
bmQgNDgwMDAuXG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290
byBmYWlsdXJlOwogICAgIH0KICAgICBmcmFtZV9zaXplID0gc2FtcGxpbmdfcmF0ZS81MDsKIApA
QCAtMzI2LDcgKzMyMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAg
aWYgKGNoYW5uZWxzIDwgMSB8fCBjaGFubmVscyA+IDIpCiAgICAgewogICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIk9wdXNfZGVtbyBzdXBwb3J0cyBvbmx5IDEgb3IgMiBjaGFubmVscy5cbiIpOwot
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAg
fQogCiAgICAgaWYgKCFkZWNvZGVfb25seSkKQEAgLTM2Niw3ICszNjIsNyBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
VW5rbm93biBiYW5kd2lkdGggJXMuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlN1cHBvcnRlZCBhcmUgTkIsIE1CLCBXQiwgU1dCLCBGQi5cbiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3ZbIGFyZ3MgKyAxIF0pOwotICAgICAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYXJncyArPSAyOwogICAgICAgICB9IGVsc2UgaWYoIHN0cmNtcCgg
YXJndlsgYXJncyBdLCAiLWZyYW1lc2l6ZSIgKSA9PSAwICkgewpAQCAtMzkzLDcgKzM4OSw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJVbnN1cHBvcnRlZCBmcmFtZSBzaXplOiAlcyBtcy4gIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiU3VwcG9ydGVkIGFyZSAyLjUsIDUsIDEwLCAyMCwgNDAsIDYw
LCA4MCwgMTAwLCAxMjAuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2
WyBhcmdzICsgMSBdKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAg
ICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGFy
Z3MgKz0gMjsKICAgICAgICAgfSBlbHNlIGlmKCBzdHJjbXAoIGFyZ3ZbIGFyZ3MgXSwgIi1tYXhf
cGF5bG9hZCIgKSA9PSAwICkgewpAQCAtNDgwLDcgKzQ3Niw3IEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyICphcmd2W10pCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwcmludGYoICJF
cnJvcjogdW5yZWNvZ25pemVkIHNldHRpbmc6ICVzXG5cbiIsIGFyZ3ZbIGFyZ3MgXSApOwogICAg
ICAgICAgICAgcHJpbnRfdXNhZ2UoIGFyZ3YgKTsKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZB
SUxVUkU7CisgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTQ5MSw3ICs0ODcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIHsK
ICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAibWF4X3BheWxvYWRfYnl0ZXMgbXVzdCBiZSBiZXR3
ZWVuIDAgYW5kICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFDS0VUKTsK
LSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBmYWlsdXJlOwogICAg
IH0KIAogICAgIGluRmlsZSA9IGFyZ3ZbYXJnYy0yXTsKQEAgLTQ5OSw3ICs0OTUsNyBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGlmICghZmluKQogICAgIHsKICAgICAg
ICAgZnByaW50ZiAoc3RkZXJyLCAiQ291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSAlc1xuIiwgYXJn
dlthcmdjLTJdKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBm
YWlsdXJlOwogICAgIH0KICAgICBpZiAobW9kZV9saXN0KQogICAgIHsKQEAgLTUxNyw4ICs1MTMs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGlmICghZm91dCkKICAg
ICB7CiAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIkNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxl
ICVzXG4iLCBhcmd2W2FyZ2MtMV0pOwotICAgICAgICBmY2xvc2UoZmluKTsKLSAgICAgICAgcmV0
dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KIAogICAgIGlm
ICghZGVjb2RlX29ubHkpCkBAIC01MjcsOSArNTIyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKICAgICAgICBpZiAoZXJyICE9IE9QVVNfT0spCiAgICAgICAgewogICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGNyZWF0ZSBlbmNvZGVyOiAlc1xuIiwgb3B1c19z
dHJlcnJvcihlcnIpKTsKLSAgICAgICAgICBmY2xvc2UoZmluKTsKLSAgICAgICAgICBmY2xvc2Uo
Zm91dCk7Ci0gICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgICBnb3RvIGZh
aWx1cmU7CiAgICAgICAgfQogICAgICAgIG9wdXNfZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NFVF9C
SVRSQVRFKGJpdHJhdGVfYnBzKSk7CiAgICAgICAgb3B1c19lbmNvZGVyX2N0bChlbmMsIE9QVVNf
U0VUX0JBTkRXSURUSChiYW5kd2lkdGgpKTsKQEAgLTU1MSw5ICs1NDQsNyBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgIGlmIChlcnIgIT0gT1BVU19PSykKICAgICAg
ICB7CiAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3QgY3JlYXRlIGRlY29kZXI6ICVz
XG4iLCBvcHVzX3N0cmVycm9yKGVycikpOwotICAgICAgICAgIGZjbG9zZShmaW4pOwotICAgICAg
ICAgIGZjbG9zZShmb3V0KTsKLSAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAg
ICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICB9CiAgICAgfQogCkBAIC03MjksMTUgKzcyMCw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICBpZiAobGVuW3Rv
Z2dsZV0gPCAwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVy
ciwgIm9wdXNfZW5jb2RlKCkgcmV0dXJuZWQgJWRcbiIsIGxlblt0b2dnbGVdKTsKLSAgICAgICAg
ICAgICAgICBmcmVlKGRhdGFbMF0pOwotICAgICAgICAgICAgICAgIGlmICh1c2VfaW5iYW5kZmVj
KQotICAgICAgICAgICAgICAgICAgICBmcmVlKGRhdGFbMV0pOwotICAgICAgICAgICAgICAgIGZj
bG9zZShmaW4pOwotICAgICAgICAgICAgICAgIGZjbG9zZShmb3V0KTsKLSAgICAgICAgICAgICAg
ICBmcmVlKGluKTsKLSAgICAgICAgICAgICAgICBmcmVlKG91dCk7Ci0gICAgICAgICAgICAgICAg
ZnJlZShmYnl0ZXMpOwotICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAg
ICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY3Vy
cl9tb2RlX2NvdW50ICs9IGZyYW1lX3NpemU7CiAgICAgICAgICAgICBpZiAoY3Vycl9tb2RlX2Nv
dW50ID4gbW9kZV9zd2l0Y2hfdGltZSAmJiBjdXJyX21vZGUgPCBuYl9tb2Rlc19pbl9saXN0LTEp
CkBAIC03NTQsMTUgKzczNyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg
ICAgICAgICAgIGlmICgoZXJyID0gb3B1c19wYWNrZXRfcGFkKGRhdGFbdG9nZ2xlXSwgbGVuW3Rv
Z2dsZV0sIG5ld19sZW4pKSAhPSBPUFVTX09LKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAicGFkZGluZyBmYWlsZWQ6ICVzXG4iLCBvcHVzX3N0cmVycm9yKGVy
cikpOwotICAgICAgICAgICAgICBmcmVlKGRhdGFbMF0pOwotICAgICAgICAgICAgICBpZiAodXNl
X2luYmFuZGZlYykKLSAgICAgICAgICAgICAgICAgIGZyZWUoZGF0YVsxXSk7Ci0gICAgICAgICAg
ICAgIGZjbG9zZShmaW4pOwotICAgICAgICAgICAgICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAg
ICAgIGZyZWUoaW4pOwotICAgICAgICAgICAgICBmcmVlKG91dCk7Ci0gICAgICAgICAgICAgIGZy
ZWUoZmJ5dGVzKTsKLSAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAg
ICAgICAgZ290byBmYWlsdXJlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxlblt0b2dnbGVd
ID0gbmV3X2xlbjsKICAgICAgICAgfQpAQCAtNzczLDQwICs3NDgsMTYgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgIGludF90b19jaGFyKGxlblt0b2dnbGVd
LCBpbnRfZmllbGQpOwogICAgICAgICAgICAgaWYgKGZ3cml0ZShpbnRfZmllbGQsIDEsIDQsIGZv
dXQpICE9IDQpIHsKICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGlu
Zy5cbiIpOwotICAgICAgICAgICAgICAgZnJlZShkYXRhWzBdKTsKLSAgICAgICAgICAgICAgIGlm
ICh1c2VfaW5iYW5kZmVjKQotICAgICAgICAgICAgICAgICAgIGZyZWUoZGF0YVsxXSk7Ci0gICAg
ICAgICAgICAgICBmY2xvc2UoZmluKTsKLSAgICAgICAgICAgICAgIGZjbG9zZShmb3V0KTsKLSAg
ICAgICAgICAgICAgIGZyZWUoaW4pOwotICAgICAgICAgICAgICAgZnJlZShvdXQpOwotICAgICAg
ICAgICAgICAgZnJlZShmYnl0ZXMpOwotICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKKyAgICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGludF90b19jaGFyKGVuY19maW5hbF9yYW5nZVt0b2dnbGVdLCBpbnRfZmllbGQpOwogICAg
ICAgICAgICAgaWYgKGZ3cml0ZShpbnRfZmllbGQsIDEsIDQsIGZvdXQpICE9IDQpIHsKICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGluZy5cbiIpOwotICAgICAgICAg
ICAgICAgZnJlZShkYXRhWzBdKTsKLSAgICAgICAgICAgICAgIGlmICh1c2VfaW5iYW5kZmVjKQot
ICAgICAgICAgICAgICAgICAgIGZyZWUoZGF0YVsxXSk7Ci0gICAgICAgICAgICAgICBmY2xvc2Uo
ZmluKTsKLSAgICAgICAgICAgICAgIGZjbG9zZShmb3V0KTsKLSAgICAgICAgICAgICAgIGZyZWUo
aW4pOwotICAgICAgICAgICAgICAgZnJlZShvdXQpOwotICAgICAgICAgICAgICAgZnJlZShmYnl0
ZXMpOwotICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgICAgICAg
IGdvdG8gZmFpbHVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmd3JpdGUoZGF0
YVt0b2dnbGVdLCAxLCBsZW5bdG9nZ2xlXSwgZm91dCkgIT0gKHVuc2lnbmVkKWxlblt0b2dnbGVd
KSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHdyaXRpbmcuXG4iKTsK
LSAgICAgICAgICAgICAgIGZyZWUoZGF0YVswXSk7Ci0gICAgICAgICAgICAgICBpZiAodXNlX2lu
YmFuZGZlYykKLSAgICAgICAgICAgICAgICAgICBmcmVlKGRhdGFbMV0pOwotICAgICAgICAgICAg
ICAgZmNsb3NlKGZpbik7Ci0gICAgICAgICAgICAgICBmY2xvc2UoZm91dCk7Ci0gICAgICAgICAg
ICAgICBmcmVlKGluKTsKLSAgICAgICAgICAgICAgIGZyZWUob3V0KTsKLSAgICAgICAgICAgICAg
IGZyZWUoZmJ5dGVzKTsKLSAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAg
ICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0b3Rf
c2FtcGxlcyArPSBuYl9lbmNvZGVkOwogICAgICAgICB9IGVsc2UgewpAQCAtODQ5LDE1ICs4MDAs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmd3JpdGUoZmJ5dGVzLCBzaXplb2Yo
c2hvcnQpKmNoYW5uZWxzLCBvdXRwdXRfc2FtcGxlcy1za2lwLCBmb3V0KSAhPSAodW5zaWduZWQp
KG91dHB1dF9zYW1wbGVzLXNraXApKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJFcnJvciB3cml0aW5nLlxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
IGZyZWUoZGF0YVswXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VfaW5iYW5k
ZmVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShkYXRhWzFdKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGZpbik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGZjbG9zZShmb3V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShpbik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUob3V0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJlZShmYnl0ZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVhJ
VF9GQUlMVVJFOworICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdG90X291dCArPSBv
dXRwdXRfc2FtcGxlcy1za2lwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC04ODMsMTUgKzgy
Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGxvbmcpY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk
IGxvbmcpZW5jX2ZpbmFsX3JhbmdlW3RvZ2dsZV51c2VfaW5iYW5kZmVjXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylkZWNfZmluYWxfcmFuZ2UpOwotICAgICAgICAg
ICAgZnJlZShkYXRhWzBdKTsKLSAgICAgICAgICAgIGlmICh1c2VfaW5iYW5kZmVjKQotICAgICAg
ICAgICAgICAgIGZyZWUoZGF0YVsxXSk7Ci0gICAgICAgICAgICBmY2xvc2UoZmluKTsKLSAgICAg
ICAgICAgIGZjbG9zZShmb3V0KTsKLSAgICAgICAgICAgIGZyZWUoaW4pOwotICAgICAgICAgICAg
ZnJlZShvdXQpOwotICAgICAgICAgICAgZnJlZShmYnl0ZXMpOwotICAgICAgICAgICAgcmV0dXJu
IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGxvc3RfcHJldiA9IGxvc3Q7CkBAIC05MTcsMjkgKzg1Miw0MSBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICB0b2dnbGUgPSAodG9nZ2xlICsgdXNlX2lu
YmFuZGZlYykgJiAxOwogICAgIH0KIAotICAgIC8qIFByaW50IG91dCBiaXRyYXRlIHN0YXRpc3Rp
Y3MgKi8KLSAgICBpZihkZWNvZGVfb25seSkKKyAgICBpZihkZWNvZGVfb25seSAmJiBjb3VudCA+
IDApCiAgICAgICAgIGZyYW1lX3NpemUgPSAoaW50KSh0b3Rfc2FtcGxlcyAvIGNvdW50KTsKICAg
ICBjb3VudCAtPSB1c2VfaW5iYW5kZmVjOwotICAgIGZwcmludGYgKHN0ZGVyciwgImF2ZXJhZ2Ug
Yml0cmF0ZTogICAgICAgICAgICAgJTcuM2Yga2Ivc1xuIiwKLSAgICAgICAgICAgICAgICAgICAg
IDFlLTMqYml0cypzYW1wbGluZ19yYXRlL3RvdF9zYW1wbGVzKTsKLSAgICBmcHJpbnRmIChzdGRl
cnIsICJtYXhpbXVtIGJpdHJhdGU6ICAgICAgICAgICAgICU3LjNmIGtiL3NcbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAxZS0zKmJpdHNfbWF4KnNhbXBsaW5nX3JhdGUvZnJhbWVfc2l6ZSk7Ci0g
ICAgaWYgKCFkZWNvZGVfb25seSkKLSAgICAgICBmcHJpbnRmIChzdGRlcnIsICJhY3RpdmUgYml0
cmF0ZTogICAgICAgICAgICAgICU3LjNmIGtiL3NcbiIsCi0gICAgICAgICAgICAgICAxZS0zKmJp
dHNfYWN0KnNhbXBsaW5nX3JhdGUvKDFlLTE1K2ZyYW1lX3NpemUqKGRvdWJsZSljb3VudF9hY3Qp
KTsKLSAgICBmcHJpbnRmIChzdGRlcnIsICJiaXRyYXRlIHN0YW5kYXJkIGRldmlhdGlvbjogICU3
LjNmIGtiL3NcbiIsCi0gICAgICAgICAgICAxZS0zKnNxcnQoYml0czIvY291bnQgLSBiaXRzKmJp
dHMvKGNvdW50Kihkb3VibGUpY291bnQpKSpzYW1wbGluZ19yYXRlL2ZyYW1lX3NpemUpOworICAg
IGlmICh0b3Rfc2FtcGxlcyA+PSAxICYmIGNvdW50ID4gMCAmJiBmcmFtZV9zaXplKQorICAgIHsK
KyAgICAgICAvKiBQcmludCBvdXQgYml0cmF0ZSBzdGF0aXN0aWNzICovCisgICAgICAgZG91Ymxl
IHZhcjsKKyAgICAgICBmcHJpbnRmIChzdGRlcnIsICJhdmVyYWdlIGJpdHJhdGU6ICAgICAgICAg
ICAgICU3LjNmIGtiL3NcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAxZS0zKmJpdHMqc2Ft
cGxpbmdfcmF0ZS90b3Rfc2FtcGxlcyk7CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCAibWF4aW11
bSBiaXRyYXRlOiAgICAgICAgICAgICAlNy4zZiBrYi9zXG4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgMWUtMypiaXRzX21heCpzYW1wbGluZ19yYXRlL2ZyYW1lX3NpemUpOworICAgICAgIGlm
ICghZGVjb2RlX29ubHkpCisgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiYWN0aXZlIGJpdHJh
dGU6ICAgICAgICAgICAgICAlNy4zZiBrYi9zXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMWUtMypiaXRzX2FjdCpzYW1wbGluZ19yYXRlLygxZS0xNStmcmFtZV9zaXplKihkb3VibGUp
Y291bnRfYWN0KSk7CisgICAgICAgdmFyID0gYml0czIvY291bnQgLSBiaXRzKmJpdHMvKGNvdW50
Kihkb3VibGUpY291bnQpOworICAgICAgIGlmICh2YXIgPCAwKQorICAgICAgICAgIHZhciA9IDA7
CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiYml0cmF0ZSBzdGFuZGFyZCBkZXZpYXRpb246ICAl
Ny4zZiBrYi9zXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgMWUtMypzcXJ0KHZhcikqc2Ft
cGxpbmdfcmF0ZS9mcmFtZV9zaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiYml0cmF0ZSBzdGF0aXN0aWNzIGFyZSB1bmRlZmluZWRcbiIpOworICAgIH0KICAgICBz
aWxrX1RpbWVyU2F2ZSgib3B1c190aW1pbmcudHh0Iik7CisgICAgcmV0ID0gRVhJVF9TVUNDRVNT
OworZmFpbHVyZToKICAgICBvcHVzX2VuY29kZXJfZGVzdHJveShlbmMpOwogICAgIG9wdXNfZGVj
b2Rlcl9kZXN0cm95KGRlYyk7CiAgICAgZnJlZShkYXRhWzBdKTsKLSAgICBpZiAodXNlX2luYmFu
ZGZlYykKLSAgICAgICAgZnJlZShkYXRhWzFdKTsKLSAgICBmY2xvc2UoZmluKTsKLSAgICBmY2xv
c2UoZm91dCk7CisgICAgZnJlZShkYXRhWzFdKTsKKyAgICBpZiAoZmluKQorICAgICAgICBmY2xv
c2UoZmluKTsKKyAgICBpZiAoZm91dCkKKyAgICAgICAgZmNsb3NlKGZvdXQpOwogICAgIGZyZWUo
aW4pOwogICAgIGZyZWUob3V0KTsKICAgICBmcmVlKGZieXRlcyk7Ci0gICAgcmV0dXJuIEVYSVRf
U1VDQ0VTUzsKKyAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19lbmNvZGVy
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMv
c3JjL3NyYy9vcHVzX2VuY29kZXIuYwppbmRleCA3ZmE2YmUwYzAzMmNkNjUyMWFjNmYwNjU5NGVm
NWQyYzg0MGJiMjY1Li44NDRiMDhkZDllNDlkODEwM2MzN2JmMmNiODJhMzcwZTQ0M2I2MzhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NyYy9vcHVzX2VuY29kZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX2VuY29kZXIuYwpAQCAt
MTIzLDM4ICsxMjMsMzggQEAgc3RydWN0IE9wdXNFbmNvZGVyIHsKICAgIG1pZGRsZSAobWVtb3Jp
bGVzcykgdGhyZXNob2xkLiBUaGUgc2Vjb25kIGNvbHVtbiBpcyB0aGUgaHlzdGVyZXNpcwogICAg
KGRpZmZlcmVuY2Ugd2l0aCB0aGUgbWlkZGxlKSAqLwogc3RhdGljIGNvbnN0IG9wdXNfaW50MzIg
bW9ub192b2ljZV9iYW5kd2lkdGhfdGhyZXNob2xkc1s4XSA9IHsKLSAgICAgICAgMTAwMDAsIDEw
MDAsIC8qIE5CPC0+TUIgKi8KLSAgICAgICAgMTEwMDAsIDEwMDAsIC8qIE1CPC0+V0IgKi8KKyAg
ICAgICAgIDkwMDAsICA3MDAsIC8qIE5CPC0+TUIgKi8KKyAgICAgICAgIDkwMDAsICA3MDAsIC8q
IE1CPC0+V0IgKi8KICAgICAgICAgMTM1MDAsIDEwMDAsIC8qIFdCPC0+U1dCICovCiAgICAgICAg
IDE0MDAwLCAyMDAwLCAvKiBTV0I8LT5GQiAqLwogfTsKIHN0YXRpYyBjb25zdCBvcHVzX2ludDMy
IG1vbm9fbXVzaWNfYmFuZHdpZHRoX3RocmVzaG9sZHNbOF0gPSB7Ci0gICAgICAgIDEwMDAwLCAx
MDAwLCAvKiBOQjwtPk1CICovCi0gICAgICAgIDExMDAwLCAxMDAwLCAvKiBNQjwtPldCICovCi0g
ICAgICAgIDEzNTAwLCAxMDAwLCAvKiBXQjwtPlNXQiAqLwotICAgICAgICAxNDAwMCwgMjAwMCwg
LyogU1dCPC0+RkIgKi8KKyAgICAgICAgIDkwMDAsICA3MDAsIC8qIE5CPC0+TUIgKi8KKyAgICAg
ICAgIDkwMDAsICA3MDAsIC8qIE1CPC0+V0IgKi8KKyAgICAgICAgMTEwMDAsIDEwMDAsIC8qIFdC
PC0+U1dCICovCisgICAgICAgIDEyMDAwLCAyMDAwLCAvKiBTV0I8LT5GQiAqLwogfTsKIHN0YXRp
YyBjb25zdCBvcHVzX2ludDMyIHN0ZXJlb192b2ljZV9iYW5kd2lkdGhfdGhyZXNob2xkc1s4XSA9
IHsKLSAgICAgICAgMTAwMDAsIDEwMDAsIC8qIE5CPC0+TUIgKi8KLSAgICAgICAgMTEwMDAsIDEw
MDAsIC8qIE1CPC0+V0IgKi8KKyAgICAgICAgIDkwMDAsICA3MDAsIC8qIE5CPC0+TUIgKi8KKyAg
ICAgICAgIDkwMDAsICA3MDAsIC8qIE1CPC0+V0IgKi8KICAgICAgICAgMTM1MDAsIDEwMDAsIC8q
IFdCPC0+U1dCICovCiAgICAgICAgIDE0MDAwLCAyMDAwLCAvKiBTV0I8LT5GQiAqLwogfTsKIHN0
YXRpYyBjb25zdCBvcHVzX2ludDMyIHN0ZXJlb19tdXNpY19iYW5kd2lkdGhfdGhyZXNob2xkc1s4
XSA9IHsKLSAgICAgICAgMTAwMDAsIDEwMDAsIC8qIE5CPC0+TUIgKi8KLSAgICAgICAgMTEwMDAs
IDEwMDAsIC8qIE1CPC0+V0IgKi8KLSAgICAgICAgMTM1MDAsIDEwMDAsIC8qIFdCPC0+U1dCICov
Ci0gICAgICAgIDE0MDAwLCAyMDAwLCAvKiBTV0I8LT5GQiAqLworICAgICAgICAgOTAwMCwgIDcw
MCwgLyogTkI8LT5NQiAqLworICAgICAgICAgOTAwMCwgIDcwMCwgLyogTUI8LT5XQiAqLworICAg
ICAgICAxMTAwMCwgMTAwMCwgLyogV0I8LT5TV0IgKi8KKyAgICAgICAgMTIwMDAsIDIwMDAsIC8q
IFNXQjwtPkZCICovCiB9OwogLyogVGhyZXNob2xkIGJpdC1yYXRlcyBmb3Igc3dpdGNoaW5nIGJl
dHdlZW4gbW9ubyBhbmQgc3RlcmVvICovCi1zdGF0aWMgY29uc3Qgb3B1c19pbnQzMiBzdGVyZW9f
dm9pY2VfdGhyZXNob2xkID0gMjQwMDA7Ci1zdGF0aWMgY29uc3Qgb3B1c19pbnQzMiBzdGVyZW9f
bXVzaWNfdGhyZXNob2xkID0gMjQwMDA7CitzdGF0aWMgY29uc3Qgb3B1c19pbnQzMiBzdGVyZW9f
dm9pY2VfdGhyZXNob2xkID0gMTkwMDA7CitzdGF0aWMgY29uc3Qgb3B1c19pbnQzMiBzdGVyZW9f
bXVzaWNfdGhyZXNob2xkID0gMTcwMDA7CiAKIC8qIFRocmVzaG9sZCBiaXQtcmF0ZSBmb3Igc3dp
dGNoaW5nIGJldHdlZW4gU0lMSy9oeWJyaWQgYW5kIENFTFQtb25seSAqLwogc3RhdGljIGNvbnN0
IG9wdXNfaW50MzIgbW9kZV90aHJlc2hvbGRzWzJdWzJdID0gewogICAgICAgLyogdm9pY2UgKi8g
LyogbXVzaWMgKi8KLSAgICAgIHsgIDY0MDAwLCAgICAgIDE2MDAwfSwgLyogbW9ubyAqLwotICAg
ICAgeyAgMzYwMDAsICAgICAgMTYwMDB9LCAvKiBzdGVyZW8gKi8KKyAgICAgIHsgIDY0MDAwLCAg
ICAgIDEwMDAwfSwgLyogbW9ubyAqLworICAgICAgeyAgNDQwMDAsICAgICAgMTAwMDB9LCAvKiBz
dGVyZW8gKi8KIH07CiAKIHN0YXRpYyBjb25zdCBvcHVzX2ludDMyIGZlY190aHJlc2hvbGRzW10g
PSB7CkBAIC0zODUsMjAgKzM4NSwxNiBAQCBzdGF0aWMgdm9pZCBkY19yZWplY3QoY29uc3Qgb3B1
c192YWwxNiAqaW4sIG9wdXNfaW50MzIgY3V0b2ZmX0h6LCBvcHVzX3ZhbDE2ICpvdQogICAgaW50
IGMsIGk7CiAgICBpbnQgc2hpZnQ7CiAKLSAgIC8qIEFwcHJveGltYXRlcyAtcm91bmQobG9nMig0
LipjdXRvZmZfSHovRnMpKSAqLwotICAgc2hpZnQ9Y2VsdF9pbG9nMihGcy8oY3V0b2ZmX0h6KjMp
KTsKKyAgIC8qIEFwcHJveGltYXRlcyAtcm91bmQobG9nMig2LjMqY3V0b2ZmX0h6L0ZzKSkgKi8K
KyAgIHNoaWZ0PWNlbHRfaWxvZzIoRnMvKGN1dG9mZl9Ieio0KSk7CiAgICBmb3IgKGM9MDtjPGNo
YW5uZWxzO2MrKykKICAgIHsKICAgICAgIGZvciAoaT0wO2k8bGVuO2krKykKICAgICAgIHsKLSAg
ICAgICAgIG9wdXNfdmFsMzIgeCwgdG1wLCB5OworICAgICAgICAgb3B1c192YWwzMiB4LCB5Owog
ICAgICAgICAgeCA9IFNITDMyKEVYVEVORDMyKGluW2NoYW5uZWxzKmkrY10pLCAxNCk7Ci0gICAg
ICAgICAvKiBGaXJzdCBzdGFnZSAqLwotICAgICAgICAgdG1wID0geC1ocF9tZW1bMipjXTsKKyAg
ICAgICAgIHkgPSB4LWhwX21lbVsyKmNdOwogICAgICAgICAgaHBfbWVtWzIqY10gPSBocF9tZW1b
MipjXSArIFBTSFIzMih4IC0gaHBfbWVtWzIqY10sIHNoaWZ0KTsKLSAgICAgICAgIC8qIFNlY29u
ZCBzdGFnZSAqLwotICAgICAgICAgeSA9IHRtcCAtIGhwX21lbVsyKmMrMV07Ci0gICAgICAgICBo
cF9tZW1bMipjKzFdID0gaHBfbWVtWzIqYysxXSArIFBTSFIzMih0bXAgLSBocF9tZW1bMipjKzFd
LCBzaGlmdCk7CiAgICAgICAgICBvdXRbY2hhbm5lbHMqaStjXSA9IEVYVFJBQ1QxNihTQVRVUkFU
RShQU0hSMzIoeSwgMTQpLCAzMjc2NykpOwogICAgICAgfQogICAgfQpAQCAtNDA5LDU1ICs0MDUs
MzkgQEAgc3RhdGljIHZvaWQgZGNfcmVqZWN0KGNvbnN0IG9wdXNfdmFsMTYgKmluLCBvcHVzX2lu
dDMyIGN1dG9mZl9Ieiwgb3B1c192YWwxNiAqb3UKIHsKICAgIGludCBpOwogICAgZmxvYXQgY29l
ZiwgY29lZjI7Ci0gICBjb2VmID0gNC4wZipjdXRvZmZfSHovRnM7CisgICBjb2VmID0gNi4zZipj
dXRvZmZfSHovRnM7CiAgICBjb2VmMiA9IDEtY29lZjsKICAgIGlmIChjaGFubmVscz09MikKICAg
IHsKLSAgICAgIGZsb2F0IG0wLCBtMSwgbTIsIG0zOworICAgICAgZmxvYXQgbTAsIG0yOwogICAg
ICAgbTAgPSBocF9tZW1bMF07Ci0gICAgICBtMSA9IGhwX21lbVsxXTsKICAgICAgIG0yID0gaHBf
bWVtWzJdOwotICAgICAgbTMgPSBocF9tZW1bM107CiAgICAgICBmb3IgKGk9MDtpPGxlbjtpKysp
CiAgICAgICB7Ci0gICAgICAgICBvcHVzX3ZhbDMyIHgwLCB4MSwgdG1wMCwgdG1wMSwgb3V0MCwg
b3V0MTsKKyAgICAgICAgIG9wdXNfdmFsMzIgeDAsIHgxLCBvdXQwLCBvdXQxOwogICAgICAgICAg
eDAgPSBpblsyKmkrMF07CiAgICAgICAgICB4MSA9IGluWzIqaSsxXTsKLSAgICAgICAgIC8qIEZp
cnN0IHN0YWdlICovCi0gICAgICAgICB0bXAwID0geDAtbTA7Ci0gICAgICAgICB0bXAxID0geDEt
bTI7CisgICAgICAgICBvdXQwID0geDAtbTA7CisgICAgICAgICBvdXQxID0geDEtbTI7CiAgICAg
ICAgICBtMCA9IGNvZWYqeDAgKyBWRVJZX1NNQUxMICsgY29lZjIqbTA7CiAgICAgICAgICBtMiA9
IGNvZWYqeDEgKyBWRVJZX1NNQUxMICsgY29lZjIqbTI7Ci0gICAgICAgICAvKiBTZWNvbmQgc3Rh
Z2UgKi8KLSAgICAgICAgIG91dDAgPSB0bXAwIC0gbTE7Ci0gICAgICAgICBvdXQxID0gdG1wMSAt
IG0zOwotICAgICAgICAgbTEgPSBjb2VmKnRtcDAgKyBWRVJZX1NNQUxMICsgY29lZjIqbTE7Ci0g
ICAgICAgICBtMyA9IGNvZWYqdG1wMSArIFZFUllfU01BTEwgKyBjb2VmMiptMzsKICAgICAgICAg
IG91dFsyKmkrMF0gPSBvdXQwOwogICAgICAgICAgb3V0WzIqaSsxXSA9IG91dDE7CiAgICAgICB9
CiAgICAgICBocF9tZW1bMF0gPSBtMDsKLSAgICAgIGhwX21lbVsxXSA9IG0xOwogICAgICAgaHBf
bWVtWzJdID0gbTI7Ci0gICAgICBocF9tZW1bM10gPSBtMzsKICAgIH0gZWxzZSB7Ci0gICAgICBm
bG9hdCBtMCwgbTE7CisgICAgICBmbG9hdCBtMDsKICAgICAgIG0wID0gaHBfbWVtWzBdOwotICAg
ICAgbTEgPSBocF9tZW1bMV07CiAgICAgICBmb3IgKGk9MDtpPGxlbjtpKyspCiAgICAgICB7Ci0g
ICAgICAgICBvcHVzX3ZhbDMyIHgsIHRtcCwgeTsKKyAgICAgICAgIG9wdXNfdmFsMzIgeCwgeTsK
ICAgICAgICAgIHggPSBpbltpXTsKLSAgICAgICAgIC8qIEZpcnN0IHN0YWdlICovCi0gICAgICAg
ICB0bXAgPSB4LW0wOworICAgICAgICAgeSA9IHgtbTA7CiAgICAgICAgICBtMCA9IGNvZWYqeCAr
IFZFUllfU01BTEwgKyBjb2VmMiptMDsKLSAgICAgICAgIC8qIFNlY29uZCBzdGFnZSAqLwotICAg
ICAgICAgeSA9IHRtcCAtIG0xOwotICAgICAgICAgbTEgPSBjb2VmKnRtcCArIFZFUllfU01BTEwg
KyBjb2VmMiptMTsKICAgICAgICAgIG91dFtpXSA9IHk7CiAgICAgICB9CiAgICAgICBocF9tZW1b
MF0gPSBtMDsKLSAgICAgIGhwX21lbVsxXSA9IG0xOwogICAgfQogfQogI2VuZGlmCkBAIC02OTks
NiArNjc5LDEyIEBAIG9wdXNfdmFsMTYgY29tcHV0ZV9zdGVyZW9fd2lkdGgoY29uc3Qgb3B1c192
YWwxNiAqcGNtLCBpbnQgZnJhbWVfc2l6ZSwgb3B1c19pbnQzCiAgICAgICB4eSArPSBTSFIzMihw
eHksIDEwKTsKICAgICAgIHl5ICs9IFNIUjMyKHB5eSwgMTApOwogICAgfQorI2lmbmRlZiBGSVhF
RF9QT0lOVAorICAgaWYgKCEoeHggPCAxZTlmKSB8fCBjZWx0X2lzbmFuKHh4KSB8fCAhKHl5IDwg
MWU5ZikgfHwgY2VsdF9pc25hbih5eSkpCisgICB7CisgICAgICB4eSA9IHh4ID0geXkgPSAwOwor
ICAgfQorI2VuZGlmCiAgICBtZW0tPlhYICs9IE1VTFQxNl8zMl9RMTUoc2hvcnRfYWxwaGEsIHh4
LW1lbS0+WFgpOwogICAgbWVtLT5YWSArPSBNVUxUMTZfMzJfUTE1KHNob3J0X2FscGhhLCB4eS1t
ZW0tPlhZKTsKICAgIG1lbS0+WVkgKz0gTVVMVDE2XzMyX1ExNShzaG9ydF9hbHBoYSwgeXktbWVt
LT5ZWSk7CkBAIC03NjIsNyArNzQ4LDcgQEAgc3RhdGljIGludCBkZWNpZGVfZmVjKGludCB1c2VJ
bkJhbmRGRUMsIGludCBQYWNrZXRMb3NzX3BlcmMsIGludCBsYXN0X2ZlYywgaW50IG0KICAgIHJl
dHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNvbXB1dGVfc2lsa19yYXRlX2Zvcl9oeWJyaWQoaW50
IHJhdGUsIGludCBiYW5kd2lkdGgsIGludCBmcmFtZTIwbXMsIGludCB2YnIsIGludCBmZWMpIHsK
K3N0YXRpYyBpbnQgY29tcHV0ZV9zaWxrX3JhdGVfZm9yX2h5YnJpZChpbnQgcmF0ZSwgaW50IGJh
bmR3aWR0aCwgaW50IGZyYW1lMjBtcywgaW50IHZiciwgaW50IGZlYywgaW50IGNoYW5uZWxzKSB7
CiAgICBpbnQgZW50cnk7CiAgICBpbnQgaTsKICAgIGludCBOOwpAQCAtNzc5LDYgKzc2NSw4IEBA
IHN0YXRpYyBpbnQgY29tcHV0ZV9zaWxrX3JhdGVfZm9yX2h5YnJpZChpbnQgcmF0ZSwgaW50IGJh
bmR3aWR0aCwgaW50IGZyYW1lMjBtcywKICAgICAgIHszMjAwMCwgMjIwMDAsIDIyMDAwLCAyODAw
MCwgMjgwMDB9LAogICAgICAgezY0MDAwLCAzODAwMCwgMzgwMDAsIDUwMDAwLCA1MDAwMH0KICAg
IH07CisgICAvKiBEbyB0aGUgYWxsb2NhdGlvbiBwZXItY2hhbm5lbC4gKi8KKyAgIHJhdGUgLz0g
Y2hhbm5lbHM7CiAgICBlbnRyeSA9IDEgKyBmcmFtZTIwbXMgKyAyKmZlYzsKICAgIE4gPSBzaXpl
b2YocmF0ZV90YWJsZSkvc2l6ZW9mKHJhdGVfdGFibGVbMF0pOwogICAgZm9yIChpPTE7aTxOO2kr
KykKQEAgLTgwNSw2ICs3OTMsMTAgQEAgc3RhdGljIGludCBjb21wdXRlX3NpbGtfcmF0ZV9mb3Jf
aHlicmlkKGludCByYXRlLCBpbnQgYmFuZHdpZHRoLCBpbnQgZnJhbWUyMG1zLAogICAgfQogICAg
aWYgKGJhbmR3aWR0aD09T1BVU19CQU5EV0lEVEhfU1VQRVJXSURFQkFORCkKICAgICAgIHNpbGtf
cmF0ZSArPSAzMDA7CisgICBzaWxrX3JhdGUgKj0gY2hhbm5lbHM7CisgICAvKiBTbWFsbCBhZGp1
c3RtZW50IGZvciBzdGVyZW8gKGNhbGlicmF0ZWQgZm9yIDMyIGtiL3MsIGhhdmVuJ3QgdHJpZWQg
b3RoZXIgYml0cmF0ZXMpLiAqLworICAgaWYgKGNoYW5uZWxzID09IDIgJiYgcmF0ZSA+PSAxMjAw
MCkKKyAgICAgIHNpbGtfcmF0ZSAtPSAxMDAwOwogICAgcmV0dXJuIHNpbGtfcmF0ZTsKIH0KIApA
QCAtODE2LDcgKzgwOCw4IEBAIHN0YXRpYyBvcHVzX2ludDMyIGNvbXB1dGVfZXF1aXZfcmF0ZShv
cHVzX2ludDMyIGJpdHJhdGUsIGludCBjaGFubmVscywKICAgIG9wdXNfaW50MzIgZXF1aXY7CiAg
ICBlcXVpdiA9IGJpdHJhdGU7CiAgICAvKiBUYWtlIGludG8gYWNjb3VudCBvdmVyaGVhZCBmcm9t
IHNtYWxsZXIgZnJhbWVzLiAqLwotICAgZXF1aXYgLT0gKDQwKmNoYW5uZWxzKzIwKSooZnJhbWVf
cmF0ZSAtIDUwKTsKKyAgIGlmIChmcmFtZV9yYXRlID4gNTApCisgICAgICBlcXVpdiAtPSAoNDAq
Y2hhbm5lbHMrMjApKihmcmFtZV9yYXRlIC0gNTApOwogICAgLyogQ0JSIGlzIGFib3V0IGEgOCUg
cGVuYWx0eSBmb3IgYm90aCBTSUxLIGFuZCBDRUxULiAqLwogICAgaWYgKCF2YnIpCiAgICAgICBl
cXVpdiAtPSBlcXVpdi8xMjsKQEAgLTg0NCw3ICs4MzcsNyBAQCBzdGF0aWMgb3B1c19pbnQzMiBj
b21wdXRlX2VxdWl2X3JhdGUob3B1c19pbnQzMiBiaXRyYXRlLCBpbnQgY2hhbm5lbHMsCiAKICNp
Zm5kZWYgRElTQUJMRV9GTE9BVF9BUEkKIAotc3RhdGljIGludCBpc19kaWdpdGFsX3NpbGVuY2Uo
Y29uc3Qgb3B1c192YWwxNiogcGNtLCBpbnQgZnJhbWVfc2l6ZSwgaW50IGNoYW5uZWxzLCBpbnQg
bHNiX2RlcHRoKQoraW50IGlzX2RpZ2l0YWxfc2lsZW5jZShjb25zdCBvcHVzX3ZhbDE2KiBwY20s
IGludCBmcmFtZV9zaXplLCBpbnQgY2hhbm5lbHMsIGludCBsc2JfZGVwdGgpCiB7CiAgICBpbnQg
c2lsZW5jZSA9IDA7CiAgICBvcHVzX3ZhbDMyIHNhbXBsZV9tYXggPSAwOwpAQCAtMTE0NywyMSAr
MTE0MCwxOSBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5jb2RlciAqc3Qs
IGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAgIGlmIChzdC0+c2lsa19tb2Rl
LmNvbXBsZXhpdHkgPj0gNyAmJiBzdC0+RnM+PTE2MDAwKQogI2VuZGlmCiAgICAgewotICAgICAg
IGlmIChpc19kaWdpdGFsX3NpbGVuY2UocGNtLCBmcmFtZV9zaXplLCBzdC0+Y2hhbm5lbHMsIGxz
Yl9kZXB0aCkpCi0gICAgICAgewotICAgICAgICAgIGlzX3NpbGVuY2UgPSAxOwotICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgYW5hbHlzaXNfcmVhZF9wb3NfYmFrID0gc3QtPmFuYWx5c2lzLnJl
YWRfcG9zOwotICAgICAgICAgIGFuYWx5c2lzX3JlYWRfc3ViZnJhbWVfYmFrID0gc3QtPmFuYWx5
c2lzLnJlYWRfc3ViZnJhbWU7Ci0gICAgICAgICAgcnVuX2FuYWx5c2lzKCZzdC0+YW5hbHlzaXMs
IGNlbHRfbW9kZSwgYW5hbHlzaXNfcGNtLCBhbmFseXNpc19zaXplLCBmcmFtZV9zaXplLAotICAg
ICAgICAgICAgICAgIGMxLCBjMiwgYW5hbHlzaXNfY2hhbm5lbHMsIHN0LT5GcywKLSAgICAgICAg
ICAgICAgICBsc2JfZGVwdGgsIGRvd25taXgsICZhbmFseXNpc19pbmZvKTsKLSAgICAgICB9Cisg
ICAgICAgaXNfc2lsZW5jZSA9IGlzX2RpZ2l0YWxfc2lsZW5jZShwY20sIGZyYW1lX3NpemUsIHN0
LT5jaGFubmVscywgbHNiX2RlcHRoKTsKKyAgICAgICBhbmFseXNpc19yZWFkX3Bvc19iYWsgPSBz
dC0+YW5hbHlzaXMucmVhZF9wb3M7CisgICAgICAgYW5hbHlzaXNfcmVhZF9zdWJmcmFtZV9iYWsg
PSBzdC0+YW5hbHlzaXMucmVhZF9zdWJmcmFtZTsKKyAgICAgICBydW5fYW5hbHlzaXMoJnN0LT5h
bmFseXNpcywgY2VsdF9tb2RlLCBhbmFseXNpc19wY20sIGFuYWx5c2lzX3NpemUsIGZyYW1lX3Np
emUsCisgICAgICAgICAgICAgYzEsIGMyLCBhbmFseXNpc19jaGFubmVscywgc3QtPkZzLAorICAg
ICAgICAgICAgIGxzYl9kZXB0aCwgZG93bm1peCwgJmFuYWx5c2lzX2luZm8pOwogCiAgICAgICAg
LyogVHJhY2sgdGhlIHBlYWsgc2lnbmFsIGVuZXJneSAqLwogICAgICAgIGlmICghaXNfc2lsZW5j
ZSAmJiBhbmFseXNpc19pbmZvLmFjdGl2aXR5X3Byb2JhYmlsaXR5ID4gRFRYX0FDVElWSVRZX1RI
UkVTSE9MRCkKICAgICAgICAgICBzdC0+cGVha19zaWduYWxfZW5lcmd5ID0gTUFYMzIoTVVMVDE2
XzMyX1ExNShRQ09OU1QxNigwLjk5OWYsIDE1KSwgc3QtPnBlYWtfc2lnbmFsX2VuZXJneSksCiAg
ICAgICAgICAgICAgICAgY29tcHV0ZV9mcmFtZV9lbmVyZ3kocGNtLCBmcmFtZV9zaXplLCBzdC0+
Y2hhbm5lbHMsIHN0LT5hcmNoKSk7CisgICAgfSBlbHNlIGlmIChzdC0+YW5hbHlzaXMuaW5pdGlh
bGl6ZWQpIHsKKyAgICAgICB0b25hbGl0eV9hbmFseXNpc19yZXNldCgmc3QtPmFuYWx5c2lzKTsK
ICAgICB9CiAjZWxzZQogICAgICh2b2lkKWFuYWx5c2lzX3BjbTsKQEAgLTExODMsNyArMTE3NCwx
NiBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2ZShPcHVzRW5jb2RlciAqc3QsIGNvbnN0
IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAgIHsKICAgICAgICBpbnQgYW5hbHlzaXNf
YmFuZHdpZHRoOwogICAgICAgIGlmIChzdC0+c2lnbmFsX3R5cGUgPT0gT1BVU19BVVRPKQotICAg
ICAgICAgIHN0LT52b2ljZV9yYXRpbyA9IChpbnQpZmxvb3IoLjUrMTAwKigxLWFuYWx5c2lzX2lu
Zm8ubXVzaWNfcHJvYikpOworICAgICAgIHsKKyAgICAgICAgICBmbG9hdCBwcm9iOworICAgICAg
ICAgIGlmIChzdC0+cHJldl9tb2RlID09IDApCisgICAgICAgICAgICAgcHJvYiA9IGFuYWx5c2lz
X2luZm8ubXVzaWNfcHJvYjsKKyAgICAgICAgICBlbHNlIGlmIChzdC0+cHJldl9tb2RlID09IE1P
REVfQ0VMVF9PTkxZKQorICAgICAgICAgICAgIHByb2IgPSBhbmFseXNpc19pbmZvLm11c2ljX3By
b2JfbWF4OworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBwcm9iID0gYW5hbHlzaXNfaW5m
by5tdXNpY19wcm9iX21pbjsKKyAgICAgICAgICBzdC0+dm9pY2VfcmF0aW8gPSAoaW50KWZsb29y
KC41KzEwMCooMS1wcm9iKSk7CisgICAgICAgfQogCiAgICAgICAgYW5hbHlzaXNfYmFuZHdpZHRo
ID0gYW5hbHlzaXNfaW5mby5iYW5kd2lkdGg7CiAgICAgICAgaWYgKGFuYWx5c2lzX2JhbmR3aWR0
aDw9MTIpCkBAIC0xMzM2LDYgKzEzMzYsMTQgQEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRp
dmUoT3B1c0VuY29kZXIgKnN0LCBjb25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAg
ICBlcXVpdl9yYXRlID0gY29tcHV0ZV9lcXVpdl9yYXRlKHN0LT5iaXRyYXRlX2Jwcywgc3QtPnN0
cmVhbV9jaGFubmVscywgc3QtPkZzL2ZyYW1lX3NpemUsCiAgICAgICAgICAgc3QtPnVzZV92YnIs
IDAsIHN0LT5zaWxrX21vZGUuY29tcGxleGl0eSwgc3QtPnNpbGtfbW9kZS5wYWNrZXRMb3NzUGVy
Y2VudGFnZSk7CiAKKyAgICAvKiBBbGxvdyBTSUxLIERUWCBpZiBEVFggaXMgZW5hYmxlZCBidXQg
dGhlIGdlbmVyYWxpemVkIERUWCBjYW5ub3QgYmUgdXNlZCwKKyAgICAgICBlLmcuIGJlY2F1c2Ug
b2YgdGhlIGNvbXBsZXhpdHkgc2V0dGluZyBvciBzYW1wbGUgcmF0ZS4gKi8KKyNpZm5kZWYgRElT
QUJMRV9GTE9BVF9BUEkKKyAgICBzdC0+c2lsa19tb2RlLnVzZURUWCA9IHN0LT51c2VfZHR4ICYm
ICEoYW5hbHlzaXNfaW5mby52YWxpZCB8fCBpc19zaWxlbmNlKTsKKyNlbHNlCisgICAgc3QtPnNp
bGtfbW9kZS51c2VEVFggPSBzdC0+dXNlX2R0eDsKKyNlbmRpZgorCiAgICAgLyogTW9kZSBzZWxl
Y3Rpb24gZGVwZW5kaW5nIG9uIGFwcGxpY2F0aW9uIGFuZCBzaWduYWwgdHlwZSAqLwogICAgIGlm
IChzdC0+YXBwbGljYXRpb24gPT0gT1BVU19BUFBMSUNBVElPTl9SRVNUUklDVEVEX0xPV0RFTEFZ
KQogICAgIHsKQEAgLTEzODQsMTMgKzEzOTIsNyBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25h
dGl2ZShPcHVzRW5jb2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwog
ICAgICAgIGlmIChzdC0+c2lsa19tb2RlLnVzZUluQmFuZEZFQyAmJiBzdC0+c2lsa19tb2RlLnBh
Y2tldExvc3NQZXJjZW50YWdlID4gKDEyOC12b2ljZV9lc3QpPj40KQogICAgICAgICAgIHN0LT5t
b2RlID0gTU9ERV9TSUxLX09OTFk7CiAgICAgICAgLyogV2hlbiBlbmNvZGluZyB2b2ljZSBhbmQg
RFRYIGlzIGVuYWJsZWQgYnV0IHRoZSBnZW5lcmFsaXplZCBEVFggY2Fubm90IGJlIHVzZWQsCi0g
ICAgICAgICAgYmVjYXVzZSBvZiBjb21wbGV4aXR5IGFuZCBzYW1wbGluZyBmcmVxdWVuY3kgc2V0
dGluZ3MsIHN3aXRjaCB0byBTSUxLIERUWCBhbmQKLSAgICAgICAgICBzZXQgdGhlIGVuY29kZXIg
dG8gU0lMSyBtb2RlICovCi0jaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCi0gICAgICAgc3QtPnNp
bGtfbW9kZS51c2VEVFggPSBzdC0+dXNlX2R0eCAmJiAhKGFuYWx5c2lzX2luZm8udmFsaWQgfHwg
aXNfc2lsZW5jZSk7Ci0jZWxzZQotICAgICAgIHN0LT5zaWxrX21vZGUudXNlRFRYID0gc3QtPnVz
ZV9kdHg7Ci0jZW5kaWYKKyAgICAgICAgICB1c2UgU0lMSyBpbiBvcmRlciB0byBtYWtlIHVzZSBv
ZiBpdHMgRFRYLiAqLwogICAgICAgIGlmIChzdC0+c2lsa19tb2RlLnVzZURUWCAmJiB2b2ljZV9l
c3QgPiAxMDApCiAgICAgICAgICAgc3QtPm1vZGUgPSBNT0RFX1NJTEtfT05MWTsKICNlbmRpZgpA
QCAtMTQ4NSw2ICsxNDg3LDEwIEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNF
bmNvZGVyICpzdCwgY29uc3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgICAgICAg
ICBpZiAoZXF1aXZfcmF0ZSA+PSB0aHJlc2hvbGQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0gd2hpbGUgKC0tYmFuZHdpZHRoPk9QVVNfQkFORFdJRFRIX05BUlJPV0JBTkQpOwor
ICAgICAgICAvKiBXZSBkb24ndCB1c2UgbWVkaXVtYmFuZCBhbnltb3JlLCBleGNlcHQgd2hlbiBl
eHBsaWNpdGx5IHJlcXVlc3RlZCBvciBkdXJpbmcKKyAgICAgICAgICAgbW9kZSB0cmFuc2l0aW9u
cy4gKi8KKyAgICAgICAgaWYgKGJhbmR3aWR0aCA9PSBPUFVTX0JBTkRXSURUSF9NRURJVU1CQU5E
KQorICAgICAgICAgICBiYW5kd2lkdGggPSBPUFVTX0JBTkRXSURUSF9XSURFQkFORDsKICAgICAg
ICAgc3QtPmJhbmR3aWR0aCA9IHN0LT5hdXRvX2JhbmR3aWR0aCA9IGJhbmR3aWR0aDsKICAgICAg
ICAgLyogUHJldmVudHMgYW55IHRyYW5zaXRpb24gdG8gU1dCL0ZCIHVudGlsIHRoZSBTSUxLIGxh
eWVyIGhhcyBmdWxseQogICAgICAgICAgICBzd2l0Y2hlZCB0byBXQiBtb2RlIGFuZCB0dXJuZWQg
dGhlIHZhcmlhYmxlIExQIGZpbHRlciBvZmYgKi8KQEAgLTE1OTgsNyArMTYwNCw4IEBAIG9wdXNf
aW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNFbmNvZGVyICpzdCwgY29uc3Qgb3B1c192YWwx
NiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgICAgcmVkdW5kYW5jeSA9IDE7CiAgICAgICAgY2VsdF90
b19zaWxrID0gMTsKICAgICAgICBzdC0+c2lsa19id19zd2l0Y2ggPSAwOwotICAgICAgIHByZWZp
bGw9MTsKKyAgICAgICAvKiBEbyBhIHByZWZpbGwgd2l0aG91dCByZXNldGluZyB0aGUgc2FtcGxp
bmcgcmF0ZSBjb250cm9sLiAqLworICAgICAgIHByZWZpbGw9MjsKICAgICB9CiAKICAgICAvKiBJ
ZiB3ZSBkZWNpZGVkIHRvIGdvIHdpdGggQ0VMVCwgbWFrZSBzdXJlIHJlZHVuZGFuY3kgaXMgb2Zm
LCBubyBtYXR0ZXIgd2hhdApAQCAtMTY4MiwxOCArMTY4OSwxMyBAQCBvcHVzX2ludDMyIG9wdXNf
ZW5jb2RlX25hdGl2ZShPcHVzRW5jb2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50
IGZyYW1lXwogICAgICAgICBpZiggc3QtPm1vZGUgPT0gTU9ERV9IWUJSSUQgKSB7CiAgICAgICAg
ICAgICAvKiBCYXNlIHJhdGUgZm9yIFNJTEsgKi8KICAgICAgICAgICAgIHN0LT5zaWxrX21vZGUu
Yml0UmF0ZSA9IGNvbXB1dGVfc2lsa19yYXRlX2Zvcl9oeWJyaWQodG90YWxfYml0UmF0ZSwKLSAg
ICAgICAgICAgICAgICAgIGN1cnJfYmFuZHdpZHRoLCBzdC0+RnMgPT0gNTAgKiBmcmFtZV9zaXpl
LCBzdC0+dXNlX3Ziciwgc3QtPnNpbGtfbW9kZS5MQlJSX2NvZGVkKTsKKyAgICAgICAgICAgICAg
ICAgIGN1cnJfYmFuZHdpZHRoLCBzdC0+RnMgPT0gNTAgKiBmcmFtZV9zaXplLCBzdC0+dXNlX3Zi
ciwgc3QtPnNpbGtfbW9kZS5MQlJSX2NvZGVkLAorICAgICAgICAgICAgICAgICAgc3QtPnN0cmVh
bV9jaGFubmVscyk7CiAgICAgICAgICAgICBpZiAoIXN0LT5lbmVyZ3lfbWFza2luZykKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgIC8qIEluY3JlYXNpbmdseSBhdHRlbnVhdGUgaGlnaCBi
YW5kIHdoZW4gaXQgZ2V0cyBhbGxvY2F0ZWQgZmV3ZXIgYml0cyAqLwogICAgICAgICAgICAgICAg
Y2VsdF9yYXRlID0gdG90YWxfYml0UmF0ZSAtIHN0LT5zaWxrX21vZGUuYml0UmF0ZTsKICAgICAg
ICAgICAgICAgIEhCX2dhaW4gPSBRMTVPTkUgLSBTSFIzMihjZWx0X2V4cDIoLWNlbHRfcmF0ZSAq
IFFDT05TVDE2KDEuZi8xMDI0LCAxMCkpLCAxKTsKLSNpZm5kZWYgRklYRURfUE9JTlQKLSAgICAg
ICAgICAgICAgIC8qIFNhbml0eSBjaGVjayBvZiBoaWdoIGJhbmQgZ2FpbiAqLwotICAgICAgICAg
ICAgICAgaWYgKGNlbHRfaXNuYW4oSEJfZ2FpbikpIHsKLSAgICAgICAgICAgICAgICAgICBIQl9n
YWluID0gUTE1T05FOwotICAgICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBTSUxLIGdldHMgYWxsIGJpdHMgKi8KQEAg
LTE3NTAsNyArMTc1Miw3IEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNFbmNv
ZGVyICpzdCwgY29uc3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgICAgIH0gZWxz
ZSBpZiAoY3Vycl9iYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhfTUVESVVNQkFORCkgewogICAg
ICAgICAgICAgc3QtPnNpbGtfbW9kZS5kZXNpcmVkSW50ZXJuYWxTYW1wbGVSYXRlID0gMTIwMDA7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaWxrX2Fzc2VydCggc3QtPm1vZGUgPT0g
TU9ERV9IWUJSSUQgfHwgY3Vycl9iYW5kd2lkdGggPT0gT1BVU19CQU5EV0lEVEhfV0lERUJBTkQg
KTsKKyAgICAgICAgICAgIGNlbHRfYXNzZXJ0KCBzdC0+bW9kZSA9PSBNT0RFX0hZQlJJRCB8fCBj
dXJyX2JhbmR3aWR0aCA9PSBPUFVTX0JBTkRXSURUSF9XSURFQkFORCApOwogICAgICAgICAgICAg
c3QtPnNpbGtfbW9kZS5kZXNpcmVkSW50ZXJuYWxTYW1wbGVSYXRlID0gMTYwMDA7CiAgICAgICAg
IH0KICAgICAgICAgaWYoIHN0LT5tb2RlID09IE1PREVfSFlCUklEICkgewpAQCAtMTgwMyw3ICsx
ODA1LDggQEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRpdmUoT3B1c0VuY29kZXIgKnN0LCBj
b25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAvKiBDb21wdXRlIFNJTEsgYml0cmF0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXggdG90
YWwgYml0cyBhdmFpbGFibGUgKi8KICAgICAgICAgICAgICAgb3B1c19pbnQzMiBtYXhCaXRSYXRl
ID0gY29tcHV0ZV9zaWxrX3JhdGVfZm9yX2h5YnJpZChzdC0+c2lsa19tb2RlLm1heEJpdHMqc3Qt
PkZzIC8gZnJhbWVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgY3Vycl9iYW5kd2lkdGgsIHN0
LT5GcyA9PSA1MCAqIGZyYW1lX3NpemUsIHN0LT51c2VfdmJyLCBzdC0+c2lsa19tb2RlLkxCUlJf
Y29kZWQpOworICAgICAgICAgICAgICAgICAgICBjdXJyX2JhbmR3aWR0aCwgc3QtPkZzID09IDUw
ICogZnJhbWVfc2l6ZSwgc3QtPnVzZV92YnIsIHN0LT5zaWxrX21vZGUuTEJSUl9jb2RlZCwKKyAg
ICAgICAgICAgICAgICAgICAgc3QtPnN0cmVhbV9jaGFubmVscyk7CiAgICAgICAgICAgICAgIHN0
LT5zaWxrX21vZGUubWF4Qml0cyA9IG1heEJpdFJhdGUgKiBmcmFtZV9zaXplIC8gc3QtPkZzOwog
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE4MjgsNyArMTgzMSw5IEBAIG9wdXNfaW50MzIg
b3B1c19lbmNvZGVfbmF0aXZlKE9wdXNFbmNvZGVyICpzdCwgY29uc3Qgb3B1c192YWwxNiAqcGNt
LCBpbnQgZnJhbWVfCiAgICAgICAgICAgICBmb3IgKGk9MDtpPHN0LT5lbmNvZGVyX2J1ZmZlcipz
dC0+Y2hhbm5lbHM7aSsrKQogICAgICAgICAgICAgICAgIHBjbV9zaWxrW2ldID0gRkxPQVQySU5U
MTYoc3QtPmRlbGF5X2J1ZmZlcltpXSk7CiAjZW5kaWYKLSAgICAgICAgICAgIHNpbGtfRW5jb2Rl
KCBzaWxrX2VuYywgJnN0LT5zaWxrX21vZGUsIHBjbV9zaWxrLCBzdC0+ZW5jb2Rlcl9idWZmZXIs
IE5VTEwsICZ6ZXJvLCAxLCBhY3Rpdml0eSApOworICAgICAgICAgICAgc2lsa19FbmNvZGUoIHNp
bGtfZW5jLCAmc3QtPnNpbGtfbW9kZSwgcGNtX3NpbGssIHN0LT5lbmNvZGVyX2J1ZmZlciwgTlVM
TCwgJnplcm8sIHByZWZpbGwsIGFjdGl2aXR5ICk7CisgICAgICAgICAgICAvKiBQcmV2ZW50IGEg
c2Vjb25kIHN3aXRjaCBpbiB0aGUgcmVhbCBlbmNvZGUgY2FsbC4gKi8KKyAgICAgICAgICAgIHN0
LT5zaWxrX21vZGUub3B1c0NhblN3aXRjaCA9IDA7CiAgICAgICAgIH0KIAogI2lmZGVmIEZJWEVE
X1BPSU5UCkBAIC0xODU1LDcgKzE4NjAsNyBAQCBvcHVzX2ludDMyIG9wdXNfZW5jb2RlX25hdGl2
ZShPcHVzRW5jb2RlciAqc3QsIGNvbnN0IG9wdXNfdmFsMTYgKnBjbSwgaW50IGZyYW1lXwogICAg
ICAgICAgICAgICAgY3Vycl9iYW5kd2lkdGggPSBPUFVTX0JBTkRXSURUSF9XSURFQkFORDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNpbGtfYXNzZXJ0KCBz
dC0+c2lsa19tb2RlLmludGVybmFsU2FtcGxlUmF0ZSA9PSAxNjAwMCApOworICAgICAgICAgICAg
Y2VsdF9hc3NlcnQoIHN0LT5zaWxrX21vZGUuaW50ZXJuYWxTYW1wbGVSYXRlID09IDE2MDAwICk7
CiAgICAgICAgIH0KIAogICAgICAgICBzdC0+c2lsa19tb2RlLm9wdXNDYW5Td2l0Y2ggPSBzdC0+
c2lsa19tb2RlLnN3aXRjaFJlYWR5ICYmICFzdC0+bm9uZmluYWxfZnJhbWU7CkBAIC0xOTUwLDcg
KzE5NTUsMTQgQEAgb3B1c19pbnQzMiBvcHVzX2VuY29kZV9uYXRpdmUoT3B1c0VuY29kZXIgKnN0
LCBjb25zdCBvcHVzX3ZhbDE2ICpwY20sIGludCBmcmFtZV8KICAgICB9CiAgICAgc3QtPnByZXZf
SEJfZ2FpbiA9IEhCX2dhaW47CiAgICAgaWYgKHN0LT5tb2RlICE9IE1PREVfSFlCUklEIHx8IHN0
LT5zdHJlYW1fY2hhbm5lbHM9PTEpCi0gICAgICAgc3QtPnNpbGtfbW9kZS5zdGVyZW9XaWR0aF9R
MTQgPSBJTUlOKCgxPDwxNCksMipJTUFYKDAsZXF1aXZfcmF0ZS0yNDAwMCkpOworICAgIHsKKyAg
ICAgICBpZiAoZXF1aXZfcmF0ZSA+IDMyMDAwKQorICAgICAgICAgIHN0LT5zaWxrX21vZGUuc3Rl
cmVvV2lkdGhfUTE0ID0gMTYzODQ7CisgICAgICAgZWxzZSBpZiAoZXF1aXZfcmF0ZSA8IDE2MDAw
KQorICAgICAgICAgIHN0LT5zaWxrX21vZGUuc3RlcmVvV2lkdGhfUTE0ID0gMDsKKyAgICAgICBl
bHNlCisgICAgICAgICAgc3QtPnNpbGtfbW9kZS5zdGVyZW9XaWR0aF9RMTQgPSAxNjM4NCAtIDIw
NDgqKG9wdXNfaW50MzIpKDMyMDAwLWVxdWl2X3JhdGUpLyhlcXVpdl9yYXRlLTE0MDAwKTsKKyAg
ICB9CiAgICAgaWYoICFzdC0+ZW5lcmd5X21hc2tpbmcgJiYgc3QtPmNoYW5uZWxzID09IDIgKSB7
CiAgICAgICAgIC8qIEFwcGx5IHN0ZXJlbyB3aWR0aCByZWR1Y3Rpb24gKGF0IGxvdyBiaXRyYXRl
cykgKi8KICAgICAgICAgaWYoIHN0LT5oeWJyaWRfc3RlcmVvX3dpZHRoX1ExNCA8ICgxIDw8IDE0
KSB8fCBzdC0+c2lsa19tb2RlLnN0ZXJlb1dpZHRoX1ExNCA8ICgxIDw8IDE0KSApIHsKQEAgLTIw
MjQsOCArMjAzNiw2IEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNFbmNvZGVy
ICpzdCwgY29uc3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgICAgaW5mby5zaWdu
YWxUeXBlID0gc3QtPnNpbGtfbW9kZS5zaWduYWxUeXBlOwogICAgICAgIGluZm8ub2Zmc2V0ID0g
c3QtPnNpbGtfbW9kZS5vZmZzZXQ7CiAgICAgICAgY2VsdF9lbmNvZGVyX2N0bChjZWx0X2VuYywg
Q0VMVF9TRVRfU0lMS19JTkZPKCZpbmZvKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICBjZWx0X2Vu
Y29kZXJfY3RsKGNlbHRfZW5jLCBDRUxUX1NFVF9TSUxLX0lORk8oKFNJTEtJbmZvKilOVUxMKSk7
CiAgICAgfQogCiAgICAgLyogNSBtcyByZWR1bmRhbnQgZnJhbWUgZm9yIENFTFQtPlNJTEsgKi8K
QEAgLTIxNDIsNiArMjE1Miw4IEBAIG9wdXNfaW50MzIgb3B1c19lbmNvZGVfbmF0aXZlKE9wdXNF
bmNvZGVyICpzdCwgY29uc3Qgb3B1c192YWwxNiAqcGNtLCBpbnQgZnJhbWVfCiAgICAgICAgICAg
UkVTVE9SRV9TVEFDSzsKICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICBzdC0+bmJfbm9fYWN0aXZpdHlfZnJhbWVzID0gMDsKICAgICB9CiAjZW5kaWYK
IApAQCAtMjYxOSw3ICsyNjMxLDYgQEAgaW50IG9wdXNfZW5jb2Rlcl9jdGwoT3B1c0VuY29kZXIg
KnN0LCBpbnQgcmVxdWVzdCwgLi4uKQogICAgICAgICAgICAgICAgZ290byBiYWRfYXJnOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgc3QtPnZhcmlhYmxlX2R1cmF0aW9uID0gdmFsdWU7Ci0g
ICAgICAgICAgICBjZWx0X2VuY29kZXJfY3RsKGNlbHRfZW5jLCBPUFVTX1NFVF9FWFBFUlRfRlJB
TUVfRFVSQVRJT04odmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBPUFVTX0dFVF9FWFBFUlRfRlJBTUVfRFVSQVRJT05fUkVRVUVTVDoKQEAgLTI3MjUsMTEg
KzI3MzYsMTEgQEAgaW50IG9wdXNfZW5jb2Rlcl9jdGwoT3B1c0VuY29kZXIgKnN0LCBpbnQgcmVx
dWVzdCwgLi4uKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHN0LT5zaWxrX21vZGUu
dXNlRFRYICYmIChzdC0+cHJldl9tb2RlID09IE1PREVfU0lMS19PTkxZIHx8IHN0LT5wcmV2X21v
ZGUgPT0gTU9ERV9IWUJSSUQpKSB7CiAgICAgICAgICAgICAgICAgLyogRFRYIGRldGVybWluZWQg
YnkgU2lsay4gKi8KLSAgICAgICAgICAgICAgICBpbnQgbjsKLSAgICAgICAgICAgICAgICB2b2lk
ICpzaWxrX2VuYyA9IChjaGFyKilzdCtzdC0+c2lsa19lbmNfb2Zmc2V0OwotICAgICAgICAgICAg
ICAgICp2YWx1ZSA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChuPTA7bjxzdC0+c2lsa19tb2Rl
Lm5DaGFubmVsc0ludGVybmFsO24rKykgewotICAgICAgICAgICAgICAgICAgICAqdmFsdWUgPSAq
dmFsdWUgJiYgKChzaWxrX2VuY29kZXIqKXNpbGtfZW5jKS0+c3RhdGVfRnh4W25dLnNDbW4ubm9T
cGVlY2hDb3VudGVyID49IE5CX1NQRUVDSF9GUkFNRVNfQkVGT1JFX0RUWDsKKyAgICAgICAgICAg
ICAgICBzaWxrX2VuY29kZXIgKnNpbGtfZW5jID0gKHNpbGtfZW5jb2RlciopKChjaGFyKilzdCtz
dC0+c2lsa19lbmNfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAqdmFsdWUgPSBzaWxrX2VuYy0+
c3RhdGVfRnh4WzBdLnNDbW4ubm9TcGVlY2hDb3VudGVyID49IE5CX1NQRUVDSF9GUkFNRVNfQkVG
T1JFX0RUWDsKKyAgICAgICAgICAgICAgICAvKiBTdGVyZW86IGNoZWNrIHNlY29uZCBjaGFubmVs
IHVubGVzcyBvbmx5IHRoZSBtaWRkbGUgY2hhbm5lbCB3YXMgZW5jb2RlZC4gKi8KKyAgICAgICAg
ICAgICAgICBpZigqdmFsdWUgPT0gMSAmJiBzdC0+c2lsa19tb2RlLm5DaGFubmVsc0ludGVybmFs
ID09IDIgJiYgc2lsa19lbmMtPnByZXZfZGVjb2RlX29ubHlfbWlkZGxlID09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgKnZhbHVlID0gc2lsa19lbmMtPnN0YXRlX0Z4eFsxXS5zQ21uLm5vU3Bl
ZWNoQ291bnRlciA+PSBOQl9TUEVFQ0hfRlJBTUVTX0JFRk9SRV9EVFg7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogI2lmbmRlZiBESVNBQkxFX0ZMT0FUX0FQSQpAQCAtMjc0Myw3
ICsyNzU0LDYgQEAgaW50IG9wdXNfZW5jb2Rlcl9jdGwoT3B1c0VuY29kZXIgKnN0LCBpbnQgcmVx
dWVzdCwgLi4uKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotCiAg
ICAgICAgIGNhc2UgQ0VMVF9HRVRfTU9ERV9SRVFVRVNUOgogICAgICAgICB7CiAgICAgICAgICAg
IGNvbnN0IENFTFRNb2RlICoqIHZhbHVlID0gdmFfYXJnKGFwLCBjb25zdCBDRUxUTW9kZSoqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvc3JjL29wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlci5jIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19tdWx0
aXN0cmVhbV9kZWNvZGVyLmMKaW5kZXggZTQyMTcyNmYyYjQyN2RkMmRkZDRkMjBmMWRmYjk5YzJh
ZmI3MDA4Yi4uYTI4MzdjMzU0OTUwNTQ5OTA3NTIwYTNhNDhiYmM0ZGMyNGZiMzljNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVz
L3NyYy9zcmMvb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyLmMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19tdWx0aXN0
cmVhbV9kZWNvZGVyLmMKQEAgLTM3LDE1ICszNywxOCBAQAogI2luY2x1ZGUgImZsb2F0X2Nhc3Qu
aCIKICNpbmNsdWRlICJvc19zdXBwb3J0LmgiCiAKLXN0cnVjdCBPcHVzTVNEZWNvZGVyIHsKLSAg
IENoYW5uZWxMYXlvdXQgbGF5b3V0OwotICAgLyogRGVjb2RlciBzdGF0ZXMgZ28gaGVyZSAqLwot
fTsKLQotCisvKiBERUNPREVSICovCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9IQVJERU5JTkcpIHx8
IGRlZmluZWQoRU5BQkxFX0FTU0VSVElPTlMpCitzdGF0aWMgdm9pZCB2YWxpZGF0ZV9tc19kZWNv
ZGVyKE9wdXNNU0RlY29kZXIgKnN0KQoreworICAgdmFsaWRhdGVfbGF5b3V0KCZzdC0+bGF5b3V0
KTsKK30KKyNkZWZpbmUgVkFMSURBVEVfTVNfREVDT0RFUihzdCkgdmFsaWRhdGVfbXNfZGVjb2Rl
cihzdCkKKyNlbHNlCisjZGVmaW5lIFZBTElEQVRFX01TX0RFQ09ERVIoc3QpCisjZW5kaWYKIAot
LyogREVDT0RFUiAqLwogCiBvcHVzX2ludDMyIG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9nZXRf
c2l6ZShpbnQgbmJfc3RyZWFtcywgaW50IG5iX2NvdXBsZWRfc3RyZWFtcykKIHsKQEAgLTE0Mywx
NSArMTQ2LDYgQEAgT3B1c01TRGVjb2RlciAqb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2NyZWF0
ZSgKICAgIHJldHVybiBzdDsKIH0KIAotdHlwZWRlZiB2b2lkICgqb3B1c19jb3B5X2NoYW5uZWxf
b3V0X2Z1bmMpKAotICB2b2lkICpkc3QsCi0gIGludCBkc3Rfc3RyaWRlLAotICBpbnQgZHN0X2No
YW5uZWwsCi0gIGNvbnN0IG9wdXNfdmFsMTYgKnNyYywKLSAgaW50IHNyY19zdHJpZGUsCi0gIGlu
dCBmcmFtZV9zaXplCi0pOwotCiBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fcGFja2V0X3Zh
bGlkYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCiAgICAgICBvcHVzX2ludDMyIGxlbiwg
aW50IG5iX3N0cmVhbXMsIG9wdXNfaW50MzIgRnMpCiB7CkBAIC0xODEsNyArMTc1LDcgQEAgc3Rh
dGljIGludCBvcHVzX211bHRpc3RyZWFtX3BhY2tldF92YWxpZGF0ZShjb25zdCB1bnNpZ25lZCBj
aGFyICpkYXRhLAogICAgcmV0dXJuIHNhbXBsZXM7CiB9CiAKLXN0YXRpYyBpbnQgb3B1c19tdWx0
aXN0cmVhbV9kZWNvZGVfbmF0aXZlKAoraW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2
ZSgKICAgICAgIE9wdXNNU0RlY29kZXIgKnN0LAogICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq
ZGF0YSwKICAgICAgIG9wdXNfaW50MzIgbGVuLApAQCAtMTg5LDcgKzE4Myw4IEBAIHN0YXRpYyBp
bnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfbmF0aXZlKAogICAgICAgb3B1c19jb3B5X2NoYW5u
ZWxfb3V0X2Z1bmMgY29weV9jaGFubmVsX291dCwKICAgICAgIGludCBmcmFtZV9zaXplLAogICAg
ICAgaW50IGRlY29kZV9mZWMsCi0gICAgICBpbnQgc29mdF9jbGlwCisgICAgICBpbnQgc29mdF9j
bGlwLAorICAgICAgdm9pZCAqdXNlcl9kYXRhCiApCiB7CiAgICBvcHVzX2ludDMyIEZzOwpAQCAt
MjAxLDggKzE5NiwxNCBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2
ZSgKICAgIFZBUkRFQ0wob3B1c192YWwxNiwgYnVmKTsKICAgIEFMTE9DX1NUQUNLOwogCisgICBW
QUxJREFURV9NU19ERUNPREVSKHN0KTsKKyAgIGlmIChmcmFtZV9zaXplIDw9IDApCisgICB7Cisg
ICAgICBSRVNUT1JFX1NUQUNLOworICAgICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKKyAgIH0KICAg
IC8qIExpbWl0IGZyYW1lX3NpemUgdG8gYXZvaWQgZXhjZXNzaXZlIHN0YWNrIGFsbG9jYXRpb25z
LiAqLwotICAgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2N0bChzdCwgT1BVU19HRVRfU0FNUExF
X1JBVEUoJkZzKSk7CisgICBNVVNUX1NVQ0NFRUQob3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2N0
bChzdCwgT1BVU19HRVRfU0FNUExFX1JBVEUoJkZzKSkpOwogICAgZnJhbWVfc2l6ZSA9IElNSU4o
ZnJhbWVfc2l6ZSwgRnMvMjUqMyk7CiAgICBBTExPQyhidWYsIDIqZnJhbWVfc2l6ZSwgb3B1c192
YWwxNik7CiAgICBwdHIgPSAoY2hhciopc3QgKyBhbGlnbihzaXplb2YoT3B1c01TRGVjb2Rlcikp
OwpAQCAtMjUwLDggKzI1MSwxMSBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rl
X25hdGl2ZSgKICAgICAgIH0KICAgICAgIHBhY2tldF9vZmZzZXQgPSAwOwogICAgICAgcmV0ID0g
b3B1c19kZWNvZGVfbmF0aXZlKGRlYywgZGF0YSwgbGVuLCBidWYsIGZyYW1lX3NpemUsIGRlY29k
ZV9mZWMsIHMhPXN0LT5sYXlvdXQubmJfc3RyZWFtcy0xLCAmcGFja2V0X29mZnNldCwgc29mdF9j
bGlwKTsKLSAgICAgIGRhdGEgKz0gcGFja2V0X29mZnNldDsKLSAgICAgIGxlbiAtPSBwYWNrZXRf
b2Zmc2V0OworICAgICAgaWYgKCFkb19wbGMpCisgICAgICB7CisgICAgICAgIGRhdGEgKz0gcGFj
a2V0X29mZnNldDsKKyAgICAgICAgbGVuIC09IHBhY2tldF9vZmZzZXQ7CisgICAgICB9CiAgICAg
ICBpZiAocmV0IDw9IDApCiAgICAgICB7CiAgICAgICAgICBSRVNUT1JFX1NUQUNLOwpAQCAtMjY2
LDcgKzI3MCw3IEBAIHN0YXRpYyBpbnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfbmF0aXZlKAog
ICAgICAgICAgd2hpbGUgKCAoY2hhbiA9IGdldF9sZWZ0X2NoYW5uZWwoJnN0LT5sYXlvdXQsIHMs
IHByZXYpKSAhPSAtMSkKICAgICAgICAgIHsKICAgICAgICAgICAgICgqY29weV9jaGFubmVsX291
dCkocGNtLCBzdC0+bGF5b3V0Lm5iX2NoYW5uZWxzLCBjaGFuLAotICAgICAgICAgICAgICAgYnVm
LCAyLCBmcmFtZV9zaXplKTsKKyAgICAgICAgICAgICAgIGJ1ZiwgMiwgZnJhbWVfc2l6ZSwgdXNl
cl9kYXRhKTsKICAgICAgICAgICAgIHByZXYgPSBjaGFuOwogICAgICAgICAgfQogICAgICAgICAg
cHJldiA9IC0xOwpAQCAtMjc0LDcgKzI3OCw3IEBAIHN0YXRpYyBpbnQgb3B1c19tdWx0aXN0cmVh
bV9kZWNvZGVfbmF0aXZlKAogICAgICAgICAgd2hpbGUgKCAoY2hhbiA9IGdldF9yaWdodF9jaGFu
bmVsKCZzdC0+bGF5b3V0LCBzLCBwcmV2KSkgIT0gLTEpCiAgICAgICAgICB7CiAgICAgICAgICAg
ICAoKmNvcHlfY2hhbm5lbF9vdXQpKHBjbSwgc3QtPmxheW91dC5uYl9jaGFubmVscywgY2hhbiwK
LSAgICAgICAgICAgICAgIGJ1ZisxLCAyLCBmcmFtZV9zaXplKTsKKyAgICAgICAgICAgICAgIGJ1
ZisxLCAyLCBmcmFtZV9zaXplLCB1c2VyX2RhdGEpOwogICAgICAgICAgICAgcHJldiA9IGNoYW47
CiAgICAgICAgICB9CiAgICAgICB9IGVsc2UgewpAQCAtMjg0LDcgKzI4OCw3IEBAIHN0YXRpYyBp
bnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfbmF0aXZlKAogICAgICAgICAgd2hpbGUgKCAoY2hh
biA9IGdldF9tb25vX2NoYW5uZWwoJnN0LT5sYXlvdXQsIHMsIHByZXYpKSAhPSAtMSkKICAgICAg
ICAgIHsKICAgICAgICAgICAgICgqY29weV9jaGFubmVsX291dCkocGNtLCBzdC0+bGF5b3V0Lm5i
X2NoYW5uZWxzLCBjaGFuLAotICAgICAgICAgICAgICAgYnVmLCAxLCBmcmFtZV9zaXplKTsKKyAg
ICAgICAgICAgICAgIGJ1ZiwgMSwgZnJhbWVfc2l6ZSwgdXNlcl9kYXRhKTsKICAgICAgICAgICAg
IHByZXYgPSBjaGFuOwogICAgICAgICAgfQogICAgICAgfQpAQCAtMjk1LDcgKzI5OSw3IEBAIHN0
YXRpYyBpbnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfbmF0aXZlKAogICAgICAgaWYgKHN0LT5s
YXlvdXQubWFwcGluZ1tjXSA9PSAyNTUpCiAgICAgICB7CiAgICAgICAgICAoKmNvcHlfY2hhbm5l
bF9vdXQpKHBjbSwgc3QtPmxheW91dC5uYl9jaGFubmVscywgYywKLSAgICAgICAgICAgIE5VTEws
IDAsIGZyYW1lX3NpemUpOworICAgICAgICAgICAgTlVMTCwgMCwgZnJhbWVfc2l6ZSwgdXNlcl9k
YXRhKTsKICAgICAgIH0KICAgIH0KICAgIFJFU1RPUkVfU1RBQ0s7CkBAIC0zMDksMTEgKzMxMywx
MyBAQCBzdGF0aWMgdm9pZCBvcHVzX2NvcHlfY2hhbm5lbF9vdXRfZmxvYXQoCiAgIGludCBkc3Rf
Y2hhbm5lbCwKICAgY29uc3Qgb3B1c192YWwxNiAqc3JjLAogICBpbnQgc3JjX3N0cmlkZSwKLSAg
aW50IGZyYW1lX3NpemUKKyAgaW50IGZyYW1lX3NpemUsCisgIHZvaWQgKnVzZXJfZGF0YQogKQog
ewogICAgZmxvYXQgKmZsb2F0X2RzdDsKICAgIG9wdXNfaW50MzIgaTsKKyAgICh2b2lkKXVzZXJf
ZGF0YTsKICAgIGZsb2F0X2RzdCA9IChmbG9hdCopZHN0OwogICAgaWYgKHNyYyAhPSBOVUxMKQog
ICAgewpAQCAtMzM4LDExICszNDQsMTMgQEAgc3RhdGljIHZvaWQgb3B1c19jb3B5X2NoYW5uZWxf
b3V0X3Nob3J0KAogICBpbnQgZHN0X2NoYW5uZWwsCiAgIGNvbnN0IG9wdXNfdmFsMTYgKnNyYywK
ICAgaW50IHNyY19zdHJpZGUsCi0gIGludCBmcmFtZV9zaXplCisgIGludCBmcmFtZV9zaXplLAor
ICB2b2lkICp1c2VyX2RhdGEKICkKIHsKICAgIG9wdXNfaW50MTYgKnNob3J0X2RzdDsKICAgIG9w
dXNfaW50MzIgaTsKKyAgICh2b2lkKXVzZXJfZGF0YTsKICAgIHNob3J0X2RzdCA9IChvcHVzX2lu
dDE2Kilkc3Q7CiAgICBpZiAoc3JjICE9IE5VTEwpCiAgICB7CkBAIC0zNzMsNyArMzgxLDcgQEAg
aW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlKAogKQogewogICAgcmV0dXJuIG9wdXNfbXVsdGlz
dHJlYW1fZGVjb2RlX25hdGl2ZShzdCwgZGF0YSwgbGVuLAotICAgICAgIHBjbSwgb3B1c19jb3B5
X2NoYW5uZWxfb3V0X3Nob3J0LCBmcmFtZV9zaXplLCBkZWNvZGVfZmVjLCAwKTsKKyAgICAgICBw
Y20sIG9wdXNfY29weV9jaGFubmVsX291dF9zaG9ydCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywg
MCwgTlVMTCk7CiB9CiAKICNpZm5kZWYgRElTQUJMRV9GTE9BVF9BUEkKQEAgLTM4MSw3ICszODks
NyBAQCBpbnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVfZmxvYXQoT3B1c01TRGVjb2RlciAqc3Qs
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCiAgICAgICBvcHVzX2ludDMyIGxlbiwgZmxvYXQg
KnBjbSwgaW50IGZyYW1lX3NpemUsIGludCBkZWNvZGVfZmVjKQogewogICAgcmV0dXJuIG9wdXNf
bXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2ZShzdCwgZGF0YSwgbGVuLAotICAgICAgIHBjbSwgb3B1
c19jb3B5X2NoYW5uZWxfb3V0X2Zsb2F0LCBmcmFtZV9zaXplLCBkZWNvZGVfZmVjLCAwKTsKKyAg
ICAgICBwY20sIG9wdXNfY29weV9jaGFubmVsX291dF9mbG9hdCwgZnJhbWVfc2l6ZSwgZGVjb2Rl
X2ZlYywgMCwgTlVMTCk7CiB9CiAjZW5kaWYKIApAQCAtMzkxLDMyICszOTksMzAgQEAgaW50IG9w
dXNfbXVsdGlzdHJlYW1fZGVjb2RlKE9wdXNNU0RlY29kZXIgKnN0LCBjb25zdCB1bnNpZ25lZCBj
aGFyICpkYXRhLAogICAgICAgb3B1c19pbnQzMiBsZW4sIG9wdXNfaW50MTYgKnBjbSwgaW50IGZy
YW1lX3NpemUsIGludCBkZWNvZGVfZmVjKQogewogICAgcmV0dXJuIG9wdXNfbXVsdGlzdHJlYW1f
ZGVjb2RlX25hdGl2ZShzdCwgZGF0YSwgbGVuLAotICAgICAgIHBjbSwgb3B1c19jb3B5X2NoYW5u
ZWxfb3V0X3Nob3J0LCBmcmFtZV9zaXplLCBkZWNvZGVfZmVjLCAxKTsKKyAgICAgICBwY20sIG9w
dXNfY29weV9jaGFubmVsX291dF9zaG9ydCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2ZlYywgMSwgTlVM
TCk7CiB9CiAKIGludCBvcHVzX211bHRpc3RyZWFtX2RlY29kZV9mbG9hdCgKICAgICAgIE9wdXNN
U0RlY29kZXIgKnN0LAogICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKICAgICAgIG9w
dXNfaW50MzIgbGVuLAotICAgICAgZmxvYXQgKnBjbSwKKyAgICAgIG9wdXNfdmFsMTYgKnBjbSwK
ICAgICAgIGludCBmcmFtZV9zaXplLAogICAgICAgaW50IGRlY29kZV9mZWMKICkKIHsKICAgIHJl
dHVybiBvcHVzX211bHRpc3RyZWFtX2RlY29kZV9uYXRpdmUoc3QsIGRhdGEsIGxlbiwKLSAgICAg
ICBwY20sIG9wdXNfY29weV9jaGFubmVsX291dF9mbG9hdCwgZnJhbWVfc2l6ZSwgZGVjb2RlX2Zl
YywgMCk7CisgICAgICAgcGNtLCBvcHVzX2NvcHlfY2hhbm5lbF9vdXRfZmxvYXQsIGZyYW1lX3Np
emUsIGRlY29kZV9mZWMsIDAsIE5VTEwpOwogfQogI2VuZGlmCiAKLWludCBvcHVzX211bHRpc3Ry
ZWFtX2RlY29kZXJfY3RsKE9wdXNNU0RlY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwgLi4uKQoraW50
IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGxfdmFfbGlzdChPcHVzTVNEZWNvZGVyICpzdCwg
aW50IHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgYXApCiB7Ci0gICB2YV9saXN0IGFwOwogICAgaW50IGNvdXBsZWRfc2l6ZSwgbW9ub19z
aXplOwogICAgY2hhciAqcHRyOwogICAgaW50IHJldCA9IE9QVVNfT0s7CiAKLSAgIHZhX3N0YXJ0
KGFwLCByZXF1ZXN0KTsKLQogICAgY291cGxlZF9zaXplID0gb3B1c19kZWNvZGVyX2dldF9zaXpl
KDIpOwogICAgbW9ub19zaXplID0gb3B1c19kZWNvZGVyX2dldF9zaXplKDEpOwogICAgcHRyID0g
KGNoYXIqKXN0ICsgYWxpZ24oc2l6ZW9mKE9wdXNNU0RlY29kZXIpKTsKQEAgLTQ4NCw3ICs0OTAs
NyBAQCBpbnQgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2N0bChPcHVzTVNEZWNvZGVyICpzdCwg
aW50IHJlcXVlc3QsIC4uLikKICAgICAgICAgICBPcHVzRGVjb2RlciAqKnZhbHVlOwogICAgICAg
ICAgIHN0cmVhbV9pZCA9IHZhX2FyZyhhcCwgb3B1c19pbnQzMik7CiAgICAgICAgICAgaWYgKHN0
cmVhbV9pZDwwIHx8IHN0cmVhbV9pZCA+PSBzdC0+bGF5b3V0Lm5iX3N0cmVhbXMpCi0gICAgICAg
ICAgICAgcmV0ID0gT1BVU19CQURfQVJHOworICAgICAgICAgICAgIGdvdG8gYmFkX2FyZzsKICAg
ICAgICAgICB2YWx1ZSA9IHZhX2FyZyhhcCwgT3B1c0RlY29kZXIqKik7CiAgICAgICAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgICB7CkBAIC01MjUsMTQgKzUzMSwyMCBAQCBpbnQgb3B1c19tdWx0
aXN0cmVhbV9kZWNvZGVyX2N0bChPcHVzTVNEZWNvZGVyICpzdCwgaW50IHJlcXVlc3QsIC4uLikK
ICAgICAgICAgICByZXQgPSBPUFVTX1VOSU1QTEVNRU5URUQ7CiAgICAgICAgYnJlYWs7CiAgICB9
Ci0KLSAgIHZhX2VuZChhcCk7CiAgICByZXR1cm4gcmV0OwogYmFkX2FyZzoKLSAgIHZhX2VuZChh
cCk7CiAgICByZXR1cm4gT1BVU19CQURfQVJHOwogfQogCitpbnQgb3B1c19tdWx0aXN0cmVhbV9k
ZWNvZGVyX2N0bChPcHVzTVNEZWNvZGVyICpzdCwgaW50IHJlcXVlc3QsIC4uLikKK3sKKyAgIGlu
dCByZXQ7CisgICB2YV9saXN0IGFwOworICAgdmFfc3RhcnQoYXAsIHJlcXVlc3QpOworICAgcmV0
ID0gb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2N0bF92YV9saXN0KHN0LCByZXF1ZXN0LCBhcCk7
CisgICB2YV9lbmQoYXApOworICAgcmV0dXJuIHJldDsKK30KIAogdm9pZCBvcHVzX211bHRpc3Ry
ZWFtX2RlY29kZXJfZGVzdHJveShPcHVzTVNEZWNvZGVyICpzdCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3Jj
L29wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVy
LmMKaW5kZXggMDMyZmMwMDM5YjkxMzEyZTc1NmJmODljNmJmMGRlMDUyZjY4YWNmMS4uOTMyMDRh
MTRjMTIzNTE4YWNlNWU3YmYwYjlkYjdlZjZjYzFlMGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19t
dWx0aXN0cmVhbV9lbmNvZGVyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyLmMK
QEAgLTYxLDM3ICs2MSw2IEBAIHN0YXRpYyBjb25zdCBWb3JiaXNMYXlvdXQgdm9yYmlzX21hcHBp
bmdzWzhdID0gewogICAgICAgezUsIDMsIHswLCA2LCAxLCAyLCAzLCA0LCA1LCA3fX0sIC8qIDg6
IDcuMSBzdXJyb3VuZCAqLwogfTsKIAotdHlwZWRlZiB2b2lkICgqb3B1c19jb3B5X2NoYW5uZWxf
aW5fZnVuYykoCi0gIG9wdXNfdmFsMTYgKmRzdCwKLSAgaW50IGRzdF9zdHJpZGUsCi0gIGNvbnN0
IHZvaWQgKnNyYywKLSAgaW50IHNyY19zdHJpZGUsCi0gIGludCBzcmNfY2hhbm5lbCwKLSAgaW50
IGZyYW1lX3NpemUKLSk7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gIE1BUFBJTkdfVFlQRV9OT05FLAot
ICBNQVBQSU5HX1RZUEVfU1VSUk9VTkQKLSNpZmRlZiBFTkFCTEVfRVhQRVJJTUVOVEFMX0FNQklT
T05JQ1MKLSAgLCAgLyogRG8gbm90IGluY2x1ZGUgY29tbWEgYXQgZW5kIG9mIGVudW1lcmF0b3Ig
bGlzdCAqLwotICBNQVBQSU5HX1RZUEVfQU1CSVNPTklDUwotI2VuZGlmCi19IE1hcHBpbmdUeXBl
OwotCi1zdHJ1Y3QgT3B1c01TRW5jb2RlciB7Ci0gICBDaGFubmVsTGF5b3V0IGxheW91dDsKLSAg
IGludCBhcmNoOwotICAgaW50IGxmZV9zdHJlYW07Ci0gICBpbnQgYXBwbGljYXRpb247Ci0gICBp
bnQgdmFyaWFibGVfZHVyYXRpb247Ci0gICBNYXBwaW5nVHlwZSBtYXBwaW5nX3R5cGU7Ci0gICBv
cHVzX2ludDMyIGJpdHJhdGVfYnBzOwotICAgLyogRW5jb2RlciBzdGF0ZXMgZ28gaGVyZSAqLwot
ICAgLyogdGhlbiBvcHVzX3ZhbDMyIHdpbmRvd19tZW1bY2hhbm5lbHMqMTIwXTsgKi8KLSAgIC8q
IHRoZW4gb3B1c192YWwzMiBwcmVlbXBoX21lbVtjaGFubmVsc107ICovCi19OwotCiBzdGF0aWMg
b3B1c192YWwzMiAqbXNfZ2V0X3ByZWVtcGhfbWVtKE9wdXNNU0VuY29kZXIgKnN0KQogewogICAg
aW50IHM7CkBAIC0xMzIsMTkgKzEwMSwyMCBAQCBzdGF0aWMgb3B1c192YWwzMiAqbXNfZ2V0X3dp
bmRvd19tZW0oT3B1c01TRW5jb2RlciAqc3QpCiAgICByZXR1cm4gKG9wdXNfdmFsMzIqKSh2b2lk
KilwdHI7CiB9CiAKLSNpZmRlZiBFTkFCTEVfRVhQRVJJTUVOVEFMX0FNQklTT05JQ1MKIHN0YXRp
YyBpbnQgdmFsaWRhdGVfYW1iaXNvbmljcyhpbnQgbmJfY2hhbm5lbHMsIGludCAqbmJfc3RyZWFt
cywgaW50ICpuYl9jb3VwbGVkX3N0cmVhbXMpCiB7CiAgICBpbnQgb3JkZXJfcGx1c19vbmU7CiAg
ICBpbnQgYWNuX2NoYW5uZWxzOwogICAgaW50IG5vbmRpZWdldGljX2NoYW5uZWxzOwogCisgICBp
ZiAobmJfY2hhbm5lbHMgPCAxIHx8IG5iX2NoYW5uZWxzID4gMjI3KQorICAgICAgcmV0dXJuIDA7
CisKICAgIG9yZGVyX3BsdXNfb25lID0gaXNxcnQzMihuYl9jaGFubmVscyk7CiAgICBhY25fY2hh
bm5lbHMgPSBvcmRlcl9wbHVzX29uZSAqIG9yZGVyX3BsdXNfb25lOwogICAgbm9uZGllZ2V0aWNf
Y2hhbm5lbHMgPSBuYl9jaGFubmVscyAtIGFjbl9jaGFubmVsczsKIAotICAgaWYgKG9yZGVyX3Bs
dXNfb25lIDwgMSB8fCBvcmRlcl9wbHVzX29uZSA+IDE1IHx8Ci0gICAgICAgKG5vbmRpZWdldGlj
X2NoYW5uZWxzICE9IDAgJiYgbm9uZGllZ2V0aWNfY2hhbm5lbHMgIT0gMikpCisgICBpZiAobm9u
ZGllZ2V0aWNfY2hhbm5lbHMgIT0gMCAmJiBub25kaWVnZXRpY19jaGFubmVscyAhPSAyKQogICAg
ICAgcmV0dXJuIDA7CiAKICAgIGlmIChuYl9zdHJlYW1zKQpAQCAtMTUzLDcgKzEyMyw2IEBAIHN0
YXRpYyBpbnQgdmFsaWRhdGVfYW1iaXNvbmljcyhpbnQgbmJfY2hhbm5lbHMsIGludCAqbmJfc3Ry
ZWFtcywgaW50ICpuYl9jb3VwbGVkCiAgICAgICAqbmJfY291cGxlZF9zdHJlYW1zID0gbm9uZGll
Z2V0aWNfY2hhbm5lbHMgIT0gMDsKICAgIHJldHVybiAxOwogfQotI2VuZGlmCiAKIHN0YXRpYyBp
bnQgdmFsaWRhdGVfZW5jb2Rlcl9sYXlvdXQoY29uc3QgQ2hhbm5lbExheW91dCAqbGF5b3V0KQog
ewpAQCAtMjk2LDcgKzI2NSw3IEBAIHZvaWQgc3Vycm91bmRfYW5hbHlzaXMoY29uc3QgQ0VMVE1v
ZGUgKmNlbHRfbW9kZSwgY29uc3Qgdm9pZCAqcGNtLCBvcHVzX3ZhbDE2ICpiCiAgICAgICBpbnQg
bmJfZnJhbWVzID0gZnJhbWVfc2l6ZS9mcmVxX3NpemU7CiAgICAgICBjZWx0X2Fzc2VydChuYl9m
cmFtZXMqZnJlcV9zaXplID09IGZyYW1lX3NpemUpOwogICAgICAgT1BVU19DT1BZKGluLCBtZW0r
YypvdmVybGFwLCBvdmVybGFwKTsKLSAgICAgICgqY29weV9jaGFubmVsX2luKSh4LCAxLCBwY20s
IGNoYW5uZWxzLCBjLCBsZW4pOworICAgICAgKCpjb3B5X2NoYW5uZWxfaW4pKHgsIDEsIHBjbSwg
Y2hhbm5lbHMsIGMsIGxlbiwgTlVMTCk7CiAgICAgICBjZWx0X3ByZWVtcGhhc2lzKHgsIGluK292
ZXJsYXAsIGZyYW1lX3NpemUsIDEsIHVwc2FtcGxlLCBjZWx0X21vZGUtPnByZWVtcGgsIHByZWVt
cGhfbWVtK2MsIDApOwogI2lmbmRlZiBGSVhFRF9QT0lOVAogICAgICAgewpAQCAtNDQzLDEyICs0
MTIsMTAgQEAgb3B1c19pbnQzMiBvcHVzX211bHRpc3RyZWFtX3N1cnJvdW5kX2VuY29kZXJfZ2V0
X3NpemUoaW50IGNoYW5uZWxzLCBpbnQgbWFwcGluZ18KICAgIHsKICAgICAgIG5iX3N0cmVhbXM9
Y2hhbm5lbHM7CiAgICAgICBuYl9jb3VwbGVkX3N0cmVhbXM9MDsKLSNpZmRlZiBFTkFCTEVfRVhQ
RVJJTUVOVEFMX0FNQklTT05JQ1MKLSAgIH0gZWxzZSBpZiAobWFwcGluZ19mYW1pbHk9PTI1NCkK
KyAgIH0gZWxzZSBpZiAobWFwcGluZ19mYW1pbHk9PTIpCiAgICB7CiAgICAgICBpZiAoIXZhbGlk
YXRlX2FtYmlzb25pY3MoY2hhbm5lbHMsICZuYl9zdHJlYW1zLCAmbmJfY291cGxlZF9zdHJlYW1z
KSkKICAgICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAgICB9IGVsc2UKICAgICAgIHJldHVybiAw
OwogICAgc2l6ZSA9IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9nZXRfc2l6ZShuYl9zdHJlYW1z
LCBuYl9jb3VwbGVkX3N0cmVhbXMpOwpAQCAtNDk1LDExICs0NjIsOSBAQCBzdGF0aWMgaW50IG9w
dXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9pbml0X2ltcGwoCiAgICBpZiAobWFwcGluZ190eXBlID09
IE1BUFBJTkdfVFlQRV9TVVJST1VORCAmJgogICAgICAgICF2YWxpZGF0ZV9lbmNvZGVyX2xheW91
dCgmc3QtPmxheW91dCkpCiAgICAgICByZXR1cm4gT1BVU19CQURfQVJHOwotI2lmZGVmIEVOQUJM
RV9FWFBFUklNRU5UQUxfQU1CSVNPTklDUwogICAgaWYgKG1hcHBpbmdfdHlwZSA9PSBNQVBQSU5H
X1RZUEVfQU1CSVNPTklDUyAmJgogICAgICAgICF2YWxpZGF0ZV9hbWJpc29uaWNzKHN0LT5sYXlv
dXQubmJfY2hhbm5lbHMsIE5VTEwsIE5VTEwpKQogICAgICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsK
LSNlbmRpZgogICAgcHRyID0gKGNoYXIqKXN0ICsgYWxpZ24oc2l6ZW9mKE9wdXNNU0VuY29kZXIp
KTsKICAgIGNvdXBsZWRfc2l6ZSA9IG9wdXNfZW5jb2Rlcl9nZXRfc2l6ZSgyKTsKICAgIG1vbm9f
c2l6ZSA9IG9wdXNfZW5jb2Rlcl9nZXRfc2l6ZSgxKTsKQEAgLTU5MSw4ICs1NTYsNyBAQCBpbnQg
b3B1c19tdWx0aXN0cmVhbV9zdXJyb3VuZF9lbmNvZGVyX2luaXQoCiAgICAgICAqY291cGxlZF9z
dHJlYW1zPTA7CiAgICAgICBmb3IoaT0wO2k8Y2hhbm5lbHM7aSsrKQogICAgICAgICAgbWFwcGlu
Z1tpXSA9IGk7Ci0jaWZkZWYgRU5BQkxFX0VYUEVSSU1FTlRBTF9BTUJJU09OSUNTCi0gICB9IGVs
c2UgaWYgKG1hcHBpbmdfZmFtaWx5PT0yNTQpCisgICB9IGVsc2UgaWYgKG1hcHBpbmdfZmFtaWx5
PT0yKQogICAgewogICAgICAgaW50IGk7CiAgICAgICBpZiAoIXZhbGlkYXRlX2FtYmlzb25pY3Mo
Y2hhbm5lbHMsIHN0cmVhbXMsIGNvdXBsZWRfc3RyZWFtcykpCkBAIC02MDEsMTcgKzU2NSwxNCBA
QCBpbnQgb3B1c19tdWx0aXN0cmVhbV9zdXJyb3VuZF9lbmNvZGVyX2luaXQoCiAgICAgICAgICBt
YXBwaW5nW2ldID0gaSArICgqY291cGxlZF9zdHJlYW1zICogMik7CiAgICAgICBmb3IoaSA9IDA7
IGkgPCAqY291cGxlZF9zdHJlYW1zICogMjsgaSsrKQogICAgICAgICAgbWFwcGluZ1tpICsgKCpz
dHJlYW1zIC0gKmNvdXBsZWRfc3RyZWFtcyldID0gaTsKLSNlbmRpZgogICAgfSBlbHNlCiAgICAg
ICByZXR1cm4gT1BVU19VTklNUExFTUVOVEVEOwogCiAgICBpZiAoY2hhbm5lbHM+MiAmJiBtYXBw
aW5nX2ZhbWlseT09MSkgewogICAgICAgbWFwcGluZ190eXBlID0gTUFQUElOR19UWVBFX1NVUlJP
VU5EOwotI2lmZGVmIEVOQUJMRV9FWFBFUklNRU5UQUxfQU1CSVNPTklDUwotICAgfSBlbHNlIGlm
IChtYXBwaW5nX2ZhbWlseT09MjU0KQorICAgfSBlbHNlIGlmIChtYXBwaW5nX2ZhbWlseT09MikK
ICAgIHsKICAgICAgIG1hcHBpbmdfdHlwZSA9IE1BUFBJTkdfVFlQRV9BTUJJU09OSUNTOwotI2Vu
ZGlmCiAgICB9IGVsc2UKICAgIHsKICAgICAgIG1hcHBpbmdfdHlwZSA9IE1BUFBJTkdfVFlQRV9O
T05FOwpAQCAtNzcyLDcgKzczMyw2IEBAIHN0YXRpYyB2b2lkIHN1cnJvdW5kX3JhdGVfYWxsb2Nh
dGlvbigKICAgIH0KIH0KIAotI2lmZGVmIEVOQUJMRV9FWFBFUklNRU5UQUxfQU1CSVNPTklDUwog
c3RhdGljIHZvaWQgYW1iaXNvbmljc19yYXRlX2FsbG9jYXRpb24oCiAgICAgICBPcHVzTVNFbmNv
ZGVyICpzdCwKICAgICAgIG9wdXNfaW50MzIgKnJhdGUsCkBAIC03ODEsMjQgKzc0MSwxNSBAQCBz
dGF0aWMgdm9pZCBhbWJpc29uaWNzX3JhdGVfYWxsb2NhdGlvbigKICAgICAgICkKIHsKICAgIGlu
dCBpOwotICAgaW50IHRvdGFsX3JhdGU7Ci0gICBpbnQgZGlyZWN0aW9uYWxfcmF0ZTsKLSAgIGlu
dCBub25kaXJlY3Rpb25hbF9yYXRlOwotICAgaW50IGxlZnRvdmVyX2JpdHM7Ci0KLSAgIC8qIEVh
Y2ggbm9uZGlyZWN0aW9uYWwgY2hhbm5lbCBnZXRzIChyYXRlX3JhdGlvX251bSAvIHJhdGVfcmF0
aW9fZGVuKSB0aW1lcwotICAgICogYXMgbWFueSBiaXRzIGFzIGFsbCBvdGhlciBhbWJpc29uaWNz
IGNoYW5uZWxzLgotICAgICovCi0gICBjb25zdCBpbnQgcmF0ZV9yYXRpb19udW0gPSA0OwotICAg
Y29uc3QgaW50IHJhdGVfcmF0aW9fZGVuID0gMzsKKyAgIG9wdXNfaW50MzIgdG90YWxfcmF0ZTsK
KyAgIG9wdXNfaW50MzIgcGVyX3N0cmVhbV9yYXRlOworCiAgICBjb25zdCBpbnQgbmJfY2hhbm5l
bHMgPSBzdC0+bGF5b3V0Lm5iX3N0cmVhbXMgKyBzdC0+bGF5b3V0Lm5iX2NvdXBsZWRfc3RyZWFt
czsKLSAgIGNvbnN0IGludCBuYl9ub25kaXJlY3Rpb25hbF9jaGFubmVscyA9IHN0LT5sYXlvdXQu
bmJfY291cGxlZF9zdHJlYW1zICogMiArIDE7Ci0gICBjb25zdCBpbnQgbmJfZGlyZWN0aW9uYWxf
Y2hhbm5lbHMgPSBzdC0+bGF5b3V0Lm5iX3N0cmVhbXMgLSAxOwogCiAgICBpZiAoc3QtPmJpdHJh
dGVfYnBzPT1PUFVTX0FVVE8pCiAgICB7CiAgICAgICB0b3RhbF9yYXRlID0gKHN0LT5sYXlvdXQu
bmJfY291cGxlZF9zdHJlYW1zICsgc3QtPmxheW91dC5uYl9zdHJlYW1zKSAqCi0gICAgICAgICAo
RnMrNjAqRnMvZnJhbWVfc2l6ZSkgKyBzdC0+bGF5b3V0Lm5iX3N0cmVhbXMgKiAxNTAwMDsKKyAg
ICAgICAgIChGcys2MCpGcy9mcmFtZV9zaXplKSArIHN0LT5sYXlvdXQubmJfc3RyZWFtcyAqIChv
cHVzX2ludDMyKTE1MDAwOwogICAgfSBlbHNlIGlmIChzdC0+Yml0cmF0ZV9icHM9PU9QVVNfQklU
UkFURV9NQVgpCiAgICB7CiAgICAgICB0b3RhbF9yYXRlID0gbmJfY2hhbm5lbHMgKiAzMjAwMDA7
CkBAIC04MDcsNDkgKzc1OCwxNCBAQCBzdGF0aWMgdm9pZCBhbWJpc29uaWNzX3JhdGVfYWxsb2Nh
dGlvbigKICAgICAgIHRvdGFsX3JhdGUgPSBzdC0+Yml0cmF0ZV9icHM7CiAgICB9CiAKLSAgIC8q
IExldCB5IGJlIHRoZSBkaXJlY3Rpb25hbCByYXRlLCBtIGJlIHRoZSBudW0gb2Ygbm9uZGlyZWN0
aW9uYWwgY2hhbm5lbHMKLSAgICAqICAgbSA9IChzICsgMSkKLSAgICAqIGFuZCBsZXQgcCwgcSBi
ZSBpbnRlZ2VycyBzdWNoIHRoYXQgdGhlIG5vbmRpcmVjdGlvbmFsIHJhdGUgaXMKLSAgICAqICAg
bV9yYXRlID0gKHAgLyBxKSAqIHkKLSAgICAqIEFsc28gbGV0IFQgYmUgdGhlIHRvdGFsIGJpdHJh
dGUgdG8gYWxsb2NhdGUuIFRoZW4KLSAgICAqICAgVCA9IChuIC0gbSkgKiB5ICsgbSAqIG1fcmF0
ZQotICAgICogU29sdmluZyBmb3IgeSwKLSAgICAqICAgeSA9IChxICogVCkgLyAobSAqIChwIC0g
cSkgKyBuICogcSkKLSAgICAqLwotICAgZGlyZWN0aW9uYWxfcmF0ZSA9Ci0gICAgICB0b3RhbF9y
YXRlICogcmF0ZV9yYXRpb19kZW4KLSAgICAgIC8gKG5iX25vbmRpcmVjdGlvbmFsX2NoYW5uZWxz
ICogKHJhdGVfcmF0aW9fbnVtIC0gcmF0ZV9yYXRpb19kZW4pCi0gICAgICAgKyBuYl9jaGFubmVs
cyAqIHJhdGVfcmF0aW9fZGVuKTsKLQotICAgLyogQ2FsY3VsYXRlIHRoZSBub25kaXJlY3Rpb25h
bCByYXRlLgotICAgICogICBtX3JhdGUgPSB5ICogKHAgLyBxKQotICAgICovCi0gICBub25kaXJl
Y3Rpb25hbF9yYXRlID0gZGlyZWN0aW9uYWxfcmF0ZSAqIHJhdGVfcmF0aW9fbnVtIC8gcmF0ZV9y
YXRpb19kZW47Ci0KLSAgIC8qIENhbGN1bGF0ZSB0aGUgbGVmdG92ZXIgZnJvbSB0cnVuY2F0aW9u
IGVycm9yLgotICAgICogICBsZWZ0b3ZlciA9IFQgLSB5ICogKG4gLSBtKSAtIG1fcmF0ZSAqIG0K
LSAgICAqIFBsYWNlIGxlZnRvdmVyIGJpdHMgaW4gb21uaWRpcmVjdGlvbmFsIGNoYW5uZWwuCi0g
ICAgKi8KLSAgIGxlZnRvdmVyX2JpdHMgPSB0b3RhbF9yYXRlCi0gICAgICAtIGRpcmVjdGlvbmFs
X3JhdGUgKiBuYl9kaXJlY3Rpb25hbF9jaGFubmVscwotICAgICAgLSBub25kaXJlY3Rpb25hbF9y
YXRlICogbmJfbm9uZGlyZWN0aW9uYWxfY2hhbm5lbHM7Ci0KLSAgIC8qIENhbGN1bGF0ZSByYXRl
cyBmb3IgZWFjaCBjaGFubmVsICovCisgICAvKiBBbGxvY2F0ZSBlcXVhbCBudW1iZXIgb2YgYml0
cyB0byBBbWJpc29uaWMgKHVuY291cGxlZCkgYW5kIG5vbi1kaWVnZXRpYworICAgICogKGNvdXBs
ZWQpIHN0cmVhbXMgKi8KKyAgIHBlcl9zdHJlYW1fcmF0ZSA9IHRvdGFsX3JhdGUgLyBzdC0+bGF5
b3V0Lm5iX3N0cmVhbXM7CiAgICBmb3IgKGkgPSAwOyBpIDwgc3QtPmxheW91dC5uYl9zdHJlYW1z
OyBpKyspCiAgICB7Ci0gICAgICBpZiAoaSA8IHN0LT5sYXlvdXQubmJfY291cGxlZF9zdHJlYW1z
KQotICAgICAgewotICAgICAgICAgcmF0ZVtpXSA9IG5vbmRpcmVjdGlvbmFsX3JhdGUgKiAyOwot
ICAgICAgfSBlbHNlIGlmIChpID09IHN0LT5sYXlvdXQubmJfY291cGxlZF9zdHJlYW1zKQotICAg
ICAgewotICAgICAgICAgcmF0ZVtpXSA9IG5vbmRpcmVjdGlvbmFsX3JhdGUgKyBsZWZ0b3Zlcl9i
aXRzOwotICAgICAgfSBlbHNlCi0gICAgICB7Ci0gICAgICAgICByYXRlW2ldID0gZGlyZWN0aW9u
YWxfcmF0ZTsKLSAgICAgIH0KKyAgICAgcmF0ZVtpXSA9IHBlcl9zdHJlYW1fcmF0ZTsKICAgIH0K
IH0KLSNlbmRpZiAvKiBFTkFCTEVfRVhQRVJJTUVOVEFMX0FNQklTT05JQ1MgKi8KIAogc3RhdGlj
IG9wdXNfaW50MzIgcmF0ZV9hbGxvY2F0aW9uKAogICAgICAgT3B1c01TRW5jb2RlciAqc3QsCkBA
IC04NjUsMTEgKzc4MSw5IEBAIHN0YXRpYyBvcHVzX2ludDMyIHJhdGVfYWxsb2NhdGlvbigKICAg
IHB0ciA9IChjaGFyKilzdCArIGFsaWduKHNpemVvZihPcHVzTVNFbmNvZGVyKSk7CiAgICBvcHVz
X2VuY29kZXJfY3RsKChPcHVzRW5jb2RlciopcHRyLCBPUFVTX0dFVF9TQU1QTEVfUkFURSgmRnMp
KTsKIAotI2lmZGVmIEVOQUJMRV9FWFBFUklNRU5UQUxfQU1CSVNPTklDUwogICAgaWYgKHN0LT5t
YXBwaW5nX3R5cGUgPT0gTUFQUElOR19UWVBFX0FNQklTT05JQ1MpIHsKICAgICAgYW1iaXNvbmlj
c19yYXRlX2FsbG9jYXRpb24oc3QsIHJhdGUsIGZyYW1lX3NpemUsIEZzKTsKICAgIH0gZWxzZQot
I2VuZGlmCiAgICB7CiAgICAgIHN1cnJvdW5kX3JhdGVfYWxsb2NhdGlvbihzdCwgcmF0ZSwgZnJh
bWVfc2l6ZSwgRnMpOwogICAgfQpAQCAtODg0LDcgKzc5OCw3IEBAIHN0YXRpYyBvcHVzX2ludDMy
IHJhdGVfYWxsb2NhdGlvbigKIAogLyogTWF4IHNpemUgaW4gY2FzZSB0aGUgZW5jb2RlciBkZWNp
ZGVzIHRvIHJldHVybiBzaXggZnJhbWVzICg2IHggMjAgbXMgPSAxMjAgbXMpICovCiAjZGVmaW5l
IE1TX0ZSQU1FX1RNUCAoNioxMjc1KzEyKQotc3RhdGljIGludCBvcHVzX211bHRpc3RyZWFtX2Vu
Y29kZV9uYXRpdmUKK2ludCBvcHVzX211bHRpc3RyZWFtX2VuY29kZV9uYXRpdmUKICgKICAgICBP
cHVzTVNFbmNvZGVyICpzdCwKICAgICBvcHVzX2NvcHlfY2hhbm5lbF9pbl9mdW5jIGNvcHlfY2hh
bm5lbF9pbiwKQEAgLTg5NCw3ICs4MDgsOCBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1f
ZW5jb2RlX25hdGl2ZQogICAgIG9wdXNfaW50MzIgbWF4X2RhdGFfYnl0ZXMsCiAgICAgaW50IGxz
Yl9kZXB0aCwKICAgICBkb3dubWl4X2Z1bmMgZG93bm1peCwKLSAgICBpbnQgZmxvYXRfYXBpCisg
ICAgaW50IGZsb2F0X2FwaSwKKyAgICB2b2lkICp1c2VyX2RhdGEKICkKIHsKICAgIG9wdXNfaW50
MzIgRnM7CkBAIC0xMDAxLDExICs5MTYsOSBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1f
ZW5jb2RlX25hdGl2ZQogICAgICAgICAgICAgb3B1c19lbmNvZGVyX2N0bChlbmMsIE9QVVNfU0VU
X0ZPUkNFX0NIQU5ORUxTKDIpKTsKICAgICAgICAgIH0KICAgICAgIH0KLSNpZmRlZiBFTkFCTEVf
RVhQRVJJTUVOVEFMX0FNQklTT05JQ1MKICAgICAgIGVsc2UgaWYgKHN0LT5tYXBwaW5nX3R5cGUg
PT0gTUFQUElOR19UWVBFX0FNQklTT05JQ1MpIHsKICAgICAgICAgb3B1c19lbmNvZGVyX2N0bChl
bmMsIE9QVVNfU0VUX0ZPUkNFX01PREUoTU9ERV9DRUxUX09OTFkpKTsKICAgICAgIH0KLSNlbmRp
ZgogICAgfQogCiAgICBwdHIgPSAoY2hhciopc3QgKyBhbGlnbihzaXplb2YoT3B1c01TRW5jb2Rl
cikpOwpAQCAtMTAyOCw5ICs5NDEsOSBAQCBzdGF0aWMgaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5j
b2RlX25hdGl2ZQogICAgICAgICAgbGVmdCA9IGdldF9sZWZ0X2NoYW5uZWwoJnN0LT5sYXlvdXQs
IHMsIC0xKTsKICAgICAgICAgIHJpZ2h0ID0gZ2V0X3JpZ2h0X2NoYW5uZWwoJnN0LT5sYXlvdXQs
IHMsIC0xKTsKICAgICAgICAgICgqY29weV9jaGFubmVsX2luKShidWYsIDIsCi0gICAgICAgICAg
ICBwY20sIHN0LT5sYXlvdXQubmJfY2hhbm5lbHMsIGxlZnQsIGZyYW1lX3NpemUpOworICAgICAg
ICAgICAgcGNtLCBzdC0+bGF5b3V0Lm5iX2NoYW5uZWxzLCBsZWZ0LCBmcmFtZV9zaXplLCB1c2Vy
X2RhdGEpOwogICAgICAgICAgKCpjb3B5X2NoYW5uZWxfaW4pKGJ1ZisxLCAyLAotICAgICAgICAg
ICAgcGNtLCBzdC0+bGF5b3V0Lm5iX2NoYW5uZWxzLCByaWdodCwgZnJhbWVfc2l6ZSk7CisgICAg
ICAgICAgICBwY20sIHN0LT5sYXlvdXQubmJfY2hhbm5lbHMsIHJpZ2h0LCBmcmFtZV9zaXplLCB1
c2VyX2RhdGEpOwogICAgICAgICAgcHRyICs9IGFsaWduKGNvdXBsZWRfc2l6ZSk7CiAgICAgICAg
ICBpZiAoc3QtPm1hcHBpbmdfdHlwZSA9PSBNQVBQSU5HX1RZUEVfU1VSUk9VTkQpCiAgICAgICAg
ICB7CkBAIC0xMDQ2LDcgKzk1OSw3IEBAIHN0YXRpYyBpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNv
ZGVfbmF0aXZlCiAgICAgICAgICBpbnQgaTsKICAgICAgICAgIGludCBjaGFuID0gZ2V0X21vbm9f
Y2hhbm5lbCgmc3QtPmxheW91dCwgcywgLTEpOwogICAgICAgICAgKCpjb3B5X2NoYW5uZWxfaW4p
KGJ1ZiwgMSwKLSAgICAgICAgICAgIHBjbSwgc3QtPmxheW91dC5uYl9jaGFubmVscywgY2hhbiwg
ZnJhbWVfc2l6ZSk7CisgICAgICAgICAgICBwY20sIHN0LT5sYXlvdXQubmJfY2hhbm5lbHMsIGNo
YW4sIGZyYW1lX3NpemUsIHVzZXJfZGF0YSk7CiAgICAgICAgICBwdHIgKz0gYWxpZ24obW9ub19z
aXplKTsKICAgICAgICAgIGlmIChzdC0+bWFwcGluZ190eXBlID09IE1BUFBJTkdfVFlQRV9TVVJS
T1VORCkKICAgICAgICAgIHsKQEAgLTExMDUsMTEgKzEwMTgsMTMgQEAgc3RhdGljIHZvaWQgb3B1
c19jb3B5X2NoYW5uZWxfaW5fZmxvYXQoCiAgIGNvbnN0IHZvaWQgKnNyYywKICAgaW50IHNyY19z
dHJpZGUsCiAgIGludCBzcmNfY2hhbm5lbCwKLSAgaW50IGZyYW1lX3NpemUKKyAgaW50IGZyYW1l
X3NpemUsCisgIHZvaWQgKnVzZXJfZGF0YQogKQogewogICAgY29uc3QgZmxvYXQgKmZsb2F0X3Ny
YzsKICAgIG9wdXNfaW50MzIgaTsKKyAgICh2b2lkKXVzZXJfZGF0YTsKICAgIGZsb2F0X3NyYyA9
IChjb25zdCBmbG9hdCAqKXNyYzsKICAgIGZvciAoaT0wO2k8ZnJhbWVfc2l6ZTtpKyspCiAjaWYg
ZGVmaW5lZChGSVhFRF9QT0lOVCkKQEAgLTExMjYsMTEgKzEwNDEsMTMgQEAgc3RhdGljIHZvaWQg
b3B1c19jb3B5X2NoYW5uZWxfaW5fc2hvcnQoCiAgIGNvbnN0IHZvaWQgKnNyYywKICAgaW50IHNy
Y19zdHJpZGUsCiAgIGludCBzcmNfY2hhbm5lbCwKLSAgaW50IGZyYW1lX3NpemUKKyAgaW50IGZy
YW1lX3NpemUsCisgIHZvaWQgKnVzZXJfZGF0YQogKQogewogICAgY29uc3Qgb3B1c19pbnQxNiAq
c2hvcnRfc3JjOwogICAgb3B1c19pbnQzMiBpOworICAgKHZvaWQpdXNlcl9kYXRhOwogICAgc2hv
cnRfc3JjID0gKGNvbnN0IG9wdXNfaW50MTYgKilzcmM7CiAgICBmb3IgKGk9MDtpPGZyYW1lX3Np
emU7aSsrKQogI2lmIGRlZmluZWQoRklYRURfUE9JTlQpCkBAIC0xMTUxLDcgKzEwNjgsNyBAQCBp
bnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGUoCiApCiB7CiAgICByZXR1cm4gb3B1c19tdWx0aXN0
cmVhbV9lbmNvZGVfbmF0aXZlKHN0LCBvcHVzX2NvcHlfY2hhbm5lbF9pbl9zaG9ydCwKLSAgICAg
IHBjbSwgZnJhbWVfc2l6ZSwgZGF0YSwgbWF4X2RhdGFfYnl0ZXMsIDE2LCBkb3dubWl4X2ludCwg
MCk7CisgICAgICBwY20sIGZyYW1lX3NpemUsIGRhdGEsIG1heF9kYXRhX2J5dGVzLCAxNiwgZG93
bm1peF9pbnQsIDAsIE5VTEwpOwogfQogCiAjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCkBAIC0x
MTY0LDcgKzEwODEsNyBAQCBpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVfZmxvYXQoCiApCiB7
CiAgICByZXR1cm4gb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVfbmF0aXZlKHN0LCBvcHVzX2NvcHlf
Y2hhbm5lbF9pbl9mbG9hdCwKLSAgICAgIHBjbSwgZnJhbWVfc2l6ZSwgZGF0YSwgbWF4X2RhdGFf
Ynl0ZXMsIDE2LCBkb3dubWl4X2Zsb2F0LCAxKTsKKyAgICAgIHBjbSwgZnJhbWVfc2l6ZSwgZGF0
YSwgbWF4X2RhdGFfYnl0ZXMsIDE2LCBkb3dubWl4X2Zsb2F0LCAxLCBOVUxMKTsKIH0KICNlbmRp
ZgogCkBAIC0xMTgwLDcgKzEwOTcsNyBAQCBpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVfZmxv
YXQKICkKIHsKICAgIHJldHVybiBvcHVzX211bHRpc3RyZWFtX2VuY29kZV9uYXRpdmUoc3QsIG9w
dXNfY29weV9jaGFubmVsX2luX2Zsb2F0LAotICAgICAgcGNtLCBmcmFtZV9zaXplLCBkYXRhLCBt
YXhfZGF0YV9ieXRlcywgMjQsIGRvd25taXhfZmxvYXQsIDEpOworICAgICAgcGNtLCBmcmFtZV9z
aXplLCBkYXRhLCBtYXhfZGF0YV9ieXRlcywgMjQsIGRvd25taXhfZmxvYXQsIDEsIE5VTEwpOwog
fQogCiBpbnQgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGUoCkBAIC0xMTkyLDE5ICsxMTA5LDE3IEBA
IGludCBvcHVzX211bHRpc3RyZWFtX2VuY29kZSgKICkKIHsKICAgIHJldHVybiBvcHVzX211bHRp
c3RyZWFtX2VuY29kZV9uYXRpdmUoc3QsIG9wdXNfY29weV9jaGFubmVsX2luX3Nob3J0LAotICAg
ICAgcGNtLCBmcmFtZV9zaXplLCBkYXRhLCBtYXhfZGF0YV9ieXRlcywgMTYsIGRvd25taXhfaW50
LCAwKTsKKyAgICAgIHBjbSwgZnJhbWVfc2l6ZSwgZGF0YSwgbWF4X2RhdGFfYnl0ZXMsIDE2LCBk
b3dubWl4X2ludCwgMCwgTlVMTCk7CiB9CiAjZW5kaWYKIAotaW50IG9wdXNfbXVsdGlzdHJlYW1f
ZW5jb2Rlcl9jdGwoT3B1c01TRW5jb2RlciAqc3QsIGludCByZXF1ZXN0LCAuLi4pCitpbnQgb3B1
c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bF92YV9saXN0KE9wdXNNU0VuY29kZXIgKnN0LCBpbnQg
cmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlz
dCBhcCkKIHsKLSAgIHZhX2xpc3QgYXA7CiAgICBpbnQgY291cGxlZF9zaXplLCBtb25vX3NpemU7
CiAgICBjaGFyICpwdHI7CiAgICBpbnQgcmV0ID0gT1BVU19PSzsKIAotICAgdmFfc3RhcnQoYXAs
IHJlcXVlc3QpOwotCiAgICBjb3VwbGVkX3NpemUgPSBvcHVzX2VuY29kZXJfZ2V0X3NpemUoMik7
CiAgICBtb25vX3NpemUgPSBvcHVzX2VuY29kZXJfZ2V0X3NpemUoMSk7CiAgICBwdHIgPSAoY2hh
ciopc3QgKyBhbGlnbihzaXplb2YoT3B1c01TRW5jb2RlcikpOwpAQCAtMTMzNCw3ICsxMjQ5LDcg
QEAgaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwoT3B1c01TRW5jb2RlciAqc3QsIGlu
dCByZXF1ZXN0LCAuLi4pCiAgICAgICBPcHVzRW5jb2RlciAqKnZhbHVlOwogICAgICAgc3RyZWFt
X2lkID0gdmFfYXJnKGFwLCBvcHVzX2ludDMyKTsKICAgICAgIGlmIChzdHJlYW1faWQ8MCB8fCBz
dHJlYW1faWQgPj0gc3QtPmxheW91dC5uYl9zdHJlYW1zKQotICAgICAgICAgcmV0ID0gT1BVU19C
QURfQVJHOworICAgICAgICAgZ290byBiYWRfYXJnOwogICAgICAgdmFsdWUgPSB2YV9hcmcoYXAs
IE9wdXNFbmNvZGVyKiopOwogICAgICAgaWYgKCF2YWx1ZSkKICAgICAgIHsKQEAgLTEzOTIsMTQg
KzEzMDcsMjEgQEAgaW50IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwoT3B1c01TRW5jb2Rl
ciAqc3QsIGludCByZXF1ZXN0LCAuLi4pCiAgICAgICByZXQgPSBPUFVTX1VOSU1QTEVNRU5URUQ7
CiAgICAgICBicmVhazsKICAgIH0KLQotICAgdmFfZW5kKGFwKTsKICAgIHJldHVybiByZXQ7CiBi
YWRfYXJnOgotICAgdmFfZW5kKGFwKTsKICAgIHJldHVybiBPUFVTX0JBRF9BUkc7CiB9CiAKK2lu
dCBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsKE9wdXNNU0VuY29kZXIgKnN0LCBpbnQgcmVx
dWVzdCwgLi4uKQoreworICAgaW50IHJldDsKKyAgIHZhX2xpc3QgYXA7CisgICB2YV9zdGFydChh
cCwgcmVxdWVzdCk7CisgICByZXQgPSBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsX3ZhX2xp
c3Qoc3QsIHJlcXVlc3QsIGFwKTsKKyAgIHZhX2VuZChhcCk7CisgICByZXR1cm4gcmV0OworfQor
CiB2b2lkIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9kZXN0cm95KE9wdXNNU0VuY29kZXIgKnN0
KQogewogICAgIG9wdXNfZnJlZShzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9vcHVzX3ByaXZhdGUuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMv
c3JjL29wdXNfcHJpdmF0ZS5oCmluZGV4IGE3MzFjYzU1MGVhNDM3MjRkNTJiZWI2NTBjNDk3MGRh
OWFkYmRhMDEuLjVlMjQ2M2Y1NDZmZTdkODdkMWY1ZTg4NWY0ZjZhZDgxZmY3MWIwYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy9zcmMvc3JjL29wdXNfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfcHJpdmF0ZS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAib3B1cy5oIgogI2luY2x1ZGUgImNlbHQuaCIKIAorI2luY2x1
ZGUgPHN0ZGFyZy5oPiAvKiB2YV9saXN0ICovCiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8qIG9mZnNl
dG9mICovCiAKIHN0cnVjdCBPcHVzUmVwYWNrZXRpemVyIHsKQEAgLTUwLDEyICs1MSw1OSBAQCB0
eXBlZGVmIHN0cnVjdCBDaGFubmVsTGF5b3V0IHsKICAgIHVuc2lnbmVkIGNoYXIgbWFwcGluZ1sy
NTZdOwogfSBDaGFubmVsTGF5b3V0OwogCit0eXBlZGVmIGVudW0geworICBNQVBQSU5HX1RZUEVf
Tk9ORSwKKyAgTUFQUElOR19UWVBFX1NVUlJPVU5ELAorICBNQVBQSU5HX1RZUEVfQU1CSVNPTklD
UworfSBNYXBwaW5nVHlwZTsKKworc3RydWN0IE9wdXNNU0VuY29kZXIgeworICAgQ2hhbm5lbExh
eW91dCBsYXlvdXQ7CisgICBpbnQgYXJjaDsKKyAgIGludCBsZmVfc3RyZWFtOworICAgaW50IGFw
cGxpY2F0aW9uOworICAgaW50IHZhcmlhYmxlX2R1cmF0aW9uOworICAgTWFwcGluZ1R5cGUgbWFw
cGluZ190eXBlOworICAgb3B1c19pbnQzMiBiaXRyYXRlX2JwczsKKyAgIC8qIEVuY29kZXIgc3Rh
dGVzIGdvIGhlcmUgKi8KKyAgIC8qIHRoZW4gb3B1c192YWwzMiB3aW5kb3dfbWVtW2NoYW5uZWxz
KjEyMF07ICovCisgICAvKiB0aGVuIG9wdXNfdmFsMzIgcHJlZW1waF9tZW1bY2hhbm5lbHNdOyAq
LworfTsKKworc3RydWN0IE9wdXNNU0RlY29kZXIgeworICAgQ2hhbm5lbExheW91dCBsYXlvdXQ7
CisgICAvKiBEZWNvZGVyIHN0YXRlcyBnbyBoZXJlICovCit9OworCitpbnQgb3B1c19tdWx0aXN0
cmVhbV9lbmNvZGVyX2N0bF92YV9saXN0KHN0cnVjdCBPcHVzTVNFbmNvZGVyICpzdCwgaW50IHJl
cXVlc3QsCisgIHZhX2xpc3QgYXApOworaW50IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGxf
dmFfbGlzdChzdHJ1Y3QgT3B1c01TRGVjb2RlciAqc3QsIGludCByZXF1ZXN0LAorICB2YV9saXN0
IGFwKTsKKwogaW50IHZhbGlkYXRlX2xheW91dChjb25zdCBDaGFubmVsTGF5b3V0ICpsYXlvdXQp
OwogaW50IGdldF9sZWZ0X2NoYW5uZWwoY29uc3QgQ2hhbm5lbExheW91dCAqbGF5b3V0LCBpbnQg
c3RyZWFtX2lkLCBpbnQgcHJldik7CiBpbnQgZ2V0X3JpZ2h0X2NoYW5uZWwoY29uc3QgQ2hhbm5l
bExheW91dCAqbGF5b3V0LCBpbnQgc3RyZWFtX2lkLCBpbnQgcHJldik7CiBpbnQgZ2V0X21vbm9f
Y2hhbm5lbChjb25zdCBDaGFubmVsTGF5b3V0ICpsYXlvdXQsIGludCBzdHJlYW1faWQsIGludCBw
cmV2KTsKIAotCit0eXBlZGVmIHZvaWQgKCpvcHVzX2NvcHlfY2hhbm5lbF9pbl9mdW5jKSgKKyAg
b3B1c192YWwxNiAqZHN0LAorICBpbnQgZHN0X3N0cmlkZSwKKyAgY29uc3Qgdm9pZCAqc3JjLAor
ICBpbnQgc3JjX3N0cmlkZSwKKyAgaW50IHNyY19jaGFubmVsLAorICBpbnQgZnJhbWVfc2l6ZSwK
KyAgdm9pZCAqdXNlcl9kYXRhCispOworCit0eXBlZGVmIHZvaWQgKCpvcHVzX2NvcHlfY2hhbm5l
bF9vdXRfZnVuYykoCisgIHZvaWQgKmRzdCwKKyAgaW50IGRzdF9zdHJpZGUsCisgIGludCBkc3Rf
Y2hhbm5lbCwKKyAgY29uc3Qgb3B1c192YWwxNiAqc3JjLAorICBpbnQgc3JjX3N0cmlkZSwKKyAg
aW50IGZyYW1lX3NpemUsCisgIHZvaWQgKnVzZXJfZGF0YQorKTsKIAogI2RlZmluZSBNT0RFX1NJ
TEtfT05MWSAgICAgICAgICAxMDAwCiAjZGVmaW5lIE1PREVfSFlCUklEICAgICAgICAgICAgIDEw
MDEKQEAgLTg3LDYgKzEzNSw3IEBAIGludCBnZXRfbW9ub19jaGFubmVsKGNvbnN0IENoYW5uZWxM
YXlvdXQgKmxheW91dCwgaW50IHN0cmVhbV9pZCwgaW50IHByZXYpOwogdHlwZWRlZiB2b2lkICgq
ZG93bm1peF9mdW5jKShjb25zdCB2b2lkICosIG9wdXNfdmFsMzIgKiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpOwogdm9pZCBkb3dubWl4X2Zsb2F0KGNvbnN0IHZvaWQgKl94LCBvcHVzX3ZhbDMy
ICpzdWIsIGludCBzdWJmcmFtZSwgaW50IG9mZnNldCwgaW50IGMxLCBpbnQgYzIsIGludCBDKTsK
IHZvaWQgZG93bm1peF9pbnQoY29uc3Qgdm9pZCAqX3gsIG9wdXNfdmFsMzIgKnN1YiwgaW50IHN1
YmZyYW1lLCBpbnQgb2Zmc2V0LCBpbnQgYzEsIGludCBjMiwgaW50IEMpOworaW50IGlzX2RpZ2l0
YWxfc2lsZW5jZShjb25zdCBvcHVzX3ZhbDE2KiBwY20sIGludCBmcmFtZV9zaXplLCBpbnQgY2hh
bm5lbHMsIGludCBsc2JfZGVwdGgpOwogCiBpbnQgZW5jb2RlX3NpemUoaW50IHNpemUsIHVuc2ln
bmVkIGNoYXIgKmRhdGEpOwogCkBAIC0xMjMsNCArMTcyLDMwIEBAIG9wdXNfaW50MzIgb3B1c19y
ZXBhY2tldGl6ZXJfb3V0X3JhbmdlX2ltcGwoT3B1c1JlcGFja2V0aXplciAqcnAsIGludCBiZWdp
biwgaW50CiAKIGludCBwYWRfZnJhbWUodW5zaWduZWQgY2hhciAqZGF0YSwgb3B1c19pbnQzMiBs
ZW4sIG9wdXNfaW50MzIgbmV3X2xlbik7CiAKK2ludCBvcHVzX211bHRpc3RyZWFtX2VuY29kZV9u
YXRpdmUKKygKKyAgc3RydWN0IE9wdXNNU0VuY29kZXIgKnN0LAorICBvcHVzX2NvcHlfY2hhbm5l
bF9pbl9mdW5jIGNvcHlfY2hhbm5lbF9pbiwKKyAgY29uc3Qgdm9pZCAqcGNtLAorICBpbnQgYW5h
bHlzaXNfZnJhbWVfc2l6ZSwKKyAgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgb3B1c19pbnQzMiBt
YXhfZGF0YV9ieXRlcywKKyAgaW50IGxzYl9kZXB0aCwKKyAgZG93bm1peF9mdW5jIGRvd25taXgs
CisgIGludCBmbG9hdF9hcGksCisgIHZvaWQgKnVzZXJfZGF0YQorKTsKKworaW50IG9wdXNfbXVs
dGlzdHJlYW1fZGVjb2RlX25hdGl2ZSgKKyAgc3RydWN0IE9wdXNNU0RlY29kZXIgKnN0LAorICBj
b25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICBvcHVzX2ludDMyIGxlbiwKKyAgdm9pZCAqcGNt
LAorICBvcHVzX2NvcHlfY2hhbm5lbF9vdXRfZnVuYyBjb3B5X2NoYW5uZWxfb3V0LAorICBpbnQg
ZnJhbWVfc2l6ZSwKKyAgaW50IGRlY29kZV9mZWMsCisgIGludCBzb2Z0X2NsaXAsCisgIHZvaWQg
KnVzZXJfZGF0YQorKTsKKwogI2VuZGlmIC8qIE9QVVNfUFJJVkFURV9IICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3Jj
L3NyYy9vcHVzX3Byb2plY3Rpb25fZGVjb2Rlci5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19wcm9qZWN0aW9uX2RlY29k
ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMmUwN2Q1YmNmN2E2ODBkMzE4MzFlZDM5NWQ4ODZjOGZlZDk2MGM0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9vcHVzL3NyYy9zcmMvb3B1c19wcm9qZWN0aW9uX2RlY29kZXIuYwpAQCAtMCww
ICsxLDI1OCBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE3IEdvb2dsZSBJbmMuCisgICBXcml0dGVu
IGJ5IEFuZHJldyBBbGxlbiAqLworLyoKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBh
cmUgbWV0OgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgIC0gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIGBgQVMgSVMnJyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAg
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKyAgIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgICBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisj
aW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIm1hdGhvcHMuaCIKKyNpbmNs
dWRlICJvc19zdXBwb3J0LmgiCisjaW5jbHVkZSAib3B1c19wcml2YXRlLmgiCisjaW5jbHVkZSAi
b3B1c19kZWZpbmVzLmgiCisjaW5jbHVkZSAib3B1c19wcm9qZWN0aW9uLmgiCisjaW5jbHVkZSAi
b3B1c19tdWx0aXN0cmVhbS5oIgorI2luY2x1ZGUgIm1hcHBpbmdfbWF0cml4LmgiCisjaW5jbHVk
ZSAic3RhY2tfYWxsb2MuaCIKKworc3RydWN0IE9wdXNQcm9qZWN0aW9uRGVjb2RlcgoreworICBv
cHVzX2ludDMyIGRlbWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzOworICAvKiBFbmNvZGVyIHN0
YXRlcyBnbyBoZXJlICovCit9OworCisjaWYgIWRlZmluZWQoRElTQUJMRV9GTE9BVF9BUEkpCitz
dGF0aWMgdm9pZCBvcHVzX3Byb2plY3Rpb25fY29weV9jaGFubmVsX291dF9mbG9hdCgKKyAgdm9p
ZCAqZHN0LAorICBpbnQgZHN0X3N0cmlkZSwKKyAgaW50IGRzdF9jaGFubmVsLAorICBjb25zdCBv
cHVzX3ZhbDE2ICpzcmMsCisgIGludCBzcmNfc3RyaWRlLAorICBpbnQgZnJhbWVfc2l6ZSwKKyAg
dm9pZCAqdXNlcl9kYXRhKQoreworICBmbG9hdCAqZmxvYXRfZHN0OworICBjb25zdCBNYXBwaW5n
TWF0cml4ICptYXRyaXg7CisgIGZsb2F0X2RzdCA9IChmbG9hdCAqKWRzdDsKKyAgbWF0cml4ID0g
KGNvbnN0IE1hcHBpbmdNYXRyaXggKil1c2VyX2RhdGE7CisKKyAgaWYgKGRzdF9jaGFubmVsID09
IDApCisgICAgT1BVU19DTEVBUihmbG9hdF9kc3QsIGZyYW1lX3NpemUgKiBkc3Rfc3RyaWRlKTsK
KworICBpZiAoc3JjICE9IE5VTEwpCisgICAgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hhbm5l
bF9vdXRfZmxvYXQobWF0cml4LCBzcmMsIGRzdF9jaGFubmVsLAorICAgICAgc3JjX3N0cmlkZSwg
ZmxvYXRfZHN0LCBkc3Rfc3RyaWRlLCBmcmFtZV9zaXplKTsKK30KKyNlbmRpZgorCitzdGF0aWMg
dm9pZCBvcHVzX3Byb2plY3Rpb25fY29weV9jaGFubmVsX291dF9zaG9ydCgKKyAgdm9pZCAqZHN0
LAorICBpbnQgZHN0X3N0cmlkZSwKKyAgaW50IGRzdF9jaGFubmVsLAorICBjb25zdCBvcHVzX3Zh
bDE2ICpzcmMsCisgIGludCBzcmNfc3RyaWRlLAorICBpbnQgZnJhbWVfc2l6ZSwKKyAgdm9pZCAq
dXNlcl9kYXRhKQoreworICBvcHVzX2ludDE2ICpzaG9ydF9kc3Q7CisgIGNvbnN0IE1hcHBpbmdN
YXRyaXggKm1hdHJpeDsKKyAgc2hvcnRfZHN0ID0gKG9wdXNfaW50MTYgKilkc3Q7CisgIG1hdHJp
eCA9IChjb25zdCBNYXBwaW5nTWF0cml4ICopdXNlcl9kYXRhOworICBpZiAoZHN0X2NoYW5uZWwg
PT0gMCkKKyAgICBPUFVTX0NMRUFSKHNob3J0X2RzdCwgZnJhbWVfc2l6ZSAqIGRzdF9zdHJpZGUp
OworCisgIGlmIChzcmMgIT0gTlVMTCkKKyAgICBtYXBwaW5nX21hdHJpeF9tdWx0aXBseV9jaGFu
bmVsX291dF9zaG9ydChtYXRyaXgsIHNyYywgZHN0X2NoYW5uZWwsCisgICAgICBzcmNfc3RyaWRl
LCBzaG9ydF9kc3QsIGRzdF9zdHJpZGUsIGZyYW1lX3NpemUpOworfQorCitzdGF0aWMgTWFwcGlu
Z01hdHJpeCAqZ2V0X2RlY19kZW1peGluZ19tYXRyaXgoT3B1c1Byb2plY3Rpb25EZWNvZGVyICpz
dCkKK3sKKyAgLyogdm9pZCogY2FzdCBhdm9pZHMgY2xhbmcgLVdjYXN0LWFsaWduIHdhcm5pbmcg
Ki8KKyAgcmV0dXJuIChNYXBwaW5nTWF0cml4Kikodm9pZCopKChjaGFyKilzdCArCisgICAgYWxp
Z24oc2l6ZW9mKE9wdXNQcm9qZWN0aW9uRGVjb2RlcikpKTsKK30KKworc3RhdGljIE9wdXNNU0Rl
Y29kZXIgKmdldF9tdWx0aXN0cmVhbV9kZWNvZGVyKE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3Qp
Cit7CisgIC8qIHZvaWQqIGNhc3QgYXZvaWRzIGNsYW5nIC1XY2FzdC1hbGlnbiB3YXJuaW5nICov
CisgIHJldHVybiAoT3B1c01TRGVjb2RlciopKHZvaWQqKSgoY2hhciopc3QgKworICAgIGFsaWdu
KHNpemVvZihPcHVzUHJvamVjdGlvbkRlY29kZXIpICsKKyAgICBzdC0+ZGVtaXhpbmdfbWF0cml4
X3NpemVfaW5fYnl0ZXMpKTsKK30KKworb3B1c19pbnQzMiBvcHVzX3Byb2plY3Rpb25fZGVjb2Rl
cl9nZXRfc2l6ZShpbnQgY2hhbm5lbHMsIGludCBzdHJlYW1zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291cGxlZF9zdHJlYW1zKQoreworICBvcHVz
X2ludDMyIG1hdHJpeF9zaXplOworICBvcHVzX2ludDMyIGRlY29kZXJfc2l6ZTsKKworICBtYXRy
aXhfc2l6ZSA9CisgICAgbWFwcGluZ19tYXRyaXhfZ2V0X3NpemUoc3RyZWFtcyArIGNvdXBsZWRf
c3RyZWFtcywgY2hhbm5lbHMpOworICBpZiAoIW1hdHJpeF9zaXplKQorICAgIHJldHVybiAwOwor
CisgIGRlY29kZXJfc2l6ZSA9IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9nZXRfc2l6ZShzdHJl
YW1zLCBjb3VwbGVkX3N0cmVhbXMpOworICBpZiAoIWRlY29kZXJfc2l6ZSkKKyAgICByZXR1cm4g
MDsKKworICByZXR1cm4gYWxpZ24oc2l6ZW9mKE9wdXNQcm9qZWN0aW9uRGVjb2RlcikpICsgbWF0
cml4X3NpemUgKyBkZWNvZGVyX3NpemU7Cit9CisKK2ludCBvcHVzX3Byb2plY3Rpb25fZGVjb2Rl
cl9pbml0KE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QsIG9wdXNfaW50MzIgRnMsCisgIGludCBj
aGFubmVscywgaW50IHN0cmVhbXMsIGludCBjb3VwbGVkX3N0cmVhbXMsCisgIHVuc2lnbmVkIGNo
YXIgKmRlbWl4aW5nX21hdHJpeCwgb3B1c19pbnQzMiBkZW1peGluZ19tYXRyaXhfc2l6ZSkKK3sK
KyAgaW50IG5iX2lucHV0X3N0cmVhbXM7CisgIG9wdXNfaW50MzIgZXhwZWN0ZWRfbWF0cml4X3Np
emU7CisgIGludCBpLCByZXQ7CisgIHVuc2lnbmVkIGNoYXIgbWFwcGluZ1syNTVdOworICBWQVJE
RUNMKG9wdXNfaW50MTYsIGJ1Zik7CisgIEFMTE9DX1NUQUNLOworCisgIC8qIFZlcmlmeSBzdXBw
bGllZCBtYXRyaXggc2l6ZS4gKi8KKyAgbmJfaW5wdXRfc3RyZWFtcyA9IHN0cmVhbXMgKyBjb3Vw
bGVkX3N0cmVhbXM7CisgIGV4cGVjdGVkX21hdHJpeF9zaXplID0gbmJfaW5wdXRfc3RyZWFtcyAq
IGNoYW5uZWxzICogc2l6ZW9mKG9wdXNfaW50MTYpOworICBpZiAoZXhwZWN0ZWRfbWF0cml4X3Np
emUgIT0gZGVtaXhpbmdfbWF0cml4X3NpemUpCisgIHsKKyAgICBSRVNUT1JFX1NUQUNLOworICAg
IHJldHVybiBPUFVTX0JBRF9BUkc7CisgIH0KKworICAvKiBDb252ZXJ0IGRlbWl4aW5nIG1hdHJp
eCBpbnB1dCBpbnRvIGludGVybmFsIGZvcm1hdC4gKi8KKyAgQUxMT0MoYnVmLCBuYl9pbnB1dF9z
dHJlYW1zICogY2hhbm5lbHMsIG9wdXNfaW50MTYpOworICBmb3IgKGkgPSAwOyBpIDwgbmJfaW5w
dXRfc3RyZWFtcyAqIGNoYW5uZWxzOyBpKyspCisgIHsKKyAgICBpbnQgcyA9IGRlbWl4aW5nX21h
dHJpeFsyKmkgKyAxXSA8PCA4IHwgZGVtaXhpbmdfbWF0cml4WzIqaV07CisgICAgcyA9ICgocyAm
IDB4RkZGRikgXiAweDgwMDApIC0gMHg4MDAwOworICAgIGJ1ZltpXSA9IChvcHVzX2ludDE2KXM7
CisgIH0KKworICAvKiBBc3NpZ24gZGVtaXhpbmcgbWF0cml4LiAqLworICBzdC0+ZGVtaXhpbmdf
bWF0cml4X3NpemVfaW5fYnl0ZXMgPQorICAgIG1hcHBpbmdfbWF0cml4X2dldF9zaXplKGNoYW5u
ZWxzLCBuYl9pbnB1dF9zdHJlYW1zKTsKKyAgaWYgKCFzdC0+ZGVtaXhpbmdfbWF0cml4X3NpemVf
aW5fYnl0ZXMpCisgIHsKKyAgICBSRVNUT1JFX1NUQUNLOworICAgIHJldHVybiBPUFVTX0JBRF9B
Ukc7CisgIH0KKworICBtYXBwaW5nX21hdHJpeF9pbml0KGdldF9kZWNfZGVtaXhpbmdfbWF0cml4
KHN0KSwgY2hhbm5lbHMsIG5iX2lucHV0X3N0cmVhbXMsIDAsCisgICAgYnVmLCBkZW1peGluZ19t
YXRyaXhfc2l6ZSk7CisKKyAgLyogU2V0IHRyaXZpYWwgbWFwcGluZyBzbyBlYWNoIGlucHV0IGNo
YW5uZWwgcGFpcnMgd2l0aCBhIG1hdHJpeCBjb2x1bW4uICovCisgIGZvciAoaSA9IDA7IGkgPCBj
aGFubmVsczsgaSsrKQorICAgIG1hcHBpbmdbaV0gPSBpOworCisgIHJldCA9IG9wdXNfbXVsdGlz
dHJlYW1fZGVjb2Rlcl9pbml0KAorICAgIGdldF9tdWx0aXN0cmVhbV9kZWNvZGVyKHN0KSwgRnMs
IGNoYW5uZWxzLCBzdHJlYW1zLCBjb3VwbGVkX3N0cmVhbXMsIG1hcHBpbmcpOworICBSRVNUT1JF
X1NUQUNLOworICByZXR1cm4gcmV0OworfQorCitPcHVzUHJvamVjdGlvbkRlY29kZXIgKm9wdXNf
cHJvamVjdGlvbl9kZWNvZGVyX2NyZWF0ZSgKKyAgb3B1c19pbnQzMiBGcywgaW50IGNoYW5uZWxz
LCBpbnQgc3RyZWFtcywgaW50IGNvdXBsZWRfc3RyZWFtcywKKyAgdW5zaWduZWQgY2hhciAqZGVt
aXhpbmdfbWF0cml4LCBvcHVzX2ludDMyIGRlbWl4aW5nX21hdHJpeF9zaXplLCBpbnQgKmVycm9y
KQoreworICBpbnQgc2l6ZTsKKyAgaW50IHJldDsKKyAgT3B1c1Byb2plY3Rpb25EZWNvZGVyICpz
dDsKKworICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHByb2plY3Rpb24gZGVjb2Rlci4gKi8K
KyAgc2l6ZSA9IG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2dldF9zaXplKGNoYW5uZWxzLCBzdHJl
YW1zLCBjb3VwbGVkX3N0cmVhbXMpOworICBpZiAoIXNpemUpIHsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAqZXJyb3IgPSBPUFVTX0FMTE9DX0ZBSUw7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAg
c3QgPSAoT3B1c1Byb2plY3Rpb25EZWNvZGVyICopb3B1c19hbGxvYyhzaXplKTsKKyAgaWYgKCFz
dCkKKyAgeworICAgIGlmIChlcnJvcikKKyAgICAgICplcnJvciA9IE9QVVNfQUxMT0NfRkFJTDsK
KyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8qIEluaXRpYWxpemUgcHJvamVjdGlvbiBkZWNv
ZGVyIHdpdGggcHJvdmlkZWQgc2V0dGluZ3MuICovCisgIHJldCA9IG9wdXNfcHJvamVjdGlvbl9k
ZWNvZGVyX2luaXQoc3QsIEZzLCBjaGFubmVscywgc3RyZWFtcywgY291cGxlZF9zdHJlYW1zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbWl4aW5nX21hdHJpeCwgZGVt
aXhpbmdfbWF0cml4X3NpemUpOworICBpZiAocmV0ICE9IE9QVVNfT0spCisgIHsKKyAgICBvcHVz
X2ZyZWUoc3QpOworICAgIHN0ID0gTlVMTDsKKyAgfQorICBpZiAoZXJyb3IpCisgICAgKmVycm9y
ID0gcmV0OworICByZXR1cm4gc3Q7Cit9CisKKyNpZmRlZiBGSVhFRF9QT0lOVAoraW50IG9wdXNf
cHJvamVjdGlvbl9kZWNvZGUoT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdCwgY29uc3QgdW5zaWdu
ZWQgY2hhciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdXNfaW50MzIgbGVu
LCBvcHVzX2ludDE2ICpwY20sIGludCBmcmFtZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGRlY29kZV9mZWMpCit7CisgIHJldHVybiBvcHVzX211bHRpc3RyZWFtX2RlY29k
ZV9uYXRpdmUoZ2V0X211bHRpc3RyZWFtX2RlY29kZXIoc3QpLCBkYXRhLCBsZW4sCisgICAgcGNt
LCBvcHVzX3Byb2plY3Rpb25fY29weV9jaGFubmVsX291dF9zaG9ydCwgZnJhbWVfc2l6ZSwgZGVj
b2RlX2ZlYywgMCwKKyAgICBnZXRfZGVjX2RlbWl4aW5nX21hdHJpeChzdCkpOworfQorI2Vsc2UK
K2ludCBvcHVzX3Byb2plY3Rpb25fZGVjb2RlKE9wdXNQcm9qZWN0aW9uRGVjb2RlciAqc3QsIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHVz
X2ludDMyIGxlbiwgb3B1c19pbnQxNiAqcGNtLCBpbnQgZnJhbWVfc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBkZWNvZGVfZmVjKQoreworICByZXR1cm4gb3B1c19tdWx0aXN0
cmVhbV9kZWNvZGVfbmF0aXZlKGdldF9tdWx0aXN0cmVhbV9kZWNvZGVyKHN0KSwgZGF0YSwgbGVu
LAorICAgIHBjbSwgb3B1c19wcm9qZWN0aW9uX2NvcHlfY2hhbm5lbF9vdXRfc2hvcnQsIGZyYW1l
X3NpemUsIGRlY29kZV9mZWMsIDEsCisgICAgZ2V0X2RlY19kZW1peGluZ19tYXRyaXgoc3QpKTsK
K30KKyNlbmRpZgorCisjaWZuZGVmIERJU0FCTEVfRkxPQVRfQVBJCitpbnQgb3B1c19wcm9qZWN0
aW9uX2RlY29kZV9mbG9hdChPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0LCBjb25zdCB1bnNpZ25l
ZCBjaGFyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B1c19pbnQz
MiBsZW4sIGZsb2F0ICpwY20sIGludCBmcmFtZV9zaXplLCBpbnQgZGVjb2RlX2ZlYykKK3sKKyAg
cmV0dXJuIG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlX25hdGl2ZShnZXRfbXVsdGlzdHJlYW1fZGVj
b2RlcihzdCksIGRhdGEsIGxlbiwKKyAgICBwY20sIG9wdXNfcHJvamVjdGlvbl9jb3B5X2NoYW5u
ZWxfb3V0X2Zsb2F0LCBmcmFtZV9zaXplLCBkZWNvZGVfZmVjLCAwLAorICAgIGdldF9kZWNfZGVt
aXhpbmdfbWF0cml4KHN0KSk7Cit9CisjZW5kaWYKKworaW50IG9wdXNfcHJvamVjdGlvbl9kZWNv
ZGVyX2N0bChPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0LCBpbnQgcmVxdWVzdCwgLi4uKQorewor
ICB2YV9saXN0IGFwOworICBpbnQgcmV0ID0gT1BVU19PSzsKKworICB2YV9zdGFydChhcCwgcmVx
dWVzdCk7CisgIHJldCA9IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2Rlcl9jdGxfdmFfbGlzdChnZXRf
bXVsdGlzdHJlYW1fZGVjb2RlcihzdCksCisgICAgcmVxdWVzdCwgYXApOworICB2YV9lbmQoYXAp
OworICByZXR1cm4gcmV0OworfQorCit2b2lkIG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2Rlc3Ry
b3koT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdCkKK3sKKyAgb3B1c19mcmVlKHN0KTsKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy9zcmMvb3B1c19wcm9qZWN0aW9uX2VuY29kZXIuYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfcHJvamVj
dGlvbl9lbmNvZGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmYjJkMjUyNmM2ZTMwZTFjN2YxZTIyMmMwZmQ0
NThhMzM0ZGVhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjL29wdXNfcHJvamVjdGlvbl9lbmNvZGVy
LmMKQEAgLTAsMCArMSw0NjggQEAKKy8qIENvcHlyaWdodCAoYykgMjAxNyBHb29nbGUgSW5jLgor
ICAgV3JpdHRlbiBieSBBbmRyZXcgQWxsZW4gKi8KKy8qCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICAgYXJlIG1ldDoKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgor
ICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZkZWYgSEFWRV9D
T05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJtYXRob3Bz
LmgiCisjaW5jbHVkZSAib3Nfc3VwcG9ydC5oIgorI2luY2x1ZGUgIm9wdXNfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgIm9wdXNfZGVmaW5lcy5oIgorI2luY2x1ZGUgIm9wdXNfcHJvamVjdGlvbi5oIgor
I2luY2x1ZGUgIm9wdXNfbXVsdGlzdHJlYW0uaCIKKyNpbmNsdWRlICJzdGFja19hbGxvYy5oIgor
I2luY2x1ZGUgIm1hcHBpbmdfbWF0cml4LmgiCisKK3N0cnVjdCBPcHVzUHJvamVjdGlvbkVuY29k
ZXIKK3sKKyAgb3B1c19pbnQzMiBtaXhpbmdfbWF0cml4X3NpemVfaW5fYnl0ZXM7CisgIG9wdXNf
aW50MzIgZGVtaXhpbmdfbWF0cml4X3NpemVfaW5fYnl0ZXM7CisgIC8qIEVuY29kZXIgc3RhdGVz
IGdvIGhlcmUgKi8KK307CisKKyNpZiAhZGVmaW5lZChESVNBQkxFX0ZMT0FUX0FQSSkKK3N0YXRp
YyB2b2lkIG9wdXNfcHJvamVjdGlvbl9jb3B5X2NoYW5uZWxfaW5fZmxvYXQoCisgIG9wdXNfdmFs
MTYgKmRzdCwKKyAgaW50IGRzdF9zdHJpZGUsCisgIGNvbnN0IHZvaWQgKnNyYywKKyAgaW50IHNy
Y19zdHJpZGUsCisgIGludCBzcmNfY2hhbm5lbCwKKyAgaW50IGZyYW1lX3NpemUsCisgIHZvaWQg
KnVzZXJfZGF0YQorKQoreworICBtYXBwaW5nX21hdHJpeF9tdWx0aXBseV9jaGFubmVsX2luX2Zs
b2F0KChjb25zdCBNYXBwaW5nTWF0cml4Kil1c2VyX2RhdGEsCisgICAgKGNvbnN0IGZsb2F0Kilz
cmMsIHNyY19zdHJpZGUsIGRzdCwgc3JjX2NoYW5uZWwsIGRzdF9zdHJpZGUsIGZyYW1lX3NpemUp
OworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIG9wdXNfcHJvamVjdGlvbl9jb3B5X2NoYW5uZWxf
aW5fc2hvcnQoCisgIG9wdXNfdmFsMTYgKmRzdCwKKyAgaW50IGRzdF9zdHJpZGUsCisgIGNvbnN0
IHZvaWQgKnNyYywKKyAgaW50IHNyY19zdHJpZGUsCisgIGludCBzcmNfY2hhbm5lbCwKKyAgaW50
IGZyYW1lX3NpemUsCisgIHZvaWQgKnVzZXJfZGF0YQorKQoreworICBtYXBwaW5nX21hdHJpeF9t
dWx0aXBseV9jaGFubmVsX2luX3Nob3J0KChjb25zdCBNYXBwaW5nTWF0cml4Kil1c2VyX2RhdGEs
CisgICAgKGNvbnN0IG9wdXNfaW50MTYqKXNyYywgc3JjX3N0cmlkZSwgZHN0LCBzcmNfY2hhbm5l
bCwgZHN0X3N0cmlkZSwgZnJhbWVfc2l6ZSk7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X29yZGVyX3Bs
dXNfb25lX2Zyb21fY2hhbm5lbHMoaW50IGNoYW5uZWxzLCBpbnQgKm9yZGVyX3BsdXNfb25lKQor
eworICBpbnQgb3JkZXJfcGx1c19vbmVfOworICBpbnQgYWNuX2NoYW5uZWxzOworICBpbnQgbm9u
ZGllZ2V0aWNfY2hhbm5lbHM7CisKKyAgLyogQWxsb3dlZCBudW1iZXJzIG9mIGNoYW5uZWxzOgor
ICAgKiAoMSArIG4pXjIgKyAyaiwgZm9yIG4gPSAwLi4uMTQgYW5kIGogPSAwIG9yIDEuCisgICAq
LworICBpZiAoY2hhbm5lbHMgPCAxIHx8IGNoYW5uZWxzID4gMjI3KQorICAgIHJldHVybiBPUFVT
X0JBRF9BUkc7CisKKyAgb3JkZXJfcGx1c19vbmVfID0gaXNxcnQzMihjaGFubmVscyk7CisgIGFj
bl9jaGFubmVscyA9IG9yZGVyX3BsdXNfb25lXyAqIG9yZGVyX3BsdXNfb25lXzsKKyAgbm9uZGll
Z2V0aWNfY2hhbm5lbHMgPSBjaGFubmVscyAtIGFjbl9jaGFubmVsczsKKyAgaWYgKG5vbmRpZWdl
dGljX2NoYW5uZWxzICE9IDAgJiYgbm9uZGllZ2V0aWNfY2hhbm5lbHMgIT0gMikKKyAgICByZXR1
cm4gT1BVU19CQURfQVJHOworCisgIGlmIChvcmRlcl9wbHVzX29uZSkKKyAgICAqb3JkZXJfcGx1
c19vbmUgPSBvcmRlcl9wbHVzX29uZV87CisgIHJldHVybiBPUFVTX09LOworfQorCitzdGF0aWMg
aW50IGdldF9zdHJlYW1zX2Zyb21fY2hhbm5lbHMoaW50IGNoYW5uZWxzLCBpbnQgbWFwcGluZ19m
YW1pbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdHJlYW1z
LCBpbnQgKmNvdXBsZWRfc3RyZWFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgKm9yZGVyX3BsdXNfb25lKQoreworICBpZiAobWFwcGluZ19mYW1pbHkgPT0gMykK
KyAgeworICAgIGlmIChnZXRfb3JkZXJfcGx1c19vbmVfZnJvbV9jaGFubmVscyhjaGFubmVscywg
b3JkZXJfcGx1c19vbmUpICE9IE9QVVNfT0spCisgICAgICByZXR1cm4gT1BVU19CQURfQVJHOwor
ICAgIGlmIChzdHJlYW1zKQorICAgICAgKnN0cmVhbXMgPSAoY2hhbm5lbHMgKyAxKSAvIDI7Cisg
ICAgaWYgKGNvdXBsZWRfc3RyZWFtcykKKyAgICAgICpjb3VwbGVkX3N0cmVhbXMgPSBjaGFubmVs
cyAvIDI7CisgICAgcmV0dXJuIE9QVVNfT0s7CisgIH0KKyAgcmV0dXJuIE9QVVNfQkFEX0FSRzsK
K30KKworc3RhdGljIE1hcHBpbmdNYXRyaXggKmdldF9taXhpbmdfbWF0cml4KE9wdXNQcm9qZWN0
aW9uRW5jb2RlciAqc3QpCit7CisgIC8qIHZvaWQqIGNhc3QgYXZvaWRzIGNsYW5nIC1XY2FzdC1h
bGlnbiB3YXJuaW5nICovCisgIHJldHVybiAoTWFwcGluZ01hdHJpeCAqKSh2b2lkKikoKGNoYXIq
KXN0ICsKKyAgICBhbGlnbihzaXplb2YoT3B1c1Byb2plY3Rpb25FbmNvZGVyKSkpOworfQorCitz
dGF0aWMgTWFwcGluZ01hdHJpeCAqZ2V0X2VuY19kZW1peGluZ19tYXRyaXgoT3B1c1Byb2plY3Rp
b25FbmNvZGVyICpzdCkKK3sKKyAgLyogdm9pZCogY2FzdCBhdm9pZHMgY2xhbmcgLVdjYXN0LWFs
aWduIHdhcm5pbmcgKi8KKyAgcmV0dXJuIChNYXBwaW5nTWF0cml4ICopKHZvaWQqKSgoY2hhciop
c3QgKworICAgIGFsaWduKHNpemVvZihPcHVzUHJvamVjdGlvbkVuY29kZXIpICsKKyAgICBzdC0+
bWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzKSk7Cit9CisKK3N0YXRpYyBPcHVzTVNFbmNvZGVy
ICpnZXRfbXVsdGlzdHJlYW1fZW5jb2RlcihPcHVzUHJvamVjdGlvbkVuY29kZXIgKnN0KQorewor
ICAvKiB2b2lkKiBjYXN0IGF2b2lkcyBjbGFuZyAtV2Nhc3QtYWxpZ24gd2FybmluZyAqLworICBy
ZXR1cm4gKE9wdXNNU0VuY29kZXIgKikodm9pZCopKChjaGFyKilzdCArCisgICAgYWxpZ24oc2l6
ZW9mKE9wdXNQcm9qZWN0aW9uRW5jb2RlcikgKworICAgIHN0LT5taXhpbmdfbWF0cml4X3NpemVf
aW5fYnl0ZXMgKworICAgIHN0LT5kZW1peGluZ19tYXRyaXhfc2l6ZV9pbl9ieXRlcykpOworfQor
CitvcHVzX2ludDMyIG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfZ2V0X3NpemUo
aW50IGNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBtYXBwaW5nX2ZhbWlseSkKK3sKKyAgaW50IG5iX3N0cmVhbXM7Cisg
IGludCBuYl9jb3VwbGVkX3N0cmVhbXM7CisgIGludCBvcmRlcl9wbHVzX29uZTsKKyAgaW50IG1p
eGluZ19tYXRyaXhfcm93cywgbWl4aW5nX21hdHJpeF9jb2xzOworICBpbnQgZGVtaXhpbmdfbWF0
cml4X3Jvd3MsIGRlbWl4aW5nX21hdHJpeF9jb2xzOworICBvcHVzX2ludDMyIG1peGluZ19tYXRy
aXhfc2l6ZSwgZGVtaXhpbmdfbWF0cml4X3NpemU7CisgIG9wdXNfaW50MzIgZW5jb2Rlcl9zaXpl
OworICBpbnQgcmV0OworCisgIHJldCA9IGdldF9zdHJlYW1zX2Zyb21fY2hhbm5lbHMoY2hhbm5l
bHMsIG1hcHBpbmdfZmFtaWx5LCAmbmJfc3RyZWFtcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbmJfY291cGxlZF9zdHJlYW1zLCAmb3JkZXJfcGx1c19vbmUpOworICBpZiAo
cmV0ICE9IE9QVVNfT0spCisgICAgcmV0dXJuIDA7CisKKyAgaWYgKG9yZGVyX3BsdXNfb25lID09
IDIpCisgIHsKKyAgICBtaXhpbmdfbWF0cml4X3Jvd3MgPSBtYXBwaW5nX21hdHJpeF9mb2FfbWl4
aW5nLnJvd3M7CisgICAgbWl4aW5nX21hdHJpeF9jb2xzID0gbWFwcGluZ19tYXRyaXhfZm9hX21p
eGluZy5jb2xzOworICAgIGRlbWl4aW5nX21hdHJpeF9yb3dzID0gbWFwcGluZ19tYXRyaXhfZm9h
X2RlbWl4aW5nLnJvd3M7CisgICAgZGVtaXhpbmdfbWF0cml4X2NvbHMgPSBtYXBwaW5nX21hdHJp
eF9mb2FfZGVtaXhpbmcuY29sczsKKyAgfQorICBlbHNlIGlmIChvcmRlcl9wbHVzX29uZSA9PSAz
KQorICB7CisgICAgbWl4aW5nX21hdHJpeF9yb3dzID0gbWFwcGluZ19tYXRyaXhfc29hX21peGlu
Zy5yb3dzOworICAgIG1peGluZ19tYXRyaXhfY29scyA9IG1hcHBpbmdfbWF0cml4X3NvYV9taXhp
bmcuY29sczsKKyAgICBkZW1peGluZ19tYXRyaXhfcm93cyA9IG1hcHBpbmdfbWF0cml4X3NvYV9k
ZW1peGluZy5yb3dzOworICAgIGRlbWl4aW5nX21hdHJpeF9jb2xzID0gbWFwcGluZ19tYXRyaXhf
c29hX2RlbWl4aW5nLmNvbHM7CisgIH0KKyAgZWxzZSBpZiAob3JkZXJfcGx1c19vbmUgPT0gNCkK
KyAgeworICAgIG1peGluZ19tYXRyaXhfcm93cyA9IG1hcHBpbmdfbWF0cml4X3RvYV9taXhpbmcu
cm93czsKKyAgICBtaXhpbmdfbWF0cml4X2NvbHMgPSBtYXBwaW5nX21hdHJpeF90b2FfbWl4aW5n
LmNvbHM7CisgICAgZGVtaXhpbmdfbWF0cml4X3Jvd3MgPSBtYXBwaW5nX21hdHJpeF90b2FfZGVt
aXhpbmcucm93czsKKyAgICBkZW1peGluZ19tYXRyaXhfY29scyA9IG1hcHBpbmdfbWF0cml4X3Rv
YV9kZW1peGluZy5jb2xzOworICB9CisgIGVsc2UKKyAgICByZXR1cm4gMDsKKworICBtaXhpbmdf
bWF0cml4X3NpemUgPQorICAgIG1hcHBpbmdfbWF0cml4X2dldF9zaXplKG1peGluZ19tYXRyaXhf
cm93cywgbWl4aW5nX21hdHJpeF9jb2xzKTsKKyAgaWYgKCFtaXhpbmdfbWF0cml4X3NpemUpCisg
ICAgcmV0dXJuIDA7CisKKyAgZGVtaXhpbmdfbWF0cml4X3NpemUgPQorICAgIG1hcHBpbmdfbWF0
cml4X2dldF9zaXplKGRlbWl4aW5nX21hdHJpeF9yb3dzLCBkZW1peGluZ19tYXRyaXhfY29scyk7
CisgIGlmICghZGVtaXhpbmdfbWF0cml4X3NpemUpCisgICAgcmV0dXJuIDA7CisKKyAgZW5jb2Rl
cl9zaXplID0KKyAgICAgIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9nZXRfc2l6ZShuYl9zdHJl
YW1zLCBuYl9jb3VwbGVkX3N0cmVhbXMpOworICBpZiAoIWVuY29kZXJfc2l6ZSkKKyAgICByZXR1
cm4gMDsKKworICByZXR1cm4gYWxpZ24oc2l6ZW9mKE9wdXNQcm9qZWN0aW9uRW5jb2RlcikpICsK
KyAgICBtaXhpbmdfbWF0cml4X3NpemUgKyBkZW1peGluZ19tYXRyaXhfc2l6ZSArIGVuY29kZXJf
c2l6ZTsKK30KKworaW50IG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfaW5pdChP
cHVzUHJvamVjdGlvbkVuY29kZXIgKnN0LCBvcHVzX2ludDMyIEZzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbHMsIGludCBtYXBwaW5nX2Zh
bWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpz
dHJlYW1zLCBpbnQgKmNvdXBsZWRfc3RyZWFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGFwcGxpY2F0aW9uKQoreworICBNYXBwaW5nTWF0cml4ICpt
aXhpbmdfbWF0cml4OworICBNYXBwaW5nTWF0cml4ICpkZW1peGluZ19tYXRyaXg7CisgIE9wdXNN
U0VuY29kZXIgKm1zX2VuY29kZXI7CisgIGludCBpOworICBpbnQgcmV0OworICBpbnQgb3JkZXJf
cGx1c19vbmU7CisgIHVuc2lnbmVkIGNoYXIgbWFwcGluZ1syNTVdOworCisgIGlmIChzdHJlYW1z
ID09IE5VTEwgfHwgY291cGxlZF9zdHJlYW1zID09IE5VTEwpIHsKKyAgICByZXR1cm4gT1BVU19C
QURfQVJHOworICB9CisKKyAgaWYgKGdldF9zdHJlYW1zX2Zyb21fY2hhbm5lbHMoY2hhbm5lbHMs
IG1hcHBpbmdfZmFtaWx5LCBzdHJlYW1zLAorICAgIGNvdXBsZWRfc3RyZWFtcywgJm9yZGVyX3Bs
dXNfb25lKSAhPSBPUFVTX09LKQorICAgIHJldHVybiBPUFVTX0JBRF9BUkc7CisKKyAgaWYgKG1h
cHBpbmdfZmFtaWx5ID09IDMpCisgIHsKKyAgICAvKiBBc3NpZ24gbWl4aW5nIG1hdHJpeCBiYXNl
ZCBvbiBhdmFpbGFibGUgcHJlLWNvbXB1dGVkIG1hdHJpY2VzLiAqLworICAgIG1peGluZ19tYXRy
aXggPSBnZXRfbWl4aW5nX21hdHJpeChzdCk7CisgICAgaWYgKG9yZGVyX3BsdXNfb25lID09IDIp
CisgICAgeworICAgICAgbWFwcGluZ19tYXRyaXhfaW5pdChtaXhpbmdfbWF0cml4LCBtYXBwaW5n
X21hdHJpeF9mb2FfbWl4aW5nLnJvd3MsCisgICAgICAgIG1hcHBpbmdfbWF0cml4X2ZvYV9taXhp
bmcuY29scywgbWFwcGluZ19tYXRyaXhfZm9hX21peGluZy5nYWluLAorICAgICAgICBtYXBwaW5n
X21hdHJpeF9mb2FfbWl4aW5nX2RhdGEsCisgICAgICAgIHNpemVvZihtYXBwaW5nX21hdHJpeF9m
b2FfbWl4aW5nX2RhdGEpKTsKKyAgICB9CisgICAgZWxzZSBpZiAob3JkZXJfcGx1c19vbmUgPT0g
MykKKyAgICB7CisgICAgICBtYXBwaW5nX21hdHJpeF9pbml0KG1peGluZ19tYXRyaXgsIG1hcHBp
bmdfbWF0cml4X3NvYV9taXhpbmcucm93cywKKyAgICAgICAgbWFwcGluZ19tYXRyaXhfc29hX21p
eGluZy5jb2xzLCBtYXBwaW5nX21hdHJpeF9zb2FfbWl4aW5nLmdhaW4sCisgICAgICAgIG1hcHBp
bmdfbWF0cml4X3NvYV9taXhpbmdfZGF0YSwKKyAgICAgICAgc2l6ZW9mKG1hcHBpbmdfbWF0cml4
X3NvYV9taXhpbmdfZGF0YSkpOworICAgIH0KKyAgICBlbHNlIGlmIChvcmRlcl9wbHVzX29uZSA9
PSA0KQorICAgIHsKKyAgICAgIG1hcHBpbmdfbWF0cml4X2luaXQobWl4aW5nX21hdHJpeCwgbWFw
cGluZ19tYXRyaXhfdG9hX21peGluZy5yb3dzLAorICAgICAgICBtYXBwaW5nX21hdHJpeF90b2Ff
bWl4aW5nLmNvbHMsIG1hcHBpbmdfbWF0cml4X3RvYV9taXhpbmcuZ2FpbiwKKyAgICAgICAgbWFw
cGluZ19tYXRyaXhfdG9hX21peGluZ19kYXRhLAorICAgICAgICBzaXplb2YobWFwcGluZ19tYXRy
aXhfdG9hX21peGluZ19kYXRhKSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHJldHVybiBPUFVT
X0JBRF9BUkc7CisKKyAgICBzdC0+bWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzID0gbWFwcGlu
Z19tYXRyaXhfZ2V0X3NpemUoCisgICAgICBtaXhpbmdfbWF0cml4LT5yb3dzLCBtaXhpbmdfbWF0
cml4LT5jb2xzKTsKKyAgICBpZiAoIXN0LT5taXhpbmdfbWF0cml4X3NpemVfaW5fYnl0ZXMpCisg
ICAgICByZXR1cm4gT1BVU19CQURfQVJHOworCisgICAgLyogQXNzaWduIGRlbWl4aW5nIG1hdHJp
eCBiYXNlZCBvbiBhdmFpbGFibGUgcHJlLWNvbXB1dGVkIG1hdHJpY2VzLiAqLworICAgIGRlbWl4
aW5nX21hdHJpeCA9IGdldF9lbmNfZGVtaXhpbmdfbWF0cml4KHN0KTsKKyAgICBpZiAob3JkZXJf
cGx1c19vbmUgPT0gMikKKyAgICB7CisgICAgICBtYXBwaW5nX21hdHJpeF9pbml0KGRlbWl4aW5n
X21hdHJpeCwgbWFwcGluZ19tYXRyaXhfZm9hX2RlbWl4aW5nLnJvd3MsCisgICAgICAgIG1hcHBp
bmdfbWF0cml4X2ZvYV9kZW1peGluZy5jb2xzLCBtYXBwaW5nX21hdHJpeF9mb2FfZGVtaXhpbmcu
Z2FpbiwKKyAgICAgICAgbWFwcGluZ19tYXRyaXhfZm9hX2RlbWl4aW5nX2RhdGEsCisgICAgICAg
IHNpemVvZihtYXBwaW5nX21hdHJpeF9mb2FfZGVtaXhpbmdfZGF0YSkpOworICAgIH0KKyAgICBl
bHNlIGlmIChvcmRlcl9wbHVzX29uZSA9PSAzKQorICAgIHsKKyAgICAgIG1hcHBpbmdfbWF0cml4
X2luaXQoZGVtaXhpbmdfbWF0cml4LCBtYXBwaW5nX21hdHJpeF9zb2FfZGVtaXhpbmcucm93cywK
KyAgICAgICAgbWFwcGluZ19tYXRyaXhfc29hX2RlbWl4aW5nLmNvbHMsIG1hcHBpbmdfbWF0cml4
X3NvYV9kZW1peGluZy5nYWluLAorICAgICAgICBtYXBwaW5nX21hdHJpeF9zb2FfZGVtaXhpbmdf
ZGF0YSwKKyAgICAgICAgc2l6ZW9mKG1hcHBpbmdfbWF0cml4X3NvYV9kZW1peGluZ19kYXRhKSk7
CisgICAgfQorICAgIGVsc2UgaWYgKG9yZGVyX3BsdXNfb25lID09IDQpCisgICAgeworICAgICAg
bWFwcGluZ19tYXRyaXhfaW5pdChkZW1peGluZ19tYXRyaXgsIG1hcHBpbmdfbWF0cml4X3RvYV9k
ZW1peGluZy5yb3dzLAorICAgICAgICBtYXBwaW5nX21hdHJpeF90b2FfZGVtaXhpbmcuY29scywg
bWFwcGluZ19tYXRyaXhfdG9hX2RlbWl4aW5nLmdhaW4sCisgICAgICAgIG1hcHBpbmdfbWF0cml4
X3RvYV9kZW1peGluZ19kYXRhLAorICAgICAgICBzaXplb2YobWFwcGluZ19tYXRyaXhfdG9hX2Rl
bWl4aW5nX2RhdGEpKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgcmV0dXJuIE9QVVNfQkFEX0FS
RzsKKworICAgIHN0LT5kZW1peGluZ19tYXRyaXhfc2l6ZV9pbl9ieXRlcyA9IG1hcHBpbmdfbWF0
cml4X2dldF9zaXplKAorICAgICAgZGVtaXhpbmdfbWF0cml4LT5yb3dzLCBkZW1peGluZ19tYXRy
aXgtPmNvbHMpOworICAgIGlmICghc3QtPmRlbWl4aW5nX21hdHJpeF9zaXplX2luX2J5dGVzKQor
ICAgICAgcmV0dXJuIE9QVVNfQkFEX0FSRzsKKyAgfQorICBlbHNlCisgICAgcmV0dXJuIE9QVVNf
VU5JTVBMRU1FTlRFRDsKKworICAvKiBFbnN1cmUgbWF0cmljZXMgYXJlIGxhcmdlIGVub3VnaCBm
b3IgZGVzaXJlZCBjb2Rpbmcgc2NoZW1lLiAqLworICBpZiAoKnN0cmVhbXMgKyAqY291cGxlZF9z
dHJlYW1zID4gbWl4aW5nX21hdHJpeC0+cm93cyB8fAorICAgICAgY2hhbm5lbHMgPiBtaXhpbmdf
bWF0cml4LT5jb2xzIHx8CisgICAgICBjaGFubmVscyA+IGRlbWl4aW5nX21hdHJpeC0+cm93cyB8
fAorICAgICAgKnN0cmVhbXMgKyAqY291cGxlZF9zdHJlYW1zID4gZGVtaXhpbmdfbWF0cml4LT5j
b2xzKQorICAgIHJldHVybiBPUFVTX0JBRF9BUkc7CisKKyAgLyogU2V0IHRyaXZpYWwgbWFwcGlu
ZyBzbyBlYWNoIGlucHV0IGNoYW5uZWwgcGFpcnMgd2l0aCBhIG1hdHJpeCBjb2x1bW4uICovCisg
IGZvciAoaSA9IDA7IGkgPCBjaGFubmVsczsgaSsrKQorICAgIG1hcHBpbmdbaV0gPSBpOworCisg
IC8qIEluaXRpYWxpemUgbXVsdGlzdHJlYW0gZW5jb2RlciB3aXRoIHByb3ZpZGVkIHNldHRpbmdz
LiAqLworICBtc19lbmNvZGVyID0gZ2V0X211bHRpc3RyZWFtX2VuY29kZXIoc3QpOworICByZXQg
PSBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfaW5pdChtc19lbmNvZGVyLCBGcywgY2hhbm5lbHMs
ICpzdHJlYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY291cGxl
ZF9zdHJlYW1zLCBtYXBwaW5nLCBhcHBsaWNhdGlvbik7CisgIHJldHVybiByZXQ7Cit9CisKK09w
dXNQcm9qZWN0aW9uRW5jb2RlciAqb3B1c19wcm9qZWN0aW9uX2FtYmlzb25pY3NfZW5jb2Rlcl9j
cmVhdGUoCisgICAgb3B1c19pbnQzMiBGcywgaW50IGNoYW5uZWxzLCBpbnQgbWFwcGluZ19mYW1p
bHksIGludCAqc3RyZWFtcywKKyAgICBpbnQgKmNvdXBsZWRfc3RyZWFtcywgaW50IGFwcGxpY2F0
aW9uLCBpbnQgKmVycm9yKQoreworICBpbnQgc2l6ZTsKKyAgaW50IHJldDsKKyAgT3B1c1Byb2pl
Y3Rpb25FbmNvZGVyICpzdDsKKworICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHByb2plY3Rp
b24gZW5jb2Rlci4gKi8KKyAgc2l6ZSA9IG9wdXNfcHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29k
ZXJfZ2V0X3NpemUoY2hhbm5lbHMsIG1hcHBpbmdfZmFtaWx5KTsKKyAgaWYgKCFzaXplKSB7Cisg
ICAgaWYgKGVycm9yKQorICAgICAgKmVycm9yID0gT1BVU19BTExPQ19GQUlMOworICAgIHJldHVy
biBOVUxMOworICB9CisgIHN0ID0gKE9wdXNQcm9qZWN0aW9uRW5jb2RlciAqKW9wdXNfYWxsb2Mo
c2l6ZSk7CisgIGlmICghc3QpCisgIHsKKyAgICBpZiAoZXJyb3IpCisgICAgICAqZXJyb3IgPSBP
UFVTX0FMTE9DX0ZBSUw7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvKiBJbml0aWFsaXpl
IHByb2plY3Rpb24gZW5jb2RlciB3aXRoIHByb3ZpZGVkIHNldHRpbmdzLiAqLworICByZXQgPSBv
cHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2luaXQoc3QsIEZzLCBjaGFubmVscywK
KyAgICAgbWFwcGluZ19mYW1pbHksIHN0cmVhbXMsIGNvdXBsZWRfc3RyZWFtcywgYXBwbGljYXRp
b24pOworICBpZiAocmV0ICE9IE9QVVNfT0spCisgIHsKKyAgICBvcHVzX2ZyZWUoc3QpOworICAg
IHN0ID0gTlVMTDsKKyAgfQorICBpZiAoZXJyb3IpCisgICAgKmVycm9yID0gcmV0OworICByZXR1
cm4gc3Q7Cit9CisKK2ludCBvcHVzX3Byb2plY3Rpb25fZW5jb2RlKE9wdXNQcm9qZWN0aW9uRW5j
b2RlciAqc3QsIGNvbnN0IG9wdXNfaW50MTYgKnBjbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBmcmFtZV9zaXplLCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3B1c19pbnQzMiBtYXhfZGF0YV9ieXRlcykKK3sKKyAgcmV0dXJuIG9wdXNf
bXVsdGlzdHJlYW1fZW5jb2RlX25hdGl2ZShnZXRfbXVsdGlzdHJlYW1fZW5jb2RlcihzdCksCisg
ICAgb3B1c19wcm9qZWN0aW9uX2NvcHlfY2hhbm5lbF9pbl9zaG9ydCwgcGNtLCBmcmFtZV9zaXpl
LCBkYXRhLAorICAgIG1heF9kYXRhX2J5dGVzLCAxNiwgZG93bm1peF9pbnQsIDAsIGdldF9taXhp
bmdfbWF0cml4KHN0KSk7Cit9CisKKyNpZm5kZWYgRElTQUJMRV9GTE9BVF9BUEkKKyNpZmRlZiBG
SVhFRF9QT0lOVAoraW50IG9wdXNfcHJvamVjdGlvbl9lbmNvZGVfZmxvYXQoT3B1c1Byb2plY3Rp
b25FbmNvZGVyICpzdCwgY29uc3QgZmxvYXQgKnBjbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBmcmFtZV9zaXplLCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B1c19pbnQzMiBtYXhfZGF0YV9ieXRlcykKK3sKKyAg
cmV0dXJuIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlX25hdGl2ZShnZXRfbXVsdGlzdHJlYW1fZW5j
b2RlcihzdCksCisgICAgb3B1c19wcm9qZWN0aW9uX2NvcHlfY2hhbm5lbF9pbl9mbG9hdCwgcGNt
LCBmcmFtZV9zaXplLCBkYXRhLAorICAgIG1heF9kYXRhX2J5dGVzLCAxNiwgZG93bm1peF9mbG9h
dCwgMSwgZ2V0X21peGluZ19tYXRyaXgoc3QpKTsKK30KKyNlbHNlCitpbnQgb3B1c19wcm9qZWN0
aW9uX2VuY29kZV9mbG9hdChPcHVzUHJvamVjdGlvbkVuY29kZXIgKnN0LCBjb25zdCBmbG9hdCAq
cGNtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lX3NpemUsIHVu
c2lnbmVkIGNoYXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHVz
X2ludDMyIG1heF9kYXRhX2J5dGVzKQoreworICByZXR1cm4gb3B1c19tdWx0aXN0cmVhbV9lbmNv
ZGVfbmF0aXZlKGdldF9tdWx0aXN0cmVhbV9lbmNvZGVyKHN0KSwKKyAgICBvcHVzX3Byb2plY3Rp
b25fY29weV9jaGFubmVsX2luX2Zsb2F0LCBwY20sIGZyYW1lX3NpemUsIGRhdGEsCisgICAgbWF4
X2RhdGFfYnl0ZXMsIDI0LCBkb3dubWl4X2Zsb2F0LCAxLCBnZXRfbWl4aW5nX21hdHJpeChzdCkp
OworfQorI2VuZGlmCisjZW5kaWYKKwordm9pZCBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9kZXN0
cm95KE9wdXNQcm9qZWN0aW9uRW5jb2RlciAqc3QpCit7CisgIG9wdXNfZnJlZShzdCk7Cit9CisK
K2ludCBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9jdGwoT3B1c1Byb2plY3Rpb25FbmNvZGVyICpz
dCwgaW50IHJlcXVlc3QsIC4uLikKK3sKKyAgdmFfbGlzdCBhcDsKKyAgTWFwcGluZ01hdHJpeCAq
ZGVtaXhpbmdfbWF0cml4OworICBPcHVzTVNFbmNvZGVyICptc19lbmNvZGVyOworICBpbnQgcmV0
ID0gT1BVU19PSzsKKworICBtc19lbmNvZGVyID0gZ2V0X211bHRpc3RyZWFtX2VuY29kZXIoc3Qp
OworICBkZW1peGluZ19tYXRyaXggPSBnZXRfZW5jX2RlbWl4aW5nX21hdHJpeChzdCk7CisKKyAg
dmFfc3RhcnQoYXAsIHJlcXVlc3QpOworICBzd2l0Y2gocmVxdWVzdCkKKyAgeworICBjYXNlIE9Q
VVNfUFJPSkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX1NJWkVfUkVRVUVTVDoKKyAgeworICAg
IG9wdXNfaW50MzIgKnZhbHVlID0gdmFfYXJnKGFwLCBvcHVzX2ludDMyKik7CisgICAgaWYgKCF2
YWx1ZSkKKyAgICB7CisgICAgICBnb3RvIGJhZF9hcmc7CisgICAgfQorICAgICp2YWx1ZSA9Cisg
ICAgICBtc19lbmNvZGVyLT5sYXlvdXQubmJfY2hhbm5lbHMgKiAobXNfZW5jb2Rlci0+bGF5b3V0
Lm5iX3N0cmVhbXMKKyAgICAgICsgbXNfZW5jb2Rlci0+bGF5b3V0Lm5iX2NvdXBsZWRfc3RyZWFt
cykgKiBzaXplb2Yob3B1c19pbnQxNik7CisgIH0KKyAgYnJlYWs7CisgIGNhc2UgT1BVU19QUk9K
RUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfR0FJTl9SRVFVRVNUOgorICB7CisgICAgb3B1c19p
bnQzMiAqdmFsdWUgPSB2YV9hcmcoYXAsIG9wdXNfaW50MzIqKTsKKyAgICBpZiAoIXZhbHVlKQor
ICAgIHsKKyAgICAgIGdvdG8gYmFkX2FyZzsKKyAgICB9CisgICAgKnZhbHVlID0gZGVtaXhpbmdf
bWF0cml4LT5nYWluOworICB9CisgIGJyZWFrOworICBjYXNlIE9QVVNfUFJPSkVDVElPTl9HRVRf
REVNSVhJTkdfTUFUUklYX1JFUVVFU1Q6CisgIHsKKyAgICBpbnQgaSwgaiwgaywgbDsKKyAgICBp
bnQgbmJfaW5wdXRfc3RyZWFtczsKKyAgICBpbnQgbmJfb3V0cHV0X3N0cmVhbXM7CisgICAgdW5z
aWduZWQgY2hhciAqZXh0ZXJuYWxfY2hhcjsKKyAgICBvcHVzX2ludDE2ICppbnRlcm5hbF9zaG9y
dDsKKyAgICBvcHVzX2ludDMyIGV4dGVybmFsX3NpemU7CisgICAgb3B1c19pbnQzMiBpbnRlcm5h
bF9zaXplOworCisgICAgLyogKEkvTyBpcyBpbiByZWxhdGlvbiB0byB0aGUgZGVjb2RlcidzIHBl
cnNwZWN0aXZlKS4gKi8KKyAgICBuYl9pbnB1dF9zdHJlYW1zID0gbXNfZW5jb2Rlci0+bGF5b3V0
Lm5iX3N0cmVhbXMgKworICAgICAgbXNfZW5jb2Rlci0+bGF5b3V0Lm5iX2NvdXBsZWRfc3RyZWFt
czsKKyAgICBuYl9vdXRwdXRfc3RyZWFtcyA9IG1zX2VuY29kZXItPmxheW91dC5uYl9jaGFubmVs
czsKKworICAgIGV4dGVybmFsX2NoYXIgPSB2YV9hcmcoYXAsIHVuc2lnbmVkIGNoYXIgKik7Cisg
ICAgZXh0ZXJuYWxfc2l6ZSA9IHZhX2FyZyhhcCwgb3B1c19pbnQzMik7CisgICAgaWYgKCFleHRl
cm5hbF9jaGFyKQorICAgIHsKKyAgICAgIGdvdG8gYmFkX2FyZzsKKyAgICB9CisgICAgaW50ZXJu
YWxfc2hvcnQgPSBtYXBwaW5nX21hdHJpeF9nZXRfZGF0YShkZW1peGluZ19tYXRyaXgpOworICAg
IGludGVybmFsX3NpemUgPSBuYl9pbnB1dF9zdHJlYW1zICogbmJfb3V0cHV0X3N0cmVhbXMgKiBz
aXplb2Yob3B1c19pbnQxNik7CisgICAgaWYgKGV4dGVybmFsX3NpemUgIT0gaW50ZXJuYWxfc2l6
ZSkKKyAgICB7CisgICAgICBnb3RvIGJhZF9hcmc7CisgICAgfQorCisgICAgLyogQ29weSBkZW1p
eGluZyBtYXRyaXggc3Vic2V0IHRvIG91dHB1dCBkZXN0aW5hdGlvbi4gKi8KKyAgICBsID0gMDsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgbmJfaW5wdXRfc3RyZWFtczsgaSsrKSB7CisgICAgICBmb3Ig
KGogPSAwOyBqIDwgbmJfb3V0cHV0X3N0cmVhbXM7IGorKykgeworICAgICAgICBrID0gZGVtaXhp
bmdfbWF0cml4LT5yb3dzICogaSArIGo7CisgICAgICAgIGV4dGVybmFsX2NoYXJbMipsXSA9ICh1
bnNpZ25lZCBjaGFyKWludGVybmFsX3Nob3J0W2tdOworICAgICAgICBleHRlcm5hbF9jaGFyWzIq
bCsxXSA9ICh1bnNpZ25lZCBjaGFyKShpbnRlcm5hbF9zaG9ydFtrXSA+PiA4KTsKKyAgICAgICAg
bCsrOworICAgICAgfQorICAgIH0KKyAgfQorICBicmVhazsKKyAgZGVmYXVsdDoKKyAgeworICAg
IHJldCA9IG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGxfdmFfbGlzdChtc19lbmNvZGVyLCBy
ZXF1ZXN0LCBhcCk7CisgIH0KKyAgYnJlYWs7CisgIH0KKyAgdmFfZW5kKGFwKTsKKyAgcmV0dXJu
IHJldDsKKworYmFkX2FyZzoKKyAgdmFfZW5kKGFwKTsKKyAgcmV0dXJuIE9QVVNfQkFEX0FSRzsK
K30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy9zcmMvcmVwYWNrZXRpemVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9yZXBhY2tldGl6ZXIuYwpp
bmRleCBjODBlZTdmMDAxNDg2MTI2MWIyNzY1NWE4YzZkNWFhOTE4YjRmYmY3Li5iZGE0NGExNDhh
Yjc5MTY4Y2QxNGM3Y2EzMjQwNjkzZjhhYjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3NyYy9yZXBhY2tldGl6
ZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3NyYy9yZXBhY2tldGl6ZXIuYwpAQCAtMjEzLDcgKzIxMyw4IEBAIG9wdXNfaW50
MzIgb3B1c19yZXBhY2tldGl6ZXJfb3V0X3JhbmdlX2ltcGwoT3B1c1JlcGFja2V0aXplciAqcnAs
IGludCBiZWdpbiwgaW50CiAgICB7CiAgICAgICAvKiBVc2luZyBPUFVTX01PVkUoKSBpbnN0ZWFk
IG9mIE9QVVNfQ09QWSgpIGluIGNhc2Ugd2UncmUgZG9pbmcgaW4tcGxhY2UKICAgICAgICAgIHBh
ZGRpbmcgZnJvbSBvcHVzX3BhY2tldF9wYWQgb3Igb3B1c19wYWNrZXRfdW5wYWQoKS4gKi8KLSAg
ICAgIGNlbHRfYXNzZXJ0KGZyYW1lc1tpXSArIGxlbltpXSA8PSBkYXRhIHx8IHB0ciA8PSBmcmFt
ZXNbaV0pOworICAgICAgLyogYXNzZXJ0IGRpc2FibGVkIGJlY2F1c2UgaXQncyBub3QgdmFsaWQg
aW4gQy4gKi8KKyAgICAgIC8qIGNlbHRfYXNzZXJ0KGZyYW1lc1tpXSArIGxlbltpXSA8PSBkYXRh
IHx8IHB0ciA8PSBmcmFtZXNbaV0pOyAqLwogICAgICAgT1BVU19NT1ZFKHB0ciwgZnJhbWVzW2ld
LCBsZW5baV0pOwogICAgICAgcHRyICs9IGxlbltpXTsKICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdGVzdHMv
dGVzdF9vcHVzX2FwaS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9vcHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfYXBpLmMKaW5kZXggMWQwMDk1MDU4Zjgw
YTEyMTNiMDE1NTYxOTg0YzNiY2M3Y2Y4ZTU0Mi4uZmIzODVjNjMwNDRkZTYxZDMyMWEzZDQyMDU2
ZmZmN2M5MWU4OGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfYXBpLmMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90ZXN0
cy90ZXN0X29wdXNfYXBpLmMKQEAgLTc4LDYgKzc4LDkgQEAgdm9pZCAqbWFsbG9jX2hvb2soX19h
dHRyaWJ1dGVfXygodW51c2VkKSkgc2l6ZV90IHNpemUsCiB9CiAjZW5kaWYKIAorb3B1c19pbnQz
MiAqbnVsbF9pbnRfcHRyID0gKG9wdXNfaW50MzIgKilOVUxMOworb3B1c191aW50MzIgKm51bGxf
dWludF9wdHIgPSAob3B1c191aW50MzIgKilOVUxMOworCiBzdGF0aWMgY29uc3Qgb3B1c19pbnQz
MiBvcHVzX3JhdGVzWzVdID0gezQ4MDAwLDI0MDAwLDE2MDAwLDEyMDAwLDgwMDB9OwogCiBvcHVz
X2ludDMyIHRlc3RfZGVjX2FwaSh2b2lkKQpAQCAtOTIsOCArOTUsNiBAQCBvcHVzX2ludDMyIHRl
c3RfZGVjX2FwaSh2b2lkKQogI2VuZGlmCiAgICBzaG9ydCBzYnVmWzk2MCoyXTsKICAgIGludCBj
LGVycjsKLSAgIG9wdXNfaW50MzIgKm51bGx2YWx1ZTsKLSAgIG51bGx2YWx1ZT0wOwogCiAgICBj
ZmdzPTA7CiAgICAvKkZpcnN0IHRlc3QgaW52YWxpZCBjb25maWd1cmF0aW9ucyB3aGljaCBzaG91
bGQgZmFpbCovCkBAIC0xNDcsNyArMTQ4LDcgQEAgb3B1c19pbnQzMiB0ZXN0X2RlY19hcGkodm9p
ZCkKICAgIGZwcmludGYoc3Rkb3V0LCIgICAgb3B1c19kZWNvZGVyX2NyZWF0ZSgpIC4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpOwogICAgZnByaW50ZihzdGRvdXQsIiAgICBvcHVzX2Rl
Y29kZXJfaW5pdCgpIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIik7CiAKLSAgIGVy
cj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfRklOQUxfUkFOR0UoKG9wdXNfdWludDMy
ICopTlVMTCkpOworICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9GSU5BTF9S
QU5HRShudWxsX3VpbnRfcHRyKSk7CiAgICBpZihlcnIgIT0gT1BVU19CQURfQVJHKXRlc3RfZmFp
bGVkKCk7CiAgICBWR19VTkRFRigmZGVjX2ZpbmFsX3JhbmdlLHNpemVvZihkZWNfZmluYWxfcmFu
Z2UpKTsKICAgIGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfRklOQUxfUkFOR0Uo
JmRlY19maW5hbF9yYW5nZSkpOwpAQCAtMTYxLDcgKzE2Miw3IEBAIG9wdXNfaW50MzIgdGVzdF9k
ZWNfYXBpKHZvaWQpCiAgICBmcHJpbnRmKHN0ZG91dCwiICAgIE9QVVNfVU5JTVBMRU1FTlRFRCAu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKTsKICAgIGNmZ3MrKzsKIAotICAgZXJy
PW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9CQU5EV0lEVEgoKG9wdXNfaW50MzIgKilO
VUxMKSk7CisgICBlcnI9b3B1c19kZWNvZGVyX2N0bChkZWMsIE9QVVNfR0VUX0JBTkRXSURUSChu
dWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciAhPSBPUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsK
ICAgIFZHX1VOREVGKCZpLHNpemVvZihpKSk7CiAgICBlcnI9b3B1c19kZWNvZGVyX2N0bChkZWMs
IE9QVVNfR0VUX0JBTkRXSURUSCgmaSkpOwpAQCAtMTY5LDcgKzE3MCw3IEBAIG9wdXNfaW50MzIg
dGVzdF9kZWNfYXBpKHZvaWQpCiAgICBmcHJpbnRmKHN0ZG91dCwiICAgIE9QVVNfR0VUX0JBTkRX
SURUSCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKTsKICAgIGNmZ3MrKzsKIAot
ICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9TQU1QTEVfUkFURSgob3B1c19p
bnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfU0FN
UExFX1JBVEUobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIgIT0gT1BVU19CQURfQVJHKXRlc3Rf
ZmFpbGVkKCk7CiAgICBWR19VTkRFRigmaSxzaXplb2YoaSkpOwogICAgZXJyPW9wdXNfZGVjb2Rl
cl9jdGwoZGVjLCBPUFVTX0dFVF9TQU1QTEVfUkFURSgmaSkpOwpAQCAtMTc4LDcgKzE3OSw3IEBA
IG9wdXNfaW50MzIgdGVzdF9kZWNfYXBpKHZvaWQpCiAgICBjZmdzKys7CiAKICAgIC8qR0VUX1BJ
VENIIGhhcyBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzIGRlcGVuZGluZyBvbiB0aGUgcHJldmlv
dXNseSBkZWNvZGVkIGZyYW1lLiovCi0gICBlcnI9b3B1c19kZWNvZGVyX2N0bChkZWMsIE9QVVNf
R0VUX1BJVENIKG51bGx2YWx1ZSkpOworICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVT
X0dFVF9QSVRDSChudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3Rf
ZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBWR19VTkRFRigmaSxzaXplb2YoaSkpOwpAQCAtMjAy
LDcgKzIwMyw3IEBAIG9wdXNfaW50MzIgdGVzdF9kZWNfYXBpKHZvaWQpCiAgICBjZmdzKys7CiAg
ICBmcHJpbnRmKHN0ZG91dCwiICAgIE9QVVNfR0VUX1BJVENIIC4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4gT0suXG4iKTsKIAotICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVT
X0dFVF9MQVNUX1BBQ0tFVF9EVVJBVElPTigob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1v
cHVzX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfTEFTVF9QQUNLRVRfRFVSQVRJT04obnVsbF9p
bnRfcHRyKSk7CiAgICBpZihlcnIgIT0gT1BVU19CQURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBW
R19VTkRFRigmaSxzaXplb2YoaSkpOwogICAgZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVT
X0dFVF9MQVNUX1BBQ0tFVF9EVVJBVElPTigmaSkpOwpAQCAtMjE1LDcgKzIxNiw3IEBAIG9wdXNf
aW50MzIgdGVzdF9kZWNfYXBpKHZvaWQpCiAgICBWR19DSEVDSygmaSxzaXplb2YoaSkpOwogICAg
aWYoZXJyICE9IE9QVVNfT0sgfHwgaSE9MCl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwotICAg
ZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9HQUlOKG51bGx2YWx1ZSkpOworICAg
ZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9HQUlOKG51bGxfaW50X3B0cikpOwog
ICAgaWYoZXJyICE9IE9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwogICAg
ZXJyPW9wdXNfZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX1NFVF9HQUlOKC0zMjc2OSkpOwpAQCAtMzUy
LDExICszNTMsNiBAQCBvcHVzX2ludDMyIHRlc3RfbXNkZWNfYXBpKHZvaWQpCiAjZW5kaWYKICAg
IHNob3J0IHNidWZbOTYwKjJdOwogICAgaW50IGEsYixjLGVycjsKLSNpZiAwCi0gICAvKlJlbGV2
YW50IHRlc3Qgbm90IGVuYWJsZWQgZm9yIG11bHRpc3RyZWFtKi8KLSAgIGludCAqbnVsbHZhbHVl
OwotICAgbnVsbHZhbHVlPTA7Ci0jZW5kaWYKIAogICAgbWFwcGluZ1swXT0wOwogICAgbWFwcGlu
Z1sxXT0xOwpAQCAtNjEwLDcgKzYwNiw3IEBAIG9wdXNfaW50MzIgdGVzdF9tc2RlY19hcGkodm9p
ZCkKICNpZiAwCiAgICAvKkN1cnJlbnRseSB1bmltcGxlbWVudGVkIGZvciBtdWx0aXN0cmVhbSov
CiAgICAvKkdFVF9QSVRDSCBoYXMgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocyBkZXBlbmRpbmcg
b24gdGhlIHByZXZpb3VzbHkgZGVjb2RlZCBmcmFtZS4qLwotICAgZXJyPW9wdXNfbXVsdGlzdHJl
YW1fZGVjb2Rlcl9jdGwoZGVjLCBPUFVTX0dFVF9QSVRDSChudWxsdmFsdWUpKTsKKyAgIGVycj1v
cHVzX211bHRpc3RyZWFtX2RlY29kZXJfY3RsKGRlYywgT1BVU19HRVRfUElUQ0gobnVsbF9pbnRf
cHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAgY2Zncysr
OwogICAgVkdfVU5ERUYoJmksc2l6ZW9mKGkpKTsKQEAgLTY1Nyw2ICs2NTMsOCBAQCBvcHVzX2lu
dDMyIHRlc3RfbXNkZWNfYXBpKHZvaWQpCiAgICBwYWNrZXRbMV09cGFja2V0WzJdPTA7CiAgICBp
ZihvcHVzX211bHRpc3RyZWFtX2RlY29kZShkZWMsIHBhY2tldCwgLTEsIHNidWYsIDk2MCwgMCkh
PU9QVVNfQkFEX0FSRyl7cHJpbnRmKCIlZFxuIixvcHVzX211bHRpc3RyZWFtX2RlY29kZShkZWMs
IHBhY2tldCwgLTEsIHNidWYsIDk2MCwgMCkpO3Rlc3RfZmFpbGVkKCk7fQogICAgY2ZncysrOwor
ICAgaWYob3B1c19tdWx0aXN0cmVhbV9kZWNvZGUoZGVjLCBwYWNrZXQsIDMsIHNidWYsIC05NjAs
IDApIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKKyAgIGNmZ3MrKzsKICAgIGlmKG9wdXNf
bXVsdGlzdHJlYW1fZGVjb2RlKGRlYywgcGFja2V0LCAzLCBzYnVmLCA2MCwgMCkhPU9QVVNfQlVG
RkVSX1RPT19TTUFMTCl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwogICAgaWYob3B1c19tdWx0
aXN0cmVhbV9kZWNvZGUoZGVjLCBwYWNrZXQsIDMsIHNidWYsIDQ4MCwgMCkhPU9QVVNfQlVGRkVS
X1RPT19TTUFMTCl0ZXN0X2ZhaWxlZCgpOwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgb3B1c19pbnQz
MiB0ZXN0X2VuY19hcGkodm9pZCkKICAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dF
VF9MT09LQUhFQUQoJmkpKTsKICAgIGlmKGVyciE9T1BVU19PSyB8fCBpPDAgfHwgaT4zMjc2Nil0
ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwotICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9Q
VVNfR0VUX0xPT0tBSEVBRCgob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29k
ZXJfY3RsKGVuYyxPUFVTX0dFVF9MT09LQUhFQUQobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIh
PU9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwogICAgZnByaW50ZihzdGRv
dXQsIiAgICBPUFVTX0dFVF9MT09LQUhFQUQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9L
LlxuIik7CkBAIC0xMTc0LDcgKzExNzIsNyBAQCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2b2lk
KQogICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1NBTVBMRV9SQVRFKCZpKSk7
CiAgICBpZihlcnIhPU9QVVNfT0sgfHwgaSE9NDgwMDApdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3Mr
KzsKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9TQU1QTEVfUkFURSgob3B1
c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9T
QU1QTEVfUkFURShudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3Rf
ZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBmcHJpbnRmKHN0ZG91dCwiICAgIE9QVVNfR0VUX1NB
TVBMRV9SQVRFIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKTsKQEAgLTExODMsNyAr
MTE4MSw3IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICBmcHJpbnRmKHN0ZG91
dCwiICAgIE9QVVNfVU5JTVBMRU1FTlRFRCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0su
XG4iKTsKICAgIGNmZ3MrKzsKIAotICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VU
X0FQUExJQ0FUSU9OKChvcHVzX2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9j
dGwoZW5jLE9QVVNfR0VUX0FQUExJQ0FUSU9OKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1P
UFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIENIRUNLX1NFVEdFVChP
UFVTX1NFVF9BUFBMSUNBVElPTihpKSxPUFVTX0dFVF9BUFBMSUNBVElPTigmaSksLTEsT1BVU19B
VVRPLApAQCAtMTE5MSw3ICsxMTg5LDcgQEAgb3B1c19pbnQzMiB0ZXN0X2VuY19hcGkodm9pZCkK
ICAgICAgIiAgICBPUFVTX1NFVF9BUFBMSUNBVElPTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
IE9LLlxuIiwKICAgICAgIiAgICBPUFVTX0dFVF9BUFBMSUNBVElPTiAuLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uIE9LLlxuIikKIAotICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VU
X0JJVFJBVEUoKG9wdXNfaW50MzIgKilOVUxMKSk7CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChl
bmMsT1BVU19HRVRfQklUUkFURShudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURf
QVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBpZihvcHVzX2VuY29kZXJfY3RsKGVu
YyxPUFVTX1NFVF9CSVRSQVRFKDEwNzM3NDE4MzIpKSE9T1BVU19PSyl0ZXN0X2ZhaWxlZCgpOwpA
QCAtMTIwNSw3ICsxMjAzLDcgQEAgb3B1c19pbnQzMiB0ZXN0X2VuY19hcGkodm9pZCkKICAgICAg
IiAgICBPUFVTX1NFVF9CSVRSQVRFIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxu
IiwKICAgICAgIiAgICBPUFVTX0dFVF9CSVRSQVRFIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uIE9LLlxuIikKIAotICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0ZPUkNF
X0NIQU5ORUxTKChvcHVzX2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwo
ZW5jLE9QVVNfR0VUX0ZPUkNFX0NIQU5ORUxTKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1P
UFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIENIRUNLX1NFVEdFVChP
UFVTX1NFVF9GT1JDRV9DSEFOTkVMUyhpKSxPUFVTX0dFVF9GT1JDRV9DSEFOTkVMUygmaSksLTEs
MywKQEAgLTEyNDMsNyArMTI0MSw3IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAg
ICBjZmdzKys7CiAgICBpZihvcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX1NFVF9CQU5EV0lEVEgo
T1BVU19BVVRPKSkhPU9QVVNfT0spdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKLSAgIGVycj1v
cHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9CQU5EV0lEVEgoKG9wdXNfaW50MzIgKilOVUxM
KSk7CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfQkFORFdJRFRIKG51bGxf
aW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNm
Z3MrKzsKICAgIGZwcmludGYoc3Rkb3V0LCIgICAgT1BVU19HRVRfQkFORFdJRFRIIC4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpOwpAQCAtMTI3NiwxMiArMTI3NCwxMiBAQCBvcHVz
X2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogICAgICAgaSE9T1BVU19CQU5EV0lEVEhfTUVESVVN
QkFORCYmaSE9T1BVU19CQU5EV0lEVEhfV0lERUJBTkQmJgogICAgICAgaSE9T1BVU19CQU5EV0lE
VEhfRlVMTEJBTkQpKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7Ci0gICBlcnI9b3B1c19lbmNv
ZGVyX2N0bChlbmMsT1BVU19HRVRfTUFYX0JBTkRXSURUSCgob3B1c19pbnQzMiAqKU5VTEwpKTsK
KyAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9NQVhfQkFORFdJRFRIKG51bGxf
aW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNm
Z3MrKzsKICAgIGZwcmludGYoc3Rkb3V0LCIgICAgT1BVU19HRVRfTUFYX0JBTkRXSURUSCAuLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpOwogCi0gICBlcnI9b3B1c19lbmNvZGVyX2N0bChl
bmMsT1BVU19HRVRfRFRYKChvcHVzX2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rl
cl9jdGwoZW5jLE9QVVNfR0VUX0RUWChudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19C
QURfQVJHKXRlc3RfZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQoT1BVU19T
RVRfRFRYKGkpLE9QVVNfR0VUX0RUWCgmaSksLTEsMiwKQEAgLTEyODksNyArMTI4Nyw3IEBAIG9w
dXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIgICAgT1BVU19TRVRfRFRYIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIgICAgT1BVU19HRVRf
RFRYIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpCiAKLSAgIGVycj1v
cHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9DT01QTEVYSVRZKChvcHVzX2ludDMyICopTlVM
TCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0NPTVBMRVhJVFkobnVs
bF9pbnRfcHRyKSk7CiAgICBpZihlcnIhPU9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAg
Y2ZncysrOwogICAgQ0hFQ0tfU0VUR0VUKE9QVVNfU0VUX0NPTVBMRVhJVFkoaSksT1BVU19HRVRf
Q09NUExFWElUWSgmaSksLTEsMTEsCkBAIC0xMjk3LDcgKzEyOTUsNyBAQCBvcHVzX2ludDMyIHRl
c3RfZW5jX2FwaSh2b2lkKQogICAgICAiICAgIE9QVVNfU0VUX0NPTVBMRVhJVFkgLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNfR0VUX0NPTVBMRVhJVFkg
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT0suXG4iKQogCi0gICBlcnI9b3B1c19lbmNvZGVy
X2N0bChlbmMsT1BVU19HRVRfSU5CQU5EX0ZFQygob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVy
cj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9JTkJBTkRfRkVDKG51bGxfaW50X3B0cikp
OwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAg
IENIRUNLX1NFVEdFVChPUFVTX1NFVF9JTkJBTkRfRkVDKGkpLE9QVVNfR0VUX0lOQkFORF9GRUMo
JmkpLC0xLDIsCkBAIC0xMzA1LDcgKzEzMDMsNyBAQCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2
b2lkKQogICAgICAiICAgIE9QVVNfU0VUX0lOQkFORF9GRUMgLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4gT0suXG4iLAogICAgICAiICAgIE9QVVNfR0VUX0lOQkFORF9GRUMgLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4gT0suXG4iKQogCi0gICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BV
U19HRVRfUEFDS0VUX0xPU1NfUEVSQygob3B1c19pbnQzMiAqKU5VTEwpKTsKKyAgIGVycj1vcHVz
X2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9QQUNLRVRfTE9TU19QRVJDKG51bGxfaW50X3B0cikp
OwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAg
IENIRUNLX1NFVEdFVChPUFVTX1NFVF9QQUNLRVRfTE9TU19QRVJDKGkpLE9QVVNfR0VUX1BBQ0tF
VF9MT1NTX1BFUkMoJmkpLC0xLDEwMSwKQEAgLTEzMTMsNyArMTMxMSw3IEBAIG9wdXNfaW50MzIg
dGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIgICAgT1BVU19TRVRfUEFDS0VUX0xPU1NfUEVSQyAu
Li4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIgICAgT1BVU19HRVRfUEFDS0VUX0xP
U1NfUEVSQyAuLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpCiAKLSAgIGVycj1vcHVzX2VuY29k
ZXJfY3RsKGVuYyxPUFVTX0dFVF9WQlIoKG9wdXNfaW50MzIgKilOVUxMKSk7CisgICBlcnI9b3B1
c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfVkJSKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJy
IT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIENIRUNLX1NFVEdF
VChPUFVTX1NFVF9WQlIoaSksT1BVU19HRVRfVkJSKCZpKSwtMSwyLApAQCAtMTMyMSw3ICsxMzE5
LDcgQEAgb3B1c19pbnQzMiB0ZXN0X2VuY19hcGkodm9pZCkKICAgICAgIiAgICBPUFVTX1NFVF9W
QlIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIiwKICAgICAgIiAgICBP
UFVTX0dFVF9WQlIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9LLlxuIikKIAot
LyogICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfVk9JQ0VfUkFUSU8oKG9wdXNf
aW50MzIgKilOVUxMKSk7CisvKiAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9W
T0lDRV9SQVRJTyhudWxsX2ludF9wdHIpKTsKICAgIGlmKGVyciE9T1BVU19CQURfQVJHKXRlc3Rf
ZmFpbGVkKCk7CiAgICBjZmdzKys7CiAgICBDSEVDS19TRVRHRVQoT1BVU19TRVRfVk9JQ0VfUkFU
SU8oaSksT1BVU19HRVRfVk9JQ0VfUkFUSU8oJmkpLC0yLDEwMSwKQEAgLTEzMjksNyArMTMyNyw3
IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIgICAgT1BVU19TRVRfVk9J
Q0VfUkFUSU8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIgICAgT1BV
U19HRVRfVk9JQ0VfUkFUSU8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpKi8KIAot
ICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1ZCUl9DT05TVFJBSU5UKChvcHVz
X2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1ZC
Ul9DT05TVFJBSU5UKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVz
dF9mYWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIENIRUNLX1NFVEdFVChPUFVTX1NFVF9WQlJfQ09O
U1RSQUlOVChpKSxPUFVTX0dFVF9WQlJfQ09OU1RSQUlOVCgmaSksLTEsMiwKQEAgLTEzMzcsNyAr
MTMzNSw3IEBAIG9wdXNfaW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIgICAgT1BVU19T
RVRfVkJSX0NPTlNUUkFJTlQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIg
ICAgT1BVU19HRVRfVkJSX0NPTlNUUkFJTlQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIp
CiAKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9TSUdOQUwoKG9wdXNfaW50
MzIgKilOVUxMKSk7CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfU0lHTkFM
KG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsK
ICAgIGNmZ3MrKzsKICAgIENIRUNLX1NFVEdFVChPUFVTX1NFVF9TSUdOQUwoaSksT1BVU19HRVRf
U0lHTkFMKCZpKSwtMTIzNDUsMHg3RkZGRkZGRiwKQEAgLTEzNDUsNyArMTM0Myw3IEBAIG9wdXNf
aW50MzIgdGVzdF9lbmNfYXBpKHZvaWQpCiAgICAgICIgICAgT1BVU19TRVRfU0lHTkFMIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIgICAgT1BVU19HRVRfU0lH
TkFMIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpCiAKLSAgIGVycj1vcHVz
X2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9MU0JfREVQVEgoKG9wdXNfaW50MzIgKilOVUxMKSk7
CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfTFNCX0RFUFRIKG51bGxfaW50
X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAgIGNmZ3Mr
KzsKICAgIENIRUNLX1NFVEdFVChPUFVTX1NFVF9MU0JfREVQVEgoaSksT1BVU19HRVRfTFNCX0RF
UFRIKCZpKSw3LDI1LDE2LDI0LApAQCAtMTM1NSwxNCArMTM1MywxNCBAQCBvcHVzX2ludDMyIHRl
c3RfZW5jX2FwaSh2b2lkKQogICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX1BS
RURJQ1RJT05fRElTQUJMRUQoJmkpKTsKICAgIGlmKGkhPTApdGVzdF9mYWlsZWQoKTsKICAgIGNm
Z3MrKzsKLSAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9QUkVESUNUSU9OX0RJ
U0FCTEVEKChvcHVzX2ludDMyICopTlVMTCkpOworICAgZXJyPW9wdXNfZW5jb2Rlcl9jdGwoZW5j
LE9QVVNfR0VUX1BSRURJQ1RJT05fRElTQUJMRUQobnVsbF9pbnRfcHRyKSk7CiAgICBpZihlcnIh
PU9QVVNfQkFEX0FSRyl0ZXN0X2ZhaWxlZCgpOwogICAgY2ZncysrOwogICAgQ0hFQ0tfU0VUR0VU
KE9QVVNfU0VUX1BSRURJQ1RJT05fRElTQUJMRUQoaSksT1BVU19HRVRfUFJFRElDVElPTl9ESVNB
QkxFRCgmaSksLTEsMiwxLDAsCiAgICAgICIgICAgT1BVU19TRVRfUFJFRElDVElPTl9ESVNBQkxF
RCAuLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIsCiAgICAgICIgICAgT1BVU19HRVRfUFJFRElDVElP
Tl9ESVNBQkxFRCAuLi4uLi4uLi4uLi4uLi4uLiBPSy5cbiIpCiAKLSAgIGVycj1vcHVzX2VuY29k
ZXJfY3RsKGVuYyxPUFVTX0dFVF9FWFBFUlRfRlJBTUVfRFVSQVRJT04oKG9wdXNfaW50MzIgKilO
VUxMKSk7CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfRVhQRVJUX0ZSQU1F
X0RVUkFUSU9OKG51bGxfaW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9m
YWlsZWQoKTsKICAgIGNmZ3MrKzsKICAgIGVycj1vcHVzX2VuY29kZXJfY3RsKGVuYyxPUFVTX1NF
VF9FWFBFUlRfRlJBTUVfRFVSQVRJT04oT1BVU19GUkFNRVNJWkVfMl81X01TKSk7CkBAIC0xMzk5
LDcgKzEzOTcsNyBAQCBvcHVzX2ludDMyIHRlc3RfZW5jX2FwaSh2b2lkKQogCiAgICAvKk9QVVNf
U0VUX0ZPUkNFX01PREUgaXMgbm90IHRlc3RlZCBoZXJlIGJlY2F1c2UgaXQncyBub3QgYSBwdWJs
aWMgQVBJLCBob3dldmVyIHRoZSBlbmNvZGVyIHRlc3RzIHVzZSBpdCovCiAKLSAgIGVycj1vcHVz
X2VuY29kZXJfY3RsKGVuYyxPUFVTX0dFVF9GSU5BTF9SQU5HRSgob3B1c191aW50MzIgKilOVUxM
KSk7CisgICBlcnI9b3B1c19lbmNvZGVyX2N0bChlbmMsT1BVU19HRVRfRklOQUxfUkFOR0UobnVs
bF91aW50X3B0cikpOwogICAgaWYoZXJyIT1PUFVTX0JBRF9BUkcpdGVzdF9mYWlsZWQoKTsKICAg
IGNmZ3MrKzsKICAgIGlmKG9wdXNfZW5jb2Rlcl9jdGwoZW5jLE9QVVNfR0VUX0ZJTkFMX1JBTkdF
KCZlbmNfZmluYWxfcmFuZ2UpKSE9T1BVU19PSyl0ZXN0X2ZhaWxlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90
ZXN0cy90ZXN0X29wdXNfZW5jb2RlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Rlc3RzL3Rlc3Rfb3B1c19lbmNvZGUuYwppbmRleCBk
YWU0OWMzZDUzNTFiZDU1NmMwM2Q3NGVkOGFlNjljMjE5NTIwNjJhLi4wMDc5NWExZTI5ZjFkOTZj
ZTBkMWEyMDJiMGEyODUwNTczZjdhYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvc3JjL3Rlc3RzL3Rlc3Rfb3B1c19lbmNv
ZGUuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L29wdXMvc3JjL3Rlc3RzL3Rlc3Rfb3B1c19lbmNvZGUuYwpAQCAtMTQwLDcgKzE0MCw3IEBAIGlu
dCBnZXRfZnJhbWVfc2l6ZV9lbnVtKGludCBmcmFtZV9zaXplLCBpbnQgc2FtcGxpbmdfcmF0ZSkK
ICAgIHJldHVybiBmcmFtZV9zaXplX2VudW07CiB9CiAKLXZvaWQgdGVzdF9lbmNvZGUoT3B1c0Vu
Y29kZXIgKmVuYywgaW50IGNoYW5uZWxzLCBpbnQgZnJhbWVfc2l6ZSwgT3B1c0RlY29kZXIgKmRl
YywgY29uc3QgY2hhciogZGVidWdfaW5mbykKK2ludCB0ZXN0X2VuY29kZShPcHVzRW5jb2RlciAq
ZW5jLCBpbnQgY2hhbm5lbHMsIGludCBmcmFtZV9zaXplLCBPcHVzRGVjb2RlciAqZGVjKQogewog
ICAgaW50IHNhbXBfY291bnQgPSAwOwogICAgb3B1c19pbnQxNiAqaW5idWY7CkBAIC0xNDgsNiAr
MTQ4LDcgQEAgdm9pZCB0ZXN0X2VuY29kZShPcHVzRW5jb2RlciAqZW5jLCBpbnQgY2hhbm5lbHMs
IGludCBmcmFtZV9zaXplLCBPcHVzRGVjb2RlciAqZGUKICAgIGludCBsZW47CiAgICBvcHVzX2lu
dDE2ICpvdXRidWY7CiAgICBpbnQgb3V0X3NhbXBsZXM7CisgICBpbnQgcmV0ID0gMDsKIAogICAg
LyogR2VuZXJhdGUgaW5wdXQgZGF0YSAqLwogICAgaW5idWYgPSAob3B1c19pbnQxNiopbWFsbG9j
KHNpemVvZigqaW5idWYpKlNTQU1QTEVTKTsKQEAgLTE2MCwxNiArMTYxLDE2IEBAIHZvaWQgdGVz
dF9lbmNvZGUoT3B1c0VuY29kZXIgKmVuYywgaW50IGNoYW5uZWxzLCBpbnQgZnJhbWVfc2l6ZSwg
T3B1c0RlY29kZXIgKmRlCiAgICBkbyB7CiAgICAgICBsZW4gPSBvcHVzX2VuY29kZShlbmMsICZp
bmJ1ZltzYW1wX2NvdW50KmNoYW5uZWxzXSwgZnJhbWVfc2l6ZSwgcGFja2V0LCBNQVhfUEFDS0VU
KTsKICAgICAgIGlmKGxlbjwwIHx8IGxlbj5NQVhfUEFDS0VUKSB7Ci0gICAgICAgICBmcHJpbnRm
KHN0ZGVyciwiJXNcbiIsZGVidWdfaW5mbyk7CiAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwib3B1
c19lbmNvZGUoKSByZXR1cm5lZCAlZFxuIixsZW4pOwotICAgICAgICAgdGVzdF9mYWlsZWQoKTsK
KyAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAKICAgICAgIG91
dF9zYW1wbGVzID0gb3B1c19kZWNvZGUoZGVjLCBwYWNrZXQsIGxlbiwgb3V0YnVmLCBNQVhfRlJB
TUVfU0FNUCwgMCk7CiAgICAgICBpZihvdXRfc2FtcGxlcyE9ZnJhbWVfc2l6ZSkgewotICAgICAg
ICAgZnByaW50ZihzdGRlcnIsIiVzXG4iLGRlYnVnX2luZm8pOwogICAgICAgICAgZnByaW50Zihz
dGRlcnIsIm9wdXNfZGVjb2RlKCkgcmV0dXJuZWQgJWRcbiIsb3V0X3NhbXBsZXMpOwotICAgICAg
ICAgdGVzdF9mYWlsZWQoKTsKKyAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgYnJlYWs7CiAg
ICAgICB9CiAKICAgICAgIHNhbXBfY291bnQgKz0gZnJhbWVfc2l6ZTsKQEAgLTE3OCw2ICsxNzks
NyBAQCB2b2lkIHRlc3RfZW5jb2RlKE9wdXNFbmNvZGVyICplbmMsIGludCBjaGFubmVscywgaW50
IGZyYW1lX3NpemUsIE9wdXNEZWNvZGVyICpkZQogICAgLyogQ2xlYW4gdXAgKi8KICAgIGZyZWUo
aW5idWYpOwogICAgZnJlZShvdXRidWYpOworICAgcmV0dXJuIHJldDsKIH0KIAogdm9pZCBmdXp6
X2VuY29kZXJfc2V0dGluZ3MoY29uc3QgaW50IG51bV9lbmNvZGVycywgY29uc3QgaW50IG51bV9z
ZXR0aW5nX2NoYW5nZXMpCkBAIC0yMDUsNyArMjA3LDYgQEAgdm9pZCBmdXp6X2VuY29kZXJfc2V0
dGluZ3MoY29uc3QgaW50IG51bV9lbmNvZGVycywgY29uc3QgaW50IG51bV9zZXR0aW5nX2NoYW5n
ZXMKICAgIGludCBwcmVkaWN0aW9uX2Rpc2FibGVkWzNdID0gezAsIDAsIDF9OwogICAgaW50IHVz
ZV9kdHhbMl0gPSB7MCwgMX07CiAgICBpbnQgZnJhbWVfc2l6ZXNfbXNfeDJbOV0gPSB7NSwgMTAs
IDIwLCA0MCwgODAsIDEyMCwgMTYwLCAyMDAsIDI0MH07ICAvKiB4MiB0byBhdm9pZCAyLjUgbXMg
Ki8KLSAgIGNoYXIgZGVidWdfaW5mb1s1MTJdOwogCiAgICBmb3IgKGk9MDsgaTxudW1fZW5jb2Rl
cnM7IGkrKykgewogICAgICAgaW50IHNhbXBsaW5nX3JhdGUgPSBSQU5EX1NBTVBMRShzYW1wbGlu
Z19yYXRlcyk7CkBAIC0yMzYsMTUgKzIzNyw2IEBAIHZvaWQgZnV6el9lbmNvZGVyX3NldHRpbmdz
KGNvbnN0IGludCBudW1fZW5jb2RlcnMsIGNvbnN0IGludCBudW1fc2V0dGluZ19jaGFuZ2VzCiAg
ICAgICAgICBpbnQgZnJhbWVfc2l6ZV9lbnVtID0gZ2V0X2ZyYW1lX3NpemVfZW51bShmcmFtZV9z
aXplLCBzYW1wbGluZ19yYXRlKTsKICAgICAgICAgIGZvcmNlX2NoYW5uZWwgPSBJTUlOKGZvcmNl
X2NoYW5uZWwsIG51bV9jaGFubmVscyk7CiAKLSAgICAgICAgIHNwcmludGYoZGVidWdfaW5mbywK
LSAgICAgICAgICAgICAgICAgImZ1enpfZW5jb2Rlcl9zZXR0aW5nczogJWQga0h6LCAlZCBjaCwg
YXBwbGljYXRpb246ICVkLCAiCi0gICAgICAgICAgICAgICAgICIlZCBicHMsIGZvcmNlIGNoOiAl
ZCwgdmJyOiAlZCwgdmJyIGNvbnN0cmFpbnQ6ICVkLCBjb21wbGV4aXR5OiAlZCwgIgotICAgICAg
ICAgICAgICAgICAibWF4IGJ3OiAlZCwgc2lnbmFsOiAlZCwgaW5iYW5kIGZlYzogJWQsIHBrdCBs
b3NzOiAlZCUlLCBsc2IgZGVwdGg6ICVkLCAiCi0gICAgICAgICAgICAgICAgICJwcmVkIGRpc2Fi
bGVkOiAlZCwgZHR4OiAlZCwgKCVkLzIpIG1zXG4iLAotICAgICAgICAgICAgICAgICBzYW1wbGlu
Z19yYXRlLzEwMDAsIG51bV9jaGFubmVscywgYXBwbGljYXRpb24sIGJpdHJhdGUsCi0gICAgICAg
ICAgICAgICAgIGZvcmNlX2NoYW5uZWwsIHZiciwgdmJyX2NvbnN0cmFpbnQsIGNvbXBsZXhpdHks
IG1heF9idywgc2lnLCBpbmJhbmRfZmVjLAotICAgICAgICAgICAgICAgICBwa3RfbG9zcywgbHNi
X2RlcHRoLCBwcmVkX2Rpc2FibGVkLCBkdHgsIGZyYW1lX3NpemVfbXNfeDIpOwotCiAgICAgICAg
ICBpZihvcHVzX2VuY29kZXJfY3RsKGVuYywgT1BVU19TRVRfQklUUkFURShiaXRyYXRlKSkgIT0g
T1BVU19PSykgdGVzdF9mYWlsZWQoKTsKICAgICAgICAgIGlmKG9wdXNfZW5jb2Rlcl9jdGwoZW5j
LCBPUFVTX1NFVF9GT1JDRV9DSEFOTkVMUyhmb3JjZV9jaGFubmVsKSkgIT0gT1BVU19PSykgdGVz
dF9mYWlsZWQoKTsKICAgICAgICAgIGlmKG9wdXNfZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NFVF9W
QlIodmJyKSkgIT0gT1BVU19PSykgdGVzdF9mYWlsZWQoKTsKQEAgLTI1OSw3ICsyNTEsMTcgQEAg
dm9pZCBmdXp6X2VuY29kZXJfc2V0dGluZ3MoY29uc3QgaW50IG51bV9lbmNvZGVycywgY29uc3Qg
aW50IG51bV9zZXR0aW5nX2NoYW5nZXMKICAgICAgICAgIGlmKG9wdXNfZW5jb2Rlcl9jdGwoZW5j
LCBPUFVTX1NFVF9EVFgoZHR4KSkgIT0gT1BVU19PSykgdGVzdF9mYWlsZWQoKTsKICAgICAgICAg
IGlmKG9wdXNfZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NFVF9FWFBFUlRfRlJBTUVfRFVSQVRJT04o
ZnJhbWVfc2l6ZV9lbnVtKSkgIT0gT1BVU19PSykgdGVzdF9mYWlsZWQoKTsKIAotICAgICAgICAg
dGVzdF9lbmNvZGUoZW5jLCBudW1fY2hhbm5lbHMsIGZyYW1lX3NpemUsIGRlYywgZGVidWdfaW5m
byk7CisgICAgICAgICBpZih0ZXN0X2VuY29kZShlbmMsIG51bV9jaGFubmVscywgZnJhbWVfc2l6
ZSwgZGVjKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAi
ZnV6el9lbmNvZGVyX3NldHRpbmdzOiAlZCBrSHosICVkIGNoLCBhcHBsaWNhdGlvbjogJWQsICIK
KyAgICAgICAgICAgICAgICIlZCBicHMsIGZvcmNlIGNoOiAlZCwgdmJyOiAlZCwgdmJyIGNvbnN0
cmFpbnQ6ICVkLCBjb21wbGV4aXR5OiAlZCwgIgorICAgICAgICAgICAgICAgIm1heCBidzogJWQs
IHNpZ25hbDogJWQsIGluYmFuZCBmZWM6ICVkLCBwa3QgbG9zczogJWQlJSwgbHNiIGRlcHRoOiAl
ZCwgIgorICAgICAgICAgICAgICAgInByZWQgZGlzYWJsZWQ6ICVkLCBkdHg6ICVkLCAoJWQvMikg
bXNcbiIsCisgICAgICAgICAgICAgICBzYW1wbGluZ19yYXRlLzEwMDAsIG51bV9jaGFubmVscywg
YXBwbGljYXRpb24sIGJpdHJhdGUsCisgICAgICAgICAgICAgICBmb3JjZV9jaGFubmVsLCB2YnIs
IHZicl9jb25zdHJhaW50LCBjb21wbGV4aXR5LCBtYXhfYncsIHNpZywgaW5iYW5kX2ZlYywKKyAg
ICAgICAgICAgICAgIHBrdF9sb3NzLCBsc2JfZGVwdGgsIHByZWRfZGlzYWJsZWQsIGR0eCwgZnJh
bWVfc2l6ZV9tc194Mik7CisgICAgICAgICAgICB0ZXN0X2ZhaWxlZCgpOworICAgICAgICAgfQog
ICAgICAgfQogCiAgICAgICBvcHVzX2VuY29kZXJfZGVzdHJveShlbmMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90
ZXN0cy90ZXN0X29wdXNfcHJvamVjdGlvbi5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy90ZXN0cy90ZXN0X29wdXNfcHJvamVjdGlvbi5j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVmMGQ2NzJjMTFhZDQ4YzM0MmJjMzY2OTkxOTUyNjQzZTQ2YjU0NjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvc3JjL3Rlc3RzL3Rlc3Rfb3B1c19wcm9qZWN0aW9uLmMKQEAgLTAsMCArMSwz
OTQgQEAKKy8qIENvcHlyaWdodCAoYykgMjAxNyBHb29nbGUgSW5jLgorICAgV3JpdHRlbiBieSBB
bmRyZXcgQWxsZW4gKi8KKy8qCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJlIG1l
dDoKKworICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorCisgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICBgYEFTIElTJycgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSCisgICBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAgIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICAgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1
ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImZsb2F0X2Nhc3QuaCIKKyNpbmNsdWRlICJvcHVzLmgi
CisjaW5jbHVkZSAidGVzdF9vcHVzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm9wdXNfcHJvamVjdGlv
bi5oIgorI2luY2x1ZGUgIm1hdGhvcHMuaCIKKyNpbmNsdWRlICIuLi9zcmMvbWFwcGluZ19tYXRy
aXguaCIKKyNpbmNsdWRlICJtYXRob3BzLmgiCisKKyNkZWZpbmUgQlVGRkVSX1NJWkUgOTYwCisj
ZGVmaW5lIE1BWF9EQVRBX0JZVEVTIDMyNzY4CisjZGVmaW5lIE1BWF9GUkFNRV9TQU1QTEVTIDU3
NjAKKyNkZWZpbmUgRVJST1JfVE9MRVJBTkNFIDEKKworI2RlZmluZSBTSU1QTEVfTUFUUklYX1NJ
WkUgMTIKKyNkZWZpbmUgU0lNUExFX01BVFJJWF9GUkFNRV9TSVpFIDEwCisjZGVmaW5lIFNJTVBM
RV9NQVRSSVhfSU5QVVRfU0laRSAzMAorI2RlZmluZSBTSU1QTEVfTUFUUklYX09VVFBVVF9TSVpF
IDQwCisKK2ludCBhc3NlcnRfaXNfZXF1YWwoCisgIGNvbnN0IG9wdXNfdmFsMTYgKmEsIGNvbnN0
IG9wdXNfaW50MTYgKmIsIGludCBzaXplLCBvcHVzX2ludDE2IHRvbGVyYW5jZSkKK3sKKyAgaW50
IGk7CisgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCisgIHsKKyNpZmRlZiBGSVhFRF9QT0lO
VAorICAgIG9wdXNfaW50MTYgdmFsID0gYVtpXTsKKyNlbHNlCisgICAgb3B1c19pbnQxNiB2YWwg
PSBGTE9BVDJJTlQxNihhW2ldKTsKKyNlbmRpZgorICAgIGlmIChhYnModmFsIC0gYltpXSkgPiB0
b2xlcmFuY2UpCisgICAgICByZXR1cm4gMTsKKyAgfQorICByZXR1cm4gMDsKK30KKworaW50IGFz
c2VydF9pc19lcXVhbF9zaG9ydCgKKyAgY29uc3Qgb3B1c19pbnQxNiAqYSwgY29uc3Qgb3B1c19p
bnQxNiAqYiwgaW50IHNpemUsIG9wdXNfaW50MTYgdG9sZXJhbmNlKQoreworICBpbnQgaTsKKyAg
Zm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICBpZiAoYWJzKGFbaV0gLSBiW2ldKSA+IHRv
bGVyYW5jZSkKKyAgICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKwordm9pZCB0ZXN0X3Np
bXBsZV9tYXRyaXgodm9pZCkKK3sKKyAgY29uc3QgTWFwcGluZ01hdHJpeCBzaW1wbGVfbWF0cml4
X3BhcmFtcyA9IHs0LCAzLCAwfTsKKyAgY29uc3Qgb3B1c19pbnQxNiBzaW1wbGVfbWF0cml4X2Rh
dGFbU0lNUExFX01BVFJJWF9TSVpFXSA9IHswLCAzMjc2NywgMCwgMCwgMzI3NjcsIDAsIDAsIDAs
IDAsIDAsIDAsIDMyNzY3fTsKKyAgY29uc3Qgb3B1c19pbnQxNiBpbnB1dF9pbnQxNltTSU1QTEVf
TUFUUklYX0lOUFVUX1NJWkVdID0geworICAgIDMyNzY3LCAwLCAtMzI3NjgsIDI5NDkxLCAtMzI3
NywgLTI5NDkxLCAyNjIxNCwgLTY1NTQsIC0yNjIxNCwgMjI5MzgsIC05ODMwLAorICAgIC0yMjkz
OCwgMTk2NjEsIC0xMzEwNywgLTE5NjYxLCAxNjM4NCwgLTE2Mzg0LCAtMTYzODQsIDEzMTA3LCAt
MTk2NjEsIC0xMzEwNywKKyAgICA5ODMwLCAtMjI5MzgsIC05ODMwLCA2NTU0LCAtMjYyMTQsIC02
NTU0LCAzMjc3LCAtMjk0OTEsIC0zMjc3fTsKKyAgY29uc3Qgb3B1c19pbnQxNiBleHBlY3RlZF9v
dXRwdXRfaW50MTZbU0lNUExFX01BVFJJWF9PVVRQVVRfU0laRV0gPSB7CisgICAgMCwgMzI3Njcs
IDAsIC0zMjc2OCwgLTMyNzcsIDI5NDkxLCAwLCAtMjk0OTEsIC02NTU0LCAyNjIxNCwgMCwgLTI2
MjE0LAorICAgIC05ODMwLCAyMjkzOCwgMCwgLTIyOTM4LCAtMTMxMDcsIDE5NjYxLCAwLCAtMTk2
NjEsIC0xNjM4NCwgMTYzODQsIDAsIC0xNjM4NCwKKyAgICAtMTk2NjEsIDEzMTA3LCAwLCAtMTMx
MDcsIC0yMjkzOCwgOTgzMCwgMCwgLTk4MzAsIC0yNjIxNCwgNjU1NCwgMCwgLTY1NTQsCisgICAg
LTI5NDkxLCAzMjc3LCAwLCAtMzI3N307CisKKyAgaW50IGksIHJldDsKKyAgb3B1c19pbnQzMiBz
aW1wbGVfbWF0cml4X3NpemU7CisgIG9wdXNfdmFsMTYgKmlucHV0X3ZhbDE2OworICBvcHVzX3Zh
bDE2ICpvdXRwdXRfdmFsMTY7CisgIG9wdXNfaW50MTYgKm91dHB1dF9pbnQxNjsKKyAgTWFwcGlu
Z01hdHJpeCAqc2ltcGxlX21hdHJpeDsKKworICAvKiBBbGxvY2F0ZSBpbnB1dC9vdXRwdXQgYnVm
ZmVycy4gKi8KKyAgaW5wdXRfdmFsMTYgPSAob3B1c192YWwxNiAqKW9wdXNfYWxsb2Moc2l6ZW9m
KG9wdXNfdmFsMTYpICogU0lNUExFX01BVFJJWF9JTlBVVF9TSVpFKTsKKyAgb3V0cHV0X2ludDE2
ID0gKG9wdXNfaW50MTYgKilvcHVzX2FsbG9jKHNpemVvZihvcHVzX2ludDE2KSAqIFNJTVBMRV9N
QVRSSVhfT1VUUFVUX1NJWkUpOworICBvdXRwdXRfdmFsMTYgPSAob3B1c192YWwxNiAqKW9wdXNf
YWxsb2Moc2l6ZW9mKG9wdXNfdmFsMTYpICogU0lNUExFX01BVFJJWF9PVVRQVVRfU0laRSk7CisK
KyAgLyogSW5pdGlhbGl6ZSBtYXRyaXggKi8KKyAgc2ltcGxlX21hdHJpeF9zaXplID0gbWFwcGlu
Z19tYXRyaXhfZ2V0X3NpemUoc2ltcGxlX21hdHJpeF9wYXJhbXMucm93cywKKyAgICBzaW1wbGVf
bWF0cml4X3BhcmFtcy5jb2xzKTsKKyAgaWYgKCFzaW1wbGVfbWF0cml4X3NpemUpCisgICAgdGVz
dF9mYWlsZWQoKTsKKworICBzaW1wbGVfbWF0cml4ID0gKE1hcHBpbmdNYXRyaXggKilvcHVzX2Fs
bG9jKHNpbXBsZV9tYXRyaXhfc2l6ZSk7CisgIG1hcHBpbmdfbWF0cml4X2luaXQoc2ltcGxlX21h
dHJpeCwgc2ltcGxlX21hdHJpeF9wYXJhbXMucm93cywKKyAgICBzaW1wbGVfbWF0cml4X3BhcmFt
cy5jb2xzLCBzaW1wbGVfbWF0cml4X3BhcmFtcy5nYWluLCBzaW1wbGVfbWF0cml4X2RhdGEsCisg
ICAgc2l6ZW9mKHNpbXBsZV9tYXRyaXhfZGF0YSkpOworCisgIC8qIENvcHkgaW5wdXRzLiAqLwor
ICBmb3IgKGkgPSAwOyBpIDwgU0lNUExFX01BVFJJWF9JTlBVVF9TSVpFOyBpKyspCisgIHsKKyNp
ZmRlZiBGSVhFRF9QT0lOVAorICAgIGlucHV0X3ZhbDE2W2ldID0gaW5wdXRfaW50MTZbaV07Cisj
ZWxzZQorICAgIGlucHV0X3ZhbDE2W2ldID0gKDEvMzI3NjguZikqaW5wdXRfaW50MTZbaV07Cisj
ZW5kaWYKKyAgfQorCisgIC8qIF9pbl9zaG9ydCAqLworICBmb3IgKGkgPSAwOyBpIDwgU0lNUExF
X01BVFJJWF9PVVRQVVRfU0laRTsgaSsrKQorICAgIG91dHB1dF92YWwxNltpXSA9IDA7CisgIGZv
ciAoaSA9IDA7IGkgPCBzaW1wbGVfbWF0cml4LT5yb3dzOyBpKyspCisgIHsKKyAgICBtYXBwaW5n
X21hdHJpeF9tdWx0aXBseV9jaGFubmVsX2luX3Nob3J0KHNpbXBsZV9tYXRyaXgsCisgICAgICBp
bnB1dF9pbnQxNiwgc2ltcGxlX21hdHJpeC0+Y29scywgJm91dHB1dF92YWwxNltpXSwgaSwKKyAg
ICAgIHNpbXBsZV9tYXRyaXgtPnJvd3MsIFNJTVBMRV9NQVRSSVhfRlJBTUVfU0laRSk7CisgIH0K
KyAgcmV0ID0gYXNzZXJ0X2lzX2VxdWFsKG91dHB1dF92YWwxNiwgZXhwZWN0ZWRfb3V0cHV0X2lu
dDE2LCBTSU1QTEVfTUFUUklYX09VVFBVVF9TSVpFLCBFUlJPUl9UT0xFUkFOQ0UpOworICBpZiAo
cmV0KQorICAgIHRlc3RfZmFpbGVkKCk7CisKKyAgLyogX291dF9zaG9ydCAqLworICBmb3IgKGkg
PSAwOyBpIDwgU0lNUExFX01BVFJJWF9PVVRQVVRfU0laRTsgaSsrKQorICAgIG91dHB1dF9pbnQx
NltpXSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCBzaW1wbGVfbWF0cml4LT5jb2xzOyBpKyspCisg
IHsKKyAgICBtYXBwaW5nX21hdHJpeF9tdWx0aXBseV9jaGFubmVsX291dF9zaG9ydChzaW1wbGVf
bWF0cml4LAorICAgICAgJmlucHV0X3ZhbDE2W2ldLCBpLCBzaW1wbGVfbWF0cml4LT5jb2xzLCBv
dXRwdXRfaW50MTYsCisgICAgICBzaW1wbGVfbWF0cml4LT5yb3dzLCBTSU1QTEVfTUFUUklYX0ZS
QU1FX1NJWkUpOworICB9CisgIHJldCA9IGFzc2VydF9pc19lcXVhbF9zaG9ydChvdXRwdXRfaW50
MTYsIGV4cGVjdGVkX291dHB1dF9pbnQxNiwgU0lNUExFX01BVFJJWF9PVVRQVVRfU0laRSwgRVJS
T1JfVE9MRVJBTkNFKTsKKyAgaWYgKHJldCkKKyAgICB0ZXN0X2ZhaWxlZCgpOworCisjaWYgIWRl
ZmluZWQoRElTQUJMRV9GTE9BVF9BUEkpICYmICFkZWZpbmVkKEZJWEVEX1BPSU5UKQorICAvKiBf
aW5fZmxvYXQgKi8KKyAgZm9yIChpID0gMDsgaSA8IFNJTVBMRV9NQVRSSVhfT1VUUFVUX1NJWkU7
IGkrKykKKyAgICBvdXRwdXRfdmFsMTZbaV0gPSAwOworICBmb3IgKGkgPSAwOyBpIDwgc2ltcGxl
X21hdHJpeC0+cm93czsgaSsrKQorICB7CisgICAgbWFwcGluZ19tYXRyaXhfbXVsdGlwbHlfY2hh
bm5lbF9pbl9mbG9hdChzaW1wbGVfbWF0cml4LAorICAgICAgaW5wdXRfdmFsMTYsIHNpbXBsZV9t
YXRyaXgtPmNvbHMsICZvdXRwdXRfdmFsMTZbaV0sIGksCisgICAgICBzaW1wbGVfbWF0cml4LT5y
b3dzLCBTSU1QTEVfTUFUUklYX0ZSQU1FX1NJWkUpOworICB9CisgIHJldCA9IGFzc2VydF9pc19l
cXVhbChvdXRwdXRfdmFsMTYsIGV4cGVjdGVkX291dHB1dF9pbnQxNiwgU0lNUExFX01BVFJJWF9P
VVRQVVRfU0laRSwgRVJST1JfVE9MRVJBTkNFKTsKKyAgaWYgKHJldCkKKyAgICB0ZXN0X2ZhaWxl
ZCgpOworCisgIC8qIF9vdXRfZmxvYXQgKi8KKyAgZm9yIChpID0gMDsgaSA8IFNJTVBMRV9NQVRS
SVhfT1VUUFVUX1NJWkU7IGkrKykKKyAgICBvdXRwdXRfdmFsMTZbaV0gPSAwOworICBmb3IgKGkg
PSAwOyBpIDwgc2ltcGxlX21hdHJpeC0+Y29sczsgaSsrKQorICB7CisgICAgbWFwcGluZ19tYXRy
aXhfbXVsdGlwbHlfY2hhbm5lbF9vdXRfZmxvYXQoc2ltcGxlX21hdHJpeCwKKyAgICAgICZpbnB1
dF92YWwxNltpXSwgaSwgc2ltcGxlX21hdHJpeC0+Y29scywgb3V0cHV0X3ZhbDE2LAorICAgICAg
c2ltcGxlX21hdHJpeC0+cm93cywgU0lNUExFX01BVFJJWF9GUkFNRV9TSVpFKTsKKyAgfQorICBy
ZXQgPSBhc3NlcnRfaXNfZXF1YWwob3V0cHV0X3ZhbDE2LCBleHBlY3RlZF9vdXRwdXRfaW50MTYs
IFNJTVBMRV9NQVRSSVhfT1VUUFVUX1NJWkUsIEVSUk9SX1RPTEVSQU5DRSk7CisgIGlmIChyZXQp
CisgICAgdGVzdF9mYWlsZWQoKTsKKyNlbmRpZgorCisgIG9wdXNfZnJlZShpbnB1dF92YWwxNik7
CisgIG9wdXNfZnJlZShvdXRwdXRfaW50MTYpOworICBvcHVzX2ZyZWUob3V0cHV0X3ZhbDE2KTsK
KyAgb3B1c19mcmVlKHNpbXBsZV9tYXRyaXgpOworfQorCit2b2lkIHRlc3RfY3JlYXRpb25fYXJn
dW1lbnRzKGNvbnN0IGludCBjaGFubmVscywgY29uc3QgaW50IG1hcHBpbmdfZmFtaWx5KQorewor
ICBpbnQgc3RyZWFtczsKKyAgaW50IGNvdXBsZWRfc3RyZWFtczsKKyAgaW50IGVuY19lcnJvcjsK
KyAgaW50IGRlY19lcnJvcjsKKyAgaW50IHJldDsKKyAgT3B1c1Byb2plY3Rpb25FbmNvZGVyICpz
dF9lbmMgPSBOVUxMOworICBPcHVzUHJvamVjdGlvbkRlY29kZXIgKnN0X2RlYyA9IE5VTEw7CisK
KyAgY29uc3Qgb3B1c19pbnQzMiBGcyA9IDQ4MDAwOworICBjb25zdCBpbnQgYXBwbGljYXRpb24g
PSBPUFVTX0FQUExJQ0FUSU9OX0FVRElPOworCisgIGludCBvcmRlcl9wbHVzX29uZSA9IChpbnQp
Zmxvb3Ioc3FydCgoZmxvYXQpY2hhbm5lbHMpKTsKKyAgaW50IG5vbmRpZWdldGljX2NoYW5uZWxz
ID0gY2hhbm5lbHMgLSBvcmRlcl9wbHVzX29uZSAqIG9yZGVyX3BsdXNfb25lOworCisgIGludCBp
c19jaGFubmVsc192YWxpZCA9IDA7CisgIGludCBpc19wcm9qZWN0aW9uX3ZhbGlkID0gMDsKKwor
ICBzdF9lbmMgPSBvcHVzX3Byb2plY3Rpb25fYW1iaXNvbmljc19lbmNvZGVyX2NyZWF0ZShGcywg
Y2hhbm5lbHMsCisgICAgbWFwcGluZ19mYW1pbHksICZzdHJlYW1zLCAmY291cGxlZF9zdHJlYW1z
LCBhcHBsaWNhdGlvbiwgJmVuY19lcnJvcik7CisgIGlmIChzdF9lbmMgIT0gTlVMTCkKKyAgewor
ICAgIG9wdXNfaW50MzIgbWF0cml4X3NpemU7CisgICAgdW5zaWduZWQgY2hhciAqbWF0cml4Owor
CisgICAgcmV0ID0gb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfY3RsKHN0X2VuYywKKyAgICAgIE9Q
VVNfUFJPSkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX1NJWkVfUkVRVUVTVCwgJm1hdHJpeF9z
aXplKTsKKyAgICBpZiAocmV0ICE9IE9QVVNfT0sgfHwgIW1hdHJpeF9zaXplKQorICAgICAgdGVz
dF9mYWlsZWQoKTsKKworICAgIG1hdHJpeCA9ICh1bnNpZ25lZCBjaGFyICopb3B1c19hbGxvYyht
YXRyaXhfc2l6ZSk7CisgICAgcmV0ID0gb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfY3RsKHN0X2Vu
YywKKyAgICAgIE9QVVNfUFJPSkVDVElPTl9HRVRfREVNSVhJTkdfTUFUUklYX1JFUVVFU1QsIG1h
dHJpeCwgbWF0cml4X3NpemUpOworCisgICAgb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfZGVzdHJv
eShzdF9lbmMpOworCisgICAgc3RfZGVjID0gb3B1c19wcm9qZWN0aW9uX2RlY29kZXJfY3JlYXRl
KEZzLCBjaGFubmVscywgc3RyZWFtcywKKyAgICAgIGNvdXBsZWRfc3RyZWFtcywgbWF0cml4LCBt
YXRyaXhfc2l6ZSwgJmRlY19lcnJvcik7CisgICAgaWYgKHN0X2RlYyAhPSBOVUxMKQorICAgIHsK
KyAgICAgIG9wdXNfcHJvamVjdGlvbl9kZWNvZGVyX2Rlc3Ryb3koc3RfZGVjKTsKKyAgICB9Cisg
ICAgb3B1c19mcmVlKG1hdHJpeCk7CisgIH0KKworICBpc19jaGFubmVsc192YWxpZCA9IChvcmRl
cl9wbHVzX29uZSA+PSAyICYmIG9yZGVyX3BsdXNfb25lIDw9IDQpICYmCisgICAgKG5vbmRpZWdl
dGljX2NoYW5uZWxzID09IDAgfHwgbm9uZGllZ2V0aWNfY2hhbm5lbHMgPT0gMik7CisgIGlzX3By
b2plY3Rpb25fdmFsaWQgPSAoZW5jX2Vycm9yID09IE9QVVNfT0sgJiYgZGVjX2Vycm9yID09IE9Q
VVNfT0spOworICBpZiAoaXNfY2hhbm5lbHNfdmFsaWQgXiBpc19wcm9qZWN0aW9uX3ZhbGlkKQor
ICB7CisgICAgZnByaW50ZihzdGRlcnIsICJDaGFubmVsczogJWQsIEZhbWlseTogJWRcbiIsIGNo
YW5uZWxzLCBtYXBwaW5nX2ZhbWlseSk7CisgICAgZnByaW50ZihzdGRlcnIsICJPcmRlcisxOiAl
ZCwgTm9uLWRpZWdldGljIENoYW5uZWxzOiAlZFxuIiwKKyAgICAgIG9yZGVyX3BsdXNfb25lLCBu
b25kaWVnZXRpY19jaGFubmVscyk7CisgICAgZnByaW50ZihzdGRlcnIsICJTdHJlYW1zOiAlZCwg
Q291cGxlZCBTdHJlYW1zOiAlZFxuIiwKKyAgICAgIHN0cmVhbXMsIGNvdXBsZWRfc3RyZWFtcyk7
CisgICAgdGVzdF9mYWlsZWQoKTsKKyAgfQorfQorCit2b2lkIGdlbmVyYXRlX211c2ljKHNob3J0
ICpidWYsIG9wdXNfaW50MzIgbGVuLCBvcHVzX2ludDMyIGNoYW5uZWxzKQoreworICAgb3B1c19p
bnQzMiBpLGosazsKKyAgIG9wdXNfaW50MzIgKmEsKmIsKmMsKmQ7CisgICBhID0gKG9wdXNfaW50
MzIgKiltYWxsb2Moc2l6ZW9mKG9wdXNfaW50MzIpICogY2hhbm5lbHMpOworICAgYiA9IChvcHVz
X2ludDMyICopbWFsbG9jKHNpemVvZihvcHVzX2ludDMyKSAqIGNoYW5uZWxzKTsKKyAgIGMgPSAo
b3B1c19pbnQzMiAqKW1hbGxvYyhzaXplb2Yob3B1c19pbnQzMikgKiBjaGFubmVscyk7CisgICBk
ID0gKG9wdXNfaW50MzIgKiltYWxsb2Moc2l6ZW9mKG9wdXNfaW50MzIpICogY2hhbm5lbHMpOwor
ICAgbWVtc2V0KGEsIDAsIHNpemVvZihvcHVzX2ludDMyKSAqIGNoYW5uZWxzKTsKKyAgIG1lbXNl
dChiLCAwLCBzaXplb2Yob3B1c19pbnQzMikgKiBjaGFubmVscyk7CisgICBtZW1zZXQoYywgMCwg
c2l6ZW9mKG9wdXNfaW50MzIpICogY2hhbm5lbHMpOworICAgbWVtc2V0KGQsIDAsIHNpemVvZihv
cHVzX2ludDMyKSAqIGNoYW5uZWxzKTsKKyAgIGo9MDsKKworICAgZm9yKGk9MDtpPGxlbjtpKysp
CisgICB7CisgICAgIGZvcihrPTA7azxjaGFubmVscztrKyspCisgICAgIHsKKyAgICAgIG9wdXNf
dWludDMyIHI7CisgICAgICBvcHVzX2ludDMyIHY7CisgICAgICB2PSgoKGoqKChqPj4xMileKChq
Pj4xMHxqPj4xMikmMjYmaj4+NykpKSYxMjgpKzEyOCk8PDE1OworICAgICAgcj1mYXN0X3JhbmQo
KTt2Kz1yJjY1NTM1O3YtPXI+PjE2OworICAgICAgYltrXT12LWFba10rKChiW2tdKjYxKzMyKT4+
Nik7YVtrXT12OworICAgICAgY1trXT0oMzAqKGNba10rYltrXStkW2tdKSszMik+PjY7ZFtrXT1i
W2tdOworICAgICAgdj0oY1trXSsxMjgpPj44OworICAgICAgYnVmW2kqY2hhbm5lbHMra109dj4z
Mjc2Nz8zMjc2NzoodjwtMzI3Njg/LTMyNzY4OnYpOworICAgICAgaWYoaSU2PT0wKWorKzsKKyAg
ICAgfQorICAgfQorCisgICBmcmVlKGEpOworICAgZnJlZShiKTsKKyAgIGZyZWUoYyk7CisgICBm
cmVlKGQpOworfQorCit2b2lkIHRlc3RfZW5jb2RlX2RlY29kZShvcHVzX2ludDMyIGJpdHJhdGUs
IG9wdXNfaW50MzIgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg
bWFwcGluZ19mYW1pbHkpCit7CisgIGNvbnN0IG9wdXNfaW50MzIgRnMgPSA0ODAwMDsKKyAgY29u
c3QgaW50IGFwcGxpY2F0aW9uID0gT1BVU19BUFBMSUNBVElPTl9BVURJTzsKKworICBPcHVzUHJv
amVjdGlvbkVuY29kZXIgKnN0X2VuYzsKKyAgT3B1c1Byb2plY3Rpb25EZWNvZGVyICpzdF9kZWM7
CisgIGludCBzdHJlYW1zOworICBpbnQgY291cGxlZDsKKyAgaW50IGVycm9yOworICBzaG9ydCAq
YnVmZmVyX2luOworICBzaG9ydCAqYnVmZmVyX291dDsKKyAgdW5zaWduZWQgY2hhciBkYXRhW01B
WF9EQVRBX0JZVEVTXSA9IHsgMCB9OworICBpbnQgbGVuOworICBpbnQgb3V0X3NhbXBsZXM7Cisg
IG9wdXNfaW50MzIgbWF0cml4X3NpemUgPSAwOworICB1bnNpZ25lZCBjaGFyICptYXRyaXggPSBO
VUxMOworCisgIGJ1ZmZlcl9pbiA9IChzaG9ydCAqKW1hbGxvYyhzaXplb2Yoc2hvcnQpICogQlVG
RkVSX1NJWkUgKiBjaGFubmVscyk7CisgIGJ1ZmZlcl9vdXQgPSAoc2hvcnQgKiltYWxsb2Moc2l6
ZW9mKHNob3J0KSAqIEJVRkZFUl9TSVpFICogY2hhbm5lbHMpOworCisgIHN0X2VuYyA9IG9wdXNf
cHJvamVjdGlvbl9hbWJpc29uaWNzX2VuY29kZXJfY3JlYXRlKEZzLCBjaGFubmVscywKKyAgICBt
YXBwaW5nX2ZhbWlseSwgJnN0cmVhbXMsICZjb3VwbGVkLCBhcHBsaWNhdGlvbiwgJmVycm9yKTsK
KyAgaWYgKGVycm9yICE9IE9QVVNfT0spIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICJD
b3VsZG5cJ3QgY3JlYXRlIGVuY29kZXIgd2l0aCAlZCBjaGFubmVscyBhbmQgbWFwcGluZyBmYW1p
bHkgJWQuXG4iLAorICAgICAgY2hhbm5lbHMsIG1hcHBpbmdfZmFtaWx5KTsKKyAgICBmcmVlKGJ1
ZmZlcl9pbik7CisgICAgZnJlZShidWZmZXJfb3V0KTsKKyAgICB0ZXN0X2ZhaWxlZCgpOworICB9
CisKKyAgZXJyb3IgPSBvcHVzX3Byb2plY3Rpb25fZW5jb2Rlcl9jdGwoc3RfZW5jLAorICAgIE9Q
VVNfU0VUX0JJVFJBVEUoYml0cmF0ZSAqIDEwMDAgKiAoc3RyZWFtcyArIGNvdXBsZWQpKSk7Cisg
IGlmIChlcnJvciAhPSBPUFVTX09LKQorICB7CisgICAgZ290byBiYWRfY2xlYW51cDsKKyAgfQor
CisgIGVycm9yID0gb3B1c19wcm9qZWN0aW9uX2VuY29kZXJfY3RsKHN0X2VuYywKKyAgICBPUFVT
X1BST0pFQ1RJT05fR0VUX0RFTUlYSU5HX01BVFJJWF9TSVpFX1JFUVVFU1QsICZtYXRyaXhfc2l6
ZSk7CisgIGlmIChlcnJvciAhPSBPUFVTX09LIHx8ICFtYXRyaXhfc2l6ZSkKKyAgeworICAgIGdv
dG8gYmFkX2NsZWFudXA7CisgIH0KKworICBtYXRyaXggPSAodW5zaWduZWQgY2hhciAqKW9wdXNf
YWxsb2MobWF0cml4X3NpemUpOworICBlcnJvciA9IG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2N0
bChzdF9lbmMsCisgICAgT1BVU19QUk9KRUNUSU9OX0dFVF9ERU1JWElOR19NQVRSSVhfUkVRVUVT
VCwgbWF0cml4LCBtYXRyaXhfc2l6ZSk7CisKKyAgc3RfZGVjID0gb3B1c19wcm9qZWN0aW9uX2Rl
Y29kZXJfY3JlYXRlKEZzLCBjaGFubmVscywgc3RyZWFtcywgY291cGxlZCwKKyAgICBtYXRyaXgs
IG1hdHJpeF9zaXplLCAmZXJyb3IpOworICBvcHVzX2ZyZWUobWF0cml4KTsKKworICBpZiAoZXJy
b3IgIT0gT1BVU19PSykgeworICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgIkNvdWxkblwndCBj
cmVhdGUgZGVjb2RlciB3aXRoICVkIGNoYW5uZWxzLCAlZCBzdHJlYW1zICIKKyAgICAgICJhbmQg
JWQgY291cGxlZCBzdHJlYW1zLlxuIiwgY2hhbm5lbHMsIHN0cmVhbXMsIGNvdXBsZWQpOworICAg
IGdvdG8gYmFkX2NsZWFudXA7CisgIH0KKworICBnZW5lcmF0ZV9tdXNpYyhidWZmZXJfaW4sIEJV
RkZFUl9TSVpFLCBjaGFubmVscyk7CisKKyAgbGVuID0gb3B1c19wcm9qZWN0aW9uX2VuY29kZSgK
KyAgICBzdF9lbmMsIGJ1ZmZlcl9pbiwgQlVGRkVSX1NJWkUsIGRhdGEsIE1BWF9EQVRBX0JZVEVT
KTsKKyAgaWYobGVuPDAgfHwgbGVuPk1BWF9EQVRBX0JZVEVTKSB7CisgICAgZnByaW50ZihzdGRl
cnIsIm9wdXNfZW5jb2RlKCkgcmV0dXJuZWQgJWRcbiIsIGxlbik7CisgICAgZ290byBiYWRfY2xl
YW51cDsKKyAgfQorCisgIG91dF9zYW1wbGVzID0gb3B1c19wcm9qZWN0aW9uX2RlY29kZSgKKyAg
ICBzdF9kZWMsIGRhdGEsIGxlbiwgYnVmZmVyX291dCwgTUFYX0ZSQU1FX1NBTVBMRVMsIDApOwor
ICBpZihvdXRfc2FtcGxlcyE9QlVGRkVSX1NJWkUpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwib3B1
c19kZWNvZGUoKSByZXR1cm5lZCAlZFxuIiwgb3V0X3NhbXBsZXMpOworICAgIGdvdG8gYmFkX2Ns
ZWFudXA7CisgIH0KKworICBvcHVzX3Byb2plY3Rpb25fZGVjb2Rlcl9kZXN0cm95KHN0X2RlYyk7
CisgIG9wdXNfcHJvamVjdGlvbl9lbmNvZGVyX2Rlc3Ryb3koc3RfZW5jKTsKKyAgZnJlZShidWZm
ZXJfaW4pOworICBmcmVlKGJ1ZmZlcl9vdXQpOworICByZXR1cm47CitiYWRfY2xlYW51cDoKKyAg
ZnJlZShidWZmZXJfaW4pOworICBmcmVlKGJ1ZmZlcl9vdXQpOworICB0ZXN0X2ZhaWxlZCgpOwor
fQorCitpbnQgbWFpbihpbnQgX2FyZ2MsIGNoYXIgKipfYXJndikKK3sKKyAgdW5zaWduZWQgaW50
IGk7CisKKyAgKHZvaWQpX2FyZ2M7CisgICh2b2lkKV9hcmd2OworCisgIC8qIFRlc3Qgc2ltcGxl
IG1hdHJpeCBtdWx0aXBsaWNhdGlvbiByb3V0aW5lcy4gKi8KKyAgdGVzdF9zaW1wbGVfbWF0cml4
KCk7CisKKyAgLyogVGVzdCBmdWxsIHJhbmdlIG9mIGNoYW5uZWxzIGluIGNyZWF0aW9uIGFyZ3Vt
ZW50cy4gKi8KKyAgZm9yIChpID0gMDsgaSA8IDI1NTsgaSsrKQorICAgIHRlc3RfY3JlYXRpb25f
YXJndW1lbnRzKGksIDMpOworCisgIC8qIFRlc3QgZW5jb2RlL2RlY29kZSBwaXBlbGluZS4gKi8K
KyAgdGVzdF9lbmNvZGVfZGVjb2RlKDY0ICogMTgsIDE4LCAzKTsKKworICBmcHJpbnRmKHN0ZGVy
ciwgIkFsbCBwcm9qZWN0aW9uIHRlc3RzIHBhc3NlZC5cbiIpOworICByZXR1cm4gMDsKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy90cmFpbmluZy9ybm5fZHVtcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdHJhaW5pbmcvcm5uX2R1bXAucHkKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzMxMjA4OGU4MmExYTdjZTAxNjg4YjlhMDM1MDZjYmIyYjVmNzI4NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvdHJhaW5pbmcvcm5uX2R1bXAucHkKQEAgLTAsMCArMSw2NiBAQAorIyEvdXNy
L2Jpbi9weXRob24KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorCitm
cm9tIGtlcmFzLm1vZGVscyBpbXBvcnQgU2VxdWVudGlhbAorZnJvbSBrZXJhcy5tb2RlbHMgaW1w
b3J0IE1vZGVsCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgSW5wdXQKK2Zyb20ga2VyYXMubGF5
ZXJzIGltcG9ydCBEZW5zZQorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0IExTVE0KK2Zyb20ga2Vy
YXMubGF5ZXJzIGltcG9ydCBHUlUKK2Zyb20ga2VyYXMubW9kZWxzIGltcG9ydCBsb2FkX21vZGVs
Citmcm9tIGtlcmFzIGltcG9ydCBiYWNrZW5kIGFzIEsKK2ltcG9ydCBzeXMKKworaW1wb3J0IG51
bXB5IGFzIG5wCisKK2RlZiBwcmludFZlY3RvcihmLCB2ZWN0b3IsIG5hbWUpOgorICAgIHYgPSBu
cC5yZXNoYXBlKHZlY3RvciwgKC0xKSk7CisgICAgI3ByaW50KCdzdGF0aWMgY29uc3QgZmxvYXQg
JywgbmFtZSwgJ1snLCBsZW4odiksICddID0gXG4nLCBmaWxlPWYpCisgICAgZi53cml0ZSgnc3Rh
dGljIGNvbnN0IG9wdXNfaW50OCB7fVt7fV0gPSB7e1xuICAgJy5mb3JtYXQobmFtZSwgbGVuKHYp
KSkKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4odikpOgorICAgICAgICBmLndyaXRlKCd7fScu
Zm9ybWF0KG1heCgtMTI4LG1pbigxMjcsaW50KHJvdW5kKDEyOCp2W2ldKSkpKSkpCisgICAgICAg
IGlmIChpIT1sZW4odiktMSk6CisgICAgICAgICAgICBmLndyaXRlKCcsJykKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoaSU4PT03KToKKyAgICAgICAgICAg
IGYud3JpdGUoIlxuICAgIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGYud3JpdGUoIiAi
KQorICAgICNwcmludCh2LCBmaWxlPWYpCisgICAgZi53cml0ZSgnXG59O1xuXG4nKQorICAgIHJl
dHVybjsKKworZGVmIGJpbmFyeV9jcm9zc2VudHJvcDIoeV90cnVlLCB5X3ByZWQpOgorICAgICAg
ICByZXR1cm4gSy5tZWFuKDIqSy5hYnMoeV90cnVlLTAuNSkgKiBLLmJpbmFyeV9jcm9zc2VudHJv
cHkoeV9wcmVkLCB5X3RydWUpLCBheGlzPS0xKQorCisKKyNtb2RlbCA9IGxvYWRfbW9kZWwoc3lz
LmFyZ3ZbMV0sIGN1c3RvbV9vYmplY3RzPXsnYmluYXJ5X2Nyb3NzZW50cm9wMic6IGJpbmFyeV9j
cm9zc2VudHJvcDJ9KQorbWFpbl9pbnB1dCA9IElucHV0KHNoYXBlPShOb25lLCAyNSksIG5hbWU9
J21haW5faW5wdXQnKQoreCA9IERlbnNlKDMyLCBhY3RpdmF0aW9uPSd0YW5oJykobWFpbl9pbnB1
dCkKK3ggPSBHUlUoMjQsIGFjdGl2YXRpb249J3RhbmgnLCByZWN1cnJlbnRfYWN0aXZhdGlvbj0n
c2lnbW9pZCcsIHJldHVybl9zZXF1ZW5jZXM9VHJ1ZSkoeCkKK3ggPSBEZW5zZSgyLCBhY3RpdmF0
aW9uPSdzaWdtb2lkJykoeCkKK21vZGVsID0gTW9kZWwoaW5wdXRzPW1haW5faW5wdXQsIG91dHB1
dHM9eCkKK21vZGVsLmxvYWRfd2VpZ2h0cyhzeXMuYXJndlsxXSkKKword2VpZ2h0cyA9IG1vZGVs
LmdldF93ZWlnaHRzKCkKKworZiA9IG9wZW4oc3lzLmFyZ3ZbMl0sICd3JykKKworZi53cml0ZSgn
LypUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBhIEtlcmFzIG1vZGVs
Ki9cblxuJykKK2Yud3JpdGUoJyNpZmRlZiBIQVZFX0NPTkZJR19IXG4jaW5jbHVkZSAiY29uZmln
LmgiXG4jZW5kaWZcblxuI2luY2x1ZGUgIm1scC5oIlxuXG4nKQorCitwcmludFZlY3RvcihmLCB3
ZWlnaHRzWzBdLCAnbGF5ZXIwX3dlaWdodHMnKQorcHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1sxXSwg
J2xheWVyMF9iaWFzJykKK3ByaW50VmVjdG9yKGYsIHdlaWdodHNbMl0sICdsYXllcjFfd2VpZ2h0
cycpCitwcmludFZlY3RvcihmLCB3ZWlnaHRzWzNdLCAnbGF5ZXIxX3JlY3VyX3dlaWdodHMnKQor
cHJpbnRWZWN0b3IoZiwgd2VpZ2h0c1s0XSwgJ2xheWVyMV9iaWFzJykKK3ByaW50VmVjdG9yKGYs
IHdlaWdodHNbNV0sICdsYXllcjJfd2VpZ2h0cycpCitwcmludFZlY3RvcihmLCB3ZWlnaHRzWzZd
LCAnbGF5ZXIyX2JpYXMnKQorCitmLndyaXRlKCdjb25zdCBEZW5zZUxheWVyIGxheWVyMCA9IHtc
biAgIGxheWVyMF9iaWFzLFxuICAgbGF5ZXIwX3dlaWdodHMsXG4gICAyNSwgMzIsIDBcbn07XG5c
bicpCitmLndyaXRlKCdjb25zdCBHUlVMYXllciBsYXllcjEgPSB7XG4gICBsYXllcjFfYmlhcyxc
biAgIGxheWVyMV93ZWlnaHRzLFxuICAgbGF5ZXIxX3JlY3VyX3dlaWdodHMsXG4gICAzMiwgMjRc
bn07XG5cbicpCitmLndyaXRlKCdjb25zdCBEZW5zZUxheWVyIGxheWVyMiA9IHtcbiAgIGxheWVy
Ml9iaWFzLFxuICAgbGF5ZXIyX3dlaWdodHMsXG4gICAyNCwgMiwgMVxufTtcblxuJykKKworZi5j
bG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L29wdXMvc3JjL3RyYWluaW5nL3Jubl90cmFpbi5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdHJhaW5pbmcvcm5uX3Ry
YWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI5YmNiMDM0NjMzMzcxNzc5MzkwMWExYWQ5ZjQ0NWQ0ZTMzNzhi
ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3RyYWluaW5nL3Jubl90cmFpbi5weQpAQCAtMCwwICsxLDE3
NyBAQAorIyEvdXNyL2Jpbi9weXRob24zCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRf
ZnVuY3Rpb24KKworZnJvbSBrZXJhcy5tb2RlbHMgaW1wb3J0IFNlcXVlbnRpYWwKK2Zyb20ga2Vy
YXMubW9kZWxzIGltcG9ydCBNb2RlbAorZnJvbSBrZXJhcy5sYXllcnMgaW1wb3J0IElucHV0Citm
cm9tIGtlcmFzLmxheWVycyBpbXBvcnQgRGVuc2UKK2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBM
U1RNCitmcm9tIGtlcmFzLmxheWVycyBpbXBvcnQgR1JVCitmcm9tIGtlcmFzLmxheWVycyBpbXBv
cnQgQ3VETk5HUlUKK2Zyb20ga2VyYXMubGF5ZXJzIGltcG9ydCBTaW1wbGVSTk4KK2Zyb20ga2Vy
YXMubGF5ZXJzIGltcG9ydCBEcm9wb3V0Citmcm9tIGtlcmFzIGltcG9ydCBsb3NzZXMKK2ltcG9y
dCBoNXB5Citmcm9tIGtlcmFzLm9wdGltaXplcnMgaW1wb3J0IEFkYW0KKworZnJvbSBrZXJhcy5j
b25zdHJhaW50cyBpbXBvcnQgQ29uc3RyYWludAorZnJvbSBrZXJhcyBpbXBvcnQgYmFja2VuZCBh
cyBLCitpbXBvcnQgbnVtcHkgYXMgbnAKKworaW1wb3J0IHRlbnNvcmZsb3cgYXMgdGYKK2Zyb20g
a2VyYXMuYmFja2VuZC50ZW5zb3JmbG93X2JhY2tlbmQgaW1wb3J0IHNldF9zZXNzaW9uCitjb25m
aWcgPSB0Zi5Db25maWdQcm90bygpCitjb25maWcuZ3B1X29wdGlvbnMucGVyX3Byb2Nlc3NfZ3B1
X21lbW9yeV9mcmFjdGlvbiA9IDAuNDQKK3NldF9zZXNzaW9uKHRmLlNlc3Npb24oY29uZmlnPWNv
bmZpZykpCisKK2RlZiBiaW5hcnlfY3Jvc3NlbnRyb3AyKHlfdHJ1ZSwgeV9wcmVkKToKKyAgICBy
ZXR1cm4gSy5tZWFuKDIqSy5hYnMoeV90cnVlLTAuNSkgKiBLLmJpbmFyeV9jcm9zc2VudHJvcHko
eV90cnVlLCB5X3ByZWQpLCBheGlzPS0xKQorCitkZWYgYmluYXJ5X2FjY3VyYWN5Mih5X3RydWUs
IHlfcHJlZCk6CisgICAgcmV0dXJuIEsubWVhbihLLmNhc3QoSy5lcXVhbCh5X3RydWUsIEsucm91
bmQoeV9wcmVkKSksICdmbG9hdDMyJykgKyBLLmNhc3QoSy5lcXVhbCh5X3RydWUsIDAuNSksICdm
bG9hdDMyJyksIGF4aXM9LTEpCisKK2RlZiBxdWFudF9tb2RlbChtb2RlbCk6CisgICAgd2VpZ2h0
cyA9IG1vZGVsLmdldF93ZWlnaHRzKCkKKyAgICBmb3IgayBpbiByYW5nZShsZW4od2VpZ2h0cykp
OgorICAgICAgICB3ZWlnaHRzW2tdID0gbnAubWF4aW11bSgtMTI4LCBucC5taW5pbXVtKDEyNywg
bnAucm91bmQoMTI4KndlaWdodHNba10pKjAuMDA3ODEyNSkpCisgICAgbW9kZWwuc2V0X3dlaWdo
dHMod2VpZ2h0cykKKworY2xhc3MgV2VpZ2h0Q2xpcChDb25zdHJhaW50KToKKyAgICAnJydDbGlw
cyB0aGUgd2VpZ2h0cyBpbmNpZGVudCB0byBlYWNoIGhpZGRlbiB1bml0IHRvIGJlIGluc2lkZSBh
IHJhbmdlCisgICAgJycnCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGM9Mik6CisgICAgICAgIHNl
bGYuYyA9IGMKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwKToKKyAgICAgICAgcmV0dXJuIEsu
Y2xpcChwLCAtc2VsZi5jLCBzZWxmLmMpCisKKyAgICBkZWYgZ2V0X2NvbmZpZyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHsnbmFtZSc6IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAg
ICAgJ2MnOiBzZWxmLmN9CisKK3JlZyA9IDAuMDAwMDAxCitjb25zdHJhaW50ID0gV2VpZ2h0Q2xp
cCguOTk4KQorCitwcmludCgnQnVpbGQgbW9kZWwuLi4nKQorCittYWluX2lucHV0ID0gSW5wdXQo
c2hhcGU9KE5vbmUsIDI1KSwgbmFtZT0nbWFpbl9pbnB1dCcpCit4ID0gRGVuc2UoMzIsIGFjdGl2
YXRpb249J3RhbmgnLCBrZXJuZWxfY29uc3RyYWludD1jb25zdHJhaW50LCBiaWFzX2NvbnN0cmFp
bnQ9Y29uc3RyYWludCkobWFpbl9pbnB1dCkKKyN4ID0gQ3VETk5HUlUoMjQsIHJldHVybl9zZXF1
ZW5jZXM9VHJ1ZSwga2VybmVsX2NvbnN0cmFpbnQ9Y29uc3RyYWludCwgcmVjdXJyZW50X2NvbnN0
cmFpbnQ9Y29uc3RyYWludCwgYmlhc19jb25zdHJhaW50PWNvbnN0cmFpbnQpKHgpCit4ID0gR1JV
KDI0LCByZWN1cnJlbnRfYWN0aXZhdGlvbj0nc2lnbW9pZCcsIGFjdGl2YXRpb249J3RhbmgnLCBy
ZXR1cm5fc2VxdWVuY2VzPVRydWUsIGtlcm5lbF9jb25zdHJhaW50PWNvbnN0cmFpbnQsIHJlY3Vy
cmVudF9jb25zdHJhaW50PWNvbnN0cmFpbnQsIGJpYXNfY29uc3RyYWludD1jb25zdHJhaW50KSh4
KQoreCA9IERlbnNlKDIsIGFjdGl2YXRpb249J3NpZ21vaWQnLCBrZXJuZWxfY29uc3RyYWludD1j
b25zdHJhaW50LCBiaWFzX2NvbnN0cmFpbnQ9Y29uc3RyYWludCkoeCkKK21vZGVsID0gTW9kZWwo
aW5wdXRzPW1haW5faW5wdXQsIG91dHB1dHM9eCkKKworYmF0Y2hfc2l6ZSA9IDIwNDgKKworcHJp
bnQoJ0xvYWRpbmcgZGF0YS4uLicpCit3aXRoIGg1cHkuRmlsZSgnZmVhdHVyZXMxMGIuaDUnLCAn
cicpIGFzIGhmOgorICAgIGFsbF9kYXRhID0gaGZbJ2RhdGEnXVs6XQorcHJpbnQoJ2RvbmUuJykK
Kword2luZG93X3NpemUgPSAxNTAwCisKK25iX3NlcXVlbmNlcyA9IGxlbihhbGxfZGF0YSkvL3dp
bmRvd19zaXplCitwcmludChuYl9zZXF1ZW5jZXMsICcgc2VxdWVuY2VzJykKK3hfdHJhaW4gPSBh
bGxfZGF0YVs6bmJfc2VxdWVuY2VzKndpbmRvd19zaXplLCA6LTJdCit4X3RyYWluID0gbnAucmVz
aGFwZSh4X3RyYWluLCAobmJfc2VxdWVuY2VzLCB3aW5kb3dfc2l6ZSwgMjUpKQorCit5X3RyYWlu
ID0gbnAuY29weShhbGxfZGF0YVs6bmJfc2VxdWVuY2VzKndpbmRvd19zaXplLCAtMjpdKQoreV90
cmFpbiA9IG5wLnJlc2hhcGUoeV90cmFpbiwgKG5iX3NlcXVlbmNlcywgd2luZG93X3NpemUsIDIp
KQorCitwcmludCgiTWFya2luZyBpZ25vcmVzIikKK2ZvciBzIGluIHlfdHJhaW46CisgICAgZm9y
IGUgaW4gczoKKyAgICAgICAgaWYgKGVbMV0gPj0gMSk6CisgICAgICAgICAgICBicmVhaworICAg
ICAgICBlWzBdID0gMC41CisKK2FsbF9kYXRhID0gMDsKK3hfdHJhaW4gPSB4X3RyYWluLmFzdHlw
ZSgnZmxvYXQzMicpCit5X3RyYWluID0geV90cmFpbi5hc3R5cGUoJ2Zsb2F0MzInKQorCitwcmlu
dChsZW4oeF90cmFpbiksICd0cmFpbiBzZXF1ZW5jZXMuIHggc2hhcGUgPScsIHhfdHJhaW4uc2hh
cGUsICd5IHNoYXBlID0gJywgeV90cmFpbi5zaGFwZSkKKworbW9kZWwubG9hZF93ZWlnaHRzKCdu
ZXd3ZWlnaHRzMTBhMWJfZXAyMDYuaGRmNScpCisKKyN3ZWlnaHRzID0gbW9kZWwuZ2V0X3dlaWdo
dHMoKQorI2ZvciBrIGluIHJhbmdlKGxlbih3ZWlnaHRzKSk6CisjICAgIHdlaWdodHNba10gPSBu
cC5yb3VuZCgxMjgqd2VpZ2h0c1trXSkqMC4wMDc4MTI1CisjbW9kZWwuc2V0X3dlaWdodHMod2Vp
Z2h0cykKKworIyB0cnkgdXNpbmcgZGlmZmVyZW50IG9wdGltaXplcnMgYW5kIGRpZmZlcmVudCBv
cHRpbWl6ZXIgY29uZmlncworbW9kZWwuY29tcGlsZShsb3NzPWJpbmFyeV9jcm9zc2VudHJvcDIs
CisgICAgICAgICAgICAgIG9wdGltaXplcj1BZGFtKDAuMDAwMSksCisgICAgICAgICAgICAgIG1l
dHJpY3M9W2JpbmFyeV9hY2N1cmFjeTJdKQorCitwcmludCgnVHJhaW4uLi4nKQorcXVhbnRfbW9k
ZWwobW9kZWwpCittb2RlbC5maXQoeF90cmFpbiwgeV90cmFpbiwKKyAgICAgICAgICBiYXRjaF9z
aXplPWJhdGNoX3NpemUsCisgICAgICAgICAgZXBvY2hzPTEwLCB2YWxpZGF0aW9uX2RhdGE9KHhf
dHJhaW4sIHlfdHJhaW4pKQorbW9kZWwuc2F2ZSgibmV3d2VpZ2h0czEwYTFjX2VwMTAuaGRmNSIp
CisKK3F1YW50X21vZGVsKG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisgICAg
ICAgICAgYmF0Y2hfc2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz01MCwgaW5pdGlh
bF9lcG9jaD0xMCkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMxMGExY19lcDUwLmhkZjUiKQorCitt
b2RlbC5jb21waWxlKGxvc3M9YmluYXJ5X2Nyb3NzZW50cm9wMiwKKyAgICAgICAgICAgICAgb3B0
aW1pemVyPUFkYW0oMC4wMDAxKSwKKyAgICAgICAgICAgICAgbWV0cmljcz1bYmluYXJ5X2FjY3Vy
YWN5Ml0pCisKK3F1YW50X21vZGVsKG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4s
CisgICAgICAgICAgYmF0Y2hfc2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0xMDAs
IGluaXRpYWxfZXBvY2g9NTApCittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXAxMDAuaGRm
NSIpCisKK3F1YW50X21vZGVsKG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisg
ICAgICAgICAgYmF0Y2hfc2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0xNTAsIGlu
aXRpYWxfZXBvY2g9MTAwKQorbW9kZWwuc2F2ZSgibmV3d2VpZ2h0czEwYTFjX2VwMTUwLmhkZjUi
KQorCitxdWFudF9tb2RlbChtb2RlbCkKK21vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAorICAg
ICAgICAgIGJhdGNoX3NpemU9YmF0Y2hfc2l6ZSwKKyAgICAgICAgICBlcG9jaHM9MjAwLCBpbml0
aWFsX2Vwb2NoPTE1MCkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMxMGExY19lcDIwMC5oZGY1IikK
KworcXVhbnRfbW9kZWwobW9kZWwpCittb2RlbC5maXQoeF90cmFpbiwgeV90cmFpbiwKKyAgICAg
ICAgICBiYXRjaF9zaXplPWJhdGNoX3NpemUsCisgICAgICAgICAgZXBvY2hzPTIwMSwgaW5pdGlh
bF9lcG9jaD0yMDApCittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXAyMDEuaGRmNSIpCisK
K3F1YW50X21vZGVsKG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisgICAgICAg
ICAgYmF0Y2hfc2l6ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0yMDIsIGluaXRpYWxf
ZXBvY2g9MjAxLCB2YWxpZGF0aW9uX2RhdGE9KHhfdHJhaW4sIHlfdHJhaW4pKQorbW9kZWwuc2F2
ZSgibmV3d2VpZ2h0czEwYTFjX2VwMjAyLmhkZjUiKQorCitxdWFudF9tb2RlbChtb2RlbCkKK21v
ZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLAorICAgICAgICAgIGJhdGNoX3NpemU9YmF0Y2hfc2l6
ZSwKKyAgICAgICAgICBlcG9jaHM9MjAzLCBpbml0aWFsX2Vwb2NoPTIwMiwgdmFsaWRhdGlvbl9k
YXRhPSh4X3RyYWluLCB5X3RyYWluKSkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMxMGExY19lcDIw
My5oZGY1IikKKworcXVhbnRfbW9kZWwobW9kZWwpCittb2RlbC5maXQoeF90cmFpbiwgeV90cmFp
biwKKyAgICAgICAgICBiYXRjaF9zaXplPWJhdGNoX3NpemUsCisgICAgICAgICAgZXBvY2hzPTIw
NCwgaW5pdGlhbF9lcG9jaD0yMDMsIHZhbGlkYXRpb25fZGF0YT0oeF90cmFpbiwgeV90cmFpbikp
Cittb2RlbC5zYXZlKCJuZXd3ZWlnaHRzMTBhMWNfZXAyMDQuaGRmNSIpCisKK3F1YW50X21vZGVs
KG1vZGVsKQorbW9kZWwuZml0KHhfdHJhaW4sIHlfdHJhaW4sCisgICAgICAgICAgYmF0Y2hfc2l6
ZT1iYXRjaF9zaXplLAorICAgICAgICAgIGVwb2Nocz0yMDUsIGluaXRpYWxfZXBvY2g9MjA0LCB2
YWxpZGF0aW9uX2RhdGE9KHhfdHJhaW4sIHlfdHJhaW4pKQorbW9kZWwuc2F2ZSgibmV3d2VpZ2h0
czEwYTFjX2VwMjA1LmhkZjUiKQorCitxdWFudF9tb2RlbChtb2RlbCkKK21vZGVsLmZpdCh4X3Ry
YWluLCB5X3RyYWluLAorICAgICAgICAgIGJhdGNoX3NpemU9YmF0Y2hfc2l6ZSwKKyAgICAgICAg
ICBlcG9jaHM9MjA2LCBpbml0aWFsX2Vwb2NoPTIwNSwgdmFsaWRhdGlvbl9kYXRhPSh4X3RyYWlu
LCB5X3RyYWluKSkKK21vZGVsLnNhdmUoIm5ld3dlaWdodHMxMGExY19lcDIwNi5oZGY1IikKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9vcHVzL3NyYy90cmFpbmluZy90eHQyaGRmNS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvdHJhaW5pbmcvdHh0MmhkZjUucHkKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWM2MDI4NzdlYzg4MTFmYjZhNDg5NzgyOTg1YjVmMWIwOTg2MGRlYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvb3B1cy9zcmMvdHJhaW5pbmcvdHh0MmhkZjUucHkKQEAgLTAsMCArMSwxMiBAQAorIyEvdXNy
L2Jpbi9weXRob24KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorCitp
bXBvcnQgbnVtcHkgYXMgbnAKK2ltcG9ydCBoNXB5CitpbXBvcnQgc3lzCisKK2RhdGEgPSBucC5s
b2FkdHh0KHN5cy5hcmd2WzFdLCBkdHlwZT0nZmxvYXQzMicpCitoNWYgPSBoNXB5LkZpbGUoc3lz
LmFyZ3ZbMl0sICd3Jyk7CitoNWYuY3JlYXRlX2RhdGFzZXQoJ2RhdGEnLCBkYXRhPWRhdGEpCito
NWYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy93aW4zMi9nZW52ZXJzaW9uLmJhdCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvd2luMzIvZ2VudmVy
c2lvbi5iYXQKaW5kZXggMWRlZjc0NjBiNWUwMmZhMTg5OThhNTdlMGUwZWZjNWFiMzEzNGVkNS4u
YWVhNTU3MzkzNDJkYWY5NTNmNzgyY2EyMTg1NTEzNGMwNDEwMTgzOSAxMDA3NTUKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9vcHVzL3NyYy93aW4z
Mi9nZW52ZXJzaW9uLmJhdAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L29wdXMvc3JjL3dpbjMyL2dlbnZlcnNpb24uYmF0CkBAIC0xLDM3ICsxLDM3
IEBACi1AZWNobyBvZmYKLQotc2V0bG9jYWwgZW5hYmxlZXh0ZW5zaW9ucyBlbmFibGVkZWxheWVk
ZXhwYW5zaW9uCi0KLWZvciAvZiAlJXYgaW4gKCdjZCAiJX5kcDAuLiIgXiZeJiBnaXQgc3RhdHVz
IF4+TlVMIDJePk5VTCBeJl4mIGdpdCBkZXNjcmliZSAtLXRhZ3MgLS1tYXRjaCAidioiIC0tZGly
dHkgMl4+TlVMJykgZG8gc2V0IHZlcnNpb249JSV2Ci0KLWlmIG5vdCAiJXZlcnNpb24lIj09IiIg
c2V0IHZlcnNpb249IXZlcnNpb246fjEhICYmIGdvdG8gOmdvdHZlcnNpb24KLQotaWYgZXhpc3Qg
IiV+ZHAwLi5ccGFja2FnZV92ZXJzaW9uIiBnb3RvIDpnZXR2ZXJzaW9uCi0KLWVjaG8gR2l0IGNh
bm5vdCBiZSBmb3VuZCwgbm9yIGNhbiBwYWNrYWdlX3ZlcnNpb24uIEdlbmVyYXRpbmcgdW5rbm93
biB2ZXJzaW9uLgotCi1zZXQgdmVyc2lvbj11bmtub3duCi0KLWdvdG8gOmdvdHZlcnNpb24KLQot
OmdldHZlcnNpb24KLQotZm9yIC9mICJkZWxpbXM9PSB0b2tlbnM9MiIgJSV2IGluICglfmRwczAu
LlxwYWNrYWdlX3ZlcnNpb24pIGRvIHNldCB2ZXJzaW9uPSUldgotc2V0IHZlcnNpb249IXZlcnNp
b246Ij0hCi0KLTpnb3R2ZXJzaW9uCi0KLXNldCB2ZXJzaW9uPSF2ZXJzaW9uOiA9IQotc2V0IHZl
cnNpb25fb3V0PSNkZWZpbmUgJX4yICIldmVyc2lvbiUiCi0KLWVjaG8gJXZlcnNpb25fb3V0JT4g
IiV+MV90ZW1wIgotCi1lY2hvIG4gfCBjb21wICIlfjFfdGVtcCIgIiV+MSIgPiBOVUwgMj4gTlVM
Ci0KLWlmIG5vdCBlcnJvcmxldmVsIDEgZ290byBleGl0Ci0KLWNvcHkgL3kgIiV+MV90ZW1wIiAi
JX4xIgotCi06ZXhpdAotCi1kZWwgIiV+MV90ZW1wIgorQGVjaG8gb2ZmDQorDQorc2V0bG9jYWwg
ZW5hYmxlZXh0ZW5zaW9ucyBlbmFibGVkZWxheWVkZXhwYW5zaW9uDQorDQorZm9yIC9mICUldiBp
biAoJ2NkICIlfmRwMC4uIiBeJl4mIGdpdCBzdGF0dXMgXj5OVUwgMl4+TlVMIF4mXiYgZ2l0IGRl
c2NyaWJlIC0tdGFncyAtLW1hdGNoICJ2KiIgLS1kaXJ0eSAyXj5OVUwnKSBkbyBzZXQgdmVyc2lv
bj0lJXYNCisNCitpZiBub3QgIiV2ZXJzaW9uJSI9PSIiIHNldCB2ZXJzaW9uPSF2ZXJzaW9uOn4x
ISAmJiBnb3RvIDpnb3R2ZXJzaW9uDQorDQoraWYgZXhpc3QgIiV+ZHAwLi5ccGFja2FnZV92ZXJz
aW9uIiBnb3RvIDpnZXR2ZXJzaW9uDQorDQorZWNobyBHaXQgY2Fubm90IGJlIGZvdW5kLCBub3Ig
Y2FuIHBhY2thZ2VfdmVyc2lvbi4gR2VuZXJhdGluZyB1bmtub3duIHZlcnNpb24uDQorDQorc2V0
IHZlcnNpb249dW5rbm93bg0KKw0KK2dvdG8gOmdvdHZlcnNpb24NCisNCis6Z2V0dmVyc2lvbg0K
Kw0KK2ZvciAvZiAiZGVsaW1zPT0gdG9rZW5zPTIiICUldiBpbiAoJX5kcHMwLi5ccGFja2FnZV92
ZXJzaW9uKSBkbyBzZXQgdmVyc2lvbj0lJXYNCitzZXQgdmVyc2lvbj0hdmVyc2lvbjoiPSENCisN
Cis6Z290dmVyc2lvbg0KKw0KK3NldCB2ZXJzaW9uPSF2ZXJzaW9uOiA9IQ0KK3NldCB2ZXJzaW9u
X291dD0jZGVmaW5lICV+MiAiJXZlcnNpb24lIg0KKw0KK2VjaG8gJXZlcnNpb25fb3V0JT4gIiV+
MV90ZW1wIg0KKw0KK2VjaG8gbiB8IGNvbXAgIiV+MV90ZW1wIiAiJX4xIiA+IE5VTCAyPiBOVUwN
CisNCitpZiBub3QgZXJyb3JsZXZlbCAxIGdvdG8gZXhpdA0KKw0KK2NvcHkgL3kgIiV+MV90ZW1w
IiAiJX4xIg0KKw0KKzpleGl0DQorDQorZGVsICIlfjFfdGVtcCINCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvdGVzdHMvb3B1
c19iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L29wdXMvdGVzdHMvb3B1c19iZW5jaG1hcmsuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJkYzEwZmU1
ZTkxOWIxYWFiODJjNGZkNjlkMmU2YTY3OTI5MDczZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy90ZXN0cy9vcHVz
X2JlbmNobWFyay5jYwpAQCAtMCwwICsxLDIyNCBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVk
ZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8Y3RpbWU+CisjaW5jbHVk
ZSA8bGltaXRzPgorCisjaW5jbHVkZSAiYmFzZS9maWxlcy9maWxlX3BhdGguaCIKKyNpbmNsdWRl
ICJiYXNlL3BhdGhfc2VydmljZS5oIgorI2luY2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L29wdXMvc3JjL2luY2x1ZGUvb3B1
cy5oIgorCisvLyBTZXQgdG8gMSB0byBnZW5lcmF0ZSBnb2xkZW4gdmFsdWVzIGluc3RlYWQgb2Yg
Y2hlY2tpbmcgYWdhaW5zdCB0aGVtLgorLy8gVXNlZCB0byBlYXNlIHVwZGF0aW5nIHdoZW4gbmV3
IHJlZmVyZW5jZXMgYXJlIGJldHRlciBvciBhY2NlcHRhYmxlLgorI2RlZmluZSBSRUdFTkVSQVRF
X1JFRkVSRU5DRVMgMAorCituYW1lc3BhY2UgeworCitjb25zdGV4cHIgaW50IFJFVFJJRVMgPSAz
OworY29uc3RleHByIGludCBNQVhfRlJBTUVfU0FNUCA9IDU3NjA7ICAvLyAxMjBtcyAqIDQ4a0h6
CisKK2Jhc2U6OkZpbGVQYXRoIEdldERhdGFQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFt
ZSkgeworICBiYXNlOjpGaWxlUGF0aCBwYXRoOworICBEQ0hFQ0soYmFzZTo6UGF0aFNlcnZpY2U6
OkdldChiYXNlOjpESVJfU09VUkNFX1JPT1QsICZwYXRoKSk7CisgIHJldHVybiBwYXRoLkFwcGVu
ZEFTQ0lJKCJ0aGlyZF9wYXJ0eSIpCisgICAgICAuQXBwZW5kQVNDSUkoIm9wdXMiKQorICAgICAg
LkFwcGVuZEFTQ0lJKCJ0ZXN0cyIpCisgICAgICAuQXBwZW5kQVNDSUkoInJlc291cmNlcyIpCisg
ICAgICAuQXBwZW5kQVNDSUkoZmlsZW5hbWUpOworfQorCit2b2lkIG9wdXNfcnVuKGludCBmcmFt
ZV9zaXplX21zLAorICAgICAgICAgICAgICBpbnQgc2FtcGxpbmdfa2h6LAorICAgICAgICAgICAg
ICBpbnQgY2hhbm5lbHMsCisgICAgICAgICAgICAgIGludCBiaXRfcmF0ZSwKKyAgICAgICAgICAg
ICAgaW50IGNvbXBsZXhpdHksCisgICAgICAgICAgICAgIHNpemVfdCBhdWRpb19kdXJhdGlvbl9z
ZWMsCisgICAgICAgICAgICAgIGZsb2F0KiBlbmNvZGluZ19ydGYsCisgICAgICAgICAgICAgIGZs
b2F0KiBkZWNvZGluZ19ydGYpIHsKKyAgY29uc3QgaW50IGZyYW1lX3NpemUgPSBmcmFtZV9zaXpl
X21zICogc2FtcGxpbmdfa2h6OworICBjb25zdCBpbnQgYXBwbGljYXRpb24gPQorICAgICAgY2hh
bm5lbHMgPT0gMSA/IE9QVVNfQVBQTElDQVRJT05fVk9JUCA6IE9QVVNfQVBQTElDQVRJT05fQVVE
SU87CisKKyAgLyogUmVhZCBQQ00gKi8KKyAgYXV0byBpbl9maWxlbmFtZSA9IEdldERhdGFQYXRo
KCJzcGVlY2hfbW9ub18zMl80OGtIei5wY20iKS52YWx1ZSgpOworICBGSUxFKiBmcCA9IGZvcGVu
KGluX2ZpbGVuYW1lLmNfc3RyKCksICJyYiIpOworCisgIC8vIFRPRE8oYi8xMDAyOTczKTogUmV2
aWV3IGVycm9yIGhhbmRsaW5nLiBBU1NFUlRfKiBqdXN0IHJldHVybiBmcm9tIGZ1bmN0aW9uLAor
ICAvLyAgICAgICAgICAgICAgICAgIG1lYW5pbmcgY2FsbGluZyBjb2RlIGlzIGV4ZWN1dGVkLgor
ICAvLyBXZSBtaWdodCB3YW50IHRvIGZhY3Rvcml6ZSBlbmNvZGVyIGNyZWF0aW9uIGFueXdheSAo
cmVhZCBwY20gb25jZSBpbnN0ZWFkCisgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
IHJlLW9wZW5pbmcgaXQgZm9yIGVhY2ggYml0cmF0ZSAvIGNvbXBsZXhpdHkpLgorICBBU1NFUlRf
TkUoZnAsIG51bGxwdHIpIDw8ICJDb3VsZCBub3Qgb3BlbjogIiA8PCBpbl9maWxlbmFtZTsKKwor
ICBmc2VlayhmcCwgMCwgU0VFS19FTkQpOworICBjb25zdCBzaXplX3QgdG90YWxfc2FtcCA9IGZ0
ZWxsKGZwKSAvIHNpemVvZihpbnQxNl90KTsKKyAgcmV3aW5kKGZwKTsKKworICBpbnQxNl90KiBp
bl9kYXRhID0KKyAgICAgIChpbnQxNl90KiltYWxsb2MoKHRvdGFsX3NhbXAgKyBmcmFtZV9zaXpl
ICogY2hhbm5lbHMpICogc2l6ZW9mKCppbl9kYXRhKSk7CisgIGNvbnN0IHNpemVfdCBjaGVja190
b3RhbF9zYW1wID0KKyAgICAgIGZyZWFkKCZpbl9kYXRhWzBdLCBzaXplb2YoaW50MTZfdCksIHRv
dGFsX3NhbXAsIGZwKTsKKyAgQVNTRVJUX0VRKGNoZWNrX3RvdGFsX3NhbXAsIHRvdGFsX3NhbXAp
IDw8ICJFcnJvciByZWFkaW5nIGlucHV0IHBjbSBmaWxlLiI7CisgIGZjbG9zZShmcCk7CisKKyAg
Y29uc3Qgb3B1c19pbnQzMiBtYXhfYnl0ZXMgPSBmcmFtZV9zaXplICogY2hhbm5lbHMgKiBzaXpl
b2YoaW50MTZfdCk7CisgIGludDE2X3QqIG91dF9kYXRhID0KKyAgICAgIChpbnQxNl90KiltYWxs
b2MoKGZyYW1lX3NpemUgKiBjaGFubmVscykgKiBzaXplb2YoaW50MTZfdCkpOworICB1aW50OF90
KiBiaXRfc3RyZWFtID0gKHVpbnQ4X3QqKW1hbGxvYyhtYXhfYnl0ZXMgKiBzaXplb2YoKmJpdF9z
dHJlYW0pKTsKKworICAvKiBDcmVhdGUgYW4gZW5jb2RlciAqLworICBvcHVzX2ludDMyIHJlczsK
KyAgT3B1c0VuY29kZXIqIGVuYyA9CisgICAgICBvcHVzX2VuY29kZXJfY3JlYXRlKHNhbXBsaW5n
X2toeiAqIDEwMDAsIGNoYW5uZWxzLCBhcHBsaWNhdGlvbiwgJnJlcyk7CisgIEFTU0VSVF9UUlVF
KHJlcyA9PSBPUFVTX09LICYmIGVuYyAhPSBudWxscHRyKQorICAgICAgPDwgIkNvdWxkIG5vdCBp
bnN0YW50aWF0ZSBhbiBPcHVzIGVuY29kZXIuIEVycm9yIGNvZGU6ICIgPDwgcmVzOworCisgIG9w
dXNfZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NFVF9CSVRSQVRFKGJpdF9yYXRlKSk7CisgIG9wdXNf
ZW5jb2Rlcl9jdGwoZW5jLCBPUFVTX1NFVF9DT01QTEVYSVRZKGNvbXBsZXhpdHkpKTsKKworICAv
KiBDcmVhdGUgYSBkZWNvZGVyICovCisgIE9wdXNEZWNvZGVyKiBkZWMgPSBvcHVzX2RlY29kZXJf
Y3JlYXRlKHNhbXBsaW5nX2toeiAqIDEwMDAsIGNoYW5uZWxzLCAmcmVzKTsKKyAgQVNTRVJUX1RS
VUUocmVzID09IE9QVVNfT0sgJiYgZGVjICE9IG51bGxwdHIpCisgICAgICA8PCAiQ291bGQgbm90
IGluc3RhbnRpYXRlIGFuIE9wdXMgZGVjb2Rlci4gRXJyb3IgY29kZTogIiA8PCByZXM7CisKKyAg
LyogVHJhbnNjb2RlIHVwIHRvIHxhdWRpb19kdXJhdGlvbl9zZWN8IG9ubHkgKi8KKyAgc2l6ZV90
IGRhdGFfcG9pbnRlciA9IDA7CisgIHNpemVfdCBkZWNvZGVkX21zID0gMDsKKyAgZmxvYXQgZW5j
b2Rpbmdfc2VjID0gMDsKKyAgZmxvYXQgZGVjb2Rpbmdfc2VjID0gMDsKKyAgd2hpbGUgKGRlY29k
ZWRfbXMgPCBhdWRpb19kdXJhdGlvbl9zZWMgKiAxMDAwKSB7CisgICAgLyogRW5jb2RlICovCisg
ICAgY2xvY2tfdCBjbG9ja3MgPSBjbG9jaygpOworICAgIHJlcyA9IG9wdXNfZW5jb2RlKGVuYywg
JmluX2RhdGFbZGF0YV9wb2ludGVyXSwgZnJhbWVfc2l6ZSwgJmJpdF9zdHJlYW1bMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgbWF4X2J5dGVzKTsKKyAgICBjbG9ja3MgPSBjbG9jaygpIC0gY2xv
Y2tzOworICAgIEVYUEVDVF9HVChyZXMsIDApIDw8ICJObyBieXRlcyB3ZXJlIGVuY29kZWQgc3Vj
Y2Vzc2Z1bGx5LiI7CisKKyAgICBlbmNvZGluZ19zZWMgKz0gMS4gKiBjbG9ja3MgLyBDTE9DS1Nf
UEVSX1NFQzsKKworICAgIC8qIERlY29kZSAqLworICAgIGNsb2NrcyA9IGNsb2NrKCk7CisgICAg
cmVzID0KKyAgICAgICAgb3B1c19kZWNvZGUoZGVjLCAmYml0X3N0cmVhbVswXSwgcmVzLCAmb3V0
X2RhdGFbMF0sIE1BWF9GUkFNRV9TQU1QLCAwKTsKKyAgICBjbG9ja3MgPSBjbG9jaygpIC0gY2xv
Y2tzOworICAgIEVYUEVDVF9FUShyZXMsIGZyYW1lX3NpemUpIDw8ICJXcm9uZyBudW1iZXIgb2Yg
c2FtcGxlcyByZXR1cm5lZCBieSBkZWNvZGVyIjsKKworICAgIGRlY29kaW5nX3NlYyArPSAxLiAq
IGNsb2NrcyAvIENMT0NLU19QRVJfU0VDOworCisgICAgLyogVXBkYXRlIGRhdGEgcG9pbnRlciBh
bmQgdGltZSB0cmFja2VyICovCisgICAgZGF0YV9wb2ludGVyICs9IGZyYW1lX3NpemUgKiBjaGFu
bmVsczsKKyAgICBkZWNvZGVkX21zICs9IGZyYW1lX3NpemVfbXM7CisgIH0KKworICAqZW5jb2Rp
bmdfcnRmID0gZW5jb2Rpbmdfc2VjIC8gYXVkaW9fZHVyYXRpb25fc2VjOworICAqZGVjb2Rpbmdf
cnRmID0gZGVjb2Rpbmdfc2VjIC8gYXVkaW9fZHVyYXRpb25fc2VjOworCisgIC8qIENsZWFuIHVw
ICovCisgIG9wdXNfZW5jb2Rlcl9kZXN0cm95KGVuYyk7CisgIG9wdXNfZGVjb2Rlcl9kZXN0cm95
KGRlYyk7CisgIGZyZWUoaW5fZGF0YSk7CisgIGZyZWUob3V0X2RhdGEpOworICBmcmVlKGJpdF9z
dHJlYW0pOworfQorfSAgLy8gbmFtZXNwYWNlCisKK1RFU1QoT3B1c0JlbmNobWFyaywgU3BlZWNo
TW9ubzQ4a0h6TmV4dXM1KSB7CisgIGNvbnN0IGludCBzYW1wbGluZ19raHogPSA0ODsKKyAgY29u
c3QgaW50IGNoYW5uZWxzID0gMTsKKyAgc2l6ZV90IGF1ZGlvX2R1cmF0aW9uX3NlYyA9IDI0MDsK
KyAgY29uc3QgaW50IGZyYW1lX3NpemVfbXMgPSAyMDsKKyAgY29uc3RleHByIGludCBucl9iaXRf
cmF0ZXMgPSA4OworICBpbnQzMl90IGJpdF9yYXRlc1tucl9iaXRfcmF0ZXNdID0gezY0MDAwLCAz
MjAwMCwgMjQwMDAsIDE2MDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEyMDAwLCAxMDAwMCwgODAwMCwgIDYwMDB9OworICBjb25zdGV4cHIgaW50IG5yX2NvbXBsZXhp
dGllcyA9IDExOworICBpbnQzMl90IGNvbXBsZXhpdGllc1tucl9jb21wbGV4aXRpZXNdID0gezAs
IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwfTsKKworI2lmIFJFR0VORVJBVEVfUkVGRVJF
TkNFUworICBmcHJpbnRmKHN0ZGVyciwgImJpdHJhdGUsY29tcGxleGl0eSxlbmNvZGluZ19ydGYs
ZGVjb2RpbmdfcnRmXG4iKTsKKyNlbHNlCisgIC8vIFJlYWwtdGltZSBmYWN0b3JzLCBzY2FsZWQg
KjEwMDAgZm9yIGNvc21ldGljIHB1cnBvc2UuCisgIC8vIExvd2VyIGlzIGJlc3QsIGFueSB2YWx1
ZSA8PSAxMDAwIGlzIHJlYWwtdGltZS4KKworICAvLyBUaGlzIHJlZmVyZW5jZSBudW1iZXJzIHdl
cmUgZ2VuZXJhdGVkIG9uIGEgTkVYVVMgNS4KKyAgLy8gVGhpcyBtZWFucyB0aGV5IGFyZSBpcnJl
bGV2YW50IGlmIHlvdSBydW4gdGhlIHRlc3Qgb24gYSBsaW51eCB3b3Jrc3RhdGlvbi4KKyAgLy8g
VE9ETyhiLzEwMDI5NzMpOiBIYXZlIGEgc2V0IG9mIHJlZmVyZW5jZXMgYnkgYXJjaGl0ZWN0dXJl
PworICAvLyAgICAgICAgICAgICAgT3IgYXQgbGVhc3QsIGRpc2FibGUgdGhlIHRlc3RzIGlmIG5v
dCBydW4gb24gZXhwZWN0ZWQgdGFyZ2V0LgorICBmbG9hdCBlbmNvZGluZ19yZWZlcmVuY2VbbnJf
Yml0X3JhdGVzXVtucl9jb21wbGV4aXRpZXNdID0geworICAgICAgLy8gTkI6IFJURiBpcyBkcm9w
cGluZyBmb3IgY29tcGxleGl0aWVzIDkgYW5kIDEwIGF0IGJpdF9yYXRlIDY0MDAwLgorICAgICAg
Ly8gT24gbGludXggeDY0LCBpdCBkcm9wcyBmb3IgY29tcGxleGl0aWVzIDcsIDgsIDksIDEwLgor
ICAgICAgLy8gVGhhdCBzZWVtcyBvaywgc2FuaXRpemVycyBkb24ndCByZXBvcnQgYW55dGhpbmcu
CisgICAgICAvLyBJdCBsb29rcyB0byBiZSBvcGVyYXRpbmcgbW9yZSBvZnRlbiBpbiBDRUxULW9u
bHkgbW9kZSBjb21wYXJlZCB0bworICAgICAgLy8gSHlicmlkIG1vZGUgZm9yIHRoaXMgcGFydGlj
dWxhciBhdWRpbyBmaWxlIChwb3NzaWJseSBiZWNhdXNlIG9mCisgICAgICAvLyB0aGUgcHJlc2Vu
Y2Ugb2YgdGhlIGJhY2tncm91bmQgbXVzaWMpLgorICAgICAgezE4LjAsIDIwLjIsIDIyLjgsIDI0
LjEsIDI5LjMsIDI5LjIsIDMxLjUsIDMxLjUsIDM1LjYsIDE1LjUsIDIxLjZ9LAorICAgICAgezE2
LjksIDE5LjIsIDIxLjcsIDIzLjAsIDI4LjEsIDI4LjEsIDMwLjEsIDMwLjEsIDM0LjIsIDM0LjIs
IDMyLjZ9LAorICAgICAgezE2LjYsIDE4LjgsIDIxLjMsIDIyLjYsIDI3LjgsIDI3LjgsIDI5Ljcs
IDI5LjcsIDMzLjcsIDMzLjcsIDM5Ljl9LAorICAgICAgezEyLjcsIDEzLjYsIDIwLjksIDIyLjIs
IDI3LjQsIDI3LjMsIDI5LjIsIDI5LjIsIDMzLjEsIDMzLjAsIDM5LjF9LAorICAgICAgezguNCwg
OS4xLCAxNi4wLCAxNy4zLCAyMi40LCAyMi40LCAyNC4yLCAyNC4zLCAyNy43LCAyNy43LCAzMy44
fSwKKyAgICAgIHs4LjQsIDkuMSwgMTAuMywgMTEuMiwgMTMuOCwgMTMuOCwgMTQuNywgMTQuNywg
MTYuNiwgMTYuNiwgMjYuNn0sCisgICAgICB7OC40LCA5LjAsIDEwLjMsIDExLjEsIDEzLjcsIDEz
LjcsIDE0LjYsIDE0LjYsIDE2LjUsIDE2LjUsIDIyLjZ9LAorICAgICAgezguMywgOS4wLCAxMC4y
LCAxMS4xLCAxMy43LCAxMy43LCAxNC42LCAxNC42LCAxNi40LCAxNi40LCAyMi41fX07CisKKyAg
ZmxvYXQgZGVjb2RpbmdfcmVmZXJlbmNlW25yX2JpdF9yYXRlc11bbnJfY29tcGxleGl0aWVzXSA9
IHsKKyAgICAgIHs3LjEsIDcuNSwgNy41LCA3LjUsIDcuNSwgNy41LCA3LjUsIDcuNSwgNy41LCA1
LjgsIDUuOH0sCisgICAgICB7Ni41LCA2LjgsIDYuOCwgNi44LCA2LjksIDYuOSwgNi45LCA2Ljks
IDYuOSwgNi45LCA2LjJ9LAorICAgICAgezYuMywgNi42LCA2LjYsIDYuNiwgNi43LCA2LjcsIDYu
NywgNi43LCA2LjcsIDYuNywgNi43fSwKKyAgICAgIHszLjIsIDMuMiwgNi40LCA2LjQsIDYuNSwg
Ni40LCA2LjQsIDYuNSwgNi41LCA2LjQsIDYuNX0sCisgICAgICB7Mi4yLCAyLjIsIDMuMSwgMy4x
LCAzLjIsIDMuMiwgMy4yLCAzLjIsIDMuMiwgMy4yLCAzLjJ9LAorICAgICAgezIuMSwgMi4xLCAy
LjEsIDIuMSwgMi4yLCAyLjIsIDIuMiwgMi4yLCAyLjIsIDEuOSwgMi41fSwKKyAgICAgIHsyLjEs
IDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMX0sCisgICAg
ICB7Mi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjEsIDIuMSwgMi4xLCAyLjF9
fTsKKyNlbmRpZgorCisgIGZvciAoaW50IGkgPSAwOyBpIDwgbnJfYml0X3JhdGVzOyBpKyspIHsK
KyAgICBmb3IgKGludCBqID0gMDsgaiA8IG5yX2NvbXBsZXhpdGllczsgaisrKSB7CisgICAgICAv
LyBUbyByZWR1Y2UgYnJpdHRsZW5lc3MsIGVhY2ggdGVzdCBpcyByZXRyaWVkIGluZGVwZW5kZW50
bHkuCisjaWYgUkVHRU5FUkFURV9SRUZFUkVOQ0VTCisgICAgICBmbG9hdCBlbmNvZGluZ19iZXN0
ID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgICBmbG9hdCBk
ZWNvZGluZ19iZXN0ID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7Cisj
ZW5kaWYKKyAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgUkVUUklFUzsgaysrKSB7CisgICAgICAg
IGZsb2F0IGVuY29kaW5nX3J0ZjsKKyAgICAgICAgZmxvYXQgZGVjb2RpbmdfcnRmOworICAgICAg
ICBvcHVzX3J1bihmcmFtZV9zaXplX21zLCBzYW1wbGluZ19raHosIGNoYW5uZWxzLCBiaXRfcmF0
ZXNbaV0sCisgICAgICAgICAgICAgICAgIGNvbXBsZXhpdGllc1tqXSwgYXVkaW9fZHVyYXRpb25f
c2VjLCAmZW5jb2RpbmdfcnRmLAorICAgICAgICAgICAgICAgICAmZGVjb2RpbmdfcnRmKTsKKyAg
ICAgICAgLy8gU2NhbGUgdG8gbWF0Y2ggcmVmZXJlbmNlIHVuaXQuCisgICAgICAgIGVuY29kaW5n
X3J0ZiAqPSAxMDAwOworICAgICAgICBkZWNvZGluZ19ydGYgKj0gMTAwMDsKKworI2lmIFJFR0VO
RVJBVEVfUkVGRVJFTkNFUworICAgICAgICBlbmNvZGluZ19iZXN0ID0gc3RkOjptaW4oZW5jb2Rp
bmdfYmVzdCwgZW5jb2RpbmdfcnRmKTsKKyAgICAgICAgZGVjb2RpbmdfYmVzdCA9IHN0ZDo6bWlu
KGRlY29kaW5nX2Jlc3QsIGRlY29kaW5nX3J0Zik7CisjZWxzZQorICAgICAgICAvLyBBbGxvdyA1
JSByZWxhdGl2ZSBlcnJvci4KKyAgICAgICAgYXV0byBlbmNvZGluZ19yZWYgPSBlbmNvZGluZ19y
ZWZlcmVuY2VbaV1bal07CisgICAgICAgIGF1dG8gZGVjb2RpbmdfcmVmID0gZGVjb2RpbmdfcmVm
ZXJlbmNlW2ldW2pdOworICAgICAgICBjb25zdCBmbG9hdCBlbmNvZGluZ19hYnNfZXJyb3IgPSAu
MDUgKiBlbmNvZGluZ19yZWY7CisgICAgICAgIGNvbnN0IGZsb2F0IGRlY29kaW5nX2Fic19lcnJv
ciA9IC4wNSAqIGRlY29kaW5nX3JlZjsKKyAgICAgICAgaWYgKHN0ZDo6YWJzKGVuY29kaW5nX3J0
ZiAtIGVuY29kaW5nX3JlZikgPCBlbmNvZGluZ19hYnNfZXJyb3IpIHsKKyAgICAgICAgICBTVUND
RUVEKCk7CisgICAgICAgICAgYnJlYWs7ICAvLyBObyBuZWVkIGZvciByZXRyeS4KKyAgICAgICAg
fSBlbHNlIGlmIChrID09IFJFVFJJRVMgLSAxKSB7CisgICAgICAgICAgLy8gTmI6IElmIHJldHVy
bmVkIHZhbHVlIGlzIGNvbnNpc3RlbnRseSBsb3dlciAoYmV0dGVyKSwKKyAgICAgICAgICAvLyAg
ICAgb25lIGp1c3QgaGF2ZSB0byB1cGRhdGUgdGhlIHJlZmVyZW5jZS4KKyAgICAgICAgICBFWFBF
Q1RfTkVBUihlbmNvZGluZ19ydGYsIGVuY29kaW5nX3JlZiwgZW5jb2RpbmdfYWJzX2Vycm9yKQor
ICAgICAgICAgICAgICA8PCAiTWlzbWF0Y2ggZm9yIGJpdHJhdGUgIiA8PCBiaXRfcmF0ZXNbaV0g
PDwgIiBhbmQgY29tcGxleGl0eSAiCisgICAgICAgICAgICAgIDw8IGNvbXBsZXhpdGllc1tqXTsK
KyAgICAgICAgICBFWFBFQ1RfTkVBUihkZWNvZGluZ19ydGYsIGRlY29kaW5nX3JlZiwgZGVjb2Rp
bmdfYWJzX2Vycm9yKQorICAgICAgICAgICAgICA8PCAiTWlzbWF0Y2ggZm9yIGJpdHJhdGUgIiA8
PCBiaXRfcmF0ZXNbaV0gPDwgIiBhbmQgY29tcGxleGl0eSAiCisgICAgICAgICAgICAgIDw8IGNv
bXBsZXhpdGllc1tqXTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICB9CisjaWYgUkVHRU5FUkFU
RV9SRUZFUkVOQ0VTCisgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVkLCAlZCwgJS4yZiwgJS4yZlxu
IiwgYml0X3JhdGVzW2ldLCBjb21wbGV4aXRpZXNbal0sCisgICAgICAgICAgICAgIGVuY29kaW5n
X2Jlc3QsIGRlY29kaW5nX2Jlc3QpOworI2VuZGlmCisgICAgfQorICB9Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L29wdXMvdGVz
dHMvcmVzb3VyY2VzLy5naXRpZ25vcmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L29wdXMvdGVzdHMvcmVzb3VyY2VzLy5naXRpZ25vcmUKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmM1MDJmZmE0OTkzNWUxZDBjNmQ4YjI2M2JiMWQzNmZlMjk0MGIwZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1
cy90ZXN0cy9yZXNvdXJjZXMvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACisqKi8qLnBjbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9v
cHVzL3Rlc3RzL3Jlc291cmNlcy9zcGVlY2hfbW9ub18zMl80OGtIei5wY20uc2hhMSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy90ZXN0cy9yZXNv
dXJjZXMvc3BlZWNoX21vbm9fMzJfNDhrSHoucGNtLnNoYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNlMzU2MGU0
NzQwOWYzZTY2ZjdmYWM1NWNmYWYxMzZlOGQ1NGRiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvb3B1cy90ZXN0cy9yZXNv
dXJjZXMvc3BlZWNoX21vbm9fMzJfNDhrSHoucGNtLnNoYTEKQEAgLTAsMCArMSBAQAorMDA5YTNl
ZTc3ODc2N2MyNDAyYjFkMmM5MjBiYzI0NDkyNjVmNWEyYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9s
aWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZThhMDQ1OTUwNmQ1ZWU0
YjU2NmJhNDFlNDgzMjk5ZjBlZDExNTY4Li5mYzU1NjNhOTVkYzAxOGUxMmQ4NmJiNzAzYzk1MmUx
MGE2MzQ5NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2Vi
cnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjc1LDYgKzEy
NzUsMTAgQEAKIAkJNDE4ODlENzcyMTZCQzRFQzAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFy
YW1ldGVycy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNEZCODZBMjE2QkI3NjgwMDFGNTQ5MiAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMubW0g
Ki87IH07CiAJCTQxODg5RDc4MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9u
SGVhZGVyK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNEZCODY4MjE2QkI3NjYwMDFGNTQ5MiAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVh
ZGVyK1ByaXZhdGUuaCAqLzsgfTsKIAkJNDE4ODlENzkyMTZCQzRFQzAwNDYxNEREIC8qIFJUQ1J0
cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEZCODY3MjE2QkI3NjYwMDFGNTQ5MiAvKiBSVENSdHBG
cmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUubW0gKi87IH07CisJCTQxODk2OEJCMjQyQjlBNkYw
MEFBOTkxMiAvKiBOU1FfZGVsX2RlY19zc2U0XzEuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk2OEI2MjQyQjlBNjkwMEFBOTkxMiAvKiBOU1FfZGVs
X2RlY19zc2U0XzEuYyAqLzsgfTsKKwkJNDE4OTY4QkMyNDJCOUE2RjAwQUE5OTEyIC8qIE5TUV9z
c2U0XzEuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
ODk2OEI1MjQyQjlBNjkwMEFBOTkxMiAvKiBOU1Ffc3NlNF8xLmMgKi87IH07CisJCTQxODk2OEJE
MjQyQjlBNkYwMEFBOTkxMiAvKiBWQURfc3NlNF8xLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5NjhCNDI0MkI5QTY4MDBBQTk5MTIgLyogVkFEX3Nz
ZTRfMS5jICovOyB9OworCQk0MTg5NjhCRTI0MkI5QTZGMDBBQTk5MTIgLyogVlFfV01hdF9FQ19z
c2U0XzEuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
ODk2OEIzMjQyQjlBNjgwMEFBOTkxMiAvKiBWUV9XTWF0X0VDX3NzZTRfMS5jICovOyB9OwogCQk0
MThCMTRERjIxNjU5NTlGMDA0NkUwM0YgLyogc3ZjX2VuY29kZWZyYW1lLmMgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUVBRjFCRDIxMkUyQUFEMDA5Rjcz
RUMgLyogc3ZjX2VuY29kZWZyYW1lLmMgKi87IH07CiAJCTQxOEIxNEUwMjE2NTk1OUYwMDQ2RTAz
RiAvKiB2cHhfY29kZWMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRUFGMUI5MjEyRTJBQUQwMDlGNzNFQyAvKiB2cHhfY29kZWMuYyAqLzsgfTsKIAkJ
NDE4QjE0RTEyMTY1OTU5RjAwNDZFMDNGIC8qIHZweF9kZWNvZGVyLmMgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUVBRjFCQjIxMkUyQUFEMDA5RjczRUMg
LyogdnB4X2RlY29kZXIuYyAqLzsgfTsKQEAgLTIzMzAsMTEgKzIzMzQsNyBAQAogCQk1QzRCNENE
MjFFNDMyMEE5MDAyNjUxQzggLyogZXZlbnQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNENBMDFFNDMyMEE5MDAyNjUxQzggLyogZXZlbnQuY2Mg
Ki87IH07CiAJCTVDNEI0Q0U1MUU0MzIwQTkwMDI2NTFDOCAvKiBzbGVlcC5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0Q0I0MUU0MzIwQTkwMDI2
NTFDOCAvKiBzbGVlcC5jYyAqLzsgfTsKIAkJNUM0QjREMDIxRTQzMjE4NTAwMjY1MUM4IC8qIHNw
YWtlMjU1MTkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDNEI0Q0Y2MUU0MzIxNjgwMDI2NTFDOCAvKiBzcGFrZTI1NTE5LmMgKi87IH07Ci0JCTVDNUY0
MDk3MUU5NzhGREIwMEQ5NDI3OSAvKiBOU1FfZGVsX2RlY19zc2UuYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUY0MDhEMUU5NzhGRDIwMEQ5NDI3OSAv
KiBOU1FfZGVsX2RlY19zc2UuYyAqLzsgfTsKLQkJNUM1RjQwOTgxRTk3OEZEQjAwRDk0Mjc5IC8q
IE5TUV9zc2UuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDNUY0MDhFMUU5NzhGRDIwMEQ5NDI3OSAvKiBOU1Ffc3NlLmMgKi87IH07CiAJCTVDNUY0MDk5
MUU5NzhGREIwMEQ5NDI3OSAvKiBTaWdQcm9jX0ZJWF9zc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUY0MDhGMUU5NzhGRDIwMEQ5NDI3OSAvKiBT
aWdQcm9jX0ZJWF9zc2UuaCAqLzsgfTsKLQkJNUM1RjQwOUExRTk3OEZEQjAwRDk0Mjc5IC8qIFZB
RF9zc2UuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NUY0MDkwMUU5NzhGRDIwMEQ5NDI3OSAvKiBWQURfc3NlLmMgKi87IH07Ci0JCTVDNUY0MDlCMUU5
NzhGREIwMEQ5NDI3OSAvKiBWUV9XTWF0X0VDX3NzZS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1RjQwOTExRTk3OEZEMjAwRDk0Mjc5IC8qIFZRX1dN
YXRfRUNfc3NlLmMgKi87IH07CiAJCTVDNjAyNDVGMUU0OTREQjgwMDg4RjBCMiAvKiB1c2VyX2F0
b21pYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0
QjRBQ0IxRTQyQzlENjAwMjY1MUM4IC8qIHVzZXJfYXRvbWljLmggKi87IH07CiAJCTVDNjAyNDYw
MUU0OTREQjgwMDg4RjBCMiAvKiB1c2VyX2Vudmlyb25tZW50LmMgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEFDQzFFNDJDOUQ2MDAyNjUxQzggLyog
dXNlcl9lbnZpcm9ubWVudC5jICovOyB9OwogCQk1QzYwMjQ2MTFFNDk0REI4MDA4OEYwQjIgLyog
dXNlcl9lbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0QjRBQ0QxRTQyQzlENjAwMjY1MUM4IC8qIHVzZXJfZW52aXJvbm1lbnQuaCAq
LzsgfTsKQEAgLTUxNzUsNiArNTE3NSwxMCBAQAogCQk0MTc5NTQwNDIxNjk4NTIwMDAyODI2NkIg
LyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENXcmFw
cGVkTmF0aXZlVmlkZW9FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
N0MwMzcyMjNCMjEwQzQwMERFNUQ4QiAvKiBtYWluX25vb3AuYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5jOyBwYXRoID0gbWFpbl9ub29wLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxODg5RDc0MjE2QkI3QjYwMDQ2MTRERCAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMrUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiUlRDUnRwRW5jb2RpbmdQ
YXJhbWV0ZXJzK1ByaXZhdGUuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODk2
OEIzMjQyQjlBNjgwMEFBOTkxMiAvKiBWUV9XTWF0X0VDX3NzZTRfMS5jICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmM7IG5hbWUgPSBWUV9XTWF0X0VDX3NzZTRfMS5jOyBwYXRoID0gc2lsay94ODYv
VlFfV01hdF9FQ19zc2U0XzEuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4OTY4
QjQyNDJCOUE2ODAwQUE5OTEyIC8qIFZBRF9zc2U0XzEuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5jOyBuYW1lID0gVkFEX3NzZTRfMS5jOyBwYXRoID0gc2lsay94ODYvVkFEX3NzZTRfMS5jOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTg5NjhCNTI0MkI5QTY5MDBBQTk5MTIgLyog
TlNRX3NzZTRfMS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBOU1Ffc3NlNF8x
LmM7IHBhdGggPSBzaWxrL3g4Ni9OU1Ffc3NlNF8xLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODk2OEI2MjQyQjlBNjkwMEFBOTkxMiAvKiBOU1FfZGVsX2RlY19zc2U0XzEuYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gTlNRX2RlbF9kZWNfc3NlNF8xLmM7IHBh
dGggPSBzaWxrL3g4Ni9OU1FfZGVsX2RlY19zc2U0XzEuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE5MTAwOUMyMTUyRTE4RDAwQTZGMTdCIC8qIHZweF9jb25maWcuYXNtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5h
c20uYXNtOyBwYXRoID0gdnB4X2NvbmZpZy5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxOTEwMDlEMjE1MkUxOEQwMEE2RjE3QiAvKiB2cHhfY29uZmlnLmMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuYzsgcGF0aCA9IHZweF9jb25maWcuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE5MTAwOUUyMTUyRTE4RDAwQTZGMTdCIC8qIHZweF9kc3BfcnRjZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2cHhfZHNwX3J0Y2QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NDEsMTEgKzY0NDUsNyBAQAogCQk1QzRCNEQ1MzFFNDMyM0Q0
MDAyNjUxQzggLyogc2NhbGVfY29tbW9uLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gc2NhbGVfY29tbW9uLmNjOyBwYXRoID0gc291cmNlL3NjYWxlX2NvbW1vbi5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRENTkxRTQzMjNENDAwMjY1MUM4IC8q
IHNjYWxlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc2NhbGUuY2M7
IHBhdGggPSBzb3VyY2Uvc2NhbGUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NEI0RDVBMUU0MzIzRDQwMDI2NTFDOCAvKiB2aWRlb19jb21tb24uY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB2aWRlb19jb21tb24uY2M7IHBhdGggPSBzb3VyY2Uvdmlk
ZW9fY29tbW9uLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzVGNDA4RDFFOTc4
RkQyMDBEOTQyNzkgLyogTlNRX2RlbF9kZWNfc3NlLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgbmFtZSA9IE5TUV9kZWxfZGVjX3NzZS5jOyBwYXRoID0gc2lsay94ODYvTlNRX2RlbF9kZWNf
c3NlLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNUY0MDhFMUU5NzhGRDIwMEQ5
NDI3OSAvKiBOU1Ffc3NlLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IE5TUV9z
c2UuYzsgcGF0aCA9IHNpbGsveDg2L05TUV9zc2UuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM1RjQwOEYxRTk3OEZEMjAwRDk0Mjc5IC8qIFNpZ1Byb2NfRklYX3NzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaWdQcm9jX0ZJWF9zc2UuaDsgcGF0aCA9IHNp
bGsveDg2L1NpZ1Byb2NfRklYX3NzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
QzVGNDA5MDFFOTc4RkQyMDBEOTQyNzkgLyogVkFEX3NzZS5jICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmM7IG5hbWUgPSBWQURfc3NlLmM7IHBhdGggPSBzaWxrL3g4Ni9WQURfc3NlLmM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNUY0MDkxMUU5NzhGRDIwMEQ5NDI3OSAvKiBWUV9X
TWF0X0VDX3NzZS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBWUV9XTWF0X0VD
X3NzZS5jOyBwYXRoID0gc2lsay94ODYvVlFfV01hdF9FQ19zc2UuYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM2M0Y4RDAxRTQxNkQ1MzAwMkNBNTMxIC8qIGFzc2VydGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXNzZXJ0aW9ucy5oOyBwYXRoID0ganNv
bi9hc3NlcnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjNGOEQxMUU0
MTZENTMwMDJDQTUzMSAvKiBhdXRvbGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBhdXRvbGluay5oOyBwYXRoID0ganNvbi9hdXRvbGluay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzYzRjhEMjFFNDE2RDUzMDAyQ0E1MzEgLyogY29uZmlnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGNvbmZpZy5oOyBwYXRoID0ganNvbi9jb25maWcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzAwLDExICsxMzcwMCwxMSBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0REOEUyNTFFNDNDN0VD
MDA2MjFFOTIgLyogbWFpbl9zc2UuaCAqLywKLQkJCQk1QzVGNDA4RDFFOTc4RkQyMDBEOTQyNzkg
LyogTlNRX2RlbF9kZWNfc3NlLmMgKi8sCi0JCQkJNUM1RjQwOEUxRTk3OEZEMjAwRDk0Mjc5IC8q
IE5TUV9zc2UuYyAqLywKKwkJCQk0MTg5NjhCNjI0MkI5QTY5MDBBQTk5MTIgLyogTlNRX2RlbF9k
ZWNfc3NlNF8xLmMgKi8sCisJCQkJNDE4OTY4QjUyNDJCOUE2OTAwQUE5OTEyIC8qIE5TUV9zc2U0
XzEuYyAqLywKIAkJCQk1QzVGNDA4RjFFOTc4RkQyMDBEOTQyNzkgLyogU2lnUHJvY19GSVhfc3Nl
LmggKi8sCi0JCQkJNUM1RjQwOTAxRTk3OEZEMjAwRDk0Mjc5IC8qIFZBRF9zc2UuYyAqLywKLQkJ
CQk1QzVGNDA5MTFFOTc4RkQyMDBEOTQyNzkgLyogVlFfV01hdF9FQ19zc2UuYyAqLywKKwkJCQk0
MTg5NjhCNDI0MkI5QTY4MDBBQTk5MTIgLyogVkFEX3NzZTRfMS5jICovLAorCQkJCTQxODk2OEIz
MjQyQjlBNjgwMEFBOTkxMiAvKiBWUV9XTWF0X0VDX3NzZTRfMS5jICovLAogCQkJCTVDREQ4RTJC
MUU0M0M3RUMwMDYyMUU5MiAvKiB4ODZfc2lsa19tYXAuYyAqLywKIAkJCSk7CiAJCQluYW1lID0g
eDg2OwpAQCAtMTY0MjAsNiArMTY0MjAsNyBAQAogCQkJCTVDREQ4RTRBMUU0M0M4MEMwMDYyMUU5
MiAvKiBkZWNvZGVfY29yZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFNEIxRTQzQzgwQzAw
NjIxRTkyIC8qIGRlY29kZV9mcmFtZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFNEMxRTQz
QzgwQzAwNjIxRTkyIC8qIGRlY29kZV9pbmRpY2VzLmMgaW4gU291cmNlcyAqLywKKwkJCQk0MTg5
NjhCRTI0MkI5QTZGMDBBQTk5MTIgLyogVlFfV01hdF9FQ19zc2U0XzEuYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ4RTREMUU0M0M4MEMwMDYyMUU5MiAvKiBkZWNvZGVfcGFyYW1ldGVycy5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFNEUxRTQzQzgwQzAwNjIxRTkyIC8qIGRlY29kZV9waXRj
aC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFNEYxRTQzQzgwQzAwNjIxRTkyIC8qIGRlY29k
ZV9wdWxzZXMuYyBpbiBTb3VyY2VzICovLApAQCAtMTY0MjksNiArMTY0MzAsNyBAQAogCQkJCTVD
REQ4RUU1MUU0M0M5RjYwMDYyMUU5MiAvKiBlbmNvZGVfZnJhbWVfRkxQLmMgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEU1MzFFNDNDODBDMDA2MjFFOTIgLyogZW5jb2RlX2luZGljZXMuYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4RTU0MUU0M0M4MEMwMDYyMUU5MiAvKiBlbmNvZGVfcHVsc2Vz
LmMgaW4gU291cmNlcyAqLywKKwkJCQk0MTg5NjhCQzI0MkI5QTZGMDBBQTk5MTIgLyogTlNRX3Nz
ZTRfMS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFRTYxRTQzQzlGNjAwNjIxRTkyIC8qIGVu
ZXJneV9GTFAuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RDNEMUU0M0M3OUMwMDYyMUU5MiAv
KiBlbnRjb2RlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEQzRjFFNDNDNzlDMDA2MjFFOTIg
LyogZW50ZGVjLmMgaW4gU291cmNlcyAqLywKQEAgLTE2NDU2LDYgKzE2NDU4LDcgQEAKIAkJCQk1
Q0REOEU1RDFFNDNDODBDMDA2MjFFOTIgLyogbGluMmxvZy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhFNUUxRTQzQzgwQzAwNjIxRTkyIC8qIGxvZzJsaW4uYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4RTVGMUU0M0M4MEMwMDYyMUU5MiAvKiBMUF92YXJpYWJsZV9jdXRvZmYuYyBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxODk2OEJEMjQyQjlBNkYwMEFBOTkxMiAvKiBWQURfc3NlNF8xLmMgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEU2MDFFNDNDODBDMDA2MjFFOTIgLyogTFBDX2FuYWx5c2lz
X2ZpbHRlci5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFRUUxRTQzQzlGNjAwNjIxRTkyIC8q
IExQQ19hbmFseXNpc19maWx0ZXJfRkxQLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTUzQ0QyNzIx
Q0M2NjEwMDBDM0UxODggLyogTFBDX2ZpdC5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQ4Miw4ICsx
NjQ4NSw2IEBACiAJCQkJNUNERDhFRjMxRTQzQzlGNjAwNjIxRTkyIC8qIG5vaXNlX3NoYXBlX2Fu
YWx5c2lzX0ZMUC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFNkYxRTQzQzgwQzAwNjIxRTky
IC8qIE5TUS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFNkUxRTQzQzgwQzAwNjIxRTkyIC8q
IE5TUV9kZWxfZGVjLmMgaW4gU291cmNlcyAqLywKLQkJCQk1QzVGNDA5NzFFOTc4RkRCMDBEOTQy
NzkgLyogTlNRX2RlbF9kZWNfc3NlLmMgaW4gU291cmNlcyAqLywKLQkJCQk1QzVGNDA5ODFFOTc4
RkRCMDBEOTQyNzkgLyogTlNRX3NzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRBQzIxRTQy
QzU3NDAwMjY1MUM4IC8qIG9wdXMuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QUJCMUU0MkM1
NzQwMDI2NTFDOCAvKiBvcHVzX2RlY29kZXIuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QUJE
MUU0MkM1NzQwMDI2NTFDOCAvKiBvcHVzX2VuY29kZXIuYyBpbiBTb3VyY2VzICovLApAQCAtMTY1
MzAsNiArMTY1MzEsNyBAQAogCQkJCTVDREQ4RTg5MUU0M0M4MEMwMDYyMUU5MiAvKiBzdGVyZW9f
TFJfdG9fTVMuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RThBMUU0M0M4MEMwMDYyMUU5MiAv
KiBzdGVyZW9fTVNfdG9fTFIuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RThCMUU0M0M4MEMw
MDYyMUU5MiAvKiBzdGVyZW9fcXVhbnRfcHJlZC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4OTY4
QkIyNDJCOUE2RjAwQUE5OTEyIC8qIE5TUV9kZWxfZGVjX3NzZTRfMS5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDhFOEQxRTQzQzgwQzAwNjIxRTkyIC8qIHN1bV9zcXJfc2hpZnQuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4RThFMUU0M0M4MEMwMDYyMUU5MiAvKiB0YWJsZV9MU0ZfY29zLmMg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEU4RjFFNDNDODBDMDA2MjFFOTIgLyogdGFibGVzX2dh
aW4uYyBpbiBTb3VyY2VzICovLApAQCAtMTY1NDAsMTIgKzE2NTQyLDEwIEBACiAJCQkJNUNERDhF
OTQxRTQzQzgwQzAwNjIxRTkyIC8qIHRhYmxlc19waXRjaF9sYWcuYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4RTk1MUU0M0M4MEMwMDYyMUU5MiAvKiB0YWJsZXNfcHVsc2VzX3Blcl9ibG9jay5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFOTkxRTQzQzgwQzAwNjIxRTkyIC8qIFZBRC5jIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNUM1RjQwOUExRTk3OEZEQjAwRDk0Mjc5IC8qIFZBRF9zc2UuYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4RjUzMUU0M0NCMUUwMDYyMUU5MiAvKiB2ZWN0b3Jfb3Bz
X0ZJWC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhENUIxRTQzQzc5QzAwNjIxRTkyIC8qIHZx
LmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTUzQ0QyODIxQ0M2NjQ4MDBDM0UxODggLyogdnFfc3Nl
Mi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhFOUExRTQzQzgwQzAwNjIxRTkyIC8qIFZRX1dN
YXRfRUMuYyBpbiBTb3VyY2VzICovLAotCQkJCTVDNUY0MDlCMUU5NzhGREIwMEQ5NDI3OSAvKiBW
UV9XTWF0X0VDX3NzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGNTQxRTQzQ0IxRTAwNjIx
RTkyIC8qIHdhcnBlZF9hdXRvY29ycmVsYXRpb25fRklYLmMgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEYwMDFFNDNDOUY2MDA2MjFFOTIgLyogd2FycGVkX2F1dG9jb3JyZWxhdGlvbl9GTFAuYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4RjAxMUU0M0M5RjYwMDYyMUU5MiAvKiB3cmFwcGVyc19G
TFAuYyBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>