<?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>140754</bug_id>
          
          <creation_ts>2015-01-21 19:54:04 -0800</creation_ts>
          <short_desc>Consolidate out arguments of parseFunctionInfo into a struct</short_desc>
          <delta_ts>2015-01-21 22:39:32 -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>JavaScriptCore</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>
          
          <blocked>140491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1063259</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-21 19:54:04 -0800</bug_when>
    <thetext>parseFunctionInfo has a whole bunch of out arguments. We should put them all into a struct for better code readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063263</commentid>
    <comment_count>1</comment_count>
      <attachid>245111</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-21 20:15:09 -0800</bug_when>
    <thetext>Created attachment 245111
Refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063274</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-21 20:55:19 -0800</bug_when>
    <thetext>I don&apos;t think EWS failures are related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063294</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-21 21:56:33 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063299</commentid>
    <comment_count>4</comment_count>
      <attachid>245111</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-21 22:39:28 -0800</bug_when>
    <thetext>Comment on attachment 245111
Refactoring

Clearing flags on attachment: 245111

Committed r178888: &lt;http://trac.webkit.org/changeset/178888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063300</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-21 22:39:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245111</attachid>
            <date>2015-01-21 20:15:09 -0800</date>
            <delta_ts>2015-01-21 22:39:28 -0800</delta_ts>
            <desc>Refactoring</desc>
            <filename>bug-140754-20150121201517.patch</filename>
            <type>text/plain</type>
            <size>32074</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4ODg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE1LTAxLTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IENvbnNvbGlkYXRlIG91dCBhcmd1bWVudHMgb2YgcGFyc2VGdW5jdGlvbkluZm8gaW50byBhIHN0
cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQw
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlZCBQYXJzZXJGdW5jdGlvbkluZm8gZm9yIHN0b3Jpbmcgb3V0IGFyZ3VtZW50cyBvZiBw
YXJzZUZ1bmN0aW9uSW5mby4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6IFRoaXMgb25lIHRha2VzIGEg
cHJvcGVydHkgbmFtZSBpbiBhZGRpdGlvbiB0bworICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm8g
c2luY2UgdGhlIHByb3BlcnR5IG5hbWUgYW5kIHRoZSBmdW5jdGlvbiBuYW1lIGNvdWxkIGRpZmZl
ci4KKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBwYXJz
ZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVG
dW5jdGlvbkV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jRGVj
bFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNsYXNzRGVj
bFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkpOgorCiAyMDE1LTAxLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YkBnbWFpbC5jb20+CiAKICAgICAgICAgQ2hhbmdlIEhlYXA6Om1fY29tcGlsZWRDb2RlIHRvIHVz
ZSBhIFZlY3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3
ODg4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgyLDYgKzI3ODIsNyBAQAogCQk5
OUU0NUEyMTE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OUU0NUEyMjE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0
aWNJbnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25kZXRlcm1pbmlz
dGljSW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUI0OTU0RTgxQTY2NDBE
QjAwMjgxNUE2IC8qIFBhcnNlckZ1bmN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJG
dW5jdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0MDkxOTBG
MDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1hYy5j
cHA7IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxNDUsNiArNDE0Niw3IEBACiAJCQkJOTMwNTJDMzIwRkI3OTIxOTAwNDhG
REMzIC8qIFBhcnNlckFyZW5hLmNwcCAqLywKIAkJCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMg
LyogUGFyc2VyQXJlbmEuaCAqLywKIAkJCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFy
c2VyRXJyb3IuaCAqLywKKwkJCQk5QjQ5NTRFODFBNjY0MERCMDAyODE1QTYgLyogUGFyc2VyRnVu
Y3Rpb25JbmZvLmggKi8sCiAJCQkJQTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1v
ZGVzLmggKi8sCiAJCQkJNjUzMDNENjMxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5o
ICovLAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24g
MTc4ODg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3MywxMSArMjczLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCB1bnNpZ25l
ZCBvcGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQsIGludCBib2R5U3Rh
cnRMaW5lLCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBm
dW5jdGlvbktleXdvcmRTdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQpCiAg
ICAgewotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHBy
ZXNzaW9uKG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4pLCBwYXJhbWV0ZXJzKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFy
dExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0
YXJ0T2Zmc2V0KTsKLSAgICAgICAgYm9keS0+c2V0RnVuY3Rpb25LZXl3b3JkU3RhcnQoZnVuY3Rp
b25LZXl3b3JkU3RhcnQpOworICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHks
CisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5vcGVuQnJhY2VP
ZmZzZXQsIGluZm8uY2xvc2VCcmFjZU9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJv
ZHlTdGFydENvbHVtbiksIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAgIGluZm8uYm9keS0+c2V0
TG9jKGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRP
ZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIGluZm8uYm9keS0+c2V0
RnVuY3Rpb25LZXl3b3JkU3RhcnQoZnVuY3Rpb25LZXl3b3JkU3RhcnQpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjkxLDIwICsyOTIsMjQgQEAgcHVibGljOgogICAgICAg
ICBib2R5LT5zZXRGdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCk7CiAgICAgfQog
ICAgIAotICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIGJvb2wsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1
bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRM
aW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4sIHVuc2lnbmVkIGdldE9yU2V0U3RhcnRPZmZz
ZXQpCisgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgYm9vbCwKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCB1bnNpZ25lZCBnZXRPclNldFN0YXJ0
T2Zmc2V0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwotICAgICAgICBib2R5LT5zZXRM
b2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQpOwotICAgICAgICBib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5h
bWUpOwotICAgICAgICBib2R5LT5zZXRGdW5jdGlvbktleXdvcmRTdGFydChnZXRPclNldFN0YXJ0
T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2Rl
KCpuYW1lLCBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUs
IGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOworICAgICAgICBpbmZvLmJvZHktPnNl
dExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0
T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBpbmZvLmJvZHktPnNl
dEluZmVycmVkTmFtZSgqbmFtZSk7CisgICAgICAgIGluZm8uYm9keS0+c2V0RnVuY3Rpb25LZXl3
b3JkU3RhcnQoZ2V0T3JTZXRTdGFydE9mZnNldCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqbmFtZSwgbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhw
ck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLAorICAg
ICAgICAgICAgaW5mby5ib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5vcGVu
QnJhY2VPZmZzZXQsIGluZm8uY2xvc2VCcmFjZU9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBp
bmZvLmJvZHlTdGFydENvbHVtbiksIGluZm8ucGFyYW1ldGVycyksIHR5cGUpOwogICAgIH0KICAg
ICAKLSAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwgZG91YmxlIG5h
bWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWdu
ZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0
YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGdldE9yU2V0U3RhcnRPZmZzZXQpCi0gICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9k
eVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQpOwotICAgICAgICBib2R5LT5zZXRGdW5jdGlvbktleXdvcmRTdGFydChn
ZXRPclNldFN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
UHJvcGVydHlOb2RlKHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRl
bnRpZmllcih2bSwgbmFtZSksIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0
aW9uLCB2bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlT
dGFydExpbmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOworICAgIE5FVkVSX0lO
TElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBQ
YXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLCBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2Vy
RnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCB1bnNpZ25lZCBnZXRPclNldFN0YXJ0T2Zm
c2V0KQorICAgIHsKKyAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5l
LCBpbmZvLmJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0
YXJ0T2Zmc2V0KTsKKyAgICAgICAgaW5mby5ib2R5LT5zZXRGdW5jdGlvbktleXdvcmRTdGFydChn
ZXRPclNldFN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBw
YXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIG5h
bWUpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUoaWRl
bnQsIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCB2bS0+cHJvcGVy
dHlOYW1lcy0+bnVsbElkZW50aWZpZXIsCisgICAgICAgICAgICBpbmZvLmJvZHksIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLm9wZW5CcmFjZU9mZnNldCwgaW5mby5jbG9zZUJyYWNl
T2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKSwgaW5mby5w
YXJhbWV0ZXJzKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJn
dW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBcmd1bWVudHNOb2RlKCk7IH0K
QEAgLTMzNiwxNCArMzQxLDE1IEBAIHB1YmxpYzoKICAgICBDbGF1c2VMaXN0Tm9kZSogY3JlYXRl
Q2xhdXNlTGlzdChDYXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIENsYXVzZUxpc3ROb2RlKGNsYXVzZSk7IH0KICAgICBDbGF1c2VMaXN0Tm9kZSogY3Jl
YXRlQ2xhdXNlTGlzdChDbGF1c2VMaXN0Tm9kZSogdGFpbCwgQ2FzZUNsYXVzZU5vZGUqIGNsYXVz
ZSkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDbGF1c2VMaXN0Tm9kZSh0YWlsLCBjbGF1
c2UpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCB1bnNpZ25lZCBv
cGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQsIGludCBib2R5U3RhcnRM
aW5lLCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbiwgdW5zaWduZWQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFy
dCkKICAgICB7Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgRnVuY0RlY2xOb2RlKGxvY2F0aW9uLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJF
eHByZXNzaW9uKG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGlu
ZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFyYW1ldGVycyk7Ci0gICAgICAgIGlmICgqbmFtZSA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCisgICAgICAgIEZ1bmNEZWNsTm9kZSogZGVj
bCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0RlY2xOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1l
LCBpbmZvLmJvZHksCisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5m
by5vcGVuQnJhY2VPZmZzZXQsIGluZm8uY2xvc2VCcmFjZU9mZnNldCwgaW5mby5ib2R5U3RhcnRM
aW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbiksIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAgIGlm
ICgqaW5mby5uYW1lID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAg
ICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMu
YXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5l
LCBib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCk7Ci0gICAgICAgIGJvZHktPnNldEZ1bmN0aW9uS2V5d29yZFN0YXJ0KGZ1bmN0aW9uS2V5
d29yZFN0YXJ0KTsKKyAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5l
LCBpbmZvLmJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0
YXJ0T2Zmc2V0KTsKKyAgICAgICAgaW5mby5ib2R5LT5zZXRGdW5jdGlvbktleXdvcmRTdGFydChm
dW5jdGlvbktleXdvcmRTdGFydCk7CiAgICAgICAgIHJldHVybiBkZWNsOwogICAgIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTc4ODg0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25J
bmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IGNvbnN0IElkZW50aWZpZXIqJiBuYW1lLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYgcGFyYW1l
dGVycywgVHJlZUZ1bmN0aW9uQm9keSYgYm9keSwgdW5zaWduZWQmIG9wZW5CcmFjZU9mZnNldCwg
dW5zaWduZWQmIGNsb3NlQnJhY2VPZmZzZXQsIGludCYgYm9keVN0YXJ0TGluZSwgdW5zaWduZWQm
IGJvZHlTdGFydENvbHVtbikKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1
bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwg
Ym9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiYgaW5mbykKIHsKICAgICBBdXRvUG9wU2NvcGVSZWYgZnVuY3Rpb25TY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CiAgICAgZnVuY3Rpb25TY29wZS0+c2V0SXNGdW5jdGlvbigpOwpAQCAtMTI4
MSwxMSArMTI4MSwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2Vy
CiAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSA9IG1fbGFzdEZ1bmN0aW9u
TmFtZTsKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBudWxscHRyOwogICAgIGlmIChtYXRjaChJ
REVOVCkpIHsKLSAgICAgICAgbmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICBt
X2xhc3RGdW5jdGlvbk5hbWUgPSBuYW1lOworICAgICAgICBpbmZvLm5hbWUgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKKyAgICAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gaW5mby5uYW1lOwogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCi0gICAg
ICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGZ1bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJs
ZShuYW1lKSwgIiciLCBuYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkICIsIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIGluIHN0cmljdCBtb2RlIik7CisgICAgICAgICAg
ICBmYWlsSWZGYWxzZUlmU3RyaWN0KGZ1bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShpbmZv
Lm5hbWUpLCAiJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCAiLCBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0g
ZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7CiAgICAgICAgIGlm
IChtYXRjaChPUEVOUEFSRU4pICYmIG1vZGUgPT0gRnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAg
c2VtYW50aWNGYWlsKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAg
LTEyOTgsMTkgKzEyOTgsMTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBh
cnNlcgogICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJl
Zm9yZSBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIidzIHBhcmFtZXRlciBsaXN0
Iik7CiAgICAgfQogICAgIGlmICghbWF0Y2goQ0xPU0VQQVJFTikpIHsKLSAgICAgICAgcGFyYW1l
dGVycyA9IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgZmFpbElmRmFs
c2UocGFyYW1ldGVycywgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CisgICAgICAgIGluZm8ucGFyYW1ldGVycyA9IHBhcnNl
Rm9ybWFsUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJh
bWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKG1vZGUpKTsKICAgICB9CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAi
RXhwZWN0ZWQgYSAnKScgb3IgYSAnLCcgYWZ0ZXIgYSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsK
ICAgICBtYXRjaE9yRmFpbChPUEVOQlJBQ0UsICJFeHBlY3RlZCBhbiBvcGVuaW5nICd7JyBhdCB0
aGUgc3RhcnQgb2YgYSAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgYm9keSIpOwog
ICAgIAotICAgIG9wZW5CcmFjZU9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKLSAgICBi
b2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgYm9keVN0YXJ0Q29sdW1uID0gbV90b2tl
bi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0OworICAgIGlu
Zm8ub3BlbkJyYWNlT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9k
eVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gbV90
b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0OwogICAg
IEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgCiAg
ICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2Ug
dGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVu
Y3Rpb24uCi0gICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZv
ID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25J
bmZvKG9wZW5CcmFjZU9mZnNldCkgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUg
PyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKGluZm8ub3BlbkJyYWNlT2Zmc2V0KSA6IDApIHsKICAg
ICAgICAgLy8gSWYgd2UncmUgaW4gYSBzdHJpY3QgY29udGV4dCwgdGhlIGNhY2hlZCBmdW5jdGlv
biBpbmZvIG11c3Qgc2F5IGl0IHdhcyBzdHJpY3QgdG9vLgogICAgICAgICBBU1NFUlQoIXN0cmlj
dE1vZGUoKSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKICAgICAgICAgSlNUb2tlbkxvY2F0
aW9uIGVuZExvY2F0aW9uOwpAQCAtMTMxOSwyMSArMTMxOSwyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0
ID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZU9mZnNldDsKICAgICAgICAgZW5kTG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZUxpbmVTdGFydE9mZnNldDsKIAot
ICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAoZW5kTG9jYXRpb24ubGluZSA9
PSBib2R5U3RhcnRMaW5lKTsKKyAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0g
KGVuZExvY2F0aW9uLmxpbmUgPT0gaW5mby5ib2R5U3RhcnRMaW5lKTsKICAgICAgICAgQVNTRVJU
KGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7
CiAgICAgICAgIHVuc2lnbmVkIGJvZHlFbmRDb2x1bW4gPSBlbmRDb2x1bW5Jc09uU3RhcnRMaW5l
ID8KICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEu
bGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0g
ZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGlu
ZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKIAotICAg
ICAgICBib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgZW5k
TG9jYXRpb24sIGJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgY2FjaGVkSW5mby0+c3Ry
aWN0TW9kZSk7CisgICAgICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5
KHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBpbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVu
ZENvbHVtbiwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBmdW5j
dGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pLCAiUGFyc2VyIGVycm9yIik7CiAgICAgICAgIAotICAgICAg
ICBjbG9zZUJyYWNlT2Zmc2V0ID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZU9mZnNldDsKKyAgICAg
ICAgaW5mby5jbG9zZUJyYWNlT2Zmc2V0ID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZU9mZnNldDsK
IAotICAgICAgICBjb250ZXh0LnNldEZ1bmN0aW9uTmFtZVN0YXJ0KGJvZHksIGZ1bmN0aW9uTmFt
ZVN0YXJ0KTsKKyAgICAgICAgY29udGV4dC5zZXRGdW5jdGlvbk5hbWVTdGFydChpbmZvLmJvZHks
IGZ1bmN0aW9uTmFtZVN0YXJ0KTsKICAgICAgICAgbV90b2tlbiA9IGNhY2hlZEluZm8tPmNsb3Nl
QnJhY2VUb2tlbigpOwogICAgICAgICBpZiAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSkKICAgICAg
ICAgICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0
YXJ0T2Zmc2V0OwpAQCAtMTM0MSwyMyArMTM0MSwyNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIG1fbGV4ZXItPnNldE9mZnNldChtX3Rva2VuLm1f
bG9jYXRpb24uZW5kT2Zmc2V0LCBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7
CiAKLSAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoYm9keSwgbV9sZXhlci0+Y3VycmVudE9m
ZnNldCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoaW5mby5ib2R5LCBtX2xleGVy
LT5jdXJyZW50T2Zmc2V0KCkpOwogICAgICAgICAKICAgICAgICAgbmV4dCgpOworICAgICAgICBp
bmZvLmJvZHlFbmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9u
TmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIGJvZHkg
PSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0KTsKKyAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0
aW9uQm9keShjb250ZXh0KTsKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwotICAgIGZhaWxJ
ZkZhbHNlKGJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUobW9kZSkpOwotICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGJvZHksIG1fbGV4
ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUo
KSAmJiBuYW1lKSB7CisgICAgZmFpbElmRmFsc2UoaW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRo
ZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKKyAgICBjb250
ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Cisg
ICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBpbmZvLm5hbWUpIHsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBGdW5jdGlvbk1vZGUpOwotICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpuYW1lLCAiJyIs
IG5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3Qg
bW9kZSIpOwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCA9PSAqbmFtZSwgIiciLCBuYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0
aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1f
dm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaW5mby5uYW1lLCAiJyIsIGluZm8ubmFt
ZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2Rl
Iik7CisgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFs
ID09ICppbmZvLm5hbWUsICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlk
IGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9Ci0gICAgY2xvc2VCcmFjZU9m
ZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmNsb3NlQnJhY2VPZmZzZXQg
PSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CiAgICAgdW5zaWduZWQgY2xvc2VCcmFjZUxpbmUgPSBt
X3Rva2VuLm1fZGF0YS5saW5lOwogICAgIHVuc2lnbmVkIGNsb3NlQnJhY2VMaW5lU3RhcnRPZmZz
ZXQgPSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQ7CiAgICAgCkBAIC0xMzY1LDI2ICsx
MzY2LDI3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAv
LyBBbnkgZnV0dXJlIHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KICAgICBz
dGF0aWMgY29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87Ci0gICAgaW50
IGZ1bmN0aW9uTGVuZ3RoID0gY2xvc2VCcmFjZU9mZnNldCAtIG9wZW5CcmFjZU9mZnNldDsKKyAg
ICBpbnQgZnVuY3Rpb25MZW5ndGggPSBpbmZvLmNsb3NlQnJhY2VPZmZzZXQgLSBpbmZvLm9wZW5C
cmFjZU9mZnNldDsKICAgICBpZiAoVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgJiYg
bV9mdW5jdGlvbkNhY2hlICYmIGZ1bmN0aW9uTGVuZ3RoID4gbWluaW11bUZ1bmN0aW9uTGVuZ3Ro
VG9DYWNoZSkgewogICAgICAgICBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogICAgICAgICBwYXJhbWV0ZXJzLmZ1bmN0aW9uTmFtZVN0YXJ0ID0g
ZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAgIHBhcmFtZXRlcnMuY2xvc2VCcmFjZUxpbmUgPSBj
bG9zZUJyYWNlTGluZTsKLSAgICAgICAgcGFyYW1ldGVycy5jbG9zZUJyYWNlT2Zmc2V0ID0gY2xv
c2VCcmFjZU9mZnNldDsKKyAgICAgICAgcGFyYW1ldGVycy5jbG9zZUJyYWNlT2Zmc2V0ID0gaW5m
by5jbG9zZUJyYWNlT2Zmc2V0OwogICAgICAgICBwYXJhbWV0ZXJzLmNsb3NlQnJhY2VMaW5lU3Rh
cnRPZmZzZXQgPSBjbG9zZUJyYWNlTGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICBmdW5jdGlvblNj
b3BlLT5maWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFyYW1ldGVycyk7CiAg
ICAgICAgIG5ld0luZm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3JlYXRlKHBhcmFtZXRl
cnMpOwogCiAgICAgfQotICAgIGNvbnRleHQuc2V0RnVuY3Rpb25OYW1lU3RhcnQoYm9keSwgZnVu
Y3Rpb25OYW1lU3RhcnQpOworICAgIGNvbnRleHQuc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW5mby5i
b2R5LCBmdW5jdGlvbk5hbWVTdGFydCk7CiAgICAgCiAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyksICJQYXJz
ZXIgZXJyb3IiKTsKICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9z
aW5nICd9JyBhZnRlciBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBib2R5Iik7
CiAgICAgCiAgICAgaWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+YWRkKG9w
ZW5CcmFjZU9mZnNldCwgV1RGOjptb3ZlKG5ld0luZm8pKTsKKyAgICAgICAgbV9mdW5jdGlvbkNh
Y2hlLT5hZGQoaW5mby5vcGVuQnJhY2VPZmZzZXQsIFdURjo6bW92ZShuZXdJbmZvKSk7CiAgICAg
CiAgICAgbmV4dCgpOworICAgIGluZm8uYm9keUVuZExpbmUgPSBtX2xhc3RUb2tlbkVuZFBvc2l0
aW9uLmxpbmU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzOTUsMTcgKzEzOTcsMTEgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsKLSAgICBjb25zdCBJZGVudGlm
aWVyKiBuYW1lID0gMDsKLSAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0g
MDsKLSAgICBUcmVlRnVuY3Rpb25Cb2R5IGJvZHkgPSAwOwotICAgIHVuc2lnbmVkIG9wZW5CcmFj
ZU9mZnNldCA9IDA7Ci0gICAgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7Ci0gICAgaW50
IGJvZHlTdGFydExpbmUgPSAwOwotICAgIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbiA9IDA7Ci0g
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNO
YW1lLCBGdW5jdGlvbk1vZGUsIHRydWUsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFj
ZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1u
KSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwotICAgIGZhaWxJZkZhbHNlKG5hbWUs
ICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKLSAgICBmYWlsSWZGYWxz
ZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVuY3Rp
b24gbmFtZWQgJyIsIG5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKLSAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwg
cGFyYW1ldGVycywgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRM
aW5lLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIGJvZHlTdGFydENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQpOworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5m
bzsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25O
ZWVkc05hbWUsIEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgaW5mbykpLCAiQ2Fubm90IHBhcnNlIHRoaXMg
ZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZShpbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1l
bnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKKyAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVW
YXJpYWJsZShpbmZvLm5hbWUpLCAiQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiBuYW1lZCAnIiwg
aW5mby5uYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIGluZm8sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0KTsKIH0KIAogc3RydWN0IExhYmVsSW5mbyB7CkBAIC0xNzk5LDEzICsxNzk1LDYgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydAogICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29u
c3RhbnQsIGNvbXBsZXRlKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZGYWxzZSh3YXNJZGVu
dCwgIkV4cGVjdGVkIGFuIGlkZW50aWZpZXIgYXMgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiBhY2Nlc3Nvck5hbWUgPSAwOwotICAgICAgICBUcmVlRm9ybWFsUGFy
YW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKLSAgICAgICAgVHJlZUZ1bmN0aW9uQm9keSBib2R5
ID0gMDsKLSAgICAgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0gMDsKLSAgICAgICAgdW5z
aWduZWQgY2xvc2VCcmFjZU9mZnNldCA9IDA7Ci0gICAgICAgIGludCBib2R5U3RhcnRMaW5lID0g
MDsKLSAgICAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29sdW1uID0gMDsKICAgICAgICAgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGU7CiAgICAgICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2V0KQogICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwpAQCAt
MTgyMywxNiArMTgxMiwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9w
ZXJ0CiAgICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgICAgICBp
ZiAodHlwZSA9PSBQcm9wZXJ0eU5vZGU6OkdldHRlcikgewogICAgICAgICAgICAgZmFpbElmRmFs
c2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIGdldHRl
ciBkZWZpbml0aW9uIik7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgR2V0dGVyTW9kZSwgZmFsc2UsIGFj
Y2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNl
T2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pKSwgIkNhbm5vdCBwYXJzZSBn
ZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEdldHRlck1vZGUsIGZhbHNl
LCBpbmZvKSksICJDYW5ub3QgcGFyc2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3Rl
ZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwotICAgICAgICAgICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJl
bWVudHMsIFNldHRlck1vZGUsIGZhbHNlLCBhY2Nlc3Nvck5hbWUsIHBhcmFtZXRlcnMsIGJvZHks
IG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0
YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVx
dWlyZW1lbnRzLCBTZXR0ZXJNb2RlLCBmYWxzZSwgaW5mbykpLCAiQ2Fubm90IHBhcnNlIHNldHRl
ciBkZWZpbml0aW9uIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0cmluZ1Byb3BlcnR5TmFt
ZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVy
dHkobG9jYXRpb24sIHR5cGUsIGNvbXBsZXRlLCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRl
cnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGlu
ZSwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lLCBib2R5U3RhcnRDb2x1bW4sIGdldHRlck9y
U2V0dGVyU3RhcnRPZmZzZXQpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgbG9j
YXRpb24sIHR5cGUsIGNvbXBsZXRlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBi
b2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIG1f
bGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSwgYm9keVN0YXJ0Q29sdW1uLCBnZXR0ZXJPclNldHRl
clN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHR5cGUsIGNvbXBsZXRlLCBzdHJpbmdQcm9wZXJ0eU5h
bWUsIGluZm8sIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwg
bV9wYXJzZXJBcmVuYSwgbG9jYXRpb24sIHR5cGUsIGNvbXBsZXRlLCBudW1lcmljUHJvcGVydHlO
YW1lLCBpbmZvLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0KTsKICAgICB9CiAgICAgY2FzZSBO
VU1CRVI6IHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRv
dWJsZVZhbHVlOwpAQCAtMjE3MiwyMCArMjE2MiwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbmV3Q291bnQrKzsK
ICAgICB9Ci0gICAgCisKICAgICBpZiAobWF0Y2goRlVOQ1RJT04pKSB7Ci0gICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIG5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7
Ci0gICAgICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwotICAgICAg
ICBUcmVlRnVuY3Rpb25Cb2R5IGJvZHkgPSAwOwotICAgICAgICB1bnNpZ25lZCBvcGVuQnJhY2VP
ZmZzZXQgPSAwOwotICAgICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKLSAgICAg
ICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwotICAgICAgICB1bnNpZ25lZCBib2R5U3RhcnRDb2x1
bW4gPSAwOwogICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3Rh
cnQoKTsKICAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5leHQo
KTsKLSAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTm9SZXF1aXJlbWVudHMsIEZ1bmN0aW9uTW9kZSwgZmFsc2UsIG5hbWUsIHBhcmFtZXRlcnMs
IGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwg
Ym9keVN0YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwot
ICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5hbWUs
IGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9k
eVN0YXJ0TGluZSwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lLCBib2R5U3RhcnRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0KTsKKyAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiBpbmZvOworICAgICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXI7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhj
b250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlvbk1vZGUsIGZhbHNlLCBpbmZv
KSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAgICAgICBiYXNlID0g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGluZm8sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0KTsKICAgICB9IGVsc2UKICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgJKHJldmlzaW9uIDE3ODg4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOb2Rlcy5o
IgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKKyNp
bmNsdWRlICJQYXJzZXJGdW5jdGlvbkluZm8uaCIKICNpbmNsdWRlICJQYXJzZXJUb2tlbnMuaCIK
ICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2Fj
aGUuaCIKQEAgLTczMyw3ICs3MzQsOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gY3JlYXRl
QmluZGluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZWNvbnN0cnVjdGlvbktpbmQsIGNvbnN0IElk
ZW50aWZpZXImLCBpbnQgZGVwdGgsIEpTVG9rZW4pOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGFyc2VEZWNv
bnN0cnVjdGlvblBhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZWNvbnN0cnVjdGlvbktpbmQsIGludCBk
ZXB0aCA9IDApOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gdHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5F
eHByZXNzaW9uKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0
aW9uUmVxdWlyZW1lbnRzLCBGdW5jdGlvblBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5p
bmdTY29wZSwgY29uc3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYsIFRy
ZWVGdW5jdGlvbkJvZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xv
c2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29s
dW1uKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJv
b2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywg
RnVuY3Rpb25QYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmlu
YXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29s
b24oKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVu
Y3Rpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJGdW5jdGlvbkluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFyc2VyRnVuY3Rpb25JbmZvX2gKKyNkZWZpbmUg
UGFyc2VyRnVuY3Rpb25JbmZvX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4KK3N0cnVjdCBQYXJzZXJGdW5jdGlvbkluZm8geworICAgIGNvbnN0IElk
ZW50aWZpZXIqIG5hbWUgPSAwOworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5j
dGlvbkJvZHkgYm9keSA9IDA7CisgICAgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0ID0gMDsKKyAg
ICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKKyAgICBpbnQgYm9keVN0YXJ0TGluZSA9
IDA7CisgICAgaW50IGJvZHlFbmRMaW5lID0gMDsKKyAgICB1bnNpZ25lZCBib2R5U3RhcnRDb2x1
bW4gPSAwOworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxNzg4ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBTeW50YXhDaGVja2VyX2gKIAogI2luY2x1ZGUgIkxleGVyLmgi
CisjaW5jbHVkZSAiUGFyc2VyRnVuY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiWWFyclN5bnRheENo
ZWNrZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNTksNyArMTYwLDcgQEAgcHVibGljOgog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlKSB7
IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBc3Np
Z25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
aW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0
OyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50
IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAtMTkzLDcg
KzE5NCw4IEBAIHB1YmxpYzoKICAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwgaW50KSB7IHJldHVy
biBDbGF1c2VSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJu
IENsYXVzZUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkg
eyByZXR1cm4gQ2xhdXNlTGlzdFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsg
fQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBpbnQpIHsgcmV0dXJu
IFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVDbGFzc0RlY2xTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QsIGludCwgaW50KSB7IHJl
dHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVz
dWx0OyB9CiAgICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNy
ZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CkBAIC0yMTgsMTQgKzIyMCwxNCBAQCBwdWJs
aWM6CiAgICAgaW50IGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ29uc3RTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3Rh
dGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGFwcGVuZENvbnN0RGVjbChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJl
c3VsdDsgfQotICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBj
b25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwgY29u
c3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNr
ZXI+JiwgdW5zaWduZWQpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CiAgICAgICAgIGlm
ICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICBy
ZXR1cm4gUHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmlj
dCwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQor
ICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJB
cmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6
VHlwZSB0eXBlLCBib29sIHN0cmljdCwgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYsIHVuc2lnbmVkKQogICAgIHsKICAgICAgICAgaWYgKCFzdHJp
Y3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>