<?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>225732</bug_id>
          
          <creation_ts>2021-05-12 21:21:39 -0700</creation_ts>
          <short_desc>Remove StringBuilder::appendNumber</short_desc>
          <delta_ts>2021-05-13 09:19:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1759539</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-12 21:21:39 -0700</bug_when>
    <thetext>Remove StringBuilder::appendNumber</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759540</commentid>
    <comment_count>1</comment_count>
      <attachid>428458</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-12 21:41:56 -0700</bug_when>
    <thetext>Created attachment 428458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759541</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-12 21:42:46 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759693</commentid>
    <comment_count>3</comment_count>
      <attachid>428458</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-13 08:29:08 -0700</bug_when>
    <thetext>Comment on attachment 428458
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        We originally added StringBuilder::appendNumber to resolve the ambiguity
&gt; +        between UChar and uint16_t, but that problem was solved long ago and it

I hadn&apos;t realized we had done this otherwise I would have totally done this myself. That&apos;s great! Next up should we remove appendLiteral?

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:277
&gt; +            String errorMessage = makeString(&quot;Failed to load resource: the server responded with a status of &quot;, response.httpStatusCode(), &quot; (&quot;, response.httpStatusText(), &apos;)&apos;);

I would leave out the String and use auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759696</commentid>
    <comment_count>4</comment_count>
      <attachid>428458</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-13 08:48:48 -0700</bug_when>
    <thetext>Comment on attachment 428458
Patch

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

&gt;&gt; Source/WTF/ChangeLog:9
&gt;&gt; +        between UChar and uint16_t, but that problem was solved long ago and it
&gt; 
&gt; I hadn&apos;t realized we had done this otherwise I would have totally done this myself. That&apos;s great! Next up should we remove appendLiteral?

Yes I have been thinking about that. The appendLiteral function does optimization that is not very valuable; it may save some looping over characters to find the string length, and it may be optimizing memory use by using characters in place for the case where only a single literal ends up contributing the entries content of the result string. We could work to keep one or both of these optimizations using ASCIILiteral or a variant on it, for StringBuilder itself and for string concatenation. Or, more likely, we could just forgo both.

I can’t remember why I thought it was worth adding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759698</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-13 08:56:10 -0700</bug_when>
    <thetext>entire content, not entries content</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759709</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-13 09:18:42 -0700</bug_when>
    <thetext>Committed r277437 (237685@main): &lt;https://commits.webkit.org/237685@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428458.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759710</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-13 09:19:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/77968469&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428458</attachid>
            <date>2021-05-12 21:41:56 -0700</date>
            <delta_ts>2021-05-13 09:18:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225732-20210512214155.patch</filename>
            <type>text/plain</type>
            <size>106248</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDZiYzQzODVmYjdlN2VhYzJiNTJiOTMxYzVkNTNkOGU5YzQ1OGQ5Li44OGE5OWJjZWZlOThkZWY1
NTg5ODA5NzE1OTJmYzFkZWVlMjVhZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0wNS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NzMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNw
cDoKKyAgICAgICAgKEJhY2t0cmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOiBVc2UgYXBw
ZW5kIGluc3RlYWQgb2YgYXBwZW5kTnVtYmVyLgorICAgICAgICAqIEFQSS90ZXN0cy9QaW5nUG9u
Z1N0YWNrT3ZlcmZsb3dUZXN0LmNwcDoKKyAgICAgICAgKFBpbmdQb25nU3RhY2tPdmVyZmxvd09i
amVjdF9oYXNJbnN0YW5jZSk6IERpdHRvLgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVp
bGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOiBEaXR0
by4KKworICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChK
U0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnRvU3RyaW5nIGNvbnN0KTogVXNlIG1ha2VTdHJpbmcg
aW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogcnVudGltZS9Db25zb2xlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6YXBwZW5kVVJMQW5kUG9zaXRpb24pOiBEaXR0by4KKyAg
ICAgICAgKEpTQzo6Q29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVu
dHMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTnVtYmVyLgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6T3B0aW9uUmVhZGVyOjpPcHRpb246OmR1bXAgY29uc3QpOiBEaXR0by4KKwor
ICAgICAgICAqIHJ1bnRpbWUvU3RhY2tGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJh
bWU6OnRvU3RyaW5nIGNvbnN0KTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWls
ZGVyLgorCiAyMDIxLTA1LTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ29uc2VydmF0aXZlUm9vdHMgdHJpZ2dlcnMgcGFnZSBkZW1hbmQgb24gU3BlZWRv
bWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggOGVkNDRmOWZmMDRmNjQwYzQ3ZjQ4NTAwOGMyNzk5YTFlMGM2ZTczYS4uMTNm
YTM3YTVkYTAyYjdhYmViZWUyYjI2MTg3ZGI4NzliYjdkYTY2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAyMS0wNS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugb3JpZ2luYWxseSBhZGRlZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmROdW1iZXIgdG8gcmVzb2x2ZSB0aGUgYW1iaWd1aXR5CisgICAgICAgIGJldHdl
ZW4gVUNoYXIgYW5kIHVpbnQxNl90LCBidXQgdGhhdCBwcm9ibGVtIHdhcyBzb2x2ZWQgbG9uZyBh
Z28gYW5kIGl0CisgICAgICAgIGlzIHNhZmUgdG8gdXNlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCwg
aW5jbHVkaW5nIHRoZSB2YXJpYWRpYyBmb3JtLCBvbiBhbGwKKyAgICAgICAgdHlwZXMgb2YgbnVt
YmVycyBhbmQgd2UnbGwgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgd2UgZGlkIHdpdGggYXBwZW5kTnVt
YmVyLgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuY3BwOgorICAgICAgICAoV1RGOjpKU09O
SW1wbDo6VmFsdWU6OndyaXRlSlNPTiBjb25zdCk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBl
bmROdW1iZXIuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6IFJlbW92ZWQgYXBwZW5kTnVtYmVyLgorCisgICAg
ICAgICogd3RmL3RleHQvVGV4dFN0cmVhbS5jcHA6CisgICAgICAgIChXVEY6OlRleHRTdHJlYW06
Om9wZXJhdG9yPDwpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTnVtYmVyLgorCiAyMDIx
LTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dGhlIFN0cmluZzo6dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMxY2Nj
ZTc5MTU1OTc3ZjFjNDAzMTFkODQ0NWVjYzQzMDA4YTkxMzguLjE4MzVjOTYwMGZlOTU5YzBkNzMw
YmVjZjU4YjJjMTVlNjY3NTMxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBAQAorMjAyMS0w
NS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjps
b2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVu
ZE51bWJlci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aG9zdE5hbWUpOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21i
aW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OnByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyk6CisgICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBv
ZiBhcHBlbmROdW1iZXIuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVGVybS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OnRvU3RyaW5nIGNvbnN0KTog
RGl0dG8uCisgICAgICAgICogY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IERpdHRv
LgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojpkb3duZ3JhZGVSZWZlcnJlclRvUmVnaXN0cmFibGVEb21haW4pOiBVc2UKKyAg
ICAgICAgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgICogZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1
bXVsYXRvcjo6Z2VuZXJhdGVVbmlxdWVQcmVmaXgpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFEZXRlY3Rv
clN0cmluZ0ZvclBhdGgpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTnVtYmVyLgorICAg
ICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBw
ZW5kU2VydmVyTWFwTW91c2VQb3NpdGlvbik6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6
Y3JlYXRlQ29udGV4dDJkKTogVXNlIG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJp
bmdCdWlsZGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Ojp0b1N0cmluZyBjb25zdCk6IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBvZiBhcHBlbmRO
dW1iZXIuCisKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW50ZWdyaXR5TWlzbWF0Y2hEZXNjcmlwdGlvbik6IFVzZSBtYWtlU3Ry
aW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIHBhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9u
T2JzZXJ2ZXI6OnJvb3RNYXJnaW4gY29uc3QpOiBVc2UgYXBwZW5kIGluc3RlYWQKKyAgICAgICAg
b2YgYXBwZW5kTnVtYmVyLgorCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIgY29uc3QpOiBVc2UgbWFrZVN0cmluZworICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxk
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OnRvU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZE51
bWJlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRp
b24pOiBVc2UgbWFrZVN0cmluZworICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcik6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6
CisgICAgICAgIChwcmludFRyYW5zZm9ybSk6IFVzZSBzaW5nbGUgYXBwZW5kIGluc3RlYWQgb2Yg
YSBydW4gb2YgdGhlbS4KKyAgICAgICAgKHByaW50TGF5ZXIpOiBEaXR0bywgYW5kIHVzZSBhcHBl
bmQgaW5zdGVhZCBvZiBhcHBwZW5kTnVtYmVyLgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2lu
OjpsYXllclRyZWVBc1N0cmluZyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5n
KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZE51bWJlci4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZFByb3h5U2VydmVyU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVBvc2l0aW9uKTogRGl0dG8u
CisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRTdHJpbmdGcm9tUGF0aCk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6IFVz
ZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlci4KKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZE9mZnNldHMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTnVt
YmVyLgorCisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6IFVzZSBtYWtl
U3RyaW5nIGluc3RlYWQKKyAgICAgICAgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6bW91c2VFdmVudCk6IERpdHRvLgorCisgICAgICAg
ICogeG1sL1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmFwcGVu
ZEVycm9yTWVzc2FnZSk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZgorICAgICAgICBhcHBlbmROdW1i
ZXIuCisKIDIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nCmluZGV4IDQzNDI2ZTk5OWVmNTY2ZTc5NjkxNmE4Zjk1ZTZkY2I0NjU2YjhmYzIuLmJkOWI0
YmU5OGQyMTBjM2U2OTE1ZDhjNmRjYzkwZTg5NTA5OTgwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjEtMDUtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTczMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Vzc2lvbkhvc3QuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2VuZENvbW1hbmRUb0JhY2tlbmQpOiBV
c2UgYXBwZW5kIGluc3RlYWQKKyAgICAgICAgb2YgYXBwZW5kTnVtYmVyLgorICAgICAgICAqIHNv
Y2tldC9IVFRQU2VydmVyU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6SFRUUFJlcXVl
c3RIYW5kbGVyOjpwYWNrSFRUUE1lc3NhZ2UgY29uc3QpOiBEaXR0by4KKwogMjAyMS0wNS0wOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCByZW1h
aW5pbmcgdXNlcyBvZiB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGVjNDcwYWQzOThhMDgxYzk5MWNlMzRlZjBkZDU4YjQ3YzlmZWY2MDcuLmM3Y2I2NmE3
NWRkMTJjYzM4Y2I2ZjM2MmE3OGVmYzFkM2JhY2U4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMjEtMDUtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTczMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmJ1aWxkTGlzdCk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmROdW1iZXIuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kTm90VmVy
eVByZXZhbGVudFJlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YXR0cmlidXRpb25Ub1N0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9G
aWxlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayk6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcpOiBEaXR0by4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5j
cHA6CisgICAgICAgIChQYWdlUmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZSk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQKKyAgICAgICAgb2YgU3RyaW5nQnVp
bGRlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6YnVpbGRIVFRQSGVhZGVycyk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBh
cHBlbmROdW1iZXIuCisKIDIwMjEtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB0aGUgU3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZWI2MmM3OTgwOTdkYmU3NTVjM2RmYWNj
ZDg1NmVkNTAyZmRlOGM4OC4uNzIyYWRlZDJhNWNkZmFkODc2NTA0MGMxODRiMjIyMjFhNTEwNDlm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1
LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0
U3RhdGlzdGljczo6Y29tQ2xhc3NOYW1lQ291bnRzKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mCisg
ICAgICAgIGFwcGVuZE51bWJlci4KKwogMjAyMS0wNS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZSBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAKaW5kZXggMzc1NDBhZWNjODQ3NjhkN2IwYTU1OGM4N2FkNTZiYzI3MzEz
OWU4ZS4uYjYwNzE4MDI2MmU1OWY2MzAxNzJhYzAzMzdiZDE2YWYzY2QyODNiOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjkwLDE4ICsyOTAsMTIg
QEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciYgYnVpbGRlciA9IG1fYnVpbGRl
cjsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIycpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmlzaXRvci0+aW5kZXgoKSk7Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
dmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIoKSBhdCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZpc2l0b3ItPnNvdXJj
ZVVSTCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJywgdmlzaXRvci0+aW5kZXgo
KSwgJyAnLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSwgIigpIGF0ICIsIHZpc2l0b3ItPnNvdXJj
ZVVSTCgpKTsKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5oYXNMaW5lQW5kQ29sdW1uSW5mbygp
KSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHVudXNlZENv
bHVtbjsKICAgICAgICAgICAgICAgICB2aXNpdG9yLT5jb21wdXRlTGluZUFuZENvbHVtbihsaW5l
TnVtYmVyLCB1bnVzZWRDb2x1bW4pOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgbGlu
ZU51bWJlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdmlzaXRvci0+Y2Fs
bGVlKCkucmF3UHRyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAppbmRleCAxMzEyZmI0Y2Jl
NmFlYWE0YjkxZmNiZWNiM2QxYWE4YjM2OWZlODJhLi44MTFkNGRlYmRhYjI5MWQ5MDRmOTZiYmZl
NDY3Yjc5YzAyNzNkMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKQEAgLTU2LDEzICs1
Niw5IEBAIHN0YXRpYyBib29sIFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0YW5j
ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgfSBlbHNlIHsKICAgICAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImR1bW15
LnZhbHVlT2YoWzBdIik7Ci0gICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykg
ewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIFsiKTsKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJdIik7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzNTAwMDsg
aSsrKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgWyIsIGksICddJyk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKTsiKTsKLQogICAgICAgICBKU1N0cmluZ1JlZiBzY3Jp
cHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwg
c2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCBleGNlcHRpb24pOwogICAgICAgICBKU1N0cmlu
Z1JlbGVhc2Uoc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNTVlMjJhZGNmYzgxODY0NjM2NzRmYmYxYjU1NjJl
NjBjMWFjYmIyOS4uNTc3ZDQ1OTMwYmFmYjJlMWRmN2YwNmRiYjJkOTdjNmM0M2UwZjMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAKQEAgLTQyMCwyNCArNDIwLDEwIEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAvLyA8bm9kZUlkPiwgPHNpemVJbkJ5dGVzPiwg
PG5vZGVDbGFzc05hbWVJbmRleD4sIDxmbGFncz4sIFs8bGFiZWxJbmRleD4sIDxjZWxsRWRkcmVz
cz4sIDx3cmFwcGVkQWRkcmVzcz5dCi0gICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAg
IGpzb24uYXBwZW5kTnVtYmVyKG5vZGUuaWRlbnRpZmllcik7Ci0gICAgICAgIGpzb24uYXBwZW5k
KCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKG5vZGUuY2VsbC0+ZXN0aW1hdGVkU2l6
ZUluQnl0ZXModm0pKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIoY2xhc3NOYW1lSW5kZXgpOwotICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwot
ICAgICAgICBqc29uLmFwcGVuZE51bWJlcihmbGFncyk7Ci0gICAgICAgIGlmIChtX3NuYXBzaG90
VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAg
IGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZE51bWJlcihsYWJlbElu
ZGV4KTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwiMHgiKTsKLSAgICAgICAg
ICAgIGpzb24uYXBwZW5kKGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxs
KSwgTG93ZXJjYXNlKSk7Ci0gICAgICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiLFwiMHgi
KTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kKGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4od3JhcHBlZEFkZHJlc3MpLCBMb3dlcmNhc2UpKTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5k
KCciJyk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gPG5vZGVJZD4sIDxzaXplSW5CeXRlcz4sIDxu
b2RlQ2xhc3NOYW1lSW5kZXg+LCA8ZmxhZ3M+LCBbPGxhYmVsSW5kZXg+LCA8Y2VsbEFkZHJlc3M+
LCA8d3JhcHBlZEFkZHJlc3M+XQorICAgICAgICBqc29uLmFwcGVuZCgnLCcsIG5vZGUuaWRlbnRp
ZmllciwgJywnLCBub2RlLmNlbGwtPmVzdGltYXRlZFNpemVJbkJ5dGVzKHZtKSwgJywnLCBjbGFz
c05hbWVJbmRleCwgJywnLCBmbGFncyk7CisgICAgICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBT
bmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3QpCisgICAgICAgICAgICBqc29uLmFwcGVu
ZCgnLCcsIGxhYmVsSW5kZXgsICIsXCIweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obm9kZS5jZWxsKSwgTG93ZXJjYXNlKSwgIlwiLFwiMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHdyYXBwZWRBZGRyZXNzKSwgTG93ZXJjYXNlKSwgJyInKTsKICAgICB9Owog
CiAgICAgYm9vbCBmaXJzdEVkZ2UgPSB0cnVlOwpAQCAtNDQ3LDEyICs0MzMsNyBAQCBTdHJpbmcg
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNo
b3ROb2RlJik+IGFsbG93TgogICAgICAgICBmaXJzdEVkZ2UgPSBmYWxzZTsKIAogICAgICAgICAv
LyA8ZnJvbU5vZGVJZD4sIDx0b05vZGVJZD4sIDxlZGdlVHlwZUluZGV4PiwgPGVkZ2VFeHRyYURh
dGE+Ci0gICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGVkZ2UuZnJvbS5pZGVudGlmaWVyKTsKLSAg
ICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmROdW1iZXIoZWRnZS50
by5pZGVudGlmaWVyKTsKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5h
cHBlbmROdW1iZXIoZWRnZVR5cGVUb051bWJlcihlZGdlLnR5cGUpKTsKLSAgICAgICAganNvbi5h
cHBlbmQoJywnKTsKKyAgICAgICAganNvbi5hcHBlbmQoZWRnZS5mcm9tLmlkZW50aWZpZXIsICcs
JywgZWRnZS50by5pZGVudGlmaWVyLCAnLCcsIGVkZ2VUeXBlVG9OdW1iZXIoZWRnZS50eXBlKSwg
JywnKTsKICAgICAgICAgc3dpdGNoIChlZGdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBFZGdlVHlw
ZTo6UHJvcGVydHk6CiAgICAgICAgIGNhc2UgRWRnZVR5cGU6OlZhcmlhYmxlOiB7CkBAIC00NjAs
MTEgKzQ0MSwxMSBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxi
b29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAgICAgICAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIG5leHRFZGdlTmFtZUluZGV4Kys7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBlZGdlTmFtZUluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGVkZ2VOYW1lSW5kZXgpOworICAgICAg
ICAgICAganNvbi5hcHBlbmQoZWRnZU5hbWVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEVkZ2VUeXBlOjpJbmRleDoKLSAgICAgICAgICAgIGpzb24u
YXBwZW5kTnVtYmVyKGVkZ2UudS5pbmRleCk7CisgICAgICAgICAgICBqc29uLmFwcGVuZChlZGdl
LnUuaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAvLyBObyBkYXRhIGZvciB0aGlzIGVkZ2UgdHlwZS4KQEAgLTQ3MywyMCArNDU0LDE1IEBA
IFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhl
YXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAgICAgICAgIH0KICAgICB9OwogCi0gICAganNvbi5h
cHBlbmQoJ3snKTsKLQogICAgIC8vIHZlcnNpb24KLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwi
dmVyc2lvblwiOjIiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIntcInZlcnNpb25cIjoyIik7
CiAKICAgICAvLyB0eXBlCi0gICAganNvbi5hcHBlbmQoJywnKTsKLSAgICBqc29uLmFwcGVuZExp
dGVyYWwoIlwidHlwZVwiOiIpOworICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwidHlwZVwiOiIp
OwogICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhzbmFwc2hvdFR5cGVUb1N0cmluZyht
X3NuYXBzaG90VHlwZSkpOwogCiAgICAgLy8gbm9kZXMKLSAgICBqc29uLmFwcGVuZCgnLCcpOwot
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJub2Rlc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdb
Jyk7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXCJub2Rlc1wiOlsiKTsKICAgICAvLyA8cm9v
dD4KICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1Nu
YXBzaG90KQogICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIjAsMCwwLDAsMCxcIjB4MFwiLFwi
MHgwXCIiKTsKQEAgLTUwMCw5ICs0NzYsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6
anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAg
IGpzb24uYXBwZW5kKCddJyk7CiAKICAgICAvLyBub2RlIGNsYXNzIG5hbWVzCi0gICAganNvbi5h
cHBlbmQoJywnKTsKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwibm9kZUNsYXNzTmFtZXNcIjoi
KTsKLSAgICBqc29uLmFwcGVuZCgnWycpOworICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwibm9k
ZUNsYXNzTmFtZXNcIjpbIik7CiAgICAgVmVjdG9yPFN0cmluZz4gb3JkZXJlZENsYXNzTmFtZXMo
Y2xhc3NOYW1lSW5kZXhlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBjbGFzc05h
bWVJbmRleGVzKQogICAgICAgICBvcmRlcmVkQ2xhc3NOYW1lc1tlbnRyeS52YWx1ZV0gPSBlbnRy
eS5rZXk7CkBAIC01NTgsMTcgKzUzMiwxMyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6
anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAg
IH0pOwogCiAgICAgLy8gZWRnZXMKLSAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiXCJlZGdlc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdbJyk7CisgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIsXCJlZGdlc1wiOlsiKTsKICAgICBmb3IgKGF1dG8mIGVkZ2UgOiBt
X2VkZ2VzKQogICAgICAgICBhcHBlbmRFZGdlSlNPTihlZGdlKTsKICAgICBqc29uLmFwcGVuZCgn
XScpOwogCiAgICAgLy8gZWRnZSB0eXBlcwotICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAganNv
bi5hcHBlbmRMaXRlcmFsKCJcImVkZ2VUeXBlc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdbJyk7
CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXCJlZGdlVHlwZXNcIjpbJyIpOwogICAgIGpzb24u
YXBwZW5kUXVvdGVkSlNPTlN0cmluZyhlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpJbnRlcm5h
bCkpOwogICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3Ry
aW5nKGVkZ2VUeXBlVG9TdHJpbmcoRWRnZVR5cGU6OlByb3BlcnR5KSk7CkBAIC01NzksOSArNTQ5
LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29u
c3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICBqc29uLmFwcGVuZCgnXScpOwogCiAg
ICAgLy8gZWRnZSBuYW1lcwotICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAganNvbi5hcHBlbmRM
aXRlcmFsKCJcImVkZ2VOYW1lc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdbJyk7CisgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIsXCJlZGdlTmFtZXNcIjpbIik7CiAgICAgVmVjdG9yPFVuaXF1ZWRT
dHJpbmdJbXBsKj4gb3JkZXJlZEVkZ2VOYW1lcyhlZGdlTmFtZUluZGV4ZXMuc2l6ZSgpKTsKICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogZWRnZU5hbWVJbmRleGVzKQogICAgICAgICBvcmRlcmVkRWRn
ZU5hbWVzW2VudHJ5LnZhbHVlXSA9IGVudHJ5LmtleTsKQEAgLTU5Nyw5ICs1NjUsNyBAQCBTdHJp
bmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25h
cHNob3ROb2RlJik+IGFsbG93TgogICAgIGpzb24uYXBwZW5kKCddJyk7CiAKICAgICBpZiAobV9z
bmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAg
ICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJyb290
c1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBqc29uLmFwcGVuZExp
dGVyYWwoIixcInJvb3RzXCI6WyIpOwogCiAgICAgICAgIEhlYXBTbmFwc2hvdCogc25hcHNob3Qg
PSBtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpOwogCkBAIC02MTUsMTYgKzU4MSwxNCBA
QCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBI
ZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAgICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcs
Jyk7CiAKICAgICAgICAgICAgIGZpcnN0Tm9kZSA9IGZhbHNlOwotICAgICAgICAgICAganNvbi5h
cHBlbmROdW1iZXIoc25hcHNob3ROb2RlLnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgICAg
ICBqc29uLmFwcGVuZChzbmFwc2hvdE5vZGUudmFsdWUoKS5pZGVudGlmaWVyKTsKIAogICAgICAg
ICAgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGp1c3QgYWx3YXlzIGVuY29kZSB0aGUgcm9vdCBuYW1l
cy4KICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJvb3ROYW1lID0gcm9vdE1hcmtSZWFzb25EZXNj
cmlwdGlvbihpdC52YWx1ZS5tYXJrUmVhc29uKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
bGFiZWxJbmRleGVzLmFkZChyb290TmFtZSwgbmV4dExhYmVsSW5kZXgpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIG5leHRMYWJlbEluZGV4Kys7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKLSAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICBqc29uLmFwcGVu
ZE51bWJlcihsYWJlbEluZGV4KTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJywgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSk7CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHJlYWNoYWJpbGl0eVJl
YXNvbkluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChpdC52YWx1ZS5yZWFjaGFiaWxpdHlGcm9t
T3BhcXVlUm9vdFJlYXNvbnMpIHsKQEAgLTYzMyw4ICs1OTcsNyBAQCBTdHJpbmcgSGVhcFNuYXBz
aG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+
IGFsbG93TgogICAgICAgICAgICAgICAgICAgICBuZXh0TGFiZWxJbmRleCsrOwogICAgICAgICAg
ICAgICAgIHJlYWNoYWJpbGl0eVJlYXNvbkluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAgICAgICAg
ICBqc29uLmFwcGVuZE51bWJlcihyZWFjaGFiaWxpdHlSZWFzb25JbmRleCk7CisgICAgICAgICAg
ICBqc29uLmFwcGVuZCgnLCcsIHJlYWNoYWJpbGl0eVJlYXNvbkluZGV4KTsKICAgICAgICAgfQog
CiAgICAgICAgIGpzb24uYXBwZW5kKCddJyk7CkBAIC02NDIsOSArNjA1LDcgQEAgU3RyaW5nIEhl
YXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90
Tm9kZSYpPiBhbGxvd04KIAogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6
OkdDRGVidWdnaW5nU25hcHNob3QpIHsKICAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBkZXNjcmlw
dGlvbnMKLSAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRl
cmFsKCJcImxhYmVsc1wiOiIpOwotICAgICAgICBqc29uLmFwcGVuZCgnWycpOworICAgICAgICBq
c29uLmFwcGVuZExpdGVyYWwoIixcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBvcmRlcmVkTGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbGFiZWxJbmRleGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBiZDNhNDE5NjhhZTRjMzRmMGE2OWE4
N2QwZjQxMTVjMTJhOGFhN2I2Li44ZjY3ZGE0NmE4MDUwNGEyYjQ2MTVjMGM1ZmVhZmRlZjEyNGNl
OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNp
bmNsdWRlICJXYXNtSW5kZXhPck5hbWUuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9u
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MzM4LDI1ICszMzgsMTcgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCgp
IGNvbnN0CiAKIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjp0b1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgU3RyaW5nQnVpbGRlciB0cmFjZUJ1aWxkOwogICAgIFN0cmluZyBmdW5jdGlvbk5hbWUg
PSB0aGlzLT5mdW5jdGlvbk5hbWUoKTsKICAgICBTdHJpbmcgc291cmNlVVJMID0gdGhpcy0+c291
cmNlVVJMKCk7Ci0gICAgdHJhY2VCdWlsZC5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKLSAgICBpZiAo
IXNvdXJjZVVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNFbXB0
eSgpKQotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmQoJ0AnKTsKLSAgICAgICAgdHJhY2VC
dWlsZC5hcHBlbmQoc291cmNlVVJMKTsKLSAgICAgICAgaWYgKGhhc0xpbmVBbmRDb2x1bW5JbmZv
KCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwotICAgICAgICAgICAgdW5zaWdu
ZWQgY29sdW1uID0gMDsKLSAgICAgICAgICAgIGNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNv
bHVtbik7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnOicpOwotICAgICAgICAgICAg
dHJhY2VCdWlsZC5hcHBlbmROdW1iZXIobGluZSk7Ci0gICAgICAgICAgICB0cmFjZUJ1aWxkLmFw
cGVuZCgnOicpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmROdW1iZXIoY29sdW1uKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJhY2VCdWlsZC50b1N0cmluZygpLmltcGwo
KTsKKyAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IgPSAhc291cmNlVVJMLmlzRW1wdHkoKSAmJiAh
ZnVuY3Rpb25OYW1lLmlzRW1wdHkoKSA/ICJAIiA6ICIiOworCisgICAgaWYgKHNvdXJjZVVSTC5p
c0VtcHR5KCkgfHwgIWhhc0xpbmVBbmRDb2x1bW5JbmZvKCkpCisgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKGZ1bmN0aW9uTmFtZSwgc2VwYXJhdG9yLCBzb3VyY2VVUkwpOworCisgICAgdW5zaWdu
ZWQgbGluZSA9IDA7CisgICAgdW5zaWduZWQgY29sdW1uID0gMDsKKyAgICBjb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgIHJldHVybiBtYWtlU3RyaW5nKGZ1bmN0aW9uTmFt
ZSwgc2VwYXJhdG9yLCBzb3VyY2VVUkwsICc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogfQogCiBp
bnRwdHJfdCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VJRCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCmluZGV4IDQ1MzE2NDZlMTEwZWM0
YjdjOThhOGMxZDhkNmU4ODlmYWRhYzlmMTMuLjg1NzZiYWI2ZmE0MTVhY2EyZDc5Y2FkNDIzYmUx
MjA4MDgxNTE3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNv
bGVDbGllbnQuY3BwCkBAIC00OCwxNSArNDgsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kVVJMQW5k
UG9zaXRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiB1cmwsIHVuc2kK
IAogICAgIGJ1aWxkZXIuYXBwZW5kKHVybCk7CiAKLSAgICBpZiAobGluZU51bWJlciA+IDApIHsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobGluZU51bWJlcik7Ci0gICAgfQorICAgIGlmIChsaW5lTnVtYmVyID4gMCkKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJzonLCBsaW5lTnVtYmVyKTsKIAotICAgIGlmIChjb2x1bW5OdW1iZXIg
PiAwKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGNvbHVtbk51bWJlcik7Ci0gICAgfQorICAgIGlmIChjb2x1bW5OdW1iZXIgPiAw
KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicsIGNvbHVtbk51bWJlcik7CiB9CiAKIHN0YXRp
YyB2b2lkIGFwcGVuZE1lc3NhZ2VQcmVmaXgoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKQEAg
LTIzNiwxNSArMjMyLDEyIEBAIHZvaWQgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2Fn
ZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhCiAgICAgaWYgKGlzVHJh
Y2VNZXNzYWdlKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbFN0YWNrLT5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBjYWxsRnJh
bWUgPSBjYWxsU3RhY2stPmF0KGkpOwotICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9
IFN0cmluZyhjYWxsRnJhbWUuZnVuY3Rpb25OYW1lKCkpOworICAgICAgICAgICAgU3RyaW5nIGZ1
bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUoKTsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbk5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9ICIo
dW5rbm93bikiX3M7CiAKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgY2FsbEZyYW1lQnVpbGRl
cjsKLSAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKGkpOwotICAgICAg
ICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICAgICAg
Y2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgIGNhbGxG
cmFtZUJ1aWxkZXIuYXBwZW5kKCcoJyk7CisgICAgICAgICAgICBjYWxsRnJhbWVCdWlsZGVyLmFw
cGVuZChpLCAiOiAiLCBmdW5jdGlvbk5hbWUsICcoJyk7CiAgICAgICAgICAgICBhcHBlbmRVUkxB
bmRQb3NpdGlvbihjYWxsRnJhbWVCdWlsZGVyLCBjYWxsRnJhbWUuc291cmNlVVJMKCksIGNhbGxG
cmFtZS5saW5lTnVtYmVyKCksIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIoKSk7CiAgICAgICAgICAg
ICBjYWxsRnJhbWVCdWlsZGVyLmFwcGVuZCgnKScpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDNkNzEwMTU3OTM4ZTAyODg5NDc0ZTM5Y2E4
YzBiNTgxOTI3OTFkOTguLjVlMWNjOWZiZDJlMTUxZjZkMzc4NDA0ZTYwY2ZhOWJiOWU3NmU3NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0z
NjMsMTMgKzM2MywxMyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVy
OjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAKICAgICBpZiAodmFsdWUu
aXNOdW1iZXIoKSkgewogICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgICAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUobnVtYmVyKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Im51bGwiKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihudW1iZXIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG51bWJlcik7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IGY4ZTkzMTJiY2I1
ZjAzMDUxMTVjZmFmMzkxMDFmMWM4NGMyZTY0YzguLmE3YjJkYjM4YmZjNjIwN2U1MGU0MjZiYTYy
YWE5YzIwNWVjMmVmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
Y3BwCkBAIC0xMDg0LDM0ICsxMDg0LDI3IEBAIHZvaWQgT3B0aW9uUmVhZGVyOjpPcHRpb246OmR1
bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdW5z
aWduZWQpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Vuc2lnbmVkKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgotICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihtX3NpemUpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX3NpemUpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQobV9kb3VibGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5
cGU6OkludDMyOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2ludDMyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV9pbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fb3B0aW9u
UmFuZ2UucmFuZ2VTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6
VHlwZTo6T3B0aW9uU3RyaW5nOiB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbiA9IG1fb3B0
aW9uU3RyaW5nOwotICAgICAgICBpZiAoIW9wdGlvbikKLSAgICAgICAgICAgIG9wdGlvbiA9ICIi
OwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChv
cHRpb24pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOworICAgIGNhc2UgT3B0aW9uczo6
VHlwZTo6T3B0aW9uU3RyaW5nOgorICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicsIG1fb3B0aW9u
U3RyaW5nID8gbV9vcHRpb25TdHJpbmcgOiAiIiwgJyInKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDogeworICAgIGNhc2UgT3B0aW9u
czo6VHlwZTo6R0NMb2dMZXZlbDoKICAgICAgICAgYnVpbGRlci5hcHBlbmQoR0NMb2dnaW5nOjps
ZXZlbEFzU3RyaW5nKG1fZ2NMb2dMZXZlbCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
fQogfQogCiBib29sIE9wdGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlv
biYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJh
bWUuY3BwCmluZGV4IGE0NDJhNTQxY2YxNGUyZjcyNDU2MjY4NjI5ZjE4NTI4YmRhMjAxMGYuLjll
OTNmOGIyOWYxZmNjYmQ5MDkxYzAxMjNlNDUyNWU4ODAxNWIxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCwyNiArMTIwLDE2IEBAIHZvaWQgU3RhY2tGcmFtZTo6Y29t
cHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0
CiAKIFN0cmluZyBTdGFja0ZyYW1lOjp0b1N0cmluZyhWTSYgdm0pIGNvbnN0CiB7Ci0gICAgU3Ry
aW5nQnVpbGRlciB0cmFjZUJ1aWxkOwogICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSB0aGlzLT5m
dW5jdGlvbk5hbWUodm0pOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSB0aGlzLT5zb3VyY2VVUkwo
KTsKLSAgICB0cmFjZUJ1aWxkLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAgIHRyYWNlQnVpbGQu
YXBwZW5kKCdAJyk7Ci0gICAgaWYgKCFzb3VyY2VVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRy
YWNlQnVpbGQuYXBwZW5kKHNvdXJjZVVSTCk7Ci0gICAgICAgIGlmIChoYXNMaW5lQW5kQ29sdW1u
SW5mbygpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaW5lOwotICAgICAgICAgICAgdW5zaWdu
ZWQgY29sdW1uOwotICAgICAgICAgICAgY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1u
KTsKLQotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgIHRy
YWNlQnVpbGQuYXBwZW5kTnVtYmVyKGxpbmUpOwotICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBl
bmQoJzonKTsKLSAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kTnVtYmVyKGNvbHVtbik7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRyYWNlQnVpbGQudG9TdHJpbmcoKS5pbXBsKCk7
CisKKyAgICBpZiAoc291cmNlVVJMLmlzRW1wdHkoKSB8fCAhaGFzTGluZUFuZENvbHVtbkluZm8o
KSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoZnVuY3Rpb25OYW1lLCAnQCcsIHNvdXJjZVVS
TCk7CisKKyAgICB1bnNpZ25lZCBsaW5lOworICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICBjb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgIHJldHVybiBtYWtlU3RyaW5nKGZ1
bmN0aW9uTmFtZSwgJ0AnLCBzb3VyY2VVUkwsICc6JywgbGluZSwgJzonLCBjb2x1bW4pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZh
bHVlcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAppbmRleCAzMmQ2YTk4YWE5
ZGM3Y2U2NzE1MDAyY2FmOTMxNDdhZGVlNWVmMjYxLi40Nzc2ODU0ODA4Mjk3ZWNkMjM5OGYyYzUw
N2U4YzZhMjhhZjZlNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAtNjE0LDcgKzYxNCw3IEBA
IHZvaWQgVmFsdWU6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0CiAgICAg
ICAgIGlmICghc3RkOjppc2Zpbml0ZShtX3ZhbHVlLm51bWJlcikpCiAgICAgICAgICAgICBvdXRw
dXQuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRw
dXQuYXBwZW5kTnVtYmVyKG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBl
bmQobV92YWx1ZS5udW1iZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGExOWM1YWQ5ZmNmODM3OTU0
Njk4ZTBiZTM0MDcyYmZkNzc1MTFjY2QuLjFlMGMxOGFjOWQyMGVkODIwZmViODY4NWZjY2Y4MmIx
MDYwMTE0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcApAQCAtMzkzLDQ4
ICszOTMsNiBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChDRlN0cmluZ1JlZiBzdHJpbmcp
CiAKICNlbmRpZgogCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihpbnQgbnVtYmVy
KQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxkZXI+KG51bWJlciwgdGhp
cyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKHVuc2lnbmVkIG51bWJl
cikKLXsKLSAgICBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFN0cmluZ0J1aWxkZXI+KG51bWJlciwg
dGhpcyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKGxvbmcgbnVtYmVy
KQotewotICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxkZXI+KG51bWJlciwgdGhp
cyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKHVuc2lnbmVkIGxvbmcg
bnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBs
b25nIG51bWJlcikKLXsKLSAgICBudW1iZXJUb1N0cmluZ1NpZ25lZDxTdHJpbmdCdWlsZGVyPihu
dW1iZXIsIHRoaXMpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcih1bnNp
Z25lZCBsb25nIGxvbmcgbnVtYmVyKQotewotICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3Ry
aW5nQnVpbGRlcj4obnVtYmVyLCB0aGlzKTsKLX0KLQotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmROdW1iZXIoZmxvYXQgbnVtYmVyKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZl
cjsKLSAgICBhcHBlbmQobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKLX0KLQotdm9p
ZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIoZG91YmxlIG51bWJlcikKLXsKLSAgICBOdW1i
ZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgYXBwZW5kKG51bWJlclRvU3RyaW5nKG51bWJl
ciwgYnVmZmVyKSk7Ci19Ci0KIGJvb2wgU3RyaW5nQnVpbGRlcjo6Y2FuU2hyaW5rKCkgY29uc3QK
IHsKICAgICBpZiAoaGFzT3ZlcmZsb3dlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aAppbmRleCAyZjRlNjYzYTllM2M2NmNiMmU0ZDBkZmIzYzg1ZDk1MWQ5NmM5ZmEwLi43MDE4YTFh
YjdiZGJkNzRlNmNiN2FmY2QzNTQ0ZWFlYjkzOTBiZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaApAQCAtMjE5LDE1ICsyMTksNiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyQ291bnQ+CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZExpdGVy
YWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFy
YWN0ZXJzKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7IH0KIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihpbnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgYXBwZW5kTnVtYmVyKGxvbmcpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZE51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmROdW1iZXIobG9uZyBsb25nKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRO
dW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBh
cHBlbmROdW1iZXIoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51
bWJlcihkb3VibGUpOwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZXM+IHZv
aWQgYXBwZW5kKFN0cmluZ1R5cGVzLi4uKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0U3RyZWFtLmNwcAppbmRleCA5NjgwYzI4YWFlYjY3YmM5ODVhZjFkNDMyOTgz
M2YwMGY0ZjRkOTg0Li45MGRhOTYzMzBiYzU2OGI0NDE0ZTU1MzUwMmUwZDljMzBmMTY2YTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5jcHAKQEAgLTUzLDM3ICs1MywzNyBAQCBUZXh0U3Ry
ZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNoYXIgYykKIAogVGV4dFN0cmVhbSYgVGV4dFN0
cmVhbTo6b3BlcmF0b3I8PChpbnQgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOwor
ICAgIG1fdGV4dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFt
JiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVu
ZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAqdGhpczsKIH0K
IAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChsb25nIGkpCiB7Ci0gICAgbV90
ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5kKGkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCh1bnNpZ25lZCBs
b25nIGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKKyAgICBtX3RleHQuYXBwZW5k
KGkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PChsb25nIGxvbmcgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOworICAg
IG1fdGV4dC5hcHBlbmQoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBUZXh0U3RyZWFtJiBU
ZXh0U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBpKQogewotICAgIG1fdGV4
dC5hcHBlbmROdW1iZXIoaSk7CisgICAgbV90ZXh0LmFwcGVuZChpKTsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVy
YXRvcjw8KGNvbnN0IEZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyYgbnVtYmVyVAogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgbV90ZXh0LmFwcGVuZE51bWJlcihzdGF0
aWNfY2FzdDxpbnQ+KG51bWJlclRvRm9ybWF0LnZhbHVlKSk7CisgICAgbV90ZXh0LmFwcGVuZChz
dGF0aWNfY2FzdDxpbnQ+KG51bWJlclRvRm9ybWF0LnZhbHVlKSk7CiAgICAgcmV0dXJuICp0aGlz
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCmluZGV4IDVhOTNjMTcwZTQ0ZTA5ZjUwMTk4NjI4
YjE3YjUwMzE4ZWVkOGU1ZTAuLjk4YzRlYTAwNTA2YzU3YmI0ZTBlMjBjMzQ4MTU3NWMyN2Y2NGFl
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
bmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCkBAIC00MDAsMTMgKzQwMCw4IEBAIGNvbnN0IElE
QktleURhdGEmIEluZGV4VmFsdWVTdG9yZTo6SXRlcmF0b3I6OnByaW1hcnlLZXkoKQogU3RyaW5n
IEluZGV4VmFsdWVTdG9yZTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byYga2V5IDogbV9vcmRlcmVkS2V5cykgewotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIktleTogIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGtleS5sb2dnaW5nU3RyaW5nKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAgRW50cnkgaGFzICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3JlY29yZHMu
Z2V0KGtleSktPmdldENvdW50KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBl
bnRyaWVzIik7Ci0gICAgfQorICAgIGZvciAoYXV0byYga2V5IDogbV9vcmRlcmVkS2V5cykKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIktleTogIiwga2V5LmxvZ2dpbmdTdHJpbmcoKSwgIiAgRW50
cnkgaGFzICIsIG1fcmVjb3Jkcy5nZXQoa2V5KS0+Z2V0Q291bnQoKSwgIiBlbnRyaWVzIik7CiAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApp
bmRleCA0ZTBlODgwYjZmNDhlNWJjMzg5NTMzZWMzZGNiMmNlZmQ4NWFmZmFhLi5jNjMxY2U3YjEx
NWY1NzA0NmIwNWU2NjhmZTYwMzQ1OGVhM2IzYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNzgs
MTMgKzc4LDEwIEBAIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQog
c3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYm9vbCBzZWN1cmUpCiB7CiAg
ICAgQVNTRVJUKHVybC5wcm90b2NvbElzKCJ3c3MiKSA9PSBzZWN1cmUpOwotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgpLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkpOwotICAgIGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwu
cG9ydCgpLnZhbHVlKCkgIT0gODApIHx8IChzZWN1cmUgJiYgdXJsLnBvcnQoKS52YWx1ZSgpICE9
IDQ0MykpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKHVybC5wb3J0KCkudmFsdWUoKSk7Ci0gICAgfQotICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCk7CisgICAgaWYgKHVybC5wb3J0KCkgJiYgKCghc2VjdXJlICYmIHVybC5w
b3J0KCkudmFsdWUoKSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0g
NDQzKSkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QsICc6JywgdXJsLnBvcnQoKS52
YWx1ZSgpKTsKKyAgICByZXR1cm4gaG9zdDsKIH0KIAogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJ
bnB1dFNhbXBsZVNpemUgPSAxMjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCAxMDE3Yzc4ZmFiNjViMmVm
YzdlMmJjMzE4NjU5ZGU1MjE0MWM5MDAzLi42ODVlNzk2ZjM3YWQ2NWUwYmNkMDJjZTM2M2IzZTlh
ZTdjMjBmMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b21iaW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTEwMywxMCArMTAzLDggQEAgc3RhdGljIFN0
cmluZyBwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcoY29uc3QgUHJlZml4VHJlZVZlcnRleCYgdmVy
dGV4LCBjb25zdCBIYXMKIAogICAgIGF1dG8gYWN0aW9uc1Nsb3QgPSBhY3Rpb25zLmZpbmQoJnZl
cnRleCk7CiAgICAgaWYgKGFjdGlvbnNTbG90ICE9IGFjdGlvbnMuZW5kKCkpIHsKLSAgICAgICAg
Zm9yICh1aW50NjRfdCBhY3Rpb24gOiBhY3Rpb25zU2xvdC0+dmFsdWUpIHsKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFjdGlvbik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnLCcpOwotICAgICAgICB9CisgICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogYWN0aW9u
c1Nsb3QtPnZhbHVlKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWN0aW9uLCAnLCcpOwog
ICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVy
bS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCmluZGV4IGQ3MzZk
ZDRmYWI5NjVhODhkZjQ2YTcwM2I4MTViYjQ0ZmQ3MzczZGIuLjQ5MzBmNDY3ZmQ5NTEwODU3ZDg0
MThmZjM3YWE1ZGNlYmI2YjBhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1Rlcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9U
ZXJtLmgKQEAgLTIzNywxMSArMjM3LDggQEAgaW5saW5lIFN0cmluZyBUZXJtOjp0b1N0cmluZygp
IGNvbnN0CiAgICAgICAgICAgICBpZiAobV9hdG9tRGF0YS5jaGFyYWN0ZXJTZXQuZ2V0KGMpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlQcmludGFibGUoYykgJiYgIWlzQVNDSUlTcGFj
ZShjKSkKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcXCcpOwot
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgndScpOwotICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihjKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFx1Iiwg
Yyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ10n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAppbmRleCA3ZmYw
N2YzYmJmOGUzZGViMDExN2VmYjZhZGQwNDE1NmQ3ZTVhOTMzLi4zYjk2ZjYwOTUxNWYyYTJmNjM3
Y2QxZjUzOGVhNjI1YTM0NDcxYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZlYXR1cmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0
dXJlVmFsdWUuY3BwCkBAIC00NiwxMCArNDYsOCBAQCBTdHJpbmcgQ1NTRm9udEZlYXR1cmVWYWx1
ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgLy8gT21pdCB0aGUgdmFsdWUgaWYgaXQncyAxIGFz
IDEgaXMgaW1wbGllZCBieSBkZWZhdWx0LgotICAgIGlmIChtX3ZhbHVlICE9IDEpIHsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92
YWx1ZSk7Ci0gICAgfQorICAgIGlmIChtX3ZhbHVlICE9IDEpCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJywgbV92YWx1ZSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IDRk
M2U4NzkwYTc3NGJlMDY1OWU2MDIxY2JkNTdkY2E5MjI3OWM5ZGUuLmU2MGM4NWE3MmQ5YzQ5M2Nm
NDE2NmVjY2RjMmQ0ZDg5YzJhZmU1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTQzLDggKzQzLDcgQEAgYm9vbCBDU1NDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW8KIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoInN0ZXBzKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fc3RlcHMpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJzdGVwcygiLCBtX3N0ZXBzKTsKICAgICBpZiAobV9zdGVwUG9z
aXRpb24pIHsKICAgICAgICAgc3dpdGNoIChtX3N0ZXBQb3NpdGlvbi52YWx1ZSgpKSB7CiAgICAg
ICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpKdW1wU3RhcnQ6CkBA
IC02OCw3ICs2Nyw3IEBAIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3Rv
bUNTU1RleHQoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIik7CisgICAgYnVpbGRlci5hcHBlbmQoJyknKTsK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCBjZTExZjQ5ZWE3ZmY0OWIwY2YwNmJiNzNlZTA5NzE5Njk5OWMxOTdkLi5lYTQyZjMz
NDFhNmE1N2VhMGM1YTllMTExODI0ZjVlNTEyMGRmMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTg0OTYsNiArODQ5Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZU1haW5BcnRpY2xl
RWxlbWVudEFmdGVyTGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisKIGJvb2wgRG9jdW1lbnQ6Omhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4p
CiB7CiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5SZXF1ZXN0ZWRQYWdlU3BlY2lmaWNT
dG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbiA9PSBkb21haW47CkBAIC04NTEzLDI5ICs4
NTE0LDIwIEBAIHZvaWQgRG9jdW1lbnQ6Ondhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJl
dmFsZW50UmVzb3VyY2UoKQogCiB2b2lkIERvY3VtZW50Ojpkb3duZ3JhZGVSZWZlcnJlclRvUmVn
aXN0cmFibGVEb21haW4oKQogewotICAgIGF1dG8gcmVmZXJyZXJTdHIgPSByZWZlcnJlcigpOwot
ICAgIGlmIChyZWZlcnJlclN0ci5pc0VtcHR5KCkpCisgICAgVVJMIHJlZmVycmVyVVJMIHsgeyB9
LCByZWZlcnJlcigpIH07CisgICAgaWYgKHJlZmVycmVyVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVVJMIHJlZmVycmVyVVJMIHsgVVJMKCksIHJlZmVycmVyU3RyIH07Ci0g
ICAgYXV0byByZWZlcnJlclBvcnQgPSByZWZlcnJlclVSTC5wb3J0KCk7Ci0gICAgUmVnaXN0cmFi
bGVEb21haW4gcmVmZXJyZXJSZWdpc3RyYWJsZURvbWFpbiB7IHJlZmVycmVyVVJMIH07Ci0gICAg
YXV0byByZWZlcnJlclJlZ2lzdHJhYmxlRG9tYWluU3RyID0gcmVmZXJyZXJSZWdpc3RyYWJsZURv
bWFpbi5zdHJpbmcoKTsKLSAgICBpZiAocmVmZXJyZXJSZWdpc3RyYWJsZURvbWFpblN0ci5pc0Vt
cHR5KCkpCisgICAgYXV0byBkb21haW5TdHJpbmcgPSBSZWdpc3RyYWJsZURvbWFpbiB7IHJlZmVy
cmVyVVJMIH0uc3RyaW5nKCk7CisgICAgaWYgKGRvbWFpblN0cmluZy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFw
cGVuZChyZWZlcnJlclVSTC5wcm90b2NvbCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjovLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHJlZmVycmVyUmVnaXN0cmFibGVEb21haW5TdHIp
OwotICAgIGlmIChyZWZlcnJlclBvcnQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoKnJlZmVycmVyUG9ydCk7Ci0gICAgfQotICAg
IGJ1aWxkZXIuYXBwZW5kKCcvJyk7Ci0KLSAgICBtX3JlZmVycmVyT3ZlcnJpZGUgPSBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgaWYgKGF1dG8gcG9ydCA9IHJlZmVycmVyVVJMLnBvcnQoKSkKKyAg
ICAgICAgbV9yZWZlcnJlck92ZXJyaWRlID0gbWFrZVN0cmluZyhyZWZlcnJlclVSTC5wcm90b2Nv
bCgpLCAiOi8vIiwgZG9tYWluU3RyaW5nLCAnOicsICpwb3J0LCAnLycpOworICAgIGVsc2UKKyAg
ICAgICAgbV9yZWZlcnJlck92ZXJyaWRlID0gbWFrZVN0cmluZyhyZWZlcnJlclVSTC5wcm90b2Nv
bCgpLCAiOi8vIiwgZG9tYWluU3RyaW5nLCAnLycpOwogfQorCiAjZW5kaWYKIAogdm9pZCBEb2N1
bWVudDo6c2V0Q29uc29sZU1lc3NhZ2VMaXN0ZW5lcihSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+JiYg
bGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CmluZGV4IGVlZTE0MjNiYzlhNjQ5ODk3NjA3ZTliZWI3ZWNkNWNhOTRmZmY4YTMuLmFhMTlhMDBl
Mjk0MjJkMWJiMjFlMGU3YzJmNTJkYjFmMWMxY2M2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
ZW1wbGF0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgIlhN
TE5TTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NTEsMTcgKzQ1MSwx
MiBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjpnZW5lcmF0ZVVuaXF1ZVByZWZpeChRdWFsaWZp
ZWROYW1lJiBwcmVmaXhlZE5hbWUsIGNvbnN0CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTMtQ29yZS9uYW1lc3BhY2VzLWFsZ29yaXRobXMuaHRtbCNub3JtYWxpemVEb2N1
bWVudEFsZ28KICAgICAvLyBGaW5kIGEgcHJlZml4IGZvbGxvd2luZyB0aGUgcGF0dGVybiAiTlMi
ICsgaW5kZXggKHN0YXJ0aW5nIGF0IDEpIGFuZCBtYWtlIHN1cmUgdGhpcwogICAgIC8vIHByZWZp
eCBpcyBub3QgZGVjbGFyZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCi0gICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIEF0b21TdHJpbmcgbmFtZTsKICAgICBkbyB7Ci0gICAgICAgIGJ1aWxk
ZXIuY2xlYXIoKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJOUyIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcigrK21fcHJlZml4TGV2ZWwpOwotICAgICAgICBjb25zdCBB
dG9tU3RyaW5nJiBuYW1lID0gYnVpbGRlci50b0F0b21TdHJpbmcoKTsKLSAgICAgICAgaWYgKCFu
YW1lc3BhY2VzLmdldChuYW1lLmltcGwoKSkpIHsKLSAgICAgICAgICAgIHByZWZpeGVkTmFtZS5z
ZXRQcmVmaXgobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IHdo
aWxlICh0cnVlKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjcmVhdGUgbWFrZUF0b21T
dHJpbmcsIHdoaWNoIHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50LgorICAgICAgICBuYW1lID0gbWFr
ZVN0cmluZygiTlMiLCArK21fcHJlZml4TGV2ZWwpOworICAgIH0gd2hpbGUgKG5hbWVzcGFjZXMu
Z2V0KG5hbWUuaW1wbCgpKSk7CisgICAgcHJlZml4ZWROYW1lLnNldFByZWZpeChuYW1lKTsKIH0K
IAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXR0cmlidXRlJ3Mtc2VyaWFsaXNl
ZC1uYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0K
aW5kZXggYjU2YTRmNTFmYmQ0NDg5MmZiN2RkNmM1MTI5Y2E4MTI4NjZiZDgyYy4uNWY5NjdiMzM3
MWE0ZDkxNGZjOTQyNTc3Y2IzNWVkNTQwZWMyYzUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBT
dHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChOU0luZGV4UGF0aCAqcGF0aCkKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdLCAnLycsIFtwYXRo
IGluZGV4QXRQb3NpdGlvbjoxXSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihbcGF0aCBpbmRleEF0UG9z
aXRpb246MF0pOworICAgICAgICBidWlsZGVyLmFwcGVuZChbcGF0aCBpbmRleEF0UG9zaXRpb246
MF0pOwogICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJywgW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKTsK
ICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMjAzN2NmZjNlOWZmM2RkZDE3OTg3NGEzYzU2MGY0
Mjg4YmFlZWNjMi4uZWYwNTc1ODRhODViNzA5ZTFjOWMxYTQ4N2U3ZGJjYTYyMTQ4ZDNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTE3MywxMCArMTcz
LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2VydmVyTWFwTW91c2VQb3NpdGlvbihTdHJpbmdCdWls
ZGVyJiB1cmwsIEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9i
YWJseSBwYXNzIFVzZVRyYW5zZm9ybXMgaW4gdGhlIE1hcENvb3JkaW5hdGVzRmxhZ3MuCiAgICAg
YXV0byBhYnNvbHV0ZVBvc2l0aW9uID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlciku
YWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9pbnQobW91c2VFdmVudC5wYWdlWCgpLCBtb3VzZUV2ZW50
LnBhZ2VZKCkpKTsKLSAgICB1cmwuYXBwZW5kKCc/Jyk7Ci0gICAgdXJsLmFwcGVuZE51bWJlcihz
dGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0aW9uLngoKSkpOwotICAgIHVybC5hcHBlbmQoJywnKTsK
LSAgICB1cmwuYXBwZW5kTnVtYmVyKHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRpb24ueSgpKSk7
CisgICAgdXJsLmFwcGVuZCgnPycsIHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRpb24ueCgpKSwg
JywnLCBzdGQ6Omxyb3VuZChhYnNvbHV0ZVBvc2l0aW9uLnkoKSkpOwogfQogCiB2b2lkIEhUTUxB
bmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggM2Q5YmMxNWJmYmZhOTdlYmQx
ZWJmYWFmNDUyNzFjZTRkZDJmNDEyNC4uYTk1OGJiMDY5NThhMzkwMjVkN2JjZDZmZmYxYWNkNDdj
MmRiMTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAg
LTM3MiwxMSArMzcyLDggQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlQ29udGV4dDJkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICAvLyBNYWtlIHN1
cmUgd2UgZG9uJ3QgdXNlIG1vcmUgcGl4ZWwgbWVtb3J5IHRoYW4gdGhlIHN5c3RlbSBjYW4gc3Vw
cG9ydC4KICAgICBzaXplX3QgcmVxdWVzdGVkUGl4ZWxNZW1vcnkgPSA0ICogd2lkdGgoKSAqIGhl
aWdodCgpOwogICAgIGlmIChhY3RpdmVQaXhlbE1lbW9yeSgpICsgcmVxdWVzdGVkUGl4ZWxNZW1v
cnkgPiBtYXhBY3RpdmVQaXhlbE1lbW9yeSgpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJUb3RhbCBj
YW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobWF4QWN0aXZlUGl4ZWxNZW1vcnkoKSAvIDEwMjQg
LyAxMDI0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgTUIpLiIpOwot
ICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAg
IGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2Vl
ZHMgdGhlIG1heGltdW0gbGltaXQgKCIsIG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkgLyAxMDI0IC8g
MTAyNCwgIiBNQikuIik7CisgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTMwLDIyICs5MjcsMTYgQEAgdm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiAgICAgLy8gUGVyZm9y
bSBtdWx0aXBsaWNhdGlvbiBhcyBmbG9hdGluZyBwb2ludCB0byBhdm9pZCBvdmVyZmxvdwogICAg
IGlmIChmbG9hdCh3aWR0aCgpKSAqIGhlaWdodCgpID4gbWF4Q2FudmFzQXJlYSkgewotICAgICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAod2lkdGgg
KiBoZWlnaHQgPiAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobWF4Q2Fu
dmFzQXJlYSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKS4iKTsKLSAg
ICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBh
dXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDYW52YXMgYXJlYSBleGNlZWRzIHRoZSBtYXhpbXVt
IGxpbWl0ICh3aWR0aCAqIGhlaWdodCA+ICIsIG1heENhbnZhc0FyZWEsICIpLiIpOworICAgICAg
ICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAog
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgbW9yZSBwaXhlbCBtZW1vcnkgdGhhbiB0aGUg
c3lzdGVtIGNhbiBzdXBwb3J0LgogICAgIHNpemVfdCByZXF1ZXN0ZWRQaXhlbE1lbW9yeSA9IDQg
KiB3aWR0aCgpICogaGVpZ2h0KCk7CiAgICAgaWYgKGFjdGl2ZVBpeGVsTWVtb3J5KCkgKyByZXF1
ZXN0ZWRQaXhlbE1lbW9yeSA+IG1heEFjdGl2ZVBpeGVsTWVtb3J5KCkpIHsKLSAgICAgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIlRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQg
KCIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihtYXhBY3RpdmVQaXhlbE1l
bW9yeSgpIC8gMTAyNCAvIDEwMjQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBNQikuIik7Ci0gICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiVG90YWwgY2FudmFzIG1l
bW9yeSB1c2UgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoIiwgbWF4QWN0aXZlUGl4ZWxNZW1v
cnkoKSAvIDEwMjQgLyAxMDI0LCAiIE1CKS4iKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmluZGV4IDkyOTExOTJkMzIxMTI3YzZiZmMz
MmQ5ZTk2MDYzODdiNmJkZDBkZDAuLjg3YjdlM2QwNGYyMjg3NDVmYjcwOGIxYTE2YWQ3MzNiYTAy
ZTlhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5jcHAKQEAgLTUwNyw4ICs1MDcsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6dG9TdHJpbmcoKSBjb25zdAogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGFwcGVu
ZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgaXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDogIik7Ci0gICAgYnVpbGRlci5hcHBl
bmROdW1iZXIoZGF0YVJlY29yZHNSZW1vdmVkKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgIGRh
dGFSZWNvcmRzUmVtb3ZlZDogIiwgZGF0YVJlY29yZHNSZW1vdmVkKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnXG4nKTsKIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAppbmRleCA2MjRiMGJmNzcw
NzQ4NzkxNGI0Yjk2YmVlZjJhZmEyNjFkZGY3NzFhLi5lMjAyYjAzYjMyZGRlZjE2NjRjNzYwZWIz
MWFjMmQ1ZmY4ODkxMDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VJbnRlZ3JpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUludGVncml0eS5jcHAKQEAgLTIwNywyMSArMjA3LDEzIEBAIGJvb2wgbWF0Y2hJbnRlZ3JpdHlN
ZXRhZGF0YShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFN0cmluZyYgaW50
ZWdyCiAKIFN0cmluZyBpbnRlZ3JpdHlNaXNtYXRjaERlc2NyaXB0aW9uKGNvbnN0IENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHlNZXRhZGF0YSkKIHsKLSAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZS51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7Ci0gICAgYnVpbGRlci5hcHBl
bmQoIi4gRmFpbGVkIGludGVncml0eSBtZXRhZGF0YSBjaGVjay4gIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQoIkNvbnRlbnQgbGVuZ3RoOiAiKTsKLSAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIg
PSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihyZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIobm8gY29udGVudCkiKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiLCBFeHBlY3RlZCBjb250
ZW50IGxlbmd0aDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIocmVzb3VyY2UucmVzcG9u
c2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIiwgRXhw
ZWN0ZWQgbWV0YWRhdGE6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGludGVncml0eU1ldGFkYXRh
KTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgYXV0byByZXNvdXJjZVVS
TCA9IHJlc291cmNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpOworICAg
IGlmIChhdXRvIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkgewor
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhyZXNvdXJjZVVSTCwgIi4gRmFpbGVkIGludGVncml0
eSBtZXRhZGF0YSBjaGVjay4gQ29udGVudCBsZW5ndGg6ICIsIHJlc291cmNlQnVmZmVyLT5zaXpl
KCksICIsIEV4cGVjdGVkIGNvbnRlbnQgbGVuZ3RoOiAiLAorICAgICAgICAgICAgcmVzb3VyY2Uu
cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSwgIiwgRXhwZWN0ZWQgbWV0YWRhdGE6
ICIsIGludGVncml0eU1ldGFkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocmVz
b3VyY2VVUkwsICIuIEZhaWxlZCBpbnRlZ3JpdHkgbWV0YWRhdGEgY2hlY2suIENvbnRlbnQgbGVu
Z3RoOiAobm8gY29udGVudCksIEV4cGVjdGVkIGNvbnRlbnQgbGVuZ3RoOiAiLAorICAgICAgICBy
ZXNvdXJjZS5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAiLCBFeHBlY3RlZCBt
ZXRhZGF0YTogIiwgaW50ZWdyaXR5TWV0YWRhdGEpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDA0NWVmYTEyZjk4ZmRkMjFmZGQw
NmJjOTI2NGQ2OGFiYzg2N2M0ZTcuLjliYTVhYzgxYzQzYjQ0NWJiMTYxYzE5NzRhNjZmYzU1NTNl
YjhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNTIsMTMgKzE1Miw3IEBAIFN0cmluZyBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdE1h
cmdpbigpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvciAo
YXV0byBzaWRlIDogYWxsQm94U2lkZXMpIHsKICAgICAgICAgYXV0byYgbGVuZ3RoID0gbV9yb290
TWFyZ2luLmF0KHNpZGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihsZW5n
dGguaW50VmFsdWUoKSk7Ci0gICAgICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCi0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInB4Iik7Ci0gICAgICAgIGlmIChzaWRlICE9
IEJveFNpZGU6OkxlZnQpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChsZW5ndGguaW50VmFsdWUoKSwgbGVuZ3RoLmlz
UGVyY2VudCgpID8gIiUiIDogInB4Iiwgc2lkZSAhPSBCb3hTaWRlOjpMZWZ0ID8gIiAiIDogIiIp
OwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDI3Y2Y3NjNlNzczN2Y2
MTQyNWQ1YmUyYWNlYzA5NTU4NTJlYzg4OTcuLmVlZDNhMzIwZjMyNzk3NjdmM2M3ZDk3ZWZhMjQ1
N2MzM2I1YzVlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKQEAgLTcxLDIyICs3MCwxNSBAQCBzdGF0aWMgY29uc3QgY2hhciBz
ZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRh
dGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgLy8gSGlzdG9yaWNhbGx5LCB3ZSd2ZSB1
c2VkIHRoZSBmb2xsb3dpbmcgKHNvbWV3aGF0IG5vbi1zZW5zaWNhbCkgc3RyaW5nCisgICAgLy8g
SGlzdG9yaWNhbGx5LCB3ZSd2ZSB1c2VkIHRoZSBmb2xsb3dpbmcgKHNvbWV3aGF0IG5vbnNlbnNp
Y2FsKSBzdHJpbmcKICAgICAvLyBmb3IgdGhlIGRhdGFiYXNlSWRlbnRpZmllciBvZiBsb2NhbCBm
aWxlcy4gV2UgdXNlZCB0byBjb21wdXRlIHRoaXMKICAgICAvLyBzdHJpbmcgYmVjYXVzZSBvZiBh
IGJ1ZyBpbiBob3cgd2UgaGFuZGxlZCB0aGUgc2NoZW1lIGZvciBmaWxlIFVSTHMuCi0gICAgLy8g
Tm93IHRoYXQgd2UndmUgZml4ZWQgdGhhdCBidWcsIHdlIHN0aWxsIG5lZWQgdG8gcHJvZHVjZSB0
aGlzIHN0cmluZwotICAgIC8vIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIHBlcnNpc3RlbnQg
c3RhdGUuCisgICAgLy8gTm93IHRoYXQgd2UndmUgZml4ZWQgdGhhdCBidWcsIHdlIHByb2R1Y2Ug
dGhpcyBzdHJpbmcgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAvLyB3aXRoIGV4aXN0aW5nIHBlcnNp
c3RlbnQgc3RhdGUuCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJvdG9jb2wsICJm
aWxlIikpCiAgICAgICAgIHJldHVybiAiZmlsZV9fMCJfczsKLSAgICAKLSAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocHJvdG9jb2wpOwot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCkpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZU9yKDApKTsKLSAgICAKLSAgICByZXR1cm4gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2ws
IHNlcGFyYXRvckNoYXJhY3RlciwgRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCks
IHNlcGFyYXRvckNoYXJhY3RlciwgcG9ydC52YWx1ZU9yKDApKTsKIH0KIAogT3B0aW9uYWw8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rl
Y2ltYWwuY3BwCmluZGV4IDBiMjExMDRmOTY1N2VmOWQwMzI4MjdkYjYwMjEyM2FkODc5ZjRjMjEu
LjVjMWJiZjRlMTVlYThkZjk0NjA4YjBjYzI2OWExNzcxMDQ4NDFiNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0xMDI1LDEwICsxMDI1LDggQEAgU3RyaW5nIERlY2ltYWw6
OnRvU3RyaW5nKCkgY29uc3QKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNb
aV0pOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUrIik7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhZGp1c3RlZEV4cG9uZW50KTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoYWRqdXN0ZWRFeHBvbmVudCkKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUrIiwgYWRqdXN0ZWRFeHBv
bmVudCk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4
IDM5ZmU1YjY0YzhiMTM5NWRkMjM3MzRjN2JkMThlYTQ3NWZiZDYyMDkuLmVlMTA0ZjM4NTc0NzMw
N2YwOWNmNTk2YzE0ZWIwZWExM2Q5MWVkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTk4LDExICs1OTcsNyBAQCBGbG9hdFJlY3QgR3JhcGhp
Y3NMYXllcjo6YWRqdXN0Q292ZXJhZ2VSZWN0Rm9yTW92ZW1lbnQoY29uc3QgRmxvYXRSZWN0JiBj
b3ZlcmFnZQogU3RyaW5nIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9u
KEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKIHsKICAgICAvLyB8IGlzIG5vdCBhIHZhbGlk
IGlkZW50aWZpZXIgY2hhcmFjdGVyIGluIENTUywgc28gdGhpcyBjYW4gbmV2ZXIgY29uZmxpY3Qg
d2l0aCBhIGtleWZyYW1lIGlkZW50aWZpZXIuCi0gICAgU3RyaW5nQnVpbGRlciBpZDsKLSAgICBp
ZC5hcHBlbmRMaXRlcmFsKCItfHRyYW5zaXRpb24iKTsKLSAgICBpZC5hcHBlbmROdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50Pihwcm9wZXJ0eSkpOwotICAgIGlkLmFwcGVuZCgnLScpOwotICAgIHJldHVy
biBpZC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCItfHRyYW5zaXRpb24iLCBz
dGF0aWNfY2FzdDxpbnQ+KHByb3BlcnR5KSwgJy0nKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVy
OjpzdXNwZW5kQW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDMwNWVm
ZDMzM2JkNjExYzZlZjVlNGMxYjI2MjI4ODc1MjU2ZjI0ZDEuLjg0MjdmOWNiYjQyZDRjN2ExNzU3
Y2EwMWNiNmU2YWIxY2U5ZjM4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTc1NiwzMiArNzU2LDIyIEBA
IGludCBUaWxlQ29udHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAKIFJlZjxQbGF0
Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVj
dCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIGF1dG8gbGF5ZXIgPSBtX3RpbGVD
YWNoZUxheWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNp
emUoKSk7CisgICAgZmxvYXQgdGVtcG9yYXJ5U2NhbGVGYWN0b3IgPSBvd25pbmdHcmFwaGljc0xh
eWVyKCktPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzU2NhbGVNdWx0aXBsaWVyRm9yTmV3VGlsZXMo
bV90aWxlQ2FjaGVMYXllcik7CisgICAgbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3Rv
ciB8PSB0ZW1wb3JhcnlTY2FsZUZhY3RvciAhPSAxOwogCisgICAgYXV0byBsYXllciA9IG1fdGls
ZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Qu
c2l6ZSgpKTsKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAg
IGxheWVyLT5zZXRQb3NpdGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKICAgICBsYXllci0+c2V0
Qm9yZGVyQ29sb3IobV90aWxlRGVidWdCb3JkZXJDb2xvcik7CiAgICAgbGF5ZXItPnNldEJvcmRl
cldpZHRoKG1fdGlsZURlYnVnQm9yZGVyV2lkdGgpOwogICAgIGxheWVyLT5zZXRFZGdlQW50aWFs
aWFzaW5nTWFzaygwKTsKICAgICBsYXllci0+c2V0T3BhcXVlKG1fdGlsZXNBcmVPcGFxdWUpOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBuYW1lQnVpbGRlcjsKLSAgICBuYW1lQnVpbGRlci5hcHBlbmQo
InRpbGUgYXQgIik7Ci0gICAgbmFtZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHRpbGVSZWN0LmxvY2F0
aW9uKCkueCgpKTsKLSAgICBuYW1lQnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICBuYW1lQnVpbGRl
ci5hcHBlbmROdW1iZXIodGlsZVJlY3QubG9jYXRpb24oKS55KCkpOwotICAgIGxheWVyLT5zZXRO
YW1lKG5hbWVCdWlsZGVyLnRvU3RyaW5nKCkpOwotCi0gICAgZmxvYXQgdGVtcG9yYXJ5U2NhbGVG
YWN0b3IgPSBvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzU2Nh
bGVNdWx0aXBsaWVyRm9yTmV3VGlsZXMobV90aWxlQ2FjaGVMYXllcik7Ci0gICAgbV9oYXNUaWxl
c1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvciB8PSB0ZW1wb3JhcnlTY2FsZUZhY3RvciAhPSAxOwot
CisgICAgbGF5ZXItPnNldE5hbWUobWFrZVN0cmluZygidGlsZSBhdCAiLCB0aWxlUmVjdC5sb2Nh
dGlvbigpLngoKSwgJywnLCB0aWxlUmVjdC5sb2NhdGlvbigpLnkoKSkpOwogICAgIGxheWVyLT5z
ZXRDb250ZW50c1NjYWxlKG1fZGV2aWNlU2NhbGVGYWN0b3IgKiB0ZW1wb3JhcnlTY2FsZUZhY3Rv
cik7CiAgICAgbGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyhtX2FjY2VsZXJhdGVzRHJhd2lu
Zyk7CiAgICAgbGF5ZXItPnNldFdhbnRzRGVlcENvbG9yQmFja2luZ1N0b3JlKG1fd2FudHNEZWVw
Q29sb3JCYWNraW5nU3RvcmUpOwogICAgIGxheWVyLT5zZXRTdXBwb3J0c1N1YnBpeGVsQW50aWFs
aWFzZWRUZXh0KG1fc3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCk7Ci0KICAgICBsYXll
ci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0KICAgICByZXR1cm4gbGF5ZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKaW5kZXggOTMxNmYzYWNhMzYyNmQ5Y2Y5MGQzZTJjNzViNDAzMWM1
ZWVhYWJhZC4uM2I0NDhhZjA0ZmEyNTVlNGY4NDNlZjQyOWViZDc3YzlhMWQ4NjhhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FM
YXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTY5OCwzOSArNjk4LDcgQEAgc3RhdGljIHZvaWQg
cHJpbnRJbmRlbnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCkKIAogc3RhdGlj
IHZvaWQgcHJpbnRUcmFuc2Zvcm0oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ0FUcmFu
c2Zvcm0zRCYgdHJhbnNmb3JtKQogewotICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEx
KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTIpKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm0xMykpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTE0
KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIxKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMjIpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0y
MykpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoIjsgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MzIpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMykpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTQxKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpKTsKLSAgICBidWlsZGVy
LmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm00MykpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAg
YnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTQ0KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnWycs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMSksICcgJywgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEyKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCksICI7ICIsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tMjMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm0yNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNp
b24odHJhbnNmb3JtLm0zMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0
cmFuc2Zvcm0ubTMyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5z
Zm9ybS5tMzMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3Jt
Lm0zNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00
MSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQyKSwg
JyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDMpLCAnICcs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00NCksICddJyk7CiB9
CiAKIHN0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGlu
ZGVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKQEAgLTc3MiwzMCAr
NzQwLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBj
b25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlQ3VzdG9tOiBsYXllclR5cGVOYW1lID0gImN1c3RvbS1sYXllciI7IGJyZWFr
OwogICAgIH0KIAotICAgIGJ1aWxkZXIuYXBwZW5kKCIoIik7Ci0gICAgYnVpbGRlci5hcHBlbmQo
bGF5ZXJUeXBlTmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIiBbIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLngoKSkp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLnkoKSkpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihsYXllclBvc2l0aW9uLnooKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJdIFsiKTsK
LSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVy
Qm91bmRzLngoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBl
bmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy55KCkpKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJCb3VuZHMud2lkdGgoKSkpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbihsYXllckJvdW5kcy5oZWlnaHQoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJdIFsiKTsK
LSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVy
QW5jaG9yUG9pbnQueCgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQu
eSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueigpKSk7Ci0gICAg
YnVpbGRlci5hcHBlbmQoIl0gc3VwZXJsYXllcj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGF5ZXItPnN1cGVybGF5ZXIo
KSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCcoJywgbGF5ZXJUeXBlTmFtZSwgIiBbIiwgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLngoKSksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLnkoKSksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllclBvc2l0aW9uLnooKSksICJdIFsiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQm91bmRzLngoKSksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy55KCkpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obGF5ZXJCb3VuZHMud2lkdGgoKSksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihsYXllckJvdW5kcy5oZWlnaHQoKSksICJdIFsiLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueCgpKSwgJyAn
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueSgpKSwg
JyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGxheWVyQW5jaG9yUG9pbnQueigp
KSwgIl0gc3VwZXJsYXllcj0iLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
bGF5ZXItPnN1cGVybGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbmFtZSBpZiBuZWVkZWQKICAg
ICBTdHJpbmcgbGF5ZXJOYW1lID0gQ0FDRkxheWVyR2V0TmFtZShsYXllci0+cGxhdGZvcm1MYXll
cigpKTsKQEAgLTg3MSwxMSArODE2LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICAg
ICAgICAgIENHSW1hZ2VSZWYgaW1hZ2VDb250ZW50cyA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGxheWVyQ29udGVudHMpKTsKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwogICAgICAgICAgICAgcHJpbnRJbmRlbnQoYnVpbGRlciwgaW5kZW50ICsg
MSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGNvbnRlbnRzIChpbWFnZSBbIik7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250
ZW50cykpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIl0pKSIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIihjb250ZW50cyAoaW1hZ2UgWyIsIENHSW1hZ2VHZXRXaWR0aChpbWFnZUNvbnRlbnRzKSwg
JyAnLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29udGVudHMpLCAiXSkpIik7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQobGF5ZXJDb250ZW50cykgPT0gQ0FCYWNraW5nU3Rv
cmVHZXRUeXBlSUQoKSkgewpAQCAtODgzLDExICs4MjQsNyBAQCBzdGF0aWMgdm9pZCBwcmludExh
eWVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIs
IGludAogICAgICAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZUNvbnRlbnRzID0gQ0FCYWNraW5nU3Rv
cmVHZXRDR0ltYWdlKGJhY2tpbmdTdG9yZSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKICAgICAgICAgICAgIHByaW50SW5kZW50KGJ1aWxkZXIsIGluZGVudCArIDEpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihjb250ZW50cyAoYmFja2luZy1zdG9yZSBbIik7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250
ZW50cykpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIl0pKSIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIihjb250ZW50cyAoYmFja2luZy1zdG9yZSBbIiwgQ0dJbWFnZUdldFdpZHRoKGltYWdlQ29u
dGVudHMpLCAnICcsIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cyksICJdKSkiKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtOTE2LDE3ICs4NTMsNyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxh
eWVyV2luOjpsYXllclRyZWVBc1N0cmluZygpIGNvbnN0CiAgICAgQ0dSZWN0IHJvb3RCb3VuZHMg
PSBib3VuZHMoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFw
cGVuZCgiXG5cbioqIFJlbmRlciB0cmVlIGF0IHRpbWUgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQo
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCIgKGJvdW5k
cyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHJvb3RCb3VuZHMub3JpZ2luLngpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMu
b3JpZ2luLnkpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm9vdEJvdW5kcy5zaXplLndpZHRoKSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJ3gnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMuc2l6ZS5oZWlnaHQpKTsKLSAgICBidWls
ZGVyLmFwcGVuZCgiKSAqKlxuXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXG5cbioqIFJlbmRl
ciB0cmVlIGF0IHRpbWUgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihNb25vdG9u
aWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSksICIgKGJvdW5kcyAi
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMub3JpZ2luLngpLCAi
LCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMub3JpZ2luLnkp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocm9vdEJvdW5kcy5zaXplLndp
ZHRoKSwgJ3gnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJvb3RCb3VuZHMuc2l6
ZS5oZWlnaHQpLCAiKSAqKlxuXG4iKTsKIAogICAgIC8vIFByaW50IGxheWVyIHRyZWUgZnJvbSB0
aGUgcm9vdAogICAgIHByaW50TGF5ZXIoYnVpbGRlciwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggMDAwZjRhOGY2NDk1NDczYzkwMTliMjQyMWNjMjEw
NWYxYjY3MGE2YS4uNTk5Njc0YTkyYWQyNmNiZjhjNzc0Yjc4NWI1YjRkMmY1YzZmY2ZmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtODgsOSArODgsNyBAQCB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgY29ucwogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2Vu
ZXJhdGVNb2NrQ291bnRlclN0cmluZygpCiB7Ci0gICAgbV9idWZmZXIuYXBwZW5kKCIgQ291bnRl
cjogIik7Ci0gICAgbV9idWZmZXIuYXBwZW5kTnVtYmVyKCsrbV9jb3VudGVyKTsKLSAgICBtX2J1
ZmZlci5hcHBlbmQoIlxyXG4tLS0tLS0tLS1cclxuIik7CisgICAgbV9idWZmZXIuYXBwZW5kKCIg
Q291bnRlcjogIiwgKyttX2NvdW50ZXIsICJcclxuLS0tLS0tLS0tXHJcbiIpOwogfQogCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwCmluZGV4IGM2ZDY3YzIxZGJiODM5NWVjMTQwNWM0MmFmMTZhNmMzN2E0
ZjhmOTAuLmFiOWVkZDliNDc0NzAxNWZlZDM2YTg5ZjFkM2IwNWIzN2YxMDUxM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCkBAIC0zMiw2
ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgYXBwZW5kUHJveHlT
ZXJ2ZXJTdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUHJveHlTZXJ2ZXImIHBy
b3h5U2VydmVyKQogeworICAgIEFTU0VSVCghcHJveHlTZXJ2ZXIuaG9zdE5hbWUoKS5pc051bGwo
KSk7CisgICAgQVNTRVJUKHByb3h5U2VydmVyLnBvcnQoKSAhPSAtMSk7CisKICAgICBzd2l0Y2gg
KHByb3h5U2VydmVyLnR5cGUoKSkgewogICAgIGNhc2UgUHJveHlTZXJ2ZXI6OkRpcmVjdDoKICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJESVJFQ1QiKTsKQEAgLTQzLDE2ICs0Niw4IEBA
IHN0YXRpYyB2b2lkIGFwcGVuZFByb3h5U2VydmVyU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIGNvbnN0IFByb3h5U2VydmVyJiBwCiAgICAgY2FzZSBQcm94eVNlcnZlcjo6U09DS1M6CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU09DS1MiKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIAotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICBBU1NFUlQoIXByb3h5
U2VydmVyLmhvc3ROYW1lKCkuaXNOdWxsKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHByb3h5U2Vy
dmVyLmhvc3ROYW1lKCkpOwotCi0gICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICBBU1NFUlQo
cHJveHlTZXJ2ZXIucG9ydCgpICE9IC0xKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihwcm94
eVNlcnZlci5wb3J0KCkpOworICAgIH0gICAgCisgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBwcm94
eVNlcnZlci5ob3N0TmFtZSgpLCAnOicsIHByb3h5U2VydmVyLnBvcnQoKSk7CiB9CiAKIFN0cmlu
ZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggY2FkYjEy
NzVmZDE1YTdmMzlkZDE4M2ZjNTliMDA2YjgwNmMzMDY0MC4uZmZkYWFjMDU1ZTYwNjJhMzVjODJh
NWE1MDhjOWVjMTY5ZWYzMDNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtODI5LDE3ICs4MjksMTAgQEAgc3RhdGljIFN0cmluZyBub2Rl
UG9zaXRpb24oTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiYm9keSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgneycpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0VGFnTmFtZShuKSk7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2hpbGQgIik7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihuLT5jb21wdXRlTm9kZUluZGV4KCkpOwot
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyIpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoZ2V0VGFnTmFtZShuKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnfScpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG4tPmlzU2hhZG93
Um9vdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3snLCBnZXRUYWdOYW1lKG4p
LCAnfScpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
ImNoaWxkICIsIG4tPmNvbXB1dGVOb2RlSW5kZXgoKSwgIiB7IiwgZ2V0VGFnTmFtZShuKSwgJ30n
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZG9j
dW1lbnQiKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKaW5k
ZXggZGQwZjkyMmQ0ZTVkNTNmOWNiMGVlNDI3ODhmNmZiZGM2NWEzZTMzMi4uZWY3NjI5MTYzODdj
YWZlNjk5Y2JlOWEyOTNkYmRjNDhhYTEzYTM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
VXRpbGl0aWVzLmNwcApAQCAtNTksNDAgKzU5LDE2IEBAIFN0cmluZyBidWlsZFN0cmluZ0Zyb21Q
YXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgIHBhdGguYXBwbHkoWyZidWlsZGVyXSAoY29u
c3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50
eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2ludDoK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnTScpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCdNJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzBdLnko
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50
OjpUeXBlOjpBZGRMaW5lVG9Qb2ludDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
TCcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRz
WzBdLngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdMJywgZWxlbWVudC5wb2ludHNbMF0ueCgpLCAn
ICcsIGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50OgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdRJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgpKTsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50
c1sxXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMV0ueSgpKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnUScsIGVsZW1lbnQucG9pbnRzWzBdLngoKSwg
JyAnLCBlbGVtZW50LnBvaW50c1swXS55KCksICcsJywgZWxlbWVudC5wb2ludHNbMV0ueCgpLCAn
ICcsIGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRDdXJ2ZVRvUG9pbnQ6Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0MnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxl
bWVudC5wb2ludHNbMF0ueSgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcp
OwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzFd
LngoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS55KCkpOwotICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMl0ueCgpKTsKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVs
ZW1lbnQucG9pbnRzWzJdLnkoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0Mn
LCBlbGVtZW50LnBvaW50c1swXS54KCksICcgJywgZWxlbWVudC5wb2ludHNbMF0ueSgpLCAnLCcs
IGVsZW1lbnQucG9pbnRzWzFdLngoKSwgJyAnLCBlbGVtZW50LnBvaW50c1sxXS55KCksICcsJywg
ZWxlbWVudC5wb2ludHNbMl0ueCgpLCAnICcsIGVsZW1lbnQucG9pbnRzWzJdLnkoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpD
bG9zZVN1YnBhdGg6CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5MzFjMDMxYWIyMmVlMGU5N2U0OTYxZjhi
MTMxYzUzYWExZWZhZGUyLi5jMzViYzZhMWM2YWVhODdlZGU0MTMyODNhZDdkNjY1ODU1ZWRjOWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzQ1LDU1ICsyMzQ1LDQw
IEBAIHByaXZhdGU6CiAKIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKEpTQzo6SlNW
YWx1ZSBjb2RlKQogewotICAgIEpTQzo6Vk0mIHZtID0gY29udGV4dERvY3VtZW50KCktPnZtKCk7
Ci0gICAgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZtLnRvcENhbGxGcmFtZTsKLSAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3Qodm0pOwotICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CisgICAgYXV0
byYgdm0gPSBjb250ZXh0RG9jdW1lbnQoKS0+dm0oKTsKKyAgICBhdXRvIGNhbGxGcmFtZSA9IHZt
LnRvcENhbGxGcmFtZTsKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxleGlj
YWxHbG9iYWxPYmplY3Qodm0pOwogCisgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZTsK
ICAgICBpZiAoIWNvZGUgfHwgY29kZS5pc051bGwoKSB8fCBjb2RlLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgR2V0Q2FsbGVyQ29kZUJsb2NrRnVuY3RvciBpdGVyOwogICAgICAgICBjYWxsRnJh
bWUtPml0ZXJhdGUodm0sIGl0ZXIpOwotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGl0
ZXIuY29kZUJsb2NrKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpOwotICAgIH0gZWxzZSBpZiAoY29kZS5pc0NhbGxhYmxlKHZtKSkgewotICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jT2JqID0gSlNDOjpqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvZGUudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jT2JqLT5qc0V4
ZWN1dGFibGUoKTsKLSAgICB9IGVsc2UKKyAgICAgICAgZXhlY3V0YWJsZSA9IGl0ZXIuY29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpOworICAgIH0gZWxzZSBpZiAoY29kZS5pc0NhbGxhYmxl
KHZtKSkKKyAgICAgICAgZXhlY3V0YWJsZSA9IEpTQzo6anNDYXN0PEpTRnVuY3Rpb24qPihjb2Rl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCkpLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBlbHNlCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHVuc2lnbmVkIHN0YXJ0TGluZSA9IGV4ZWN1dGFi
bGUtPmZpcnN0TGluZSgpOwotICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gZXhlY3V0YWJsZS0+
c3RhcnRDb2x1bW4oKTsKLSAgICB1bnNpZ25lZCBlbmRMaW5lID0gZXhlY3V0YWJsZS0+bGFzdExp
bmUoKTsKLSAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBleGVjdXRhYmxlLT5lbmRDb2x1bW4oKTsK
LQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIi
OworICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7CisgICAgY29uc3QgY2hhciogc3VmZml4ID0gIiI7
CiAKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFibGUoKSkgewotICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjdXRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgU3RyaW5nIGluZmVycmVk
TmFtZSA9IGZ1bmNFeGVjdXRhYmxlLT5lY21hTmFtZSgpLnN0cmluZygpOwotICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gXCIiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChp
bmZlcnJlZE5hbWUpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCciJyk7CisgICAgICAgIHByZWZp
eCA9ICJmdW5jdGlvbiBcIiI7CisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5lY21hTmFtZSgpLnN0cmluZygpOworICAg
ICAgICBzdWZmaXggPSAiXCIiOwogICAgIH0gZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNFdmFsRXhl
Y3V0YWJsZSgpKQotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZXZhbCIpOworICAgICAg
ICBwcmVmaXggPSAiZXZhbCI7CiAgICAgZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSgpKQotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgibW9kdWxlIik7
CisgICAgICAgIHByZWZpeCA9ICJtb2R1bGUiOwogICAgIGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlz
UHJvZ3JhbUV4ZWN1dGFibGUoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInByb2dy
YW0iKTsKKyAgICAgICAgcHJlZml4ID0gInByb2dyYW0iOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7Ci0g
ICAgcmVzdWx0LmFwcGVuZE51bWJlcihzdGFydExpbmUpOwotICAgIHJlc3VsdC5hcHBlbmQoJzon
KTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHN0YXJ0Q29sdW1uKTsKLSAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihlbmRMaW5lKTsKLSAg
ICByZXN1bHQuYXBwZW5kKCc6Jyk7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihlbmRDb2x1bW4p
OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgfSIpOwotCi0gICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeCwgZnVuY3Rpb25OYW1lLCBz
dWZmaXgsICIgeyAiLAorICAgICAgICBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgJzonLCBleGVj
dXRhYmxlLT5zdGFydENvbHVtbigpLCAiIC0gIiwKKyAgICAgICAgZXhlY3V0YWJsZS0+bGFzdExp
bmUoKSwgJzonLCBleGVjdXRhYmxlLT5lbmRDb2x1bW4oKSwgIiB9Iik7CiB9CiAKIHZvaWQgSW50
ZXJuYWxzOjp1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCkKQEAgLTQ3MzAsOCArNDcxNSw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE9mZnNldHMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29u
c3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGp1c3RTdGFydGluZyA9IGZh
bHNlOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGNvb3JkaW5hdGUub2Zmc2V0LnRv
VW5zaWduZWQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvb3JkaW5hdGUub2Zmc2V0LnRv
VW5zaWduZWQoKSk7CiAgICAgICAgIGlmIChjb29yZGluYXRlLnN0b3AgPT0gU2Nyb2xsU25hcFN0
b3A6OkFsd2F5cykKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIChhbHdheXMp
Iik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50
LmNwcAppbmRleCA1YjQzMDY4NmVkNGMyMDVmMDkzZjU2MWJkNDY5ZGVkYjU5NDlmMTRmLi5iMjNm
YzgxZTdmMmIzOGYxM2U3NjNkMDQyMDU4M2VmMjJjOWYyNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCkBAIC04OCwxNyArODgsOCBA
QCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZGlkTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYg
b3ZlcmxheSwgUGFnZSogcGFnZSkKIAogdm9pZCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OmRyYXdS
ZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAg
bWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OmRyYXdSZWN0IGRp
cnR5UmVjdCAoIik7Ci0gICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZGlydHlSZWN0LngoKSk7Ci0g
ICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTnVtYmVy
KGRpcnR5UmVjdC55KCkpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBt
ZXNzYWdlLmFwcGVuZE51bWJlcihkaXJ0eVJlY3Qud2lkdGgoKSk7Ci0gICAgbWVzc2FnZS5hcHBl
bmRMaXRlcmFsKCIsICIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTnVtYmVyKGRpcnR5UmVjdC5oZWln
aHQoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIpIik7Ci0gICAgb3ZlcmxheS5wYWdl
KCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3RyaW5nKCkpOworICAg
IG92ZXJsYXkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpEZWJ1ZywKKyAgICAgICAgbWFr
ZVN0cmluZygiTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCBkaXJ0eVJlY3QgKCIsIGRp
cnR5UmVjdC54KCksICIsICIsIGRpcnR5UmVjdC55KCksICIsICIsIGRpcnR5UmVjdC53aWR0aCgp
LCAiLCAiLCBkaXJ0eVJlY3QuaGVpZ2h0KCksICcpJykpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCkBAIC0xMTcsMTQgKzEwOCw4IEBAIHZv
aWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwg
R3JhcGhpY3NDb250ZXh0JiBjb250CiAKIGJvb2wgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojptb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50KQogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExp
dGVyYWwoIk1vY2tQYWdlT3ZlcmxheUNsaWVudDo6bW91c2VFdmVudCBsb2NhdGlvbiAoIik7Ci0g
ICAgbWVzc2FnZS5hcHBlbmROdW1iZXIoZXZlbnQucG9zaXRpb24oKS54KCkpOwotICAgIG1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBtZXNzYWdlLmFwcGVuZE51bWJlcihldmVudC5w
b3NpdGlvbigpLnkoKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIpIik7Ci0gICAgb3Zl
cmxheS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3RyaW5n
KCkpOwotCisgICAgb3ZlcmxheS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLAor
ICAgICAgICBtYWtlU3RyaW5nKCJNb2NrUGFnZU92ZXJsYXlDbGllbnQ6Om1vdXNlRXZlbnQgbG9j
YXRpb24gKCIsIGV2ZW50LnBvc2l0aW9uKCkueCgpLCAiLCAiLCBldmVudC5wb3NpdGlvbigpLnko
KSwgJyknKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3Bw
CmluZGV4IGIxYzcxNmQwZjk5MzhkNTNhZGM1ZDIyNDc1NGIyMzY0ZWU5MDhiYTAuLmQ2YWNlYWYx
NGMxNjlmOWZmOGUwNTgwMTAwMzZhMjU3ODdhNjJlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMu
Y3BwCkBAIC03OCwxMyArNzgsNyBAQCB2b2lkIFhNTEVycm9yczo6aGFuZGxlRXJyb3IoRXJyb3JU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIFRleHRQb3NpdGlvbiBwbwogdm9pZCBYTUxF
cnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQ
b3NpdGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICAvLyA8dHlwZVN0
cmluZz4gb24gbGluZSA8bGluZU51bWJlcj4gYXQgY29sdW1uIDxjb2x1bW5OdW1iZXI+OiA8bWVz
c2FnZT4KLSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJpbmcpOwotICAgIG1fZXJy
b3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCIgb24gbGluZSAiKTsKLSAgICBtX2Vycm9yTWVzc2Fn
ZXMuYXBwZW5kTnVtYmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKTsKLSAgICBtX2Vy
cm9yTWVzc2FnZXMuYXBwZW5kTGl0ZXJhbCgiIGF0IGNvbHVtbiAiKTsKLSAgICBtX2Vycm9yTWVz
c2FnZXMuYXBwZW5kTnVtYmVyKHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpOwotICAg
IG1fZXJyb3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgIG1fZXJyb3JNZXNzYWdl
cy5hcHBlbmQobWVzc2FnZSk7CisgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZCh0eXBlU3RyaW5n
LCAiIG9uIGxpbmUgIiwgcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksICIgYXQgY29sdW1u
ICIsIHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCksICI6ICIsIG1lc3NhZ2UpOwogfQog
CiBzdGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVy
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2VzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb25Ib3N0LmNwcAppbmRleCAyN2RlZTEyZmIxMjUwMDUwMDlhNDNlM2Q2NGI5YWFkZWMx
ZTdkOWY5Li5kNjA1MTY2ZjkwOWVmMDE2YmY3NzFlNjcxOTI3ZmIzYWMxMDkyNWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb25Ib3N0LmNwcApAQCAtNDUsMTUgKzQ1LDkgQEAgbG9uZyBTZXNzaW9uSG9zdDo6
c2VuZENvbW1hbmRUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBSZWZQdHI8SlNPTjo6
T2JqZWMKICAgICBsb25nIHNlcXVlbmNlSUQgPSArK2xhc3RTZXF1ZW5jZUlEOwogICAgIG1fY29t
bWFuZFJlcXVlc3RzLmFkZChzZXF1ZW5jZUlELCBXVEZNb3ZlKHJlc3BvbnNlSGFuZGxlcikpOwog
ICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7Ci0gICAgbWVzc2FnZUJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgie1wiaWRcIjoiKTsKLSAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIo
c2VxdWVuY2VJRCk7Ci0gICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9k
XCI6XCJBdXRvbWF0aW9uLiIpOwotICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChjb21tYW5kKTsK
LSAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICBpZiAocGFyYW1ldGVycykgewot
ICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsXCJwYXJhbXNcIjoiKTsKLSAg
ICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMtPnRvSlNPTlN0cmluZygpKTsK
LSAgICB9CisgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCJ7XCJpZFwiOiIsIHNlcXVlbmNlSUQs
ICIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIiwgY29tbWFuZCwgJyInKTsKKyAgICBpZiAocGFy
YW1ldGVycykKKyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCIsXCJwYXJhbXNcIjoiLCBw
YXJhbWV0ZXJzLT50b0pTT05TdHJpbmcoKSk7CiAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCd9
Jyk7CiAgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZUJ1aWxkZXIudG9TdHJpbmcoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
YjNjOTZkYTJhMDljYzIxOGUxZjRiN2M3MmVhNGJhMTgwM2Q0YjNmNi4uOTNjNGMwYzBhNWJmNmVj
NWMxZGYyY2JkMDUwNDdkZDUwNTVkYmVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
SFRUUFNlcnZlclNvY2tldC5jcHAKQEAgLTExNywyMyArMTE3LDEyIEBAIFN0cmluZyBIVFRQUmVx
dWVzdEhhbmRsZXI6OnBhY2tIVFRQTWVzc2FnZShIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNl
JiYgcmVzcG9uCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGNvbnN0IGNoYXIqIEVP
TCA9ICJcclxuIjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMCAiKTsKLSAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5zdGF0dXNDb2RlKTsKLSAgICBidWlsZGVyLmFwcGVu
ZCgiICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT0gMjAwID8g
Ik9LIiA6ICJFUlJPUiIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEVPTCk7CisgICAgYnVpbGRlci5h
cHBlbmQoIkhUVFAvMS4wICIsIHJlc3BvbnNlLnN0YXR1c0NvZGUsICcgJywgcmVzcG9uc2Uuc3Rh
dHVzQ29kZSA9PSAyMDAgPyAiT0siIDogIkVSUk9SIiwgRU9MKTsKIAogICAgIGlmICghcmVzcG9u
c2UuZGF0YS5pc051bGwoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgiQ29udGVudC1UeXBl
OiAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocmVzcG9uc2UuY29udGVudFR5cGUpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZChFT0wpOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJDb250
ZW50LUxlbmd0aDogIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3BvbnNlLmRh
dGEubGVuZ3RoKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChFT0wpOwotCi0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSIpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZChFT0wpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiQ29udGVudC1UeXBlOiAiLCBy
ZXNwb25zZS5jb250ZW50VHlwZSwgRU9MLAorICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAi
LCByZXNwb25zZS5kYXRhLmxlbmd0aCgpLCBFT0wsCisgICAgICAgICAgICAiQ2FjaGUtQ29udHJv
bDogbm8tY2FjaGUiLCBFT0wpOwogICAgIH0KIAogICAgIGJ1aWxkZXIuYXBwZW5kKEVPTCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCBiOWNiMmRjOTQ4ZjNjODk0YjQ3Y2U1YTc5ZWRhMmY1MWJkNWI4ZGIwLi4wZDcyNTJi
NTM1Y2EyZjdkMDg4ZWQ5NGVhMjY0Yzk3NmM1ZDQzNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEzMzEsNyArMTMz
MSw3IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRMaXN0KGNvbnN0IFdURjo6SXRlcmF0b3JSYW5nZTxJ
dGVyYXRvclR5cGU+JiB2YWx1ZXMpCiAgICAgZm9yIChhdXRvIGRvbWFpbklEIDogdmFsdWVzKSB7
CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGRvbWFpbklE
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluSUQpOwogICAgIH0KICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtMTM4MSw3ICsxMzgxLDcgQEAgSGFzaE1hcDx1bnNp
Z25lZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxl
bnRSZXNvdXJjZXMKICAgICBmb3IgKGF1dG8gdmFsdWUgOiByZXN1bHRzLmtleXMoKSkgewogICAg
ICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiAKICAgICBhdXRvIGRvbWFpbklEc09m
SW50ZXJlc3QgPSBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0yODk1LDggKzI4OTUsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGFwcGVu
ZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJ
bmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkludChE
YXRhUmVjb3Jkc1JlbW92ZWRJbmRleCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJl
Y29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiB9CiAKQEAgLTM0MTAsMTIgKzM0MDksNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FM
aXRlUwogICAgIGF1dG8gc291cmNlSUQgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludCgyKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlNv
dXJjZSBzaXRlOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChzb3VyY2VTaXRlRG9tYWluKTsKLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQXR0cmlidXRlIG9uIHNpdGU6ICIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKGRlc3RpbmF0aW9uU2l0ZURvbWFpbik7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcblNvdXJjZSBJRDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoc291cmNl
SUQpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJTb3VyY2Ugc2l0ZTogIiwgc291cmNlU2l0ZURvbWFp
biwgIlxuQXR0cmlidXRlIG9uIHNpdGU6ICIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiwgIlxuU291
cmNlIElEOiAiLCBzb3VyY2VJRCk7CiAKICAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7CiAgICAgICAg
IGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDMp
OwpAQCAtMzQyMywxMSArMzQxNyw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyhXZWJDb3JlOjpTUUxpdGVTCiAgICAgICAg
IGF1dG8gZWFybGllc3RUaW1lVG9TZW5kID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNik7CiAK
ICAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpIHsKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSk7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuQXR0cmlidXRpb24gcHJpb3Jp
dHk6ICIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocHJpb3JpdHkpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbkF0dHJpYnV0aW9uIGVhcmxpZXN0IHRp
bWUgdG8gc2VuZDogIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5BdHRyaWJ1dGlv
biB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsICJcbkF0dHJpYnV0aW9u
IHByaW9yaXR5OiAiLCBwcmlvcml0eSwgIlxuQXR0cmlidXRpb24gZWFybGllc3QgdGltZSB0byBz
ZW5kOiAiKTsKICAgICAgICAgICAgIGlmIChlYXJsaWVzdFRpbWVUb1NlbmQgPT0gLTEpCiAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJOb3Qgc2V0Iik7CiAgICAgICAgICAg
ICBlbHNlIHsKQEAgLTM0NjYsMTMgKzM0NTYsOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAgICBpZiAoIXVuYXR0cmlidXRl
ZE51bWJlcikKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVW5hdHRyaWJ1dGVk
IFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOlxuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcigrK3VuYXR0cmlidXRlZE51bWJlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlvblRvU3RyaW5nKHVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6Iik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcbldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIs
ICsrdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAorICAgICAgICAgICAgYXR0cmlidXRpb25Ub1N0
cmluZyh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpKTsKICAgICB9CiAKICAgICBhdXRv
IGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9hbGxB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdGF0ZW1lbnQsIGFsbEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0
cmluZyJfcyk7CkBAIC0zNDg0LDE2ICszNDcwLDE0IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpCiAK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVkTnVtYmVyID0gMDsKICAgICB3aGlsZSAoYXR0cmlidXRl
ZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaWYgKHVu
YXR0cmlidXRlZE51bWJlcikKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAg
ICAgICBpZiAoIWF0dHJpYnV0ZWROdW1iZXIpCisgICAgICAgIGlmICghYXR0cmlidXRlZE51bWJl
cikgeworICAgICAgICAgICAgaWYgKHVuYXR0cmlidXRlZE51bWJlcikKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czpcbiIpOwotICAgICAgICBl
bHNlCisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKCsrYXR0cmlidXRlZE51bWJl
ciArIHVuYXR0cmlidXRlZE51bWJlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGlvblRvU3RyaW5nKGF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpBdHRyaWJ1dGVkKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCAiLCArK2F0dHJpYnV0ZWROdW1iZXIgKyB1bmF0dHJpYnV0ZWROdW1i
ZXIsICdcbicsCisgICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKGF0dHJpYnV0ZWRTY29w
ZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
OjpBdHRyaWJ1dGVkKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCmluZGV4IDg3ZTZlZWIz
YTk0MzFlNWM1NzI3ZmE1MjViNzFmZDc1NmViY2VhYTEuLjVjODgxN2U3NGJhNjAxM2ZhYzJjNzEz
YmYzN2FiN2VkOTMzZDBjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBs
ZXIuY3BwCkBAIC0xNzIsMTEgKzE3Miw5IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5k
Q3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhCiAgICAg
aWYgKCFtZW1vcnlTdGF0cy52YWx1ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHN0YXRTdHJpbmcu
YXBwZW5kKHNlcGFyYXRvcik7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVtb3J5
U3RhdHMudmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVu
ZCgnXG4nKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kKHNlcGFyYXRvcik7Ci0gICAg
ICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZChtZW1vcnlTdGF0cy5rZXlzW2ldKTsKKyAgICAgICAg
ICAgIHN0YXRTdHJpbmcuYXBwZW5kKCdcbicsIHNlcGFyYXRvciwgbWVtb3J5U3RhdHMua2V5c1tp
XSk7CiAgICAgICAgICAgICBhcHBlbmRTcGFjZXMoc3RhdFN0cmluZywgMzUgLSBtZW1vcnlTdGF0
cy5rZXlzW2ldLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHN0YXRTdHJpbmcuYXBwZW5kTnVtYmVy
KG1lbW9yeVN0YXRzLnZhbHVlc1tpXSk7CisgICAgICAgICAgICBzdGF0U3RyaW5nLmFwcGVuZCht
ZW1vcnlTdGF0cy52YWx1ZXNbaV0pOwogICAgICAgICB9CiAgICAgfQogICAgIHN0YXRTdHJpbmcu
YXBwZW5kKCdcbicpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCA5YjgwNWRhYjFlYWFkZjNlZjE1NTBjODRkYzBkOTA5Y2Q2
MzhhOGM1Li43YjI5ZDdkYmNiOWFiZTJiZWJhMDZmMjQyZmZkZDFiMmM3NGE1MGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApA
QCAtMzc3OSwxNCArMzc3OSwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNj
cmlwdENhbGxiYWNrKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB3a1NlcgogICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGlmICghZXhjZXB0aW9uRGV0YWlscy5zb3Vy
Y2VVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChleGNlcHRpb25E
ZXRhaWxzLnNvdXJjZVVSTCk7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscy5saW5l
TnVtYmVyID4gMCkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZXhjZXB0aW9uRGV0YWlscy5saW5lTnVt
YmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzLmNv
bHVtbk51bWJlciA+IDApIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGV4Y2VwdGlvbkRldGFpbHMuY29s
dW1uTnVtYmVyKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChleGNlcHRpb25EZXRh
aWxzLmxpbmVOdW1iZXIgPiAwKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jywg
ZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb25E
ZXRhaWxzLmNvbHVtbk51bWJlciA+IDApCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JzonLCBleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlcik7CiAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDU0MmRjOGM3NWI3MjZhZDAwNDIzOWFmYTYwZWFl
YWY4ZGNmYTdkN2QuLjhlN2FjN2ZjNjMzNGZlZDYzOWUxNGQxYzhkODE0N2Q4MDYzNzg1YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAt
NDg5LDE1ICs0ODksNyBAQCBjb25zdCBjaGFyKiBXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdT
dHJpbmcoKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiV2ViQmFja0ZvcndhcmRMaXN0IDB4Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQo
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSkpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyaWVzLnNp
emUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50cmllcywgaGFzIGN1cnJlbnQg
aW5kZXggIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9jdXJyZW50SW5kZXggPyAiWUVTIiA6ICJO
TyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICgiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRleCA6IDApOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKCcpJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIldlYkJhY2tGb3J3YXJkTGlzdCAw
eCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIC0gIiwgbV9lbnRy
aWVzLnNpemUoKSwgIiBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAiLCBtX2N1cnJlbnRJbmRl
eCA/ICJZRVMiIDogIk5PIiwgIiAoIiwgbV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5kZXgg
OiAwLCAnKScpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggYjNiNjNkYWNlNGI0MDdhMzkzNDE0OTNlMzYyZjI5ZTQz
NzI0YjQ2Yi4uMDdiMDdiODM1NWRmZGJjZjQ4NWNiMzNmYWIzNjk1ZTc4N2RkMTk3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtMjc0LDEzICsyNzQsOCBAQCBwcml2
YXRlOgogCiAgICAgICAgIC8vIFBvc3Qgb24gdGhlIGNvbnNvbGUgYXMgd2VsbCB0byBiZSBjb25z
aXN0ZW50IHdpdGggdGhlIGluc3BlY3Rvci4KICAgICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGVycm9yTWVzc2Fn
ZTsKLSAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJGYWlsZWQgdG8gbG9h
ZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiKTsKLSAg
ICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmROdW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSk7Ci0gICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiICgiKTsKLSAg
ICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7
Ci0gICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB3ZWJr
aXRXZWJQYWdlRGlkU2VuZENvbnNvbGVNZXNzYWdlKG1fd2ViUGFnZSwgTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLnRvU3RyaW5nKCksIDAs
IHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNw
b25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgi
LCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOworICAgICAgICAgICAgd2Via2l0V2Vi
UGFnZURpZFNlbmRDb25zb2xlTWVzc2FnZShtX3dlYlBhZ2UsIE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgMCwgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBkYzdjOWQ4YjRhNmJjNWRjYTBkNmM1
ZjU2ZDg1ODNlODExOTY1ZDkuLjQ1OTlmNTdhYmJjMDYwZjZhODg3Y2QwYzZhMWE1ZWZmMzQxOGIw
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC0xOTAsMTcgKzE5MCw5IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQSGVhZGVycyhj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgbG9uZyBsb25nJiBleHBlCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaGVhZGVyOwotICAgIGhlYWRl
ci5hcHBlbmRMaXRlcmFsKCJIVFRQICIpOwotICAgIGhlYWRlci5hcHBlbmROdW1iZXIocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgaGVhZGVyLmFwcGVuZCgnICcpOwotICAgIGhlYWRl
ci5hcHBlbmQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7Ci0gICAgaGVhZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICBmb3IgKGF1dG8mIGZpZWxkIDogcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygp
KSB7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoZmllbGQua2V5KTsKLSAgICAgICAgaGVhZGVyLmFw
cGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoZmllbGQudmFsdWUpOwot
ICAgICAgICBoZWFkZXIuYXBwZW5kKCdcbicpOwotICAgIH0KKyAgICBoZWFkZXIuYXBwZW5kKCJI
VFRQICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICcgJywgcmVzcG9uc2UuaHR0cFN0YXR1
c1RleHQoKSwgJ1xuJyk7CisgICAgZm9yIChhdXRvJiBmaWVsZCA6IHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKSkKKyAgICAgICAgaGVhZGVyLmFwcGVuZChmaWVsZC5rZXksICI6ICIsIGZpZWxk
LnZhbHVlLCAnXG4nKTsKIAogICAgIC8vIElmIHRoZSBjb250ZW50IGlzIGVuY29kZWQgKG1vc3Qg
bGlrZWx5IGNvbXByZXNzZWQpLCB0aGVuIGRvbid0IHNlbmQgaXRzIGxlbmd0aCB0byB0aGUgcGx1
Z2luLAogICAgIC8vIHdoaWNoIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZGVjb2RlZCBsZW5n
dGgsIG5vdCB5ZXQga25vd24gYXQgdGhlIG1vbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKaW5kZXggOTAwMmM5MmQ3MDQwM2RiMzU5NWYwYzE4NWQ5
NTdmMzVhMTVkODJmMy4uMTI2M2JjMGMxMWY5OGYxZGZlYzdlZjhkZjc4ZTliZGY4YmFjOTBjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTE1
MCwxMiArMTUwLDggQEAgSFJFU1VMVCBXZWJLaXRTdGF0aXN0aWNzOjpjb21DbGFzc05hbWVDb3Vu
dHMoX19kZXJlZl9vdXRfb3B0IEJTVFIqIG91dHB1dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8mIHNsb3QgOiBn
Q2xhc3NOYW1lQ291bnQoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihzbG90LnZh
bHVlKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1x0Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHNsb3Qua2V5KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAg
IGZvciAoYXV0byYgc2xvdCA6IGdDbGFzc05hbWVDb3VudCgpKQorICAgICAgICBidWlsZGVyLmFw
cGVuZChzbG90LnZhbHVlLCAnXHQnLCBzbG90LmtleSwgJ1xuJyk7CiAgICAgKm91dHB1dCA9IEJT
dHJpbmcoYnVpbGRlci50b1N0cmluZygpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc0
NjgxZDAyNzE4NzY3MzA1YjYxZGZlNjU2ZGYyMzI0ZTE2NGNlYS4uNjgxZTFiOTViN2M3NmJmN2Rh
MjZlYTIwNTE3YjZlMDIyNWJlOTc2YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA1LTEyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kTnVtYmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICBU
ZXN0IGFwcGVuZCB3aXRoIGEgbnVtYmVyIGluc3RlYWQgb2YgYXBwZW5kTnVtYmVyLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lv
bi5jcHA6CisgICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmROdW1iZXIuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHA6CisgICAgICAgIChXVFI6OmR1bXBSZXNwb25zZURlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KTogVXNlIGFwcGVuZCBpbnN0ZWFkCisgICAgICAgIG9mIGFwcGVuZE51bWJlci4K
KyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6
IFVzZSBtYWtlU3RyaW5nCisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRDYWNoZVJlc3BvbnNlKTogRGl0dG8u
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6YXR0cmlidXRlc09mRWxlbWVu
dCk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmROdW1iZXIuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSk6IERpdHRvLgor
ICAgICAgICAoV1RSOjpzdHJpbmdBdE9mZnNldCk6IERpdHRvLgorCiAyMDIxLTA1LTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFN0cmluZzo6
dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdCdWlsZGVyLmNwcAppbmRleCAzZGI2MDNiZmRiMDc5YjZlZTIwYjU0YjE0OGM2
MTljMWU4YTFiZjY5Li5iMTJiNTZkZjQyZTQ4OGVjMmY3ZjYzOTU4NjJjMzk5ZGU2ZjBiNTBhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcApA
QCAtMTIzLDcgKzEyMyw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZEludE1pbikK
IHsKICAgICBjb25zdGV4cHIgaW50IGludE1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWluKCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGludE1pbik7CisgICAgYnVpbGRlci5hcHBlbmQoaW50TWluKTsKIAogICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmluZ1N0cmVhbTsKICAgICBzdHJpbmdTdHJlYW0gPDwgaW50TWluOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA1YWU0NGQ0Njc3ZTY5MjVhNWE5NGY3OWQ2MmI5
OTlkZjgyNTQyZTJiLi40NGQwOGY4NDAyMjY0YzI3MjBlMjMwNTZmN2M1NTY5YzRjYjQ4YjIyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODgsMTUgKzg4LDkgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgc3RhdGljIGxvbmcgc2VxdWVuY2VJRCA9IDA7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIntcImlkXCI6Iik7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZE51bWJlcigr
K3NlcXVlbmNlSUQpOwotICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsXCJt
ZXRob2RcIjpcIkF1dG9tYXRpb24uIik7Ci0gICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChj
b21tYW5kKTsKLSAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIGlm
ICghcGFyYW1ldGVycy5pc051bGwoKSkgewotICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLFwicGFyYW1zXCI6Iik7Ci0gICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5h
cHBlbmQocGFyYW1ldGVycyk7Ci0gICAgICAgIH0KKyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBw
ZW5kKCJ7XCJpZFwiOiIsICsrc2VxdWVuY2VJRCwgIixcIm1ldGhvZFwiOlwiQXV0b21hdGlvbi4i
LCBjb21tYW5kLCAnIicpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaXNOdWxsKCkpCisgICAg
ICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoIixcInBhcmFtc1wiOiIsIHBhcmFtZXRlcnMp
OwogICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoJ30nKTsKICAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kTWVzc2FnZSgiU2VuZE1lc3NhZ2VUb0JhY2tlbmQiLCBnX3ZhcmlhbnRfbmV3KCIo
dHRzKSIsIG1fY29ubmVjdGlvbklELCBtX3RhcmdldC5pZCwgbWVzc2FnZUJ1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4
IDAxYTMwNDMzNmU3ZjQ1NDI4ZGM5ZmY4YzdhZjk2MWIwZmYzMjc3OTEuLmFiZDNhZmRlOTFmMDhl
ODc5NGYxMGFiZDZkMTBkYzM4OGQ0NWIyODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAg
LTQ1MCwxNiArNDUwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXNwb25zZURlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdLVVJMUmVzcG9uc2VSZWYKICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjxOU1VSTFJlc3BvbnNlICIpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdldCgp
KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGh0dHAgc3RhdHVzIGNvZGUg
Iik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoV0tVUkxSZXNwb25zZUhUVFBTdGF0
dXNDb2RlKHJlc3BvbnNlKSk7Ci0KLSAgICBpZiAoc2hvdWxkRHVtcFJlc3BvbnNlSGVhZGVycykg
ewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKEluamVjdGVkQnVuZGxlUGFnZTo6cmVzcG9uc2VIZWFk
ZXJDb3VudChyZXNwb25zZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiBoZWFkZXJzIik7Ci0gICAgfQorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI8TlNVUkxSZXNw
b25zZSAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybC5nZXQoKSksICIsIGh0dHAgc3Rh
dHVzIGNvZGUgIiwgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlKSk7CisgICAg
aWYgKHNob3VsZER1bXBSZXNwb25zZUhlYWRlcnMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsICIsIEluamVjdGVkQnVuZGxlUGFnZTo6cmVzcG9uc2VIZWFkZXJDb3VudChyZXNwb25z
ZSksICIgaGVhZGVycyIpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCc+Jyk7CiB9CiAKQEAg
LTcwNiwxOCArNjk5LDkgQEAgc3RhdGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW4KICAgICBkb3VibGUgeSA9
IG51bWVyaWNXaW5kb3dQcm9wZXJ0eShmcmFtZSwgInBhZ2VZT2Zmc2V0Iik7CiAgICAgaWYgKGZh
YnMoeCkgPD0gMC4wMDAwMDAwMSAmJiBmYWJzKHkpIDw9IDAuMDAwMDAwMDEpCiAgICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChzaG91bGRJbmNsdWRlRnJhbWVOYW1lKSB7Ci0gICAgICAgIGF1dG8g
bmFtZSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlOYW1lKGZyYW1lKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnJhbWUgJyIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh0b1dURlN0cmluZyhuYW1lKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiJyAiKTsKLSAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJzY3JvbGxlZCB0byAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcih4KTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLCcpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKHkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGlmIChzaG91bGRJ
bmNsdWRlRnJhbWVOYW1lKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiZnJhbWUgJyIs
IHRvV1RGU3RyaW5nKGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlOYW1lKGZyYW1lKSkpLCAiJyAi
KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic2Nyb2xsZWQgdG8gIiwgeCwgJywnLCB5LCAn
XG4nKTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcERlc2NlbmRhbnRGcmFtZVNjcm9sbFBvc2l0aW9u
cyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpA
QCAtOTk3LDE1ICs5ODEsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKICAgICBpZiAoaW5qZWN0
ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCiAg
ICAgICAgIGR1bXBMb2FkRXZlbnQoZnJhbWUsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSIpOwogCi0gICAgdW5zaWduZWQgcGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzID0gV0tCdW5kbGVG
cmFtZUdldFBlbmRpbmdVbmxvYWRDb3VudChmcmFtZSk7Ci0gICAgaWYgKHBlbmRpbmdGcmFtZVVu
bG9hZEV2ZW50cykgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZyYW1lVG9TdHIoZnJhbWUpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSBoYXMgIik7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTnVtYmVyKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9udW5sb2FkIGhhbmRsZXIocylcbiIpOwotICAgICAg
ICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0g
ICAgfQorICAgIGlmICh1bnNpZ25lZCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMgPSBXS0J1bmRs
ZUZyYW1lR2V0UGVuZGluZ1VubG9hZENvdW50KGZyYW1lKSkKKyAgICAgICAgaW5qZWN0ZWRCdW5k
bGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKGZyYW1lVG9TdHIoZnJhbWUpLCAiIC0gaGFzICIsIHBl
bmRpbmdGcmFtZVVubG9hZEV2ZW50cywgIiBvbnVubG9hZCBoYW5kbGVyKHMpXG4iKSk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lKQpAQCAtMTIxNiwxMCArMTE5Myw3IEBAIGJvb2wgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpzaG91bGRDYWNoZVJlc3BvbnNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVGcmFtZVJlZiwKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxk
RHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KGlkZW50aWZpZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gd2lsbENh
Y2hlUmVzcG9uc2U6IGNhbGxlZFxuIik7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
bWFrZVN0cmluZyhpZGVudGlmaWVyLCAiIC0gd2lsbENhY2hlUmVzcG9uc2U6IGNhbGxlZFxuIikp
OwogCiAgICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlIGNhY2hlIHRoZSByZXNwb25z
ZS4KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAKaW5kZXggOTU1NjFhOGVmNjA5MGMyNzFlOTYzZjkyYWFiNjY2NDQwNWEwYTUxMy4u
MDI5NDY1YTExOTc3NTUxMzI3YzgwZjdhNTUzYjA5MGY0ZmZhOWI2MyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTU2Myw4ICs1NjMsNyBAQCBTdHJp
bmcgYXR0cmlidXRlc09mRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQog
ewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKGVsZW1l
bnQtPnJvbGUoKS0+c3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1
aWxkZXIuYXBwZW5kKGVsZW1lbnQtPnJvbGUoKS0+c3RyaW5nKCksICdcbicpOwogCiAgICAgLy8g
Rm9yIHRoZSBwYXJlbnQgd2UgcHJpbnQgaXRzIHJvbGUgYW5kIGl0cyBuYW1lLCBpZiBhdmFpbGFi
bGUuCiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFBhcmVudDogIik7CkBAIC01NzMsMjkg
KzU3MiwyMSBAQCBTdHJpbmcgYXR0cmlidXRlc09mRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBlbGVtZW50KQogICAgIGlmIChhdGtQYXJlbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQocm9sZVRvU3RyaW5nKGF0a1BhcmVudCkpOwogICAgICAgICBjb25zdCBjaGFyKiBwYXJlbnRO
YW1lID0gYXRrX29iamVjdF9nZXRfbmFtZShhdGtQYXJlbnQpOwotICAgICAgICBpZiAocGFyZW50
TmFtZSAmJiBwYXJlbnROYW1lWzBdKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjogIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChwYXJlbnROYW1lKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAocGFyZW50TmFtZSAmJiBwYXJlbnROYW1lWzBdKQorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjogIiwgcGFyZW50TmFtZSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKG51bGwpIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYQ2hpbGRyZW46ICIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmNoaWxkcmVuQ291bnQoKSk7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYQ2hpbGRyZW46ICIsIGVsZW1l
bnQtPmNoaWxkcmVuQ291bnQoKSwgJ1xuJyk7CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IkFYUG9zaXRpb246ICB7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+eCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpOwotICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKGVsZW1lbnQtPnkoKSwgNiwgS2VlcFRyYWlsaW5nWmVy
b3MpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9XG4iKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiQVhQb3NpdGlvbjogIHsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihl
bGVtZW50LT54KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
IiwgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT55KCksIDYsIEtl
ZXBUcmFpbGluZ1plcm9zKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIiB9XG4iKTsKIAotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhTaXplOiB7ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+d2lkdGgoKSwgNiwgS2VlcFRy
YWlsaW5nWmVyb3MpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVp
bGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihlbGVtZW50LT5oZWln
aHQoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3MpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiB9XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhTaXplOiB7ICIsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24oZWxlbWVudC0+d2lkdGgoKSwgNiwgS2VlcFRyYWlsaW5nWmVyb3Mp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKGVsZW1lbnQtPmhlaWdodCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgfVxuIik7CiAKICAgICBTdHJpbmcgdGl0bGUgPSBlbGVtZW50LT50aXRsZSgp
LT5zdHJpbmcoKTsKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewpAQCAtNjA0LDYyICs1OTUs
MjkgQEAgU3RyaW5nIGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCog
ZWxlbWVudCkKICAgICB9CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBlbGVtZW50LT5kZXNj
cmlwdGlvbigpLT5zdHJpbmcoKTsKLSAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewot
ICAgICAgICBidWlsZGVyLmFwcGVuZChkZXNjcmlwdGlvbi51dGY4KCkuZGF0YSgpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAgIGlmICghZGVzY3JpcHRpb24uaXNF
bXB0eSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChkZXNjcmlwdGlvbi51dGY4KCkuZGF0YSgp
LCAnXG4nKTsKIAogICAgIFN0cmluZyB2YWx1ZSA9IGVsZW1lbnQtPnN0cmluZ1ZhbHVlKCktPnN0
cmluZygpOwotICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZhbHVlKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQotCi0gICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWEZvY3VzYWJsZTogIik7Ci0gICAgYnVpbGRlci5hcHBl
bmROdW1iZXIoZWxlbWVudC0+aXNGb2N1c2FibGUoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYRm9jdXNlZDogIik7Ci0gICAgYnVp
bGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNGb2N1c2VkKCkpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFNlbGVjdGFibGU6ICIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzU2VsZWN0YWJsZSgpKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhT
ZWxlY3RlZDogIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNTZWxlY3Rl
ZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiQVhNdWx0aVNlbGVjdGFibGU6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVs
ZW1lbnQtPmlzTXVsdGlTZWxlY3RhYmxlKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwot
Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWEVuYWJsZWQ6ICIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKGVsZW1lbnQtPmlzRW5hYmxlZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhFeHBhbmRlZDogIik7Ci0gICAg
YnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNFeHBhbmRlZCgpKTsKLSAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhSZXF1aXJlZDog
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC0+aXNSZXF1aXJlZCgpKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhD
aGVja2VkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LT5pc0NoZWNrZWQo
KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkp
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLCAnXG4nKTsKKworICAgIGJ1aWxkZXIuYXBw
ZW5kKCJBWEZvY3VzYWJsZTogIiwgZWxlbWVudC0+aXNGb2N1c2FibGUoKSwgJ1xuJyk7CisgICAg
YnVpbGRlci5hcHBlbmQoIkFYRm9jdXNlZDogIiwgZWxlbWVudC0+aXNGb2N1c2VkKCksICdcbicp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFNlbGVjdGFibGU6ICIsIGVsZW1lbnQtPmlzU2VsZWN0
YWJsZSgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhTZWxlY3RlZDogIiwgZWxlbWVu
dC0+aXNTZWxlY3RlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhNdWx0aVNlbGVj
dGFibGU6ICIsIGVsZW1lbnQtPmlzTXVsdGlTZWxlY3RhYmxlKCksICdcbicpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCJBWEVuYWJsZWQ6ICIsIGVsZW1lbnQtPmlzRW5hYmxlZCgpLCAnXG4nKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiQVhFeHBhbmRlZDogIiwgZWxlbWVudC0+aXNFeHBhbmRlZCgpLCAn
XG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhSZXF1aXJlZDogIiwgZWxlbWVudC0+aXNSZXF1
aXJlZCgpLCAnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhDaGVja2VkOiAiLCBlbGVtZW50
LT5pc0NoZWNrZWQoKSwgJ1xuJyk7CiAKICAgICBTdHJpbmcgdXJsID0gZWxlbWVudC0+dXJsKCkt
PnN0cmluZygpOwotICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFw
cGVuZCh1cmwpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAgaWYg
KCF1cmwuaXNFbXB0eSgpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCh1cmwsICdcbicpOwogCiAg
ICAgLy8gV2UgYXBwZW5kIHRoZSBBVEsgc3BlY2lmaWMgYXR0cmlidXRlcyBhcyBhIHNpbmdsZSBs
aW5lIGF0IHRoZSBlbmQuCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBWFBsYXRmb3JtQXR0
cmlidXRlczogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJp
bmcoZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKS5nZXQoKSwgT2JqZWN0QXR0cmlidXRlVHlw
ZSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFBsYXRmb3JtQXR0cmlidXRlczogIiwgZ2V0QXRr
QXR0cmlidXRlU2V0QXNTdHJpbmcoZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKS5nZXQoKSwg
T2JqZWN0QXR0cmlidXRlVHlwZSkpOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
IH0KQEAgLTY2NywxMiArNjI1LDggQEAgU3RyaW5nIGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gY3JlYXRlU3RyaW5nV2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50cykKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0KLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBlbGVtZW50cy5iZWdpbigpOyBpdCAhPSBlbGVtZW50cy5lbmQo
KTsgKytpdCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGVzT2ZFbGVtZW50KGNv
bnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+KGl0LT5nZXQoKSkpKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbi0tLS0tLS0tLS0tLVxuIik7Ci0gICAgfQotCisgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0
dHJpYnV0ZXNPZkVsZW1lbnQoY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4oZWxl
bWVudC5nZXQoKSkpLCAiXG4tLS0tLS0tLS0tLS1cbiIpOwogICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9
CiAKQEAgLTE3MjEsOCArMTY3NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgLy8gVGhlIGRlZmF1bHQgdGV4dCBhdHRyaWJ1dGVz
IGFwcGx5IHRvIHRoZSBlbnRpcmUgZWxlbWVudC4KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IlxuXHREZWZhdWx0IHRleHQgYXR0cmlidXRlczpcblx0XHQiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChhdHRyaWJ1dGVTZXRUb1N0cmluZyhnZXRBdHRyaWJ1dGVTZXQobV9lbGVtZW50LmdldCgpLCBU
ZXh0QXR0cmlidXRlVHlwZSksICJcblx0XHQiKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxuXHRE
ZWZhdWx0IHRleHQgYXR0cmlidXRlczpcblx0XHQiLCBhdHRyaWJ1dGVTZXRUb1N0cmluZyhnZXRB
dHRyaWJ1dGVTZXQobV9lbGVtZW50LmdldCgpLCBUZXh0QXR0cmlidXRlVHlwZSksICJcblx0XHQi
KSk7CiAKICAgICAvLyBUaGUgYXR0cmlidXRlIHJ1biBwcm92aWRlcyBhdHRyaWJ1dGVzIHNwZWNp
ZmljIHRvIHRoZSByYW5nZSBvZiB0ZXh0IGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgogICAgIEF0
a1RleHQqIHRleHQgPSBBVEtfVEVYVChtX2VsZW1lbnQuZ2V0KCkpOwpAQCAtMTczMCwxMCArMTY4
Myw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbG9j
YXRpb247IGkgPCBsb2NhdGlvbiArIGxlbmd0aDsgaSA9IGVuZCkgewogICAgICAgICBBdGtBdHRy
aWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcyh0ZXh0
LCBpLCAmc3RhcnQsICZlbmQpOwogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdWJzdHJpbmco
cmVwbGFjZUNoYXJhY3RlcnNGb3JSZXN1bHRzKGF0a190ZXh0X2dldF90ZXh0KHRleHQsIHN0YXJ0
LCBlbmQpKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5cdFJhbmdlIGF0dHJp
YnV0ZXMgZm9yICciKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Vic3RyaW5nLmdldCgpKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCInOlxuXHRcdCIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdHRyaWJ1dGVTZXQsICJcblx0XHQiKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcblx0UmFuZ2UgYXR0cmlidXRlcyBmb3IgJyIsIHN1
YnN0cmluZy5nZXQoKSwgIic6XG5cdFx0IiwgYXR0cmlidXRlU2V0VG9TdHJpbmcoYXR0cmlidXRl
U2V0LCAiXG5cdFx0IikpOwogICAgIH0KIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yMzA0LDEx
ICsyMjU0LDggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0T2Zmc2V0KFBsYXRm
b3JtVUlFbGVtZW50IGVsZW1lbnQsIEF0a1RleHRCb3VuZGEKICAgICB9CiAKICAgICBidWlsZGVy
LmFwcGVuZChhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVEtfVEVYVChlbGVtZW50Lmdl
dCgpKSwgb2Zmc2V0LCBncmFudWxhcml0eSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIiwgIiwgc3RhcnRPZmZzZXQsICIsICIsIGVuZE9mZnNldCk7CiAK
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoc3RhcnRPZmZzZXQpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihlbmRPZmZzZXQpOwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>