<?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>125563</bug_id>
          
          <creation_ts>2013-12-11 02:21:55 -0800</creation_ts>
          <short_desc>[Mac] Remove the DumpRenderTree Perl Support module</short_desc>
          <delta_ts>2013-12-11 09:46:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Mark Rowe (bdash)">mrowe</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>glenn</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958644</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-12-11 02:21:55 -0800</bug_when>
    <thetext>The DumpRenderTree Perl Support module existed in order to speed up run-webkit-tests detection of whether a process was crashing or not. Now that the Python version of run-webkit-tests is used on OS X it serves very little purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958646</commentid>
    <comment_count>1</comment_count>
      <attachid>218943</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-12-11 02:24:53 -0800</bug_when>
    <thetext>Created attachment 218943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958767</commentid>
    <comment_count>2</comment_count>
      <attachid>218943</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 09:46:41 -0800</bug_when>
    <thetext>Comment on attachment 218943
Patch

Clearing flags on attachment: 218943

Committed r160439: &lt;http://trac.webkit.org/changeset/160439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958768</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 09:46:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218943</attachid>
            <date>2013-12-11 02:24:53 -0800</date>
            <delta_ts>2013-12-11 09:46:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125563-20131211022433.patch</filename>
            <type>text/plain</type>
            <size>47006</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDE1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDEyNDA5ODdiMGE0MWNlM2NjNWQzNzdhZWZmMzVlZjEy
YTU2YTFhMC4uZDY4YTUzMTU2MDUwN2M1OTc4MDhjNWZjODFkN2Y5M2MxZjY5OTc5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEzLTEyLTExICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyNTU2Mz4gUmVtb3ZlIHRoZSBEdW1wUmVuZGVyVHJlZSBQ
ZXJsIFN1cHBvcnQgbW9kdWxlCisKKyAgICAgICAgTm93IHRoYXQgb2xkLXJ1bi13ZWJraXQtdGVz
dHMgaXMgbm90IHVzZWQgb24gT1MgWCBpdCdzIG5vdCB3b3J0aCB0aGUgdGltZSBhbmQgZWZmb3J0
CisgICAgICAgIHRvIGJ1aWxkIGFuZCBtYWludGFpbiB0aGlzIGN1c3RvbSBQZXJsIG1vZHVsZS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92
ZSB0aGUgdGFyZ2V0LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnQuYzogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvUGVybFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UHJlZ2VuZXJhdGVkLnBtOiBS
ZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRfd3JhcFByZWdlbmVyYXRlZC5jOiBSZW1vdmVkLgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9NYWtlZmlsZTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzOiBVcGRhdGUgYSBjb21tZW50IHRoYXQgcmVm
ZXJyZWQgdG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0IGFzIGEgcmVhc29uIHRvCisgICAgICAgIGJ1
aWxkIER1bXBSZW5kZXJUcmVlLgorICAgICAgICAoZHVtcFRvb2xEaWRDcmFzaCk6IFN0b3AgaW1w
b3J0aW5nIGFuZCB1c2luZyB0aGUgbW9kdWxlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5fYnVpbGRfZHJpdmVyKTogVXBkYXRlIGEgY29t
bWVudCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgaW4gb2xkLXJ1bi13ZWJraXQtdGVzdHMuCisKIDIw
MTMtMTItMDMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTI1MTM5PiBNb2Rlcm5pemUgdGhlIFdlYktpdCBBUEkgaGVhZGVycwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmRkYzBkMzNjM2Q5NDIzMzljMmUyN2U3Yjhm
MjUwNjc2MjE5NGM0ZC4uMWFhZTg2ZWVkYWEwMDEyNjE4ZTc3NGJiZDg1OTI1MWUxNGNlMjIwZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNyw3ICsxNyw2IEBACiAJCQkJQTg0RjYw
OTEwOEIxMzcwRTAwRTk3NDVGIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQTg0RjYw
OEYwOEIxMzcwRTAwRTk3NDVGIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJMTQxQkYy
MzgwOTZBNDUxRTAwRTA3NTNDIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkJNURDODJB
NzAxMDIzQzkzRDAwRkQxRDNCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IEFsbDsKIAkJCXByb2R1Y3ROYW1lID0gQWxsOwpAQCAtMTkxLDIwICsxOTAsNiBAQAog
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAyRDQwM0VCMjE1MDg3MUY5MDA1MzU4RDI7CiAJCQly
ZW1vdGVJbmZvID0gTGF5b3V0VGVzdEhlbHBlcjsKIAkJfTsKLQkJMzc4QzgwMjMxNUFCNTg5QjAw
NzQ2ODIxIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4RkI3NzkzRkU4NDE1NURDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDkzNDA5OTRBMDg1NDBDQUUwMDdGM0JDODsKLQkJCXJlbW90ZUluZm8g
PSBEdW1wUmVuZGVyVHJlZTsKLQkJfTsKLQkJNURDODJBNkYxMDIzQzkzRDAwRkQxRDNCIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDVEQzgyQTY2MTAyM0M4REUwMEZEMUQzQjsKLQkJCXJlbW90ZUluZm8gPSAiRHVtcFJlbmRl
clRyZWUgUGVybCBTdXBwb3J0IjsKLQkJfTsKIAkJQTg0RjYwOEUwOEIxMzcwRTAwRTk3NDVGIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLzsKQEAgLTc4OCwyNCArNzczLDYgQEAKIAkJfTsKIC8qIEVuZCBQQlhI
ZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKLS8qIEJlZ2luIFBCWExlZ2FjeVRhcmdldCBz
ZWN0aW9uICovCi0JCTVEQzgyQTY2MTAyM0M4REUwMEZEMUQzQiAvKiBEdW1wUmVuZGVyVHJlZSBQ
ZXJsIFN1cHBvcnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhMZWdhY3lUYXJnZXQ7Ci0JCQlidWlsZEFy
Z3VtZW50c1N0cmluZyA9ICIkKEFDVElPTikiOwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDVEQzgyQTZFMTAyM0M5MkEwMEZEMUQzQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWExlZ2FjeVRhcmdldCAiRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0IiAqLzsKLQkJCWJ1
aWxkUGhhc2VzID0gKAotCQkJKTsKLQkJCWJ1aWxkVG9vbFBhdGggPSBtYWtlOwotCQkJYnVpbGRX
b3JraW5nRGlyZWN0b3J5ID0gIiQoU1JDUk9PVCkvbWFjL1BlcmxTdXBwb3J0IjsKLQkJCWRlcGVu
ZGVuY2llcyA9ICgKLQkJCQkzNzhDODAyNDE1QUI1ODlCMDA3NDY4MjEgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkR1bXBSZW5kZXJUcmVlIFBlcmwgU3VwcG9y
dCI7Ci0JCQlwYXNzQnVpbGRTZXR0aW5nc0luRW52aXJvbm1lbnQgPSAxOwotCQkJcHJvZHVjdE5h
bWUgPSAiRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0IjsKLQkJfTsKLS8qIEVuZCBQQlhMZWdh
Y3lUYXJnZXQgc2VjdGlvbiAqLwotCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAq
LwogCQkxNDFCRjIxRTA5NkE0NDFEMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luICovID0g
ewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwpAQCAtOTA1LDcgKzg3Miw2IEBACiAJCQkJOTM0
MDk5NEEwODU0MENBRTAwN0YzQkM4IC8qIER1bXBSZW5kZXJUcmVlICovLAogCQkJCUI1QTc1MjVB
MDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFnZURpZmYgKi8sCiAJCQkJMTQxQkYyMUUwOTZBNDQxRDAw
RTA3NTNDIC8qIFRlc3ROZXRzY2FwZVBsdWdJbiAqLywKLQkJCQk1REM4MkE2NjEwMjNDOERFMDBG
RDFEM0IgLyogRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0ICovLAogCQkJCTJENDAzRUIyMTUw
ODcxRjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovLAogCQkJKTsKIAkJfTsKQEAgLTEw
NDMsMTYgKzEwMDksNiBAQAogCQkJdGFyZ2V0ID0gMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyIC8q
IExheW91dFRlc3RIZWxwZXIgKi87CiAJCQl0YXJnZXRQcm94eSA9IDJENDAzRjIwMTUwODczNkMw
MDUzNThEMiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07Ci0JCTM3OEM4MDI0MTVB
QjU4OUIwMDc0NjgyMSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJY
VGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9IDkzNDA5OTRBMDg1NDBDQUUwMDdGM0JDOCAv
KiBEdW1wUmVuZGVyVHJlZSAqLzsKLQkJCXRhcmdldFByb3h5ID0gMzc4QzgwMjMxNUFCNTg5QjAw
NzQ2ODIxIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJNURDODJBNzAxMDIz
QzkzRDAwRkQxRDNCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gNURDODJBNjYxMDIzQzhERTAwRkQxRDNCIC8q
IER1bXBSZW5kZXJUcmVlIFBlcmwgU3VwcG9ydCAqLzsKLQkJCXRhcmdldFByb3h5ID0gNURDODJB
NkYxMDIzQzkzRDAwRkQxRDNCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKIAkJ
QTg0RjYwOEYwOEIxMzcwRTAwRTk3NDVGIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gQjVBNzUyNUEwOEFGNEE0
QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLzsKQEAgLTExMzgsMjcgKzEwOTQsNiBAQAogCQkJfTsK
IAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQk1REM4MkE2NzEwMjNDOERFMDBGRDFEM0Ig
LyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxk
U2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIkR1bXBSZW5kZXJUcmVlIFBlcmwgU3Vw
cG9ydCI7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQk1REM4MkE2ODEwMjNDOERF
MDBGRDFEM0IgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAiRHVtcFJlbmRlclRy
ZWUgUGVybCBTdXBwb3J0IjsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNURD
ODJBNjkxMDIzQzhERTAwRkQxRDNCIC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1F
ID0gIkR1bXBSZW5kZXJUcmVlIFBlcmwgU3VwcG9ydCI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1
Y3Rpb247Ci0JCX07CiAJCTkwQ0JDMzUwMEY3NDhCMTMwMEE3MTJCNyAvKiBQcm9kdWN0aW9uICov
ID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDQjI4MUVFMENGQTcxM0QwMDdFNTMzRSAvKiBCYXNlLnhjY29uZmlnICov
OwpAQCAtMTI5NiwxNiArMTIzMSw2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9Owot
CQk1REM4MkE2RTEwMjNDOTJBMDBGRDFEM0IgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhMZWdhY3lUYXJnZXQgIkR1bXBSZW5kZXJUcmVlIFBlcmwgU3VwcG9ydCIgKi8gPSB7Ci0J
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
LQkJCQk1REM4MkE2NzEwMjNDOERFMDBGRDFEM0IgLyogRGVidWcgKi8sCi0JCQkJNURDODJBNjgx
MDIzQzhERTAwRkQxRDNCIC8qIFJlbGVhc2UgKi8sCi0JCQkJNURDODJBNjkxMDIzQzhERTAwRkQx
RDNCIC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKLQkJ
fTsKIAkJQTg0RjYwOTIwOEIxMzcxNDAwRTk3NDVGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvUGVybFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmMg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGVybFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZGZiNjA1OGI1M2EzYTZlNTIw
MWU5MmY1MzNkNWM1YzY2YzhiMTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BlcmxTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5jCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0KLWludCBwcm9jZXNzSXNDcmFzaGluZyhpbnQgcGlk
KQotewotICAgIGludCBtaWJbNF0gPSB7IENUTF9LRVJOLCBLRVJOX1BST0MsIEtFUk5fUFJPQ19Q
SUQsIHBpZCB9OwotICAgIHN0cnVjdCBraW5mb19wcm9jIGluZm87Ci0gICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBzaXplb2YoaW5mbyk7Ci0gICAgaWYgKHN5c2N0bChtaWIsIHNpemVvZihtaWIpIC8g
c2l6ZW9mKG1pYlswXSksICZpbmZvLCAmYnVmZmVyU2l6ZSwgMCwgMCkpIHsKLSAgICAgICAgcGVy
cm9yKCJzeXNjdGwiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RydWN0IGV4
dGVybl9wcm9jIHByb2MgPSBpbmZvLmtwX3Byb2M7Ci0KLSAgICAvLyBUaGUgcHJvY2VzcyBpcyBj
cmFzaGluZyBpZiBpdCBpcyB3YWl0aW5nIHRvIGV4aXQsIGlzIG5vdCBhIHpvbWJpZSwgYW5kIGhh
cyBhIG5vbi16ZXJvIGV4aXQgY29kZS4KLSAgICByZXR1cm4gcHJvYy5wX3N0YXQgIT0gU1pPTUIg
JiYgKHByb2MucF9mbGFnICYgUF9XRVhJVCkgJiYgcHJvYy5wX3hzdGF0OwotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BlcmxTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFByZWdlbmVyYXRlZC5wbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRQcmVnZW5lcmF0ZWQucG0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdiNGVhMzRlNTdmMjc1NzY0NGIxYjY1YzQyNDc5YzMxNDZmNjNiODYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1BlcmxTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFByZWdlbmVyYXRl
ZC5wbQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLSMgVGhpcyBmaWxlIHdhcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBieSBTV0lHCi1wYWNrYWdlIER1bXBSZW5kZXJUcmVlU3VwcG9y
dDsKLXJlcXVpcmUgRXhwb3J0ZXI7Ci1yZXF1aXJlIER5bmFMb2FkZXI7Ci1ASVNBID0gcXcoRXhw
b3J0ZXIgRHluYUxvYWRlcik7Ci1wYWNrYWdlIER1bXBSZW5kZXJUcmVlU3VwcG9ydGM7Ci1ib290
c3RyYXAgRHVtcFJlbmRlclRyZWVTdXBwb3J0OwotcGFja2FnZSBEdW1wUmVuZGVyVHJlZVN1cHBv
cnQ7Ci1ARVhQT1JUID0gcXcoICk7Ci0KLSMgLS0tLS0tLS0tLSBCQVNFIE1FVEhPRFMgLS0tLS0t
LS0tLS0tLQotCi1wYWNrYWdlIER1bXBSZW5kZXJUcmVlU3VwcG9ydDsKLQotc3ViIFRJRUhBU0gg
ewotICAgIG15ICgkY2xhc3NuYW1lLCRvYmopID0gQF87Ci0gICAgcmV0dXJuIGJsZXNzICRvYmos
ICRjbGFzc25hbWU7Ci19Ci0KLXN1YiBDTEVBUiB7IH0KLQotc3ViIEZJUlNUS0VZIHsgfQotCi1z
dWIgTkVYVEtFWSB7IH0KLQotc3ViIEZFVENIIHsKLSAgICBteSAoJHNlbGYsJGZpZWxkKSA9IEBf
OwotICAgIG15ICRtZW1iZXJfZnVuYyA9ICJzd2lnXyR7ZmllbGR9X2dldCI7Ci0gICAgJHNlbGYt
PiRtZW1iZXJfZnVuYygpOwotfQotCi1zdWIgU1RPUkUgewotICAgIG15ICgkc2VsZiwkZmllbGQs
JG5ld3ZhbCkgPSBAXzsKLSAgICBteSAkbWVtYmVyX2Z1bmMgPSAic3dpZ18ke2ZpZWxkfV9zZXQi
OwotICAgICRzZWxmLT4kbWVtYmVyX2Z1bmMoJG5ld3ZhbCk7Ci19Ci0KLXN1YiB0aGlzIHsKLSAg
ICBteSAkcHRyID0gc2hpZnQ7Ci0gICAgcmV0dXJuIHRpZWQoJSRwdHIpOwotfQotCi0KLSMgLS0t
LS0tLSBGVU5DVElPTiBXUkFQUEVSUyAtLS0tLS0tLQotCi1wYWNrYWdlIER1bXBSZW5kZXJUcmVl
U3VwcG9ydDsKLQotKnByb2Nlc3NJc0NyYXNoaW5nID0gKkR1bXBSZW5kZXJUcmVlU3VwcG9ydGM6
OnByb2Nlc3NJc0NyYXNoaW5nOwotCi0jIC0tLS0tLS0gVkFSSUFCTEUgU1RVQlMgLS0tLS0tLS0K
LQotcGFja2FnZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ7Ci0KLTE7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvUGVybFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0X3dy
YXBQcmVnZW5lcmF0ZWQuYyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRfd3JhcFByZWdlbmVyYXRlZC5jCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNzM0OTg5MzQyNzM2YzU4MDkyOWI0NDE4OTEyZGNjNTNlMjRlY2ZjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRfd3JhcFByZWdl
bmVyYXRlZC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTE2NyArMCwwIEBACi0vKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gKiBUaGlzIGZpbGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IFNX
SUcgKGh0dHA6Ly93d3cuc3dpZy5vcmcpLgotICogVmVyc2lvbiAxLjMuMjQKLSAqIAotICogVGhp
cyBmaWxlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBlYXNpbHkgcmVhZGFibGUgYW5kIGNvbnRhaW5z
IGEgbnVtYmVyIG9mIAotICogY29kaW5nIGNvbnZlbnRpb25zIGRlc2lnbmVkIHRvIGltcHJvdmUg
cG9ydGFiaWxpdHkgYW5kIGVmZmljaWVuY3kuIERvIG5vdCBtYWtlCi0gKiBjaGFuZ2VzIHRvIHRo
aXMgZmlsZSB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLS1tb2RpZnkgdGhlIFNX
SUcgCi0gKiBpbnRlcmZhY2UgZmlsZSBpbnN0ZWFkLiAKLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCi0KLQotI2lmbmRlZiBTV0lHX1RFTVBMQVRFX0RJU0FNQklHVUFUT1IKLSMgIGlmIGRlZmlu
ZWQoX19TVU5QUk9fQ0MpIAotIyAgICBkZWZpbmUgU1dJR19URU1QTEFURV9ESVNBTUJJR1VBVE9S
IHRlbXBsYXRlCi0jICBlbHNlCi0jICAgIGRlZmluZSBTV0lHX1RFTVBMQVRFX0RJU0FNQklHVUFU
T1IgCi0jICBlbmRpZgotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3dpZ3J1bi5zd2cK
LSAqCi0gKiAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIGdlbmVyaWMgQ0FQSSBTV0lHIHJ1bnRpbWUg
c3VwcG9ydCBmb3IgcG9pbnRlcgotICogICAgIHR5cGUgY2hlY2tpbmcuCi0gKgotICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KLQotLyogVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCB3aGVuIGVpdGhl
ciB0aGUgbGF5b3V0IG9mIHN3aWdfdHlwZV9pbmZvIGNoYW5nZXMsCi0gICBvciBmb3Igd2hhdGV2
ZXIgcmVhc29uLCB0aGUgcnVudGltZSBjaGFuZ2VzIGluY29tcGF0aWJseSAqLwotI2RlZmluZSBT
V0lHX1JVTlRJTUVfVkVSU0lPTiAiMSIKLQotLyogZGVmaW5lIFNXSUdfVFlQRV9UQUJMRV9OQU1F
IGFzICJTV0lHX1RZUEVfVEFCTEUiICovCi0jaWZkZWYgU1dJR19UWVBFX1RBQkxFCi0jZGVmaW5l
IFNXSUdfUVVPVEVfU1RSSU5HKHgpICN4Ci0jZGVmaW5lIFNXSUdfRVhQQU5EX0FORF9RVU9URV9T
VFJJTkcoeCkgU1dJR19RVU9URV9TVFJJTkcoeCkKLSNkZWZpbmUgU1dJR19UWVBFX1RBQkxFX05B
TUUgU1dJR19FWFBBTkRfQU5EX1FVT1RFX1NUUklORyhTV0lHX1RZUEVfVEFCTEUpCi0jZWxzZQot
I2RlZmluZSBTV0lHX1RZUEVfVEFCTEVfTkFNRQotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmcu
aD4KLQotI2lmbmRlZiBTV0lHSU5MSU5FCi0jaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgKGRl
ZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykpCi0jICBkZWZpbmUg
U1dJR0lOTElORSBpbmxpbmUKLSNlbHNlCi0jICBkZWZpbmUgU1dJR0lOTElORQotI2VuZGlmCi0j
ZW5kaWYKLQotLyoKLSAgWW91IGNhbiB1c2UgdGhlIFNXSUdSVU5USU1FIGFuZCBTV0lHUlVOVElN
RUlOTElORSBtYWNyb3MgZm9yCi0gIGNyZWF0aW5nIGEgc3RhdGljIG9yIGR5bmFtaWMgbGlicmFy
eSBmcm9tIHRoZSBzd2lnIHJ1bnRpbWUgY29kZS4KLSAgSW4gOTkuOSUgb2YgdGhlIGNhc2VzLCBz
d2lnIGp1c3QgbmVlZHMgdG8gZGVjbGFyZSB0aGVtIGFzICdzdGF0aWMnLgotICAKLSAgQnV0IG9u
bHkgZG8gdGhpcyBpZiBpcyBzdHJpY3RseSBuZWNlc3NhcnksIGllLCBpZiB5b3UgaGF2ZSBwcm9i
bGVtcwotICB3aXRoIHlvdXIgY29tcGlsZXIgb3Igc28uCi0qLwotI2lmbmRlZiBTV0lHUlVOVElN
RQotI2RlZmluZSBTV0lHUlVOVElNRSBzdGF0aWMKLSNlbmRpZgotI2lmbmRlZiBTV0lHUlVOVElN
RUlOTElORQotI2RlZmluZSBTV0lHUlVOVElNRUlOTElORSBTV0lHUlVOVElNRSBTV0lHSU5MSU5F
Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10
eXBlZGVmIHZvaWQgKigqc3dpZ19jb252ZXJ0ZXJfZnVuYykodm9pZCAqKTsKLXR5cGVkZWYgc3Ry
dWN0IHN3aWdfdHlwZV9pbmZvICooKnN3aWdfZHljYXN0X2Z1bmMpKHZvaWQgKiopOwotCi10eXBl
ZGVmIHN0cnVjdCBzd2lnX3R5cGVfaW5mbyB7Ci0gIGNvbnN0IGNoYXIgICAgICAgICAgICAgKm5h
bWU7Ci0gIHN3aWdfY29udmVydGVyX2Z1bmMgICAgIGNvbnZlcnRlcjsKLSAgY29uc3QgY2hhciAg
ICAgICAgICAgICAqc3RyOwotICB2b2lkICAgICAgICAgICAgICAgICAgICpjbGllbnRkYXRhOwot
ICBzd2lnX2R5Y2FzdF9mdW5jICAgICAgICBkY2FzdDsKLSAgc3RydWN0IHN3aWdfdHlwZV9pbmZv
ICAqbmV4dDsKLSAgc3RydWN0IHN3aWdfdHlwZV9pbmZvICAqcHJldjsKLX0gc3dpZ190eXBlX2lu
Zm87Ci0KLS8qIAotICBDb21wYXJlIHR3byB0eXBlIG5hbWVzIHNraXBwaW5nIHRoZSBzcGFjZSBj
aGFyYWN0ZXJzLCB0aGVyZWZvcmUKLSAgImNoYXIqIiA9PSAiY2hhciAqIiBhbmQgIkNsYXNzPGlu
dD4iID09ICJDbGFzczxpbnQgPiIsIGV0Yy4KLQotICBSZXR1cm4gMCB3aGVuIHRoZSB0d28gbmFt
ZSB0eXBlcyBhcmUgZXF1aXZhbGVudCwgYXMgaW4KLSAgc3RybmNtcCwgYnV0IHNraXBwaW5nICcg
Jy4KLSovCi1TV0lHUlVOVElNRSBpbnQKLVNXSUdfVHlwZU5hbWVDb21wKGNvbnN0IGNoYXIgKmYx
LCBjb25zdCBjaGFyICpsMSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmYyLCBjb25z
dCBjaGFyICpsMikgewotICBmb3IgKDsoZjEgIT0gbDEpICYmIChmMiAhPSBsMik7ICsrZjEsICsr
ZjIpIHsKLSAgICB3aGlsZSAoKCpmMSA9PSAnICcpICYmIChmMSAhPSBsMSkpICsrZjE7Ci0gICAg
d2hpbGUgKCgqZjIgPT0gJyAnKSAmJiAoZjIgIT0gbDIpKSArK2YyOwotICAgIGlmICgqZjEgIT0g
KmYyKSByZXR1cm4gKmYxIC0gKmYyOwotICB9Ci0gIHJldHVybiAobDEgLSBmMSkgLSAobDIgLSBm
Mik7Ci19Ci0KLS8qCi0gIENoZWNrIHR5cGUgZXF1aXZhbGVuY2UgaW4gYSBuYW1lIGxpc3QgbGlr
ZSA8bmFtZTE+fDxuYW1lMj58Li4uCi0qLwotU1dJR1JVTlRJTUUgaW50Ci1TV0lHX1R5cGVFcXVp
dihjb25zdCBjaGFyICpuYiwgY29uc3QgY2hhciAqdGIpIHsKLSAgaW50IGVxdWl2ID0gMDsKLSAg
Y29uc3QgY2hhciogdGUgPSB0YiArIHN0cmxlbih0Yik7Ci0gIGNvbnN0IGNoYXIqIG5lID0gbmI7
Ci0gIHdoaWxlICghZXF1aXYgJiYgKm5lKSB7Ci0gICAgZm9yIChuYiA9IG5lOyAqbmU7ICsrbmUp
IHsKLSAgICAgIGlmICgqbmUgPT0gJ3wnKSBicmVhazsKLSAgICB9Ci0gICAgZXF1aXYgPSBTV0lH
X1R5cGVOYW1lQ29tcChuYiwgbmUsIHRiLCB0ZSkgPT0gMDsKLSAgICBpZiAoKm5lKSArK25lOwot
ICB9Ci0gIHJldHVybiBlcXVpdjsKLX0KLQotLyoKLSAgUmVnaXN0ZXIgYSB0eXBlIG1hcHBpbmcg
d2l0aCB0aGUgdHlwZS1jaGVja2luZwotKi8KLVNXSUdSVU5USU1FIHN3aWdfdHlwZV9pbmZvICoK
LVNXSUdfVHlwZVJlZ2lzdGVyVEwoc3dpZ190eXBlX2luZm8gKip0bCwgc3dpZ190eXBlX2luZm8g
KnRpKSB7Ci0gIHN3aWdfdHlwZV9pbmZvICp0YywgKmhlYWQsICpyZXQsICpuZXh0OwotICAvKiBD
aGVjayB0byBzZWUgaWYgdGhpcyB0eXBlIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCAqLwot
ICB0YyA9ICp0bDsKLSAgd2hpbGUgKHRjKSB7Ci0gICAgLyogY2hlY2sgc2ltcGxlIHR5cGUgZXF1
aXZhbGVuY2UgKi8KLSAgICBpbnQgdHlwZWVxdWl2ID0gKHN0cmNtcCh0Yy0+bmFtZSwgdGktPm5h
bWUpID09IDApOyAgIAotICAgIC8qIGNoZWNrIGZ1bGwgdHlwZSBlcXVpdmFsZW5jZSwgcmVzb2x2
aW5nIHR5cGVkZWZzICovCi0gICAgaWYgKCF0eXBlZXF1aXYpIHsKLSAgICAgIC8qIG9ubHkgaWYg
dGMgaXMgbm90IGEgdHlwZWRlZiAobm8gJ3wnIG9uIGl0KSAqLwotICAgICAgaWYgKHRjLT5zdHIg
JiYgdGktPnN0ciAmJiAhc3Ryc3RyKHRjLT5zdHIsInwiKSkgewotICAgICAgICB0eXBlZXF1aXYg
PSBTV0lHX1R5cGVFcXVpdih0aS0+c3RyLHRjLT5zdHIpOwotICAgICAgfQotICAgIH0KLSAgICBp
ZiAodHlwZWVxdWl2KSB7Ci0gICAgICAvKiBBbHJlYWR5IGV4aXN0cyBpbiB0aGUgdGFibGUuICBK
dXN0IGFkZCBhZGRpdGlvbmFsIHR5cGVzIHRvIHRoZSBsaXN0ICovCi0gICAgICBpZiAodGktPmNs
aWVudGRhdGEpIHRjLT5jbGllbnRkYXRhID0gdGktPmNsaWVudGRhdGE7Ci0gICAgICBoZWFkID0g
dGM7Ci0gICAgICBuZXh0ID0gdGMtPm5leHQ7Ci0gICAgICBnb3RvIGwxOwotICAgIH0KLSAgICB0
YyA9IHRjLT5wcmV2OwotICB9Ci0gIGhlYWQgPSB0aTsKLSAgbmV4dCA9IDA7Ci0KLSAgLyogUGxh
Y2UgaW4gbGlzdCAqLwotICB0aS0+cHJldiA9ICp0bDsKLSAgKnRsID0gdGk7Ci0KLSAgLyogQnVp
bGQgbGlua2VkIGxpc3RzICovCi0gIGwxOgotICByZXQgPSBoZWFkOwotICB0YyA9IHRpICsgMTsK
LSAgLyogUGF0Y2ggdXAgdGhlIHJlc3Qgb2YgdGhlIGxpbmtzICovCi0gIHdoaWxlICh0Yy0+bmFt
ZSkgewotICAgIGhlYWQtPm5leHQgPSB0YzsKLSAgICB0Yy0+cHJldiA9IGhlYWQ7Ci0gICAgaGVh
ZCA9IHRjOwotICAgIHRjKys7Ci0gIH0KLSAgaWYgKG5leHQpIG5leHQtPnByZXYgPSBoZWFkOwot
ICBoZWFkLT5uZXh0ID0gbmV4dDsKLQotICByZXR1cm4gcmV0OwotfQotCi0vKgotICBDaGVjayB0
aGUgdHlwZW5hbWUKLSovCi1TV0lHUlVOVElNRSBzd2lnX3R5cGVfaW5mbyAqCi1TV0lHX1R5cGVD
aGVjayhjb25zdCBjaGFyICpjLCBzd2lnX3R5cGVfaW5mbyAqdHkpIHsKLSAgc3dpZ190eXBlX2lu
Zm8gKnM7Ci0gIGlmICghdHkpIHJldHVybiAwOyAgICAgICAgLyogVm9pZCBwb2ludGVyICovCi0g
IHMgPSB0eS0+bmV4dDsgICAgICAgICAgICAgLyogRmlyc3QgZWxlbWVudCBhbHdheXMganVzdCBh
IG5hbWUgKi8KLSAgZG8gewotICAgIGlmIChzdHJjbXAocy0+bmFtZSxjKSA9PSAwKSB7Ci0gICAg
ICBpZiAocyA9PSB0eS0+bmV4dCkgcmV0dXJuIHM7Ci0gICAgICAvKiBNb3ZlIHMgdG8gdGhlIHRv
cCBvZiB0aGUgbGlua2VkIGxpc3QgKi8KLSAgICAgIHMtPnByZXYtPm5leHQgPSBzLT5uZXh0Owot
ICAgICAgaWYgKHMtPm5leHQpIHsKLSAgICAgICAgcy0+bmV4dC0+cHJldiA9IHMtPnByZXY7Ci0g
ICAgICB9Ci0gICAgICAvKiBJbnNlcnQgcyBhcyBzZWNvbmQgZWxlbWVudCBpbiB0aGUgbGlzdCAq
LwotICAgICAgcy0+bmV4dCA9IHR5LT5uZXh0OwotICAgICAgaWYgKHR5LT5uZXh0KSB0eS0+bmV4
dC0+cHJldiA9IHM7Ci0gICAgICB0eS0+bmV4dCA9IHM7Ci0gICAgICBzLT5wcmV2ID0gdHk7Ci0g
ICAgICByZXR1cm4gczsKLSAgICB9Ci0gICAgcyA9IHMtPm5leHQ7Ci0gIH0gd2hpbGUgKHMgJiYg
KHMgIT0gdHktPm5leHQpKTsKLSAgcmV0dXJuIDA7Ci19Ci0KLS8qCi0gIENhc3QgYSBwb2ludGVy
IHVwIGFuIGluaGVyaXRhbmNlIGhpZXJhcmNoeQotKi8KLVNXSUdSVU5USU1FSU5MSU5FIHZvaWQg
KgotU1dJR19UeXBlQ2FzdChzd2lnX3R5cGVfaW5mbyAqdHksIHZvaWQgKnB0cikgewotICByZXR1
cm4gKCghdHkpIHx8ICghdHktPmNvbnZlcnRlcikpID8gcHRyIDogKCp0eS0+Y29udmVydGVyKShw
dHIpOwotfQotCi0vKiAKLSAgIER5bmFtaWMgcG9pbnRlciBjYXN0aW5nLiBEb3duIGFuIGluaGVy
aXRhbmNlIGhpZXJhcmNoeQotKi8KLVNXSUdSVU5USU1FIHN3aWdfdHlwZV9pbmZvICoKLVNXSUdf
VHlwZUR5bmFtaWNDYXN0KHN3aWdfdHlwZV9pbmZvICp0eSwgdm9pZCAqKnB0cikgewotICBzd2ln
X3R5cGVfaW5mbyAqbGFzdHR5ID0gdHk7Ci0gIGlmICghdHkgfHwgIXR5LT5kY2FzdCkgcmV0dXJu
IHR5OwotICB3aGlsZSAodHkgJiYgKHR5LT5kY2FzdCkpIHsKLSAgICB0eSA9ICgqdHktPmRjYXN0
KShwdHIpOwotICAgIGlmICh0eSkgbGFzdHR5ID0gdHk7Ci0gIH0KLSAgcmV0dXJuIGxhc3R0eTsK
LX0KLQotLyoKLSAgUmV0dXJuIHRoZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHR5cGUKLSov
Ci1TV0lHUlVOVElNRUlOTElORSBjb25zdCBjaGFyICoKLVNXSUdfVHlwZU5hbWUoY29uc3Qgc3dp
Z190eXBlX2luZm8gKnR5KSB7Ci0gIHJldHVybiB0eS0+bmFtZTsKLX0KLQotLyoKLSAgUmV0dXJu
IHRoZSBwcmV0dHkgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhpcyB0eXBlLAotICB0aGF0IGlzIGFu
IHVubWFuZ2xlZCB0eXBlIG5hbWUgaW4gYSBmb3JtIHByZXNlbnRhYmxlIHRvIHRoZSB1c2VyLgot
Ki8KLVNXSUdSVU5USU1FIGNvbnN0IGNoYXIgKgotU1dJR19UeXBlUHJldHR5TmFtZShjb25zdCBz
d2lnX3R5cGVfaW5mbyAqdHlwZSkgewotICAvKiBUaGUgInN0ciIgZmllbGQgY29udGFpbnMgdGhl
IGVxdWl2YWxlbnQgcHJldHR5IG5hbWVzIG9mIHRoZQotICAgICB0eXBlLCBzZXBhcmF0ZWQgYnkg
dmVydGljYWwtYmFyIGNoYXJhY3RlcnMuICBXZSBjaG9vc2UKLSAgICAgdG8gcHJpbnQgdGhlIGxh
c3QgbmFtZSwgYXMgaXQgaXMgb2Z0ZW4gKD8pIHRoZSBtb3N0Ci0gICAgIHNwZWNpZmljLiAqLwot
ICBpZiAodHlwZS0+c3RyICE9IE5VTEwpIHsKLSAgICBjb25zdCBjaGFyICpsYXN0X25hbWUgPSB0
eXBlLT5zdHI7Ci0gICAgY29uc3QgY2hhciAqczsKLSAgICBmb3IgKHMgPSB0eXBlLT5zdHI7ICpz
OyBzKyspCi0gICAgICBpZiAoKnMgPT0gJ3wnKSBsYXN0X25hbWUgPSBzKzE7Ci0gICAgcmV0dXJu
IGxhc3RfbmFtZTsKLSAgfQotICBlbHNlCi0gICAgcmV0dXJuIHR5cGUtPm5hbWU7Ci19Ci0KLS8q
Ci0gIFNlYXJjaCBmb3IgYSBzd2lnX3R5cGVfaW5mbyBzdHJ1Y3R1cmUKLSovCi1TV0lHUlVOVElN
RSBzd2lnX3R5cGVfaW5mbyAqCi1TV0lHX1R5cGVRdWVyeVRMKHN3aWdfdHlwZV9pbmZvICp0bCwg
Y29uc3QgY2hhciAqbmFtZSkgewotICBzd2lnX3R5cGVfaW5mbyAqdHkgPSB0bDsKLSAgd2hpbGUg
KHR5KSB7Ci0gICAgaWYgKHR5LT5zdHIgJiYgKFNXSUdfVHlwZUVxdWl2KHR5LT5zdHIsbmFtZSkp
KSByZXR1cm4gdHk7Ci0gICAgaWYgKHR5LT5uYW1lICYmIChzdHJjbXAobmFtZSx0eS0+bmFtZSkg
PT0gMCkpIHJldHVybiB0eTsKLSAgICB0eSA9IHR5LT5wcmV2OwotICB9Ci0gIHJldHVybiAwOwot
fQotCi0vKiAKLSAgIFNldCB0aGUgY2xpZW50ZGF0YSBmaWVsZCBmb3IgYSB0eXBlCi0qLwotU1dJ
R1JVTlRJTUUgdm9pZAotU1dJR19UeXBlQ2xpZW50RGF0YVRMKHN3aWdfdHlwZV9pbmZvICp0bCwg
c3dpZ190eXBlX2luZm8gKnRpLCB2b2lkICpjbGllbnRkYXRhKSB7Ci0gIHN3aWdfdHlwZV9pbmZv
ICp0YywgKmVxdWl2OwotICBpZiAodGktPmNsaWVudGRhdGEpIHJldHVybjsKLSAgLyogaWYgKHRp
LT5jbGllbnRkYXRhID09IGNsaWVudGRhdGEpIHJldHVybjsgKi8KLSAgdGktPmNsaWVudGRhdGEg
PSBjbGllbnRkYXRhOwotICBlcXVpdiA9IHRpLT5uZXh0OwotICB3aGlsZSAoZXF1aXYpIHsKLSAg
ICBpZiAoIWVxdWl2LT5jb252ZXJ0ZXIpIHsKLSAgICAgIHRjID0gdGw7Ci0gICAgICB3aGlsZSAo
dGMpIHsKLSAgICAgICAgaWYgKChzdHJjbXAodGMtPm5hbWUsIGVxdWl2LT5uYW1lKSA9PSAwKSkK
LSAgICAgICAgICBTV0lHX1R5cGVDbGllbnREYXRhVEwodGwsdGMsY2xpZW50ZGF0YSk7Ci0gICAg
ICAgIHRjID0gdGMtPnByZXY7Ci0gICAgICB9Ci0gICAgfQotICAgIGVxdWl2ID0gZXF1aXYtPm5l
eHQ7Ci0gIH0KLX0KLQotLyogCi0gICBQYWNrIGJpbmFyeSBkYXRhIGludG8gYSBzdHJpbmcKLSov
Ci1TV0lHUlVOVElNRSBjaGFyICoKLVNXSUdfUGFja0RhdGEoY2hhciAqYywgdm9pZCAqcHRyLCBz
aXplX3Qgc3opIHsKLSAgc3RhdGljIGNoYXIgaGV4WzE3XSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsK
LSAgdW5zaWduZWQgY2hhciAqdSA9ICh1bnNpZ25lZCBjaGFyICopIHB0cjsKLSAgY29uc3QgdW5z
aWduZWQgY2hhciAqZXUgPSAgdSArIHN6OwotICByZWdpc3RlciB1bnNpZ25lZCBjaGFyIHV1Owot
ICBmb3IgKDsgdSAhPSBldTsgKyt1KSB7Ci0gICAgdXUgPSAqdTsKLSAgICAqKGMrKykgPSBoZXhb
KHV1ICYgMHhmMCkgPj4gNF07Ci0gICAgKihjKyspID0gaGV4W3V1ICYgMHhmXTsKLSAgfQotICBy
ZXR1cm4gYzsKLX0KLQotLyogCi0gICBVbnBhY2sgYmluYXJ5IGRhdGEgZnJvbSBhIHN0cmluZwot
Ki8KLVNXSUdSVU5USU1FIGNvbnN0IGNoYXIgKgotU1dJR19VbnBhY2tEYXRhKGNvbnN0IGNoYXIg
KmMsIHZvaWQgKnB0ciwgc2l6ZV90IHN6KSB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnUg
PSAodW5zaWduZWQgY2hhciAqKSBwdHI7Ci0gIHJlZ2lzdGVyIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmV1ID0gIHUgKyBzejsKLSAgZm9yICg7IHUgIT0gZXU7ICsrdSkgewotICAgIHJlZ2lzdGVyIGlu
dCBkID0gKihjKyspOwotICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgdXUgPSAwOwotICAgIGlm
ICgoZCA+PSAnMCcpICYmIChkIDw9ICc5JykpCi0gICAgICB1dSA9ICgoZCAtICcwJykgPDwgNCk7
Ci0gICAgZWxzZSBpZiAoKGQgPj0gJ2EnKSAmJiAoZCA8PSAnZicpKQotICAgICAgdXUgPSAoKGQg
LSAoJ2EnLTEwKSkgPDwgNCk7Ci0gICAgZWxzZSAKLSAgICAgIHJldHVybiAoY2hhciAqKSAwOwot
ICAgIGQgPSAqKGMrKyk7Ci0gICAgaWYgKChkID49ICcwJykgJiYgKGQgPD0gJzknKSkKLSAgICAg
IHV1IHw9IChkIC0gJzAnKTsKLSAgICBlbHNlIGlmICgoZCA+PSAnYScpICYmIChkIDw9ICdmJykp
Ci0gICAgICB1dSB8PSAoZCAtICgnYSctMTApKTsKLSAgICBlbHNlIAotICAgICAgcmV0dXJuIChj
aGFyICopIDA7Ci0gICAgKnUgPSB1dTsKLSAgfQotICByZXR1cm4gYzsKLX0KLQotLyoKLSAgVGhp
cyBmdW5jdGlvbiB3aWxsIHByb3BhZ2F0ZSB0aGUgY2xpZW50ZGF0YSBmaWVsZCBvZiB0eXBlIHRv
IGFueSBuZXcKLSAgc3dpZ190eXBlX2luZm8gc3RydWN0dXJlcyB0aGF0IGhhdmUgYmVlbiBhZGRl
ZCBpbnRvIHRoZSBsaXN0IG9mCi0gIGVxdWl2YWxlbnQgdHlwZXMuICBJdCBpcyBsaWtlIGNhbGxp
bmcgU1dJR19UeXBlQ2xpZW50RGF0YSh0eXBlLAotICBjbGllbnRkYXRhKSBhIHNlY29uZCB0aW1l
LgotKi8KLVNXSUdSVU5USU1FIHZvaWQKLVNXSUdfUHJvcGFnYXRlQ2xpZW50RGF0YVRMKHN3aWdf
dHlwZV9pbmZvICp0bCwgc3dpZ190eXBlX2luZm8gKnR5cGUpIHsKLSAgc3dpZ190eXBlX2luZm8g
KmVxdWl2ID0gdHlwZS0+bmV4dDsKLSAgc3dpZ190eXBlX2luZm8gKnRjOwotICBpZiAoIXR5cGUt
PmNsaWVudGRhdGEpIHJldHVybjsKLSAgd2hpbGUgKGVxdWl2KSB7Ci0gICAgaWYgKCFlcXVpdi0+
Y29udmVydGVyKSB7Ci0gICAgICB0YyA9IHRsOwotICAgICAgd2hpbGUgKHRjKSB7Ci0gICAgICAg
IGlmICgoc3RyY21wKHRjLT5uYW1lLCBlcXVpdi0+bmFtZSkgPT0gMCkgJiYgIXRjLT5jbGllbnRk
YXRhKQotICAgICAgICAgIFNXSUdfVHlwZUNsaWVudERhdGFUTCh0bCx0YywgdHlwZS0+Y2xpZW50
ZGF0YSk7Ci0gICAgICAgIHRjID0gdGMtPnByZXY7Ci0gICAgICB9Ci0gICAgfQotICAgIGVxdWl2
ID0gZXF1aXYtPm5leHQ7Ci0gIH0KLX0KLQotLyogCi0gICBQYWNrICd2b2lkIConIGludG8gYSBz
dHJpbmcgYnVmZmVyLgotKi8KLVNXSUdSVU5USU1FIGNoYXIgKgotU1dJR19QYWNrVm9pZFB0cihj
aGFyICpidWZmLCB2b2lkICpwdHIsIGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBic3opIHsKLSAg
Y2hhciAqciA9IGJ1ZmY7Ci0gIGlmICgoMipzaXplb2Yodm9pZCAqKSArIDIpID4gYnN6KSByZXR1
cm4gMDsKLSAgKihyKyspID0gJ18nOwotICByID0gU1dJR19QYWNrRGF0YShyLCZwdHIsc2l6ZW9m
KHZvaWQgKikpOwotICBpZiAoc3RybGVuKG5hbWUpICsgMSA+IChic3ogLSAociAtIGJ1ZmYpKSkg
cmV0dXJuIDA7Ci0gIHN0cmNweShyLG5hbWUpOwotICByZXR1cm4gYnVmZjsKLX0KLQotU1dJR1JV
TlRJTUUgY29uc3QgY2hhciAqCi1TV0lHX1VucGFja1ZvaWRQdHIoY29uc3QgY2hhciAqYywgdm9p
ZCAqKnB0ciwgY29uc3QgY2hhciAqbmFtZSkgewotICBpZiAoKmMgIT0gJ18nKSB7Ci0gICAgaWYg
KHN0cmNtcChjLCJOVUxMIikgPT0gMCkgewotICAgICAgKnB0ciA9ICh2b2lkICopIDA7Ci0gICAg
ICByZXR1cm4gbmFtZTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICB9
Ci0gIHJldHVybiBTV0lHX1VucGFja0RhdGEoKytjLHB0cixzaXplb2Yodm9pZCAqKSk7Ci19Ci0K
LVNXSUdSVU5USU1FIGNoYXIgKgotU1dJR19QYWNrRGF0YU5hbWUoY2hhciAqYnVmZiwgdm9pZCAq
cHRyLCBzaXplX3Qgc3osIGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBic3opIHsKLSAgY2hhciAq
ciA9IGJ1ZmY7Ci0gIHNpemVfdCBsbmFtZSA9IChuYW1lID8gc3RybGVuKG5hbWUpIDogMCk7Ci0g
IGlmICgoMipzeiArIDIgKyBsbmFtZSkgPiBic3opIHJldHVybiAwOwotICAqKHIrKykgPSAnXyc7
Ci0gIHIgPSBTV0lHX1BhY2tEYXRhKHIscHRyLHN6KTsKLSAgaWYgKGxuYW1lKSB7Ci0gICAgc3Ry
bmNweShyLG5hbWUsbG5hbWUrMSk7Ci0gIH0gZWxzZSB7Ci0gICAgKnIgPSAwOwotICB9Ci0gIHJl
dHVybiBidWZmOwotfQotCi1TV0lHUlVOVElNRSBjb25zdCBjaGFyICoKLVNXSUdfVW5wYWNrRGF0
YU5hbWUoY29uc3QgY2hhciAqYywgdm9pZCAqcHRyLCBzaXplX3Qgc3osIGNvbnN0IGNoYXIgKm5h
bWUpIHsKLSAgaWYgKCpjICE9ICdfJykgewotICAgIGlmIChzdHJjbXAoYywiTlVMTCIpID09IDAp
IHsKLSAgICAgIG1lbXNldChwdHIsMCxzeik7Ci0gICAgICByZXR1cm4gbmFtZTsKLSAgICB9IGVs
c2UgewotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICB9Ci0gIHJldHVybiBTV0lHX1VucGFja0Rh
dGEoKytjLHB0cixzeik7Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLS8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgotICogY29tbW9uLnN3ZwotICoKLSAqICAgICBUaGlzIGZpbGUgY29udGFp
bnMgZ2VuZXJpYyBTV0lHIHJ1bnRpbWUgc3VwcG9ydCBmb3IgcG9pbnRlcgotICogICAgIHR5cGUg
Y2hlY2tpbmcgYXMgd2VsbCBhcyBhIGZldyBjb21tb25seSB1c2VkIG1hY3JvcyB0byBjb250cm9s
Ci0gKiAgICAgZXh0ZXJuYWwgbGlua2FnZS4KLSAqCi0gKiBBdXRob3IgOiBEYXZpZCBCZWF6bGV5
IChiZWF6bGV5QGNzLnVjaGljYWdvLmVkdSkKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAw
MCwgVGhlIFVuaXZlcnNpdHkgb2YgQ2hpY2FnbwotICogCi0gKiBUaGlzIGZpbGUgbWF5IGJlIGZy
ZWVseSByZWRpc3RyaWJ1dGVkIHdpdGhvdXQgbGljZW5zZSBvciBmZWUgcHJvdmlkZWQKLSAqIHRo
aXMgY29weXJpZ2h0IG1lc3NhZ2UgcmVtYWlucyBpbnRhY3QuCi0gKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot
Ci0KLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQo
X19DWUdXSU5fXykKLSMgIGlmICFkZWZpbmVkKFNUQVRJQ19MSU5LRUQpCi0jICAgIGRlZmluZSBT
V0lHRVhQT1JUKGEpIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBhCi0jICBlbHNlCi0jICAgIGRlZmlu
ZSBTV0lHRVhQT1JUKGEpIGEKLSMgIGVuZGlmCi0jZWxzZQotIyAgZGVmaW5lIFNXSUdFWFBPUlQo
YSkgYQotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYK
LQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KLQotCi0vKiBUaGUgc3RhdGljIHR5cGUgaW5mbyBsaXN0
ICovCi0KLXN0YXRpYyBzd2lnX3R5cGVfaW5mbyAqc3dpZ190eXBlX2xpc3QgPSAwOwotc3RhdGlj
IHN3aWdfdHlwZV9pbmZvICoqc3dpZ190eXBlX2xpc3RfaGFuZGxlID0gJnN3aWdfdHlwZV9saXN0
OwotICAKLQotLyogUmVnaXN0ZXIgYSB0eXBlIG1hcHBpbmcgd2l0aCB0aGUgdHlwZS1jaGVja2lu
ZyAqLwotc3RhdGljIHN3aWdfdHlwZV9pbmZvICoKLVNXSUdfVHlwZVJlZ2lzdGVyKHN3aWdfdHlw
ZV9pbmZvICp0aSkgewotICByZXR1cm4gU1dJR19UeXBlUmVnaXN0ZXJUTChzd2lnX3R5cGVfbGlz
dF9oYW5kbGUsIHRpKTsKLX0KLQotLyogU2VhcmNoIGZvciBhIHN3aWdfdHlwZV9pbmZvIHN0cnVj
dHVyZSAqLwotc3RhdGljIHN3aWdfdHlwZV9pbmZvICoKLVNXSUdfVHlwZVF1ZXJ5KGNvbnN0IGNo
YXIgKm5hbWUpIHsKLSAgcmV0dXJuIFNXSUdfVHlwZVF1ZXJ5VEwoKnN3aWdfdHlwZV9saXN0X2hh
bmRsZSwgbmFtZSk7Ci19Ci0KLS8qIFNldCB0aGUgY2xpZW50ZGF0YSBmaWVsZCBmb3IgYSB0eXBl
ICovCi1zdGF0aWMgdm9pZAotU1dJR19UeXBlQ2xpZW50RGF0YShzd2lnX3R5cGVfaW5mbyAqdGks
IHZvaWQgKmNsaWVudGRhdGEpIHsKLSAgU1dJR19UeXBlQ2xpZW50RGF0YVRMKCpzd2lnX3R5cGVf
bGlzdF9oYW5kbGUsIHRpLCBjbGllbnRkYXRhKTsKLX0KLQotLyogVGhpcyBmdW5jdGlvbiB3aWxs
IHByb3BhZ2F0ZSB0aGUgY2xpZW50ZGF0YSBmaWVsZCBvZiB0eXBlIHRvCi0qIGFueSBuZXcgc3dp
Z190eXBlX2luZm8gc3RydWN0dXJlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBpbnRvIHRoZSBsaXN0
Ci0qIG9mIGVxdWl2YWxlbnQgdHlwZXMuICBJdCBpcyBsaWtlIGNhbGxpbmcKLSogU1dJR19UeXBl
Q2xpZW50RGF0YSh0eXBlLCBjbGllbnRkYXRhKSBhIHNlY29uZCB0aW1lLgotKi8KLXN0YXRpYyB2
b2lkCi1TV0lHX1Byb3BhZ2F0ZUNsaWVudERhdGEoc3dpZ190eXBlX2luZm8gKnR5cGUpIHsKLSAg
U1dJR19Qcm9wYWdhdGVDbGllbnREYXRhVEwoKnN3aWdfdHlwZV9saXN0X2hhbmRsZSwgdHlwZSk7
Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLS8qIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LSotIGMgLSotCi0gKiBwZXJsNS5zd2cKLSAqCi0gKiBQZXJsNSBydW50aW1lIGxpYnJhcnkKLSAq
ICRIZWFkZXI6IC9jdnNyb290L3N3aWcvU1dJRy9MaWIvcGVybDUvcGVybHJ1bi5zd2csdiAxLjIw
IDIwMDQvMTEvMjkgMjM6MTM6NTcgd3V6emViIEV4cCAkCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwotCi0jZGVmaW5lIFNXSUdQRVJMCi0jZGVmaW5lIFNXSUdQRVJMNQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi0vKiBOZWVkZWQgb24gc29tZSB3aW5kb3dzIG1hY2hpbmVzLS0tc2luY2UgTVMgcGxh
eXMgZnVubnkgZ2FtZXMgd2l0aCB0aGUgaGVhZGVyIGZpbGVzIHVuZGVyIEMrKyAqLwotI2luY2x1
ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLWV4dGVybiAiQyIgewotI2VuZGlmCi0j
aW5jbHVkZSAiRVhURVJOLmgiCi0jaW5jbHVkZSAicGVybC5oIgotI2luY2x1ZGUgIlhTVUIuaCIK
LQotLyogR2V0IHJpZCBvZiBmcmVlIGFuZCBtYWxsb2MgZGVmaW5lZCBieSBwZXJsICovCi0jdW5k
ZWYgZnJlZQotI3VuZGVmIG1hbGxvYwotCi0jaWZuZGVmIHBUSFhfCi0jZGVmaW5lIHBUSFhfCi0j
ZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5k
aWYKLQotLyogTWFjcm8gdG8gY2FsbCBhbiBYUyBmdW5jdGlvbiAqLwotCi0jaWZkZWYgUEVSTF9P
QkpFQ1QgCi0jICBkZWZpbmUgU1dJR19DQUxMWFMoX25hbWUpIF9uYW1lKGN2LHBQZXJsKSAKLSNl
bHNlIAotIyAgaWZuZGVmIE1VTFRJUExJQ0lUWSAKLSMgICAgZGVmaW5lIFNXSUdfQ0FMTFhTKF9u
YW1lKSBfbmFtZShjdikgCi0jICBlbHNlIAotIyAgICBkZWZpbmUgU1dJR19DQUxMWFMoX25hbWUp
IF9uYW1lKFBFUkxfR0VUX1RIWCwgY3YpIAotIyAgZW5kaWYgCi0jZW5kaWYgCi0KLS8qIENvbnRy
YWN0IHN1cHBvcnQgKi8KLQotI2RlZmluZSBTV0lHX2NvbnRyYWN0X2Fzc2VydChleHByLG1zZykg
aWYgKCEoZXhwcikpIHsgU1dJR19jcm9hayhtc2cpOyB9IGVsc2UKLQotLyogTm90ZTogU3dpZ01h
Z2ljRnVuY0hhY2sgaXMgYSB0eXBlZGVmIHVzZWQgdG8gZ2V0IHRoZSBDKysgY29tcGlsZXIgdG8g
anVzdCBzaHV0IHVwIGFscmVhZHkgKi8KLQotI2lmZGVmIFBFUkxfT0JKRUNUCi0jZGVmaW5lIE1B
R0lDX1BQRVJMICBDUGVybE9iaiAqcFBlcmwgPSAoQ1BlcmxPYmogKikgdGhpczsKLXR5cGVkZWYg
aW50IChDUGVybE9iajo6KlN3aWdNYWdpY0Z1bmMpKFNWICosIE1BR0lDICopOwotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi10eXBlZGVmIGludCAoQ1BlcmxPYmo6
OipTd2lnTWFnaWNGdW5jSGFjaykoU1YgKiwgTUFHSUMgKik7Ci0jaWZkZWYgX19jcGx1c3BsdXMK
LX0KLSNlbmRpZgotCi0jZGVmaW5lIFNXSUdfTUFHSUMoYSxiKSAoU1YgKmEsIE1BR0lDICpiKQot
I2RlZmluZSBTV0lHQ0xBU1NfU1RBVElDCi0jZWxzZQotI2RlZmluZSBNQUdJQ19QUEVSTAotI2Rl
ZmluZSBTV0lHQ0xBU1NfU1RBVElDIHN0YXRpYwotI2lmbmRlZiBNVUxUSVBMSUNJVFkKLSNkZWZp
bmUgU1dJR19NQUdJQyhhLGIpIChTViAqYSwgTUFHSUMgKmIpCi10eXBlZGVmIGludCAoKlN3aWdN
YWdpY0Z1bmMpKFNWICosIE1BR0lDICopOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi10eXBlZGVmIGludCAoKlN3aWdNYWdpY0Z1bmNIYWNrKShTViAqLCBNQUdJ
QyAqKTsKLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLQotI2Vsc2UKLSNkZWZpbmUg
U1dJR19NQUdJQyhhLGIpIChzdHJ1Y3QgaW50ZXJwcmV0ZXIgKmludGVycCwgU1YgKmEsIE1BR0lD
ICpiKQotdHlwZWRlZiBpbnQgKCpTd2lnTWFnaWNGdW5jKShzdHJ1Y3QgaW50ZXJwcmV0ZXIgKiwg
U1YgKiwgTUFHSUMgKik7Ci0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlm
Ci10eXBlZGVmIGludCAoKlN3aWdNYWdpY0Z1bmNIYWNrKShzdHJ1Y3QgaW50ZXJwcmV0ZXIgKiwg
U1YgKiwgTUFHSUMgKik7Ci0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYK
LSNlbmRpZgotCi0jaWYgZGVmaW5lZChXSU4zMikgJiYgZGVmaW5lZChQRVJMX09CSkVDVCkgJiYg
IWRlZmluZWQoUGVybElPX2V4cG9ydEZJTEUpCi0jZGVmaW5lIFBlcmxJT19leHBvcnRGSUxFKGZo
LGZsKSAoRklMRSopKGZoKQotI2VuZGlmCi0KLS8qIE1vZGlmaWNhdGlvbnMgZm9yIG5ld2VyIFBl
cmwgNS4wMDUgcmVsZWFzZXMgKi8KLQotI2lmICFkZWZpbmVkKFBFUkxfUkVWSVNJT04pIHx8ICgo
UEVSTF9SRVZJU0lPTiA+PSA1KSAmJiAoKFBFUkxfVkVSU0lPTiA8IDUpIHx8ICgoUEVSTF9WRVJT
SU9OID09IDUpICYmIChQRVJMX1NVQlZFUlNJT04gPCA1MCkpKSkKLSMgIGlmbmRlZiBQTF9zdl95
ZXMKLSMgICAgZGVmaW5lIFBMX3N2X3llcyBzdl95ZXMKLSMgIGVuZGlmCi0jICBpZm5kZWYgUExf
c3ZfdW5kZWYKLSMgICAgZGVmaW5lIFBMX3N2X3VuZGVmIHN2X3VuZGVmCi0jICBlbmRpZgotIyAg
aWZuZGVmIFBMX25hCi0jICAgIGRlZmluZSBQTF9uYSBuYQotIyAgZW5kaWYKLSNlbmRpZgotCi0j
aW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0j
ZW5kaWYKLQotI2RlZmluZSBTV0lHX09XTkVSIDEKLSNkZWZpbmUgU1dJR19TSEFET1cgMgotCi0v
KiBDb21tb24gU1dJRyBBUEkgKi8KLQotI2lmZGVmIFBFUkxfT0JKRUNUCi0jICBkZWZpbmUgU1dJ
R19Db252ZXJ0UHRyKG9iaiwgcHAsIHR5cGUsIGZsYWdzKSBcCi0gICAgIFNXSUdfUGVybF9Db252
ZXJ0UHRyKHBQZXJsLCBvYmosIHBwLCB0eXBlLCBmbGFncykKLSMgIGRlZmluZSBTV0lHX05ld1Bv
aW50ZXJPYmoocCwgdHlwZSwgZmxhZ3MpIFwKLSAgICAgU1dJR19QZXJsX05ld1BvaW50ZXJPYmoo
cFBlcmwsIHAsIHR5cGUsIGZsYWdzKQotIyAgZGVmaW5lIFNXSUdfTWFrZVBhY2tlZE9iaihzdiwg
cCwgcywgdHlwZSkgXAotICAgICBTV0lHX1BlcmxfTWFrZVBhY2tlZE9iaihwUGVybCwgc3YsIHAs
IHMsIHR5cGUpCi0jICBkZWZpbmUgU1dJR19Db252ZXJ0UGFja2VkKG9iaiwgcCwgcywgdHlwZSwg
ZmxhZ3MpIFwKLSAgICAgU1dJR19QZXJsX0NvbnZlcnRQYWNrZWQocFBlcmwsIG9iaiwgcCwgcywg
dHlwZSwgZmxhZ3MpCi0KLSNlbHNlCi0jICBkZWZpbmUgU1dJR19Db252ZXJ0UHRyKG9iaiwgcHAs
IHR5cGUsIGZsYWdzKSBcCi0gICAgIFNXSUdfUGVybF9Db252ZXJ0UHRyKG9iaiwgcHAsIHR5cGUs
IGZsYWdzKQotIyAgZGVmaW5lIFNXSUdfTmV3UG9pbnRlck9iaihwLCB0eXBlLCBmbGFncykgXAot
ICAgICBTV0lHX1BlcmxfTmV3UG9pbnRlck9iaihwLCB0eXBlLCBmbGFncykKLSMgIGRlZmluZSBT
V0lHX01ha2VQYWNrZWRPYmooc3YsIHAsIHMsIHR5cGUpIFwKLSAgICAgU1dJR19QZXJsX01ha2VQ
YWNrZWRPYmooc3YsIHAsIHMsIHR5cGUgKQotIyAgZGVmaW5lIFNXSUdfQ29udmVydFBhY2tlZChv
YmosIHAsIHMsIHR5cGUsIGZsYWdzKSBcCi0gICAgIFNXSUdfUGVybF9Db252ZXJ0UGFja2VkKG9i
aiwgcCwgcywgdHlwZSwgZmxhZ3MpCi0jZW5kaWYKLQotLyogUGVybC1zcGVjaWZpYyBBUEkgKi8K
LSNpZmRlZiBQRVJMX09CSkVDVAotIyAgZGVmaW5lIFNXSUdfTWFrZVB0cihzdiwgcHRyLCB0eXBl
LCBmbGFncykgXAotICAgICBTV0lHX1BlcmxfTWFrZVB0cihwUGVybCwgc3YsIHB0ciwgdHlwZSwg
ZmxhZ3MpCi0jICBkZWZpbmUgU1dJR19TZXRFcnJvcihzdHIpIFwKLSAgICAgU1dJR19QZXJsX1Nl
dEVycm9yKHBQZXJsLCBzdHIpCi0jZWxzZQotIyAgZGVmaW5lIFNXSUdfTWFrZVB0cihzdiwgcHRy
LCB0eXBlLCBmbGFncykgXAotICAgICBTV0lHX1BlcmxfTWFrZVB0cihzdiwgcHRyLCB0eXBlLCBm
bGFncykKLSMgIGRlZmluZSBTV0lHX1NldEVycm9yKHN0cikgXAotICAgICBTV0lHX1BlcmxfU2V0
RXJyb3Ioc3RyKQotIyAgZGVmaW5lIFNXSUdfU2V0RXJyb3JTVihzdHIpIFwKLSAgICAgU1dJR19Q
ZXJsX1NldEVycm9yU1Yoc3RyKQotI2VuZGlmCi0KLSNkZWZpbmUgU1dJR19TZXRFcnJvcmYgU1dJ
R19QZXJsX1NldEVycm9yZgotCi0KLSNpZmRlZiBQRVJMX09CSkVDVAotIyAgZGVmaW5lIFNXSUdf
TUFZQkVfUEVSTF9PQkpFQ1QgQ1BlcmxPYmogKnBQZXJsLAotI2Vsc2UKLSMgIGRlZmluZSBTV0lH
X01BWUJFX1BFUkxfT0JKRUNUCi0jZW5kaWYKLQotc3RhdGljIHN3aWdfdHlwZV9pbmZvICoqCi1T
V0lHX1BlcmxfR2V0VHlwZUxpc3RIYW5kbGUoKSB7Ci0gIHN0YXRpYyB2b2lkICp0eXBlX3BvaW50
ZXIgPSAodm9pZCAqKTA7Ci0gIFNWICpwb2ludGVyOwotCi0gIC8qIGZpcnN0IGNoZWNrIGlmIHBv
aW50ZXIgYWxyZWFkeSBjcmVhdGVkICovCi0gIGlmICghdHlwZV9wb2ludGVyKSB7Ci0gICAgcG9p
bnRlciA9IGdldF9zdigic3dpZ19ydW50aW1lX2RhdGE6OnR5cGVfcG9pbnRlciIgU1dJR19SVU5U
SU1FX1ZFUlNJT04gU1dJR19UWVBFX1RBQkxFX05BTUUsIEZBTFNFKTsKLSAgICBpZiAocG9pbnRl
ciAmJiBTdk9LKHBvaW50ZXIpKSB7Ci0gICAgICB0eXBlX3BvaW50ZXIgPSBJTlQyUFRSKHN3aWdf
dHlwZV9pbmZvICoqLCBTdklWKHBvaW50ZXIpKTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gKHN3
aWdfdHlwZV9pbmZvICoqKSB0eXBlX3BvaW50ZXI7Ci19Ci0KLS8qCi0gIFNlYXJjaCBmb3IgYSBz
d2lnX3R5cGVfaW5mbyBzdHJ1Y3R1cmUKLSAqLwotU1dJR1JVTlRJTUVJTkxJTkUgc3dpZ190eXBl
X2luZm8gKgotU1dJR19QZXJsX0dldFR5cGVMaXN0KCkgewotICBzd2lnX3R5cGVfaW5mbyAqKnRs
aCA9IFNXSUdfUGVybF9HZXRUeXBlTGlzdEhhbmRsZSgpOwotICByZXR1cm4gdGxoID8gKnRsaCA6
IChzd2lnX3R5cGVfaW5mbyopMDsKLX0KLQotI2RlZmluZSBTV0lHX1J1bnRpbWVfR2V0VHlwZUxp
c3QgU1dJR19QZXJsX0dldFR5cGVMaXN0IAotCi1zdGF0aWMgc3dpZ190eXBlX2luZm8gKgotU1dJ
R19QZXJsX1R5cGVDaGVja1JWKFNXSUdfTUFZQkVfUEVSTF9PQkpFQ1QgU1YgKnJ2LCBzd2lnX3R5
cGVfaW5mbyAqdHkpIHsKLSAgc3dpZ190eXBlX2luZm8gKnM7Ci0gIGlmICghdHkpIHJldHVybiAw
OyAgICAgICAgLyogVm9pZCBwb2ludGVyICovCi0gIHMgPSB0eS0+bmV4dDsgICAgICAgICAgICAg
LyogRmlyc3QgZWxlbWVudCBhbHdheXMganVzdCBhIG5hbWUgKi8KLSAgZG8gewotICAgIGlmIChz
dl9kZXJpdmVkX2Zyb20ocnYsIChjaGFyICopIHMtPm5hbWUpKSB7Ci0gICAgICBpZiAocyA9PSB0
eS0+bmV4dCkgcmV0dXJuIHM7Ci0gICAgICAvKiBNb3ZlIHMgdG8gdGhlIHRvcCBvZiB0aGUgbGlu
a2VkIGxpc3QgKi8KLSAgICAgIHMtPnByZXYtPm5leHQgPSBzLT5uZXh0OwotICAgICAgaWYgKHMt
Pm5leHQpIHsKLSAgICAgICAgcy0+bmV4dC0+cHJldiA9IHMtPnByZXY7Ci0gICAgICB9Ci0gICAg
ICAvKiBJbnNlcnQgcyBhcyBzZWNvbmQgZWxlbWVudCBpbiB0aGUgbGlzdCAqLwotICAgICAgcy0+
bmV4dCA9IHR5LT5uZXh0OwotICAgICAgaWYgKHR5LT5uZXh0KSB0eS0+bmV4dC0+cHJldiA9IHM7
Ci0gICAgICB0eS0+bmV4dCA9IHM7Ci0gICAgICBzLT5wcmV2ID0gdHk7Ci0gICAgICByZXR1cm4g
czsKLSAgICB9Ci0gICAgcyA9IHMtPm5leHQ7Ci0gIH0gd2hpbGUgKHMgJiYgKHMgIT0gdHktPm5l
eHQpKTsKLSAgcmV0dXJuIDA7Ci19Ci0KLS8qIEZ1bmN0aW9uIGZvciBnZXR0aW5nIGEgcG9pbnRl
ciB2YWx1ZSAqLwotCi1zdGF0aWMgaW50Ci1TV0lHX1BlcmxfQ29udmVydFB0cihTV0lHX01BWUJF
X1BFUkxfT0JKRUNUIFNWICpzdiwgdm9pZCAqKnB0ciwgc3dpZ190eXBlX2luZm8gKl90LCBpbnQg
ZmxhZ3MpIHsKLSAgc3dpZ190eXBlX2luZm8gKnRjOwotICB2b2lkICp2b2lkcHRyID0gKHZvaWQg
KikwOwotCi0gIC8qIElmIG1hZ2ljYWwsIGFwcGx5IG1vcmUgbWFnaWMgKi8KLSAgaWYgKFN2R01B
R0lDQUwoc3YpKQotICAgIG1nX2dldChzdik7Ci0KLSAgLyogQ2hlY2sgdG8gc2VlIGlmIHRoaXMg
aXMgYW4gb2JqZWN0ICovCi0gIGlmIChzdl9pc29iamVjdChzdikpIHsKLSAgICBTViAqdHN2ID0g
KFNWKikgU3ZSVihzdik7Ci0gICAgSVYgdG1wID0gMDsKLSAgICBpZiAoKFN2VFlQRSh0c3YpID09
IFNWdF9QVkhWKSkgewotICAgICAgTUFHSUMgKm1nOwotICAgICAgaWYgKFN2TUFHSUNBTCh0c3Yp
KSB7Ci0gICAgICAgIG1nID0gbWdfZmluZCh0c3YsJ1AnKTsKLSAgICAgICAgaWYgKG1nKSB7Ci0g
ICAgICAgICAgc3YgPSBtZy0+bWdfb2JqOwotICAgICAgICAgIGlmIChzdl9pc29iamVjdChzdikp
IHsKLSAgICAgICAgICAgIHRtcCA9IFN2SVYoKFNWKilTdlJWKHN2KSk7Ci0gICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIHRtcCA9IFN2SVYoKFNWKilTdlJWKHN2KSk7Ci0gICAgfQotICAg
IHZvaWRwdHIgPSAodm9pZCAqKXRtcDsKLSAgICBpZiAoIV90KSB7Ci0gICAgICAqKHB0cikgPSB2
b2lkcHRyOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICB9IGVsc2UgaWYgKCEgU3ZPSyhzdikp
IHsgICAgICAgICAgICAvKiBDaGVjayBmb3IgdW5kZWYgKi8KLSAgICAqKHB0cikgPSAodm9pZCAq
KSAwOwotICAgIHJldHVybiAwOwotICB9IGVsc2UgaWYgKFN2VFlQRShzdikgPT0gU1Z0X1JWKSB7
ICAvKiBDaGVjayBmb3IgTlVMTCBwb2ludGVyICovCi0gICAgKihwdHIpID0gKHZvaWQgKikgMDsK
LSAgICBpZiAoIVN2Uk9LKHN2KSkKLSAgICAgIHJldHVybiAwOwotICAgIGVsc2UKLSAgICAgIHJl
dHVybiAtMTsKLSAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRG9uJ3Qg
a25vdyB3aGF0IGl0IGlzICovCi0gICAgKihwdHIpID0gKHZvaWQgKikgMDsKLSAgICByZXR1cm4g
LTE7Ci0gIH0KLSAgaWYgKF90KSB7Ci0gICAgLyogTm93IHNlZSBpZiB0aGUgdHlwZXMgbWF0Y2gg
Ki8KLSAgICBjaGFyICpfYyA9IEh2TkFNRShTdlNUQVNIKFN2UlYoc3YpKSk7Ci0gICAgdGMgPSBT
V0lHX1R5cGVDaGVjayhfYyxfdCk7Ci0gICAgaWYgKCF0YykgewotICAgICAgKnB0ciA9IHZvaWRw
dHI7Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpwdHIgPSBTV0lHX1R5cGVDYXN0KHRj
LHZvaWRwdHIpOwotICAgIHJldHVybiAwOwotICB9Ci0gICpwdHIgPSB2b2lkcHRyOwotICByZXR1
cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLVNXSUdfUGVybF9NYWtlUHRyKFNXSUdfTUFZQkVfUEVS
TF9PQkpFQ1QgU1YgKnN2LCB2b2lkICpwdHIsIHN3aWdfdHlwZV9pbmZvICp0LCBpbnQgZmxhZ3Mp
IHsKLSAgaWYgKHB0ciAmJiAoZmxhZ3MgJiBTV0lHX1NIQURPVykpIHsKLSAgICBTViAqc2VsZjsK
LSAgICBTViAqb2JqPW5ld1NWKDApOwotICAgIEhWICpoYXNoPW5ld0hWKCk7Ci0gICAgSFYgKnN0
YXNoOwotICAgIHN2X3NldHJlZl9wdihvYmosIChjaGFyICopIHQtPm5hbWUsIHB0cik7Ci0gICAg
c3Rhc2g9U3ZTVEFTSChTdlJWKG9iaikpOwotICAgIGlmIChmbGFncyAmIFNXSUdfT1dORVIpIHsK
LSAgICAgIEhWICpodjsKLSAgICAgIEdWICpndj0qKEdWKiopaHZfZmV0Y2goc3Rhc2gsICJPV05F
UiIsIDUsIFRSVUUpOwotICAgICAgaWYgKCFpc0dWKGd2KSkKLSAgICAgICAgZ3ZfaW5pdChndiwg
c3Rhc2gsICJPV05FUiIsIDUsIEZBTFNFKTsKLSAgICAgIGh2PUd2SFZuKGd2KTsKLSAgICAgIGh2
X3N0b3JlX2VudChodiwgb2JqLCBuZXdTVml2KDEpLCAwKTsKLSAgICB9Ci0gICAgc3ZfbWFnaWMo
KFNWICopaGFzaCwgKFNWICopb2JqLCAnUCcsIE51bGxjaCwgMCk7Ci0gICAgU3ZSRUZDTlRfZGVj
KG9iaik7Ci0gICAgc2VsZj1uZXdSVl9ub2luYygoU1YgKiloYXNoKTsKLSAgICBzdl9zZXRzdihz
diwgc2VsZik7Ci0gICAgU3ZSRUZDTlRfZGVjKChTViAqKXNlbGYpOwotICAgIHN2X2JsZXNzKHN2
LCBzdGFzaCk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3Zfc2V0cmVmX3B2KHN2LCAoY2hhciAqKSB0
LT5uYW1lLCBwdHIpOwotICB9Ci19Ci0KLXN0YXRpYyBTV0lHSU5MSU5FIFNWICoKLVNXSUdfUGVy
bF9OZXdQb2ludGVyT2JqKFNXSUdfTUFZQkVfUEVSTF9PQkpFQ1Qgdm9pZCAqcHRyLCBzd2lnX3R5
cGVfaW5mbyAqdCwgaW50IGZsYWdzKSB7Ci0gIFNWICpyZXN1bHQgPSBzdl9uZXdtb3J0YWwoKTsK
LSAgU1dJR19NYWtlUHRyKHJlc3VsdCwgcHRyLCB0LCBmbGFncyk7Ci0gIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXN0YXRpYyB2b2lkCi0gIFNXSUdfUGVybF9NYWtlUGFja2VkT2JqKFNXSUdfTUFZQkVf
UEVSTF9PQkpFQ1QgU1YgKnN2LCB2b2lkICpwdHIsIGludCBzeiwgc3dpZ190eXBlX2luZm8gKnR5
cGUpIHsKLSAgY2hhciByZXN1bHRbMTAyNF07Ci0gIGNoYXIgKnIgPSByZXN1bHQ7Ci0gIGlmICgo
MipzeiArIDEgKyBzdHJsZW4odHlwZS0+bmFtZSkpID4gMTAwMCkgcmV0dXJuOwotICAqKHIrKykg
PSAnXyc7Ci0gIHIgPSBTV0lHX1BhY2tEYXRhKHIscHRyLHN6KTsKLSAgc3RyY3B5KHIsdHlwZS0+
bmFtZSk7Ci0gIHN2X3NldHB2KHN2LCByZXN1bHQpOwotfQotCi0vKiBDb252ZXJ0IGEgcGFja2Vk
IHZhbHVlIHZhbHVlICovCi1zdGF0aWMgaW50Ci1TV0lHX1BlcmxfQ29udmVydFBhY2tlZChTV0lH
X01BWUJFX1BFUkxfT0JKRUNUIFNWICpvYmosIHZvaWQgKnB0ciwgaW50IHN6LCBzd2lnX3R5cGVf
aW5mbyAqdHksIGludCBmbGFncykgewotICBzd2lnX3R5cGVfaW5mbyAqdGM7Ci0gIGNvbnN0IGNo
YXIgICpjID0gMDsKLQotICBpZiAoKCFvYmopIHx8ICghU3ZPSyhvYmopKSkgcmV0dXJuIC0xOwot
ICBjID0gU3ZQVihvYmosIFBMX25hKTsKLSAgLyogUG9pbnRlciB2YWx1ZXMgbXVzdCBzdGFydCB3
aXRoIGxlYWRpbmcgdW5kZXJzY29yZSAqLwotICBpZiAoKmMgIT0gJ18nKSByZXR1cm4gLTE7Ci0g
IGMrKzsKLSAgYyA9IFNXSUdfVW5wYWNrRGF0YShjLHB0cixzeik7Ci0gIGlmICh0eSkgewotICAg
IHRjID0gU1dJR19UeXBlQ2hlY2soYyx0eSk7Ci0gICAgaWYgKCF0YykgcmV0dXJuIC0xOwotICB9
Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgU1dJR0lOTElORSB2b2lkCi1TV0lHX1BlcmxfU2V0
RXJyb3IoU1dJR19NQVlCRV9QRVJMX09CSkVDVCBjb25zdCBjaGFyICplcnJvcikgewotICBpZiAo
ZXJyb3IpIHN2X3NldHB2KHBlcmxfZ2V0X3N2KCJAIiwgVFJVRSksIGVycm9yKTsKLX0KLQotc3Rh
dGljIFNXSUdJTkxJTkUgdm9pZAotU1dJR19QZXJsX1NldEVycm9yU1YoU1dJR19NQVlCRV9QRVJM
X09CSkVDVCBTViAqZXJyb3IpIHsKLSAgaWYgKGVycm9yKSBzdl9zZXRzdihwZXJsX2dldF9zdigi
QCIsIFRSVUUpLCBlcnJvcik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1TV0lHX1BlcmxfU2V0RXJyb3Jm
KGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7Ci0gIHZhX2xpc3QgYXJnczsKLSAgdmFfc3RhcnQoYXJn
cywgZm10KTsKLSAgc3ZfdnNldHB2Zm4ocGVybF9nZXRfc3YoIkAiLCBUUlVFKSwgZm10LCBzdHJs
ZW4oZm10KSwgJmFyZ3MsIE51bGwoU1YqKiksIDAsIE51bGwoYm9vbCopKTsKLSAgdmFfZW5kKGFy
Z3MpOwotfQotCi0vKiBNYWNyb3MgZm9yIGxvdy1sZXZlbCBleGNlcHRpb24gaGFuZGxpbmcgKi8K
LSNkZWZpbmUgU1dJR19mYWlsICAgICAgIGdvdG8gZmFpbAotI2RlZmluZSBTV0lHX2Nyb2FrKHgp
ICAgeyBTV0lHX1NldEVycm9yKHgpOyBnb3RvIGZhaWw7IH0KLSNkZWZpbmUgU1dJR19jcm9ha1NW
KHgpIHsgU1dJR19TZXRFcnJvclNWKHgpOyBnb3RvIGZhaWw7IH0KLS8qIG1vc3QgcHJlcHJvY2Vz
c29ycyBkbyBub3Qgc3VwcG9ydCB2YXJhcmcgbWFjcm9zIDotKCAqLwotLyogI2RlZmluZSBTV0lH
X2Nyb2FrZih4Li4uKSB7IFNXSUdfU2V0RXJyb3JmKHgpOyBnb3RvIGZhaWw7IH0gKi8KLQotCi10
eXBlZGVmIFhTKFN3aWdQZXJsV3JhcHBlcik7Ci10eXBlZGVmIFN3aWdQZXJsV3JhcHBlciAqU3dp
Z1BlcmxXcmFwcGVyUHRyOwotCi0vKiBTdHJ1Y3R1cmUgZm9yIGNvbW1hbmQgdGFibGUgKi8KLXR5
cGVkZWYgc3RydWN0IHsKLSAgY29uc3QgY2hhciAgICAgICAgICpuYW1lOwotICBTd2lnUGVybFdy
YXBwZXJQdHIgIHdyYXBwZXI7Ci19IHN3aWdfY29tbWFuZF9pbmZvOwotCi0vKiBJbmZvcm1hdGlv
biBmb3IgY29uc3RhbnQgdGFibGUgKi8KLQotI2RlZmluZSBTV0lHX0lOVCAgICAgMQotI2RlZmlu
ZSBTV0lHX0ZMT0FUICAgMgotI2RlZmluZSBTV0lHX1NUUklORyAgMwotI2RlZmluZSBTV0lHX1BP
SU5URVIgNAotI2RlZmluZSBTV0lHX0JJTkFSWSAgNQotCi0vKiBDb25zdGFudCBpbmZvcm1hdGlv
biBzdHJ1Y3R1cmUgKi8KLXR5cGVkZWYgc3RydWN0IHN3aWdfY29uc3RhbnRfaW5mbyB7Ci0gICAg
aW50ICAgICAgICAgICAgICB0eXBlOwotICAgIGNvbnN0IGNoYXIgICAgICAqbmFtZTsKLSAgICBs
b25nICAgICAgICAgICAgIGx2YWx1ZTsKLSAgICBkb3VibGUgICAgICAgICAgIGR2YWx1ZTsKLSAg
ICB2b2lkICAgICAgICAgICAgKnB2YWx1ZTsKLSAgICBzd2lnX3R5cGVfaW5mbyAqKnB0eXBlOwot
fSBzd2lnX2NvbnN0YW50X2luZm87Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0K
LS8qIFN0cnVjdHVyZSBmb3IgdmFyaWFibGUgdGFibGUgKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAg
Y29uc3QgY2hhciAgICpuYW1lOwotICBTd2lnTWFnaWNGdW5jICAgc2V0OwotICBTd2lnTWFnaWNG
dW5jICAgZ2V0OwotICBzd2lnX3R5cGVfaW5mbyAgKip0eXBlOwotfSBzd2lnX3ZhcmlhYmxlX2lu
Zm87Ci0KLS8qIE1hZ2ljIHZhcmlhYmxlIGNvZGUgKi8KLSNpZm5kZWYgUEVSTF9PQkpFQ1QKLSNk
ZWZpbmUgc3dpZ19jcmVhdGVfbWFnaWMocyxhLGIsYykgX3N3aWdfY3JlYXRlX21hZ2ljKHMsYSxi
LGMpCi0gICNpZm5kZWYgTVVMVElQTElDSVRZCi0gICAgIHN0YXRpYyB2b2lkIF9zd2lnX2NyZWF0
ZV9tYWdpYyhTViAqc3YsIGNoYXIgKm5hbWUsIGludCAoKnNldCkoU1YgKiwgTUFHSUMgKiksIGlu
dCAoKmdldCkoU1YgKixNQUdJQyAqKSkgewotICAjZWxzZQotICAgICBzdGF0aWMgdm9pZCBfc3dp
Z19jcmVhdGVfbWFnaWMoU1YgKnN2LCBjaGFyICpuYW1lLCBpbnQgKCpzZXQpKHN0cnVjdCBpbnRl
cnByZXRlciosIFNWICosIE1BR0lDICopLCBpbnQgKCpnZXQpKHN0cnVjdCBpbnRlcnByZXRlcios
IFNWICosTUFHSUMgKikpIHsKLSAgI2VuZGlmCi0jZWxzZQotIyAgZGVmaW5lIHN3aWdfY3JlYXRl
X21hZ2ljKHMsYSxiLGMpIF9zd2lnX2NyZWF0ZV9tYWdpYyhwUGVybCxzLGEsYixjKQotc3RhdGlj
IHZvaWQgX3N3aWdfY3JlYXRlX21hZ2ljKENQZXJsT2JqICpwUGVybCwgU1YgKnN2LCBjb25zdCBj
aGFyICpuYW1lLCBpbnQgKENQZXJsT2JqOjoqc2V0KShTViAqLCBNQUdJQyAqKSwgaW50IChDUGVy
bE9iajo6KmdldCkoU1YgKiwgTUFHSUMgKikpIHsKLSNlbmRpZgotICBNQUdJQyAqbWc7Ci0gIHN2
X21hZ2ljKHN2LHN2LCdVJywoY2hhciAqKSBuYW1lLHN0cmxlbihuYW1lKSk7Ci0gIG1nID0gbWdf
ZmluZChzdiwnVScpOwotICBtZy0+bWdfdmlydHVhbCA9IChNR1ZUQkwgKikgbWFsbG9jKHNpemVv
ZihNR1ZUQkwpKTsKLSAgbWctPm1nX3ZpcnR1YWwtPnN2dF9nZXQgPSAoU3dpZ01hZ2ljRnVuY0hh
Y2spIGdldDsKLSAgbWctPm1nX3ZpcnR1YWwtPnN2dF9zZXQgPSAoU3dpZ01hZ2ljRnVuY0hhY2sp
IHNldDsKLSAgbWctPm1nX3ZpcnR1YWwtPnN2dF9sZW4gPSAwOwotICBtZy0+bWdfdmlydHVhbC0+
c3Z0X2NsZWFyID0gMDsKLSAgbWctPm1nX3ZpcnR1YWwtPnN2dF9mcmVlID0gMDsKLX0KLQotCi0K
LQotCi0KLSNpZmRlZiBkb19vcGVuCi0gICN1bmRlZiBkb19vcGVuCi0jZW5kaWYKLSNpZmRlZiBk
b19jbG9zZQotICAjdW5kZWYgZG9fY2xvc2UKLSNlbmRpZgotI2lmZGVmIHNjYWxhcgotICAjdW5k
ZWYgc2NhbGFyCi0jZW5kaWYKLSNpZmRlZiBsaXN0Ci0gICN1bmRlZiBsaXN0Ci0jZW5kaWYKLSNp
ZmRlZiBhcHBseQotICAjdW5kZWYgYXBwbHkKLSNlbmRpZgotI2lmZGVmIGNvbnZlcnQKLSAgI3Vu
ZGVmIGNvbnZlcnQKLSNlbmRpZgotI2lmZGVmIEVycm9yCi0gICN1bmRlZiBFcnJvcgotI2VuZGlm
Ci0jaWZkZWYgZm9ybQotICAjdW5kZWYgZm9ybQotI2VuZGlmCi0jaWZkZWYgdmZvcm0KLSAgI3Vu
ZGVmIHZmb3JtCi0jZW5kaWYKLSNpZmRlZiBMQUJFTAotICAjdW5kZWYgTEFCRUwKLSNlbmRpZgot
I2lmZGVmIE1FVEhPRAotICAjdW5kZWYgTUVUSE9ECi0jZW5kaWYKLSNpZmRlZiBNb3ZlCi0gICN1
bmRlZiBNb3ZlCi0jZW5kaWYKLSNpZmRlZiB5eWxleAotICAjdW5kZWYgeXlsZXgKLSNlbmRpZgot
I2lmZGVmIHl5cGFyc2UKLSAgI3VuZGVmIHl5cGFyc2UKLSNlbmRpZgotI2lmZGVmIHl5ZXJyb3IK
LSAgI3VuZGVmIHl5ZXJyb3IKLSNlbmRpZgotI2lmZGVmIGludmVydAotICAjdW5kZWYgaW52ZXJ0
Ci0jZW5kaWYKLSNpZmRlZiByZWYKLSAgI3VuZGVmIHJlZgotI2VuZGlmCi0jaWZkZWYgRU5URVIK
LSAgI3VuZGVmIEVOVEVSCi0jZW5kaWYKLQotCi0vKiAtLS0tLS0tLSBUWVBFUyBUQUJMRSAoQkVH
SU4pIC0tLS0tLS0tICovCi0KLXN0YXRpYyBzd2lnX3R5cGVfaW5mbyAqc3dpZ190eXBlc1sxXTsK
LQotLyogLS0tLS0tLS0gVFlQRVMgVEFCTEUgKEVORCkgLS0tLS0tLS0gKi8KLQotI2RlZmluZSBT
V0lHX2luaXQgICAgYm9vdF9EdW1wUmVuZGVyVHJlZVN1cHBvcnQKLQotI2RlZmluZSBTV0lHX25h
bWUgICAiRHVtcFJlbmRlclRyZWVTdXBwb3J0Yzo6Ym9vdF9EdW1wUmVuZGVyVHJlZVN1cHBvcnQi
Ci0jZGVmaW5lIFNXSUdfcHJlZml4ICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRjOjoiCi0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0jaWZuZGVmIFBFUkxfT0JKRUNUCi0j
aWZuZGVmIE1VTFRJUExJQ0lUWQotU1dJR0VYUE9SVCh2b2lkKSBTV0lHX2luaXQgKENWKiBjdik7
Ci0jZWxzZQotU1dJR0VYUE9SVCh2b2lkKSBTV0lHX2luaXQgKHBUSFhvXyBDViogY3YpOwotI2Vu
ZGlmCi0jZWxzZQotU1dJR0VYUE9SVCh2b2lkKSBTV0lHX2luaXQgKENWICpjdiwgQ1BlcmxPYmog
Kik7Ci0jZW5kaWYKLQotaW50IHByb2Nlc3NJc0NyYXNoaW5nKGludCk7Ci0jaWZkZWYgUEVSTF9P
QkpFQ1QKLSNkZWZpbmUgTUFHSUNfQ0xBU1MgX3dyYXBfRHVtcFJlbmRlclRyZWVTdXBwb3J0X3Zh
cjo6Ci1jbGFzcyBfd3JhcF9EdW1wUmVuZGVyVHJlZVN1cHBvcnRfdmFyIDogcHVibGljIENQZXJs
T2JqIHsKLXB1YmxpYzoKLSNlbHNlCi0jZGVmaW5lIE1BR0lDX0NMQVNTCi0jZW5kaWYKLVNXSUdD
TEFTU19TVEFUSUMgaW50IHN3aWdfbWFnaWNfcmVhZG9ubHkocFRIWF8gU1YgKnN2LCBNQUdJQyAq
bWcpIHsKLSAgICBNQUdJQ19QUEVSTAotICAgIHN2ID0gc3Y7IG1nID0gbWc7Ci0gICAgY3JvYWso
IlZhbHVlIGlzIHJlYWQtb25seS4iKTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi0jaWZkZWYgUEVS
TF9PQkpFQ1QKLX07Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsK
LSNlbmRpZgotWFMoX3dyYXBfcHJvY2Vzc0lzQ3Jhc2hpbmcpIHsKLSAgICB7Ci0gICAgICAgIGlu
dCBhcmcxIDsKLSAgICAgICAgaW50IHJlc3VsdDsKLSAgICAgICAgaW50IGFyZ3ZpID0gMDsKLSAg
ICAgICAgZFhTQVJHUzsKLSAgICAgICAgCi0gICAgICAgIGlmICgoaXRlbXMgPCAxKSB8fCAoaXRl
bXMgPiAxKSkgewotICAgICAgICAgICAgU1dJR19jcm9haygiVXNhZ2U6IHByb2Nlc3NJc0NyYXNo
aW5nKHBpZCk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnMSA9IChpbnQpIFN2SVYoU1QoMCkp
OwotICAgICAgICByZXN1bHQgPSAoaW50KXByb2Nlc3NJc0NyYXNoaW5nKGFyZzEpOwotICAgICAg
ICAKLSAgICAgICAgU1QoYXJndmkpID0gc3ZfbmV3bW9ydGFsKCk7Ci0gICAgICAgIHN2X3NldGl2
KFNUKGFyZ3ZpKyspLCAoSVYpIHJlc3VsdCk7Ci0gICAgICAgIFhTUkVUVVJOKGFyZ3ZpKTsKLSAg
ICAgICAgZmFpbDoKLSAgICAgICAgOwotICAgIH0KLSAgICBjcm9hayhOdWxsY2gpOwotfQotCi0K
LQotLyogLS0tLS0tLS0gVFlQRSBDT05WRVJTSU9OIEFORCBFUVVJVkFMRU5DRSBSVUxFUyAoQkVH
SU4pIC0tLS0tLS0tICovCi0KLQotc3RhdGljIHN3aWdfdHlwZV9pbmZvICpzd2lnX3R5cGVzX2lu
aXRpYWxbXSA9IHsKLTAKLX07Ci0KLQotLyogLS0tLS0tLS0gVFlQRSBDT05WRVJTSU9OIEFORCBF
UVVJVkFMRU5DRSBSVUxFUyAoRU5EKSAtLS0tLS0tLSAqLwotCi1zdGF0aWMgc3dpZ19jb25zdGFu
dF9pbmZvIHN3aWdfY29uc3RhbnRzW10gPSB7Ci17MCwwLDAsMCwwLDB9Ci19OwotI2lmZGVmIF9f
Y3BsdXNwbHVzCi19Ci0jZW5kaWYKLXN0YXRpYyBzd2lnX3ZhcmlhYmxlX2luZm8gc3dpZ192YXJp
YWJsZXNbXSA9IHsKLXswLDAsMCwwfQotfTsKLXN0YXRpYyBzd2lnX2NvbW1hbmRfaW5mbyBzd2ln
X2NvbW1hbmRzW10gPSB7Ci17IkR1bXBSZW5kZXJUcmVlU3VwcG9ydGM6OnByb2Nlc3NJc0NyYXNo
aW5nIiwgX3dyYXBfcHJvY2Vzc0lzQ3Jhc2hpbmd9LAotezAsMH0KLX07Ci0KLQotc3RhdGljIHZv
aWQgU1dJR19QZXJsX1NldFR5cGVMaXN0SGFuZGxlKHN3aWdfdHlwZV9pbmZvICoqaGFuZGxlKSB7
Ci0gICAgU1YgKnBvaW50ZXI7Ci0gICAgCi0gICAgLyogY3JlYXRlIGEgbmV3IHBvaW50ZXIgKi8K
LSAgICBwb2ludGVyID0gZ2V0X3N2KCJzd2lnX3J1bnRpbWVfZGF0YTo6dHlwZV9wb2ludGVyIiBT
V0lHX1JVTlRJTUVfVkVSU0lPTiBTV0lHX1RZUEVfVEFCTEVfTkFNRSwgVFJVRSk7Ci0gICAgc3Zf
c2V0aXYocG9pbnRlciwgUFRSMklWKHN3aWdfdHlwZV9saXN0X2hhbmRsZSkpOwotfQotCi1zdGF0
aWMgc3dpZ190eXBlX2luZm8gKioKLVNXSUdfUGVybF9Mb29rdXBUeXBlUG9pbnRlcihzd2lnX3R5
cGVfaW5mbyAqKnR5cGVfbGlzdF9oYW5kbGUpIHsKLSAgICBzd2lnX3R5cGVfaW5mbyAqKnR5cGVf
cG9pbnRlcjsKLSAgICAKLSAgICAvKiBmaXJzdCBjaGVjayBpZiBtb2R1bGUgYWxyZWFkeSBjcmVh
dGVkICovCi0gICAgdHlwZV9wb2ludGVyID0gU1dJR19QZXJsX0dldFR5cGVMaXN0SGFuZGxlKCk7
Ci0gICAgaWYgKHR5cGVfcG9pbnRlcikgewotICAgICAgICByZXR1cm4gdHlwZV9wb2ludGVyOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGNyZWF0ZSBhIG5ldyBtb2R1bGUgYW5kIHZhcmlhYmxl
ICovCi0gICAgICAgIFNXSUdfUGVybF9TZXRUeXBlTGlzdEhhbmRsZSh0eXBlX2xpc3RfaGFuZGxl
KTsKLSAgICAgICAgcmV0dXJuIHR5cGVfbGlzdF9oYW5kbGU7Ci0gICAgfQotfQotCi0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0KLVhTKFNXSUdfaW5pdCkgewotICAg
IGRYU0FSR1M7Ci0gICAgaW50IGk7Ci0gICAgc3RhdGljIGludCBfaW5pdCA9IDA7Ci0gICAgaWYg
KCFfaW5pdCkgewotICAgICAgICBzd2lnX3R5cGVfbGlzdF9oYW5kbGUgPSBTV0lHX1BlcmxfTG9v
a3VwVHlwZVBvaW50ZXIoc3dpZ190eXBlX2xpc3RfaGFuZGxlKTsKLSAgICAgICAgZm9yIChpID0g
MDsgc3dpZ190eXBlc19pbml0aWFsW2ldOyBpKyspIHsKLSAgICAgICAgICAgIHN3aWdfdHlwZXNb
aV0gPSBTV0lHX1R5cGVSZWdpc3Rlcihzd2lnX3R5cGVzX2luaXRpYWxbaV0pOwotICAgICAgICB9
Ci0gICAgICAgIF9pbml0ID0gMTsKLSAgICB9Ci0gICAgCi0gICAgLyogSW5zdGFsbCBjb21tYW5k
cyAqLwotICAgIGZvciAoaSA9IDA7IHN3aWdfY29tbWFuZHNbaV0ubmFtZTsgaSsrKSB7Ci0gICAg
ICAgIG5ld1hTKChjaGFyKikgc3dpZ19jb21tYW5kc1tpXS5uYW1lLHN3aWdfY29tbWFuZHNbaV0u
d3JhcHBlciwgKGNoYXIqKV9fRklMRV9fKTsKLSAgICB9Ci0gICAgCi0gICAgLyogSW5zdGFsbCB2
YXJpYWJsZXMgKi8KLSAgICBmb3IgKGkgPSAwOyBzd2lnX3ZhcmlhYmxlc1tpXS5uYW1lOyBpKysp
IHsKLSAgICAgICAgU1YgKnN2OwotICAgICAgICBzdiA9IHBlcmxfZ2V0X3N2KChjaGFyKikgc3dp
Z192YXJpYWJsZXNbaV0ubmFtZSwgVFJVRSB8IDB4Mik7Ci0gICAgICAgIGlmIChzd2lnX3Zhcmlh
Ymxlc1tpXS50eXBlKSB7Ci0gICAgICAgICAgICBTV0lHX01ha2VQdHIoc3YsKHZvaWQgKikxLCAq
c3dpZ192YXJpYWJsZXNbaV0udHlwZSwwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHN2X3NldGl2KHN2LChJVikgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpZ19jcmVhdGVfbWFn
aWMoc3YsIChjaGFyICopIHN3aWdfdmFyaWFibGVzW2ldLm5hbWUsIHN3aWdfdmFyaWFibGVzW2ld
LnNldCwgc3dpZ192YXJpYWJsZXNbaV0uZ2V0KTsgCi0gICAgfQotICAgIAotICAgIC8qIEluc3Rh
bGwgY29uc3RhbnQgKi8KLSAgICBmb3IgKGkgPSAwOyBzd2lnX2NvbnN0YW50c1tpXS50eXBlOyBp
KyspIHsKLSAgICAgICAgU1YgKnN2OwotICAgICAgICBzdiA9IHBlcmxfZ2V0X3N2KChjaGFyKilz
d2lnX2NvbnN0YW50c1tpXS5uYW1lLCBUUlVFIHwgMHgyKTsKLSAgICAgICAgc3dpdGNoKHN3aWdf
Y29uc3RhbnRzW2ldLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgU1dJR19JTlQ6Ci0gICAgICAg
ICAgICBzdl9zZXRpdihzdiwgKElWKSBzd2lnX2NvbnN0YW50c1tpXS5sdmFsdWUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNXSUdfRkxPQVQ6Ci0gICAgICAgICAgICBz
dl9zZXRudihzdiwgKGRvdWJsZSkgc3dpZ19jb25zdGFudHNbaV0uZHZhbHVlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTV0lHX1NUUklORzoKLSAgICAgICAgICAgIHN2
X3NldHB2KHN2LCAoY2hhciAqKSBzd2lnX2NvbnN0YW50c1tpXS5wdmFsdWUpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNXSUdfUE9JTlRFUjoKLSAgICAgICAgICAgIFNX
SUdfTWFrZVB0cihzdiwgc3dpZ19jb25zdGFudHNbaV0ucHZhbHVlLCAqKHN3aWdfY29uc3RhbnRz
W2ldLnB0eXBlKSwwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTV0lH
X0JJTkFSWToKLSAgICAgICAgICAgIFNXSUdfTWFrZVBhY2tlZE9iaihzdiwgc3dpZ19jb25zdGFu
dHNbaV0ucHZhbHVlLCBzd2lnX2NvbnN0YW50c1tpXS5sdmFsdWUsICooc3dpZ19jb25zdGFudHNb
aV0ucHR5cGUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFN2UkVBRE9OTFlfb24oc3YpOwot
ICAgIH0KLSAgICAKLSAgICBTVCgwKSA9ICZQTF9zdl95ZXM7Ci0gICAgWFNSRVRVUk4oMSk7Ci19
Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9NYWtl
ZmlsZSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QZXJsU3VwcG9ydC9NYWtlZmlsZQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4MDhkYzNjNWU5Zjc4MzBjMjIxM2RmMGExZTY2
NzBiZjQ5MjgxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGVybFN1cHBvcnQvTWFrZWZpbGUKKysrIC9kZXYv
bnVsbApAQCAtMSw4MiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLQotQ09ORklHVVJBVElPTl9CVUlM
RF9ESVIgPz0gLgotT1VUUFVUX0RJUj0kKENPTkZJR1VSQVRJT05fQlVJTERfRElSKQotCi1XUkFQ
UEVSX0RJUj0kKE9VVFBVVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlCi1XUkFQ
UEVSPSQoV1JBUFBFUl9ESVIpL0R1bXBSZW5kZXJUcmVlU3VwcG9ydF93cmFwLmMKLVBFUkxfTU9E
VUxFPSQoT1VUUFVUX0RJUikvRHVtcFJlbmRlclRyZWVTdXBwb3J0LnBtCi1EWUxJQj0kKE9VVFBV
VF9ESVIpL0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5keWxpYgotRFVNUFJFTkRFUlRSRUU9JChPVVRQ
VVRfRElSKS9EdW1wUmVuZGVyVHJlZQotUEVSTD0vdXNyL2Jpbi9wZXJsCi0KLU9TWF9WRVJTSU9O
ID0gJChzaGVsbCBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IGN1dCAtZC4gLWYgMikKLWlmZXEg
IiQoT1NYX1ZFUlNJT04pIiAiNSIKLUdFTkVSQVRFX1dSQVBQRVIgPSBZRVMKLWVuZGlmCi1pZmVx
ICIkKE9TWF9WRVJTSU9OKSIgIjYiCi1HRU5FUkFURV9XUkFQUEVSID0gTk8KLWVuZGlmCi0KLWlm
ZXEgIiQoR0VORVJBVEVfV1JBUFBFUikiICJZRVMiCi0KLVNXSUc9L3Vzci9iaW4vc3dpZwotCi1h
bGw6ICQoRFlMSUIpICQoUEVSTF9NT0RVTEUpCi0KLSQoV1JBUFBFUikgJChQRVJMX01PRFVMRSk6
IER1bXBSZW5kZXJUcmVlU3VwcG9ydC5jICQoRFVNUFJFTkRFUlRSRUUpCi0JbWtkaXIgLXAgJChX
UkFQUEVSX0RJUikKLQkkKFNXSUcpIC1vICQoV1JBUFBFUikgLW91dGRpciAkKE9VVFBVVF9ESVIp
IC1wZXJsIC1tb2R1bGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0ICQ8Ci0KLQotZWxzZQotCi0KLWFs
bDogJChEWUxJQikgJChQRVJMX01PRFVMRSkKLQotJChXUkFQUEVSKTogRHVtcFJlbmRlclRyZWVT
dXBwb3J0X3dyYXBQcmVnZW5lcmF0ZWQuYyAkKERVTVBSRU5ERVJUUkVFKQotCW1rZGlyIC1wICQo
V1JBUFBFUl9ESVIpCi0JY3AgRHVtcFJlbmRlclRyZWVTdXBwb3J0X3dyYXBQcmVnZW5lcmF0ZWQu
YyAkKFdSQVBQRVIpCi0KLSQoUEVSTF9NT0RVTEUpOiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRQcmVn
ZW5lcmF0ZWQucG0gJChEVU1QUkVOREVSVFJFRSkKLQljcCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRQ
cmVnZW5lcmF0ZWQucG0gJChQRVJMX01PRFVMRSkKLQotCi1lbmRpZgotCi0kKERZTElCKTogRHVt
cFJlbmRlclRyZWVTdXBwb3J0LmMgJChXUkFQUEVSKQotCWdjYyAtZyAtZHluYW1pY2xpYiAtbyAk
KERZTElCKSBgJChQRVJMKSAtTUV4dFV0aWxzOjpFbWJlZCAtZXBlcmxfaW5jYCBgJChQRVJMKSAt
TUV4dFV0aWxzOjpFbWJlZCAtZSdteSAkJG9wdHMgPSBsZG9wdHMoMCk7ICQkb3B0cyA9fiBzLy1h
cmNoIFteIF0qKCB8JCQpLy9nOyBwcmludCAkJG9wdHMsICIgLWFyY2ggIiwgam9pbigiIC1hcmNo
ICIsIHNwbGl0KCIgIiwkJEVOVntBUkNIU30pKSdgICReCi0KLWNsZWFuOgotCXJtIC1mICQoV1JB
UFBFUikgJChQRVJMX01PRFVMRSkgJChEWUxJQikKLQotaW5zdGFsbGhkcnMgaW5zdGFsbHNyYzoK
LQotSU5TVEFMTF9MT0NBVElPTj0kKERTVFJPT1QpLyQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzLyQoV0VCS0lUX0ZSQU1FV09SS19SRVNPVVJDRVNfUEFUSCkKLQotaW5zdGFsbDogYWxs
Ci0JbWtkaXIgLXAgJChJTlNUQUxMX0xPQ0FUSU9OKQotCWNwICQoRFlMSUIpICQoSU5TVEFMTF9M
T0NBVElPTikvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmR5bGliCi0JY3AgJChQRVJMX01PRFVMRSkg
JChJTlNUQUxMX0xPQ0FUSU9OKS9EdW1wUmVuZGVyVHJlZVN1cHBvcnQucG0KLQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvb2xk
LXJ1bi13ZWJraXQtdGVzdHMKaW5kZXggNmY3ZTUzNmU4OTYzMmQ1ODE4N2RkYThiNjZiODI1ODQ0
MjkzZTE0NS4uYzQ0NmFhYTY0MDQwOWM0MGRmNjEyMzJjZmEwODY2MTc5ZTI0Yzc1NSAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cworKysgYi9Ub29scy9TY3Jp
cHRzL29sZC1ydW4td2Via2l0LXRlc3RzCkBAIC00MjEsMTEgKzQyMSw4IEBAIG15ICRjdXJyZW50
RGlyID0gY3dkKCk7CiBjaGRpcldlYktpdCgpOwogCiBpZiAoIWRlZmluZWQoJHJvb3QpICYmICEk
bm9CdWlsZER1bXBUb29sKSB7Ci0gICAgIyBGSVhNRTogV2UgYnVpbGQgYm90aCBEdW1wUmVuZGVy
VHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBmb3IKLSAgICAjIFdlYktpdFRlc3RSdW5uZXIgcnVu
cyBiZWNhdXNlIER1bXBSZW5kZXJUcmVlIHN0aWxsIGluY2x1ZGVzCi0gICAgIyB0aGUgRHVtcFJl
bmRlclRyZWVTdXBwb3J0IG1vZHVsZSBhbmQgdGhlIFRlc3ROZXRzY2FwZVBsdWdpbi4KLSAgICAj
IFRoZXNlIHR3byBwcm9qZWN0cyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gdGhlaXIgb3du
Ci0gICAgIyBwcm9qZWN0cy4KKyAgICAjIEZJWE1FOiBXZSBidWlsZCBib3RoIER1bXBSZW5kZXJU
cmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyIGZvciBXZWJLaXRUZXN0UnVubmVyIHJ1bnMgYmVjYXVz
ZQorICAgICMgRHVtcFJlbmRlclRyZWUgaW5jbHVkZXMgVGVzdE5ldHNjYXBlUGx1Z2luLiBJdCBz
aG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gaXRzIG93biBwcm9qZWN0LgogICAgIGJ1aWxkRHVt
cFRvb2woIkR1bXBSZW5kZXJUcmVlIik7CiAgICAgYnVpbGREdW1wVG9vbCgiV2ViS2l0VGVzdFJ1
bm5lciIpIGlmICR1c2VXZWJLaXRUZXN0UnVubmVyOwogfQpAQCAtNDQ3LDExICs0NDQsNiBAQCBk
aWUgImNhbid0IGZpbmQgZXhlY3V0YWJsZSAkaW1hZ2VEaWZmVG9vbCAobG9va2VkIGluICRwcm9k
dWN0RGlyKVxuIiBpZiAkcGl4ZWxUZQogCiBjaGVja0ZyYW1ld29ya3MoKSB1bmxlc3MgaXNDeWd3
aW4oKTsKIAotaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewotICAgIHB1c2ggQElOQywgJHByb2R1
Y3REaXI7Ci0gICAgcmVxdWlyZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ7Ci19Ci0KIG15ICRsYXlv
dXRUZXN0c05hbWUgPSAiTGF5b3V0VGVzdHMiOwogbXkgJHRlc3REaXJlY3RvcnkgPSBGaWxlOjpT
cGVjLT5yZWwyYWJzKCRsYXlvdXRUZXN0c05hbWUpOwogbXkgJGV4cGVjdGVkRGlyZWN0b3J5ID0g
JHRlc3REaXJlY3Rvcnk7CkBAIC0xNTQzLDEwICsxNTM1LDcgQEAgc3ViIGR1bXBUb29sRGlkQ3Jh
c2goKQogICAgIG15ICRwaWQgPSB3YWl0cGlkKC0xLCBXTk9IQU5HKTsKICAgICByZXR1cm4gMSBp
ZiAoJHBpZCA9PSAkZHVtcFRvb2xQSUQpOwogCi0gICAgIyBPbiBNYWMgT1MgWCwgY3Jhc2hpbmcg
bWF5IGJlIHNpZ25pZmljYW50bHkgZGVsYXllZCBieSBjcmFzaCByZXBvcnRlci4KLSAgICByZXR1
cm4gMCB1bmxlc3MgaXNBcHBsZU1hY1dlYktpdCgpOwotCi0gICAgcmV0dXJuIER1bXBSZW5kZXJU
cmVlU3VwcG9ydDo6cHJvY2Vzc0lzQ3Jhc2hpbmcoJGR1bXBUb29sUElEKTsKKyAgICByZXR1cm4g
MDsKIH0KIAogc3ViIGNvbmZpZ3VyZUFuZE9wZW5IVFRQRElmTmVlZGVkKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2UucHkKaW5kZXggNDdiMWVjYTg5YTgyYTM0NDA4ZDE2ZWYwYTRiZGQxOWJm
Y2ZjMjM5Yy4uYjZhNzBhOGY1YzIyMTA5NjYwZDliYjNhZmI4NzlmNWY2ZmVlNjk3ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTEzOTIsMTEgKzEzOTIsOCBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgIGVudmlyb25tZW50LmRpc2FibGVfZ2NjX3NtYXJ0cXVvdGVz
KCkKICAgICAgICAgZW52ID0gZW52aXJvbm1lbnQudG9fZGljdGlvbmFyeSgpCiAKLSAgICAgICAg
IyBGSVhNRTogV2UgYnVpbGQgYm90aCBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5l
ciBmb3IKLSAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHJ1bnMgYmVjYXVzZSBEdW1wUmVuZGVy
VHJlZSBzdGlsbCBpbmNsdWRlcwotICAgICAgICAjIHRoZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQg
bW9kdWxlIGFuZCB0aGUgVGVzdE5ldHNjYXBlUGx1Z2luLgotICAgICAgICAjIFRoZXNlIHR3byBw
cm9qZWN0cyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gdGhlaXIgb3duCi0gICAgICAgICMg
cHJvamVjdHMuCisgICAgICAgICMgRklYTUU6IFdlIGJ1aWxkIGJvdGggRHVtcFJlbmRlclRyZWUg
YW5kIFdlYktpdFRlc3RSdW5uZXIgZm9yIFdlYktpdFRlc3RSdW5uZXIgcnVucyBiZWNhdXNlCisg
ICAgICAgICMgRHVtcFJlbmRlclRyZWUgaW5jbHVkZXMgVGVzdE5ldHNjYXBlUGx1Z2luLiBJdCBz
aG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gaXRzIG93biBwcm9qZWN0LgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJidWlsZC1kdW1wcmVuZGVydHJlZSIsIGFy
Z3M9c2VsZi5fYnVpbGRfZHJpdmVyX2ZsYWdzKCksIGVudj1lbnYpCiAgICAgICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>