<?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>16332</bug_id>
          
          <creation_ts>2007-12-06 13:06:20 -0800</creation_ts>
          <short_desc>ObjC DOM exception object descriptions should include the exception name</short_desc>
          <delta_ts>2007-12-06 19:19:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>63517</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-06 13:06:20 -0800</bug_when>
    <thetext>Currently, the description in a DOM exception object includes only the number of the exception. We should include the name as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63541</commentid>
    <comment_count>1</comment_count>
      <attachid>17762</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-06 15:39:04 -0800</bug_when>
    <thetext>Created attachment 17762
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63547</commentid>
    <comment_count>2</comment_count>
      <attachid>17762</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-06 16:53:56 -0800</bug_when>
    <thetext>Comment on attachment 17762
patch

Looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63548</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-06 19:19:05 -0800</bug_when>
    <thetext>Committed revision 28509.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17762</attachid>
            <date>2007-12-06 15:39:04 -0800</date>
            <delta_ts>2007-12-06 16:53:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ObjCExceptionPatch.txt</filename>
            <type>text/plain</type>
            <size>45461</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODQ5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDctMTItMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzMyCisgICAgICAgICAg
T2JqQyBET00gZXhjZXB0aW9uIG9iamVjdCBkZXNjcmlwdGlvbnMgc2hvdWxkIGluY2x1ZGUgdGhl
IGV4Y2VwdGlvbiBuYW1lCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkZWQgRXhjZXB0aW9u
Q29kZS5jcHAuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IEFkZGVk
IEV4Y2VwdGlvbkNvZGUuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgRXhjZXB0aW9uQ29kZS5jcHAuCisgICAgICAgICogV2ViQ29yZVNvdXJj
ZXMuYmtsOiBBZGRlZCBFeGNlcHRpb25Db2RlLmNwcC4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L2tqc19iaW5kaW5nLmNwcDogKEtKUzo6c2V0RE9NRXhjZXB0aW9uKTogTW92ZWQgdGhlIGNvZGUg
dG8gZGVjb21wb3NlIGFuCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaW50byBFeGNlcHRpb25Db2Rl
LmgvY3BwIC0tIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi4gQWxzbyByZW1vdmVkCisgICAg
ICAgIHRoZSBtYW55IHVubmVlZGVkIGluY2x1ZGVzIHRoYXQgd2VyZSBoZXJlLiBIYWQgdG8ga2Vl
cCBvbmUgc3BlY2lhbCBjYXNlIGhlcmUsIGZvcgorICAgICAgICBTRUNVUklUWV9FUlIuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0V4Y2VwdGlvbkhhbmRsZXJzLm1tOiAoV2ViQ29yZTo6cmFp
c2VET01FeGNlcHRpb24pOiBDaGFuZ2VkIHRvIHVzZSB0aGUKKyAgICAgICAgbmV3IGdldEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiBmdW5jdGlvbiBzbyB0aGF0IHRoaXMgc2hhcmVzIHRoZSBleGNl
cHRpb24gbmFtZQorICAgICAgICBpbmZvcm1hdGlvbiB0aGF0IHdhcyBwcmV2aW91c2x5IG9ubHkg
YXZhaWxhYmxlIHRvIEphdmFTY3JpcHQuCisKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5j
cHA6IENvcGllZCBmcm9tIGJpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbik6IEFkZGVkIHNvbWUgYXNzZXJ0aW9u
cywgYW5kIG1hZGUgdGhlIGZ1bmN0aW9uCisgICAgICAgIGhhbmRsZSBleGNlcHRpb24gbmFtZXMg
aW4gYSBzbGlnaHRseSBtb3JlIHJvYnVzdCB3YXkgdGhhdCBpcyBub3Qgc3ViamVjdCB0byBpbnRl
Z2VyCisgICAgICAgIG92ZXJmbG93LiAoTm90IGEgcmVhbCB3b3JsZCBpc3N1ZSBzaW5jZSB3ZSBz
aG91bGQgbmV2ZXIgcmVjZWl2ZSBhIGJhZCBleGNlcHRpb24gY29kZS4pCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uQ29kZS5oOiBBZGRlZCB0aGUgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIHN0
cnVjdCBhbmQgdGhlCisgICAgICAgIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBmdW5jdGlv
bi4KKworICAgICAgICAqIHN2Zy9TVkdFeGNlcHRpb24uaDogQWRkZWQgYSBtaXNzaW5nICNpbmNs
dWRlIGFuZCBnb3QgcmlkIG9mIHNvbWUgY29tbWVudHMuIFNvbWUgb2YKKyAgICAgICAgdGhlIGNv
bW1lbnRzIHdlcmUgbWlsZGx5IGhlbHBmdWwsIGJ1dCBvdGhlcnMgd2VyZSBpbmNvcnJlY3QuIFRo
aXMgbm93IG1hdGNoZXMgdGhlIG90aGVyCisgICAgICAgIGV4Y2VwdGlvbi1yZWxhdGVkIGhlYWRl
cnMgc3VjaCBhcyBSYW5nZUV4Y2VwdGlvbi5oLgorCiAyMDA3LTEyLTA2ICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggPHJkYXI6Ly81MTA4MzkwPiBGZWVkIHRp
dGxlIGlzIHRvbyBsb3cgaW4gYmx1ZSBiYW5uZXIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMjg0OTkpCisrKyBX
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwIFwKICAgICBkb20vRXZlbnRUYXJnZXQu
Y3BwIFwKICAgICBkb20vRXZlbnRUYXJnZXROb2RlLmNwcCBcCisgICAgZG9tL0V4Y2VwdGlvbkNv
ZGUuY3BwIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogICAgIGRvbS9NYXBwZWRBdHRy
aWJ1dGUuY3BwIFwKICAgICBkb20vTW91c2VFdmVudC5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJ
KHJldmlzaW9uIDI4NDk5KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMyw2ICszMDMsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2Yg
ZmlsZXMgbmVlCiAgICAgICAgIGRvbS9FdmVudE5hbWVzLmNwcAogICAgICAgICBkb20vRXZlbnRU
YXJnZXQuY3BwCiAgICAgICAgIGRvbS9FdmVudFRhcmdldE5vZGUuY3BwCisgICAgICAgIGRvbS9F
eGNlcHRpb25Db2RlLmNwcAogICAgICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKICAgICAgICAg
ZG9tL01hcHBlZEF0dHJpYnV0ZS5jcHAKICAgICAgICAgZG9tL01vdXNlRXZlbnQuY3BwCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDI4NDk5KQorKysg
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTg4MSw2ICs1ODgxLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGRvbVxFeGNlcHRpb25Db2RlLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxLZXlib2FyZEV2ZW50LmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg0OTkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU0OSw2ICsxNTQ5LDcg
QEAKIAkJOTM4MEY0NzMwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzgwRjQ3MTA5QTExQUI0MDAxRkRC
MzQgLyogV2lkZ2V0LmNwcCAqLzsgfTsKIAkJOTM4MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdp
ZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4
MEY0NzIwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzODBGNDc4MDlBMTFBQ0MwMDFGREIzNCAvKiBX
aWRnZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovOyB9OworCQk5Mzgz
MUI1NzBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQg
LyogRXhjZXB0aW9uQ29kZS5jcHAgKi87IH07CiAJCTkzOEU2NUYxMDlGMDk4NDAwMDhBNDhFQyAv
KiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOEU2NUYwMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxF
bGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLzsgfTsKIAkJOTM4RTY1RjcwOUYwOTg1RDAwOEE0OEVD
IC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzhFNjVGNjA5RjA5ODVEMDA4QTQ4RUMgLyogSlNI
VE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLzsgfTsKIAkJOTM4RTY2NjAwOUYwOUI4MTAw
OEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4RTY2NUYwOUYwOUI4MTAwOEE0OEVDIC8qIEpTSFRN
TENhbnZhc0VsZW1lbnQuY3BwICovOyB9OwpAQCAtNTgzOSw2ICs1ODQwLDcgQEAKIAkJOTM4MEY0
NzEwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM4MEY0NzIwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2lkZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
ODBGNDc3MDlBMTFBQ0MwMDFGREIzNCAvKiBXaWRnZXRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2lkZ2V0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25Db2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVDIC8q
IEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzhFNjYyNTA5RjA5OTU2MDA4QTQ4RUMgLyogSFRNTENhbnZhc0VsZW1lbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEhUTUxDYW52YXNFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEyMTUwLDYgKzEyMTUyLDcgQEAKIAkJCQkxNEVDMjY3RTA5Q0EwN0Uw
MDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNwcCAqLywKIAkJCQkxNEVDMjY3RDA5Q0EwN0Uw
MDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAw
RTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKKwkJCQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5
ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJODUwMzFCMkQwQTQ0RUZDNzAwRjk5MkUw
IC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjJFMEE0NEVGQzcwMEY5OTJFMCAv
KiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAwOUY3MTEwNjAwRUIzNjY1IC8qIEtl
eWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTU3NzYsNiArMTU3NzksNyBAQAogCQkJCUIyNTU5OUI2
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjU1OTlCOTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5QkIwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNl
TWFza2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzODMxQjU3MEQwODdENjAwMEU1Qzk4NCAv
KiBFeGNlcHRpb25Db2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfYmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfYmluZGluZy5jcHAJKHJldmlzaW9uIDI4NDk5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfYmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMzICsyNiwxMyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImtqc19iaW5kaW5nLmgiCiAKLSNpbmNsdWRlICJDaHJv
bWUuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNOb2Rl
LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJSYW5nZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlhN
TEh0dHBSZXF1ZXN0LmgiCi0jaW5jbHVkZSAia2pzX2RvbS5oIgotI2luY2x1ZGUgImtqc193aW5k
b3cuaCIKLSNpbmNsdWRlIDxranMvY29sbGVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLQotI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCi0jZW5kaWYK
LQotI2lmIEVOQUJMRShYUEFUSCkKLSNpbmNsdWRlICJYUGF0aEV2YWx1YXRvci5oIgotI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBuYW1lc3BhY2UgS0pTIHsKQEAgLTI3NSwx
MzAgKzI1NSwzNSBAQCBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDCiAg
ICAgcmV0dXJuIHZhbC0+dG9TdHJpbmcoZXhlYyk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBleGNlcHRpb25OYW1lc1tdID0gewotICAgIDAsCi0gICAgIklOREVYX1NJWkVfRVJSIiwK
LSAgICAiRE9NU1RSSU5HX1NJWkVfRVJSIiwKLSAgICAiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIiwK
LSAgICAiV1JPTkdfRE9DVU1FTlRfRVJSIiwKLSAgICAiSU5WQUxJRF9DSEFSQUNURVJfRVJSIiwK
LSAgICAiTk9fREFUQV9BTExPV0VEX0VSUiIsCi0gICAgIk5PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUiIsCi0gICAgIk5PVF9GT1VORF9FUlIiLAotICAgICJOT1RfU1VQUE9SVEVEX0VSUiIsCi0g
ICAgIklOVVNFX0FUVFJJQlVURV9FUlIiLAotICAgICJJTlZBTElEX1NUQVRFX0VSUiIsCi0gICAg
IlNZTlRBWF9FUlIiLAotICAgICJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLAotICAgICJOQU1F
U1BBQ0VfRVJSIiwKLSAgICAiSU5WQUxJRF9BQ0NFU1NfRVJSIiwKLSAgICAiVkFMSURBVElPTl9F
UlIiLAotICAgICJUWVBFX01JU01BVENIX0VSUiIsCi19OwotCi1zdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgcmFuZ2VFeGNlcHRpb25OYW1lc1tdID0gewotICAgIDAsICJCQURfQk9VTkRBUllQT0lO
VFNfRVJSIiwgIklOVkFMSURfTk9ERV9UWVBFX0VSUiIKLX07Ci0KLXN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBldmVudEV4Y2VwdGlvbk5hbWVzW10gPSB7Ci0gICAgIlVOU1BFQ0lGSUVEX0VWRU5U
X1RZUEVfRVJSIgotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhtbEh0dHBSZXF1ZXN0
RXhjZXB0aW9uTmFtZXNbXSA9IHsKLSAgICAiTkVUV09SS19FUlIiCi19OwotCi0jaWYgRU5BQkxF
KFhQQVRIKQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhwYXRoRXhjZXB0aW9uTmFtZXNbXSA9
IHsKLSAgICAiSU5WQUxJRF9FWFBSRVNTSU9OX0VSUiIsCi0gICAgIlRZUEVfRVJSIgotfTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKFNWRykKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdmdFeGNl
cHRpb25OYW1lc1tdID0gewotICAgICJTVkdfV1JPTkdfVFlQRV9FUlIiLAotICAgICJTVkdfSU5W
QUxJRF9WQUxVRV9FUlIiLAotICAgICJTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFIgotfTsKLSNl
bmRpZgotCiB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbkNv
ZGUgZWMpCiB7CiAgICAgaWYgKCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY29uc3QgY2hhciogdHlwZSA9ICJET00iOwotICAgIGludCBjb2RlID0g
ZWM7Ci0KLSAgICBjb25zdCBjaGFyKiBjb25zdCogbmFtZVRhYmxlOwotICAKLSAgICBpbnQgbmFt
ZVRhYmxlU2l6ZTsKLSAgICBpbnQgbmFtZUluZGV4OwotICAgIGlmIChjb2RlID49IFJhbmdlRXhj
ZXB0aW9uT2Zmc2V0ICYmIGNvZGUgPD0gUmFuZ2VFeGNlcHRpb25NYXgpIHsKLSAgICAgICAgdHlw
ZSA9ICJET00gUmFuZ2UiOwotICAgICAgICBjb2RlIC09IFJhbmdlRXhjZXB0aW9uT2Zmc2V0Owot
ICAgICAgICBuYW1lSW5kZXggPSBjb2RlOwotICAgICAgICBuYW1lVGFibGUgPSByYW5nZUV4Y2Vw
dGlvbk5hbWVzOwotICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKHJhbmdlRXhjZXB0aW9u
TmFtZXMpIC8gc2l6ZW9mKHJhbmdlRXhjZXB0aW9uTmFtZXNbMF0pOwotICAgIH0gZWxzZSBpZiAo
Y29kZSA+PSBFdmVudEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IEV2ZW50RXhjZXB0aW9uTWF4
KSB7Ci0gICAgICAgIHR5cGUgPSAiRE9NIEV2ZW50cyI7Ci0gICAgICAgIGNvZGUgLT0gRXZlbnRF
eGNlcHRpb25PZmZzZXQ7Ci0gICAgICAgIG5hbWVJbmRleCA9IGNvZGU7Ci0gICAgICAgIG5hbWVU
YWJsZSA9IGV2ZW50RXhjZXB0aW9uTmFtZXM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXpl
b2YoZXZlbnRFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXZlbnRFeGNlcHRpb25OYW1lc1swXSk7
Ci0gICAgfSBlbHNlIGlmIChjb2RlID09IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0KSB7
Ci0gICAgICAgIC8vIEZJWE1FOiB0aGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0
aCBET00gU0VDVVJJVFlfRVJSIHdoZW4gaXQgZmluZHMgaXRzIHdheSB0byB0aGUgc3BlYy4KKyAg
ICAvLyBUbyBiZSByZW1vdmVkOiBTZWUgWE1MSHR0cFJlcXVlc3QuaC4KKyAgICBpZiAoZWMgPT0g
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQgKyBQRVJNSVNTSU9OX0RFTklFRCkgewogICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIEdlbmVyYWxFcnJvciwgIlBlcm1pc3Npb24gZGVuaWVkIik7
CiAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGNvZGUgPiBYTUxIdHRwUmVxdWVzdEV4
Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uTWF4KSB7Ci0g
ICAgICAgIHR5cGUgPSAiWE1MSHR0cFJlcXVlc3QiOwotICAgICAgICAvLyBYTUxIdHRwUmVxdWVz
dCBleGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCAxMDEgYW5kIHdlIGRvbid0IHdhbnQgMTAwIGVt
cHR5IGVsZW1lbnRzIGluIHRoZSBuYW1lIGFycmF5Ci0gICAgICAgIG5hbWVJbmRleCA9IGNvZGUg
LSBORVRXT1JLX0VSUjsKLSAgICAgICAgY29kZSAtPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9m
ZnNldDsKLSAgICAgICAgbmFtZVRhYmxlID0geG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lczsK
LSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5h
bWVzKSAvIHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzWzBdKTsKLSNpZiBFTkFC
TEUoWFBBVEgpCi0gICAgfSBlbHNlIGlmIChjb2RlID49IFhQYXRoRXhjZXB0aW9uT2Zmc2V0ICYm
IGNvZGUgPD0gWFBhdGhFeGNlcHRpb25NYXgpIHsKLSAgICAgICAgdHlwZSA9ICJET00gWFBhdGgi
OwotICAgICAgICAvLyBYUGF0aCBleGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCA1MSBhbmQgd2Ug
ZG9uJ3Qgd2FudCA1MSBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQotICAgICAgICBu
YW1lSW5kZXggPSBjb2RlIC0gSU5WQUxJRF9FWFBSRVNTSU9OX0VSUjsKLSAgICAgICAgY29kZSAt
PSBYUGF0aEV4Y2VwdGlvbk9mZnNldDsKLSAgICAgICAgbmFtZVRhYmxlID0geHBhdGhFeGNlcHRp
b25OYW1lczsKLSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZih4cGF0aEV4Y2VwdGlvbk5h
bWVzKSAvIHNpemVvZih4cGF0aEV4Y2VwdGlvbk5hbWVzWzBdKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShTVkcpCi0gICAgfSBlbHNlIGlmIChjb2RlID49IFNWR0V4Y2VwdGlvbk9mZnNldCAmJiBjb2Rl
IDw9IFNWR0V4Y2VwdGlvbk1heCkgewotICAgICAgICB0eXBlID0gIkRPTSBTVkciOwotICAgICAg
ICBjb2RlIC09IFNWR0V4Y2VwdGlvbk9mZnNldDsKLSAgICAgICAgbmFtZUluZGV4ID0gY29kZTsK
LSAgICAgICAgbmFtZVRhYmxlID0gc3ZnRXhjZXB0aW9uTmFtZXM7Ci0gICAgICAgIG5hbWVUYWJs
ZVNpemUgPSBzaXplb2Yoc3ZnRXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHN2Z0V4Y2VwdGlvbk5h
bWVzWzBdKTsKLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5hbWVJbmRleCA9IGNvZGU7
Ci0gICAgICAgIG5hbWVUYWJsZSA9IGV4Y2VwdGlvbk5hbWVzOwotICAgICAgICBuYW1lVGFibGVT
aXplID0gc2l6ZW9mKGV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihleGNlcHRpb25OYW1lc1swXSk7
CiAgICAgfQogCi0gICAgY29uc3QgY2hhciogbmFtZSA9IChuYW1lSW5kZXggPCBuYW1lVGFibGVT
aXplICYmIG5hbWVJbmRleCA+PSAwKSA/IG5hbWVUYWJsZVtuYW1lSW5kZXhdIDogMDsKKyAgICBF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247CisgICAgZ2V0RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKGVjLCBkZXNjcmlwdGlvbik7CiAKICAgICAvLyAxMDAgY2hhcmFjdGVycyBp
cyBhIGJpZyBlbm91Z2ggYnVmZmVyLCBiZWNhdXNlIHRoZXJlIGFyZToKICAgICAvLyAgIDEzIGNo
YXJhY3RlcnMgaW4gdGhlIG1lc3NhZ2UKLSAgICAvLyAgIDEwIGNoYXJhY3RlcnMgaW4gdGhlIGxv
bmdlc3QgdHlwZSwgIkRPTSBFdmVudHMiCi0gICAgLy8gICAyNyBjaGFyYWN0ZXJzIGluIHRoZSBs
b25nZXN0IG5hbWUsICJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiCisgICAgLy8gICAxMCBj
aGFyYWN0ZXJzIGluIHRoZSBsb25nZXN0IHR5cGUgbmFtZQorICAgIC8vICAgMjcgY2hhcmFjdGVy
cyBpbiB0aGUgbG9uZ2VzdCBleGNlcHRpb24gbmFtZQogICAgIC8vICAgMjAgb3Igc28gZGlnaXRz
IGluIHRoZSBsb25nZXN0IGludGVnZXIncyBBU0NJSSBmb3JtIChldmVuIGlmIGludCBpcyA2NC1i
aXQpCiAgICAgLy8gICAxIGJ5dGUgZm9yIGEgbnVsbCBjaGFyYWN0ZXIKICAgICAvLyBUaGF0IGFk
ZHMgdXAgdG8gYWJvdXQgNzAgYnl0ZXMuCiAgICAgY2hhciBidWZmZXJbMTAwXTsKLQotICAgIGlm
IChuYW1lKQotICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVzOiAlcyBFeGNlcHRpb24gJWQiLCBu
YW1lLCB0eXBlLCBjb2RlKTsKKyAgICBpZiAoZGVzY3JpcHRpb24ubmFtZSkKKyAgICAgICAgc3By
aW50ZihidWZmZXIsICIlczogJXMgRXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24ubmFtZSwgZGVz
Y3JpcHRpb24udHlwZU5hbWUsIGRlc2NyaXB0aW9uLmNvZGUpOwogICAgIGVsc2UKLSAgICAgICAg
c3ByaW50ZihidWZmZXIsICIlcyBFeGNlcHRpb24gJWQiLCB0eXBlLCBjb2RlKTsKKyAgICAgICAg
c3ByaW50ZihidWZmZXIsICIlcyBFeGNlcHRpb24gJWQiLCBkZXNjcmlwdGlvbi50eXBlTmFtZSwg
ZGVzY3JpcHRpb24uY29kZSk7CiAKICAgICBKU09iamVjdCogZXJyb3JPYmplY3QgPSB0aHJvd0Vy
cm9yKGV4ZWMsIEdlbmVyYWxFcnJvciwgYnVmZmVyKTsKLSAgICBlcnJvck9iamVjdC0+cHV0KGV4
ZWMsICJjb2RlIiwganNOdW1iZXIoY29kZSkpOworICAgIGVycm9yT2JqZWN0LT5wdXQoZXhlYywg
ImNvZGUiLCBqc051bWJlcihkZXNjcmlwdGlvbi5jb2RlKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9FeGNlcHRpb25IYW5kbGVycy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRXhjZXB0aW9uSGFuZGxlcnMubW0JKHJldmlzaW9uIDI4NDk5KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMCArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCiAKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlJhbmdl
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiWFBhdGhF
dmFsdWF0b3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKIE5TU3RyaW5nICogRE9N
RXhjZXB0aW9uID0gQCJET01FeGNlcHRpb24iOwogTlNTdHJpbmcgKiBET01SYW5nZUV4Y2VwdGlv
biA9IEAiRE9NUmFuZ2VFeGNlcHRpb24iOwpAQCAtNDMsMzAgKzQwLDM0IEBAIHZvaWQgcmFpc2VE
T01FeGNlcHRpb24oRXhjZXB0aW9uQ29kZSBlYykKIHsKICAgICBBU1NFUlQoZWMpOwogCi0gICAg
TlNTdHJpbmcgKm5hbWUgPSBET01FeGNlcHRpb247CisgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uOworICAgIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYywgZGVz
Y3JpcHRpb24pOworCisgICAgTlNTdHJpbmcgKmV4Y2VwdGlvbk5hbWU7CisgICAgaWYgKHN0cmNt
cChkZXNjcmlwdGlvbi50eXBlTmFtZSwgIkRPTSBSYW5nZSIpID09IDApCisgICAgICAgIGV4Y2Vw
dGlvbk5hbWUgPSBET01SYW5nZUV4Y2VwdGlvbjsKKyAgICBlbHNlIGlmIChzdHJjbXAoZGVzY3Jp
cHRpb24udHlwZU5hbWUsICJET00gRXZlbnRzIikgPT0gMCkKKyAgICAgICAgZXhjZXB0aW9uTmFt
ZSA9IERPTUV2ZW50RXhjZXB0aW9uOworICAgIGVsc2UgaWYgKHN0cmNtcChkZXNjcmlwdGlvbi50
eXBlTmFtZSwgIkRPTSBTVkciKSA9PSAwKQorICAgICAgICBleGNlcHRpb25OYW1lID0gRE9NU1ZH
RXhjZXB0aW9uOworICAgIGVsc2UgaWYgKHN0cmNtcChkZXNjcmlwdGlvbi50eXBlTmFtZSwgIkRP
TSBYUGF0aCIpID09IDApCisgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBET01YUGF0aEV4Y2VwdGlv
bjsKKyAgICBlbHNlCisgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBET01FeGNlcHRpb247CisKKyAg
ICBOU1N0cmluZyAqcmVhc29uOworICAgIGlmIChkZXNjcmlwdGlvbi5uYW1lKQorICAgICAgICBy
ZWFzb24gPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlczogJUAgJWQi
LCBkZXNjcmlwdGlvbi5uYW1lLCBleGNlcHRpb25OYW1lLCBkZXNjcmlwdGlvbi5jb2RlXTsKKyAg
ICBlbHNlCisgICAgICAgIHJlYXNvbiA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0
OkAiKioqICVAICVkIiwgZXhjZXB0aW9uTmFtZSwgZGVzY3JpcHRpb24uY29kZV07CisKKyAgICBO
U0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6ZGVzY3JpcHRpb24uY29kZV0sIGV4
Y2VwdGlvbk5hbWUsIG5pbF07CisKKyAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhj
ZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOmV4Y2VwdGlvbk5hbWUgcmVhc29uOnJlYXNvbiB1c2Vy
SW5mbzp1c2VySW5mb107CisKKyAgICBbcmVhc29uIHJlbGVhc2VdOworICAgIFt1c2VySW5mbyBy
ZWxlYXNlXTsKIAotICAgIGludCBjb2RlID0gZWM7Ci0gICAgaWYgKGVjID49IFJhbmdlRXhjZXB0
aW9uT2Zmc2V0ICYmIGVjIDw9IFJhbmdlRXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIG5hbWUgPSBE
T01SYW5nZUV4Y2VwdGlvbjsKLSAgICAgICAgY29kZSAtPSBSYW5nZUV4Y2VwdGlvbk9mZnNldDsK
LSAgICB9IGVsc2UgaWYgKGVjID49IEV2ZW50RXhjZXB0aW9uT2Zmc2V0ICYmIGVjIDw9IEV2ZW50
RXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIG5hbWUgPSBET01FdmVudEV4Y2VwdGlvbjsKLSAgICAg
ICAgY29kZSAtPSBFdmVudEV4Y2VwdGlvbk9mZnNldDsKLSNpZiBFTkFCTEUoU1ZHKQotICAgIH0g
ZWxzZSBpZiAoZWMgPj0gU1ZHRXhjZXB0aW9uT2Zmc2V0ICYmIGVjIDw9IFNWR0V4Y2VwdGlvbk1h
eCkgewotICAgICAgICBuYW1lID0gRE9NU1ZHRXhjZXB0aW9uOwotICAgICAgICBjb2RlIC09IFNW
R0V4Y2VwdGlvbk9mZnNldDsKLSNlbmRpZgotI2lmIEVOQUJMRShYUEFUSCkKLSAgICB9IGVsc2Ug
aWYgKGVjID49IFhQYXRoRXhjZXB0aW9uT2Zmc2V0ICYmIGVjIDw9IFhQYXRoRXhjZXB0aW9uTWF4
KSB7Ci0gICAgICAgIG5hbWUgPSBET01YUGF0aEV4Y2VwdGlvbjsKLSAgICAgICAgY29kZSAtPSBY
UGF0aEV4Y2VwdGlvbk9mZnNldDsKLSNlbmRpZgotICAgIH0KLQotICAgIE5TU3RyaW5nICpyZWFz
b24gPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIioqKiBFeGNlcHRpb24gcmVjZWl2ZWQg
ZnJvbSBET00gQVBJOiAlZCIsIGNvZGVdOwotICAgIE5TRXhjZXB0aW9uICpleGNlcHRpb24gPSBb
TlNFeGNlcHRpb24gZXhjZXB0aW9uV2l0aE5hbWU6bmFtZSByZWFzb246cmVhc29uCi0gICAgICAg
IHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6Y29kZV0gZm9yS2V5Om5hbWVdXTsKICAgICBbZXhjZXB0aW9uIHJhaXNlXTsK
IH0KIApJbmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHJldmlzaW9uIDI4NDkwKQkoZnJvbSBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcDoyODQ5MCkKKysrIFdlYkNvcmUvZG9tL0V4
Y2VwdGlvbkNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDA0IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2Ft
QHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisvLyBnY2MgMy54
IGNhbid0IGhhbmRsZSBpbmNsdWRpbmcgdGhlIEhhc2hNYXAgcG9pbnRlciBzcGVjaWFsaXphdGlv
biBpbiB0aGlzIGZpbGUKKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmICFkZWZpbmVkIF9fR0xJQkNY
WF9fIC8vIGxlc3MgdGhhbiBnY2MgMy40CisjZGVmaW5lIEhBU0hfTUFQX1BUUl9TUEVDX1dPUktB
Uk9VTkQgMQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJranNfYmlu
ZGluZy5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MSW1h
Z2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSlNOb2RlLmgi
CisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSYW5nZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0LmgiCisjaW5jbHVkZSAia2pzX2RvbS5oIgorI2luY2x1ZGUgImtqc193aW5kb3cu
aCIKKyNpbmNsdWRlIDxranMvY29sbGVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCisjZW5kaWYKKwor
I2lmIEVOQUJMRShYUEFUSCkKKyNpbmNsdWRlICJYUGF0aEV2YWx1YXRvci5oIgorI2VuZGlmCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7Cit1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCituYW1lc3BhY2UgS0pTIHsKKwordHlwZWRlZiBI
YXNoTWFwPHZvaWQqLCBET01PYmplY3QqPiBET01PYmplY3RNYXA7Cit0eXBlZGVmIEhhc2hNYXA8
Tm9kZSosIEpTTm9kZSo+IE5vZGVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBOb2Rl
TWFwKj4gTm9kZVBlckRvY01hcDsKKworLy8gRm9yIGRlYnVnZ2luZywga2VlcCBhIHNldCBvZiB3
cmFwcGVycyBjdXJyZW50bHkgcmVnaXN0ZXJlZCwgYW5kIGNoZWNrIHRoYXQKKy8vIGFsbCBhcmUg
dW5yZWdpc3RlcmVkIGJlZm9yZSB0aGV5IGFyZSBkZXN0cm95ZWQuIFRoaXMgaGFzIGhlbHBlZCB1
cyBmaXggYXQKKy8vIGxlYXN0IG9uZSBidWcuCisKK3N0YXRpYyB2b2lkIGFkZFdyYXBwZXIoRE9N
T2JqZWN0KiB3cmFwcGVyKTsKK3N0YXRpYyB2b2lkIHJlbW92ZVdyYXBwZXIoRE9NT2JqZWN0KiB3
cmFwcGVyKTsKK3N0YXRpYyB2b2lkIHJlbW92ZVdyYXBwZXJzKGNvbnN0IE5vZGVNYXAmIHdyYXBw
ZXJzKTsKKworI2lmZGVmIE5ERUJVRworCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkV3JhcHBlcihE
T01PYmplY3QqKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlV3JhcHBlcihET01P
YmplY3QqKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlV3JhcHBlcnMoY29uc3Qg
Tm9kZU1hcCYpCit7Cit9CisKKyNlbHNlCisKK3N0YXRpYyBIYXNoU2V0PERPTU9iamVjdCo+JiB3
cmFwcGVyU2V0KCkKK3sKKyAgICBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiBzdGF0aWNXcmFw
cGVyU2V0OworICAgIHJldHVybiBzdGF0aWNXcmFwcGVyU2V0OworfQorCitzdGF0aWMgdm9pZCBh
ZGRXcmFwcGVyKERPTU9iamVjdCogd3JhcHBlcikKK3sKKyAgICBBU1NFUlQoIXdyYXBwZXJTZXQo
KS5jb250YWlucyh3cmFwcGVyKSk7CisgICAgd3JhcHBlclNldCgpLmFkZCh3cmFwcGVyKTsKK30K
Kworc3RhdGljIHZvaWQgcmVtb3ZlV3JhcHBlcihET01PYmplY3QqIHdyYXBwZXIpCit7CisgICAg
aWYgKCF3cmFwcGVyKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHdyYXBwZXJTZXQoKS5j
b250YWlucyh3cmFwcGVyKSk7CisgICAgd3JhcHBlclNldCgpLnJlbW92ZSh3cmFwcGVyKTsKK30K
Kworc3RhdGljIHZvaWQgcmVtb3ZlV3JhcHBlcnMoY29uc3QgTm9kZU1hcCYgd3JhcHBlcnMpCit7
CisgICAgZm9yIChOb2RlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHdyYXBwZXJzLmJlZ2luKCk7
IGl0ICE9IHdyYXBwZXJzLmVuZCgpOyArK2l0KQorICAgICAgICByZW1vdmVXcmFwcGVyKGl0LT5z
ZWNvbmQpOworfQorCitET01PYmplY3Q6On5ET01PYmplY3QoKQoreworICAgIEFTU0VSVCghd3Jh
cHBlclNldCgpLmNvbnRhaW5zKHRoaXMpKTsKK30KKworI2VuZGlmCisKK3N0YXRpYyBET01PYmpl
Y3RNYXAmIGRvbU9iamVjdHMoKQoreyAKKyAgICAvLyBEb24ndCB1c2UgbWFsbG9jIGhlcmUuIENh
bGxpbmcgbWFsbG9jIGZyb20gYSBtYXJrIGZ1bmN0aW9uIGNhbiBkZWFkbG9jay4KKyAgICBzdGF0
aWMgRE9NT2JqZWN0TWFwIHN0YXRpY0RPTU9iamVjdHM7CisgICAgcmV0dXJuIHN0YXRpY0RPTU9i
amVjdHM7Cit9CisKK3N0YXRpYyBOb2RlUGVyRG9jTWFwJiBkb21Ob2Rlc1BlckRvY3VtZW50KCkK
K3sKKyAgICAvLyBkb21Ob2Rlc1BlckRvY3VtZW50KCkgY2FsbGVycyBtdXN0IHN5bmNocm9uaXpl
IHVzaW5nIHRoZSBKU0xvY2sgYmVjYXVzZSAKKyAgICAvLyBkb21Ob2Rlc1BlckRvY3VtZW50KCkg
aXMgY2FsbGVkIGZyb20gYSBtYXJrIGZ1bmN0aW9uLCB3aGljaCBjYW4gcnVuCisgICAgLy8gb24g
YSBzZWNvbmRhcnkgdGhyZWFkLgorICAgIEFTU0VSVChKU0xvY2s6OmxvY2tDb3VudCgpKTsKKwor
ICAgIC8vIERvbid0IHVzZSBtYWxsb2MgaGVyZS4gQ2FsbGluZyBtYWxsb2MgZnJvbSBhIG1hcmsg
ZnVuY3Rpb24gY2FuIGRlYWRsb2NrLgorICAgIHN0YXRpYyBOb2RlUGVyRG9jTWFwIHN0YXRpY0RP
TU5vZGVzUGVyRG9jdW1lbnQ7CisgICAgcmV0dXJuIHN0YXRpY0RPTU5vZGVzUGVyRG9jdW1lbnQ7
Cit9CisKK0RPTU9iamVjdCogU2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU9iamVjdCh2b2lkKiBv
YmplY3RIYW5kbGUpIAoreworICAgIHJldHVybiBkb21PYmplY3RzKCkuZ2V0KG9iamVjdEhhbmRs
ZSk7Cit9CisKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OnB1dERPTU9iamVjdCh2b2lkKiBvYmpl
Y3RIYW5kbGUsIERPTU9iamVjdCogd3JhcHBlcikgCit7CisgICAgYWRkV3JhcHBlcih3cmFwcGVy
KTsKKyAgICBkb21PYmplY3RzKCkuc2V0KG9iamVjdEhhbmRsZSwgd3JhcHBlcik7Cit9CisKK3Zv
aWQgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdCh2b2lkKiBvYmplY3RIYW5kbGUp
Cit7CisgICAgcmVtb3ZlV3JhcHBlcihkb21PYmplY3RzKCkudGFrZShvYmplY3RIYW5kbGUpKTsK
K30KKworSlNOb2RlKiBTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZvckRvY3VtZW50KERv
Y3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oZG9tT2JqZWN0cygpLmdldChub2RlKSk7
CisgICAgTm9kZU1hcCogZG9jdW1lbnREaWN0ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmdldChk
b2N1bWVudCk7CisgICAgaWYgKGRvY3VtZW50RGljdCkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50
RGljdC0+Z2V0KG5vZGUpOworICAgIHJldHVybiBOVUxMOworfQorCit2b2lkIFNjcmlwdEludGVy
cHJldGVyOjpmb3JnZXRET01Ob2RlRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2Rl
KiBub2RlKQoreworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgcmVtb3ZlV3JhcHBlcihk
b21PYmplY3RzKCkudGFrZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTm9k
ZU1hcCogZG9jdW1lbnREaWN0ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmdldChkb2N1bWVudCk7
CisgICAgaWYgKGRvY3VtZW50RGljdCkKKyAgICAgICAgcmVtb3ZlV3JhcHBlcihkb2N1bWVudERp
Y3QtPnRha2Uobm9kZSkpOworfQorCit2b2lkIFNjcmlwdEludGVycHJldGVyOjpwdXRET01Ob2Rl
Rm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlLCBKU05vZGUqIHdyYXBw
ZXIpCit7CisgICAgYWRkV3JhcHBlcih3cmFwcGVyKTsKKyAgICBpZiAoIWRvY3VtZW50KSB7Cisg
ICAgICAgIGRvbU9iamVjdHMoKS5zZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgTm9kZU1hcCogZG9jdW1lbnREaWN0ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgp
LmdldChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudERpY3QpIHsKKyAgICAgICAgZG9jdW1l
bnREaWN0ID0gbmV3IE5vZGVNYXA7CisgICAgICAgIGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5zZXQo
ZG9jdW1lbnQsIGRvY3VtZW50RGljdCk7CisgICAgfQorICAgIGRvY3VtZW50RGljdC0+c2V0KG5v
ZGUsIHdyYXBwZXIpOworfQorCit2b2lkIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRBbGxET01O
b2Rlc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoZG9jdW1l
bnQpOworICAgIE5vZGVNYXAqIG1hcCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS50YWtlKGRvY3Vt
ZW50KTsKKyAgICBpZiAoIW1hcCkKKyAgICAgICAgcmV0dXJuOworICAgIHJlbW92ZVdyYXBwZXJz
KCptYXApOworICAgIGRlbGV0ZSBtYXA7Cit9CisKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6Om1h
cmtET01Ob2Rlc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2MpCit7CisgICAgTm9kZVBlckRvY01h
cDo6aXRlcmF0b3IgZGljdEl0ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmZpbmQoZG9jKTsKKyAg
ICBpZiAoZGljdEl0ICE9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5lbmQoKSkgeworICAgICAgICBO
b2RlTWFwKiBub2RlRGljdCA9IGRpY3RJdC0+c2Vjb25kOworICAgICAgICBOb2RlTWFwOjppdGVy
YXRvciBub2RlRW5kID0gbm9kZURpY3QtPmVuZCgpOworICAgICAgICBmb3IgKE5vZGVNYXA6Oml0
ZXJhdG9yIG5vZGVJdCA9IG5vZGVEaWN0LT5iZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsgKytu
b2RlSXQpIHsKKyAgICAgICAgICAgIEpTTm9kZSoganNOb2RlID0gbm9kZUl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0ganNOb2RlLT5pbXBsKCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIGRvbid0IG1hcmsgd3JhcHBlcnMgZm9yIG5vZGVzIHRoYXQgYXJlIG5vIGxv
bmdlciBpbiB0aGUKKyAgICAgICAgICAgIC8vIGRvY3VtZW50IC0gdGhleSBzaG91bGQgbm90IGJl
IHNhdmVkIGlmIHRoZSBub2RlIGlzIG5vdAorICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHJlYWNo
YWJsZSBmcm9tIEpTLgorICAgICAgICAgICAgLy8gSG93ZXZlciwgaW1hZ2UgZWxlbWVudHMgdGhh
dCBhcmVuJ3QgaW4gdGhlIGRvY3VtZW50IGFyZSBhbHNvCisgICAgICAgICAgICAvLyBtYXJrZWQs
IGlmIHRoZXkgYXJlIG5vdCBkb25lIGxvYWRpbmcgeWV0LgorICAgICAgICAgICAgaWYgKCFqc05v
ZGUtPm1hcmtlZCgpICYmIChub2RlLT5pbkRvY3VtZW50KCkgfHwgKG5vZGUtPmhhc1RhZ05hbWUo
aW1nVGFnKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICFzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSktPmhh
dmVGaXJlZExvYWRFdmVudCgpKSkpCisgICAgICAgICAgICAgICAganNOb2RlLT5tYXJrKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OnVwZGF0ZURPTU5v
ZGVEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jLCBEb2N1bWVudCogbmV3RG9j
KQoreworICAgIEFTU0VSVChvbGREb2MgIT0gbmV3RG9jKTsKKyAgICBKU05vZGUqIHdyYXBwZXIg
PSBnZXRET01Ob2RlRm9yRG9jdW1lbnQob2xkRG9jLCBub2RlKTsKKyAgICBpZiAod3JhcHBlcikg
eworICAgICAgICByZW1vdmVXcmFwcGVyKHdyYXBwZXIpOworICAgICAgICBwdXRET01Ob2RlRm9y
RG9jdW1lbnQobmV3RG9jLCBub2RlLCB3cmFwcGVyKTsKKyAgICAgICAgZm9yZ2V0RE9NTm9kZUZv
ckRvY3VtZW50KG9sZERvYywgbm9kZSk7CisgICAgICAgIGFkZFdyYXBwZXIod3JhcHBlcik7Cisg
ICAgfQorfQorCitKU1ZhbHVlKiBqc1N0cmluZ09yTnVsbChjb25zdCBTdHJpbmcmIHMpCit7Cisg
ICAgaWYgKHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4g
anNTdHJpbmcocyk7Cit9CisKK0pTVmFsdWUqIGpzT3duZWRTdHJpbmdPck51bGwoY29uc3QgS0pT
OjpVU3RyaW5nJiBzKQoreworICAgIGlmIChzLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4ganNO
dWxsKCk7CisgICAgcmV0dXJuIGpzT3duZWRTdHJpbmcocyk7Cit9CisKK0pTVmFsdWUqIGpzU3Ry
aW5nT3JVbmRlZmluZWQoY29uc3QgU3RyaW5nJiBzKQoreworICAgIGlmIChzLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4ganNTdHJpbmcocyk7Cit9
CisKK0pTVmFsdWUqIGpzU3RyaW5nT3JGYWxzZShjb25zdCBTdHJpbmcmIHMpCit7CisgICAgaWYg
KHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIHJldHVy
biBqc1N0cmluZyhzKTsKK30KKworU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsKQoreworICAgIGlmICh2YWwtPmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbC0+dG9TdHJpbmcoZXhlYyk7
Cit9CisKK1N0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsKQoreworICAgIGlmICh2YWwtPmlzVW5kZWZpbmVkT3JO
dWxsKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsLT50b1N0cmlu
ZyhleGVjKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlvbk5hbWVzW10g
PSB7CisgICAgMCwKKyAgICAiSU5ERVhfU0laRV9FUlIiLAorICAgICJET01TVFJJTkdfU0laRV9F
UlIiLAorICAgICJISUVSQVJDSFlfUkVRVUVTVF9FUlIiLAorICAgICJXUk9OR19ET0NVTUVOVF9F
UlIiLAorICAgICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLAorICAgICJOT19EQVRBX0FMTE9XRURf
RVJSIiwKKyAgICAiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIiwKKyAgICAiTk9UX0ZPVU5E
X0VSUiIsCisgICAgIk5PVF9TVVBQT1JURURfRVJSIiwKKyAgICAiSU5VU0VfQVRUUklCVVRFX0VS
UiIsCisgICAgIklOVkFMSURfU1RBVEVfRVJSIiwKKyAgICAiU1lOVEFYX0VSUiIsCisgICAgIklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsCisgICAgIk5BTUVTUEFDRV9FUlIiLAorICAgICJJTlZB
TElEX0FDQ0VTU19FUlIiLAorICAgICJWQUxJREFUSU9OX0VSUiIsCisgICAgIlRZUEVfTUlTTUFU
Q0hfRVJSIiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByYW5nZUV4Y2VwdGlvbk5h
bWVzW10gPSB7CisgICAgMCwgIkJBRF9CT1VOREFSWVBPSU5UU19FUlIiLCAiSU5WQUxJRF9OT0RF
X1RZUEVfRVJSIgorfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV2ZW50RXhjZXB0aW9u
TmFtZXNbXSA9IHsKKyAgICAiVU5TUEVDSUZJRURfRVZFTlRfVFlQRV9FUlIiCit9OworCitzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lc1tdID0gewor
ICAgICJORVRXT1JLX0VSUiIKK307CisKKyNpZiBFTkFCTEUoWFBBVEgpCitzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgeHBhdGhFeGNlcHRpb25OYW1lc1tdID0geworICAgICJJTlZBTElEX0VYUFJF
U1NJT05fRVJSIiwKKyAgICAiVFlQRV9FUlIiCit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoU1ZH
KQorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHN2Z0V4Y2VwdGlvbk5hbWVzW10gPSB7CisgICAg
IlNWR19XUk9OR19UWVBFX0VSUiIsCisgICAgIlNWR19JTlZBTElEX1ZBTFVFX0VSUiIsCisgICAg
IlNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEUiCit9OworI2VuZGlmCisKK3ZvaWQgc2V0RE9NRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykKK3sKKyAgICBpZiAoIWVj
IHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBj
aGFyKiB0eXBlID0gIkRPTSI7CisgICAgaW50IGNvZGUgPSBlYzsKKworICAgIGNvbnN0IGNoYXIq
IGNvbnN0KiBuYW1lVGFibGU7CisgIAorICAgIGludCBuYW1lVGFibGVTaXplOworICAgIGludCBu
YW1lSW5kZXg7CisgICAgaWYgKGNvZGUgPj0gUmFuZ2VFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8
PSBSYW5nZUV4Y2VwdGlvbk1heCkgeworICAgICAgICB0eXBlID0gIkRPTSBSYW5nZSI7CisgICAg
ICAgIGNvZGUgLT0gUmFuZ2VFeGNlcHRpb25PZmZzZXQ7CisgICAgICAgIG5hbWVJbmRleCA9IGNv
ZGU7CisgICAgICAgIG5hbWVUYWJsZSA9IHJhbmdlRXhjZXB0aW9uTmFtZXM7CisgICAgICAgIG5h
bWVUYWJsZVNpemUgPSBzaXplb2YocmFuZ2VFeGNlcHRpb25OYW1lcykgLyBzaXplb2YocmFuZ2VF
eGNlcHRpb25OYW1lc1swXSk7CisgICAgfSBlbHNlIGlmIChjb2RlID49IEV2ZW50RXhjZXB0aW9u
T2Zmc2V0ICYmIGNvZGUgPD0gRXZlbnRFeGNlcHRpb25NYXgpIHsKKyAgICAgICAgdHlwZSA9ICJE
T00gRXZlbnRzIjsKKyAgICAgICAgY29kZSAtPSBFdmVudEV4Y2VwdGlvbk9mZnNldDsKKyAgICAg
ICAgbmFtZUluZGV4ID0gY29kZTsKKyAgICAgICAgbmFtZVRhYmxlID0gZXZlbnRFeGNlcHRpb25O
YW1lczsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihldmVudEV4Y2VwdGlvbk5hbWVz
KSAvIHNpemVvZihldmVudEV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICB9IGVsc2UgaWYgKGNvZGUg
PT0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQpIHsKKyAgICAgICAgLy8gRklYTUU6IHRo
aXMgZXhjZXB0aW9uIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIERPTSBTRUNVUklUWV9FUlIgd2hl
biBpdCBmaW5kcyBpdHMgd2F5IHRvIHRoZSBzcGVjLgorICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IEdlbmVyYWxFcnJvciwgIlBlcm1pc3Npb24gZGVuaWVkIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9IGVsc2UgaWYgKGNvZGUgPiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCAmJiBjb2Rl
IDw9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uTWF4KSB7CisgICAgICAgIHR5cGUgPSAiWE1MSHR0
cFJlcXVlc3QiOworICAgICAgICAvLyBYTUxIdHRwUmVxdWVzdCBleGNlcHRpb24gY29kZXMgc3Rh
cnQgd2l0aCAxMDEgYW5kIHdlIGRvbid0IHdhbnQgMTAwIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBu
YW1lIGFycmF5CisgICAgICAgIG5hbWVJbmRleCA9IGNvZGUgLSBORVRXT1JLX0VSUjsKKyAgICAg
ICAgY29kZSAtPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldDsKKyAgICAgICAgbmFtZVRh
YmxlID0geG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lczsKKyAgICAgICAgbmFtZVRhYmxlU2l6
ZSA9IHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZih4bWxIdHRw
UmVxdWVzdEV4Y2VwdGlvbk5hbWVzWzBdKTsKKyNpZiBFTkFCTEUoWFBBVEgpCisgICAgfSBlbHNl
IGlmIChjb2RlID49IFhQYXRoRXhjZXB0aW9uT2Zmc2V0ICYmIGNvZGUgPD0gWFBhdGhFeGNlcHRp
b25NYXgpIHsKKyAgICAgICAgdHlwZSA9ICJET00gWFBhdGgiOworICAgICAgICAvLyBYUGF0aCBl
eGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCA1MSBhbmQgd2UgZG9uJ3Qgd2FudCA1MSBlbXB0eSBl
bGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQorICAgICAgICBuYW1lSW5kZXggPSBjb2RlIC0gSU5W
QUxJRF9FWFBSRVNTSU9OX0VSUjsKKyAgICAgICAgY29kZSAtPSBYUGF0aEV4Y2VwdGlvbk9mZnNl
dDsKKyAgICAgICAgbmFtZVRhYmxlID0geHBhdGhFeGNlcHRpb25OYW1lczsKKyAgICAgICAgbmFt
ZVRhYmxlU2l6ZSA9IHNpemVvZih4cGF0aEV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZih4cGF0aEV4
Y2VwdGlvbk5hbWVzWzBdKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgfSBlbHNlIGlm
IChjb2RlID49IFNWR0V4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFNWR0V4Y2VwdGlvbk1heCkg
eworICAgICAgICB0eXBlID0gIkRPTSBTVkciOworICAgICAgICBjb2RlIC09IFNWR0V4Y2VwdGlv
bk9mZnNldDsKKyAgICAgICAgbmFtZUluZGV4ID0gY29kZTsKKyAgICAgICAgbmFtZVRhYmxlID0g
c3ZnRXhjZXB0aW9uTmFtZXM7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2Yoc3ZnRXhj
ZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHN2Z0V4Y2VwdGlvbk5hbWVzWzBdKTsKKyNlbmRpZgorICAg
IH0gZWxzZSB7CisgICAgICAgIG5hbWVJbmRleCA9IGNvZGU7CisgICAgICAgIG5hbWVUYWJsZSA9
IGV4Y2VwdGlvbk5hbWVzOworICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKGV4Y2VwdGlv
bk5hbWVzKSAvIHNpemVvZihleGNlcHRpb25OYW1lc1swXSk7CisgICAgfQorCisgICAgY29uc3Qg
Y2hhciogbmFtZSA9IChuYW1lSW5kZXggPCBuYW1lVGFibGVTaXplICYmIG5hbWVJbmRleCA+PSAw
KSA/IG5hbWVUYWJsZVtuYW1lSW5kZXhdIDogMDsKKworICAgIC8vIDEwMCBjaGFyYWN0ZXJzIGlz
IGEgYmlnIGVub3VnaCBidWZmZXIsIGJlY2F1c2UgdGhlcmUgYXJlOgorICAgIC8vICAgMTMgY2hh
cmFjdGVycyBpbiB0aGUgbWVzc2FnZQorICAgIC8vICAgMTAgY2hhcmFjdGVycyBpbiB0aGUgbG9u
Z2VzdCB0eXBlLCAiRE9NIEV2ZW50cyIKKyAgICAvLyAgIDI3IGNoYXJhY3RlcnMgaW4gdGhlIGxv
bmdlc3QgbmFtZSwgIk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIKKyAgICAvLyAgIDIwIG9y
IHNvIGRpZ2l0cyBpbiB0aGUgbG9uZ2VzdCBpbnRlZ2VyJ3MgQVNDSUkgZm9ybSAoZXZlbiBpZiBp
bnQgaXMgNjQtYml0KQorICAgIC8vICAgMSBieXRlIGZvciBhIG51bGwgY2hhcmFjdGVyCisgICAg
Ly8gVGhhdCBhZGRzIHVwIHRvIGFib3V0IDcwIGJ5dGVzLgorICAgIGNoYXIgYnVmZmVyWzEwMF07
CisKKyAgICBpZiAobmFtZSkKKyAgICAgICAgc3ByaW50ZihidWZmZXIsICIlczogJXMgRXhjZXB0
aW9uICVkIiwgbmFtZSwgdHlwZSwgY29kZSk7CisgICAgZWxzZQorICAgICAgICBzcHJpbnRmKGJ1
ZmZlciwgIiVzIEV4Y2VwdGlvbiAlZCIsIHR5cGUsIGNvZGUpOworCisgICAgSlNPYmplY3QqIGVy
cm9yT2JqZWN0ID0gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsIGJ1ZmZlcik7CisgICAg
ZXJyb3JPYmplY3QtPnB1dChleGVjLCAiY29kZSIsIGpzTnVtYmVyKGNvZGUpKTsKK30KKworfQpJ
bmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHJldmlzaW9uIDI4NDkwKQorKysgV2ViQ29yZS9kb20v
RXhjZXB0aW9uQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzEsMzQgQEAKIC8qCi0g
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxz
YW1Ad2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgogICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0vLyBnY2MgMy54
IGNhbid0IGhhbmRsZSBpbmNsdWRpbmcgdGhlIEhhc2hNYXAgcG9pbnRlciBzcGVjaWFsaXphdGlv
biBpbiB0aGlzIGZpbGUKLSNpZiBkZWZpbmVkIF9fR05VQ19fICYmICFkZWZpbmVkIF9fR0xJQkNY
WF9fIC8vIGxlc3MgdGhhbiBnY2MgMy40Ci0jZGVmaW5lIEhBU0hfTUFQX1BUUl9TUEVDX1dPUktB
Uk9VTkQgMQotI2VuZGlmCi0KICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJranNfYmlu
ZGluZy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUg
IkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmFuZ2VF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgotI2luY2x1ZGUgImtqc19k
b20uaCIKLSNpbmNsdWRlICJranNfd2luZG93LmgiCi0jaW5jbHVkZSA8a2pzL2NvbGxlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUg
IlNWR0V4Y2VwdGlvbi5oIgpAQCAtNTEsMjMyICszOCw5IEBACiAjaW5jbHVkZSAiWFBhdGhFdmFs
dWF0b3IuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVz
cGFjZSBFdmVudE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotbmFtZXNwYWNl
IEtKUyB7Ci0KLXR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgRE9NT2JqZWN0Kj4gRE9NT2JqZWN0TWFw
OwotdHlwZWRlZiBIYXNoTWFwPE5vZGUqLCBKU05vZGUqPiBOb2RlTWFwOwotdHlwZWRlZiBIYXNo
TWFwPERvY3VtZW50KiwgTm9kZU1hcCo+IE5vZGVQZXJEb2NNYXA7Ci0KLS8vIEZvciBkZWJ1Z2dp
bmcsIGtlZXAgYSBzZXQgb2Ygd3JhcHBlcnMgY3VycmVudGx5IHJlZ2lzdGVyZWQsIGFuZCBjaGVj
ayB0aGF0Ci0vLyBhbGwgYXJlIHVucmVnaXN0ZXJlZCBiZWZvcmUgdGhleSBhcmUgZGVzdHJveWVk
LiBUaGlzIGhhcyBoZWxwZWQgdXMgZml4IGF0Ci0vLyBsZWFzdCBvbmUgYnVnLgotCi1zdGF0aWMg
dm9pZCBhZGRXcmFwcGVyKERPTU9iamVjdCogd3JhcHBlcik7Ci1zdGF0aWMgdm9pZCByZW1vdmVX
cmFwcGVyKERPTU9iamVjdCogd3JhcHBlcik7Ci1zdGF0aWMgdm9pZCByZW1vdmVXcmFwcGVycyhj
b25zdCBOb2RlTWFwJiB3cmFwcGVycyk7Ci0KLSNpZmRlZiBOREVCVUcKLQotc3RhdGljIGlubGlu
ZSB2b2lkIGFkZFdyYXBwZXIoRE9NT2JqZWN0KikKLXsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk
IHJlbW92ZVdyYXBwZXIoRE9NT2JqZWN0KikKLXsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHJl
bW92ZVdyYXBwZXJzKGNvbnN0IE5vZGVNYXAmKQotewotfQotCi0jZWxzZQotCi1zdGF0aWMgSGFz
aFNldDxET01PYmplY3QqPiYgd3JhcHBlclNldCgpCi17Ci0gICAgc3RhdGljIEhhc2hTZXQ8RE9N
T2JqZWN0Kj4gc3RhdGljV3JhcHBlclNldDsKLSAgICByZXR1cm4gc3RhdGljV3JhcHBlclNldDsK
LX0KLQotc3RhdGljIHZvaWQgYWRkV3JhcHBlcihET01PYmplY3QqIHdyYXBwZXIpCi17Ci0gICAg
QVNTRVJUKCF3cmFwcGVyU2V0KCkuY29udGFpbnMod3JhcHBlcikpOwotICAgIHdyYXBwZXJTZXQo
KS5hZGQod3JhcHBlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbW92ZVdyYXBwZXIoRE9NT2JqZWN0
KiB3cmFwcGVyKQotewotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuOwotICAgIEFT
U0VSVCh3cmFwcGVyU2V0KCkuY29udGFpbnMod3JhcHBlcikpOwotICAgIHdyYXBwZXJTZXQoKS5y
ZW1vdmUod3JhcHBlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbW92ZVdyYXBwZXJzKGNvbnN0IE5v
ZGVNYXAmIHdyYXBwZXJzKQotewotICAgIGZvciAoTm9kZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB3cmFwcGVycy5iZWdpbigpOyBpdCAhPSB3cmFwcGVycy5lbmQoKTsgKytpdCkKLSAgICAgICAg
cmVtb3ZlV3JhcHBlcihpdC0+c2Vjb25kKTsKLX0KLQotRE9NT2JqZWN0Ojp+RE9NT2JqZWN0KCkK
LXsKLSAgICBBU1NFUlQoIXdyYXBwZXJTZXQoKS5jb250YWlucyh0aGlzKSk7Ci19Ci0KLSNlbmRp
ZgotCi1zdGF0aWMgRE9NT2JqZWN0TWFwJiBkb21PYmplY3RzKCkKLXsgCi0gICAgLy8gRG9uJ3Qg
dXNlIG1hbGxvYyBoZXJlLiBDYWxsaW5nIG1hbGxvYyBmcm9tIGEgbWFyayBmdW5jdGlvbiBjYW4g
ZGVhZGxvY2suCi0gICAgc3RhdGljIERPTU9iamVjdE1hcCBzdGF0aWNET01PYmplY3RzOwotICAg
IHJldHVybiBzdGF0aWNET01PYmplY3RzOwotfQotCi1zdGF0aWMgTm9kZVBlckRvY01hcCYgZG9t
Tm9kZXNQZXJEb2N1bWVudCgpCi17Ci0gICAgLy8gZG9tTm9kZXNQZXJEb2N1bWVudCgpIGNhbGxl
cnMgbXVzdCBzeW5jaHJvbml6ZSB1c2luZyB0aGUgSlNMb2NrIGJlY2F1c2UgCi0gICAgLy8gZG9t
Tm9kZXNQZXJEb2N1bWVudCgpIGlzIGNhbGxlZCBmcm9tIGEgbWFyayBmdW5jdGlvbiwgd2hpY2gg
Y2FuIHJ1bgotICAgIC8vIG9uIGEgc2Vjb25kYXJ5IHRocmVhZC4KLSAgICBBU1NFUlQoSlNMb2Nr
Ojpsb2NrQ291bnQoKSk7Ci0KLSAgICAvLyBEb24ndCB1c2UgbWFsbG9jIGhlcmUuIENhbGxpbmcg
bWFsbG9jIGZyb20gYSBtYXJrIGZ1bmN0aW9uIGNhbiBkZWFkbG9jay4KLSAgICBzdGF0aWMgTm9k
ZVBlckRvY01hcCBzdGF0aWNET01Ob2Rlc1BlckRvY3VtZW50OwotICAgIHJldHVybiBzdGF0aWNE
T01Ob2Rlc1BlckRvY3VtZW50OwotfQotCi1ET01PYmplY3QqIFNjcmlwdEludGVycHJldGVyOjpn
ZXRET01PYmplY3Qodm9pZCogb2JqZWN0SGFuZGxlKSAKLXsKLSAgICByZXR1cm4gZG9tT2JqZWN0
cygpLmdldChvYmplY3RIYW5kbGUpOwotfQotCi12b2lkIFNjcmlwdEludGVycHJldGVyOjpwdXRE
T01PYmplY3Qodm9pZCogb2JqZWN0SGFuZGxlLCBET01PYmplY3QqIHdyYXBwZXIpIAotewotICAg
IGFkZFdyYXBwZXIod3JhcHBlcik7Ci0gICAgZG9tT2JqZWN0cygpLnNldChvYmplY3RIYW5kbGUs
IHdyYXBwZXIpOwotfQotCi12b2lkIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01PYmplY3Qo
dm9pZCogb2JqZWN0SGFuZGxlKQotewotICAgIHJlbW92ZVdyYXBwZXIoZG9tT2JqZWN0cygpLnRh
a2Uob2JqZWN0SGFuZGxlKSk7Ci19Ci0KLUpTTm9kZSogU2NyaXB0SW50ZXJwcmV0ZXI6OmdldERP
TU5vZGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCi17Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTTm9kZSo+KGRvbU9i
amVjdHMoKS5nZXQobm9kZSkpOwotICAgIE5vZGVNYXAqIGRvY3VtZW50RGljdCA9IGRvbU5vZGVz
UGVyRG9jdW1lbnQoKS5nZXQoZG9jdW1lbnQpOwotICAgIGlmIChkb2N1bWVudERpY3QpCi0gICAg
ICAgIHJldHVybiBkb2N1bWVudERpY3QtPmdldChub2RlKTsKLSAgICByZXR1cm4gTlVMTDsKLX0K
LQotdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NTm9kZUZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAg
ICAgIHJlbW92ZVdyYXBwZXIoZG9tT2JqZWN0cygpLnRha2Uobm9kZSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIE5vZGVNYXAqIGRvY3VtZW50RGljdCA9IGRvbU5vZGVzUGVyRG9jdW1l
bnQoKS5nZXQoZG9jdW1lbnQpOwotICAgIGlmIChkb2N1bWVudERpY3QpCi0gICAgICAgIHJlbW92
ZVdyYXBwZXIoZG9jdW1lbnREaWN0LT50YWtlKG5vZGUpKTsKLX0KLQotdm9pZCBTY3JpcHRJbnRl
cnByZXRlcjo6cHV0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSog
bm9kZSwgSlNOb2RlKiB3cmFwcGVyKQotewotICAgIGFkZFdyYXBwZXIod3JhcHBlcik7Ci0gICAg
aWYgKCFkb2N1bWVudCkgewotICAgICAgICBkb21PYmplY3RzKCkuc2V0KG5vZGUsIHdyYXBwZXIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIE5vZGVNYXAqIGRvY3VtZW50RGljdCA9IGRv
bU5vZGVzUGVyRG9jdW1lbnQoKS5nZXQoZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnREaWN0
KSB7Ci0gICAgICAgIGRvY3VtZW50RGljdCA9IG5ldyBOb2RlTWFwOwotICAgICAgICBkb21Ob2Rl
c1BlckRvY3VtZW50KCkuc2V0KGRvY3VtZW50LCBkb2N1bWVudERpY3QpOwotICAgIH0KLSAgICBk
b2N1bWVudERpY3QtPnNldChub2RlLCB3cmFwcGVyKTsKLX0KLQotdm9pZCBTY3JpcHRJbnRlcnBy
ZXRlcjo6Zm9yZ2V0QWxsRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi17
Ci0gICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICBOb2RlTWFwKiBtYXAgPSBkb21Ob2Rlc1BlckRv
Y3VtZW50KCkudGFrZShkb2N1bWVudCk7Ci0gICAgaWYgKCFtYXApCi0gICAgICAgIHJldHVybjsK
LSAgICByZW1vdmVXcmFwcGVycygqbWFwKTsKLSAgICBkZWxldGUgbWFwOwotfQotCi12b2lkIFNj
cmlwdEludGVycHJldGVyOjptYXJrRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jKQot
ewotICAgIE5vZGVQZXJEb2NNYXA6Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVzUGVyRG9jdW1l
bnQoKS5maW5kKGRvYyk7Ci0gICAgaWYgKGRpY3RJdCAhPSBkb21Ob2Rlc1BlckRvY3VtZW50KCku
ZW5kKCkpIHsKLSAgICAgICAgTm9kZU1hcCogbm9kZURpY3QgPSBkaWN0SXQtPnNlY29uZDsKLSAg
ICAgICAgTm9kZU1hcDo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT5lbmQoKTsKLSAgICAg
ICAgZm9yIChOb2RlTWFwOjppdGVyYXRvciBub2RlSXQgPSBub2RlRGljdC0+YmVnaW4oKTsgbm9k
ZUl0ICE9IG5vZGVFbmQ7ICsrbm9kZUl0KSB7Ci0gICAgICAgICAgICBKU05vZGUqIGpzTm9kZSA9
IG5vZGVJdC0+c2Vjb25kOwotICAgICAgICAgICAgTm9kZSogbm9kZSA9IGpzTm9kZS0+aW1wbCgp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBkb24ndCBtYXJrIHdyYXBwZXJzIGZvciBu
b2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlCi0gICAgICAgICAgICAvLyBkb2N1bWVudCAt
IHRoZXkgc2hvdWxkIG5vdCBiZSBzYXZlZCBpZiB0aGUgbm9kZSBpcyBub3QKLSAgICAgICAgICAg
IC8vIG90aGVyd2lzZSByZWFjaGFibGUgZnJvbSBKUy4KLSAgICAgICAgICAgIC8vIEhvd2V2ZXIs
IGltYWdlIGVsZW1lbnRzIHRoYXQgYXJlbid0IGluIHRoZSBkb2N1bWVudCBhcmUgYWxzbwotICAg
ICAgICAgICAgLy8gbWFya2VkLCBpZiB0aGV5IGFyZSBub3QgZG9uZSBsb2FkaW5nIHlldC4KLSAg
ICAgICAgICAgIGlmICghanNOb2RlLT5tYXJrZWQoKSAmJiAobm9kZS0+aW5Eb2N1bWVudCgpIHx8
IChub2RlLT5oYXNUYWdOYW1lKGltZ1RhZykgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RhdGljX2Nhc3Q8SFRNTEltYWdl
RWxlbWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkpKQotICAgICAgICAgICAgICAg
IGpzTm9kZS0+bWFyaygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFNjcmlwdEludGVy
cHJldGVyOjp1cGRhdGVET01Ob2RlRG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG9sZERv
YywgRG9jdW1lbnQqIG5ld0RvYykKLXsKLSAgICBBU1NFUlQob2xkRG9jICE9IG5ld0RvYyk7Ci0g
ICAgSlNOb2RlKiB3cmFwcGVyID0gZ2V0RE9NTm9kZUZvckRvY3VtZW50KG9sZERvYywgbm9kZSk7
Ci0gICAgaWYgKHdyYXBwZXIpIHsKLSAgICAgICAgcmVtb3ZlV3JhcHBlcih3cmFwcGVyKTsKLSAg
ICAgICAgcHV0RE9NTm9kZUZvckRvY3VtZW50KG5ld0RvYywgbm9kZSwgd3JhcHBlcik7Ci0gICAg
ICAgIGZvcmdldERPTU5vZGVGb3JEb2N1bWVudChvbGREb2MsIG5vZGUpOwotICAgICAgICBhZGRX
cmFwcGVyKHdyYXBwZXIpOwotICAgIH0KLX0KLQotSlNWYWx1ZSoganNTdHJpbmdPck51bGwoY29u
c3QgU3RyaW5nJiBzKQotewotICAgIGlmIChzLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4ganNO
dWxsKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKHMpOwotfQotCi1KU1ZhbHVlKiBqc093bmVkU3Ry
aW5nT3JOdWxsKGNvbnN0IEtKUzo6VVN0cmluZyYgcykKLXsKLSAgICBpZiAocy5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiBqc093bmVkU3RyaW5nKHMpOwot
fQotCi1KU1ZhbHVlKiBqc1N0cmluZ09yVW5kZWZpbmVkKGNvbnN0IFN0cmluZyYgcykKLXsKLSAg
ICBpZiAocy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0
dXJuIGpzU3RyaW5nKHMpOwotfQotCi1KU1ZhbHVlKiBqc1N0cmluZ09yRmFsc2UoY29uc3QgU3Ry
aW5nJiBzKQotewotICAgIGlmIChzLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4ganNCb29sZWFu
KGZhbHNlKTsKLSAgICByZXR1cm4ganNTdHJpbmcocyk7Ci19Ci0KLVN0cmluZyB2YWx1ZVRvU3Ry
aW5nV2l0aE51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbCkKLXsKLSAgICBp
ZiAodmFsLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB2
YWwtPnRvU3RyaW5nKGV4ZWMpOwotfQotCi1TdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbCkKLXsKLSAgICBpZiAo
dmFsLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIHZhbC0+dG9TdHJpbmcoZXhlYyk7Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBleGNlcHRpb25OYW1lc1tdID0gewotICAgIDAsCiAgICAg
IklOREVYX1NJWkVfRVJSIiwKICAgICAiRE9NU1RSSU5HX1NJWkVfRVJSIiwKICAgICAiSElFUkFS
Q0hZX1JFUVVFU1RfRVJSIiwKQEAgLTI5MywxMSArNTcsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGV4Y2VwdGlvbk5hbWVzWwogICAgICJOQU1FU1BBQ0VfRVJSIiwKICAgICAiSU5WQUxJ
RF9BQ0NFU1NfRVJSIiwKICAgICAiVkFMSURBVElPTl9FUlIiLAotICAgICJUWVBFX01JU01BVENI
X0VSUiIsCisgICAgIlRZUEVfTUlTTUFUQ0hfRVJSIgogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHJhbmdlRXhjZXB0aW9uTmFtZXNbXSA9IHsKLSAgICAwLCAiQkFEX0JPVU5EQVJZUE9J
TlRTX0VSUiIsICJJTlZBTElEX05PREVfVFlQRV9FUlIiCisgICAgIkJBRF9CT1VOREFSWVBPSU5U
U19FUlIiLAorICAgICJJTlZBTElEX05PREVfVFlQRV9FUlIiCiB9OwogCiBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgZXZlbnRFeGNlcHRpb25OYW1lc1tdID0gewpAQCAtMzIzLDgyICs4OCw2NCBA
QCBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc3ZnRXhjZXB0aW9uTmFtCiB9OwogI2VuZGlmCiAK
LXZvaWQgc2V0RE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykK
K3ZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7Ci0gICAgaWYgKCFlYyB8fCBleGVj
LT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChlYyk7CiAKLSAg
ICBjb25zdCBjaGFyKiB0eXBlID0gIkRPTSI7CisgICAgY29uc3QgY2hhciogdHlwZU5hbWUgPSAi
RE9NIjsKICAgICBpbnQgY29kZSA9IGVjOwotCiAgICAgY29uc3QgY2hhciogY29uc3QqIG5hbWVU
YWJsZTsKLSAgCiAgICAgaW50IG5hbWVUYWJsZVNpemU7Ci0gICAgaW50IG5hbWVJbmRleDsKKyAg
ICBpbnQgbmFtZVRhYmxlT2Zmc2V0OwogICAgIGlmIChjb2RlID49IFJhbmdlRXhjZXB0aW9uT2Zm
c2V0ICYmIGNvZGUgPD0gUmFuZ2VFeGNlcHRpb25NYXgpIHsKLSAgICAgICAgdHlwZSA9ICJET00g
UmFuZ2UiOworICAgICAgICB0eXBlTmFtZSA9ICJET00gUmFuZ2UiOwogICAgICAgICBjb2RlIC09
IFJhbmdlRXhjZXB0aW9uT2Zmc2V0OwotICAgICAgICBuYW1lSW5kZXggPSBjb2RlOwogICAgICAg
ICBuYW1lVGFibGUgPSByYW5nZUV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBuYW1lVGFibGVTaXpl
ID0gc2l6ZW9mKHJhbmdlRXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHJhbmdlRXhjZXB0aW9uTmFt
ZXNbMF0pOworICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBCQURfQk9VTkRBUllQT0lOVFNfRVJS
OwogICAgIH0gZWxzZSBpZiAoY29kZSA+PSBFdmVudEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9
IEV2ZW50RXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIHR5cGUgPSAiRE9NIEV2ZW50cyI7CisgICAg
ICAgIHR5cGVOYW1lID0gIkRPTSBFdmVudHMiOwogICAgICAgICBjb2RlIC09IEV2ZW50RXhjZXB0
aW9uT2Zmc2V0OwotICAgICAgICBuYW1lSW5kZXggPSBjb2RlOwogICAgICAgICBuYW1lVGFibGUg
PSBldmVudEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKGV2
ZW50RXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKGV2ZW50RXhjZXB0aW9uTmFtZXNbMF0pOwotICAg
IH0gZWxzZSBpZiAoY29kZSA9PSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCkgewotICAg
ICAgICAvLyBGSVhNRTogdGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggRE9N
IFNFQ1VSSVRZX0VSUiB3aGVuIGl0IGZpbmRzIGl0cyB3YXkgdG8gdGhlIHNwZWMuCi0gICAgICAg
IHRocm93RXJyb3IoZXhlYywgR2VuZXJhbEVycm9yLCAiUGVybWlzc2lvbiBkZW5pZWQiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAoY29kZSA+IFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uT2Zmc2V0ICYmIGNvZGUgPD0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25NYXgpIHsKLSAgICAg
ICAgdHlwZSA9ICJYTUxIdHRwUmVxdWVzdCI7Ci0gICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGV4
Y2VwdGlvbiBjb2RlcyBzdGFydCB3aXRoIDEwMSBhbmQgd2UgZG9uJ3Qgd2FudCAxMDAgZW1wdHkg
ZWxlbWVudHMgaW4gdGhlIG5hbWUgYXJyYXkKLSAgICAgICAgbmFtZUluZGV4ID0gY29kZSAtIE5F
VFdPUktfRVJSOworICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBVTlNQRUNJRklFRF9FVkVOVF9U
WVBFX0VSUjsKKyAgICB9IGVsc2UgaWYgKGNvZGUgPj0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25P
ZmZzZXQgJiYgY29kZSA8PSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk1heCkgeworICAgICAgICB0
eXBlTmFtZSA9ICJYTUxIdHRwUmVxdWVzdCI7CiAgICAgICAgIGNvZGUgLT0gWE1MSHR0cFJlcXVl
c3RFeGNlcHRpb25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHhtbEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uTmFtZXM7CiAgICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2YoeG1sSHR0cFJlcXVl
c3RFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lc1sw
XSk7CisgICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGV4Y2VwdGlvbiBjb2RlcyBzdGFydCB3aXRo
IDEwMSBhbmQgd2UgZG9uJ3Qgd2FudCAxMDAgZW1wdHkgZWxlbWVudHMgaW4gdGhlIG5hbWUgYXJy
YXkKKyAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gTkVUV09SS19FUlI7CiAjaWYgRU5BQkxFKFhQ
QVRIKQogICAgIH0gZWxzZSBpZiAoY29kZSA+PSBYUGF0aEV4Y2VwdGlvbk9mZnNldCAmJiBjb2Rl
IDw9IFhQYXRoRXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIHR5cGUgPSAiRE9NIFhQYXRoIjsKLSAg
ICAgICAgLy8gWFBhdGggZXhjZXB0aW9uIGNvZGVzIHN0YXJ0IHdpdGggNTEgYW5kIHdlIGRvbid0
IHdhbnQgNTEgZW1wdHkgZWxlbWVudHMgaW4gdGhlIG5hbWUgYXJyYXkKLSAgICAgICAgbmFtZUlu
ZGV4ID0gY29kZSAtIElOVkFMSURfRVhQUkVTU0lPTl9FUlI7CisgICAgICAgIHR5cGVOYW1lID0g
IkRPTSBYUGF0aCI7CiAgICAgICAgIGNvZGUgLT0gWFBhdGhFeGNlcHRpb25PZmZzZXQ7CiAgICAg
ICAgIG5hbWVUYWJsZSA9IHhwYXRoRXhjZXB0aW9uTmFtZXM7CiAgICAgICAgIG5hbWVUYWJsZVNp
emUgPSBzaXplb2YoeHBhdGhFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeHBhdGhFeGNlcHRpb25O
YW1lc1swXSk7CisgICAgICAgIC8vIFhQYXRoIGV4Y2VwdGlvbiBjb2RlcyBzdGFydCB3aXRoIDUx
IGFuZCB3ZSBkb24ndCB3YW50IDUxIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBuYW1lIGFycmF5Cisg
ICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IElOVkFMSURfRVhQUkVTU0lPTl9FUlI7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoU1ZHKQogICAgIH0gZWxzZSBpZiAoY29kZSA+PSBTVkdFeGNlcHRpb25PZmZz
ZXQgJiYgY29kZSA8PSBTVkdFeGNlcHRpb25NYXgpIHsKLSAgICAgICAgdHlwZSA9ICJET00gU1ZH
IjsKKyAgICAgICAgdHlwZU5hbWUgPSAiRE9NIFNWRyI7CiAgICAgICAgIGNvZGUgLT0gU1ZHRXhj
ZXB0aW9uT2Zmc2V0OwotICAgICAgICBuYW1lSW5kZXggPSBjb2RlOwogICAgICAgICBuYW1lVGFi
bGUgPSBzdmdFeGNlcHRpb25OYW1lczsKICAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihz
dmdFeGNlcHRpb25OYW1lcykgLyBzaXplb2Yoc3ZnRXhjZXB0aW9uTmFtZXNbMF0pOworICAgICAg
ICBuYW1lVGFibGVPZmZzZXQgPSBTVkdfV1JPTkdfVFlQRV9FUlI7CiAjZW5kaWYKICAgICB9IGVs
c2UgewotICAgICAgICBuYW1lSW5kZXggPSBjb2RlOworICAgICAgICB0eXBlTmFtZSA9ICJET00i
OwogICAgICAgICBuYW1lVGFibGUgPSBleGNlcHRpb25OYW1lczsKICAgICAgICAgbmFtZVRhYmxl
U2l6ZSA9IHNpemVvZihleGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXhjZXB0aW9uTmFtZXNbMF0p
OworICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBJTkRFWF9TSVpFX0VSUjsKICAgICB9CiAKLSAg
ICBjb25zdCBjaGFyKiBuYW1lID0gKG5hbWVJbmRleCA8IG5hbWVUYWJsZVNpemUgJiYgbmFtZUlu
ZGV4ID49IDApID8gbmFtZVRhYmxlW25hbWVJbmRleF0gOiAwOwotCi0gICAgLy8gMTAwIGNoYXJh
Y3RlcnMgaXMgYSBiaWcgZW5vdWdoIGJ1ZmZlciwgYmVjYXVzZSB0aGVyZSBhcmU6Ci0gICAgLy8g
ICAxMyBjaGFyYWN0ZXJzIGluIHRoZSBtZXNzYWdlCi0gICAgLy8gICAxMCBjaGFyYWN0ZXJzIGlu
IHRoZSBsb25nZXN0IHR5cGUsICJET00gRXZlbnRzIgotICAgIC8vICAgMjcgY2hhcmFjdGVycyBp
biB0aGUgbG9uZ2VzdCBuYW1lLCAiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIgotICAgIC8v
ICAgMjAgb3Igc28gZGlnaXRzIGluIHRoZSBsb25nZXN0IGludGVnZXIncyBBU0NJSSBmb3JtIChl
dmVuIGlmIGludCBpcyA2NC1iaXQpCi0gICAgLy8gICAxIGJ5dGUgZm9yIGEgbnVsbCBjaGFyYWN0
ZXIKLSAgICAvLyBUaGF0IGFkZHMgdXAgdG8gYWJvdXQgNzAgYnl0ZXMuCi0gICAgY2hhciBidWZm
ZXJbMTAwXTsKLQotICAgIGlmIChuYW1lKQotICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVzOiAl
cyBFeGNlcHRpb24gJWQiLCBuYW1lLCB0eXBlLCBjb2RlKTsKLSAgICBlbHNlCi0gICAgICAgIHNw
cmludGYoYnVmZmVyLCAiJXMgRXhjZXB0aW9uICVkIiwgdHlwZSwgY29kZSk7CisgICAgZGVzY3Jp
cHRpb24udHlwZU5hbWUgPSB0eXBlTmFtZTsKKyAgICBkZXNjcmlwdGlvbi5uYW1lID0gKGVjID49
IG5hbWVUYWJsZU9mZnNldCAmJiBlYyAtIG5hbWVUYWJsZU9mZnNldCA8IG5hbWVUYWJsZVNpemUp
ID8gbmFtZVRhYmxlW2VjIC0gbmFtZVRhYmxlT2Zmc2V0XSA6IDA7CisgICAgZGVzY3JpcHRpb24u
Y29kZSA9IGNvZGU7CiAKLSAgICBKU09iamVjdCogZXJyb3JPYmplY3QgPSB0aHJvd0Vycm9yKGV4
ZWMsIEdlbmVyYWxFcnJvciwgYnVmZmVyKTsKLSAgICBlcnJvck9iamVjdC0+cHV0KGV4ZWMsICJj
b2RlIiwganNOdW1iZXIoY29kZSkpOworICAgIC8vIEFsbCBleGNlcHRpb25zIHVzZWQgaW4gdGhl
IERPTSBjb2RlIHNob3VsZCBoYXZlIG5hbWVzLgorICAgIEFTU0VSVChkZXNjcmlwdGlvbi5uYW1l
KTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkocmV2aXNpb24gMjg0OTkpCisrKyBXZWJD
b3JlL2RvbS9FeGNlcHRpb25Db2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC01MSw2ICs1MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFRZUEVfTUlTTUFUQ0hfRVJSID0gMTcKICAgICB9OwogCisgICAgc3RydWN0IEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiB7CisgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1lOyAvLyBo
YXMgc3BhY2VzIGFuZCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIGV4Y2VwdGlvbiBkZXNjcmlwdGlv
biBzdHJpbmdzOyBtYXhpbXVtIGxlbmd0aCBpcyAxMCBjaGFyYWN0ZXJzCisgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWU7IC8vIGV4Y2VwdGlvbiBuYW1lLCBhbHNvIGludGVuZGVkIGZvciB1c2UgaW4g
ZXhjZXB0aW9uIGRlc2NyaXB0aW9uIHN0cmluZ3M7IDAgaWYgbmFtZSBub3Qga25vd247IG1heGlt
dW0gbGVuZ3RoIGlzIDI3IGNoYXJhY3RlcnMKKyAgICAgICAgaW50IGNvZGU7IC8vIG51bWVyaWMg
dmFsdWUgb2YgdGhlIGV4Y2VwdGlvbiB3aXRoaW4gYSBwYXJ0aWN1bGFyIHR5cGUKKyAgICB9Owor
ICAgIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUsIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiYpOworCiB9CiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRXhjZXB0aW9uLmgJ
KHJldmlzaW9uIDI4NDk5KQorKysgV2ViQ29yZS9zdmcvU1ZHRXhjZXB0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDggKzIxLDExIEBACiAKICNpZm5kZWYgU1ZHRXhjZXB0aW9uX2gKICNkZWZp
bmUgU1ZHRXhjZXB0aW9uX2gKKwogI2lmIEVOQUJMRShTVkcpCiAKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjb25zdCBpbnQgU1ZHRXhj
ZXB0aW9uT2Zmc2V0ID0gMzAwOwpAQCAtMzQsMTcgKzM3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSAgID0gU1ZHRXhjZXB0aW9uT2Zm
c2V0ICsgMgogICAgIH07CiAKLSAgICAvLyBUaGlzIGNsYXNzIGlzIE5FVkVSIHVzZWQgaW5zaWRl
IGtzdmcyLiBJdCBvbmx5IGluaGVyaXRzIGZyb20gU2hhcmVkIGZvciBJREwgZ2VuZXJhdGlvbi4K
ICAgICBjbGFzcyBTVkdFeGNlcHRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdFeGNlcHRpb24+
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8vIEZvcndhcmQgZGVjbGFyZSB0aGVzZSBlbnVtcyBp
biB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbgotICAgICAgICAvLyBX
ZSBkbyBOT1QgbWF0Y2ggdGhlIFczQyBoZXJlIC0gd2UgY2FuJ3QgcmV0dXJuIDAvMS8yIGFzIEpT
IHZhbHVlcyAtIHdlIGhhdmUgdG8gbWF0Y2ggb3VycyEKICAgICAgICAgZW51bSB7Ci0gICAgICAg
ICAgICBTVkdfV1JPTkdfVFlQRV9FUlIgICAgICAgICAgPSBXZWJDb3JlOjpTVkdfV1JPTkdfVFlQ
RV9FUlIgLSBTVkdFeGNlcHRpb25PZmZzZXQsCi0gICAgICAgICAgICBTVkdfSU5WQUxJRF9WQUxV
RV9FUlIgICAgICAgPSBXZWJDb3JlOjpTVkdfSU5WQUxJRF9WQUxVRV9FUlIgLSBTVkdFeGNlcHRp
b25PZmZzZXQsCi0gICAgICAgICAgICBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFICAgPSBXZWJD
b3JlOjpTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFIC0gU1ZHRXhjZXB0aW9uT2Zmc2V0CisgICAg
ICAgICAgICBTVkdfV1JPTkdfVFlQRV9FUlIgICAgICAgICAgPSAwLAorICAgICAgICAgICAgU1ZH
X0lOVkFMSURfVkFMVUVfRVJSICAgICAgID0gMSwKKyAgICAgICAgICAgIFNWR19NQVRSSVhfTk9U
X0lOVkVSVEFCTEUgICA9IDIKICAgICAgICAgfTsKICAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQo=
</data>
<flag name="review"
          id="7645"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>