<?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>107362</bug_id>
          
          <creation_ts>2013-01-18 23:45:10 -0800</creation_ts>
          <short_desc>[WK2] Remove obsolete plug-in sandboxing code</short_desc>
          <delta_ts>2013-01-20 10:59:01 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811325</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-18 23:45:10 -0800</bug_when>
    <thetext>Remove obsolete plug-in sandboxing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811329</commentid>
    <comment_count>1</comment_count>
      <attachid>183606</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-18 23:50:54 -0800</bug_when>
    <thetext>Created attachment 183606
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811331</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 23:53:51 -0800</bug_when>
    <thetext>Attachment 183606 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811332</commentid>
    <comment_count>3</comment_count>
      <attachid>183607</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-18 23:55:48 -0800</bug_when>
    <thetext>Created attachment 183607
regenerated the patch with a saved ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811407</commentid>
    <comment_count>4</comment_count>
      <attachid>183607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-19 08:07:49 -0800</bug_when>
    <thetext>Comment on attachment 183607
regenerated the patch with a saved ChangeLog

View in context: https://bugs.webkit.org/attachment.cgi?id=183607&amp;action=review

&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:328
&gt; -    RetainPtr&lt;NSString&gt; profileString = [[NSString alloc] initWithContentsOfURL:(NSURL *)sandboxURL.get() encoding:NSUTF8StringEncoding error:NULL];
&gt; +    RetainPtr&lt;NSString&gt; profileString = adoptNS([[NSString alloc] initWithContentsOfURL:(NSURL *)sandboxURL.get() encoding:NSUTF8StringEncoding error:NULL]);
&gt;      if (!profileString)
&gt;          return;
&gt;  
&gt; -    enterSandbox([profileString.get() UTF8String], 0, 0);
&gt; +    enterSandbox([profileString.get() UTF8String]);

Seems crazy to decode UTF-8 then re-encode as UTF8. If we want to use initWIthContentsOfURL: then I think we should use the one on NSData, not NSString, here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811408</commentid>
    <comment_count>5</comment_count>
      <attachid>183607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-19 08:08:24 -0800</bug_when>
    <thetext>Comment on attachment 183607
regenerated the patch with a saved ChangeLog

View in context: https://bugs.webkit.org/attachment.cgi?id=183607&amp;action=review

&gt;&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:328
&gt;&gt; +    enterSandbox([profileString.get() UTF8String]);
&gt; 
&gt; Seems crazy to decode UTF-8 then re-encode as UTF8. If we want to use initWIthContentsOfURL: then I think we should use the one on NSData, not NSString, here.

Another way to put it is, this is a really roundabout way to add a 0 byte to the end of some data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811636</commentid>
    <comment_count>6</comment_count>
      <attachid>183607</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-20 10:53:32 -0800</bug_when>
    <thetext>Comment on attachment 183607
regenerated the patch with a saved ChangeLog

Thank you for the review!

Switching to NSData is a good idea, I&apos;ll probably do it when touching this code the next time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811640</commentid>
    <comment_count>7</comment_count>
      <attachid>183607</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 10:58:57 -0800</bug_when>
    <thetext>Comment on attachment 183607
regenerated the patch with a saved ChangeLog

Clearing flags on attachment: 183607

Committed r140274: &lt;http://trac.webkit.org/changeset/140274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811641</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 10:59:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183606</attachid>
            <date>2013-01-18 23:50:54 -0800</date>
            <delta_ts>2013-01-18 23:55:48 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>SandboxNPAPI.txt</filename>
            <type>text/plain</type>
            <size>41295</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTE4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBw
bHVnLWluIHNhbmRib3hpbmcgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsdWdpbnMvbnBhcGktc2FuZGJveC5oOiBSZW1vdmVkLgorCiAyMDEzLTAxLTE4ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtNYWNd
IFJlbW92ZSB1bnVzZWQgcGFnZVNjYWxlRmFjdG9yIGFuZCBwb3NpdGlvblJlbGF0aXZlVG9CYXNl
IGFyZ3VtZW50cyBpbiBHcmFwaGljc0xheWVyQ0EuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzk5NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTEzNjgxLDcgKzEzNjgxLDYgQEAKIAkJRTEyODRCQjAxMDQ0OUZGQTAwRUFF
QjUyIC8qIEpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTI4NEJEMzEwNDRBMDFFMDBFQUVCNTIgLyogRE9NUGFnZVRyYW5zaXRp
b25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVBh
Z2VUcmFuc2l0aW9uRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjg0
QkQ0MTA0NEEwMUUwMEVBRUI1MiAvKiBET01QYWdlVHJhbnNpdGlvbkV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEyOUNCRDIxNTAxNzAyMjAwQTdDNUZCIC8qIG5wYXBp
LXNhbmRib3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gIm5wYXBpLXNhbmRib3guaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZl
bnRUYXJnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRU
YXJnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTM0RjVBQTEyRUUzNDNG
MDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50UmVjdEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODYyLDcg
KzE1ODYxLDYgQEAKIAkJCQlBOUM2RTRFRDBENzQ1RTM4MDA2NDQyRTkgLyogRE9NUGx1Z2luQXJy
YXkuY3BwICovLAogCQkJCUE5QzZFNEVFMEQ3NDVFMzgwMDY0NDJFOSAvKiBET01QbHVnaW5BcnJh
eS5oICovLAogCQkJCUE5QzZFNjYxMEQ3NDY3MUUwMDY0NDJFOSAvKiBET01QbHVnaW5BcnJheS5p
ZGwgKi8sCi0JCQkJRTEyOUNCRDIxNTAxNzAyMjAwQTdDNUZCIC8qIG5wYXBpLXNhbmRib3guaCAq
LywKIAkJCQkxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCAqLywKIAkJCQkxQTIx
OUIzQTBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCAqLywKIAkJCQkxQTkyN0ZEMDE0
MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL25wYXBpLXNhbmRib3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL25wYXBpLXNhbmRib3guaAkocmV2aXNpb24gMTM5OTY1KQorKysgU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ucGFwaS1zYW5kYm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0vKiEKLSAqIEBoZWFkZXIgV2ViS2l0IE1hYyBTYW5kYm94Ci0gKgotICog
VGhpcyBoZWFkZXIgcHJvdmlkZXMgYW4gKkVYUEVSSU1FTlRBTCogQVBJIGZvciBOUEFQSSBwbHVn
LWlucyB0aGF0IHdpc2gKLSAqIHRvIHJlZHVjZSB0aGVpciBydW50aW1lIHByaXZpbGVnZXMuIFdo
ZW4gZW50ZXJpbmcgdGhlIHNhbmRib3gsIGFkb3B0aW5nCi0gKiBwbHVnLWlucyBzcGVjaWZ5IGEg
d2hpdGVsaXN0IG9mIGZpbGVzIHRoZXkgd2lzaCB0byBoYXZlIGF2YWlsYWJsZSBmb3IKLSAqIHJl
YWRpbmcgYW5kIHdyaXRpbmcuIFBsdWctaW5zIHRoYXQgbmVlZCB0byBoYXZlIGFjY2VzcyB0byBh
cmJpdHJhcnkgZmlsZXMsCi0gKiBzdWNoIGFzIHRvIGVuYWJsZSB1c2VyLWluaXRpYXRlZCBmaWxl
IHVwbG9hZHMgb3IgZG93bmxvYWRzLCBjYW4gaW52b2tlCi0gKiBuYXRpdmUgQ29jb2EgQVBJcywg
d2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IGdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBwbHVnLWlu
LgotICoKLSAqCi0gKiBTZWN1cml0eSBjaGFyYWN0ZXJpc3RpY3MKLSAqCi0gKiBTYW5kYm94ZWQg
cGx1Zy1pbidzIGxvY2FsIGZpbGUgYWNjZXNzIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIHVuaW9uIG9m
OgotICoKLSAqIDEuIFRoZSBmaWxlIHdoaXRlbGlzdCBzcGVjaWZpZWQgYnkgdGhlIHBsdWctaW4g
d2hlbiBlbnRlcmluZyB0aGUgc2FuZGJveC4KLSAqIDIuIEFueSBmaWxlcyBvYnRhaW5lZCBhdCBy
dW50aW1lIHRocm91Z2ggdGhlIHNlY3VyZSBPcGVuIGFuZCBTYXZlIGRpYWxvZ3MuCi0gKiAzLiBB
bnkgZmlsZXMgdGhhdCB3ZXJlIG9wZW4gYmVmb3JlIGVudGVyaW5nIHRoZSBzYW5kYm94LgotICoK
LSAqIEltcGxlbWVudGF0aW9uIG1heSBhZGRpdGlvbmFsbHkgY2hvb3NlIHRvIHJlc3RyaWN0IHRo
ZSBjcmVhdGlvbiBvZiBJUEMKLSAqIGNoYW5uZWxzIG9yIHRoZSB1c2Ugb2Ygb3RoZXIgc2VjdXJp
dHktc2Vuc2l0aXZlIHN5c3RlbSByZXNvdXJjZXMsIHN1Y2ggYXMKLSAqIHRoZSBhYmlsaXR5IHRv
IHNwYXduIGFkZGl0aW9uYWwgcHJvY2Vzc2VzLiBIb3dldmVyLCBhbnkgc3VjaCByZXNvdXJjZXMK
LSAqIGFjcXVpcmVkIGJlZm9yZSBlbnRyeSBpbnRvIHRoZSBzYW5kYm94IGFyZSBndWFyYW50ZWVk
IHRvIHJlbWFpbiBhdmFpbGFibGUKLSAqIHdpdGhpbiBpdC4gRm9yIGV4YW1wbGUsIHBsdWctaW5z
IGFyZSBmcmVlIHRvIHNwYXduIGEgdHJ1c3RlZCBicm9rZXIgcHJvY2VzcwotICogYmVmb3JlIGVu
dGVyaW5nIHRoZSBzYW5kYm94IGFuZCB0byBlc3RhYmxpc2ggYW4gSVBDIGNoYW5uZWwgd2l0aCBp
dC4gVGhlCi0gKiBjaGFubmVsIHdpbGwgcmVtYWluIGF2YWlsYWJsZSB3aXRoaW4gdGhlIHNhbmRi
b3ggZXZlbiBpZiB0aGUgaW1wbGVtZW50YXRpb24KLSAqIGlzIGhpZ2hseSByZXN0cmljdGl2ZSBh
bmQgYWxsb3dzIG5laXRoZXIgcHJvY2VzcyBjcmVhdGlvbiBub3IgSVBDIGNoYW5uZWwKLSAqIGVz
dGFibGlzaG1lbnQuCi0gKi8KLQotCi0jaWZuZGVmIG5wYXBpX3NhbmRib3hfaAotI2RlZmluZSBu
cGFwaV9zYW5kYm94X2gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRp
ZgotCi0vKiEKLSAqIEBjb25zdGFudCBXS05WU2FuZGJveEZ1bmN0aW9ucwotICogVXNlIHRoaXMg
Y29uc3RhbnQgd2l0aCBOUE5fR2V0VmFsdWUgdG8gZ2V0IGEgcG9pbnRlciB0byBXS05TYW5kYm94
RnVuY3Rpb25zCi0gKiBzdHJ1Y3R1cmUsIHdoaWNoIGNvbnRhaW5zIHBvaW50ZXJzIHRvIHNhbmRi
b3hpbmcgZnVuY3Rpb25zLgotICovCi0jZGVmaW5lIFdLTlZTYW5kYm94RnVuY3Rpb25zIDc0NjU5
Ci0KLS8qIQotICogVmVyc2lvbiBvZiBXS05TYW5kYm94RnVuY3Rpb25zIHN0cnVjdHVyZSB0aGF0
IGlzIHJldHVybmVkIGJ5IE5QTl9HZXRWYWx1ZS4KLSAqLwotI2RlZmluZSBXS05WU2FuZGJveEZ1
bmN0aW9uc1ZlcnNpb25DdXJyZW50IDEKLQotLyohCi0gKiBAZnVuY3Rpb24gV0tOX0VudGVyU2Fu
ZGJveAotICogUmVxdWVzdHMgdGhhdCB0aGUgcGx1Zy1pbiBpbnN0YW5jZSBiZSBwbGFjZWQgaW4g
YSBzYW5kYm94LgotICoKLSAqIEBwYXJhbSByZWFkT25seVBhdGhzCi0gKiBOVUxMLXRlcm1pbmF0
ZWQgQyBhcnJheSBvZiBwYXRocyB0byBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCB0aGUgcGx1
Zy1pbgotICogd2lzaGVzIHRvIGhhdmUgYXZhaWxhYmxlIGluIHRoZSBzYW5kYm94IGZvciByZWFk
LW9ubHkgYWNjZXNzLiBBbnkKLSAqIGRpcmVjdG9yaWVzIGluIHRoaXMgYXJyYXkgd2lsbCBhdXRv
bWF0aWNhbGx5IGV4dGVuZCB0aGUgc2FuZGJveCB0byBlbmNvbXBhc3MKLSAqIGFsbCB0aGVpciBm
aWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMsIG1lYW5pbmcgdGhhdCB0aGV5IHdpbGwgYmUgYXZhaWxh
YmxlCi0gKiB0aHJvdWdoIE9TIGxldmVsIGZpbGUgYWNjZXNzIGZ1bmN0aW9ucyBmb3IgcmVhZGlu
Zy4KLSAqCi0gKiBAcGFyYW0gcmVhZFdyaXRlUGF0aHMKLSAqIE5VTEwtdGVybWluYXRlZCBDIGFy
cmF5IG9mIHBhdGhzIHRvIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHRoZSBwbHVnLWluCi0g
KiB3aXNoZXMgdG8gaGF2ZSBhdmFpbGFibGUgaW4gdGhlIHNhbmRib3ggZm9yIGJvdGggcmVhZGlu
ZyBhbmQgd3JpdGluZy4KLSAqIFR5cGljYWxseSwgdGhpcyBhcnJheSB3aWxsIGluY2x1ZGUgcGF0
aHMgdG8gdGhlIHBsdWctaW4ncyBsb2NhbCBjYWNoZXMsIGEKLSAqIGRpcmVjdG9yeSBmb3IgdGVt
cG9yYXJ5IGZpbGVzLCBhbmQgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgd2hpY2ggYXJlIG5vdAot
ICogc2VjdXJpdHkgc2Vuc2l0aXZlLCBpbiB0aGF0IHRoZXkgYXJlIG5vdCBjb25zdWx0ZWQgd2hl
biBkZXRlcm1pbmluZyB0aGUKLSAqIGxpc3RzIG9mIHBhdGhzIHRvIHBhc3MgdG8gdGhpcyBmdW5j
dGlvbiBkdXJpbmcgcGx1Zy1pbiBpbnN0YW50aWF0aW9uLgotICogQW55IGRpcmVjdG9yaWVzIGlu
IHRoaXMgYXJyYXkgd2lsbCBhdXRvbWF0aWNhbGx5IGV4dGVuZCB0aGUgc2FuZGJveCB0bwotICog
ZW5jb21wYXNzIGFsbCB0aGVpciBmaWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMsIG1lYW5pbmcgdGhh
dCB0aGV5IHdpbGwgYmUKLSAqIGF2YWlsYWJsZSB0aHJvdWdoIE9TIGxldmVsIGZpbGUgYWNjZXNz
IGZ1bmN0aW9ucyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KLSAqCi0gKiBAcmVzdWx0Ci0gKiBQ
bGFjZXMgdGhlIHBsdWctaW4gaW5zdGFuY2UgaW4gYSBzYW5kYm94LiBUaGUgc2FuZGJveCBhbGxv
d3MgcmVhZC1vbmx5IGFjY2VzcwotICogdG8gcGF0aHMgc3BlY2lmaWVkIGJ5IGByZWFkT25seVBh
dGhzYCBhbmQgcmVhZC13cml0ZSBhY2Nlc3MgdG8KLSAqIGByZWFkV3JpdGVQYXRoc2AuIElmIHRo
ZSBzYW1lIHBhdGggYXBwZWFycyBpbiBib3RoIGByZWFkT25seVBhdGhzYCBhbmQKLSAqIGByZWFk
V3JpdGVQYXRoc2AsIGFjY2VzcyB0byB0aGF0IHBhdGggd2lsbCBiZSByZWFkLW9ubHkuIE5vIG90
aGVyIGZpbGVzeXN0ZW0KLSAqIGFjY2VzcyBpcyBhdmFpbGFibGUgZXhjZXB0IGFzIGV4cHJlc3Ns
eSBwZXJtaXR0ZWQgYnkgdGhlIHVzZXIgdGhyb3VnaAotICogTlNPcGVuUGFuZWwgYW5kIE5TU2F2
ZVBhbmVsIGludm9jYXRpb25zLiAgUmV0dXJucyBOUEVSUl9OT19FUlJPUiB3aGVuIHRoZQotICog
bmF2aWdhdG9yIGhhcyBzdWNjZXNzZnVsbHkgcGxhY2VkIHRoZSBwbHVnLWluIGluIGEgc2FuZGJv
eCBhbmQKLSAqIE5QRVJSX0dFTkVSSUNfRVJST1IgaWYgdGhlIHRoZSBwbHVnLWluIGluc3RhbmNl
IHdhcyBhbHJlYWR5IHBsYWNlZCBpbiBhIHNhbmRib3gKLSAqIHdpdGggYSBwcmlvciBjYWxsIHRv
IHRoaXMgZnVuY3Rpb24uIElmIGVudGVyaW5nIHNhbmRib3ggZmFpbHMgZm9yIGFueSBvdGhlciBy
ZWFzb24sCi0gKiB0aGUgcHJvY2VzcyBpcyB0ZXJtaW5hdGVkLgotICogTm90ZSB0aGF0IGVpdGhl
ciBvciBib3RoIGByZWFkT25seVBhdGhzYCBhbmQgYHJlYWRXcml0ZVBhdGhzYCBtYXkgYmUgTlVM
TC4KLSAqCi0gKiBAZGlzY3Vzc2lvbgotICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk
IGFzIGVhcmx5IGFzIHBvc3NpYmxlIGR1cmluZyBwbHVnLWluCi0gKiBpbnN0YW50aWF0aW9uIGFu
ZCBBTFdBWVMgYmVmb3JlIGFueSB1bnRydXN0ZWQgY29kZSBoYXMgcnVuLiBHZW5lcmFsbHksIHRo
ZQotICogb25seSB0aGluZ3MgdGhhdCB0aGUgcGx1Zy1pbiBzaG91bGQgZG8gYmVmb3JlIGVudGVy
aW5nIHRoZSBzYW5kYm94IGFyZSB0bwotICogZGV0ZXJtaW5lIHRoZSBwYXRocyB0byBwYXNzIGlu
IGFzIGByZWFkT25seVBhdGhzYCBhbmQgYHJlYWRXcml0ZVBhdGhzYCwgYW5kCi0gKiB0byBlc3Rh
Ymxpc2ggYW55IElQQyBjaGFubmVscyB0byBiZSB1c2VkIGZyb20gdGhlIHNhbmRib3guIEluIGNh
c2VzIHdoZXJlCi0gKiB0aGUgcGx1Zy1pbiBtdXN0IHBhcnNlIGl0cyBjb25maWd1cmF0aW9uIGZp
bGVzIHRvIGRldGVybWluZSBhbnkgbmVlZGVkIGxvY2FsCi0gKiByZXNvdXJjZXMgKHN1Y2ggYXMg
ZmlsZXMgdG8gcHJlbG9hZCksIGl0IHNob3VsZCBkbyBzbyBhbmQgdGhlbiBpbW1lZGlhdGVseQot
ICogY2FsbCB0aGlzIGZ1bmN0aW9uLiBJZiBjb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBpbmZs
dWVuY2UgdGhlIHBhdGhzIHRoYXQKLSAqIHRoZSBwbHVnLWluIHdpbGwgcGFzcyBhcyBwYXJ0IG9m
IGByZWFkT25seVBhdGhzYCBhbmQgYHJlYWRXcml0ZVBhdGhzYCwgdGhlCi0gKiBwbHVnLWluIHNo
b3VsZCBlbnRlciB0aGUgc2FuZGJveCBmaXJzdCBhbmQgb25seSB0aGVuIHByb2Nlc3MgY29uZmln
dXJhdGlvbgotICogZmlsZXMgYW5kIGRlYWwgd2l0aCBub3JtYWwgc3RhcnR1cCB0YXNrcy4KLSAq
Ci0gKiBWZXJ5IGNsb3NlIGF0dGVudGlvbiBtdXN0IGJlIHBhaWQgdG8gd2VlZGluZyBvdXQgc2Vj
dXJpdHktc2Vuc2l0aXZlIGZpbGVzCi0gKiBmcm9tIHRoZSBgcmVhZFdyaXRlUGF0aHNgIGxpc3Qu
IElmIHRoZSBwbHVnLWluIGluc3RhbmNlIHJlYWRzIGEgY29uZmlndXJhdGlvbgotICogZmlsZSBh
dCBzdGFydHVwIHRvIGRldGVybWluZSB3aGljaCBhZGRpdGlvbmFsIGZpbGVzIGl0IHdpbGwgcGxh
Y2UgaW4gdGhlCi0gKiBgcmVhZFdyaXRlUGF0aHNgIGxpc3QgdG8gdGhpcyBjYWxsLCB0aGVuIHRo
YXQgY29uZmlndXJhdGlvbiBmaWxlIE1VU1QgTk9UIGJlCi0gKiBpbiB0aGUgYHJlYWRXcml0ZVBh
dGhzYCBpdHNlbGYuIE90aGVyd2lzZSwgc2hvdWxkIHRoZSBwbHVnLWluIGJlY29tZQotICogY29t
cHJvbWlzZWQsIGl0IGNhbiB0cml2aWFsbHkgZXNjYXBlIGl0cyBzYW5kYm94IHRoZSBuZXh0IHRp
bWUgaXQgaXMKLSAqIGluc3RhbnRpYXRlZCBieSB3cml0aW5nIGFyYml0cmFyeSBwYXRocyAob3Ig
anVzdCAiLyIpIGludG8gdGhpcyB3cml0YWJsZQotICogY29uZmlndXJhdGlvbiBmaWxlLgotICoK
LSAqIE5vdGUgdGhhdCBhZnRlciBhIHBsdWctaW4gaW5zdGFuY2UgZW50ZXJzIHRoZSBzYW5kYm94
LCBhbnkgbmF0aXZlIGNhbGxzIHRoYXQKLSAqIGl0IG1ha2VzIHdoaWNoIHJlZmVyIHRvIGFyYml0
cmFyeSBwYXRocyBvbiBkaXNrICB3aWxsIG9ubHkgd29yayBpZiB0aGUgcGF0aHMgYXJlCi0gKiBh
dmFpbGFibGUgd2l0aGluIHRoZSBzYW5kYm94LCBlaXRoZXIgc3RhdGljYWxseSB0aHJvdWdoIGBy
ZWFkT25seVBhdGhzYCBhbmQKLSAqIGByZWFkV3JpdGVQYXRoc2AsIG9yIGR5bmFtaWNhbGx5IHRo
cm91Z2ggQ29jb2EgQVBJcy4KLSAqIEhvd2V2ZXIsIE5QQVBJIGNhbGxzIChzdWNoIGFzIGUuZy4g
TlBOX1Bvc3RVUkwgd2l0aCB0aGUgZmlsZSBwYXJhbWV0ZXIgc2V0IHRvIFRSVUUpCi0gKiBjYW4g
YWNjZXNzIGZpbGVzIHRoYXQgbmF2aWdhdG9yIHBvbGljaWVzIGFsbG93LCB3aGljaCBpcyB1c3Vh
bGx5IGFuIGVudGlyZWx5Ci0gKiBkaWZmZXJlbnQgc2V0IGZvciByZW1vdGUgYW5kIGZvciBsb2Nh
bCBXZWIgcGFnZXMuCi0gKi8KLXR5cGVkZWYgTlBFcnJvciAoKldLTl9FbnRlclNhbmRib3hQcm9j
UHRyKShjb25zdCBjaGFyICpyZWFkT25seVBhdGhzW10sIGNvbnN0IGNoYXIgKnJlYWRXcml0ZVBh
dGhzW10pOwotCi0vKiEKLSAqIEBmdW5jdGlvbiBXS05fRmlsZVN0b3BBY2Nlc3NpbmcKLSAqIFJl
cXVlc3RzIHRoYXQgdGhlIG5hdmlnYXRvciByZXZva2UgdGhlIHBsdWctaW4ncyBhY2Nlc3MgdG8g
dGhlIGdpdmVuIHBhdGguCi0gKgotICogQHBhcmFtIHBhdGgKLSAqIFJlcXVpcmVkLiBBIHBhdGgg
dGhhdCB3YXMgcHJldmlvdXNseSByZXR1cm5lZCBmcm9tIE5TT3BlblBhbmVsIG9yIE5TU2F2ZVBh
bmVsLgotICoKLSAqIEByZXN1bHQKLSAqIFJldHVybnMgIE5QRVJSX05PX0VSUk9SLCBvciBOUEVS
Ul9HRU5FUklDX0VSUk9SIGlmIHRoZSByZXF1ZXN0aW5nIHBsdWctaW4KLSAqIGluc3RhbmNlIGlz
IG5vdCBpbiBhIHNhbmRib3guCi0gKgotICogQGRpc2N1c3Npb24KLSAqIFdoZW5ldmVyIGZpbGUg
YWNjZXNzIGlzIHByb3ZpZGVkIHRvIGEgcGx1Zy1pbiBpbnN0YW5jZSB0aHJvdWdoIGEKLSAqIENv
Y29hIEFQSSwgbmF2aWdhdG9yIHNob3VsZCBiZSBub3RmaWVkIHdoZW4gaXQgaXMgbm8gbG9uZ2Vy
IG5lZWRlZC4KLSAqIFRoaXMgd2lsbCBjYXVzZSBzdWJzZXF1ZW50IG9wZW4oMikgY2FsbHMgb24g
YW55IG9mIHRoZSByZXZva2VkIGZpbGVzIHRvIGZhaWwsCi0gKiBidXQgYnkgZGVzaWduIG5vIGF0
dGVtcHQgaXMgbWFkZSB0byBpbnZhbGlkYXRlIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvcnMuCi0g
KiBwbHVnLWluIHdyaXRlcnMgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8ga2VlcCBmaWxlcyBv
cGVuIGZvciBhcyBzaG9ydCBhIHBlcmlvZAotICogb2YgdGltZSBhcyBwb3NzaWJsZSwgYW5kIHRv
IGFsd2F5cyBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBvYmplY3RzIHJlcHJlc2VudGluZwotICog
dGhlIHJldHVybmVkIGZpbGVzIGdvIG91dCBvZiBzY29wZSBvciBhcmUgb3RoZXJ3aXNlIGRlc3Ry
b3llZC4KLSAqLwotdHlwZWRlZiBOUEVycm9yICgqV0tOX0ZpbGVTdG9wQWNjZXNzaW5nUHJvY1B0
cikoY29uc3QgY2hhciogcGF0aCk7Ci0KLXR5cGVkZWYgc3RydWN0IF9XS05TYW5kYm94RnVuY3Rp
b25zIHsKLSAgICB1aW50MTZfdCBzaXplOwotICAgIHVpbnQxNl90IHZlcnNpb247Ci0gICAgCi0g
ICAgV0tOX0VudGVyU2FuZGJveFByb2NQdHIgZW50ZXJTYW5kYm94OwotICAgIFdLTl9GaWxlU3Rv
cEFjY2Vzc2luZ1Byb2NQdHIgZmlsZVN0b3BBY2Nlc3Npbmc7Ci19IFdLTlNhbmRib3hGdW5jdGlv
bnM7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBucGFwaV9z
YW5kYm94X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDIzNykKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTE4
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE5lZWQgYSBz
aG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BT
ISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2Iu
aW46IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFs
dWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVT
YW5kYm94RnVuY3Rpb25zLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L21hYy9OZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW06CisgICAgICAgIChlbnRlclNhbmRib3gp
OgorCiAyMDEzLTAxLTE3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
RG9uJ3QgaW5pdGlhbGl6ZSBBcHBLaXQgZm9yIHByb2Nlc3NlcyB0aGF0IGRvbid0IHVzZSBpdApJ
bmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMzk5NjUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNDks
OCArMTQ5LDcgQEAgaWZuZXEgKCQoU0RLUk9PVCksKQogZW5kaWYKIAogU0FOREJPWF9QUk9GSUxF
UyA9IFwKLQljb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBcCi0JY29tLmFwcGxlLldlYktpdC5QbHVn
aW5Qcm9jZXNzLnNiCisJY29tLmFwcGxlLldlYlByb2Nlc3Muc2IKIAogYWxsOiAkKFNBTkRCT1hf
UFJPRklMRVMpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdp
blByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTM5OTY1KQorKysgU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIxLDExICszMjEsMTEgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgU3RyaQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZT
dHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlm
aWVyKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1l
LmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0
b3J5LmdldCgpKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHByb2ZpbGVTdHJpbmcgPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6KE5TVVJMICopc2FuZGJveFVS
TC5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKKyAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHByb2ZpbGVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDooTlNVUkwgKilzYW5kYm94VVJMLmdldCgpIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdKTsKICAgICBpZiAoIXByb2ZpbGVT
dHJpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVudGVyU2FuZGJveChbcHJvZmlsZVN0cmlu
Zy5nZXQoKSBVVEY4U3RyaW5nXSwgMCwgMCk7CisgICAgZW50ZXJTYW5kYm94KFtwcm9maWxlU3Ry
aW5nLmdldCgpIFVURjhTdHJpbmddKTsKIH0KIAogc3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0
LlBsdWdpblByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNiLmluCShyZXZpc2lv
biAxMzk5NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0LlBsdWdpblByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsMTk2ICswLDAg
QEAKLSh2ZXJzaW9uIDEpCi0oZGVueSBkZWZhdWx0ICh3aXRoIHBhcnRpYWwtc3ltYm9saWNhdGlv
bikpCi0oYWxsb3cgaXBjLXBvc2l4LXNobSBzeXN0ZW0tYXVkaXQgc3lzdGVtLXNvY2tldCBmaWxl
LXJlYWQtbWV0YWRhdGEpCi0KLShpbXBvcnQgInN5c3RlbS5zYiIpCi0KLTs7IFV0aWxpdHkgZnVu
Y3Rpb25zIGZvciBob21lIGRpcmVjdG9yeSByZWxhdGl2ZSBwYXRoIGZpbHRlcnMKLShkZWZpbmUg
KGhvbWUtcmVnZXggaG9tZS1yZWxhdGl2ZS1yZWdleCkKLSAgKHJlZ2V4IChzdHJpbmctYXBwZW5k
ICJeIiAocmVnZXgtcXVvdGUgKHBhcmFtICJIT01FX0RJUiIpKSBob21lLXJlbGF0aXZlLXJlZ2V4
KSkpCi0KLShkZWZpbmUgKGhvbWUtc3VicGF0aCBob21lLXJlbGF0aXZlLXN1YnBhdGgpCi0gIChz
dWJwYXRoIChzdHJpbmctYXBwZW5kIChwYXJhbSAiSE9NRV9ESVIiKSBob21lLXJlbGF0aXZlLXN1
YnBhdGgpKSkKLQotKGRlZmluZSAoaG9tZS1saXRlcmFsIGhvbWUtcmVsYXRpdmUtbGl0ZXJhbCkK
LSAgKGxpdGVyYWwgKHN0cmluZy1hcHBlbmQgKHBhcmFtICJIT01FX0RJUiIpIGhvbWUtcmVsYXRp
dmUtbGl0ZXJhbCkpKQotCi07OyBSZWFkLW9ubHkgcHJlZmVyZW5jZXMgYW5kIGRhdGEKLShhbGxv
dyBmaWxlLXJlYWQqCi0gICAgICAgOzsgQmFzaWMgc3lzdGVtIHBhdGhzCi0gICAgICAgKHN1YnBh
dGggIi9MaWJyYXJ5L0ZyYW1ld29ya3MiKQotICAgICAgIChzdWJwYXRoICIvcHJpdmF0ZS92YXIv
ZGIvbWRzIikKLQotICAgICAgIDs7IFN5c3RlbSBhbmQgdXNlciBwcmVmZXJlbmNlcwotICAgICAg
IChsaXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy8uR2xvYmFsUHJlZmVyZW5jZXMucGxpc3Qi
KQotICAgICAgIChsaXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuQmx1ZXRv
b3RoLnBsaXN0IikKLSAgICAgICAobGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFw
cGxlLlF1aWNrVGltZS5wbGlzdCIpCi0gICAgICAgKHJlZ2V4ICMiXi9MaWJyYXJ5L1ByZWZlcmVu
Y2VzL2NvbVwuYXBwbGVcLnNlY3VyaXR5IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvLkNGVXNl
clRleHRFbmNvZGluZyIpCi0gICAgICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvQXVkaW8iKQot
ICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0NvbG9yUGlja2VycyIpCi0gICAgICAgKGhv
bWUtc3VicGF0aCAiL0xpYnJhcnkvQ29sb3JTeW5jIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIv
TGlicmFyeS9Db21wb25lbnRzIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9JbnB1
dCBNZXRob2RzIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9LZXlCaW5kaW5ncyIp
Ci0gICAgICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvS2V5Ym9hcmQgTGF5b3V0cyIpCi0gICAg
ICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvRm9udHMiKQotICAgICAgIChob21lLXN1YnBhdGgg
Ii9MaWJyYXJ5L1BERiBTZXJ2aWNlcyIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkv
UHJlZmVyZW5jZXMvLkdsb2JhbFByZWZlcmVuY2VzLnBsaXN0IikKLSAgICAgICAoaG9tZS1yZWdl
eCAjIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL0J5SG9zdC9cLkdsb2JhbFByZWZlcmVuY2VzXC4iKQot
ICAgICAgIChob21lLXJlZ2V4ICMiL0xpYnJhcnkvUHJlZmVyZW5jZXMvQnlIb3N0L2NvbVwuYXBw
bGVcLkJsdWV0b290aFwuIikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJl
bmNlcy9jb20uYXBwbGUuQVRTLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFy
eS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuZHJpdmVyLkFwcGxlQmx1ZXRvb3RoTXVsdGl0b3VjaC5t
b3VzZS5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMv
Y29tLmFwcGxlLmRyaXZlci5BcHBsZUJsdWV0b290aE11bHRpdG91Y2gudHJhY2twYWQucGxpc3Qi
KQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5k
cml2ZXIuQXBwbGVISURNb3VzZS5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJh
cnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLmlucHV0bWV0aG9ka2l0LnBsaXN0IikKLSAgICAgICAo
aG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuaVdvcmsuUGFnZXMu
cGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5h
cHBsZS5MYXVuY2hTZXJ2aWNlcy5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJh
cnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLk11bHRpdG91Y2hTdXBwb3J0LnBsaXN0IikKLSAgICAg
ICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuYXZmb3VuZGF0
aW9uLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9j
b20uYXBwbGUuY29yZW1lZGlhLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFy
eS9QcmVmZXJlbmNlcy9jb20uYXBwbGUub3BlbmdsLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRl
cmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuc2VjdXJpdHkucGxpc3QiKQotICAg
ICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5zZWN1cml0
eV9jb21tb24ucGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVu
Y2VzL2NvbS5hcHBsZS5zcGVlY2gudm9pY2UucHJlZnMucGxpc3QiKQotICAgICAgIChob21lLWxp
dGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5zcGVlY2guc3ludGhlc2lzLmdl
bmVyYWwucHJlZnMucGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZl
cmVuY2VzL2NvbS5hcHBsZS5zeXN0ZW1zb3VuZC5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJh
bCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLnVuaXZlcnNhbGFjY2Vzcy5wbGlzdCIp
Ci0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLldl
YkZvdW5kYXRpb24ucGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZl
cmVuY2VzL2NvbS5udmlkaWEuT3BlbkdMLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIv
TGlicmFyeS9QcmVmZXJlbmNlcy9wYnMucGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9M
aWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5TZXJ2aWNlc01lbnUuU2VydmljZXMucGxpc3Qi
KQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL1F1aWNrVGltZSBQ
cmVmZXJlbmNlcyIpCi0KLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9DYWNoZXMvY29t
LmFwcGxlLmNvcmVhdWRpby5jb21wb25lbnRzLnBsaXN0IikKLQotICAgICAgIChzdWJwYXRoICIv
TGlicmFyeS9BdWRpby9QbHVnLUlucy9Db21wb25lbnRzIikKLSAgICAgICAoaG9tZS1zdWJwYXRo
ICIvTGlicmFyeS9BdWRpby9QbHVnLUlucy9Db21wb25lbnRzIikKLSAgICAgICAoc3VicGF0aCAi
L0xpYnJhcnkvQXVkaW8vUGx1Zy1JbnMvSEFMIikKLSAgICAgICAoc3VicGF0aCAiL0xpYnJhcnkv
UXVpY2tUaW1lIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9RdWlja1RpbWUiKQot
ICAgICAgIChzdWJwYXRoICIvTGlicmFyeS9WaWRlby9QbHVnLUlucyIpCi0KLSAgICAgICAobGl0
ZXJhbCAiL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9DcmFzaFJlcG9ydGVyL1N1Ym1pdERp
YWdJbmZvLmRvbWFpbnMiKQotCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvQXBwbGlj
YXRpb24gU3VwcG9ydC9TeW5jU2VydmljZXMvTG9jYWwvQ2xpZW50c1dpdGhDaGFuZ2VzL2NvbS5h
cHBsZS5LZXljaGFpbiIpCi0KLSAgICAgICA7OyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3Zl
ZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS8xMDQ3OTY4NT4gaXMgZml4ZWQuCi0gICAgICAgKHN1YnBh
dGggIi9MaWJyYXJ5L0tleWNoYWlucyIpCi0pCi0KLTs7IFJlYWQtd3JpdGUgcHJlZmVyZW5jZXMg
YW5kIGRhdGEKLShhbGxvdyBmaWxlKgotICAgICAgIChob21lLXJlZ2V4ICMiL0xpYnJhcnkvUHJl
ZmVyZW5jZXMvY29tXC5hcHBsZVwuV2ViS2l0XC5QbHVnaW5Qcm9jZXNzXC5wbGlzdCIpCi0KLSAg
ICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9DYWNoZXMvUXVpY2tUaW1lIikKLQotICAgICAg
IDs7IEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzEw
NDc5Njg1PiBpcyBmaXhlZC4KLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9LZXljaGFp
bnMiKSkKLQotOzsgSU9LaXQgdXNlciBjbGllbnRzCi0oYWxsb3cgaW9raXQtb3BlbgotICAgICAg
IChpb2tpdC1jb25uZWN0aW9uICJJT0FjY2VsZXJhdG9yIikKLSAgICAgICAoaW9raXQtdXNlci1j
bGllbnQtY2xhc3MgIkFHUE1DbGllbnQiKQotICAgICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFz
cyAiQXBwbGVHcmFwaGljc0NvbnRyb2xDbGllbnQiKQotICAgICAgIChpb2tpdC11c2VyLWNsaWVu
dC1jbGFzcyAiQXBwbGVTTkJGQlVzZXJDbGllbnQiKQotICAgICAgIChpb2tpdC11c2VyLWNsaWVu
dC1jbGFzcyAiSU9BY2NlbGVyYXRpb25Vc2VyQ2xpZW50IikKLSAgICAgICAoaW9raXQtdXNlci1j
bGllbnQtY2xhc3MgIklPQXVkaW9Db250cm9sVXNlckNsaWVudCIpCi0gICAgICAgKGlva2l0LXVz
ZXItY2xpZW50LWNsYXNzICJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCIpCi0gICAgICAgKGlva2l0
LXVzZXItY2xpZW50LWNsYXNzICJJT0ZyYW1lYnVmZmVyU2hhcmVkVXNlckNsaWVudCIpCi0gICAg
ICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJJT0hJRFBhcmFtVXNlckNsaWVudCIpCi0gICAg
ICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJJT1N1cmZhY2VSb290VXNlckNsaWVudCIpCi0g
ICAgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJJT1N1cmZhY2VTZW5kUmlnaHQiKQotICAg
ICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcyAiUm9vdERvbWFpblVzZXJDbGllbnQiKSkKLQot
OzsgVmFyaW91cyBzZXJ2aWNlcyByZXF1aXJlZCBieSBBcHBLaXQgYW5kIG90aGVyIGZyYW1ld29y
a3MKLShhbGxvdyBtYWNoLWxvb2t1cAotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkNv
cmVTZXJ2aWNlcy5jb3Jlc2VydmljZXNkIikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCi0gICAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUuRmlsZUNvb3JkaW5hdGlvbiIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuRm9udE9iamVjdHNTZXJ2ZXIiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxl
LkZvbnRTZXJ2ZXIiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkltYWdlQ2FwdHVy
ZUV4dGVuc2lvbjIucHJlc2VuY2UiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlNl
Y3VyaXR5U2VydmVyIikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5TeXN0ZW1Db25m
aWd1cmF0aW9uLmNvbmZpZ2QiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlN5c3Rl
bUNvbmZpZ3VyYXRpb24uUFBQQ29udHJvbGxlciIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuU3lzdGVtQ29uZmlndXJhdGlvbi5TQ05ldHdvcmtSZWFjaGFiaWxpdHkiKQotICAgICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmF1ZGlvLlZEQ0Fzc2lzdGFudCIpCi0gICAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuYXVkaW8uYXVkaW9oYWxkIikKLSAgICAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5hdWRpby5jb3JlYXVkaW9kIikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5jbWlvLlZEQ0Fzc2lzdGFudCIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBw
bGUuY29va2llZCIpIDs7IEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMTA3OTA3Njg+IExpbWl0IGFj
Y2VzcyB0byBjb29raWVzLgotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmN2bXNTZXJ2
IikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5uZXR3b3JrZCIpCi0gICAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUub2NzcGQiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLnBhc3RlYm9hcmQuMSIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2luZG93
X3Byb3hpZXMiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndpbmRvd3NlcnZlci5h
Y3RpdmUiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmbmV0d29yay5BdXRoQnJv
a2VyQWdlbnQiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlBvd2VyTWFuYWdlbWVu
dC5jb250cm9sIikKLSAgICAgICAoZ2xvYmFsLW5hbWUtcmVnZXggIyJfT3BlblN0ZXAkIikKLSkK
LQotOzsgTmV0d29ya2luZwotKGFsbG93IHN5c3RlbS1zb2NrZXQgKHNvY2tldC1kb21haW4gQUZf
Uk9VVEUpKQotKGFsbG93IHN5c3RlbS1zb2NrZXQgKHJlcXVpcmUtYWxsIChzb2NrZXQtZG9tYWlu
IEFGX1NZU1RFTSkgKHNvY2tldC1wcm90b2NvbCAyKSkpIDsgU1lTUFJPVE9fQ09OVFJPTAotKGFs
bG93IG5ldHdvcmstb3V0Ym91bmQKLSAgICAgICA7OyBLZXJuZWwgY29udHJvbHMKLSAgICAgICAo
Y29udHJvbC1uYW1lICJjb20uYXBwbGUubmV0d29yay5zdGF0aXN0aWNzIikKLSAgICAgICAoY29u
dHJvbC1uYW1lICJjb20uYXBwbGUubmV0c3JjIikKLQotICAgICAgIDs7IExvY2FsIG1ETlNSZXNw
b25kZXIgZm9yIEROUywgYXJiaXRyYXJ5IG91dGJvdW5kIFRDUAotICAgICAgIChsaXRlcmFsICIv
cHJpdmF0ZS92YXIvcnVuL21ETlNSZXNwb25kZXIiKQotICAgICAgIChyZW1vdGUgdGNwKSkKLQot
KGFsbG93IG1hY2gtbG9va3VwCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUudHNtLnVp
c2VydmVyIikKLSAgICAgICAobG9jYWwtbmFtZSAiY29tLmFwcGxlLnRzbS5wb3J0bmFtZSIpCi0p
Ci0KLTs7IE9wZW4gYW5kIFNhdmUgcGFuZWxzCi0oZGVmaW5lIChhcHBseS1yZWFkLWFuZC1pc3N1
ZS1leHRlbnNpb24gb3AgcGF0aC1maWx0ZXIpCi0gICAgICAgKG9wIGZpbGUtcmVhZCogcGF0aC1m
aWx0ZXIpCi0gICAgICAgKG9wIGZpbGUtaXNzdWUtZXh0ZW5zaW9uIChyZXF1aXJlLWFsbCAoZXh0
ZW5zaW9uLWNsYXNzICJjb20uYXBwbGUuYXBwLXNhbmRib3gucmVhZCIpIHBhdGgtZmlsdGVyKSkp
Ci0oZGVmaW5lIChhcHBseS13cml0ZS1hbmQtaXNzdWUtZXh0ZW5zaW9uIG9wIHBhdGgtZmlsdGVy
KQotICAgICAgIChvcCBmaWxlLXdyaXRlKiBwYXRoLWZpbHRlcikKLSAgICAgICAob3AgZmlsZS1p
c3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgImNvbS5hcHBsZS5h
cHAtc2FuZGJveC5yZWFkLXdyaXRlIikgcGF0aC1maWx0ZXIpKSkKLShkZWZpbmUgKHJlYWQtd3Jp
dGUtYW5kLWlzc3VlLWV4dGVuc2lvbnMgcGF0aC1maWx0ZXIpCi0gICAgICAgKGFwcGx5LXJlYWQt
YW5kLWlzc3VlLWV4dGVuc2lvbiBhbGxvdyBwYXRoLWZpbHRlcikKLSAgICAgICAoYXBwbHktd3Jp
dGUtYW5kLWlzc3VlLWV4dGVuc2lvbiBhbGxvdyBwYXRoLWZpbHRlcikpCi0oYWxsb3cgcXRuLXVz
ZXIKLSAgICAgICAoZXh0ZW5zaW9uICJjb20uYXBwbGUuYXBwLXNhbmRib3gucmVhZC13cml0ZSIp
KQotKHJlYWQtd3JpdGUtYW5kLWlzc3VlLWV4dGVuc2lvbnMgKGV4dGVuc2lvbiAiY29tLmFwcGxl
LmFwcC1zYW5kYm94LnJlYWQtd3JpdGUiKSkKLQotOzsgUHJpbnRpbmcKLShhbGxvdyBuZXR3b3Jr
LW91dGJvdW5kIChsaXRlcmFsICIvcHJpdmF0ZS92YXIvcnVuL2N1cHNkIikpCi0oYWxsb3cgbWFj
aC1sb29rdXAKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5wcmludHVpdG9vbC5hZ2Vu
dCIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUucHJpbnR0b29sLmFnZW50IikKLSAg
ICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5wcmludHRvb2wuZGFlbW9uIikpCi0oYWxsb3cg
ZmlsZS1yZWFkKgotICAgICAgIChob21lLWxpdGVyYWwgIi8uY3Vwcy9scG9wdGlvbnMiKQotICAg
ICAgIChob21lLWxpdGVyYWwgIi8uY3Vwcy9jbGllbnQuY29uZiIpCi0gICAgICAgKGxpdGVyYWwg
Ii9wcml2YXRlL2V0Yy9jdXBzL2NsaWVudC5jb25mIikKLSAgICAgICAobGl0ZXJhbCAiL3ByaXZh
dGUvZXRjL2N1cHMvbHBvcHRpb25zIikKLSAgICAgICAoc3VicGF0aCAiL3ByaXZhdGUvZXRjL2N1
cHMvcHBkIikKLSAgICAgICAoc3VicGF0aCAiL3ByaXZhdGUvdmFyL3J1bi9jdXBzZCIpCi0gICAg
ICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvb3JnLmN1cHMuUHJpbnRpbmdQ
cmVmcy5wbGlzdCIpKQotCi07OyBUZXh0IFNlcnZpY2VzIE1hbmFnZXIKLShhbGxvdyBpb2tpdC1z
ZXQtcHJvcGVydGllcyAoaW9raXQtcHJvcGVydHkgIkNhcHNMb2NrRGVsYXlPdmVycmlkZSIpKQot
Ci07OyBJbWFnZSBDYXB0dXJlICh1c2VkIGJ5IHByaW50IHByZXZpZXcgZGlhbG9nKQotKGFsbG93
IGFwcGxlZXZlbnQtc2VuZCAoYXBwbGVldmVudC1kZXN0aW5hdGlvbiAiY29tLmFwcGxlLmltYWdl
Y2FwdHVyZWV4dGVuc2lvbjIiKSkKLQotOzsgU2lsZW50bHkgYmxvY2sgYWNjZXNzIHRvIHNvbWUg
ZmlsZXMKLShkZW55IGZpbGUtcmVhZCogZmlsZS13cml0ZSogKHdpdGggbm8tbG9nKQotICAgICAg
IChob21lLXJlZ2V4ICMiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tXC5hcHBsZVwuaW50ZXJuZXRj
b25maWdwcml2XC5wbGlzdCIpCi0gICAgICAgKGhvbWUtcmVnZXggIyIvTGlicmFyeS9QcmVmZXJl
bmNlcy9jb21cLmFwcGxlXC5pbnRlcm5ldGNvbmZpZ1wucGxpc3QiKQotCi0gICAgICAgOzsgRklY
TUU6IFNob3VsZCBiZSByZW1vdmVkIGFmdGVyIDxyZGFyOi8vcHJvYmxlbS85NDIyOTU3PiBpcyBm
aXhlZC4KLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9DYWNoZXMvQ2FjaGUuZGIiKQot
Ci0gICAgICAgOzsgRklYTUU6IFNob3VsZCBiZSByZW1vdmVkIGFmdGVyIDxyZGFyOi8vcHJvYmxl
bS8xMDQ2Mzg4MT4gaXMgZml4ZWQuCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJl
ZmVyZW5jZXMvY29tLmFwcGxlLkxhdW5jaFNlcnZpY2VzLlF1YXJhbnRpbmVFdmVudHNWMiIpCi0g
ICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLkxhdW5j
aFNlcnZpY2VzLlF1YXJhbnRpbmVFdmVudHNWMi1qb3VybmFsIikpCi0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEzOTk2NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODM0LDcgKzgzNCw2IEBACiAJCUJDOUJBNTA4MTY5OTFD
M0MwMEU0NDYxNiAvKiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5QkE1MDYxNjk5MUMzQzAwRTQ0NjE2IC8qIENoaWxk
UHJvY2Vzc01haW4ubW0gKi87IH07CiAJCUJDOUJBNTA5MTY5OTFDM0MwMEU0NDYxNiAvKiBDaGls
ZFByb2Nlc3NNYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzlCQTUwNzE2OTkxQzNDMDBFNDQ2MTYgLyogQ2hpbGRQcm9jZXNzTWFpbi5oICovOyB9
OwogCQlCQzlGQTUyMDE2MEQzQjQzMDA1NERGOUEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1
QTkxNzYzMDA4RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07Ci0JCUJDOUZBNTIy
MTYwRDRBMEMwMDU0REY5QSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM1MTUw
QUI1RDUwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgKi87IH07
CiAJCUJDOUZBNTIzMTYwRDRBMEYwMDU0REY5QSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NjdFMzcx
NTBBQjVFMjAwQzczMTY5IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovOyB9OwogCQlCQ0Ew
RUY3RjEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjdEMTIzMzFFNzgwMDdEM0NGQiAvKiBX
ZWJVbmRvU3RlcC5oICovOyB9OwogCQlCQ0EwRUY4MDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5k
b1N0ZXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBMEVGN0UxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCAqLzsgfTsKQEAgLTEw
NDMsNyArMTA0Miw2IEBACiAJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2Fn
ZXMuaCAqLzsgfTsKIAkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTU4MkQy
MTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLmggKi87IH07CiAJCUUxOTU4MkQ2MTUz
Q0MwNTQwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NTgyRDQxNTNDQzA1MzAwQjYwODc1IC8qIFBERktp
dEltcG9ydHMubW0gKi87IH07Ci0JCUUxOTY3RTM2MTUwQUI1RDUwMEM3MzE2OSAvKiBjb20uYXBw
bGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM1MTUwQUI1RDUwMEM3MzE2OSAvKiBjb20uYXBwbGUu
V2ViS2l0LlBsdWdpblByb2Nlc3Muc2IgKi87IH07CiAJCUUxOTY3RTM4MTUwQUI1RTIwMEM3MzE2
OSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5IC8qIGNvbS5hcHBs
ZS5XZWJQcm9jZXNzLnNiICovOyB9OwogCQlFMTk5ODc1RTE0MkMwNDU0MDBCQjJERTcgLyogU2lt
cGxlUERGUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE5OTg3NUMxNDJCRkM5NzAwQkIyREU3IC8qIFNpbXBsZVBERlBsdWdpbi5tbSAqLzsg
fTsKIAkJRTFBMzE3MzIxMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMxNzMxMTM0Q0VB
NkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi87IH07CkBAIC0yMzUyLDcgKzIzNTAs
NiBAQAogCQlFMTc5RkQ5RTEzNEQzODI1MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVudENvZGVyc01h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QkY5OTUxNEQwQTczRTAwQTVB
MDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE3QkY5OTcxNEQwQUE4MzAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1
bmN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHNj
YXBlU2FuZGJveEZ1bmN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE3
QkY5OTkxNEQwQ0JGMTAwQTVBMDY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5z
Yi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nl
c3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOEM5MkYzMTJEQjlFNzEw
MENGMkFFQiAvKiBQcmludEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4RTY5
MDkxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVNoaW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxOEU2OTBBMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1TaGltUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjYsNyArMjM2Myw2IEBACiAJ
CUUxOEU2OTQ4MTY5Qjc3QzgwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtU2hpbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTk1ODJEMjE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZLaXRJbXBvcnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxOTU4MkQ0MTUzQ0MwNTMwMEI2MDg3NSAvKiBQREZLaXRJbXBv
cnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUERGS2l0SW1w
b3J0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE5NjdFMzUxNTBBQjVENTAw
QzczMTY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2I7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxOTY3RTM3MTUwQUI1RTIwMEM3MzE2OSAvKiBjb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5OTg3NUExNDJCRjlCODAwQkIy
REU3IC8qIFNpbXBsZVBERlBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTaW1wbGVQREZQbHVnaW4uaDsgcGF0aCA9IFBERi9TaW1wbGVQREZQbHVnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5OTg3NUMxNDJCRkM5NzAwQkIyREU3IC8qIFNpbXBs
ZVBERlBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNp
bXBsZVBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9TaW1wbGVQREZQbHVnaW4ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjA4LDcgKzI2MDQsNiBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlFMTRFOTlGOTE0RDg3OUM5MDAxRDIyMUYgLyogYWRk
LWVudGl0bGVtZW50cy5zaCAqLywKLQkJCQlFMTdCRjk5OTE0RDBDQkYxMDBBNUEwNjkgLyogY29t
LmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNiLmluICovLAogCQkJCTFBMkQ5MUE1MTI4MUQ3
MzkwMDFFQjk2MiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0gKi8sCiAJCQkJRTE0RTk5
RjgxNEQ4NzlCNDAwMUQyMjFGIC8qIFBsdWdpblByb2Nlc3MuZW50aXRsZW1lbnRzICovLAogCQkJ
CTFBQTQ3OTIyMTJBNTlGRDkwMDgyMzZDMyAvKiBQbHVnaW5Qcm9jZXNzTWFjLm1tICovLApAQCAt
NDI4OSw3ICs0Mjg0LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxMkY1OEEwMTJBODgzQUQw
MDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTUxMkY1OEExMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNz
YWdlcy5oICovLAotCQkJCUUxOTY3RTM1MTUwQUI1RDUwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2Vi
S2l0LlBsdWdpblByb2Nlc3Muc2IgKi8sCiAJCQkJRTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5IC8q
IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovLAogCQkJCTI5ODRGNTg2MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTI5
ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
ICovLApAQCAtNTI5NCw3ICs1Mjg4LDYgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJ
QkM5RkE1MjIxNjBENEEwQzAwNTRERjlBIC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vz
cy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkM5RkE1MjMxNjBENEEwRjAwNTRERjlBIC8qIGNv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0JDOTQ1RTE2NTE1
RUQyMDBENjhBQUUgLyogRG9jay5wZGYgaW4gUmVzb3VyY2VzICovLAogCQkJCThEQzJFRjUzMDQ4
NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCkBAIC01
MzIxLDcgKzUzMTQsNiBAQAogCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlFMTk2N0UzNjE1
MEFCNUQ1MDBDNzMxNjkgLyogY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNiIGluIFJl
c291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAko
cmV2aXNpb24gMTM5OTY1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDYgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJOZXRzY2FwZVNhbmRib3hG
dW5jdGlvbnMuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKQEAgLTQxMiwxMCArNDA4LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFdLTlZTdXBwb3J0c0NvbXBvcwogLy8gV2hldGhlciB0aGUgYnJvd3NlciBleHBlY3RzIGEgbm9u
LXJldGFpbmVkIENvcmUgQW5pbWF0aW9uIGxheWVyLgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFdL
TlZFeHBlY3RzTm9ucmV0YWluZWRMYXllciA9IDc0NjU3OwogCi0vLyBXaGV0aGVyIHBsdWctaW4g
Y29kZSBpcyBhbGxvd2VkIHRvIGVudGVyIChhcmJpdHJhcnkpIHNhbmRib3ggZm9yIHRoZSBwcm9j
ZXNzLgotc3RhdGljIGNvbnN0IHVuc2lnbmVkIFdLTlZBbGxvd2VkVG9FbnRlclNhbmRib3ggPSA3
NDY1ODsKLQotLy8gV0tOVlNhbmRib3hGdW5jdGlvbnMgPSA3NDY1OSBpcyBkZWZpbmVkIGluIE5l
dHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oCisvLyA3NDY1OCBhbmQgNzQ2NTkgYXJlIG5vIGxvbmdl
ciBpbXBsZW1lbnRlZC4KIAogI2VuZGlmCiAKQEAgLTUwMSwxOCArNDk0LDYgQEAgc3RhdGljIE5Q
RXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIFdLTlZBbGxvd2VkVG9FbnRlclNhbmRib3g6Ci0gICAgICAg
ICAgICAqKE5QQm9vbCopdmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICAgICAgY2FzZSBXS05W
U2FuZGJveEZ1bmN0aW9uczoKLSAgICAgICAgewotICAgICAgICAgICAgKihXS05TYW5kYm94RnVu
Y3Rpb25zICoqKXZhbHVlID0gbmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotI2VuZGlmCi0KICNpZm5kZWYgTlBfTk9fUVVJQ0tEUkFXCiAg
ICAgICAgIGNhc2UgTlBOVnN1cHBvcnRzUXVpY2tEcmF3Qm9vbDoKICAgICAgICAgICAgIC8vIFdl
IGRvbid0IHN1cHBvcnQgdGhlIFF1aWNrRHJhdyBkcmF3aW5nIG1vZGVsLgpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVNhbmRib3hG
dW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxMzk5
NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05l
dHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0MCArMjYsMTAg
QEAKICNpZm5kZWYgTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zX2gKICNkZWZpbmUgTmV0c2NhcGVT
YW5kYm94RnVuY3Rpb25zX2gKIAotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCi0jaW5j
bHVkZSA8V2ViQ29yZS9ucGFwaS5oPgorYm9vbCBlbnRlclNhbmRib3goY29uc3QgY2hhciogc2Fu
ZGJveFByb2ZpbGUpOwogCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlm
Ci0gICAgCi0jZGVmaW5lIFdLTlZTYW5kYm94RnVuY3Rpb25zIDc0NjU5Ci0jZGVmaW5lIFdLTlZT
YW5kYm94RnVuY3Rpb25zVmVyc2lvbkN1cnJlbnQgMQotCi10eXBlZGVmIE5QRXJyb3IgKCpXS05f
RW50ZXJTYW5kYm94UHJvY1B0cikoY29uc3QgY2hhciAqcmVhZE9ubHlQYXRoc1tdLCBjb25zdCBj
aGFyICpyZWFkV3JpdGVQYXRoc1tdKTsKLXR5cGVkZWYgTlBFcnJvciAoKldLTl9GaWxlU3RvcEFj
Y2Vzc2luZ1Byb2NQdHIpKGNvbnN0IGNoYXIqIHBhdGgpOwotCi1OUEVycm9yIFdLTl9FbnRlclNh
bmRib3goY29uc3QgY2hhciAqcmVhZE9ubHlQYXRoc1tdLCBjb25zdCBjaGFyICpyZWFkV3JpdGVQ
YXRoc1tdKTsKLU5QRXJyb3IgV0tOX0ZpbGVTdG9wQWNjZXNzaW5nKGNvbnN0IGNoYXIqIHBhdGgp
OwotCi10eXBlZGVmIHN0cnVjdCBfV0tOU2FuZGJveEZ1bmN0aW9ucyB7Ci0gICAgdWludDE2X3Qg
c2l6ZTsKLSAgICB1aW50MTZfdCB2ZXJzaW9uOwotICAgIAotICAgIFdLTl9FbnRlclNhbmRib3hQ
cm9jUHRyIGVudGVyU2FuZGJveDsKLSAgICBXS05fRmlsZVN0b3BBY2Nlc3NpbmdQcm9jUHRyIGZp
bGVTdG9wQWNjZXNzaW5nOwotfSBXS05TYW5kYm94RnVuY3Rpb25zOwotCi0vLyBGSVhNRTogVGhp
cyBoZWFkZXIgaXMgbW9zdGx5ICJBUEkiLCBleGNlcHQgZm9yIHRoZSBmb2xsb3dpbmcgdHdvIGZ1
bmN0aW9ucy4gV2Ugc2hvdWxkCi0vLyBtb3ZlIHRoZSBkZWNsYXJhdGlvbnMgdG8gYSBzZXBlcmF0
ZSBoZWFkZXIuCi1XS05TYW5kYm94RnVuY3Rpb25zKiBuZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMo
KTsKLU5QRXJyb3IgZW50ZXJTYW5kYm94KGNvbnN0IGNoYXIqIHNhbmRib3hQcm9maWxlLCBjb25z
dCBjaGFyKiByZWFkT25seVBhdGhzW10sIGNvbnN0IGNoYXIqIHJlYWRXcml0ZVBhdGhzW10pOwot
Ci0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpICYmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW0JKHJldmlzaW9uIDEzOTk2NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVTYW5kYm94
RnVuY3Rpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3NiArMjYsMjYgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmgiCiAKLSNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorI2lm
IEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzcy5oIgotI2lt
cG9ydCAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVy
ZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8c3lzZXhpdHMu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotU09GVF9MSU5LX0ZSQU1FV09SSyhDb3JlU2Vy
dmljZXMpCi1TT0ZUX0xJTktfT1BUSU9OQUwoQ29yZVNlcnZpY2VzLCBDRlVSTFN0b3BBY2Nlc3Np
bmdTZWN1cml0eVNjb3BlZFJlc291cmNlLCB2b2lkLCB1bnVzZWQsIChDRlVSTFJlZikpCi0KIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV0tOU2Fu
ZGJveEZ1bmN0aW9ucyogbmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zKCkKLXsKLSAgICBzdGF0aWMg
V0tOU2FuZGJveEZ1bmN0aW9ucyBmdW5jdGlvbnMgPSB7Ci0gICAgICAgIHNpemVvZihXS05TYW5k
Ym94RnVuY3Rpb25zKSwKLSAgICAgICAgV0tOVlNhbmRib3hGdW5jdGlvbnNWZXJzaW9uQ3VycmVu
dCwKLSAgICAgICAgV0tOX0VudGVyU2FuZGJveCwKLSAgICAgICAgV0tOX0ZpbGVTdG9wQWNjZXNz
aW5nCi0gICAgfTsKLSAgICByZXR1cm4gJmZ1bmN0aW9uczsKLX0KLQogc3RhdGljIGJvb2wgZW50
ZXJlZFNhbmRib3g7CiAKLXN0YXRpYyBDU3RyaW5nIHJlYWRTYW5kYm94UHJvZmlsZSgpCi17Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBwcm9maWxlVVJMKEFkb3B0Q0YsIENGQnVuZGxlQ29weVJl
c291cmNlVVJMKENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpLCBDRlNUUigiY29tLmFwcGxlLldlYktp
dC5QbHVnaW5Qcm9jZXNzIiksIENGU1RSKCJzYiIpLCAwKSk7Ci0gICAgY2hhciBwcm9maWxlUGF0
aFtQQVRIX01BWF07Ci0gICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
cm9maWxlVVJMLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHByb2ZpbGVQ
YXRoKSwgc2l6ZW9mKHByb2ZpbGVQYXRoKSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3Vs
ZCBub3QgZ2V0IGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIG9mIHBsdWctaW4gc2FuZGJveCBV
UkxcbiIpOwotICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgIH0KLQotICAgIEZJTEUgKmZp
bGUgPSBmb3Blbihwcm9maWxlUGF0aCwgInIiKTsKLSAgICBpZiAoIWZpbGUpIHsKLSAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb3VsZCBub3Qgb3BlbiBwbHVnLWluIHNhbmRib3ggZmlsZSAnJXMnXG4i
LCBwcm9maWxlUGF0aCk7Ci0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAgfQotCi0gICAg
c3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXQocHJvZmlsZVBhdGgsICZmaWxlSW5m
bykpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZ2V0IHBsdWctaW4gc2FuZGJv
eCBmaWxlIHNpemUgJyVzJ1xuIiwgcHJvZmlsZVBhdGgpOwotICAgICAgICByZXR1cm4gQ1N0cmlu
ZygpOwotICAgIH0KLQotICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKLSAgICBDU3RyaW5nIHJl
c3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoZmlsZUluZm8uc3Rfc2l6ZSwgY2hhcmFj
dGVyQnVmZmVyKTsKLQotICAgIGlmICgxICE9IGZyZWFkKGNoYXJhY3RlckJ1ZmZlciwgZmlsZUlu
Zm8uc3Rfc2l6ZSwgMSwgZmlsZSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3Qg
cmVhZCBwbHVnLWluIHNhbmRib3ggZmlsZSAnJXMnXG4iLCBwcm9maWxlUGF0aCk7Ci0gICAgICAg
IHJldHVybiBDU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgZmNsb3NlKGZpbGUpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotTlBFcnJvciBlbnRlclNhbmRib3goY29uc3QgY2hhciogc2FuZGJv
eFByb2ZpbGUsIGNvbnN0IGNoYXIqIHJlYWRPbmx5UGF0aHNbXSwgY29uc3QgY2hhciogcmVhZFdy
aXRlUGF0aHNbXSkKK2Jvb2wgZW50ZXJTYW5kYm94KGNvbnN0IGNoYXIqIHNhbmRib3hQcm9maWxl
KQogewogICAgIGlmIChlbnRlcmVkU2FuZGJveCkKLSAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA4MAogICAgIC8vIFVzZSBwcml2YXRlIHRlbXBvcmFyeSBhbmQg
Y2FjaGUgZGlyZWN0b3JpZXMuCkBAIC0xMjYsNDMgKzc2LDM0IEBAIE5QRXJyb3IgZW50ZXJTYW5k
Ym94KGNvbnN0IGNoYXIqIHNhbmRib3gKICAgICB9CiAjZW5kaWYKIAotCi0gICAgVmVjdG9yPGNv
bnN0IGNoYXIqPiBleHRlbmRlZFJlYWRPbmx5UGF0aHM7Ci0gICAgaWYgKHJlYWRPbmx5UGF0aHMp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgcmVhZE9ubHlQYXRoc1tpXTsgKytpKQot
ICAgICAgICAgICAgZXh0ZW5kZWRSZWFkT25seVBhdGhzLmFwcGVuZChyZWFkT25seVBhdGhzW2ld
KTsKLSAgICB9CisgICAgVmVjdG9yPGNvbnN0IGNoYXIqPiByZWFkT25seVBhdGhzOwogCiAgICAg
Q1N0cmluZyBwbHVnaW5Nb2R1bGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpLnBsdWdpblBhdGgoKSk7Ci0gICAgZXh0ZW5kZWRSZWFkT25seVBh
dGhzLmFwcGVuZChwbHVnaW5Nb2R1bGVQYXRoLmRhdGEoKSk7CisgICAgcmVhZE9ubHlQYXRocy5h
cHBlbmQocGx1Z2luTW9kdWxlUGF0aC5kYXRhKCkpOwogCiAgICAgLy8gT24tZGlzayBXZWJLaXQg
ZnJhbWV3b3JrIGxvY2F0aW9ucywgdG8gYWNjb3VudCBmb3IgZGVidWcgaW5zdGFsbGF0aW9ucy4K
ICAgICAvLyBBbGxvd2luZyB0aGUgd2hvbGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgV2ViS2l0Mi5m
cmFtZXdvcmsgZm9yIHRoZSBzYWtlIG9mIEFQSXMgdGhhdCBpbXBsaWNpdGx5IGxvYWQgb3RoZXIg
V2ViS2l0IGZyYW1ld29ya3MuCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBsb2FkIHRoZW0gbm93
LCBhbmQgdGh1cyBkb24ndCBoYXZlIGFueSBiZXR0ZXIgaWRlYSBvZiB3aGVyZSB0aGV5IGFyZSBs
b2NhdGVkIG9uIGRpc2suCi0gICAgZXh0ZW5kZWRSZWFkT25seVBhdGhzLmFwcGVuZChbW1tbW05T
QnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXSBidW5kbGVV
UkxdIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0gcGF0aF0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uXSk7CisgICAgcmVhZE9ubHlQYXRocy5hcHBlbmQoW1tbW1tOU0J1bmRsZSBidW5k
bGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQyIl0gYnVuZGxlVVJMXSBVUkxCeURl
bGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHBhdGhdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0p
OwogCi0gICAgZXh0ZW5kZWRSZWFkT25seVBhdGhzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oMCkpOworICAgIHJlYWRPbmx5UGF0aHMuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPigwKSk7CiAKLSAgICBWZWN0b3I8Y29uc3QgY2hhcio+IGV4dGVuZGVkUmVhZFdyaXRlUGF0
aHM7Ci0gICAgaWYgKHJlYWRXcml0ZVBhdGhzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IHJlYWRXcml0ZVBhdGhzW2ldOyArK2kpCi0gICAgICAgICAgICBleHRlbmRlZFJlYWRXcml0
ZVBhdGhzLmFwcGVuZChyZWFkV3JpdGVQYXRoc1tpXSk7Ci0gICAgfQorICAgIFZlY3Rvcjxjb25z
dCBjaGFyKj4gcmVhZFdyaXRlUGF0aHM7CiAKICAgICBjaGFyIGRhcndpblVzZXJUZW1wRGlyZWN0
b3J5W1BBVEhfTUFYXTsKICAgICBpZiAoY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIs
IGRhcndpblVzZXJUZW1wRGlyZWN0b3J5LCBQQVRIX01BWCkgPiAwKQotICAgICAgICBleHRlbmRl
ZFJlYWRXcml0ZVBhdGhzLmFwcGVuZChkYXJ3aW5Vc2VyVGVtcERpcmVjdG9yeSk7CisgICAgICAg
IHJlYWRXcml0ZVBhdGhzLmFwcGVuZChkYXJ3aW5Vc2VyVGVtcERpcmVjdG9yeSk7CiAgICAgZWxz
ZQogICAgICAgICBleGl0KEVYX09TRVJSKTsKIAogICAgIGNoYXIgZGFyd2luVXNlckNhY2hlRGly
ZWN0b3J5W1BBVEhfTUFYXTsKICAgICBpZiAoY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVf
RElSLCBkYXJ3aW5Vc2VyQ2FjaGVEaXJlY3RvcnksIFBBVEhfTUFYKSA+IDApCi0gICAgICAgIGV4
dGVuZGVkUmVhZFdyaXRlUGF0aHMuYXBwZW5kKGRhcndpblVzZXJDYWNoZURpcmVjdG9yeSk7Cisg
ICAgICAgIHJlYWRXcml0ZVBhdGhzLmFwcGVuZChkYXJ3aW5Vc2VyQ2FjaGVEaXJlY3RvcnkpOwog
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgV0tDb3B5Rm91
bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGV4dGVuZGVkUmVhZFdyaXRlUGF0aHMuYXBw
ZW5kKFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
XSk7CisgICAgcmVhZFdyaXRlUGF0aHMuYXBwZW5kKFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0
KCkgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSk7CiAKLSAgICBleHRlbmRlZFJlYWRXcml0ZVBh
dGhzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oMCkpOworICAgIHJlYWRXcml0ZVBh
dGhzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oMCkpOwogCiAgICAgLy8gV0tFbnRl
clBsdWdpblNhbmRib3ggY2Fub25pY2FsaXplcyBwYXRoIGFycmF5cywgYnV0IG5vdCBwYXJhbWV0
ZXJzIChiZWNhdXNlIGl0IGNhbm5vdCBrbm93IGlmIG9uZSBpcyBhIHBhdGgpLgogICAgIGNoYXIq
IGhvbWVEaXJlY3RvcnkgPSByZWFscGF0aChbTlNIb21lRGlyZWN0b3J5KCkgZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uXSwgMCk7CkBAIC0xNzYsNyArMTE3LDcgQEAgTlBFcnJvciBlbnRlclNhbmRi
b3goY29uc3QgY2hhciogc2FuZGJveAogICAgICAgICBleGl0KEVYX09TRVJSKTsKIAogICAgIGNv
bnN0IGNoYXIqIHNhbmRib3hQYXJhbWV0ZXJzW10gPSB7ICJIT01FX0RJUiIsIGhvbWVEaXJlY3Rv
cnksICJURU1QX0RJUiIsIHRlbXBEaXJlY3RvcnksIDAsIDAgfTsKLSAgICBpZiAoIVdLRW50ZXJQ
bHVnaW5TYW5kYm94KHNhbmRib3hQcm9maWxlLCBzYW5kYm94UGFyYW1ldGVycywgZXh0ZW5kZWRS
ZWFkT25seVBhdGhzLmRhdGEoKSwgZXh0ZW5kZWRSZWFkV3JpdGVQYXRocy5kYXRhKCkpKSB7Cisg
ICAgaWYgKCFXS0VudGVyUGx1Z2luU2FuZGJveChzYW5kYm94UHJvZmlsZSwgc2FuZGJveFBhcmFt
ZXRlcnMsIHJlYWRPbmx5UGF0aHMuZGF0YSgpLCByZWFkV3JpdGVQYXRocy5kYXRhKCkpKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGRuJ3QgaW5pdGlhbGl6ZSBzYW5kYm94IHByb2ZpbGVc
biIpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAgfQpAQCAtMTkzLDM0ICsxMzQsNyBA
QCBOUEVycm9yIGVudGVyU2FuZGJveChjb25zdCBjaGFyKiBzYW5kYm94CiAgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gZGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBAIk5T
VXNlUmVtb3RlU2F2ZVBhbmVsIiwgbmlsXSk7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpkZWZhdWx0cy5nZXQoKV07CiAKLSAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3IgV0tOX0VudGVyU2FuZGJveChjb25z
dCBjaGFyKiByZWFkT25seVBhdGhzW10sIGNvbnN0IGNoYXIqIHJlYWRXcml0ZVBhdGhzW10pCi17
Ci0gICAgQ1N0cmluZyBwcm9maWxlID0gcmVhZFNhbmRib3hQcm9maWxlKCk7Ci0gICAgaWYgKHBy
b2ZpbGUuaXNOdWxsKCkpCi0gICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKLQotICAgIHJldHVybiBl
bnRlclNhbmRib3gocHJvZmlsZS5kYXRhKCksIHJlYWRPbmx5UGF0aHMsIHJlYWRXcml0ZVBhdGhz
KTsKLX0KLQotTlBFcnJvciBXS05fRmlsZVN0b3BBY2Nlc3NpbmcoY29uc3QgY2hhciogcGF0aCkK
LXsKLSAgICBpZiAoIWVudGVyZWRTYW5kYm94KQotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsKLQotICAgIGlmICghQ0ZVUkxTdG9wQWNjZXNzaW5nU2VjdXJpdHlTY29wZWRSZXNv
dXJjZVB0cigpKQotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oMCwgcGF0aCkpOwotICAgIGlmICghdXJsU3RyaW5nKQotICAg
ICAgICByZXR1cm4gTlBFUlJfSU5WQUxJRF9QQVJBTTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCB1cmxTdHJpbmcu
Z2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwotCi0gICAgQ0ZVUkxTdG9wQWNj
ZXNzaW5nU2VjdXJpdHlTY29wZWRSZXNvdXJjZVB0cigpKHVybC5nZXQoKSk7Ci0KLSAgICByZXR1
cm4gTlBFUlJfTk9fRVJST1I7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorI2VuZGlm
IC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183607</attachid>
            <date>2013-01-18 23:55:48 -0800</date>
            <delta_ts>2013-01-20 10:58:57 -0800</delta_ts>
            <desc>regenerated the patch with a saved ChangeLog</desc>
            <filename>SandboxNPAPI.txt</filename>
            <type>text/plain</type>
            <size>41537</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTE4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBw
bHVnLWluIHNhbmRib3hpbmcgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsdWdpbnMvbnBhcGktc2FuZGJveC5oOiBSZW1vdmVkLgorCiAyMDEzLTAxLTE4ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtNYWNd
IFJlbW92ZSB1bnVzZWQgcGFnZVNjYWxlRmFjdG9yIGFuZCBwb3NpdGlvblJlbGF0aXZlVG9CYXNl
IGFyZ3VtZW50cyBpbiBHcmFwaGljc0xheWVyQ0EuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzk5NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTEzNjgxLDcgKzEzNjgxLDYgQEAKIAkJRTEyODRCQjAxMDQ0OUZGQTAwRUFF
QjUyIC8qIEpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTI4NEJEMzEwNDRBMDFFMDBFQUVCNTIgLyogRE9NUGFnZVRyYW5zaXRp
b25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVBh
Z2VUcmFuc2l0aW9uRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjg0
QkQ0MTA0NEEwMUUwMEVBRUI1MiAvKiBET01QYWdlVHJhbnNpdGlvbkV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEyOUNCRDIxNTAxNzAyMjAwQTdDNUZCIC8qIG5wYXBp
LXNhbmRib3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gIm5wYXBpLXNhbmRib3guaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZl
bnRUYXJnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRU
YXJnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTM0RjVBQTEyRUUzNDNG
MDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50UmVjdEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODYyLDcg
KzE1ODYxLDYgQEAKIAkJCQlBOUM2RTRFRDBENzQ1RTM4MDA2NDQyRTkgLyogRE9NUGx1Z2luQXJy
YXkuY3BwICovLAogCQkJCUE5QzZFNEVFMEQ3NDVFMzgwMDY0NDJFOSAvKiBET01QbHVnaW5BcnJh
eS5oICovLAogCQkJCUE5QzZFNjYxMEQ3NDY3MUUwMDY0NDJFOSAvKiBET01QbHVnaW5BcnJheS5p
ZGwgKi8sCi0JCQkJRTEyOUNCRDIxNTAxNzAyMjAwQTdDNUZCIC8qIG5wYXBpLXNhbmRib3guaCAq
LywKIAkJCQkxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCAqLywKIAkJCQkxQTIx
OUIzQTBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCAqLywKIAkJCQkxQTkyN0ZEMDE0
MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL25wYXBpLXNhbmRib3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL25wYXBpLXNhbmRib3guaAkocmV2aXNpb24gMTM5OTY1KQorKysgU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ucGFwaS1zYW5kYm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0vKiEKLSAqIEBoZWFkZXIgV2ViS2l0IE1hYyBTYW5kYm94Ci0gKgotICog
VGhpcyBoZWFkZXIgcHJvdmlkZXMgYW4gKkVYUEVSSU1FTlRBTCogQVBJIGZvciBOUEFQSSBwbHVn
LWlucyB0aGF0IHdpc2gKLSAqIHRvIHJlZHVjZSB0aGVpciBydW50aW1lIHByaXZpbGVnZXMuIFdo
ZW4gZW50ZXJpbmcgdGhlIHNhbmRib3gsIGFkb3B0aW5nCi0gKiBwbHVnLWlucyBzcGVjaWZ5IGEg
d2hpdGVsaXN0IG9mIGZpbGVzIHRoZXkgd2lzaCB0byBoYXZlIGF2YWlsYWJsZSBmb3IKLSAqIHJl
YWRpbmcgYW5kIHdyaXRpbmcuIFBsdWctaW5zIHRoYXQgbmVlZCB0byBoYXZlIGFjY2VzcyB0byBh
cmJpdHJhcnkgZmlsZXMsCi0gKiBzdWNoIGFzIHRvIGVuYWJsZSB1c2VyLWluaXRpYXRlZCBmaWxl
IHVwbG9hZHMgb3IgZG93bmxvYWRzLCBjYW4gaW52b2tlCi0gKiBuYXRpdmUgQ29jb2EgQVBJcywg
d2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IGdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBwbHVnLWlu
LgotICoKLSAqCi0gKiBTZWN1cml0eSBjaGFyYWN0ZXJpc3RpY3MKLSAqCi0gKiBTYW5kYm94ZWQg
cGx1Zy1pbidzIGxvY2FsIGZpbGUgYWNjZXNzIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIHVuaW9uIG9m
OgotICoKLSAqIDEuIFRoZSBmaWxlIHdoaXRlbGlzdCBzcGVjaWZpZWQgYnkgdGhlIHBsdWctaW4g
d2hlbiBlbnRlcmluZyB0aGUgc2FuZGJveC4KLSAqIDIuIEFueSBmaWxlcyBvYnRhaW5lZCBhdCBy
dW50aW1lIHRocm91Z2ggdGhlIHNlY3VyZSBPcGVuIGFuZCBTYXZlIGRpYWxvZ3MuCi0gKiAzLiBB
bnkgZmlsZXMgdGhhdCB3ZXJlIG9wZW4gYmVmb3JlIGVudGVyaW5nIHRoZSBzYW5kYm94LgotICoK
LSAqIEltcGxlbWVudGF0aW9uIG1heSBhZGRpdGlvbmFsbHkgY2hvb3NlIHRvIHJlc3RyaWN0IHRo
ZSBjcmVhdGlvbiBvZiBJUEMKLSAqIGNoYW5uZWxzIG9yIHRoZSB1c2Ugb2Ygb3RoZXIgc2VjdXJp
dHktc2Vuc2l0aXZlIHN5c3RlbSByZXNvdXJjZXMsIHN1Y2ggYXMKLSAqIHRoZSBhYmlsaXR5IHRv
IHNwYXduIGFkZGl0aW9uYWwgcHJvY2Vzc2VzLiBIb3dldmVyLCBhbnkgc3VjaCByZXNvdXJjZXMK
LSAqIGFjcXVpcmVkIGJlZm9yZSBlbnRyeSBpbnRvIHRoZSBzYW5kYm94IGFyZSBndWFyYW50ZWVk
IHRvIHJlbWFpbiBhdmFpbGFibGUKLSAqIHdpdGhpbiBpdC4gRm9yIGV4YW1wbGUsIHBsdWctaW5z
IGFyZSBmcmVlIHRvIHNwYXduIGEgdHJ1c3RlZCBicm9rZXIgcHJvY2VzcwotICogYmVmb3JlIGVu
dGVyaW5nIHRoZSBzYW5kYm94IGFuZCB0byBlc3RhYmxpc2ggYW4gSVBDIGNoYW5uZWwgd2l0aCBp
dC4gVGhlCi0gKiBjaGFubmVsIHdpbGwgcmVtYWluIGF2YWlsYWJsZSB3aXRoaW4gdGhlIHNhbmRi
b3ggZXZlbiBpZiB0aGUgaW1wbGVtZW50YXRpb24KLSAqIGlzIGhpZ2hseSByZXN0cmljdGl2ZSBh
bmQgYWxsb3dzIG5laXRoZXIgcHJvY2VzcyBjcmVhdGlvbiBub3IgSVBDIGNoYW5uZWwKLSAqIGVz
dGFibGlzaG1lbnQuCi0gKi8KLQotCi0jaWZuZGVmIG5wYXBpX3NhbmRib3hfaAotI2RlZmluZSBu
cGFwaV9zYW5kYm94X2gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRp
ZgotCi0vKiEKLSAqIEBjb25zdGFudCBXS05WU2FuZGJveEZ1bmN0aW9ucwotICogVXNlIHRoaXMg
Y29uc3RhbnQgd2l0aCBOUE5fR2V0VmFsdWUgdG8gZ2V0IGEgcG9pbnRlciB0byBXS05TYW5kYm94
RnVuY3Rpb25zCi0gKiBzdHJ1Y3R1cmUsIHdoaWNoIGNvbnRhaW5zIHBvaW50ZXJzIHRvIHNhbmRi
b3hpbmcgZnVuY3Rpb25zLgotICovCi0jZGVmaW5lIFdLTlZTYW5kYm94RnVuY3Rpb25zIDc0NjU5
Ci0KLS8qIQotICogVmVyc2lvbiBvZiBXS05TYW5kYm94RnVuY3Rpb25zIHN0cnVjdHVyZSB0aGF0
IGlzIHJldHVybmVkIGJ5IE5QTl9HZXRWYWx1ZS4KLSAqLwotI2RlZmluZSBXS05WU2FuZGJveEZ1
bmN0aW9uc1ZlcnNpb25DdXJyZW50IDEKLQotLyohCi0gKiBAZnVuY3Rpb24gV0tOX0VudGVyU2Fu
ZGJveAotICogUmVxdWVzdHMgdGhhdCB0aGUgcGx1Zy1pbiBpbnN0YW5jZSBiZSBwbGFjZWQgaW4g
YSBzYW5kYm94LgotICoKLSAqIEBwYXJhbSByZWFkT25seVBhdGhzCi0gKiBOVUxMLXRlcm1pbmF0
ZWQgQyBhcnJheSBvZiBwYXRocyB0byBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCB0aGUgcGx1
Zy1pbgotICogd2lzaGVzIHRvIGhhdmUgYXZhaWxhYmxlIGluIHRoZSBzYW5kYm94IGZvciByZWFk
LW9ubHkgYWNjZXNzLiBBbnkKLSAqIGRpcmVjdG9yaWVzIGluIHRoaXMgYXJyYXkgd2lsbCBhdXRv
bWF0aWNhbGx5IGV4dGVuZCB0aGUgc2FuZGJveCB0byBlbmNvbXBhc3MKLSAqIGFsbCB0aGVpciBm
aWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMsIG1lYW5pbmcgdGhhdCB0aGV5IHdpbGwgYmUgYXZhaWxh
YmxlCi0gKiB0aHJvdWdoIE9TIGxldmVsIGZpbGUgYWNjZXNzIGZ1bmN0aW9ucyBmb3IgcmVhZGlu
Zy4KLSAqCi0gKiBAcGFyYW0gcmVhZFdyaXRlUGF0aHMKLSAqIE5VTEwtdGVybWluYXRlZCBDIGFy
cmF5IG9mIHBhdGhzIHRvIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHRoZSBwbHVnLWluCi0g
KiB3aXNoZXMgdG8gaGF2ZSBhdmFpbGFibGUgaW4gdGhlIHNhbmRib3ggZm9yIGJvdGggcmVhZGlu
ZyBhbmQgd3JpdGluZy4KLSAqIFR5cGljYWxseSwgdGhpcyBhcnJheSB3aWxsIGluY2x1ZGUgcGF0
aHMgdG8gdGhlIHBsdWctaW4ncyBsb2NhbCBjYWNoZXMsIGEKLSAqIGRpcmVjdG9yeSBmb3IgdGVt
cG9yYXJ5IGZpbGVzLCBhbmQgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgd2hpY2ggYXJlIG5vdAot
ICogc2VjdXJpdHkgc2Vuc2l0aXZlLCBpbiB0aGF0IHRoZXkgYXJlIG5vdCBjb25zdWx0ZWQgd2hl
biBkZXRlcm1pbmluZyB0aGUKLSAqIGxpc3RzIG9mIHBhdGhzIHRvIHBhc3MgdG8gdGhpcyBmdW5j
dGlvbiBkdXJpbmcgcGx1Zy1pbiBpbnN0YW50aWF0aW9uLgotICogQW55IGRpcmVjdG9yaWVzIGlu
IHRoaXMgYXJyYXkgd2lsbCBhdXRvbWF0aWNhbGx5IGV4dGVuZCB0aGUgc2FuZGJveCB0bwotICog
ZW5jb21wYXNzIGFsbCB0aGVpciBmaWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMsIG1lYW5pbmcgdGhh
dCB0aGV5IHdpbGwgYmUKLSAqIGF2YWlsYWJsZSB0aHJvdWdoIE9TIGxldmVsIGZpbGUgYWNjZXNz
IGZ1bmN0aW9ucyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KLSAqCi0gKiBAcmVzdWx0Ci0gKiBQ
bGFjZXMgdGhlIHBsdWctaW4gaW5zdGFuY2UgaW4gYSBzYW5kYm94LiBUaGUgc2FuZGJveCBhbGxv
d3MgcmVhZC1vbmx5IGFjY2VzcwotICogdG8gcGF0aHMgc3BlY2lmaWVkIGJ5IGByZWFkT25seVBh
dGhzYCBhbmQgcmVhZC13cml0ZSBhY2Nlc3MgdG8KLSAqIGByZWFkV3JpdGVQYXRoc2AuIElmIHRo
ZSBzYW1lIHBhdGggYXBwZWFycyBpbiBib3RoIGByZWFkT25seVBhdGhzYCBhbmQKLSAqIGByZWFk
V3JpdGVQYXRoc2AsIGFjY2VzcyB0byB0aGF0IHBhdGggd2lsbCBiZSByZWFkLW9ubHkuIE5vIG90
aGVyIGZpbGVzeXN0ZW0KLSAqIGFjY2VzcyBpcyBhdmFpbGFibGUgZXhjZXB0IGFzIGV4cHJlc3Ns
eSBwZXJtaXR0ZWQgYnkgdGhlIHVzZXIgdGhyb3VnaAotICogTlNPcGVuUGFuZWwgYW5kIE5TU2F2
ZVBhbmVsIGludm9jYXRpb25zLiAgUmV0dXJucyBOUEVSUl9OT19FUlJPUiB3aGVuIHRoZQotICog
bmF2aWdhdG9yIGhhcyBzdWNjZXNzZnVsbHkgcGxhY2VkIHRoZSBwbHVnLWluIGluIGEgc2FuZGJv
eCBhbmQKLSAqIE5QRVJSX0dFTkVSSUNfRVJST1IgaWYgdGhlIHRoZSBwbHVnLWluIGluc3RhbmNl
IHdhcyBhbHJlYWR5IHBsYWNlZCBpbiBhIHNhbmRib3gKLSAqIHdpdGggYSBwcmlvciBjYWxsIHRv
IHRoaXMgZnVuY3Rpb24uIElmIGVudGVyaW5nIHNhbmRib3ggZmFpbHMgZm9yIGFueSBvdGhlciBy
ZWFzb24sCi0gKiB0aGUgcHJvY2VzcyBpcyB0ZXJtaW5hdGVkLgotICogTm90ZSB0aGF0IGVpdGhl
ciBvciBib3RoIGByZWFkT25seVBhdGhzYCBhbmQgYHJlYWRXcml0ZVBhdGhzYCBtYXkgYmUgTlVM
TC4KLSAqCi0gKiBAZGlzY3Vzc2lvbgotICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk
IGFzIGVhcmx5IGFzIHBvc3NpYmxlIGR1cmluZyBwbHVnLWluCi0gKiBpbnN0YW50aWF0aW9uIGFu
ZCBBTFdBWVMgYmVmb3JlIGFueSB1bnRydXN0ZWQgY29kZSBoYXMgcnVuLiBHZW5lcmFsbHksIHRo
ZQotICogb25seSB0aGluZ3MgdGhhdCB0aGUgcGx1Zy1pbiBzaG91bGQgZG8gYmVmb3JlIGVudGVy
aW5nIHRoZSBzYW5kYm94IGFyZSB0bwotICogZGV0ZXJtaW5lIHRoZSBwYXRocyB0byBwYXNzIGlu
IGFzIGByZWFkT25seVBhdGhzYCBhbmQgYHJlYWRXcml0ZVBhdGhzYCwgYW5kCi0gKiB0byBlc3Rh
Ymxpc2ggYW55IElQQyBjaGFubmVscyB0byBiZSB1c2VkIGZyb20gdGhlIHNhbmRib3guIEluIGNh
c2VzIHdoZXJlCi0gKiB0aGUgcGx1Zy1pbiBtdXN0IHBhcnNlIGl0cyBjb25maWd1cmF0aW9uIGZp
bGVzIHRvIGRldGVybWluZSBhbnkgbmVlZGVkIGxvY2FsCi0gKiByZXNvdXJjZXMgKHN1Y2ggYXMg
ZmlsZXMgdG8gcHJlbG9hZCksIGl0IHNob3VsZCBkbyBzbyBhbmQgdGhlbiBpbW1lZGlhdGVseQot
ICogY2FsbCB0aGlzIGZ1bmN0aW9uLiBJZiBjb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBpbmZs
dWVuY2UgdGhlIHBhdGhzIHRoYXQKLSAqIHRoZSBwbHVnLWluIHdpbGwgcGFzcyBhcyBwYXJ0IG9m
IGByZWFkT25seVBhdGhzYCBhbmQgYHJlYWRXcml0ZVBhdGhzYCwgdGhlCi0gKiBwbHVnLWluIHNo
b3VsZCBlbnRlciB0aGUgc2FuZGJveCBmaXJzdCBhbmQgb25seSB0aGVuIHByb2Nlc3MgY29uZmln
dXJhdGlvbgotICogZmlsZXMgYW5kIGRlYWwgd2l0aCBub3JtYWwgc3RhcnR1cCB0YXNrcy4KLSAq
Ci0gKiBWZXJ5IGNsb3NlIGF0dGVudGlvbiBtdXN0IGJlIHBhaWQgdG8gd2VlZGluZyBvdXQgc2Vj
dXJpdHktc2Vuc2l0aXZlIGZpbGVzCi0gKiBmcm9tIHRoZSBgcmVhZFdyaXRlUGF0aHNgIGxpc3Qu
IElmIHRoZSBwbHVnLWluIGluc3RhbmNlIHJlYWRzIGEgY29uZmlndXJhdGlvbgotICogZmlsZSBh
dCBzdGFydHVwIHRvIGRldGVybWluZSB3aGljaCBhZGRpdGlvbmFsIGZpbGVzIGl0IHdpbGwgcGxh
Y2UgaW4gdGhlCi0gKiBgcmVhZFdyaXRlUGF0aHNgIGxpc3QgdG8gdGhpcyBjYWxsLCB0aGVuIHRo
YXQgY29uZmlndXJhdGlvbiBmaWxlIE1VU1QgTk9UIGJlCi0gKiBpbiB0aGUgYHJlYWRXcml0ZVBh
dGhzYCBpdHNlbGYuIE90aGVyd2lzZSwgc2hvdWxkIHRoZSBwbHVnLWluIGJlY29tZQotICogY29t
cHJvbWlzZWQsIGl0IGNhbiB0cml2aWFsbHkgZXNjYXBlIGl0cyBzYW5kYm94IHRoZSBuZXh0IHRp
bWUgaXQgaXMKLSAqIGluc3RhbnRpYXRlZCBieSB3cml0aW5nIGFyYml0cmFyeSBwYXRocyAob3Ig
anVzdCAiLyIpIGludG8gdGhpcyB3cml0YWJsZQotICogY29uZmlndXJhdGlvbiBmaWxlLgotICoK
LSAqIE5vdGUgdGhhdCBhZnRlciBhIHBsdWctaW4gaW5zdGFuY2UgZW50ZXJzIHRoZSBzYW5kYm94
LCBhbnkgbmF0aXZlIGNhbGxzIHRoYXQKLSAqIGl0IG1ha2VzIHdoaWNoIHJlZmVyIHRvIGFyYml0
cmFyeSBwYXRocyBvbiBkaXNrICB3aWxsIG9ubHkgd29yayBpZiB0aGUgcGF0aHMgYXJlCi0gKiBh
dmFpbGFibGUgd2l0aGluIHRoZSBzYW5kYm94LCBlaXRoZXIgc3RhdGljYWxseSB0aHJvdWdoIGBy
ZWFkT25seVBhdGhzYCBhbmQKLSAqIGByZWFkV3JpdGVQYXRoc2AsIG9yIGR5bmFtaWNhbGx5IHRo
cm91Z2ggQ29jb2EgQVBJcy4KLSAqIEhvd2V2ZXIsIE5QQVBJIGNhbGxzIChzdWNoIGFzIGUuZy4g
TlBOX1Bvc3RVUkwgd2l0aCB0aGUgZmlsZSBwYXJhbWV0ZXIgc2V0IHRvIFRSVUUpCi0gKiBjYW4g
YWNjZXNzIGZpbGVzIHRoYXQgbmF2aWdhdG9yIHBvbGljaWVzIGFsbG93LCB3aGljaCBpcyB1c3Vh
bGx5IGFuIGVudGlyZWx5Ci0gKiBkaWZmZXJlbnQgc2V0IGZvciByZW1vdGUgYW5kIGZvciBsb2Nh
bCBXZWIgcGFnZXMuCi0gKi8KLXR5cGVkZWYgTlBFcnJvciAoKldLTl9FbnRlclNhbmRib3hQcm9j
UHRyKShjb25zdCBjaGFyICpyZWFkT25seVBhdGhzW10sIGNvbnN0IGNoYXIgKnJlYWRXcml0ZVBh
dGhzW10pOwotCi0vKiEKLSAqIEBmdW5jdGlvbiBXS05fRmlsZVN0b3BBY2Nlc3NpbmcKLSAqIFJl
cXVlc3RzIHRoYXQgdGhlIG5hdmlnYXRvciByZXZva2UgdGhlIHBsdWctaW4ncyBhY2Nlc3MgdG8g
dGhlIGdpdmVuIHBhdGguCi0gKgotICogQHBhcmFtIHBhdGgKLSAqIFJlcXVpcmVkLiBBIHBhdGgg
dGhhdCB3YXMgcHJldmlvdXNseSByZXR1cm5lZCBmcm9tIE5TT3BlblBhbmVsIG9yIE5TU2F2ZVBh
bmVsLgotICoKLSAqIEByZXN1bHQKLSAqIFJldHVybnMgIE5QRVJSX05PX0VSUk9SLCBvciBOUEVS
Ul9HRU5FUklDX0VSUk9SIGlmIHRoZSByZXF1ZXN0aW5nIHBsdWctaW4KLSAqIGluc3RhbmNlIGlz
IG5vdCBpbiBhIHNhbmRib3guCi0gKgotICogQGRpc2N1c3Npb24KLSAqIFdoZW5ldmVyIGZpbGUg
YWNjZXNzIGlzIHByb3ZpZGVkIHRvIGEgcGx1Zy1pbiBpbnN0YW5jZSB0aHJvdWdoIGEKLSAqIENv
Y29hIEFQSSwgbmF2aWdhdG9yIHNob3VsZCBiZSBub3RmaWVkIHdoZW4gaXQgaXMgbm8gbG9uZ2Vy
IG5lZWRlZC4KLSAqIFRoaXMgd2lsbCBjYXVzZSBzdWJzZXF1ZW50IG9wZW4oMikgY2FsbHMgb24g
YW55IG9mIHRoZSByZXZva2VkIGZpbGVzIHRvIGZhaWwsCi0gKiBidXQgYnkgZGVzaWduIG5vIGF0
dGVtcHQgaXMgbWFkZSB0byBpbnZhbGlkYXRlIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvcnMuCi0g
KiBwbHVnLWluIHdyaXRlcnMgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8ga2VlcCBmaWxlcyBv
cGVuIGZvciBhcyBzaG9ydCBhIHBlcmlvZAotICogb2YgdGltZSBhcyBwb3NzaWJsZSwgYW5kIHRv
IGFsd2F5cyBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBvYmplY3RzIHJlcHJlc2VudGluZwotICog
dGhlIHJldHVybmVkIGZpbGVzIGdvIG91dCBvZiBzY29wZSBvciBhcmUgb3RoZXJ3aXNlIGRlc3Ry
b3llZC4KLSAqLwotdHlwZWRlZiBOUEVycm9yICgqV0tOX0ZpbGVTdG9wQWNjZXNzaW5nUHJvY1B0
cikoY29uc3QgY2hhciogcGF0aCk7Ci0KLXR5cGVkZWYgc3RydWN0IF9XS05TYW5kYm94RnVuY3Rp
b25zIHsKLSAgICB1aW50MTZfdCBzaXplOwotICAgIHVpbnQxNl90IHZlcnNpb247Ci0gICAgCi0g
ICAgV0tOX0VudGVyU2FuZGJveFByb2NQdHIgZW50ZXJTYW5kYm94OwotICAgIFdLTl9GaWxlU3Rv
cEFjY2Vzc2luZ1Byb2NQdHIgZmlsZVN0b3BBY2Nlc3Npbmc7Ci19IFdLTlNhbmRib3hGdW5jdGlv
bnM7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBucGFwaV9z
YW5kYm94X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDIzNykKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTE4
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBv
YnNvbGV0ZSBwbHVnLWluIHNhbmRib3hpbmcgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNiLmluOiBSZW1vdmVkLgor
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGNv
ZGUgdGhhdCBzdGF5cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlU2Fu
ZGJveEZ1bmN0aW9ucy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9t
YWMvTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLm1tOgorICAgICAgICBSZW1vdmVkIEFQSSByZWxh
dGVkIHBhcnRzLiBSZW1haW5pbmcgY29kZSB3aWxsIG1vdmUgdG8gYSBiZXR0ZXIgcGxhY2UgaW4g
YSBmb2xsb3ctdXAKKyAgICAgICAgcGF0Y2gsIGp1c3Qga2VlcGluZyBpdCBoZXJlIGZvciBlYXNp
ZXIgcmV2aWV3aW5nLgorICAgICAgICAoZW50ZXJTYW5kYm94KTogUmVtb3ZlZCBubyBsb25nZXIg
dXNlZCBhcmd1bWVudHMuCisKIDIwMTMtMDEtMTcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBEb24ndCBpbml0aWFsaXplIEFwcEtpdCBmb3IgcHJvY2Vzc2VzIHRoYXQg
ZG9uJ3QgdXNlIGl0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDEzOTk2NSkKKysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw4ICsxNDksNyBAQCBpZm5lcSAoJChTREtST09UKSwpCiBlbmRpZgogCiBT
QU5EQk9YX1BST0ZJTEVTID0gXAotCWNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiIFwKLQljb20uYXBw
bGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IKKwljb20uYXBwbGUuV2ViUHJvY2Vzcy5zYgogCiBh
bGw6ICQoU0FOREJPWF9QUk9GSUxFUykKIApJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxMzk5NjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsMTEgKzMyMSwxMSBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplU2FuZGJveChjb25zdCBTdHJpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzYW5kYm94
RmlsZU5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVALnNiIiks
IGJ1bmRsZUlkZW50aWZpZXIpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc2FuZGJveFVSTCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGhSZWxhdGl2ZVRvQmFzZSgwLCBz
YW5kYm94RmlsZU5hbWUuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSwgc2FuZGJv
eFByb2ZpbGVEaXJlY3RvcnkuZ2V0KCkpKTsKIAotICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHJv
ZmlsZVN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDooTlNV
UkwgKilzYW5kYm94VVJMLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9y
Ok5VTExdOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHJvZmlsZVN0cmluZyA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOihOU1VSTCAqKXNhbmRib3hV
UkwuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF0pOwogICAg
IGlmICghcHJvZmlsZVN0cmluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW50ZXJTYW5kYm94
KFtwcm9maWxlU3RyaW5nLmdldCgpIFVURjhTdHJpbmddLCAwLCAwKTsKKyAgICBlbnRlclNhbmRi
b3goW3Byb2ZpbGVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOwogfQogCiBzdGF0aWMgdm9pZCBt
dXRlQXVkaW8odm9pZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL2Nv
bS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Mu
c2IuaW4JKHJldmlzaW9uIDEzOTk2NSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
bWFjL2NvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpA
QCAtMSwxOTYgKzAsMCBAQAotKHZlcnNpb24gMSkKLShkZW55IGRlZmF1bHQgKHdpdGggcGFydGlh
bC1zeW1ib2xpY2F0aW9uKSkKLShhbGxvdyBpcGMtcG9zaXgtc2htIHN5c3RlbS1hdWRpdCBzeXN0
ZW0tc29ja2V0IGZpbGUtcmVhZC1tZXRhZGF0YSkKLQotKGltcG9ydCAic3lzdGVtLnNiIikKLQot
OzsgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGhvbWUgZGlyZWN0b3J5IHJlbGF0aXZlIHBhdGggZmls
dGVycwotKGRlZmluZSAoaG9tZS1yZWdleCBob21lLXJlbGF0aXZlLXJlZ2V4KQotICAocmVnZXgg
KHN0cmluZy1hcHBlbmQgIl4iIChyZWdleC1xdW90ZSAocGFyYW0gIkhPTUVfRElSIikpIGhvbWUt
cmVsYXRpdmUtcmVnZXgpKSkKLQotKGRlZmluZSAoaG9tZS1zdWJwYXRoIGhvbWUtcmVsYXRpdmUt
c3VicGF0aCkKLSAgKHN1YnBhdGggKHN0cmluZy1hcHBlbmQgKHBhcmFtICJIT01FX0RJUiIpIGhv
bWUtcmVsYXRpdmUtc3VicGF0aCkpKQotCi0oZGVmaW5lIChob21lLWxpdGVyYWwgaG9tZS1yZWxh
dGl2ZS1saXRlcmFsKQotICAobGl0ZXJhbCAoc3RyaW5nLWFwcGVuZCAocGFyYW0gIkhPTUVfRElS
IikgaG9tZS1yZWxhdGl2ZS1saXRlcmFsKSkpCi0KLTs7IFJlYWQtb25seSBwcmVmZXJlbmNlcyBh
bmQgZGF0YQotKGFsbG93IGZpbGUtcmVhZCoKLSAgICAgICA7OyBCYXNpYyBzeXN0ZW0gcGF0aHMK
LSAgICAgICAoc3VicGF0aCAiL0xpYnJhcnkvRnJhbWV3b3JrcyIpCi0gICAgICAgKHN1YnBhdGgg
Ii9wcml2YXRlL3Zhci9kYi9tZHMiKQotCi0gICAgICAgOzsgU3lzdGVtIGFuZCB1c2VyIHByZWZl
cmVuY2VzCi0gICAgICAgKGxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzLy5HbG9iYWxQcmVm
ZXJlbmNlcy5wbGlzdCIpCi0gICAgICAgKGxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2Nv
bS5hcHBsZS5CbHVldG9vdGgucGxpc3QiKQotICAgICAgIChsaXRlcmFsICIvTGlicmFyeS9QcmVm
ZXJlbmNlcy9jb20uYXBwbGUuUXVpY2tUaW1lLnBsaXN0IikKLSAgICAgICAocmVnZXggIyJeL0xp
YnJhcnkvUHJlZmVyZW5jZXMvY29tXC5hcHBsZVwuc2VjdXJpdHkiKQotICAgICAgIChob21lLWxp
dGVyYWwgIi8uQ0ZVc2VyVGV4dEVuY29kaW5nIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGli
cmFyeS9BdWRpbyIpCi0gICAgICAgKGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvQ29sb3JQaWNrZXJz
IikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9Db2xvclN5bmMiKQotICAgICAgICho
b21lLXN1YnBhdGggIi9MaWJyYXJ5L0NvbXBvbmVudHMiKQotICAgICAgIChob21lLXN1YnBhdGgg
Ii9MaWJyYXJ5L0lucHV0IE1ldGhvZHMiKQotICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5
L0tleUJpbmRpbmdzIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9LZXlib2FyZCBM
YXlvdXRzIikKLSAgICAgICAoaG9tZS1zdWJwYXRoICIvTGlicmFyeS9Gb250cyIpCi0gICAgICAg
KGhvbWUtc3VicGF0aCAiL0xpYnJhcnkvUERGIFNlcnZpY2VzIikKLSAgICAgICAoaG9tZS1saXRl
cmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy8uR2xvYmFsUHJlZmVyZW5jZXMucGxpc3QiKQotICAg
ICAgIChob21lLXJlZ2V4ICMiL0xpYnJhcnkvUHJlZmVyZW5jZXMvQnlIb3N0L1wuR2xvYmFsUHJl
ZmVyZW5jZXNcLiIpCi0gICAgICAgKGhvbWUtcmVnZXggIyIvTGlicmFyeS9QcmVmZXJlbmNlcy9C
eUhvc3QvY29tXC5hcHBsZVwuQmx1ZXRvb3RoXC4iKQotICAgICAgIChob21lLWxpdGVyYWwgIi9M
aWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5BVFMucGxpc3QiKQotICAgICAgIChob21lLWxp
dGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5kcml2ZXIuQXBwbGVCbHVldG9v
dGhNdWx0aXRvdWNoLm1vdXNlLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFy
eS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuZHJpdmVyLkFwcGxlQmx1ZXRvb3RoTXVsdGl0b3VjaC50
cmFja3BhZC5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5j
ZXMvY29tLmFwcGxlLmRyaXZlci5BcHBsZUhJRE1vdXNlLnBsaXN0IikKLSAgICAgICAoaG9tZS1s
aXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuaW5wdXRtZXRob2RraXQucGxp
c3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBs
ZS5pV29yay5QYWdlcy5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJl
ZmVyZW5jZXMvY29tLmFwcGxlLkxhdW5jaFNlcnZpY2VzLnBsaXN0IikKLSAgICAgICAoaG9tZS1s
aXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuTXVsdGl0b3VjaFN1cHBvcnQu
cGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5h
cHBsZS5hdmZvdW5kYXRpb24ucGxpc3QiKQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5
L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5jb3JlbWVkaWEucGxpc3QiKQotICAgICAgIChob21lLWxp
dGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5vcGVuZ2wucGxpc3QiKQotICAg
ICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5zZWN1cml0
eS5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29t
LmFwcGxlLnNlY3VyaXR5X2NvbW1vbi5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xp
YnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLnNwZWVjaC52b2ljZS5wcmVmcy5wbGlzdCIpCi0g
ICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLnNwZWVj
aC5zeW50aGVzaXMuZ2VuZXJhbC5wcmVmcy5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAi
L0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLnN5c3RlbXNvdW5kLnBsaXN0IikKLSAgICAg
ICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUudW5pdmVyc2Fs
YWNjZXNzLnBsaXN0IikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNl
cy9jb20uYXBwbGUuV2ViRm91bmRhdGlvbi5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAi
L0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLm52aWRpYS5PcGVuR0wucGxpc3QiKQotICAgICAgICho
b21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL3Bicy5wbGlzdCIpCi0gICAgICAgKGhv
bWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLlNlcnZpY2VzTWVudS5T
ZXJ2aWNlcy5wbGlzdCIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5j
ZXMvUXVpY2tUaW1lIFByZWZlcmVuY2VzIikKLQotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJy
YXJ5L0NhY2hlcy9jb20uYXBwbGUuY29yZWF1ZGlvLmNvbXBvbmVudHMucGxpc3QiKQotCi0gICAg
ICAgKHN1YnBhdGggIi9MaWJyYXJ5L0F1ZGlvL1BsdWctSW5zL0NvbXBvbmVudHMiKQotICAgICAg
IChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0F1ZGlvL1BsdWctSW5zL0NvbXBvbmVudHMiKQotICAg
ICAgIChzdWJwYXRoICIvTGlicmFyeS9BdWRpby9QbHVnLUlucy9IQUwiKQotICAgICAgIChzdWJw
YXRoICIvTGlicmFyeS9RdWlja1RpbWUiKQotICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5
L1F1aWNrVGltZSIpCi0gICAgICAgKHN1YnBhdGggIi9MaWJyYXJ5L1ZpZGVvL1BsdWctSW5zIikK
LQotICAgICAgIChsaXRlcmFsICIvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0NyYXNoUmVw
b3J0ZXIvU3VibWl0RGlhZ0luZm8uZG9tYWlucyIpCi0KLSAgICAgICAoaG9tZS1saXRlcmFsICIv
TGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L1N5bmNTZXJ2aWNlcy9Mb2NhbC9DbGllbnRzV2l0
aENoYW5nZXMvY29tLmFwcGxlLktleWNoYWluIikKLQotICAgICAgIDs7IEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzEwNDc5Njg1PiBpcyBmaXhlZC4K
LSAgICAgICAoc3VicGF0aCAiL0xpYnJhcnkvS2V5Y2hhaW5zIikKLSkKLQotOzsgUmVhZC13cml0
ZSBwcmVmZXJlbmNlcyBhbmQgZGF0YQotKGFsbG93IGZpbGUqCi0gICAgICAgKGhvbWUtcmVnZXgg
IyIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb21cLmFwcGxlXC5XZWJLaXRcLlBsdWdpblByb2Nlc3Nc
LnBsaXN0IikKLQotICAgICAgIChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0NhY2hlcy9RdWlja1Rp
bWUiKQotCi0gICAgICAgOzsgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiA8cmRh
cjovL3Byb2JsZW0vMTA0Nzk2ODU+IGlzIGZpeGVkLgotICAgICAgIChob21lLXN1YnBhdGggIi9M
aWJyYXJ5L0tleWNoYWlucyIpKQotCi07OyBJT0tpdCB1c2VyIGNsaWVudHMKLShhbGxvdyBpb2tp
dC1vcGVuCi0gICAgICAgKGlva2l0LWNvbm5lY3Rpb24gIklPQWNjZWxlcmF0b3IiKQotICAgICAg
IChpb2tpdC11c2VyLWNsaWVudC1jbGFzcyAiQUdQTUNsaWVudCIpCi0gICAgICAgKGlva2l0LXVz
ZXItY2xpZW50LWNsYXNzICJBcHBsZUdyYXBoaWNzQ29udHJvbENsaWVudCIpCi0gICAgICAgKGlv
a2l0LXVzZXItY2xpZW50LWNsYXNzICJBcHBsZVNOQkZCVXNlckNsaWVudCIpCi0gICAgICAgKGlv
a2l0LXVzZXItY2xpZW50LWNsYXNzICJJT0FjY2VsZXJhdGlvblVzZXJDbGllbnQiKQotICAgICAg
IChpb2tpdC11c2VyLWNsaWVudC1jbGFzcyAiSU9BdWRpb0NvbnRyb2xVc2VyQ2xpZW50IikKLSAg
ICAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPQXVkaW9FbmdpbmVVc2VyQ2xpZW50IikK
LSAgICAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPRnJhbWVidWZmZXJTaGFyZWRVc2Vy
Q2xpZW50IikKLSAgICAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPSElEUGFyYW1Vc2Vy
Q2xpZW50IikKLSAgICAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPU3VyZmFjZVJvb3RV
c2VyQ2xpZW50IikKLSAgICAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPU3VyZmFjZVNl
bmRSaWdodCIpCi0gICAgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJSb290RG9tYWluVXNl
ckNsaWVudCIpKQotCi07OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVpcmVkIGJ5IEFwcEtpdCBhbmQg
b3RoZXIgZnJhbWV3b3JrcwotKGFsbG93IG1hY2gtbG9va3VwCi0gICAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUuQ29yZVNlcnZpY2VzLmNvcmVzZXJ2aWNlc2QiKQotICAgICAgIChnbG9iYWwt
bmFtZSAiY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKLSAgICAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5GaWxlQ29vcmRpbmF0aW9uIikKLSAgICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5Gb250T2JqZWN0c1NlcnZlciIpCi0gICAgICAgKGdsb2JhbC1u
YW1lICJjb20uYXBwbGUuRm9udFNlcnZlciIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBw
bGUuSW1hZ2VDYXB0dXJlRXh0ZW5zaW9uMi5wcmVzZW5jZSIpCi0gICAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUuU2VjdXJpdHlTZXJ2ZXIiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLlN5c3RlbUNvbmZpZ3VyYXRpb24uY29uZmlnZCIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUuU3lzdGVtQ29uZmlndXJhdGlvbi5QUFBDb250cm9sbGVyIikKLSAgICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5TeXN0ZW1Db25maWd1cmF0aW9uLlNDTmV0d29ya1JlYWNoYWJp
bGl0eSIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuYXVkaW8uVkRDQXNzaXN0YW50
IikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5hdWRpby5hdWRpb2hhbGQiKQotICAg
ICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmF1ZGlvLmNvcmVhdWRpb2QiKQotICAgICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmNtaW8uVkRDQXNzaXN0YW50IikKLSAgICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5jb29raWVkIikgOzsgRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8xMDc5
MDc2OD4gTGltaXQgYWNjZXNzIHRvIGNvb2tpZXMuCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY3Ztc1NlcnYiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLm5ldHdvcmtk
IikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5vY3NwZCIpCi0gICAgICAgKGdsb2Jh
bC1uYW1lICJjb20uYXBwbGUucGFzdGVib2FyZC4xIikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS53aW5kb3dfcHJveGllcyIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
d2luZG93c2VydmVyLmFjdGl2ZSIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2Zu
ZXR3b3JrLkF1dGhCcm9rZXJBZ2VudCIpCi0gICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
UG93ZXJNYW5hZ2VtZW50LmNvbnRyb2wiKQotICAgICAgIChnbG9iYWwtbmFtZS1yZWdleCAjIl9P
cGVuU3RlcCQiKQotKQotCi07OyBOZXR3b3JraW5nCi0oYWxsb3cgc3lzdGVtLXNvY2tldCAoc29j
a2V0LWRvbWFpbiBBRl9ST1VURSkpCi0oYWxsb3cgc3lzdGVtLXNvY2tldCAocmVxdWlyZS1hbGwg
KHNvY2tldC1kb21haW4gQUZfU1lTVEVNKSAoc29ja2V0LXByb3RvY29sIDIpKSkgOyBTWVNQUk9U
T19DT05UUk9MCi0oYWxsb3cgbmV0d29yay1vdXRib3VuZAotICAgICAgIDs7IEtlcm5lbCBjb250
cm9scwotICAgICAgIChjb250cm9sLW5hbWUgImNvbS5hcHBsZS5uZXR3b3JrLnN0YXRpc3RpY3Mi
KQotICAgICAgIChjb250cm9sLW5hbWUgImNvbS5hcHBsZS5uZXRzcmMiKQotCi0gICAgICAgOzsg
TG9jYWwgbUROU1Jlc3BvbmRlciBmb3IgRE5TLCBhcmJpdHJhcnkgb3V0Ym91bmQgVENQCi0gICAg
ICAgKGxpdGVyYWwgIi9wcml2YXRlL3Zhci9ydW4vbUROU1Jlc3BvbmRlciIpCi0gICAgICAgKHJl
bW90ZSB0Y3ApKQotCi0oYWxsb3cgbWFjaC1sb29rdXAKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS50c20udWlzZXJ2ZXIiKQotICAgICAgIChsb2NhbC1uYW1lICJjb20uYXBwbGUudHNt
LnBvcnRuYW1lIikKLSkKLQotOzsgT3BlbiBhbmQgU2F2ZSBwYW5lbHMKLShkZWZpbmUgKGFwcGx5
LXJlYWQtYW5kLWlzc3VlLWV4dGVuc2lvbiBvcCBwYXRoLWZpbHRlcikKLSAgICAgICAob3AgZmls
ZS1yZWFkKiBwYXRoLWZpbHRlcikKLSAgICAgICAob3AgZmlsZS1pc3N1ZS1leHRlbnNpb24gKHJl
cXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgImNvbS5hcHBsZS5hcHAtc2FuZGJveC5yZWFkIikg
cGF0aC1maWx0ZXIpKSkKLShkZWZpbmUgKGFwcGx5LXdyaXRlLWFuZC1pc3N1ZS1leHRlbnNpb24g
b3AgcGF0aC1maWx0ZXIpCi0gICAgICAgKG9wIGZpbGUtd3JpdGUqIHBhdGgtZmlsdGVyKQotICAg
ICAgIChvcCBmaWxlLWlzc3VlLWV4dGVuc2lvbiAocmVxdWlyZS1hbGwgKGV4dGVuc2lvbi1jbGFz
cyAiY29tLmFwcGxlLmFwcC1zYW5kYm94LnJlYWQtd3JpdGUiKSBwYXRoLWZpbHRlcikpKQotKGRl
ZmluZSAocmVhZC13cml0ZS1hbmQtaXNzdWUtZXh0ZW5zaW9ucyBwYXRoLWZpbHRlcikKLSAgICAg
ICAoYXBwbHktcmVhZC1hbmQtaXNzdWUtZXh0ZW5zaW9uIGFsbG93IHBhdGgtZmlsdGVyKQotICAg
ICAgIChhcHBseS13cml0ZS1hbmQtaXNzdWUtZXh0ZW5zaW9uIGFsbG93IHBhdGgtZmlsdGVyKSkK
LShhbGxvdyBxdG4tdXNlcgotICAgICAgIChleHRlbnNpb24gImNvbS5hcHBsZS5hcHAtc2FuZGJv
eC5yZWFkLXdyaXRlIikpCi0ocmVhZC13cml0ZS1hbmQtaXNzdWUtZXh0ZW5zaW9ucyAoZXh0ZW5z
aW9uICJjb20uYXBwbGUuYXBwLXNhbmRib3gucmVhZC13cml0ZSIpKQotCi07OyBQcmludGluZwot
KGFsbG93IG5ldHdvcmstb3V0Ym91bmQgKGxpdGVyYWwgIi9wcml2YXRlL3Zhci9ydW4vY3Vwc2Qi
KSkKLShhbGxvdyBtYWNoLWxvb2t1cAotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLnBy
aW50dWl0b29sLmFnZW50IikKLSAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5wcmludHRv
b2wuYWdlbnQiKQotICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLnByaW50dG9vbC5kYWVt
b24iKSkKLShhbGxvdyBmaWxlLXJlYWQqCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiLy5jdXBzL2xw
b3B0aW9ucyIpCi0gICAgICAgKGhvbWUtbGl0ZXJhbCAiLy5jdXBzL2NsaWVudC5jb25mIikKLSAg
ICAgICAobGl0ZXJhbCAiL3ByaXZhdGUvZXRjL2N1cHMvY2xpZW50LmNvbmYiKQotICAgICAgIChs
aXRlcmFsICIvcHJpdmF0ZS9ldGMvY3Vwcy9scG9wdGlvbnMiKQotICAgICAgIChzdWJwYXRoICIv
cHJpdmF0ZS9ldGMvY3Vwcy9wcGQiKQotICAgICAgIChzdWJwYXRoICIvcHJpdmF0ZS92YXIvcnVu
L2N1cHNkIikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9vcmcu
Y3Vwcy5QcmludGluZ1ByZWZzLnBsaXN0IikpCi0KLTs7IFRleHQgU2VydmljZXMgTWFuYWdlcgot
KGFsbG93IGlva2l0LXNldC1wcm9wZXJ0aWVzIChpb2tpdC1wcm9wZXJ0eSAiQ2Fwc0xvY2tEZWxh
eU92ZXJyaWRlIikpCi0KLTs7IEltYWdlIENhcHR1cmUgKHVzZWQgYnkgcHJpbnQgcHJldmlldyBk
aWFsb2cpCi0oYWxsb3cgYXBwbGVldmVudC1zZW5kIChhcHBsZWV2ZW50LWRlc3RpbmF0aW9uICJj
b20uYXBwbGUuaW1hZ2VjYXB0dXJlZXh0ZW5zaW9uMiIpKQotCi07OyBTaWxlbnRseSBibG9jayBh
Y2Nlc3MgdG8gc29tZSBmaWxlcwotKGRlbnkgZmlsZS1yZWFkKiBmaWxlLXdyaXRlKiAod2l0aCBu
by1sb2cpCi0gICAgICAgKGhvbWUtcmVnZXggIyIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb21cLmFw
cGxlXC5pbnRlcm5ldGNvbmZpZ3ByaXZcLnBsaXN0IikKLSAgICAgICAoaG9tZS1yZWdleCAjIi9M
aWJyYXJ5L1ByZWZlcmVuY2VzL2NvbVwuYXBwbGVcLmludGVybmV0Y29uZmlnXC5wbGlzdCIpCi0K
LSAgICAgICA7OyBGSVhNRTogU2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVt
Lzk0MjI5NTc+IGlzIGZpeGVkLgotICAgICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L0NhY2hl
cy9DYWNoZS5kYiIpCi0KLSAgICAgICA7OyBGSVhNRTogU2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIg
PHJkYXI6Ly9wcm9ibGVtLzEwNDYzODgxPiBpcyBmaXhlZC4KLSAgICAgICAoaG9tZS1saXRlcmFs
ICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuTGF1bmNoU2VydmljZXMuUXVhcmFudGlu
ZUV2ZW50c1YyIikKLSAgICAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9j
b20uYXBwbGUuTGF1bmNoU2VydmljZXMuUXVhcmFudGluZUV2ZW50c1YyLWpvdXJuYWwiKSkKLQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTM5OTY1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MzQsNyArODM0LDYgQEAKIAkJ
QkM5QkE1MDgxNjk5MUMzQzAwRTQ0NjE2IC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlCQTUwNjE2OTkxQzNDMDBF
NDQ2MTYgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLzsgfTsKIAkJQkM5QkE1MDkxNjk5MUMzQzAw
RTQ0NjE2IC8qIENoaWxkUHJvY2Vzc01haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUJBNTA3MTY5OTFDM0MwMEU0NDYxNiAvKiBDaGlsZFByb2Nl
c3NNYWluLmggKi87IH07CiAJCUJDOUZBNTIwMTYwRDNCNDMwMDU0REY5QSAvKiBGb3VuZGF0aW9u
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDM0RFNDY4MTVBOTE3NjMwMDhEMjZGQyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsg
fTsKLQkJQkM5RkE1MjIxNjBENEEwQzAwNTRERjlBIC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2lu
UHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE5NjdFMzUxNTBBQjVENTAwQzczMTY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJv
Y2Vzcy5zYiAqLzsgfTsKIAkJQkM5RkE1MjMxNjBENEEwRjAwNTRERjlBIC8qIGNvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTk2N0UzNzE1MEFCNUUyMDBDNzMxNjkgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2Ig
Ki87IH07CiAJCUJDQTBFRjdGMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGN0QxMjMzMUU3
ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmggKi87IH07CiAJCUJDQTBFRjgwMTIzMzFFNzgwMDdE
M0NGQiAvKiBXZWJVbmRvU3RlcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuY3Bw
ICovOyB9OwpAQCAtMTA0Myw3ICsxMDQyLDYgQEAKIAkJRTE4RTY5MTgxNjlCNjY3QjAwOUI2Njcw
IC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1T
aGltUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlFMTk1ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyog
UERGS2l0SW1wb3J0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE5NTgyRDIxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCAqLzsgfTsK
IAkJRTE5NTgyRDYxNTNDQzA1NDAwQjYwODc1IC8qIFBERktpdEltcG9ydHMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk1ODJENDE1M0NDMDUzMDBC
NjA4NzUgLyogUERGS2l0SW1wb3J0cy5tbSAqLzsgfTsKLQkJRTE5NjdFMzYxNTBBQjVENTAwQzcz
MTY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NjdFMzUxNTBBQjVENTAwQzczMTY5
IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiAqLzsgfTsKIAkJRTE5NjdFMzgx
NTBBQjVFMjAwQzczMTY5IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk2N0UzNzE1MEFCNUUyMDBDNzMx
NjkgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi87IH07CiAJCUUxOTk4NzVFMTQyQzA0NTQw
MEJCMkRFNyAvKiBTaW1wbGVQREZQbHVnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk5ODc1QzE0MkJGQzk3MDBCQjJERTcgLyogU2ltcGxlUERG
UGx1Z2luLm1tICovOyB9OwogCQlFMUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRl
ZFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFBMzE3MzExMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCAqLzsgfTsKQEAg
LTIzNTIsNyArMjM1MCw2IEBACiAJCUUxNzlGRDlFMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVu
dENvZGVyc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFy
Z3VtZW50Q29kZXJzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdCRjk5
NTE0RDBBNzNFMDBBNUEwNjkgLyogTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdCRjk5NzE0RDBBQTgzMDBBNUEwNjkgLyogTmV0
c2NhcGVTYW5kYm94RnVuY3Rpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlFMTdCRjk5OTE0RDBDQkYxMDBBNUEwNjkgLyogY29tLmFwcGxlLldlYktpdC5Q
bHVnaW5Qcm9jZXNzLnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJL
aXQuUGx1Z2luUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4
QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcmludEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMThFNjkwOTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtU2hpbVByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4RTY5MEExNjlCNTYzRjAwOUI2Njcw
IC8qIFNlY0l0ZW1TaGltUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VjSXRlbVNoaW1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM2Niw3
ICsyMzYzLDYgQEAKIAkJRTE4RTY5NDgxNjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1TaGltLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTU4MkQyMTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZLaXRJ
bXBvcnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERktpdEltcG9ydHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NTgyRDQxNTNDQzA1MzAwQjYwODc1
IC8qIFBERktpdEltcG9ydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQREZLaXRJbXBvcnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTk2
N0UzNTE1MEFCNUQ1MDBDNzMxNjkgLyogY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNi
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5z
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5
IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk5ODc1
QTE0MkJGOUI4MDBCQjJERTcgLyogU2ltcGxlUERGUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNpbXBsZVBERlBsdWdpbi5oOyBwYXRoID0gUERGL1NpbXBsZVBERlBs
dWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk5ODc1QzE0MkJGQzk3MDBC
QjJERTcgLyogU2ltcGxlUERGUGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gU2ltcGxlUERGUGx1Z2luLm1tOyBwYXRoID0gUERGL1NpbXBsZVBERlBsdWdp
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MDgsNyArMjYwNCw2IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUxNEU5OUY5MTREODc5Qzkw
MDFEMjIxRiAvKiBhZGQtZW50aXRsZW1lbnRzLnNoICovLAotCQkJCUUxN0JGOTk5MTREMENCRjEw
MEE1QTA2OSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Muc2IuaW4gKi8sCiAJCQkJ
MUEyRDkxQTUxMjgxRDczOTAwMUVCOTYyIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eU1hYy5tbSAq
LywKIAkJCQlFMTRFOTlGODE0RDg3OUI0MDAxRDIyMUYgLyogUGx1Z2luUHJvY2Vzcy5lbnRpdGxl
bWVudHMgKi8sCiAJCQkJMUFBNDc5MjIxMkE1OUZEOTAwODIzNkMzIC8qIFBsdWdpblByb2Nlc3NN
YWMubW0gKi8sCkBAIC00Mjg5LDcgKzQyODQsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTEy
RjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJNTEyRjU4QTExMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0
aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCi0JCQkJRTE5NjdFMzUxNTBBQjVENTAwQzczMTY5IC8q
IGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiAqLywKIAkJCQlFMTk2N0UzNzE1MEFC
NUUyMDBDNzMxNjkgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi8sCiAJCQkJMjk4NEY1ODYx
NjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJMjk4NEY1ODcxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlck1lc3NhZ2VzLmggKi8sCkBAIC01Mjk0LDcgKzUyODgsNiBAQAogCQkJaXNhID0gUEJYUmVz
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKLQkJCQlCQzlGQTUyMjE2MEQ0QTBDMDA1NERGOUEgLyogY29tLmFwcGxlLldlYktp
dC5QbHVnaW5Qcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLywKIAkJCQlCQzlGQTUyMzE2MEQ0QTBG
MDA1NERGOUEgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovLAogCQkJ
CTFDQkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrLnBkZiBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2IC8qIEluZm9QbGlzdC5zdHJpbmdzIGluIFJlc291
cmNlcyAqLywKQEAgLTUzMjEsNyArNTMxNCw2IEBACiAJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAot
CQkJCUUxOTY3RTM2MTUwQUI1RDUwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblBy
b2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCShyZXZpc2lvbiAxMzk5NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxMCArMzksNiBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk5l
dHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNDEyLDEwICs0MDgsNyBAQCBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgV0tOVlN1cHBvcnRzQ29tcG9zCiAvLyBXaGV0aGVyIHRoZSBicm93c2Vy
IGV4cGVjdHMgYSBub24tcmV0YWluZWQgQ29yZSBBbmltYXRpb24gbGF5ZXIuCiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgV0tOVkV4cGVjdHNOb25yZXRhaW5lZExheWVyID0gNzQ2NTc7CiAKLS8vIFdo
ZXRoZXIgcGx1Zy1pbiBjb2RlIGlzIGFsbG93ZWQgdG8gZW50ZXIgKGFyYml0cmFyeSkgc2FuZGJv
eCBmb3IgdGhlIHByb2Nlc3MuCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgV0tOVkFsbG93ZWRUb0Vu
dGVyU2FuZGJveCA9IDc0NjU4OwotCi0vLyBXS05WU2FuZGJveEZ1bmN0aW9ucyA9IDc0NjU5IGlz
IGRlZmluZWQgaW4gTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmgKKy8vIDc0NjU4IGFuZCA3NDY1
OSBhcmUgbm8gbG9uZ2VyIGltcGxlbWVudGVkLgogCiAjZW5kaWYKIApAQCAtNTAxLDE4ICs0OTQs
NiBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgV0tOVkFsbG93ZWRUb0VudGVyU2Fu
ZGJveDoKLSAgICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICBi
cmVhazsKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAg
ICAgICBjYXNlIFdLTlZTYW5kYm94RnVuY3Rpb25zOgotICAgICAgICB7Ci0gICAgICAgICAgICAq
KFdLTlNhbmRib3hGdW5jdGlvbnMgKiopdmFsdWUgPSBuZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0jZW5kaWYKLQogI2lmbmRlZiBOUF9O
T19RVUlDS0RSQVcKICAgICAgICAgY2FzZSBOUE5Wc3VwcG9ydHNRdWlja0RyYXdCb29sOgogICAg
ICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGUgUXVpY2tEcmF3IGRyYXdpbmcgbW9kZWwu
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05l
dHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmgJ
KHJldmlzaW9uIDEzOTk2NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDQwICsyNiwxMCBAQAogI2lmbmRlZiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnNfaAogI2Rl
ZmluZSBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnNfaAogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpICYmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKyNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL25wYXBpLmg+Citib29sIGVudGVyU2FuZGJveChj
b25zdCBjaGFyKiBzYW5kYm94UHJvZmlsZSk7CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJu
ICJDIiB7Ci0jZW5kaWYKLSAgICAKLSNkZWZpbmUgV0tOVlNhbmRib3hGdW5jdGlvbnMgNzQ2NTkK
LSNkZWZpbmUgV0tOVlNhbmRib3hGdW5jdGlvbnNWZXJzaW9uQ3VycmVudCAxCi0KLXR5cGVkZWYg
TlBFcnJvciAoKldLTl9FbnRlclNhbmRib3hQcm9jUHRyKShjb25zdCBjaGFyICpyZWFkT25seVBh
dGhzW10sIGNvbnN0IGNoYXIgKnJlYWRXcml0ZVBhdGhzW10pOwotdHlwZWRlZiBOUEVycm9yICgq
V0tOX0ZpbGVTdG9wQWNjZXNzaW5nUHJvY1B0cikoY29uc3QgY2hhciogcGF0aCk7Ci0KLU5QRXJy
b3IgV0tOX0VudGVyU2FuZGJveChjb25zdCBjaGFyICpyZWFkT25seVBhdGhzW10sIGNvbnN0IGNo
YXIgKnJlYWRXcml0ZVBhdGhzW10pOwotTlBFcnJvciBXS05fRmlsZVN0b3BBY2Nlc3NpbmcoY29u
c3QgY2hhciogcGF0aCk7Ci0KLXR5cGVkZWYgc3RydWN0IF9XS05TYW5kYm94RnVuY3Rpb25zIHsK
LSAgICB1aW50MTZfdCBzaXplOwotICAgIHVpbnQxNl90IHZlcnNpb247Ci0gICAgCi0gICAgV0tO
X0VudGVyU2FuZGJveFByb2NQdHIgZW50ZXJTYW5kYm94OwotICAgIFdLTl9GaWxlU3RvcEFjY2Vz
c2luZ1Byb2NQdHIgZmlsZVN0b3BBY2Nlc3Npbmc7Ci19IFdLTlNhbmRib3hGdW5jdGlvbnM7Ci0K
LS8vIEZJWE1FOiBUaGlzIGhlYWRlciBpcyBtb3N0bHkgIkFQSSIsIGV4Y2VwdCBmb3IgdGhlIGZv
bGxvd2luZyB0d28gZnVuY3Rpb25zLiBXZSBzaG91bGQKLS8vIG1vdmUgdGhlIGRlY2xhcmF0aW9u
cyB0byBhIHNlcGVyYXRlIGhlYWRlci4KLVdLTlNhbmRib3hGdW5jdGlvbnMqIG5ldHNjYXBlU2Fu
ZGJveEZ1bmN0aW9ucygpOwotTlBFcnJvciBlbnRlclNhbmRib3goY29uc3QgY2hhciogc2FuZGJv
eFByb2ZpbGUsIGNvbnN0IGNoYXIqIHJlYWRPbmx5UGF0aHNbXSwgY29uc3QgY2hhciogcmVhZFdy
aXRlUGF0aHNbXSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQor
I2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlU2FuZGJveEZ1
bmN0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5tbQkocmV2aXNpb24gMTM5
OTY1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9O
ZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDc2ICsyNiwy
NiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXRzY2FwZVNhbmRib3hGdW5jdGlv
bnMuaCIKIAotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW1wb3J0ICJQbHVnaW5Q
cm9jZXNzLmgiCi0jaW1wb3J0ICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2ltcG9ydCAiV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNp
bXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1w
b3J0IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKENvcmVTZXJ2aWNlcykKLVNPRlRfTElOS19PUFRJT05BTChDb3JlU2VydmljZXMsIENG
VVJMU3RvcEFjY2Vzc2luZ1NlY3VyaXR5U2NvcGVkUmVzb3VyY2UsIHZvaWQsIHVudXNlZCwgKENG
VVJMUmVmKSkKLQogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1XS05TYW5kYm94RnVuY3Rpb25zKiBuZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMoKQot
ewotICAgIHN0YXRpYyBXS05TYW5kYm94RnVuY3Rpb25zIGZ1bmN0aW9ucyA9IHsKLSAgICAgICAg
c2l6ZW9mKFdLTlNhbmRib3hGdW5jdGlvbnMpLAotICAgICAgICBXS05WU2FuZGJveEZ1bmN0aW9u
c1ZlcnNpb25DdXJyZW50LAotICAgICAgICBXS05fRW50ZXJTYW5kYm94LAotICAgICAgICBXS05f
RmlsZVN0b3BBY2Nlc3NpbmcKLSAgICB9OwotICAgIHJldHVybiAmZnVuY3Rpb25zOwotfQotCiBz
dGF0aWMgYm9vbCBlbnRlcmVkU2FuZGJveDsKIAotc3RhdGljIENTdHJpbmcgcmVhZFNhbmRib3hQ
cm9maWxlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHByb2ZpbGVVUkwoQWRvcHRDRiwg
Q0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIENGU1RSKCJj
b20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3MiKSwgQ0ZTVFIoInNiIiksIDApKTsKLSAgICBj
aGFyIHByb2ZpbGVQYXRoW1BBVEhfTUFYXTsKLSAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByb2ZpbGVVUkwuZ2V0KCksIGZhbHNlLCByZWludGVycHJldF9jYXN0PFVJ
bnQ4Kj4ocHJvZmlsZVBhdGgpLCBzaXplb2YocHJvZmlsZVBhdGgpKSkgewotICAgICAgICBXVEZM
b2dBbHdheXMoIkNvdWxkIG5vdCBnZXQgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb24gb2YgcGx1
Zy1pbiBzYW5kYm94IFVSTFxuIik7Ci0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAgfQot
Ci0gICAgRklMRSAqZmlsZSA9IGZvcGVuKHByb2ZpbGVQYXRoLCAiciIpOwotICAgIGlmICghZmls
ZSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBvcGVuIHBsdWctaW4gc2FuZGJv
eCBmaWxlICclcydcbiIsIHByb2ZpbGVQYXRoKTsKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
LSAgICB9Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChwcm9maWxl
UGF0aCwgJmZpbGVJbmZvKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBnZXQg
cGx1Zy1pbiBzYW5kYm94IGZpbGUgc2l6ZSAnJXMnXG4iLCBwcm9maWxlUGF0aCk7Ci0gICAgICAg
IHJldHVybiBDU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgY2hhciogY2hhcmFjdGVyQnVmZmVyOwot
ICAgIENTdHJpbmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChmaWxlSW5mby5z
dF9zaXplLCBjaGFyYWN0ZXJCdWZmZXIpOwotCi0gICAgaWYgKDEgIT0gZnJlYWQoY2hhcmFjdGVy
QnVmZmVyLCBmaWxlSW5mby5zdF9zaXplLCAxLCBmaWxlKSkgewotICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvdWxkIG5vdCByZWFkIHBsdWctaW4gc2FuZGJveCBmaWxlICclcydcbiIsIHByb2ZpbGVQ
YXRoKTsKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBmY2xvc2UoZmls
ZSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1OUEVycm9yIGVudGVyU2FuZGJveChjb25z
dCBjaGFyKiBzYW5kYm94UHJvZmlsZSwgY29uc3QgY2hhciogcmVhZE9ubHlQYXRoc1tdLCBjb25z
dCBjaGFyKiByZWFkV3JpdGVQYXRoc1tdKQorYm9vbCBlbnRlclNhbmRib3goY29uc3QgY2hhciog
c2FuZGJveFByb2ZpbGUpCiB7CiAgICAgaWYgKGVudGVyZWRTYW5kYm94KQotICAgICAgICByZXR1
cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCiAgICAgLy8gVXNlIHByaXZhdGUg
dGVtcG9yYXJ5IGFuZCBjYWNoZSBkaXJlY3Rvcmllcy4KQEAgLTEyNiw0MyArNzYsMzQgQEAgTlBF
cnJvciBlbnRlclNhbmRib3goY29uc3QgY2hhciogc2FuZGJveAogICAgIH0KICNlbmRpZgogCi0K
LSAgICBWZWN0b3I8Y29uc3QgY2hhcio+IGV4dGVuZGVkUmVhZE9ubHlQYXRoczsKLSAgICBpZiAo
cmVhZE9ubHlQYXRocykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyByZWFkT25seVBh
dGhzW2ldOyArK2kpCi0gICAgICAgICAgICBleHRlbmRlZFJlYWRPbmx5UGF0aHMuYXBwZW5kKHJl
YWRPbmx5UGF0aHNbaV0pOwotICAgIH0KKyAgICBWZWN0b3I8Y29uc3QgY2hhcio+IHJlYWRPbmx5
UGF0aHM7CiAKICAgICBDU3RyaW5nIHBsdWdpbk1vZHVsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oUGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkucGx1Z2luUGF0aCgpKTsKLSAgICBleHRl
bmRlZFJlYWRPbmx5UGF0aHMuYXBwZW5kKHBsdWdpbk1vZHVsZVBhdGguZGF0YSgpKTsKKyAgICBy
ZWFkT25seVBhdGhzLmFwcGVuZChwbHVnaW5Nb2R1bGVQYXRoLmRhdGEoKSk7CiAKICAgICAvLyBP
bi1kaXNrIFdlYktpdCBmcmFtZXdvcmsgbG9jYXRpb25zLCB0byBhY2NvdW50IGZvciBkZWJ1ZyBp
bnN0YWxsYXRpb25zLgogICAgIC8vIEFsbG93aW5nIHRoZSB3aG9sZSBkaXJlY3RvcnkgY29udGFp
bmluZyBXZWJLaXQyLmZyYW1ld29yayBmb3IgdGhlIHNha2Ugb2YgQVBJcyB0aGF0IGltcGxpY2l0
bHkgbG9hZCBvdGhlciBXZWJLaXQgZnJhbWV3b3Jrcy4KICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGxvYWQgdGhlbSBub3csIGFuZCB0aHVzIGRvbid0IGhhdmUgYW55IGJldHRlciBpZGVhIG9mIHdo
ZXJlIHRoZXkgYXJlIGxvY2F0ZWQgb24gZGlzay4KLSAgICBleHRlbmRlZFJlYWRPbmx5UGF0aHMu
YXBwZW5kKFtbW1tbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2Vi
S2l0MiJdIGJ1bmRsZVVSTF0gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBwYXRoXSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb25dKTsKKyAgICByZWFkT25seVBhdGhzLmFwcGVuZChbW1tb
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXSBidW5k
bGVVUkxdIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0gcGF0aF0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uXSk7CiAKLSAgICBleHRlbmRlZFJlYWRPbmx5UGF0aHMuYXBwZW5kKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPigwKSk7CisgICAgcmVhZE9ubHlQYXRocy5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KDApKTsKIAotICAgIFZlY3Rvcjxjb25zdCBjaGFyKj4gZXh0ZW5k
ZWRSZWFkV3JpdGVQYXRoczsKLSAgICBpZiAocmVhZFdyaXRlUGF0aHMpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgcmVhZFdyaXRlUGF0aHNbaV07ICsraSkKLSAgICAgICAgICAgIGV4
dGVuZGVkUmVhZFdyaXRlUGF0aHMuYXBwZW5kKHJlYWRXcml0ZVBhdGhzW2ldKTsKLSAgICB9Cisg
ICAgVmVjdG9yPGNvbnN0IGNoYXIqPiByZWFkV3JpdGVQYXRoczsKIAogICAgIGNoYXIgZGFyd2lu
VXNlclRlbXBEaXJlY3RvcnlbUEFUSF9NQVhdOwogICAgIGlmIChjb25mc3RyKF9DU19EQVJXSU5f
VVNFUl9URU1QX0RJUiwgZGFyd2luVXNlclRlbXBEaXJlY3RvcnksIFBBVEhfTUFYKSA+IDApCi0g
ICAgICAgIGV4dGVuZGVkUmVhZFdyaXRlUGF0aHMuYXBwZW5kKGRhcndpblVzZXJUZW1wRGlyZWN0
b3J5KTsKKyAgICAgICAgcmVhZFdyaXRlUGF0aHMuYXBwZW5kKGRhcndpblVzZXJUZW1wRGlyZWN0
b3J5KTsKICAgICBlbHNlCiAgICAgICAgIGV4aXQoRVhfT1NFUlIpOwogCiAgICAgY2hhciBkYXJ3
aW5Vc2VyQ2FjaGVEaXJlY3RvcnlbUEFUSF9NQVhdOwogICAgIGlmIChjb25mc3RyKF9DU19EQVJX
SU5fVVNFUl9DQUNIRV9ESVIsIGRhcndpblVzZXJDYWNoZURpcmVjdG9yeSwgUEFUSF9NQVgpID4g
MCkKLSAgICAgICAgZXh0ZW5kZWRSZWFkV3JpdGVQYXRocy5hcHBlbmQoZGFyd2luVXNlckNhY2hl
RGlyZWN0b3J5KTsKKyAgICAgICAgcmVhZFdyaXRlUGF0aHMuYXBwZW5kKGRhcndpblVzZXJDYWNo
ZURpcmVjdG9yeSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9w
dENGLCBXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgZXh0ZW5kZWRSZWFk
V3JpdGVQYXRocy5hcHBlbmQoWyhOU1N0cmluZyAqKWNhY2hlUGF0aC5nZXQoKSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb25dKTsKKyAgICByZWFkV3JpdGVQYXRocy5hcHBlbmQoWyhOU1N0cmluZyAq
KWNhY2hlUGF0aC5nZXQoKSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dKTsKIAotICAgIGV4dGVu
ZGVkUmVhZFdyaXRlUGF0aHMuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPigwKSk7Cisg
ICAgcmVhZFdyaXRlUGF0aHMuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPigwKSk7CiAK
ICAgICAvLyBXS0VudGVyUGx1Z2luU2FuZGJveCBjYW5vbmljYWxpemVzIHBhdGggYXJyYXlzLCBi
dXQgbm90IHBhcmFtZXRlcnMgKGJlY2F1c2UgaXQgY2Fubm90IGtub3cgaWYgb25lIGlzIGEgcGF0
aCkuCiAgICAgY2hhciogaG9tZURpcmVjdG9yeSA9IHJlYWxwYXRoKFtOU0hvbWVEaXJlY3Rvcnko
KSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAwKTsKQEAgLTE3Niw3ICsxMTcsNyBAQCBOUEVy
cm9yIGVudGVyU2FuZGJveChjb25zdCBjaGFyKiBzYW5kYm94CiAgICAgICAgIGV4aXQoRVhfT1NF
UlIpOwogCiAgICAgY29uc3QgY2hhciogc2FuZGJveFBhcmFtZXRlcnNbXSA9IHsgIkhPTUVfRElS
IiwgaG9tZURpcmVjdG9yeSwgIlRFTVBfRElSIiwgdGVtcERpcmVjdG9yeSwgMCwgMCB9OwotICAg
IGlmICghV0tFbnRlclBsdWdpblNhbmRib3goc2FuZGJveFByb2ZpbGUsIHNhbmRib3hQYXJhbWV0
ZXJzLCBleHRlbmRlZFJlYWRPbmx5UGF0aHMuZGF0YSgpLCBleHRlbmRlZFJlYWRXcml0ZVBhdGhz
LmRhdGEoKSkpIHsKKyAgICBpZiAoIVdLRW50ZXJQbHVnaW5TYW5kYm94KHNhbmRib3hQcm9maWxl
LCBzYW5kYm94UGFyYW1ldGVycywgcmVhZE9ubHlQYXRocy5kYXRhKCksIHJlYWRXcml0ZVBhdGhz
LmRhdGEoKSkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZG4ndCBpbml0aWFsaXplIHNh
bmRib3ggcHJvZmlsZVxuIik7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9CkBAIC0x
OTMsMzQgKzEzNCw3IEBAIE5QRXJyb3IgZW50ZXJTYW5kYm94KGNvbnN0IGNoYXIqIHNhbmRib3gK
ICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkZWZhdWx0cyA9IGFkb3B0TlMoW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhC
b29sOllFU10sIEAiTlNVc2VSZW1vdGVTYXZlUGFuZWwiLCBuaWxdKTsKICAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOmRlZmF1bHRzLmdl
dCgpXTsKIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBXS05fRW50
ZXJTYW5kYm94KGNvbnN0IGNoYXIqIHJlYWRPbmx5UGF0aHNbXSwgY29uc3QgY2hhciogcmVhZFdy
aXRlUGF0aHNbXSkKLXsKLSAgICBDU3RyaW5nIHByb2ZpbGUgPSByZWFkU2FuZGJveFByb2ZpbGUo
KTsKLSAgICBpZiAocHJvZmlsZS5pc051bGwoKSkKLSAgICAgICAgZXhpdChFWF9OT1BFUk0pOwot
Ci0gICAgcmV0dXJuIGVudGVyU2FuZGJveChwcm9maWxlLmRhdGEoKSwgcmVhZE9ubHlQYXRocywg
cmVhZFdyaXRlUGF0aHMpOwotfQotCi1OUEVycm9yIFdLTl9GaWxlU3RvcEFjY2Vzc2luZyhjb25z
dCBjaGFyKiBwYXRoKQotewotICAgIGlmICghZW50ZXJlZFNhbmRib3gpCi0gICAgICAgIHJldHVy
biBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgaWYgKCFDRlVSTFN0b3BBY2Nlc3NpbmdTZWN1
cml0eVNjb3BlZFJlc291cmNlUHRyKCkpCi0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
LQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigwLCBwYXRoKSk7Ci0gICAgaWYgKCF1
cmxTdHJpbmcpCi0gICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwotICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRo
KDAsIHVybFN0cmluZy5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7Ci0KLSAg
ICBDRlVSTFN0b3BBY2Nlc3NpbmdTZWN1cml0eVNjb3BlZFJlc291cmNlUHRyKCkodXJsLmdldCgp
KTsKLQotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
I2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>