<?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>206157</bug_id>
          
          <creation_ts>2020-01-12 15:06:10 -0800</creation_ts>
          <short_desc>[JSC] Consistently use &quot;var&quot; in builtin JS</short_desc>
          <delta_ts>2020-01-13 11:45:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605708</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-12 15:06:10 -0800</bug_when>
    <thetext>[JSC] Consistently use &quot;var&quot; in builtin JS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605709</commentid>
    <comment_count>1</comment_count>
      <attachid>387493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-12 15:07:04 -0800</bug_when>
    <thetext>Created attachment 387493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605712</commentid>
    <comment_count>2</comment_count>
      <attachid>387494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-12 15:14:10 -0800</bug_when>
    <thetext>Created attachment 387494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605714</commentid>
    <comment_count>3</comment_count>
      <attachid>387493</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-12 15:31:28 -0800</bug_when>
    <thetext>Comment on attachment 387493
Patch

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

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:246
&gt; +                        var n = chCode - 0x30;

Is this problematic?  It overwrites they outer chCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605715</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-12 15:34:00 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 387493 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387493&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:246
&gt; &gt; +                        var n = chCode - 0x30;
&gt; 
&gt; Is this problematic?  It overwrites they outer chCode.

Nevermind.  I misread that.  It sets n, not chCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605716</commentid>
    <comment_count>5</comment_count>
      <attachid>387494</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-12 15:59:29 -0800</bug_when>
    <thetext>Comment on attachment 387494
Patch

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

r=me if EWS bots are green.  Please undo the changes in the comments.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:495
&gt; +    // 6. If flags contains &quot;u&quot;, var unicodeMatching be true.
&gt; +    // 7. Else, var unicodeMatching be false.

I think you should undo these.  The use of &quot;let&quot; here is in the English context, not the JS context.  Also, this is a mirror of the text in the spec.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:498
&gt; +    // 8. If flags contains &quot;y&quot;, var newFlags be flags.
&gt; +    // 9. Else, var newFlags be the string that is the concatenation of flags and &quot;y&quot;.

Ditto.  Please undo.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:513
&gt; +    // 13. If limit is undefined, var lim be 2^32-1; else var lim be ? ToUint32(limit).

Ditto.  Undo.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:547
&gt; +        // c. If z is null, var q be AdvanceStringIndex(S, q, unicodeMatching).

Ditto.  Undo.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:556
&gt; +            // iii. If e = p, var q be AdvanceStringIndex(S, q, unicodeMatching).

Ditto.  Undo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605724</commentid>
    <comment_count>6</comment_count>
      <attachid>387494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-12 17:15:18 -0800</bug_when>
    <thetext>Comment on attachment 387494
Patch

Thanks, fixed &quot;let&quot; =&gt; &quot;var&quot; changes in comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605725</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-12 17:18:51 -0800</bug_when>
    <thetext>Committed r254418: &lt;https://trac.webkit.org/changeset/254418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605726</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-12 17:19:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/58516383&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605969</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-01-13 11:45:12 -0800</bug_when>
    <thetext>You may want to add a style checker or something, or lexical variables will probably start creeping in again.

Also, is there a bug for WebCore&apos;s builtins? A quick search found:
• Source/WebCore/Modules/streams</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387493</attachid>
            <date>2020-01-12 15:07:04 -0800</date>
            <delta_ts>2020-01-12 15:14:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206157-20200112150703.patch</filename>
            <type>text/plain</type>
            <size>61240</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NzhiNDc1Y2RkY2VlOTkwOWQwMGU0NTE5NDc4ZDAwZjc2OGNiNGY0Li45MTIzZWVjZWQyZTExNDZm
NzU2MDBhYWYxOTU2YzgyOTBjMzNjNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMC0wMS0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENvbnNpc3RlbnRseSB1c2UgInZhciIgaW4gYnVpbHRpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGV0IC8gY29u
c3QgcmVxdWlyZXMgYWRkaXRpb25hbCBieXRlY29kZSB0byBtYWtlIGl0IEVtcHR5IGluaXRpYWxp
emVkIGZvciBub3cuCisgICAgICAgIEZvciBidWlsdGluIEpTLCB3ZSB3b3VsZCBsaWtlIHRvIGtl
ZXAgaXQgYXMgZWZmaWNpZW50IGFuZCBjb21wYWN0IGFzIHdlIGNhbgorICAgICAgICBzbyB3ZSBz
aG91bGQgdXNlIGB2YXJgIGNvbnNpc3RlbnRseS4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzOgorICAgICAgICAoc29ydC5zdHJpbmdDb21wYXJhdG9yKToKKyAgICAgICAg
KHNvcnQuY29tcGFjdFNwYXJzZSk6CisgICAgICAgIChzb3J0LmNvbXBhY3RTbG93KToKKyAgICAg
ICAgKHNvcnQuY29tcGFjdCk6CisgICAgICAgIChzb3J0Lm1lcmdlKToKKyAgICAgICAgKHNvcnQu
bWVyZ2VTb3J0KToKKyAgICAgICAgKHNvcnQuYnVja2V0U29ydCk6CisgICAgICAgIChzb3J0LmNv
bXBhcmF0b3JTb3J0KToKKyAgICAgICAgKHNvcnQuc3RyaW5nU29ydCk6CisgICAgICAgIChzb3J0
KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuY29uY2F0U2xvd1BhdGgpOgorICAgICAgICAoY29u
Y2F0KToKKyAgICAgICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAg
KGNhbGwpOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3lt
Ym9sSGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJ1aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllcyk6CisgICAgICAgIChn
bG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucyk6CisgICAgICAgICog
YnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzOgorICAgICAgICAocGVyZm9ybUl0ZXJhdGlvbik6
CisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzOgorICAgICAgICAoYXN5bmMgbG9h
ZE1vZHVsZSk6CisgICAgICAgIChhc3luYyBsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAg
ICAoYXN5bmMgcmVxdWVzdEltcG9ydE1vZHVsZSk6CisgICAgICAgIChkZXBlbmRlbmN5S2V5c0lm
RXZhbHVhdGVkKToKKyAgICAgICAgKiBidWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qczoKKyAg
ICAgICAgKGZyb21FbnRyaWVzKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlUHJvdG90eXBl
LmpzOgorICAgICAgICAoZmluYWxseSk6CisgICAgICAgICh2YWx1ZVRodW5rKToKKyAgICAgICAg
KGdsb2JhbFByaXZhdGUuZ2V0VGhlbkZpbmFsbHkpOgorICAgICAgICAodGhyb3dlcik6CisgICAg
ICAgIChnbG9iYWxQcml2YXRlLmdldENhdGNoRmluYWxseSk6CisgICAgICAgIChjb25zdC52YWx1
ZVRodW5rKTogRGVsZXRlZC4KKyAgICAgICAgKGNvbnN0LnRocm93ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZh
dGUuYWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUucmVnRXhwRXhl
Yyk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJl
Z0V4cE1hdGNoKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWF0Y2hTbG93KToKKyAgICAgICAg
KG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLm1hdGNoKToKKyAgICAgICAgKG92
ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLm1hdGNoQWxsKToKKyAgICAgICAgKGdl
dFN1YnN0aXR1dGlvbik6CisgICAgICAgIChvdmVycmlkZGVuTmFtZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5yZXBsYWNlKToKKyAgICAgICAgKG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnNlYXJjaCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmhhc09ic2VydmFibGVTaWRlRWZm
ZWN0c0ZvclJlZ0V4cFNwbGl0KToKKyAgICAgICAgKG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnNwbGl0KToKKyAgICAgICAgKGludHJpbnNpYy5SZWdFeHBUZXN0SW50cmluc2lj
LnRlc3QpOgorICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAobmV4dCk6CisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBl
LmpzOgorICAgICAgICAobWF0Y2gpOgorICAgICAgICAobWF0Y2hBbGwpOgorICAgICAgICAoZ2xv
YmFsUHJpdmF0ZS5oYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKToKKyAg
ICAgICAgKGludHJpbnNpYy5TdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljLnJlcGxhY2Up
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jcmVhdGVIVE1MKToKKyAgICAgICAgKiBidWlsdGlu
cy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanM6CisgICAgICAgIChvZik6CisgICAgICAgIChmcm9t
KToKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOgorICAgICAgICAo
Z2xvYmFsUHJpdmF0ZS50eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKGds
b2JhbFByaXZhdGUudHlwZWRBcnJheUNsYW1wQXJndW1lbnRUb1N0YXJ0T3JFbmQpOgorICAgICAg
ICAoZmlsbCk6CisgICAgICAgIChmaW5kKToKKyAgICAgICAgKHN1YmFycmF5KToKKwogMjAyMC0w
MS0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJD
b3JlXSBSZW9yZ2FuaXplIEpTVHlwZSBpbiBXZWJDb3JlIHRvIG9mZmVyIG1vcmUgYml0cyB0byBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3Rv
dHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5q
cwppbmRleCBkOTBjN2ExMDkwNjljNTQzMzc1MTQ3MjI3ZmJjZDg0OWRhODExMGFjLi40OGY2YzNl
ODkzOTQ3YmQ3YTRjN2ExZGI4NWMyYjk5ZWE5YjBjNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC0zMTcsMTYgKzMxNywxNiBA
QCBmdW5jdGlvbiBtaW4oYSwgYikKIAogICAgIGZ1bmN0aW9uIHN0cmluZ0NvbXBhcmF0b3IoYSwg
YikKICAgICB7Ci0gICAgICAgIGxldCBhU3RyaW5nID0gYS5zdHJpbmc7Ci0gICAgICAgIGxldCBi
U3RyaW5nID0gYi5zdHJpbmc7CisgICAgICAgIHZhciBhU3RyaW5nID0gYS5zdHJpbmc7CisgICAg
ICAgIHZhciBiU3RyaW5nID0gYi5zdHJpbmc7CiAKLSAgICAgICAgbGV0IGFMZW5ndGggPSBhU3Ry
aW5nLmxlbmd0aDsKLSAgICAgICAgbGV0IGJMZW5ndGggPSBiU3RyaW5nLmxlbmd0aDsKLSAgICAg
ICAgbGV0IGxlbmd0aCA9IG1pbihhTGVuZ3RoLCBiTGVuZ3RoKTsKKyAgICAgICAgdmFyIGFMZW5n
dGggPSBhU3RyaW5nLmxlbmd0aDsKKyAgICAgICAgdmFyIGJMZW5ndGggPSBiU3RyaW5nLmxlbmd0
aDsKKyAgICAgICAgdmFyIGxlbmd0aCA9IG1pbihhTGVuZ3RoLCBiTGVuZ3RoKTsKIAotICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBsZXQgYUNo
YXJDb2RlID0gYVN0cmluZy5AY2hhckNvZGVBdChpKTsKLSAgICAgICAgICAgIGxldCBiQ2hhckNv
ZGUgPSBiU3RyaW5nLkBjaGFyQ29kZUF0KGkpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgYUNoYXJDb2RlID0gYVN0cmluZy5AY2hh
ckNvZGVBdChpKTsKKyAgICAgICAgICAgIHZhciBiQ2hhckNvZGUgPSBiU3RyaW5nLkBjaGFyQ29k
ZUF0KGkpOwogCiAgICAgICAgICAgICBpZiAoYUNoYXJDb2RlID09IGJDaGFyQ29kZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTM0MCwyNSArMzQwLDI1IEBAIGZ1bmN0aW9uIHN0cmlu
Z0NvbXBhcmF0b3IoYSwgYikKICAgICAvLyBNb3ZlIHVuZGVmaW5lZHMgYW5kIGhvbGVzIHRvIHRo
ZSBlbmQgb2YgYSBzcGFyc2UgYXJyYXkuIFJlc3VsdCBpcyBbdmFsdWVzLi4uLCB1bmRlZmluZWRz
Li4uLCBob2xlcy4uLl0uCiAgICAgZnVuY3Rpb24gY29tcGFjdFNwYXJzZShhcnJheSwgZHN0LCBz
cmMsIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIGxldCB2YWx1ZXMgPSBbIF07Ci0gICAgICAgIGxl
dCBzZWVuID0geyB9OwotICAgICAgICBsZXQgdmFsdWVDb3VudCA9IDA7Ci0gICAgICAgIGxldCB1
bmRlZmluZWRDb3VudCA9IDA7CisgICAgICAgIHZhciB2YWx1ZXMgPSBbIF07CisgICAgICAgIHZh
ciBzZWVuID0geyB9OworICAgICAgICB2YXIgdmFsdWVDb3VudCA9IDA7CisgICAgICAgIHZhciB1
bmRlZmluZWRDb3VudCA9IDA7CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgYWZ0ZXIgdGhlIGluLXBy
b2dyZXNzIG5vbi1zcGFyc2UgY29tcGFjdGlvbiB0aGF0IGZhaWxlZC4KLSAgICAgICAgZm9yIChs
ZXQgaSA9IGRzdDsgaSA8IHNyYzsgKytpKQorICAgICAgICBmb3IgKHZhciBpID0gZHN0OyBpIDwg
c3JjOyArK2kpCiAgICAgICAgICAgICBkZWxldGUgYXJyYXlbaV07CiAKLSAgICAgICAgZm9yIChs
ZXQgb2JqZWN0ID0gYXJyYXk7IG9iamVjdDsgb2JqZWN0ID0gQE9iamVjdC5AZ2V0UHJvdG90eXBl
T2Yob2JqZWN0KSkgewotICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBsZXQgaW5k
ZXggPSBwcm9wZXJ0eU5hbWVzW2ldOworICAgICAgICBmb3IgKHZhciBvYmplY3QgPSBhcnJheTsg
b2JqZWN0OyBvYmplY3QgPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVPZihvYmplY3QpKSB7CisgICAg
ICAgICAgICB2YXIgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHByb3BlcnR5TmFtZXNb
aV07CiAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7IC8vIEV4Y2x1ZGUgbm9u
LW51bWVyaWMgcHJvcGVydGllcyBhbmQgcHJvcGVydGllcyBwYXN0IGxlbmd0aC4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNlZW5baW5kZXhdKSAvLyBFeGNsdWRlIGR1cGxpY2F0ZXMuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgc2Vlbltp
bmRleF0gPSAxOwogCi0gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGFycmF5W2luZGV4
XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdOwogICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgYXJyYXlbaW5kZXhdOwogCiAgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSA9PT0gQHVuZGVmaW5lZCkgewpAQCAtMzcxLDcgKzM3MSw3IEBAIGZ1bmN0aW9u
IGNvbXBhY3RTcGFyc2UoYXJyYXksIGRzdCwgc3JjLCBsZW5ndGgpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGxldCBpID0gdmFsdWVDb3VudDsgaSA8IHZhbHVlQ291
bnQgKyB1bmRlZmluZWRDb3VudDsgKytpKQorICAgICAgICBmb3IgKHZhciBpID0gdmFsdWVDb3Vu
dDsgaSA8IHZhbHVlQ291bnQgKyB1bmRlZmluZWRDb3VudDsgKytpKQogICAgICAgICAgICAgYXJy
YXlbaV0gPSBAdW5kZWZpbmVkOwogCiAgICAgICAgIHJldHVybiB2YWx1ZUNvdW50OwpAQCAtMzc5
LDEwICszNzksMTAgQEAgZnVuY3Rpb24gY29tcGFjdFNwYXJzZShhcnJheSwgZHN0LCBzcmMsIGxl
bmd0aCkKIAogICAgIGZ1bmN0aW9uIGNvbXBhY3RTbG93KGFycmF5LCBsZW5ndGgpCiAgICAgewot
ICAgICAgICBsZXQgaG9sZUNvdW50ID0gMDsKKyAgICAgICAgdmFyIGhvbGVDb3VudCA9IDA7CiAK
LSAgICAgICAgbGV0IGRzdCA9IDA7Ci0gICAgICAgIGxldCBzcmMgPSAwOworICAgICAgICB2YXIg
ZHN0ID0gMDsKKyAgICAgICAgdmFyIHNyYyA9IDA7CiAgICAgICAgIGZvciAoOyBzcmMgPCBsZW5n
dGg7ICsrc3JjKSB7CiAgICAgICAgICAgICBpZiAoIShzcmMgaW4gYXJyYXkpKSB7CiAgICAgICAg
ICAgICAgICAgKytob2xlQ291bnQ7CkBAIC0zOTEsMjAgKzM5MSwyMCBAQCBmdW5jdGlvbiBjb21w
YWN0U2xvdyhhcnJheSwgbGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBjb21wYWN0U3Bh
cnNlKGFycmF5LCBkc3QsIHNyYywgbGVuZ3RoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgbGV0IHZhbHVlID0gYXJyYXlbc3JjXTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5
W3NyY107CiAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEB1bmRlZmluZWQpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGFycmF5W2RzdCsrXSA9IHZhbHVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgbGV0IHZhbHVlQ291bnQgPSBkc3Q7Ci0gICAgICAgIGxldCB1bmRl
ZmluZWRDb3VudCA9IGxlbmd0aCAtIHZhbHVlQ291bnQgLSBob2xlQ291bnQ7CisgICAgICAgIHZh
ciB2YWx1ZUNvdW50ID0gZHN0OworICAgICAgICB2YXIgdW5kZWZpbmVkQ291bnQgPSBsZW5ndGgg
LSB2YWx1ZUNvdW50IC0gaG9sZUNvdW50OwogCi0gICAgICAgIGZvciAobGV0IGkgPSB2YWx1ZUNv
dW50OyBpIDwgdmFsdWVDb3VudCArIHVuZGVmaW5lZENvdW50OyArK2kpCisgICAgICAgIGZvciAo
dmFyIGkgPSB2YWx1ZUNvdW50OyBpIDwgdmFsdWVDb3VudCArIHVuZGVmaW5lZENvdW50OyArK2kp
CiAgICAgICAgICAgICBhcnJheVtpXSA9IEB1bmRlZmluZWQ7CiAKLSAgICAgICAgZm9yIChsZXQg
aSA9IHZhbHVlQ291bnQgKyB1bmRlZmluZWRDb3VudDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAg
ICBmb3IgKHZhciBpID0gdmFsdWVDb3VudCArIHVuZGVmaW5lZENvdW50OyBpIDwgbGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICBkZWxldGUgYXJyYXlbaV07CiAKICAgICAgICAgcmV0dXJuIHZhbHVl
Q291bnQ7CkBAIC00MTMsNyArNDEzLDcgQEAgZnVuY3Rpb24gY29tcGFjdFNsb3coYXJyYXksIGxl
bmd0aCkKICAgICAvLyBNb3ZlIHVuZGVmaW5lZHMgYW5kIGhvbGVzIHRvIHRoZSBlbmQgb2YgYW4g
YXJyYXkuIFJlc3VsdCBpcyBbdmFsdWVzLi4uLCB1bmRlZmluZWRzLi4uLCBob2xlcy4uLl0uCiAg
ICAgZnVuY3Rpb24gY29tcGFjdChhcnJheSwgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYXJyYXlbaV0gPT09
IEB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhY3RTbG93KGFycmF5LCBs
ZW5ndGgpOwogICAgICAgICB9CkBAIC00MjMsMTkgKzQyMywxOSBAQCBmdW5jdGlvbiBjb21wYWN0
KGFycmF5LCBsZW5ndGgpCiAKICAgICBmdW5jdGlvbiBtZXJnZShkc3QsIHNyYywgc3JjSW5kZXgs
IHNyY0VuZCwgd2lkdGgsIGNvbXBhcmF0b3IpCiAgICAgewotICAgICAgICBsZXQgbGVmdCA9IHNy
Y0luZGV4OwotICAgICAgICBsZXQgbGVmdEVuZCA9IG1pbihsZWZ0ICsgd2lkdGgsIHNyY0VuZCk7
Ci0gICAgICAgIGxldCByaWdodCA9IGxlZnRFbmQ7Ci0gICAgICAgIGxldCByaWdodEVuZCA9IG1p
bihyaWdodCArIHdpZHRoLCBzcmNFbmQpOworICAgICAgICB2YXIgbGVmdCA9IHNyY0luZGV4Owor
ICAgICAgICB2YXIgbGVmdEVuZCA9IG1pbihsZWZ0ICsgd2lkdGgsIHNyY0VuZCk7CisgICAgICAg
IHZhciByaWdodCA9IGxlZnRFbmQ7CisgICAgICAgIHZhciByaWdodEVuZCA9IG1pbihyaWdodCAr
IHdpZHRoLCBzcmNFbmQpOwogCi0gICAgICAgIGZvciAobGV0IGRzdEluZGV4ID0gbGVmdDsgZHN0
SW5kZXggPCByaWdodEVuZDsgKytkc3RJbmRleCkgeworICAgICAgICBmb3IgKHZhciBkc3RJbmRl
eCA9IGxlZnQ7IGRzdEluZGV4IDwgcmlnaHRFbmQ7ICsrZHN0SW5kZXgpIHsKICAgICAgICAgICAg
IGlmIChyaWdodCA8IHJpZ2h0RW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQgPj0gbGVm
dEVuZCkgewogICAgICAgICAgICAgICAgICAgICBkc3RbZHN0SW5kZXhdID0gc3JjW3JpZ2h0Kytd
OwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBsZXQgY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmF0b3Ioc3JjW3JpZ2h0
XSwgc3JjW2xlZnRdKTsKKyAgICAgICAgICAgICAgICB2YXIgY29tcGFyaXNvblJlc3VsdCA9IGNv
bXBhcmF0b3Ioc3JjW3JpZ2h0XSwgc3JjW2xlZnRdKTsKICAgICAgICAgICAgICAgICBpZiAoKHR5
cGVvZiBjb21wYXJpc29uUmVzdWx0ID09PSAiYm9vbGVhbiIgJiYgIWNvbXBhcmlzb25SZXN1bHQp
IHx8IGNvbXBhcmlzb25SZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtkc3RJ
bmRleF0gPSBzcmNbcmlnaHQrK107CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NDQ5LDIyICs0NDksMjIgQEAgZnVuY3Rpb24gbWVyZ2UoZHN0LCBzcmMsIHNyY0luZGV4LCBzcmNF
bmQsIHdpZHRoLCBjb21wYXJhdG9yKQogCiAgICAgZnVuY3Rpb24gbWVyZ2VTb3J0KGFycmF5LCB2
YWx1ZUNvdW50LCBjb21wYXJhdG9yKQogICAgIHsKLSAgICAgICAgbGV0IGJ1ZmZlciA9IFsgXTsK
KyAgICAgICAgdmFyIGJ1ZmZlciA9IFsgXTsKICAgICAgICAgYnVmZmVyLmxlbmd0aCA9IHZhbHVl
Q291bnQ7CiAKLSAgICAgICAgbGV0IGRzdCA9IGJ1ZmZlcjsKLSAgICAgICAgbGV0IHNyYyA9IGFy
cmF5OwotICAgICAgICBmb3IgKGxldCB3aWR0aCA9IDE7IHdpZHRoIDwgdmFsdWVDb3VudDsgd2lk
dGggKj0gMikgewotICAgICAgICAgICAgZm9yIChsZXQgc3JjSW5kZXggPSAwOyBzcmNJbmRleCA8
IHZhbHVlQ291bnQ7IHNyY0luZGV4ICs9IDIgKiB3aWR0aCkKKyAgICAgICAgdmFyIGRzdCA9IGJ1
ZmZlcjsKKyAgICAgICAgdmFyIHNyYyA9IGFycmF5OworICAgICAgICBmb3IgKHZhciB3aWR0aCA9
IDE7IHdpZHRoIDwgdmFsdWVDb3VudDsgd2lkdGggKj0gMikgeworICAgICAgICAgICAgZm9yICh2
YXIgc3JjSW5kZXggPSAwOyBzcmNJbmRleCA8IHZhbHVlQ291bnQ7IHNyY0luZGV4ICs9IDIgKiB3
aWR0aCkKICAgICAgICAgICAgICAgICBtZXJnZShkc3QsIHNyYywgc3JjSW5kZXgsIHZhbHVlQ291
bnQsIHdpZHRoLCBjb21wYXJhdG9yKTsKIAotICAgICAgICAgICAgbGV0IHRtcCA9IHNyYzsKKyAg
ICAgICAgICAgIHZhciB0bXAgPSBzcmM7CiAgICAgICAgICAgICBzcmMgPSBkc3Q7CiAgICAgICAg
ICAgICBkc3QgPSB0bXA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc3JjICE9IGFycmF5KSB7
Ci0gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdmFsdWVDb3VudDsgaSsrKQorICAgICAg
ICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHZhbHVlQ291bnQ7IGkrKykKICAgICAgICAgICAgICAg
ICBhcnJheVtpXSA9IHNyY1tpXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ3MywyNyArNDczLDI3
IEBAIGZ1bmN0aW9uIGJ1Y2tldFNvcnQoYXJyYXksIGRzdCwgYnVja2V0LCBkZXB0aCkKICAgICB7
CiAgICAgICAgIGlmIChidWNrZXQubGVuZ3RoIDwgMzIgfHwgZGVwdGggPiAzMikgewogICAgICAg
ICAgICAgbWVyZ2VTb3J0KGJ1Y2tldCwgYnVja2V0Lmxlbmd0aCwgc3RyaW5nQ29tcGFyYXRvcik7
Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1Y2tldC5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVja2V0Lmxlbmd0aDsgKytpKQogICAgICAg
ICAgICAgICAgIGFycmF5W2RzdCsrXSA9IGJ1Y2tldFtpXS52YWx1ZTsKICAgICAgICAgICAgIHJl
dHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgYnVja2V0cyA9IFsgXTsKLSAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWNrZXQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IGxldCBlbnRyeSA9IGJ1Y2tldFtpXTsKLSAgICAgICAgICAgIGxldCBzdHJpbmcgPSBlbnRyeS5z
dHJpbmc7CisgICAgICAgIHZhciBidWNrZXRzID0gWyBdOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGJ1Y2tldC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGVudHJ5ID0gYnVj
a2V0W2ldOworICAgICAgICAgICAgdmFyIHN0cmluZyA9IGVudHJ5LnN0cmluZzsKICAgICAgICAg
ICAgIGlmIChzdHJpbmcubGVuZ3RoID09IGRlcHRoKSB7CiAgICAgICAgICAgICAgICAgYXJyYXlb
ZHN0KytdID0gZW50cnkudmFsdWU7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGxldCBjID0gc3RyaW5nLkBjaGFyQ29kZUF0KGRlcHRoKTsK
KyAgICAgICAgICAgIHZhciBjID0gc3RyaW5nLkBjaGFyQ29kZUF0KGRlcHRoKTsKICAgICAgICAg
ICAgIGlmICghYnVja2V0c1tjXSkKICAgICAgICAgICAgICAgICBidWNrZXRzW2NdID0gWyBdOwog
ICAgICAgICAgICAgYnVja2V0c1tjXVtidWNrZXRzW2NdLmxlbmd0aF0gPSBlbnRyeTsKICAgICAg
ICAgfQogCi0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVja2V0cy5sZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Y2tldHMubGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIGlmICghYnVja2V0c1tpXSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGRzdCA9IGJ1Y2tldFNvcnQoYXJyYXksIGRzdCwgYnVja2V0c1tpXSwgZGVwdGgg
KyAxKTsKQEAgLTUwNCwyMiArNTA0LDIyIEBAIGZ1bmN0aW9uIGJ1Y2tldFNvcnQoYXJyYXksIGRz
dCwgYnVja2V0LCBkZXB0aCkKIAogICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3JTb3J0KGFycmF5LCBs
ZW5ndGgsIGNvbXBhcmF0b3IpCiAgICAgewotICAgICAgICBsZXQgdmFsdWVDb3VudCA9IGNvbXBh
Y3QoYXJyYXksIGxlbmd0aCk7CisgICAgICAgIHZhciB2YWx1ZUNvdW50ID0gY29tcGFjdChhcnJh
eSwgbGVuZ3RoKTsKICAgICAgICAgbWVyZ2VTb3J0KGFycmF5LCB2YWx1ZUNvdW50LCBjb21wYXJh
dG9yKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdHJpbmdTb3J0KGFycmF5LCBsZW5ndGgpCiAg
ICAgewotICAgICAgICBsZXQgdmFsdWVDb3VudCA9IGNvbXBhY3QoYXJyYXksIGxlbmd0aCk7Cisg
ICAgICAgIHZhciB2YWx1ZUNvdW50ID0gY29tcGFjdChhcnJheSwgbGVuZ3RoKTsKIAotICAgICAg
ICBsZXQgc3RyaW5ncyA9IEBuZXdBcnJheVdpdGhTaXplKHZhbHVlQ291bnQpOwotICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHZhbHVlQ291bnQ7ICsraSkKKyAgICAgICAgdmFyIHN0cmluZ3Mg
PSBAbmV3QXJyYXlXaXRoU2l6ZSh2YWx1ZUNvdW50KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB2YWx1ZUNvdW50OyArK2kpCiAgICAgICAgICAgICBzdHJpbmdzW2ldID0geyBzdHJpbmc6
IEB0b1N0cmluZyhhcnJheVtpXSksIHZhbHVlOiBhcnJheVtpXSB9OwogCiAgICAgICAgIGJ1Y2tl
dFNvcnQoYXJyYXksIDAsIHN0cmluZ3MsIDApOwogICAgIH0KIAotICAgIGxldCBzb3J0RnVuY3Rp
b247CisgICAgdmFyIHNvcnRGdW5jdGlvbjsKICAgICBpZiAodHlwZW9mIGNvbXBhcmF0b3IgPT0g
ImZ1bmN0aW9uIikKICAgICAgICAgc29ydEZ1bmN0aW9uID0gY29tcGFyYXRvclNvcnQ7CiAgICAg
ZWxzZSBpZiAoY29tcGFyYXRvciA9PT0gQHVuZGVmaW5lZCkKQEAgLTUyNyw5ICs1MjcsOSBAQCBl
bHNlIGlmIChjb21wYXJhdG9yID09PSBAdW5kZWZpbmVkKQogICAgIGVsc2UKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGUgY29tcGFyc2lv
biBmdW5jdGlvbiBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgbGV0IGFycmF5
ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmpl
Y3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgbGV0IGxlbmd0aCA9IEB0b0xlbmd0aChhcnJh
eS5sZW5ndGgpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAog
ICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggRmlyZWZveCBhbmQgQ2hyb21lLCBkbyBub3Ro
aW5nIG9ic2VydmFibGUKICAgICAvLyB0byB0aGUgdGFyZ2V0IGFycmF5IGlmIGl0IGhhcyAwIG9y
IDEgc29ydGFibGUgcHJvcGVydGllcy4KQEAgLTU1NSw5ICs1NTUsOSBAQCBmdW5jdGlvbiBjb25j
YXRTbG93UGF0aCgpCiAgICAgdmFyIGFyZ0luZGV4ID0gMDsKIAogICAgIGRvIHsKLSAgICAgICAg
bGV0IHNwcmVhZGFibGUgPSBAaXNPYmplY3QoY3VycmVudEVsZW1lbnQpICYmIGN1cnJlbnRFbGVt
ZW50LkBpc0NvbmNhdFNwcmVhZGFibGVTeW1ib2w7CisgICAgICAgIHZhciBzcHJlYWRhYmxlID0g
QGlzT2JqZWN0KGN1cnJlbnRFbGVtZW50KSAmJiBjdXJyZW50RWxlbWVudC5AaXNDb25jYXRTcHJl
YWRhYmxlU3ltYm9sOwogICAgICAgICBpZiAoKHNwcmVhZGFibGUgPT09IEB1bmRlZmluZWQgJiYg
QGlzQXJyYXkoY3VycmVudEVsZW1lbnQpKSB8fCBzcHJlYWRhYmxlKSB7Ci0gICAgICAgICAgICBs
ZXQgbGVuZ3RoID0gQHRvTGVuZ3RoKGN1cnJlbnRFbGVtZW50Lmxlbmd0aCk7CisgICAgICAgICAg
ICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGN1cnJlbnRFbGVtZW50Lmxlbmd0aCk7CiAgICAgICAg
ICAgICBpZiAobGVuZ3RoICsgcmVzdWx0SW5kZXggPiBATUFYX0FSUkFZX0lOREVYKQogICAgICAg
ICAgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkxlbmd0aCBleGNlZWRlZCB0aGUgbWF4aW11bSBh
cnJheSBsZW5ndGgiKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRJc0FycmF5ICYmIEBpc0pTQXJy
YXkoY3VycmVudEVsZW1lbnQpKSB7CkBAIC01OTEsNyArNTkxLDcgQEAgZnVuY3Rpb24gY29uY2F0
KGZpcnN0KQogICAgICAgICAmJiB0aGlzLkBpc0NvbmNhdFNwcmVhZGFibGVTeW1ib2wgPT09IEB1
bmRlZmluZWQKICAgICAgICAgJiYgKCFAaXNPYmplY3QoZmlyc3QpIHx8ICghQGlzUHJveHlPYmpl
Y3QoZmlyc3QpICYmIGZpcnN0LkBpc0NvbmNhdFNwcmVhZGFibGVTeW1ib2wgPT09IEB1bmRlZmlu
ZWQpKSkgewogCi0gICAgICAgIGxldCByZXN1bHQgPSBAY29uY2F0TWVtY3B5KHRoaXMsIGZpcnN0
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IEBjb25jYXRNZW1jcHkodGhpcywgZmlyc3QpOwogICAg
ICAgICBpZiAocmVzdWx0ICE9PSBudWxsKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Q
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90
b3R5cGUuanMKaW5kZXggZjU5MzUyN2RjM2M0N2IzYWExNmRjMzA3ZmYwYWRjNTNjNWY3NTNiNC4u
ZTIyZTY1NWM3ZTk3YjAzNjdlODQ5MmJlYzIxNTdiNWI2MzdkYTEzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMjcs
OSArMjcsOSBAQCBmdW5jdGlvbiBjYWxsKHRoaXNBcmd1bWVudCkKIHsKICAgICAidXNlIHN0cmlj
dCI7CiAKLSAgICBsZXQgYXJndW1lbnRWYWx1ZXMgPSBbXTsKKyAgICB2YXIgYXJndW1lbnRWYWx1
ZXMgPSBbXTsKICAgICAvLyBTdGFydCBmcm9tIDEgdG8gaWdub3JlIHRoaXNBcmd1bWVudAotICAg
IGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQogICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoYXJndW1lbnRWYWx1ZXMsIGktMSwgYXJndW1lbnRzW2ldKTsKIAogICAgIHJldHVybiB0aGlz
LkBhcHBseSh0aGlzQXJndW1lbnQsIGFyZ3VtZW50VmFsdWVzKTsKQEAgLTUzLDcgKzUzLDcgQEAg
ZnVuY3Rpb24gc3ltYm9sSGFzSW5zdGFuY2UodmFsdWUpCiAgICAgaWYgKEBpc0JvdW5kRnVuY3Rp
b24odGhpcykpCiAgICAgICAgIHJldHVybiBAaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKHRoaXMs
IHZhbHVlKTsKIAotICAgIGxldCB0YXJnZXQgPSB0aGlzLnByb3RvdHlwZTsKKyAgICB2YXIgdGFy
Z2V0ID0gdGhpcy5wcm90b3R5cGU7CiAgICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJn
ZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xv
YmFsT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxP
cGVyYXRpb25zLmpzCmluZGV4IDk3MzdiYjc4ZTJjZWFiYjFkNzYyMjcxNTBkYmY4OTdhM2NlZTQx
NmMuLjU4YzE5YjM4MjgzMjhjM2JjMzU3ZjVlYjc5NTM1NTQyNTc1ZDUwYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCkBAIC05
NSwxNCArOTUsMTQgQEAgZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVzKHRhcmdldCwgc291cmNl
LCBleGNsdWRlZFNldCkKICAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKHNvdXJjZSkpCiAgICAg
ICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBsZXQgZnJvbSA9IEB0b09iamVjdChzb3VyY2UpOwot
ICAgIGxldCBrZXlzID0gQG93bktleXMoZnJvbSk7Ci0gICAgbGV0IGtleXNMZW5ndGggPSBrZXlz
Lmxlbmd0aDsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXNMZW5ndGg7IGkrKykgewotICAg
ICAgICBsZXQgbmV4dEtleSA9IGtleXNbaV07CisgICAgdmFyIGZyb20gPSBAdG9PYmplY3Qoc291
cmNlKTsKKyAgICB2YXIga2V5cyA9IEBvd25LZXlzKGZyb20pOworICAgIHZhciBrZXlzTGVuZ3Ro
ID0ga2V5cy5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzTGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgdmFyIG5leHRLZXkgPSBrZXlzW2ldOwogICAgICAgICBpZiAoIWV4Y2x1ZGVk
U2V0LkBoYXMobmV4dEtleSkpIHsKICAgICAgICAgICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFi
bGUoZnJvbSwgbmV4dEtleSkpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcFZhbHVlID0gZnJv
bVtuZXh0S2V5XTsKKyAgICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gZnJvbVtuZXh0S2V5
XTsKICAgICAgICAgICAgICAgICBAZGVmaW5lRW51bWVyYWJsZVdyaXRhYmxlQ29uZmlndXJhYmxl
RGF0YVByb3BlcnR5KHRhcmdldCwgbmV4dEtleSwgcHJvcFZhbHVlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTIyLDEzICsxMjIsMTMgQEAgZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0
aWVzTm9FeGNsdXNpb25zKHRhcmdldCwgc291cmNlKQogICAgIGlmIChAaXNVbmRlZmluZWRPck51
bGwoc291cmNlKSkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKIAotICAgIGxldCBmcm9tID0gQHRv
T2JqZWN0KHNvdXJjZSk7Ci0gICAgbGV0IGtleXMgPSBAb3duS2V5cyhmcm9tKTsKLSAgICBsZXQg
a2V5c0xlbmd0aCA9IGtleXMubGVuZ3RoOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5c0xl
bmd0aDsgaSsrKSB7Ci0gICAgICAgIGxldCBuZXh0S2V5ID0ga2V5c1tpXTsKKyAgICB2YXIgZnJv
bSA9IEB0b09iamVjdChzb3VyY2UpOworICAgIHZhciBrZXlzID0gQG93bktleXMoZnJvbSk7Cisg
ICAgdmFyIGtleXNMZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGtleXNMZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgbmV4dEtleSA9IGtleXNbaV07CiAgICAg
ICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFibGUoZnJvbSwgbmV4dEtleSkpIHsKLSAgICAgICAg
ICAgIGxldCBwcm9wVmFsdWUgPSBmcm9tW25leHRLZXldOworICAgICAgICAgICAgdmFyIHByb3BW
YWx1ZSA9IGZyb21bbmV4dEtleV07CiAgICAgICAgICAgICBAZGVmaW5lRW51bWVyYWJsZVdyaXRh
YmxlQ29uZmlndXJhYmxlRGF0YVByb3BlcnR5KHRhcmdldCwgbmV4dEtleSwgcHJvcFZhbHVlKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9JdGVyYXRvckhlbHBlcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
SXRlcmF0b3JIZWxwZXJzLmpzCmluZGV4IDFhYzlmOTFjZjg5NDQ0ZmMxNDJkZjBiZmZjN2I4YTRh
NjA3OThmMGUuLjBmYmE1MmJkNDJhNDQ4OThhNTY2MTg2OTE0ZDIyYjE3OTE4N2U5OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwpA
QCAtMzAsMTIgKzMwLDEyIEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAg
ICAgLy8gYW5kIHJldHVybmluZyB0aGUgcmVzdWx0IGluIGFuIGFycmF5LgogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJ1bnRpbWUtc2VtYW50aWNzLWFycmF5YWNj
dW11bGF0aW9uCiAKLSAgICBsZXQgcmVzdWx0ID0gW107CisgICAgdmFyIHJlc3VsdCA9IFtdOwog
Ci0gICAgbGV0IGl0ZXJhdG9yID0gaXRlcmFibGUuQGl0ZXJhdG9yU3ltYm9sKCk7Ci0gICAgbGV0
IG5leHQgPSBpdGVyYXRvci5uZXh0OwotICAgIGxldCBpdGVtOwotICAgIGxldCBpbmRleCA9IDA7
CisgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmFibGUuQGl0ZXJhdG9yU3ltYm9sKCk7CisgICAgdmFy
IG5leHQgPSBpdGVyYXRvci5uZXh0OworICAgIHZhciBpdGVtOworICAgIHZhciBpbmRleCA9IDA7
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaXRlbSA9IG5leHQuQGNhbGwoaXRlcmF0b3Ip
OwogICAgICAgICBpZiAoIUBpc09iamVjdChpdGVtKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCmluZGV4IDFhZWZhZmZlZTVmMmY3NjVkNjRjMDM1
OGRmMTU0ZDcxZTM2MGYzMzEuLjA4YTYyZDFiODNkZTllY2VhYTQzZDEzMzhkMDE4Njk3NzFkNjdl
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5q
cwpAQCAtMzM4LDggKzMzOCw4IEBAIGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFt
ZSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAgICAvLyByZXNvbHZlOiBtb2R1bGVOYW1lID0+IFBy
b21pc2UobW9kdWxlS2V5KQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8g
dGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8g
Rm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhl
IHJlc291cmNlLgotICAgIGxldCBrZXkgPSBhd2FpdCB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwg
QHVuZGVmaW5lZCwgZmV0Y2hlcik7Ci0gICAgbGV0IGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0
U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwg
bmV3IEBTZXQpOworICAgIHZhciBrZXkgPSBhd2FpdCB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwg
QHVuZGVmaW5lZCwgZmV0Y2hlcik7CisgICAgdmFyIGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0
U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwg
bmV3IEBTZXQpOwogICAgIHJldHVybiBlbnRyeS5rZXk7CiB9CiAKQEAgLTM1OSw3ICszNTksNyBA
QCBhc3luYyBmdW5jdGlvbiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1l
dGVycywgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBsZXQga2V5ID0gYXdh
aXQgdGhpcy5sb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpOworICAg
IHZhciBrZXkgPSBhd2FpdCB0aGlzLmxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1ldGVycywg
ZmV0Y2hlcik7CiAgICAgcmV0dXJuIGF3YWl0IHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGtl
eSwgZmV0Y2hlcik7CiB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBhc3luYyBmdW5jdGlvbiByZXF1
ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0
cmljdCI7CiAKLSAgICBsZXQgZW50cnkgPSBhd2FpdCB0aGlzLnJlcXVlc3RTYXRpc2Z5KHRoaXMu
ZW5zdXJlUmVnaXN0ZXJlZChrZXkpLCBwYXJhbWV0ZXJzLCBmZXRjaGVyLCBuZXcgQFNldCk7Cisg
ICAgdmFyIGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lz
dGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwgbmV3IEBTZXQpOwogICAgIHRoaXMubGlu
a0FuZEV2YWx1YXRlTW9kdWxlKGVudHJ5LmtleSwgZmV0Y2hlcik7CiAgICAgcmV0dXJuIHRoaXMu
Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiB9CkBAIC0zNzYsMTQgKzM3
NiwxNCBAQCBmdW5jdGlvbiBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKGtleSkKIHsKICAgICAi
dXNlIHN0cmljdCI7CiAKLSAgICBsZXQgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsK
KyAgICB2YXIgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsKICAgICBpZiAoIWVudHJ5
IHx8ICFlbnRyeS5ldmFsdWF0ZWQpCiAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgbGV0IGRl
cGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKLSAgICBsZXQgbGVuZ3RoID0gZGVwZW5k
ZW5jaWVzLmxlbmd0aDsKLSAgICBsZXQgcmVzdWx0ID0gbmV3IEBBcnJheShsZW5ndGgpOwotICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgdmFyIGRlcGVuZGVuY2llcyA9
IGVudHJ5LmRlcGVuZGVuY2llczsKKyAgICB2YXIgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0
aDsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IEBBcnJheShsZW5ndGgpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHJlc3VsdFtpXSA9IGRlcGVuZGVuY2llc1tp
XS5rZXk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCmluZGV4IDdkMDVjZTU5OTY3OTFiMjZk
MDBkN2Q1M2E4YjlhYzgwZmU4NmY1ZTMuLjA5YzZiNmQ3ZDBkYzZkNjk2ZWM2ZDAyMWI2MGRkZTlm
ZjQ4YzRmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmpl
Y3RDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2Jq
ZWN0Q29uc3RydWN0b3IuanMKQEAgLTQ1LDEzICs0NSwxMyBAQCBmdW5jdGlvbiBmcm9tRW50cmll
cyhpdGVyYWJsZSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBsZXQgb2JqZWN0ID0ge307
CisgICAgdmFyIG9iamVjdCA9IHt9OwogCi0gICAgZm9yIChsZXQgZW50cnkgb2YgaXRlcmFibGUp
IHsKKyAgICBmb3IgKHZhciBlbnRyeSBvZiBpdGVyYWJsZSkgewogICAgICAgICBpZiAoIUBpc09i
amVjdChlbnRyeSkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk9iamVjdC5mcm9tRW50
cmllcyByZXF1aXJlcyB0aGUgZmlyc3QgaXRlcmFibGUgcGFyYW1ldGVyIHlpZWxkcyBvYmplY3Rz
Iik7Ci0gICAgICAgIGxldCBrZXkgPSBlbnRyeVswXTsKLSAgICAgICAgbGV0IHZhbHVlID0gZW50
cnlbMV07CisgICAgICAgIHZhciBrZXkgPSBlbnRyeVswXTsKKyAgICAgICAgdmFyIHZhbHVlID0g
ZW50cnlbMV07CiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChvYmplY3QsIGtleSwgdmFsdWUpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21p
c2VQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZVBy
b3RvdHlwZS5qcwppbmRleCAzZjAzMmU1ZmFiMGJlOTk1NWYzZWIzYWU4ZGVkZDkwOTI2OTE1ZDcx
Li5lYzVlM2IyM2I1NDEyOTQ3YTEwMDdjMjVjNmM4YzNjNTZjYzYwMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpAQCAtNzks
MTIgKzc5LDEyIEBAIGZ1bmN0aW9uIGZpbmFsbHkob25GaW5hbGx5KQogICAgIGlmICghQGlzT2Jq
ZWN0KHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYW4gb2Jq
ZWN0Iik7CiAKLSAgICBjb25zdCBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhp
cywgQFByb21pc2UpOworICAgIHZhciBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3Io
dGhpcywgQFByb21pc2UpOwogCiAgICAgQGFzc2VydChAaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cikpOwogCi0gICAgbGV0IHRoZW5GaW5hbGx5OwotICAgIGxldCBjYXRjaEZpbmFsbHk7CisgICAg
dmFyIHRoZW5GaW5hbGx5OworICAgIHZhciBjYXRjaEZpbmFsbHk7CiAKICAgICBpZiAodHlwZW9m
IG9uRmluYWxseSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICB0aGVuRmluYWxseSA9IG9uRmlu
YWxseTsKQEAgLTEwNSwxNSArMTA1LDE1IEBAIGZ1bmN0aW9uIGdldFRoZW5GaW5hbGx5KG9uRmlu
YWxseSwgY29uc3RydWN0b3IpCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKQogICAgIHsKICAg
ICAgICAgQGFzc2VydCh0eXBlb2Ygb25GaW5hbGx5ID09PSAiZnVuY3Rpb24iKTsKLSAgICAgICAg
Y29uc3QgcmVzdWx0ID0gb25GaW5hbGx5KCk7CisgICAgICAgIHZhciByZXN1bHQgPSBvbkZpbmFs
bHkoKTsKIAogICAgICAgICBAYXNzZXJ0KEBpc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSk7Ci0g
ICAgICAgIGNvbnN0IHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29u
c3RydWN0b3IpOworICAgICAgICB2YXIgcmVzdWx0Q2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShjb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgcmVzdWx0Q2FwYWJpbGl0eS5AcmVzb2x2
ZS5AY2FsbChAdW5kZWZpbmVkLCByZXN1bHQpOwogCi0gICAgICAgIGNvbnN0IHByb21pc2UgPSBy
ZXN1bHRDYXBhYmlsaXR5LkBwcm9taXNlOwotICAgICAgICBjb25zdCB2YWx1ZVRodW5rID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH07CisgICAgICAgIHZhciBwcm9taXNlID0gcmVzdWx0
Q2FwYWJpbGl0eS5AcHJvbWlzZTsKKyAgICAgICAgdmFyIHZhbHVlVGh1bmsgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiB2YWx1ZTsgfTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHZhbHVl
VGh1bmspOwogICAgIH0KQEAgLTEyNywxNSArMTI3LDE1IEBAIGZ1bmN0aW9uIGdldENhdGNoRmlu
YWxseShvbkZpbmFsbHksIGNvbnN0cnVjdG9yKQogICAgIHJldHVybiBmdW5jdGlvbihyZWFzb24p
CiAgICAgewogICAgICAgICBAYXNzZXJ0KHR5cGVvZiBvbkZpbmFsbHkgPT09ICJmdW5jdGlvbiIp
OwotICAgICAgICBjb25zdCByZXN1bHQgPSBvbkZpbmFsbHkoKTsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IG9uRmluYWxseSgpOwogCiAgICAgICAgIEBhc3NlcnQoQGlzQ29uc3RydWN0b3IoY29uc3Ry
dWN0b3IpKTsKLSAgICAgICAgY29uc3QgcmVzdWx0Q2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShjb25zdHJ1Y3Rvcik7CisgICAgICAgIHZhciByZXN1bHRDYXBhYmlsaXR5ID0gQG5l
d1Byb21pc2VDYXBhYmlsaXR5KGNvbnN0cnVjdG9yKTsKIAogICAgICAgICByZXN1bHRDYXBhYmls
aXR5LkByZXNvbHZlLkBjYWxsKEB1bmRlZmluZWQsIHJlc3VsdCk7CiAKLSAgICAgICAgY29uc3Qg
cHJvbWlzZSA9IHJlc3VsdENhcGFiaWxpdHkuQHByb21pc2U7Ci0gICAgICAgIGNvbnN0IHRocm93
ZXIgPSBmdW5jdGlvbiAoKSB7IHRocm93IHJlYXNvbjsgfTsKKyAgICAgICAgdmFyIHByb21pc2Ug
PSByZXN1bHRDYXBhYmlsaXR5LkBwcm9taXNlOworICAgICAgICB2YXIgdGhyb3dlciA9IGZ1bmN0
aW9uICgpIHsgdGhyb3cgcmVhc29uOyB9OwogCiAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4o
dGhyb3dlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1JlZ0V4cFByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMKaW5kZXggYmI0ZDUwYjcwMzUxNTI2ZWEzYzQyYzJjZDg3YTIzZDVm
N2YwZGQzNi4uYTc5ZjZlM2RkNjkyZmIzZDAyOTk4NTk2YjFlMzdkZWExZWRiNWNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCkBA
IC00OCwxMSArNDgsMTEgQEAgZnVuY3Rpb24gYWR2YW5jZVN0cmluZ0luZGV4KHN0cmluZywgaW5k
ZXgsIHVuaWNvZGUpCiAgICAgaWYgKGluZGV4ICsgMSA+PSBzdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gaW5kZXggKyAxOwogCi0gICAgbGV0IGZpcnN0ID0gc3RyaW5nLkBjaGFyQ29kZUF0
KGluZGV4KTsKKyAgICB2YXIgZmlyc3QgPSBzdHJpbmcuQGNoYXJDb2RlQXQoaW5kZXgpOwogICAg
IGlmIChmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRikKICAgICAgICAgcmV0dXJuIGlu
ZGV4ICsgMTsKIAotICAgIGxldCBzZWNvbmQgPSBzdHJpbmcuQGNoYXJDb2RlQXQoaW5kZXggKyAx
KTsKKyAgICB2YXIgc2Vjb25kID0gc3RyaW5nLkBjaGFyQ29kZUF0KGluZGV4ICsgMSk7CiAgICAg
aWYgKHNlY29uZCA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkYpCiAgICAgICAgIHJldHVybiBp
bmRleCArIDE7CiAKQEAgLTY0LDEwICs2NCwxMCBAQCBmdW5jdGlvbiByZWdFeHBFeGVjKHJlZ2V4
cCwgc3RyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGxldCBleGVjID0gcmVnZXhwLmV4
ZWM7Ci0gICAgbGV0IGJ1aWx0aW5FeGVjID0gQHJlZ0V4cEJ1aWx0aW5FeGVjOworICAgIHZhciBl
eGVjID0gcmVnZXhwLmV4ZWM7CisgICAgdmFyIGJ1aWx0aW5FeGVjID0gQHJlZ0V4cEJ1aWx0aW5F
eGVjOwogICAgIGlmIChleGVjICE9PSBidWlsdGluRXhlYyAmJiB0eXBlb2YgZXhlYyA9PT0gImZ1
bmN0aW9uIikgewotICAgICAgICBsZXQgcmVzdWx0ID0gZXhlYy5AY2FsbChyZWdleHAsIHN0cik7
CisgICAgICAgIHZhciByZXN1bHQgPSBleGVjLkBjYWxsKHJlZ2V4cCwgc3RyKTsKICAgICAgICAg
aWYgKHJlc3VsdCAhPT0gbnVsbCAmJiAhQGlzT2JqZWN0KHJlc3VsdCkpCiAgICAgICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlRoZSByZXN1bHQgb2YgYSBSZWdFeHAgZXhlYyBtdXN0IGJlIG51bGwg
b3IgYW4gb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04NCwxNCArODQsMTQg
QEAgZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2gocmVnZXhw
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhl
IFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCi0gICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5
R2V0QnlJZChyZWdleHAsICJleGVjIik7CisgICAgdmFyIHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJ
ZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGlu
RXhlYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBsZXQgcmVnZXhwR2xvYmFsID0gQHRy
eUdldEJ5SWQocmVnZXhwLCAiZ2xvYmFsIik7CisgICAgdmFyIHJlZ2V4cEdsb2JhbCA9IEB0cnlH
ZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOwogICAgIGlmIChyZWdleHBHbG9iYWwgIT09IEByZWdF
eHBQcm90b0dsb2JhbEdldHRlcikKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgbGV0IHJlZ2V4
cFVuaWNvZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmljb2RlIik7CisgICAgdmFyIHJlZ2V4
cFVuaWNvZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmljb2RlIik7CiAgICAgaWYgKHJlZ2V4
cFVuaWNvZGUgIT09IEByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCkBAIC0xMDYsMTcgKzEwNiwxNyBAQCBmdW5jdGlvbiBtYXRjaFNsb3cocmVnZXhwLCBz
dHIpCiAgICAgaWYgKCFyZWdleHAuZ2xvYmFsKQogICAgICAgICByZXR1cm4gQHJlZ0V4cEV4ZWMo
cmVnZXhwLCBzdHIpOwogICAgIAotICAgIGxldCB1bmljb2RlID0gcmVnZXhwLnVuaWNvZGU7Cisg
ICAgdmFyIHVuaWNvZGUgPSByZWdleHAudW5pY29kZTsKICAgICByZWdleHAubGFzdEluZGV4ID0g
MDsKLSAgICBsZXQgcmVzdWx0TGlzdCA9IFtdOworICAgIHZhciByZXN1bHRMaXN0ID0gW107CiAK
ICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgZ3JlYXQgdG8gaW1wbGVtZW50IGEgc29sdXRpb24g
c2ltaWxhciB0byB3aGF0IHdlIGRvIGluCiAgICAgLy8gUmVnRXhwT2JqZWN0OjptYXRjaEdsb2Jh
bCgpLiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGlzIHBvc3NpYmxlLCBzaW5jZSB0aGlzIGxvb3Ag
aGFzCiAgICAgLy8gZWZmZWN0cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODE0NQotICAgIGNvbnN0IG1heGltdW1SZWFzb25hYmxlTWF0Y2hTaXplID0gMTAwMDAw
MDAwOworICAgIHZhciBtYXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSA9IDEwMDAwMDAwMDsKIAog
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBAcmVnRXhwRXhlYyhyZWdl
eHAsIHN0cik7CisgICAgICAgIHZhciByZXN1bHQgPSBAcmVnRXhwRXhlYyhyZWdleHAsIHN0cik7
CiAgICAgICAgIAogICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0TGlzdC5sZW5ndGggPT09IDApCkBAIC0xMjcsNyArMTI3LDcgQEAgZnVuY3Rpb24g
bWF0Y2hTbG93KHJlZ2V4cCwgc3RyKQogICAgICAgICBpZiAocmVzdWx0TGlzdC5sZW5ndGggPiBt
YXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSkKICAgICAgICAgICAgIEB0aHJvd091dE9mTWVtb3J5
RXJyb3IoKTsKIAotICAgICAgICBsZXQgcmVzdWx0U3RyaW5nID0gQHRvU3RyaW5nKHJlc3VsdFsw
XSk7CisgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSBAdG9TdHJpbmcocmVzdWx0WzBdKTsKIAog
ICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpCiAgICAgICAgICAgICByZWdleHAubGFz
dEluZGV4ID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNv
ZGUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIGZ1bmN0aW9uIG1hdGNoKHN0ckFyZykKICAgICBpZiAo
IUBpc09iamVjdCh0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZWdFeHAucHJvdG90
eXBlLkBAbWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBs
ZXQgc3RyID0gQHRvU3RyaW5nKHN0ckFyZyk7CisgICAgdmFyIHN0ciA9IEB0b1N0cmluZyhzdHJB
cmcpOwogCiAgICAgLy8gQ2hlY2sgZm9yIG9ic2VydmFibGUgc2lkZSBlZmZlY3RzIGFuZCBjYWxs
IHRoZSBmYXN0IHBhdGggaWYgdGhlcmUgYXJlbid0IGFueS4KICAgICBpZiAoIUBoYXNPYnNlcnZh
YmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRjaCh0aGlzKSkKQEAgLTE1NywxOSArMTU3LDE5IEBA
IGZ1bmN0aW9uIG1hdGNoQWxsKHN0ckFyZykKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBs
ZXQgcmVnRXhwID0gdGhpczsKKyAgICB2YXIgcmVnRXhwID0gdGhpczsKICAgICBpZiAoIUBpc09i
amVjdChyZWdFeHApKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUu
QEBtYXRjaEFsbCByZXF1aXJlcyB8dGhpc3wgdG8gYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQg
c3RyaW5nID0gQHRvU3RyaW5nKHN0ckFyZyk7Ci0gICAgbGV0IE1hdGNoZXIgPSBAc3BlY2llc0Nv
bnN0cnVjdG9yKHJlZ0V4cCwgQFJlZ0V4cCk7CisgICAgdmFyIHN0cmluZyA9IEB0b1N0cmluZyhz
dHJBcmcpOworICAgIHZhciBNYXRjaGVyID0gQHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdFeHAsIEBS
ZWdFeHApOwogCi0gICAgbGV0IGZsYWdzID0gQHRvU3RyaW5nKHJlZ0V4cC5mbGFncyk7Ci0gICAg
bGV0IG1hdGNoZXIgPSBuZXcgTWF0Y2hlcihyZWdFeHAsIGZsYWdzKTsKKyAgICB2YXIgZmxhZ3Mg
PSBAdG9TdHJpbmcocmVnRXhwLmZsYWdzKTsKKyAgICB2YXIgbWF0Y2hlciA9IG5ldyBNYXRjaGVy
KHJlZ0V4cCwgZmxhZ3MpOwogICAgIG1hdGNoZXIubGFzdEluZGV4ID0gQHRvTGVuZ3RoKHJlZ0V4
cC5sYXN0SW5kZXgpOwogCi0gICAgbGV0IGdsb2JhbCA9IEBzdHJpbmdJbmNsdWRlc0ludGVybmFs
LkBjYWxsKGZsYWdzLCAiZyIpOwotICAgIGxldCBmdWxsVW5pY29kZSA9IEBzdHJpbmdJbmNsdWRl
c0ludGVybmFsLkBjYWxsKGZsYWdzLCAidSIpOworICAgIHZhciBnbG9iYWwgPSBAc3RyaW5nSW5j
bHVkZXNJbnRlcm5hbC5AY2FsbChmbGFncywgImciKTsKKyAgICB2YXIgZnVsbFVuaWNvZGUgPSBA
c3RyaW5nSW5jbHVkZXNJbnRlcm5hbC5AY2FsbChmbGFncywgInUiKTsKIAogICAgIHJldHVybiBu
ZXcgQFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKG1hdGNoZXIsIHN0cmluZywgZ2xvYmFsLCBmdWxsVW5p
Y29kZSk7CiB9CkBAIC0xODMsMTkgKzE4MywxOSBAQCBmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24o
bWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhYwog
ICAgIHsKICAgICAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgICAgIGxldCBtYXRjaExlbmd0aCA9
IG1hdGNoZWQubGVuZ3RoOwotICAgICAgICBsZXQgc3RyaW5nTGVuZ3RoID0gc3RyLmxlbmd0aDsK
LSAgICAgICAgbGV0IHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoTGVuZ3RoOwotICAgICAgICBs
ZXQgbSA9IGNhcHR1cmVzLmxlbmd0aDsKLSAgICAgICAgbGV0IHJlcGxhY2VtZW50TGVuZ3RoID0g
cmVwbGFjZW1lbnQubGVuZ3RoOwotICAgICAgICBsZXQgcmVzdWx0ID0gIiI7Ci0gICAgICAgIGxl
dCBsYXN0U3RhcnQgPSAwOworICAgICAgICB2YXIgbWF0Y2hMZW5ndGggPSBtYXRjaGVkLmxlbmd0
aDsKKyAgICAgICAgdmFyIHN0cmluZ0xlbmd0aCA9IHN0ci5sZW5ndGg7CisgICAgICAgIHZhciB0
YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaExlbmd0aDsKKyAgICAgICAgdmFyIG0gPSBjYXB0dXJl
cy5sZW5ndGg7CisgICAgICAgIHZhciByZXBsYWNlbWVudExlbmd0aCA9IHJlcGxhY2VtZW50Lmxl
bmd0aDsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICIiOworICAgICAgICB2YXIgbGFzdFN0YXJ0ID0g
MDsKIAotICAgICAgICBmb3IgKGxldCBzdGFydCA9IDA7IHN0YXJ0ID0gcmVwbGFjZW1lbnQuaW5k
ZXhPZigiJCIsIGxhc3RTdGFydCksIHN0YXJ0ICE9PSAtMTsgbGFzdFN0YXJ0ID0gc3RhcnQpIHsK
KyAgICAgICAgZm9yICh2YXIgc3RhcnQgPSAwOyBzdGFydCA9IHJlcGxhY2VtZW50LmluZGV4T2Yo
IiQiLCBsYXN0U3RhcnQpLCBzdGFydCAhPT0gLTE7IGxhc3RTdGFydCA9IHN0YXJ0KSB7CiAgICAg
ICAgICAgICBpZiAoc3RhcnQgLSBsYXN0U3RhcnQgPiAwKQogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdCArIHJlcGxhY2VtZW50LnN1YnN0cmluZyhsYXN0U3RhcnQsIHN0YXJ0KTsKICAg
ICAgICAgICAgIHN0YXJ0Kys7Ci0gICAgICAgICAgICBsZXQgY2ggPSByZXBsYWNlbWVudC5jaGFy
QXQoc3RhcnQpOworICAgICAgICAgICAgdmFyIGNoID0gcmVwbGFjZW1lbnQuY2hhckF0KHN0YXJ0
KTsKICAgICAgICAgICAgIGlmIChjaCA9PT0gIiIpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0ICsgIiQiOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0yMjEsMTEgKzIyMSwxMSBAQCBm
dW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMs
IG5hbWVkQ2FwdHVyZXMsIHJlcGxhYwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBjYXNlICI8IjoKICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWVkQ2FwdHVy
ZXMgIT09IEB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncm91cE5h
bWVTdGFydEluZGV4ID0gc3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdy
b3VwTmFtZUVuZEluZGV4ID0gcmVwbGFjZW1lbnQuaW5kZXhPZigiPiIsIGdyb3VwTmFtZVN0YXJ0
SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwTmFtZVN0YXJ0SW5kZXgg
PSBzdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JvdXBOYW1lRW5kSW5k
ZXggPSByZXBsYWNlbWVudC5pbmRleE9mKCI+IiwgZ3JvdXBOYW1lU3RhcnRJbmRleCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBOYW1lRW5kSW5kZXggIT09IC0xKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwTmFtZSA9IHJlcGxhY2VtZW50LnN1YnN0
cmluZyhncm91cE5hbWVTdGFydEluZGV4LCBncm91cE5hbWVFbmRJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2dyb3VwTmFtZV07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwTmFtZSA9IHJlcGxhY2VtZW50
LnN1YnN0cmluZyhncm91cE5hbWVTdGFydEluZGV4LCBncm91cE5hbWVFbmRJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2dyb3Vw
TmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhcHR1cmUgIT09IEB1bmRl
ZmluZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAr
IEB0b1N0cmluZyhjYXB0dXJlKTsKIApAQCAtMjM4LDIxICsyMzgsMjEgQEAgZnVuY3Rpb24gZ2V0
U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1
cmVzLCByZXBsYWMKICAgICAgICAgICAgICAgICAgICAgc3RhcnQrKzsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgbGV0IGNoQ29kZSA9IGNoLmNoYXJDb2RlQXQoMCk7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBjaENvZGUgPSBjaC5jaGFyQ29kZUF0KDApOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2hD
b2RlID49IDB4MzAgJiYgY2hDb2RlIDw9IDB4MzkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxldCBvcmlnaW5hbFN0YXJ0ID0gc3RhcnQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG9yaWdpbmFsU3RhcnQgPSBzdGFydCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydCsrOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNoQ29kZSAtIDB4MzA7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGNoQ29kZSAtIDB4MzA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobiA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSByZXN1bHQgKyByZXBsYWNlbWVudC5zdWJzdHJpbmcob3JpZ2luYWxTdGFydCwg
c3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCByZXBs
YWNlbWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXh0Q2hD
b2RlID0gcmVwbGFjZW1lbnQuY2hhckNvZGVBdChzdGFydCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG5leHRDaENvZGUgPSByZXBsYWNlbWVudC5jaGFyQ29kZUF0KHN0YXJ0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dENoQ29kZSA+PSAweDMwICYmIG5l
eHRDaENvZGUgPD0gMHgzOSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
bm4gPSAxMCAqIG4gKyBuZXh0Q2hDb2RlIC0gMHgzMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG5uID0gMTAgKiBuICsgbmV4dENoQ29kZSAtIDB4MzA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChubiA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuID0gbm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydCsrOwpAQCAtMjY1LDcgKzI2NSw3IEBAIGZ1bmN0aW9uIGdldFN1YnN0aXR1dGlv
bihtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFj
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXB0dXJlID0gY2FwdHVyZXNb
biAtIDFdOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBjYXB0dXJlc1tu
IC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FwdHVyZSAhPT0gQHVuZGVmaW5l
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBjYXB0dXJl
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTI4MSwyNiArMjgxLDI2IEBAIGZ1bmN0
aW9uIGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFt
ZWRDYXB0dXJlcywgcmVwbGFjCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykpCiAgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQHJlcGxhY2UgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQgcmVnZXhwID0gdGhpczsKKyAgICB2YXIg
cmVnZXhwID0gdGhpczsKIAotICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyQXJnKTsKLSAgICBs
ZXQgc3RyaW5nTGVuZ3RoID0gc3RyLmxlbmd0aDsKLSAgICBsZXQgZnVuY3Rpb25hbFJlcGxhY2Ug
PSB0eXBlb2YgcmVwbGFjZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgICB2YXIgc3RyID0gQHRvU3RyaW5n
KHN0ckFyZyk7CisgICAgdmFyIHN0cmluZ0xlbmd0aCA9IHN0ci5sZW5ndGg7CisgICAgdmFyIGZ1
bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2UgPT09ICdmdW5jdGlvbic7CiAKICAgICBp
ZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKQogICAgICAgICByZXBsYWNlID0gQHRvU3RyaW5nKHJlcGxh
Y2UpOwogCi0gICAgbGV0IGdsb2JhbCA9IHJlZ2V4cC5nbG9iYWw7Ci0gICAgbGV0IHVuaWNvZGUg
PSBmYWxzZTsKKyAgICB2YXIgZ2xvYmFsID0gcmVnZXhwLmdsb2JhbDsKKyAgICB2YXIgdW5pY29k
ZSA9IGZhbHNlOwogCiAgICAgaWYgKGdsb2JhbCkgewogICAgICAgICB1bmljb2RlID0gcmVnZXhw
LnVuaWNvZGU7CiAgICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSAwOwogICAgIH0KIAotICAgIGxl
dCByZXN1bHRMaXN0ID0gW107Ci0gICAgbGV0IHJlc3VsdDsKLSAgICBsZXQgZG9uZSA9IGZhbHNl
OworICAgIHZhciByZXN1bHRMaXN0ID0gW107CisgICAgdmFyIHJlc3VsdDsKKyAgICB2YXIgZG9u
ZSA9IGZhbHNlOwogICAgIHdoaWxlICghZG9uZSkgewogICAgICAgICByZXN1bHQgPSBAcmVnRXhw
RXhlYyhyZWdleHAsIHN0cik7CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBmdW5jdGlvbiBnZXRTdWJz
dGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMs
IHJlcGxhYwogICAgICAgICAgICAgaWYgKCFnbG9iYWwpCiAgICAgICAgICAgICAgICAgZG9uZSA9
IHRydWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgbWF0Y2hTdHIg
PSBAdG9TdHJpbmcocmVzdWx0WzBdKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2hTdHIgPSBA
dG9TdHJpbmcocmVzdWx0WzBdKTsKIAogICAgICAgICAgICAgICAgIGlmICghbWF0Y2hTdHIubGVu
Z3RoKQogICAgICAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4ID0gQGFkdmFuY2VTdHJp
bmdJbmRleChzdHIsIHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNvZGUpOwpAQCAtMzE5LDQxICszMTks
NDEgQEAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNh
cHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGxl
dCBhY2N1bXVsYXRlZFJlc3VsdCA9ICIiOwotICAgIGxldCBuZXh0U291cmNlUG9zaXRpb24gPSAw
OwotICAgIGxldCBsYXN0UG9zaXRpb24gPSAwOworICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9
ICIiOworICAgIHZhciBuZXh0U291cmNlUG9zaXRpb24gPSAwOworICAgIHZhciBsYXN0UG9zaXRp
b24gPSAwOwogCi0gICAgZm9yIChsZXQgaSA9IDAsIHJlc3VsdExpc3RMZW5ndGggPSByZXN1bHRM
aXN0Lmxlbmd0aDsgaSA8IHJlc3VsdExpc3RMZW5ndGg7ICsraSkgewotICAgICAgICBsZXQgcmVz
dWx0ID0gcmVzdWx0TGlzdFtpXTsKLSAgICAgICAgbGV0IG5DYXB0dXJlcyA9IHJlc3VsdC5sZW5n
dGggLSAxOworICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRMaXN0TGVuZ3RoID0gcmVzdWx0TGlz
dC5sZW5ndGg7IGkgPCByZXN1bHRMaXN0TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IHJlc3VsdExpc3RbaV07CisgICAgICAgIHZhciBuQ2FwdHVyZXMgPSByZXN1bHQubGVuZ3Ro
IC0gMTsKICAgICAgICAgaWYgKG5DYXB0dXJlcyA8IDApCiAgICAgICAgICAgICBuQ2FwdHVyZXMg
PSAwOwotICAgICAgICBsZXQgbWF0Y2hlZCA9IEB0b1N0cmluZyhyZXN1bHRbMF0pOwotICAgICAg
ICBsZXQgbWF0Y2hMZW5ndGggPSBtYXRjaGVkLmxlbmd0aDsKLSAgICAgICAgbGV0IHBvc2l0aW9u
ID0gcmVzdWx0LmluZGV4OworICAgICAgICB2YXIgbWF0Y2hlZCA9IEB0b1N0cmluZyhyZXN1bHRb
MF0pOworICAgICAgICB2YXIgbWF0Y2hMZW5ndGggPSBtYXRjaGVkLmxlbmd0aDsKKyAgICAgICAg
dmFyIHBvc2l0aW9uID0gcmVzdWx0LmluZGV4OwogICAgICAgICBwb3NpdGlvbiA9IChwb3NpdGlv
biA+IHN0cmluZ0xlbmd0aCkgPyBzdHJpbmdMZW5ndGggOiBwb3NpdGlvbjsKICAgICAgICAgcG9z
aXRpb24gPSAocG9zaXRpb24gPCAwKSA/IDAgOiBwb3NpdGlvbjsKIAotICAgICAgICBsZXQgY2Fw
dHVyZXMgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPD0gbkNhcHR1cmVzOyBuKysp
IHsKLSAgICAgICAgICAgIGxldCBjYXBOID0gcmVzdWx0W25dOworICAgICAgICB2YXIgY2FwdHVy
ZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbiA9IDE7IG4gPD0gbkNhcHR1cmVzOyBuKyspIHsK
KyAgICAgICAgICAgIHZhciBjYXBOID0gcmVzdWx0W25dOwogICAgICAgICAgICAgaWYgKGNhcE4g
IT09IEB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgY2FwTiA9IEB0b1N0cmluZyhjYXBOKTsK
ICAgICAgICAgICAgIGNhcHR1cmVzLkBwdXNoKGNhcE4pOwogICAgICAgICB9CiAKLSAgICAgICAg
bGV0IHJlcGxhY2VtZW50OwotICAgICAgICBsZXQgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91
cHM7CisgICAgICAgIHZhciByZXBsYWNlbWVudDsKKyAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMg
PSByZXN1bHQuZ3JvdXBzOwogCiAgICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkgewotICAg
ICAgICAgICAgbGV0IHJlcGxhY2VyQXJncyA9IFsgbWF0Y2hlZCBdLmNvbmNhdChjYXB0dXJlcyk7
CisgICAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gWyBtYXRjaGVkIF0uY29uY2F0KGNhcHR1
cmVzKTsKICAgICAgICAgICAgIHJlcGxhY2VyQXJncy5AcHVzaChwb3NpdGlvbik7CiAgICAgICAg
ICAgICByZXBsYWNlckFyZ3MuQHB1c2goc3RyKTsKIAogICAgICAgICAgICAgaWYgKG5hbWVkQ2Fw
dHVyZXMgIT09IEB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgcmVwbGFjZXJBcmdzLkBwdXNo
KG5hbWVkQ2FwdHVyZXMpOwogCi0gICAgICAgICAgICBsZXQgcmVwbFZhbHVlID0gcmVwbGFjZS5A
YXBwbHkoQHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKTsKKyAgICAgICAgICAgIHZhciByZXBsVmFs
dWUgPSByZXBsYWNlLkBhcHBseShAdW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpOwogICAgICAgICAg
ICAgcmVwbGFjZW1lbnQgPSBAdG9TdHJpbmcocmVwbFZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSBAdW5kZWZpbmVkKQpAQCAtMzgxLDcg
KzM4MSw3IEBAIGZ1bmN0aW9uIHNlYXJjaChzdHJBcmcpCiB7CiAgICAgInVzZSBzdHJpY3QiOwog
Ci0gICAgbGV0IHJlZ2V4cCA9IHRoaXM7CisgICAgdmFyIHJlZ2V4cCA9IHRoaXM7CiAKICAgICAv
LyBDaGVjayBmb3Igb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdHMgYW5kIGNhbGwgdGhlIGZhc3QgcGF0
aCBpZiB0aGVyZSBhcmVuJ3QgYW55LgogICAgIGlmIChAaXNSZWdFeHBPYmplY3QocmVnZXhwKQpA
QCAtMzg5LDE2ICszODksMTYgQEAgZnVuY3Rpb24gc2VhcmNoKHN0ckFyZykKICAgICAgICAgJiYg
dHlwZW9mIHJlZ2V4cC5sYXN0SW5kZXggPT09ICJudW1iZXIiKQogICAgICAgICByZXR1cm4gQHJl
Z0V4cFNlYXJjaEZhc3QuQGNhbGwocmVnZXhwLCBzdHJBcmcpOwogCi0gICAgLy8gMS4gTGV0IHJ4
IGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIC8vIDEuIHZhciByeCBiZSB0aGUgdGhpcyB2YWx1ZS4K
ICAgICAvLyAyLiBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBl
eGNlcHRpb24uCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQHNlYXJjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBh
biBPYmplY3QiKTsKIAotICAgIC8vIDMuIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5nKS4KLSAg
ICBsZXQgc3RyID0gQHRvU3RyaW5nKHN0ckFyZykKKyAgICAvLyAzLiB2YXIgUyBiZSA/IFRvU3Ry
aW5nKHN0cmluZykuCisgICAgdmFyIHN0ciA9IEB0b1N0cmluZyhzdHJBcmcpCiAKLSAgICAvLyA0
LiBMZXQgcHJldmlvdXNMYXN0SW5kZXggYmUgPyBHZXQocngsICJsYXN0SW5kZXgiKS4KLSAgICBs
ZXQgcHJldmlvdXNMYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4OworICAgIC8vIDQuIHZhciBw
cmV2aW91c0xhc3RJbmRleCBiZSA/IEdldChyeCwgImxhc3RJbmRleCIpLgorICAgIHZhciBwcmV2
aW91c0xhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7CiAKICAgICAvLyA1LklmIFNhbWVWYWx1
ZShwcmV2aW91c0xhc3RJbmRleCwgMCkgaXMgZmFsc2UsIHRoZW4KICAgICAvLyA1LmEuIFBlcmZv
cm0gPyBTZXQocngsICJsYXN0SW5kZXgiLCAwLCB0cnVlKS4KQEAgLTQwNiwxMCArNDA2LDEwIEBA
IGZ1bmN0aW9uIHNlYXJjaChzdHJBcmcpCiAgICAgaWYgKHByZXZpb3VzTGFzdEluZGV4ICE9PSAw
KQogICAgICAgICByZWdleHAubGFzdEluZGV4ID0gMDsKIAotICAgIC8vIDYuIExldCByZXN1bHQg
YmUgPyBSZWdFeHBFeGVjKHJ4LCBTKS4KLSAgICBsZXQgcmVzdWx0ID0gQHJlZ0V4cEV4ZWMocmVn
ZXhwLCBzdHIpOworICAgIC8vIDYuIHZhciByZXN1bHQgYmUgPyBSZWdFeHBFeGVjKHJ4LCBTKS4K
KyAgICB2YXIgcmVzdWx0ID0gQHJlZ0V4cEV4ZWMocmVnZXhwLCBzdHIpOwogCi0gICAgLy8gNy4g
TGV0IGN1cnJlbnRMYXN0SW5kZXggYmUgPyBHZXQocngsICJsYXN0SW5kZXgiKS4KKyAgICAvLyA3
LiB2YXIgY3VycmVudExhc3RJbmRleCBiZSA/IEdldChyeCwgImxhc3RJbmRleCIpLgogICAgIC8v
IDguIElmIFNhbWVWYWx1ZShjdXJyZW50TGFzdEluZGV4LCBwcmV2aW91c0xhc3RJbmRleCkgaXMg
ZmFsc2UsIHRoZW4KICAgICAvLyA4LmEuIFBlcmZvcm0gPyBTZXQocngsICJsYXN0SW5kZXgiLCBw
cmV2aW91c0xhc3RJbmRleCwgdHJ1ZSkuCiAgICAgLy8gRklYTUU6IEFkZCBTYW1lVmFsdWUgc3Vw
cG9ydC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzIyNgpAQCAt
NDMzLDM0ICs0MzMsMzQgQEAgZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVn
RXhwU3BsaXQocmVnZXhwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgaXMg
YWNjZXNzZWQgYnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCi0gICAgbGV0IHJl
Z2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CisgICAgdmFyIHJlZ2V4cEV4
ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09
IEByZWdFeHBCdWlsdGluRXhlYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8g
VGhpcyBpcyBhY2Nlc3NlZCBieSBzdGVwIDUgYmVsb3cuCi0gICAgbGV0IHJlZ2V4cEZsYWdzID0g
QHRyeUdldEJ5SWQocmVnZXhwLCAiZmxhZ3MiKTsKKyAgICB2YXIgcmVnZXhwRmxhZ3MgPSBAdHJ5
R2V0QnlJZChyZWdleHAsICJmbGFncyIpOwogICAgIGlmIChyZWdleHBGbGFncyAhPT0gQHJlZ0V4
cFByb3RvRmxhZ3NHZXR0ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIFRo
ZXNlIGFyZSBhY2Nlc3NlZCBieSB0aGUgYnVpbHRpbiBmbGFncyBnZXR0ZXIuCi0gICAgbGV0IHJl
Z2V4cEdsb2JhbCA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOworICAgIHZhciByZWdl
eHBHbG9iYWwgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJnbG9iYWwiKTsKICAgICBpZiAocmVnZXhw
R2xvYmFsICE9PSBAcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIGxldCByZWdleHBJZ25vcmVDYXNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiaWdub3Jl
Q2FzZSIpOworICAgIHZhciByZWdleHBJZ25vcmVDYXNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAi
aWdub3JlQ2FzZSIpOwogICAgIGlmIChyZWdleHBJZ25vcmVDYXNlICE9PSBAcmVnRXhwUHJvdG9J
Z25vcmVDYXNlR2V0dGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBsZXQgcmVnZXhwTXVs
dGlsaW5lID0gQHRyeUdldEJ5SWQocmVnZXhwLCAibXVsdGlsaW5lIik7CisgICAgdmFyIHJlZ2V4
cE11bHRpbGluZSA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgIm11bHRpbGluZSIpOwogICAgIGlmIChy
ZWdleHBNdWx0aWxpbmUgIT09IEByZWdFeHBQcm90b011bHRpbGluZUdldHRlcikKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgbGV0IHJlZ2V4cFN0aWNreSA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwg
InN0aWNreSIpOworICAgIHZhciByZWdleHBTdGlja3kgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJz
dGlja3kiKTsKICAgICBpZiAocmVnZXhwU3RpY2t5ICE9PSBAcmVnRXhwUHJvdG9TdGlja3lHZXR0
ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGxldCByZWdleHBVbmljb2RlID0gQHRyeUdl
dEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOworICAgIHZhciByZWdleHBVbmljb2RlID0gQHRyeUdl
dEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOwogICAgIGlmIChyZWdleHBVbmljb2RlICE9PSBAcmVn
RXhwUHJvdG9Vbmljb2RlR2V0dGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAv
LyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHAgc3BlY2llcyBjb25zdHJ1Y3Rvci4KLSAg
ICBsZXQgcmVnZXhwU291cmNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAic291cmNlIik7CisgICAg
dmFyIHJlZ2V4cFNvdXJjZSA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgInNvdXJjZSIpOwogICAgIGlm
IChyZWdleHBTb3VyY2UgIT09IEByZWdFeHBQcm90b1NvdXJjZUdldHRlcikKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTQ3Myw1NyArNDczLDU3IEBAIGZ1bmN0aW9uIHNwbGl0KHN0cmluZywg
bGltaXQpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgLy8gMS4gTGV0IHJ4IGJlIHRoZSB0
aGlzIHZhbHVlLgorICAgIC8vIDEuIHZhciByeCBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAy
LiBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24u
CiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVn
RXhwLnByb3RvdHlwZS5AQHNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIp
OwotICAgIGxldCByZWdleHAgPSB0aGlzOworICAgIHZhciByZWdleHAgPSB0aGlzOwogCi0gICAg
Ly8gMy4gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcpLgotICAgIGxldCBzdHIgPSBAdG9TdHJp
bmcoc3RyaW5nKTsKKyAgICAvLyAzLiB2YXIgUyBiZSA/IFRvU3RyaW5nKHN0cmluZykuCisgICAg
dmFyIHN0ciA9IEB0b1N0cmluZyhzdHJpbmcpOwogCi0gICAgLy8gNC4gTGV0IEMgYmUgPyBTcGVj
aWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KLSAgICBsZXQgc3BlY2llc0NvbnN0cnVjdG9y
ID0gQHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdleHAsIEBSZWdFeHApOworICAgIC8vIDQuIHZhciBD
IGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisgICAgdmFyIHNwZWNpZXND
b25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBAUmVnRXhwKTsKIAogICAg
IGlmIChzcGVjaWVzQ29uc3RydWN0b3IgPT09IEBSZWdFeHAgJiYgIUBoYXNPYnNlcnZhYmxlU2lk
ZUVmZmVjdHNGb3JSZWdFeHBTcGxpdChyZWdleHApKQogICAgICAgICByZXR1cm4gQHJlZ0V4cFNw
bGl0RmFzdC5AY2FsbChyZWdleHAsIHN0ciwgbGltaXQpOwogCi0gICAgLy8gNS4gTGV0IGZsYWdz
IGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KLSAgICBsZXQgZmxhZ3MgPSBAdG9T
dHJpbmcocmVnZXhwLmZsYWdzKTsKKyAgICAvLyA1LiB2YXIgZmxhZ3MgYmUgPyBUb1N0cmluZyg/
IEdldChyeCwgImZsYWdzIikpLgorICAgIHZhciBmbGFncyA9IEB0b1N0cmluZyhyZWdleHAuZmxh
Z3MpOwogCi0gICAgLy8gNi4gSWYgZmxhZ3MgY29udGFpbnMgInUiLCBsZXQgdW5pY29kZU1hdGNo
aW5nIGJlIHRydWUuCi0gICAgLy8gNy4gRWxzZSwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSBmYWxz
ZS4KLSAgICBsZXQgdW5pY29kZU1hdGNoaW5nID0gQHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwuQGNh
bGwoZmxhZ3MsICJ1Iik7Ci0gICAgLy8gOC4gSWYgZmxhZ3MgY29udGFpbnMgInkiLCBsZXQgbmV3
RmxhZ3MgYmUgZmxhZ3MuCi0gICAgLy8gOS4gRWxzZSwgbGV0IG5ld0ZsYWdzIGJlIHRoZSBzdHJp
bmcgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBmbGFncyBhbmQgInkiLgotICAgIGxldCBu
ZXdGbGFncyA9IEBzdHJpbmdJbmNsdWRlc0ludGVybmFsLkBjYWxsKGZsYWdzLCAieSIpID8gZmxh
Z3MgOiBmbGFncyArICJ5IjsKKyAgICAvLyA2LiBJZiBmbGFncyBjb250YWlucyAidSIsIHZhciB1
bmljb2RlTWF0Y2hpbmcgYmUgdHJ1ZS4KKyAgICAvLyA3LiBFbHNlLCB2YXIgdW5pY29kZU1hdGNo
aW5nIGJlIGZhbHNlLgorICAgIHZhciB1bmljb2RlTWF0Y2hpbmcgPSBAc3RyaW5nSW5jbHVkZXNJ
bnRlcm5hbC5AY2FsbChmbGFncywgInUiKTsKKyAgICAvLyA4LiBJZiBmbGFncyBjb250YWlucyAi
eSIsIHZhciBuZXdGbGFncyBiZSBmbGFncy4KKyAgICAvLyA5LiBFbHNlLCB2YXIgbmV3RmxhZ3Mg
YmUgdGhlIHN0cmluZyB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIGZsYWdzIGFuZCAieSIu
CisgICAgdmFyIG5ld0ZsYWdzID0gQHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwuQGNhbGwoZmxhZ3Ms
ICJ5IikgPyBmbGFncyA6IGZsYWdzICsgInkiOwogCi0gICAgLy8gMTAuIExldCBzcGxpdHRlciBi
ZSA/IENvbnN0cnVjdChDLCDCqyByeCwgbmV3RmxhZ3MgwrspLgotICAgIGxldCBzcGxpdHRlciA9
IG5ldyBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBuZXdGbGFncyk7CisgICAgLy8gMTAuIHZh
ciBzcGxpdHRlciBiZSA/IENvbnN0cnVjdChDLCDCqyByeCwgbmV3RmxhZ3MgwrspLgorICAgIHZh
ciBzcGxpdHRlciA9IG5ldyBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBuZXdGbGFncyk7CiAK
ICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGFnYWluIGZvciBSZWdFeHAgc3ViY2xhc3NlcyB0aGF0
IHdpbGwgZmFpbCB0aGUgc3BlY2llc0NvbnN0cnVjdG9yIHRlc3QKICAgICAvLyBidXQgY2FuIHN0
aWxsIHVzZSB0aGUgZmFzdCBwYXRoIGFmdGVyIHdlIGludm9rZSB0aGUgY29uc3RydWN0b3IgYWJv
dmUuCiAgICAgaWYgKCFAaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXQoc3Bs
aXR0ZXIpKQogICAgICAgICByZXR1cm4gQHJlZ0V4cFNwbGl0RmFzdC5AY2FsbChzcGxpdHRlciwg
c3RyLCBsaW1pdCk7CiAKLSAgICAvLyAxMS4gTGV0IEEgYmUgQXJyYXlDcmVhdGUoMCkuCi0gICAg
Ly8gMTIuIExldCBsZW5ndGhBIGJlIDAuCi0gICAgbGV0IHJlc3VsdCA9IFtdOworICAgIC8vIDEx
LiB2YXIgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICAvLyAxMi4gdmFyIGxlbmd0aEEgYmUgMC4K
KyAgICB2YXIgcmVzdWx0ID0gW107CiAKLSAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVk
LCBsZXQgbGltIGJlIDJeMzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgor
ICAgIC8vIDEzLiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIHZhciBsaW0gYmUgMl4zMi0xOyBlbHNl
IHZhciBsaW0gYmUgPyBUb1VpbnQzMihsaW1pdCkuCiAgICAgbGltaXQgPSAobGltaXQgPT09IEB1
bmRlZmluZWQpID8gMHhmZmZmZmZmZiA6IGxpbWl0ID4+PiAwOwogCiAgICAgLy8gMTYuIElmIGxp
bSA9IDAsIHJldHVybiBBLgogICAgIGlmICghbGltaXQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAKLSAgICAvLyAxNC4gW0RlZmVyZWQgZnJvbSBhYm92ZV0gTGV0IHNpemUgYmUgdGhlIG51bWJl
ciBvZiBlbGVtZW50cyBpbiBTLgotICAgIGxldCBzaXplID0gc3RyLmxlbmd0aDsKKyAgICAvLyAx
NC4gW0RlZmVyZWQgZnJvbSBhYm92ZV0gdmFyIHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50
cyBpbiBTLgorICAgIHZhciBzaXplID0gc3RyLmxlbmd0aDsKIAogICAgIC8vIDE3LiBJZiBzaXpl
ID0gMCwgdGhlbgogICAgIGlmICghc2l6ZSkgewotICAgICAgICAvLyBhLiBMZXQgeiBiZSA/IFJl
Z0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgotICAgICAgICBsZXQgeiA9IEByZWdFeHBFeGVjKHNwbGl0
dGVyLCBzdHIpOworICAgICAgICAvLyBhLiB2YXIgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIs
IFMpLgorICAgICAgICB2YXIgeiA9IEByZWdFeHBFeGVjKHNwbGl0dGVyLCBzdHIpOwogICAgICAg
ICAvLyBiLiBJZiB6IGlzIG5vdCBudWxsLCByZXR1cm4gQS4KICAgICAgICAgaWYgKHogIT0gbnVs
bCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01MzMsNjggKzUzMyw2OCBAQCBmdW5j
dGlvbiBzcGxpdChzdHJpbmcsIGxpbWl0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIC8vIDE1LiBbRGVmZXJlZCBmcm9tIGFib3ZlXSBMZXQgcCBiZSAwLgotICAgIGxldCBw
b3NpdGlvbiA9IDA7Ci0gICAgLy8gMTguIExldCBxIGJlIHAuCi0gICAgbGV0IG1hdGNoUG9zaXRp
b24gPSAwOworICAgIC8vIDE1LiBbRGVmZXJlZCBmcm9tIGFib3ZlXSB2YXIgcCBiZSAwLgorICAg
IHZhciBwb3NpdGlvbiA9IDA7CisgICAgLy8gMTguIHZhciBxIGJlIHAuCisgICAgdmFyIG1hdGNo
UG9zaXRpb24gPSAwOwogCiAgICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8IHNpemUKICAgICB3
aGlsZSAobWF0Y2hQb3NpdGlvbiA8IHNpemUpIHsKICAgICAgICAgLy8gYS4gUGVyZm9ybSA/IFNl
dChzcGxpdHRlciwgImxhc3RJbmRleCIsIHEsIHRydWUpLgogICAgICAgICBzcGxpdHRlci5sYXN0
SW5kZXggPSBtYXRjaFBvc2l0aW9uOwotICAgICAgICAvLyBiLiBMZXQgeiBiZSA/IFJlZ0V4cEV4
ZWMoc3BsaXR0ZXIsIFMpLgotICAgICAgICBsZXQgbWF0Y2hlcyA9IEByZWdFeHBFeGVjKHNwbGl0
dGVyLCBzdHIpOwotICAgICAgICAvLyBjLiBJZiB6IGlzIG51bGwsIGxldCBxIGJlIEFkdmFuY2VT
dHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICAvLyBiLiB2YXIgeiBi
ZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorICAgICAgICB2YXIgbWF0Y2hlcyA9IEByZWdF
eHBFeGVjKHNwbGl0dGVyLCBzdHIpOworICAgICAgICAvLyBjLiBJZiB6IGlzIG51bGwsIHZhciBx
IGJlIEFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgogICAgICAgICBp
ZiAobWF0Y2hlcyA9PT0gbnVsbCkKICAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBAYWR2YW5j
ZVN0cmluZ0luZGV4KHN0ciwgbWF0Y2hQb3NpdGlvbiwgdW5pY29kZU1hdGNoaW5nKTsKICAgICAg
ICAgLy8gZC4gRWxzZSB6IGlzIG5vdCBudWxsLAogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IC8vIGkuIExldCBlIGJlID8gVG9MZW5ndGgoPyBHZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiKSku
Ci0gICAgICAgICAgICBsZXQgZW5kUG9zaXRpb24gPSBAdG9MZW5ndGgoc3BsaXR0ZXIubGFzdElu
ZGV4KTsKLSAgICAgICAgICAgIC8vIGlpLiBMZXQgZSBiZSBtaW4oZSwgc2l6ZSkuCisgICAgICAg
ICAgICAvLyBpLiB2YXIgZSBiZSA/IFRvTGVuZ3RoKD8gR2V0KHNwbGl0dGVyLCAibGFzdEluZGV4
IikpLgorICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uID0gQHRvTGVuZ3RoKHNwbGl0dGVyLmxh
c3RJbmRleCk7CisgICAgICAgICAgICAvLyBpaS4gdmFyIGUgYmUgbWluKGUsIHNpemUpLgogICAg
ICAgICAgICAgZW5kUG9zaXRpb24gPSAoZW5kUG9zaXRpb24gPD0gc2l6ZSkgPyBlbmRQb3NpdGlv
biA6IHNpemU7Ci0gICAgICAgICAgICAvLyBpaWkuIElmIGUgPSBwLCBsZXQgcSBiZSBBZHZhbmNl
U3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgICAgIC8vIGlpaS4g
SWYgZSA9IHAsIHZhciBxIGJlIEFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hp
bmcpLgogICAgICAgICAgICAgaWYgKGVuZFBvc2l0aW9uID09PSBwb3NpdGlvbikKICAgICAgICAg
ICAgICAgICBtYXRjaFBvc2l0aW9uID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9z
aXRpb24sIHVuaWNvZGVNYXRjaGluZyk7CiAgICAgICAgICAgICAvLyBpdi4gRWxzZSBlICE9IHAs
CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0
cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUg
ZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4K
LSAgICAgICAgICAgICAgICBsZXQgc3ViU3RyID0gQHN0cmluZ1N1YnN0ckludGVybmFsLkBjYWxs
KHN0ciwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbik7CisgICAgICAgICAgICAg
ICAgLy8gMS4gdmFyIFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBv
ZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0
aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCisgICAgICAgICAgICAgICAgdmFyIHN1YlN0ciA9IEBzdHJp
bmdTdWJzdHJJbnRlcm5hbC5AY2FsbChzdHIsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9z
aXRpb24pOwogICAgICAgICAgICAgICAgIC8vIDIuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVy
dHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCi0gICAgICAgICAgICAgICAgLy8gMy4gTGV0
IGxlbmd0aEEgYmUgbGVuZ3RoQSArIDEuCisgICAgICAgICAgICAgICAgLy8gMy4gdmFyIGxlbmd0
aEEgYmUgbGVuZ3RoQSArIDEuCiAgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3Vs
dCwgcmVzdWx0Lmxlbmd0aCwgc3ViU3RyKTsKICAgICAgICAgICAgICAgICAvLyA0LiBJZiBsZW5n
dGhBID0gbGltLCByZXR1cm4gQS4KICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9
PSBsaW1pdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgICAgICAg
ICAgICAgIC8vIDUuIExldCBwIGJlIGUuCisgICAgICAgICAgICAgICAgLy8gNS4gdmFyIHAgYmUg
ZS4KICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwotICAgICAgICAgICAg
ICAgIC8vIDYuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxl
bmd0aCIpKS4KLSAgICAgICAgICAgICAgICAvLyA3LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSBt
YXgobnVtYmVyT2ZDYXB0dXJlcy0xLCAwKS4KLSAgICAgICAgICAgICAgICBsZXQgbnVtYmVyT2ZD
YXB0dXJlcyA9IG1hdGNoZXMubGVuZ3RoID4gMSA/IG1hdGNoZXMubGVuZ3RoIC0gMSA6IDA7Cisg
ICAgICAgICAgICAgICAgLy8gNi4gdmFyIG51bWJlck9mQ2FwdHVyZXMgYmUgPyBUb0xlbmd0aCg/
IEdldCh6LCAibGVuZ3RoIikpLgorICAgICAgICAgICAgICAgIC8vIDcuIHZhciBudW1iZXJPZkNh
cHR1cmVzIGJlIG1heChudW1iZXJPZkNhcHR1cmVzLTEsIDApLgorICAgICAgICAgICAgICAgIHZh
ciBudW1iZXJPZkNhcHR1cmVzID0gbWF0Y2hlcy5sZW5ndGggPiAxID8gbWF0Y2hlcy5sZW5ndGgg
LSAxIDogMDsKIAotICAgICAgICAgICAgICAgIC8vIDguIExldCBpIGJlIDEuCi0gICAgICAgICAg
ICAgICAgbGV0IGkgPSAxOworICAgICAgICAgICAgICAgIC8vIDguIHZhciBpIGJlIDEuCisgICAg
ICAgICAgICAgICAgdmFyIGkgPSAxOwogICAgICAgICAgICAgICAgIC8vIDkuIFJlcGVhdCwgd2hp
bGUgaSA8PSBudW1iZXJPZkNhcHR1cmVzLAogICAgICAgICAgICAgICAgIHdoaWxlIChpIDw9IG51
bWJlck9mQ2FwdHVyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gYS4gTGV0IG5leHRDYXB0
dXJlIGJlID8gR2V0KHosICEgVG9TdHJpbmcoaSkpLgotICAgICAgICAgICAgICAgICAgICBsZXQg
bmV4dENhcHR1cmUgPSBtYXRjaGVzW2ldOworICAgICAgICAgICAgICAgICAgICAvLyBhLiB2YXIg
bmV4dENhcHR1cmUgYmUgPyBHZXQoeiwgISBUb1N0cmluZyhpKSkuCisgICAgICAgICAgICAgICAg
ICAgIHZhciBuZXh0Q2FwdHVyZSA9IG1hdGNoZXNbaV07CiAgICAgICAgICAgICAgICAgICAgIC8v
IGIuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwg
bmV4dENhcHR1cmUpLgotICAgICAgICAgICAgICAgICAgICAvLyBkLiBMZXQgbGVuZ3RoQSBiZSBs
ZW5ndGhBICsgMS4KKyAgICAgICAgICAgICAgICAgICAgLy8gZC4gdmFyIGxlbmd0aEEgYmUgbGVu
Z3RoQSArIDEuCiAgICAgICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIHJl
c3VsdC5sZW5ndGgsIG5leHRDYXB0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgLy8gZS4gSWYg
bGVuZ3RoQSA9IGxpbSwgcmV0dXJuIEEuCiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQu
bGVuZ3RoID09IGxpbWl0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgICAgICAgICAgICAgLy8gYy4gTGV0IGkgYmUgaSArIDEuCisgICAgICAgICAgICAg
ICAgICAgIC8vIGMuIHZhciBpIGJlIGkgKyAxLgogICAgICAgICAgICAgICAgICAgICBpKys7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIDEwLiBMZXQgcSBiZSBwLgorICAg
ICAgICAgICAgICAgIC8vIDEwLiB2YXIgcSBiZSBwLgogICAgICAgICAgICAgICAgIG1hdGNoUG9z
aXRpb24gPSBwb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAv
LyAyMC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBT
IGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJv
dWdoIHNpemUgKGV4Y2x1c2l2ZSkuCi0gICAgbGV0IHJlbWFpbmluZ1N0ciA9IEBzdHJpbmdTdWJz
dHJJbnRlcm5hbC5AY2FsbChzdHIsIHBvc2l0aW9uLCBzaXplKTsKKyAgICAvLyAyMC4gdmFyIFQg
YmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcg
b2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4
Y2x1c2l2ZSkuCisgICAgdmFyIHJlbWFpbmluZ1N0ciA9IEBzdHJpbmdTdWJzdHJJbnRlcm5hbC5A
Y2FsbChzdHIsIHBvc2l0aW9uLCBzaXplKTsKICAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURh
dGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KICAgICBAcHV0QnlWYWxEaXJl
Y3QocmVzdWx0LCByZXN1bHQubGVuZ3RoLCByZW1haW5pbmdTdHIpOwogICAgIC8vIDIyLiBSZXR1
cm4gQS4KQEAgLTYwNyw3ICs2MDcsNyBAQCBmdW5jdGlvbiB0ZXN0KHN0ckFyZykKIHsKICAgICAi
dXNlIHN0cmljdCI7CiAKLSAgICBsZXQgcmVnZXhwID0gdGhpczsKKyAgICB2YXIgcmVnZXhwID0g
dGhpczsKIAogICAgIC8vIENoZWNrIGZvciBvYnNlcnZhYmxlIHNpZGUgZWZmZWN0cyBhbmQgY2Fs
bCB0aGUgZmFzdCBwYXRoIGlmIHRoZXJlIGFyZW4ndCBhbnkuCiAgICAgaWYgKEBpc1JlZ0V4cE9i
amVjdChyZWdleHApCkBAIC02MTUsMTYgKzYxNSwxNiBAQCBmdW5jdGlvbiB0ZXN0KHN0ckFyZykK
ICAgICAgICAgJiYgdHlwZW9mIHJlZ2V4cC5sYXN0SW5kZXggPT09ICJudW1iZXIiKQogICAgICAg
ICByZXR1cm4gQHJlZ0V4cFRlc3RGYXN0LkBjYWxsKHJlZ2V4cCwgc3RyQXJnKTsKIAotICAgIC8v
IDEuIExldCBSIGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIC8vIDEuIHZhciBSIGJlIHRoZSB0aGlz
IHZhbHVlLgogICAgIC8vIDIuIElmIFR5cGUoUikgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBl
RXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghQGlzT2JqZWN0KHJlZ2V4cCkpCiAgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS50ZXN0IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IGJlIGFuIE9iamVjdCIpOwogCi0gICAgLy8gMy4gTGV0IHN0cmluZyBiZSA/IFRvU3RyaW5nKFMp
LgotICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyQXJnKTsKKyAgICAvLyAzLiB2YXIgc3RyaW5n
IGJlID8gVG9TdHJpbmcoUykuCisgICAgdmFyIHN0ciA9IEB0b1N0cmluZyhzdHJBcmcpOwogCi0g
ICAgLy8gNC4gTGV0IG1hdGNoIGJlID8gUmVnRXhwRXhlYyhSLCBzdHJpbmcpLgotICAgIGxldCBt
YXRjaCA9IEByZWdFeHBFeGVjKHJlZ2V4cCwgc3RyKTsKKyAgICAvLyA0LiB2YXIgbWF0Y2ggYmUg
PyBSZWdFeHBFeGVjKFIsIHN0cmluZykuCisgICAgdmFyIG1hdGNoID0gQHJlZ0V4cEV4ZWMocmVn
ZXhwLCBzdHIpOwogCiAgICAgLy8gNS4gSWYgbWF0Y2ggaXMgbm90IG51bGwsIHJldHVybiB0cnVl
OyBlbHNlIHJldHVybiBmYWxzZS4KICAgICBpZiAobWF0Y2ggIT09IG51bGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTAzYmE2YjljMDJjNzM5YmE2ZWIzODMxMzE0MTNiMWUw
Y2U1NmI2Ni4uZTdlOWRkMzQzMmUzZDExYWZiMjZkMGUyYTEzNjA1Mjk1ZmRlNjJmZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcwpAQCAtMzAsMjcgKzMwLDI3IEBAIGZ1bmN0aW9uIG5l
eHQoKQogICAgIGlmICghQGlzT2JqZWN0KHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IiVSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB8dGhpc3wgdG8g
YmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQgZG9uZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAicmVnRXhwU3RyaW5nSXRlcmF0b3JEb25lIik7CisgICAgdmFyIGRvbmUgPSBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUodGhpcywgInJlZ0V4cFN0cmluZ0l0ZXJhdG9yRG9uZSIpOwogICAgIGlm
IChkb25lID09PSBAdW5kZWZpbmVkKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVSZWdFeHBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB8dGhpc3wgdG8gYmUgYW4gUmVn
RXhwIFN0cmluZyBJdGVyYXRvciBpbnN0YW5jZSIpOwogCiAgICAgaWYgKGRvbmUpCiAgICAgICAg
IHJldHVybiB7IHZhbHVlOiBAdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07CiAKLSAgICBsZXQgcmVn
RXhwID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJyZWdFeHBTdHJpbmdJdGVyYXRvclJl
Z0V4cCIpOwotICAgIGxldCBzdHJpbmcgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJl
Z0V4cFN0cmluZ0l0ZXJhdG9yU3RyaW5nIik7Ci0gICAgbGV0IGdsb2JhbCA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAicmVnRXhwU3RyaW5nSXRlcmF0b3JHbG9iYWwiKTsKLSAgICBsZXQg
ZnVsbFVuaWNvZGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJlZ0V4cFN0cmluZ0l0
ZXJhdG9yVW5pY29kZSIpOwotICAgIGxldCBtYXRjaCA9IEByZWdFeHBFeGVjKHJlZ0V4cCwgc3Ry
aW5nKTsKKyAgICB2YXIgcmVnRXhwID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJyZWdF
eHBTdHJpbmdJdGVyYXRvclJlZ0V4cCIpOworICAgIHZhciBzdHJpbmcgPSBAZ2V0QnlJZERpcmVj
dFByaXZhdGUodGhpcywgInJlZ0V4cFN0cmluZ0l0ZXJhdG9yU3RyaW5nIik7CisgICAgdmFyIGds
b2JhbCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAicmVnRXhwU3RyaW5nSXRlcmF0b3JH
bG9iYWwiKTsKKyAgICB2YXIgZnVsbFVuaWNvZGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhp
cywgInJlZ0V4cFN0cmluZ0l0ZXJhdG9yVW5pY29kZSIpOworICAgIHZhciBtYXRjaCA9IEByZWdF
eHBFeGVjKHJlZ0V4cCwgc3RyaW5nKTsKICAgICBpZiAobWF0Y2ggPT09IG51bGwpIHsKICAgICAg
ICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJyZWdFeHBTdHJpbmdJdGVyYXRvckRvbmUi
LCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IEB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fTsKICAgICB9CiAKICAgICBpZiAoZ2xvYmFsKSB7Ci0gICAgICAgIGxldCBtYXRjaFN0ciA9IEB0
b1N0cmluZyhtYXRjaFswXSk7CisgICAgICAgIHZhciBtYXRjaFN0ciA9IEB0b1N0cmluZyhtYXRj
aFswXSk7CiAgICAgICAgIGlmIChtYXRjaFN0ciA9PT0gIiIpIHsKLSAgICAgICAgICAgIGxldCB0
aGlzSW5kZXggPSBAdG9MZW5ndGgocmVnRXhwLmxhc3RJbmRleCk7CisgICAgICAgICAgICB2YXIg
dGhpc0luZGV4ID0gQHRvTGVuZ3RoKHJlZ0V4cC5sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmVn
RXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyaW5nLCB0aGlzSW5kZXgsIGZ1
bGxVbmljb2RlKTsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKaW5kZXggYTE0MTVlYmY2MzJkNWNi
MDExOTRkNDVkMWQ3NjJiNmQ1ZGVlYzJjMC4uM2Q4YWVhZjVjYzczOGYwMWJhMWJiODhlZjBmOWQ4
MTE0YTU4Y2VhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0
cmluZ1Byb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3Ry
aW5nUHJvdG90eXBlLmpzCkBAIC0zOCw4ICszOCw4IEBAIGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cCkK
ICAgICAgICAgICAgIHJldHVybiBtYXRjaGVyLkBjYWxsKHJlZ2V4cCwgdGhpcyk7CiAgICAgfQog
Ci0gICAgbGV0IHRoaXNTdHJpbmcgPSBAdG9TdHJpbmcodGhpcyk7Ci0gICAgbGV0IGNyZWF0ZWRS
ZWdFeHAgPSBAcmVnRXhwQ3JlYXRlKHJlZ2V4cCwgQHVuZGVmaW5lZCk7CisgICAgdmFyIHRoaXNT
dHJpbmcgPSBAdG9TdHJpbmcodGhpcyk7CisgICAgdmFyIGNyZWF0ZWRSZWdFeHAgPSBAcmVnRXhw
Q3JlYXRlKHJlZ2V4cCwgQHVuZGVmaW5lZCk7CiAgICAgcmV0dXJuIGNyZWF0ZWRSZWdFeHAuQG1h
dGNoU3ltYm9sKHRoaXNTdHJpbmcpOwogfQogCkBAIC01NCwxMyArNTQsMTMgQEAgZnVuY3Rpb24g
bWF0Y2hBbGwoYXJnKQogICAgICAgICBpZiAoQGlzUmVnRXhwKGFyZykgJiYgIUBzdHJpbmdJbmNs
dWRlc0ludGVybmFsLkBjYWxsKEB0b1N0cmluZyhhcmcuZmxhZ3MpLCAiZyIpKQogICAgICAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLm1hdGNoQWxsIGFyZ3VtZW50IG11
c3Qgbm90IGJlIGEgbm9uLWdsb2JhbCByZWd1bGFyIGV4cHJlc3Npb24iKTsKIAotICAgICAgICBs
ZXQgbWF0Y2hlciA9IGFyZy5AbWF0Y2hBbGxTeW1ib2w7CisgICAgICAgIHZhciBtYXRjaGVyID0g
YXJnLkBtYXRjaEFsbFN5bWJvbDsKICAgICAgICAgaWYgKCFAaXNVbmRlZmluZWRPck51bGwobWF0
Y2hlcikpCiAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlci5AY2FsbChhcmcsIHRoaXMpOwogICAg
IH0KIAotICAgIGxldCBzdHJpbmcgPSBAdG9TdHJpbmcodGhpcyk7Ci0gICAgbGV0IHJlZ0V4cCA9
IEByZWdFeHBDcmVhdGUoYXJnLCAiZyIpOworICAgIHZhciBzdHJpbmcgPSBAdG9TdHJpbmcodGhp
cyk7CisgICAgdmFyIHJlZ0V4cCA9IEByZWdFeHBDcmVhdGUoYXJnLCAiZyIpOwogICAgIHJldHVy
biByZWdFeHAuQG1hdGNoQWxsU3ltYm9sKHN0cmluZyk7CiB9CiAKQEAgLTIyMiwxNSArMjIyLDE1
IEBAIGZ1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2UocmVn
ZXhwLCByZXBsYWNlcikKICAgICBpZiAocmVwbGFjZXIgIT09IEByZWdFeHBQcm90b3R5cGVTeW1i
b2xSZXBsYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBsZXQgcmVnZXhwRXhl
YyA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImV4ZWMiKTsKKyAgICB2YXIgcmVnZXhwRXhlYyA9IEB0
cnlHZXRCeUlkKHJlZ2V4cCwgImV4ZWMiKTsKICAgICBpZiAocmVnZXhwRXhlYyAhPT0gQHJlZ0V4
cEJ1aWx0aW5FeGVjKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGxldCByZWdleHBHbG9i
YWwgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJnbG9iYWwiKTsKKyAgICB2YXIgcmVnZXhwR2xvYmFs
ID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZ2xvYmFsIik7CiAgICAgaWYgKHJlZ2V4cEdsb2JhbCAh
PT0gQHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGxldCByZWdleHBVbmljb2RlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOworICAg
IHZhciByZWdleHBVbmljb2RlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOwogICAg
IGlmIChyZWdleHBVbmljb2RlICE9PSBAcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIGZ1bmN0aW9uIHJlcGxhY2Uoc2Vh
cmNoLCByZXBsYWNlKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUu
cmVwbGFjZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsK
IAogICAgIGlmIChzZWFyY2ggIT0gbnVsbCkgewotICAgICAgICBsZXQgcmVwbGFjZXIgPSBzZWFy
Y2guQHJlcGxhY2VTeW1ib2w7CisgICAgICAgIHZhciByZXBsYWNlciA9IHNlYXJjaC5AcmVwbGFj
ZVN5bWJvbDsKICAgICAgICAgaWYgKHJlcGxhY2VyICE9PSBAdW5kZWZpbmVkKSB7CiAgICAgICAg
ICAgICBpZiAoIUBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKHNlYXJj
aCwgcmVwbGFjZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBAdG9TdHJpbmcodGhpcykuQHJl
cGxhY2VVc2luZ1JlZ0V4cChzZWFyY2gsIHJlcGxhY2UpOwpAQCAtMjU0LDggKzI1NCw4IEBAIGZ1
bmN0aW9uIHJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
bGV0IHRoaXNTdHJpbmcgPSBAdG9TdHJpbmcodGhpcyk7Ci0gICAgbGV0IHNlYXJjaFN0cmluZyA9
IEB0b1N0cmluZyhzZWFyY2gpOworICAgIHZhciB0aGlzU3RyaW5nID0gQHRvU3RyaW5nKHRoaXMp
OworICAgIHZhciBzZWFyY2hTdHJpbmcgPSBAdG9TdHJpbmcoc2VhcmNoKTsKICAgICByZXR1cm4g
dGhpc1N0cmluZy5AcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKHNlYXJjaFN0cmluZywgcmVwbGFj
ZSk7CiB9CiAKQEAgLTM0NiwxNiArMzQ2LDE2IEBAIGZ1bmN0aW9uIGNyZWF0ZUhUTUwoZnVuYywg
c3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpCiAgICAgInVzZSBzdHJpY3QiOwogICAgIGlm
IChAaXNVbmRlZmluZWRPck51bGwoc3RyaW5nKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKGAk
e2Z1bmN9IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZGApOwot
ICAgIGxldCBTID0gQHRvU3RyaW5nKHN0cmluZyk7Ci0gICAgbGV0IHAxID0gIjwiICsgdGFnOwor
ICAgIHZhciBTID0gQHRvU3RyaW5nKHN0cmluZyk7CisgICAgdmFyIHAxID0gIjwiICsgdGFnOwog
ICAgIGlmIChhdHRyaWJ1dGUpIHsKLSAgICAgICAgbGV0IFYgPSBAdG9TdHJpbmcodmFsdWUpOwot
ICAgICAgICBsZXQgZXNjYXBlZFYgPSBWLkByZXBsYWNlVXNpbmdSZWdFeHAoLyIvZywgJyZxdW90
OycpOworICAgICAgICB2YXIgViA9IEB0b1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHZhciBlc2Nh
cGVkViA9IFYuQHJlcGxhY2VVc2luZ1JlZ0V4cCgvIi9nLCAnJnF1b3Q7Jyk7CiAgICAgICAgIHAx
ID0gcDEgKyAiICIgKyBAdG9TdHJpbmcoYXR0cmlidXRlKSArICc9IicgKyBlc2NhcGVkViArICci
JwogICAgIH0KLSAgICBsZXQgcDIgPSBwMSArICI+IgotICAgIGxldCBwMyA9IHAyICsgUzsKLSAg
ICBsZXQgcDQgPSBwMyArICI8LyIgKyB0YWcgKyAiPiI7CisgICAgdmFyIHAyID0gcDEgKyAiPiIK
KyAgICB2YXIgcDMgPSBwMiArIFM7CisgICAgdmFyIHA0ID0gcDMgKyAiPC8iICsgdGFnICsgIj4i
OwogICAgIHJldHVybiBwNDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKaW5kZXggZmE4ODVkMTEzMDI1NThk
NWU2YzExMWI1OWY3MTQxYTU0ZDI3YzEwZS4uMzJlOTZlYzIyNDNmZTBkZjViYzFlOTJiYzU5MTdm
MWY4NzkwOTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5
cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCkBAIC0zMSwxNCArMzEsMTQgQEAKIGZ1bmN0aW9u
IG9mKC8qIGl0ZW1zLi4uICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKLSAgICBsZXQgbGVuID0g
YXJndW1lbnRzLmxlbmd0aDsKLSAgICBsZXQgY29uc3RydWN0RnVuY3Rpb24gPSBAZ2V0QnlJZERp
cmVjdFByaXZhdGUodGhpcywgImFsbG9jYXRlVHlwZWRBcnJheSIpOworICAgIHZhciBsZW4gPSBh
cmd1bWVudHMubGVuZ3RoOworICAgIHZhciBjb25zdHJ1Y3RGdW5jdGlvbiA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAiYWxsb2NhdGVUeXBlZEFycmF5Iik7CiAgICAgaWYgKGNvbnN0cnVj
dEZ1bmN0aW9uID09PSBAdW5kZWZpbmVkKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVk
QXJyYXkub2YgcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3MgYSBUeXBlZEFy
cmF5IGNvbnN0cnVjdG9yIik7CiAKLSAgICBsZXQgcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24o
bGVuKTsKKyAgICB2YXIgcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24obGVuKTsKIAotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47
IGkrKykKICAgICAgICAgcmVzdWx0W2ldID0gYXJndW1lbnRzW2ldOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTQ4LDkgKzQ4LDkgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4g
WyAsIHRoaXNBcmcgXSBdICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGxldCBtYXBG
biA9IEBhcmd1bWVudCgxKTsKKyAgICB2YXIgbWFwRm4gPSBAYXJndW1lbnQoMSk7CiAKLSAgICBs
ZXQgdGhpc0FyZzsKKyAgICB2YXIgdGhpc0FyZzsKIAogICAgIGlmIChtYXBGbiAhPT0gQHVuZGVm
aW5lZCkgewogICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSAiZnVuY3Rpb24iKQpAQCAtNTks
MjUgKzU5LDI1IEBAIGZ1bmN0aW9uIGZyb20oaXRlbXMgLyogWyAsIG1hcGZuIFsgLCB0aGlzQXJn
IF0gXSAqLykKICAgICAgICAgdGhpc0FyZyA9IEBhcmd1bWVudCgyKTsKICAgICB9CiAKLSAgICBs
ZXQgYXJyYXlMaWtlID0gQHRvT2JqZWN0KGl0ZW1zLCAiVHlwZWRBcnJheS5mcm9tIHJlcXVpcmVz
IGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgdmFy
IGFycmF5TGlrZSA9IEB0b09iamVjdChpdGVtcywgIlR5cGVkQXJyYXkuZnJvbSByZXF1aXJlcyBh
biBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgbGV0
IGl0ZXJhdG9yTWV0aG9kID0gaXRlbXMuQGl0ZXJhdG9yU3ltYm9sOworICAgIHZhciBpdGVyYXRv
ck1ldGhvZCA9IGl0ZW1zLkBpdGVyYXRvclN5bWJvbDsKICAgICBpZiAoaXRlcmF0b3JNZXRob2Qg
IT0gbnVsbCkgewogICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAiZnVuY3Rp
b24iKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LmZyb20gcmVxdWly
ZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wu
aXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOwogCi0gICAgICAgIGxldCBh
Y2N1bXVsYXRvciA9IFtdOworICAgICAgICB2YXIgYWNjdW11bGF0b3IgPSBbXTsKIAotICAgICAg
ICBsZXQgayA9IDA7Ci0gICAgICAgIGxldCBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxs
KGl0ZW1zKTsKKyAgICAgICAgdmFyIGsgPSAwOworICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVy
YXRvck1ldGhvZC5AY2FsbChpdGVtcyk7CiAKICAgICAgICAgLy8gU2luY2UgZm9yLW9mIGxvb3Ag
b25jZSBtb3JlIGxvb2tzIHVwIHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5IG9mIGEgZ2l2ZW4gaXRl
cmFibGUsCiAgICAgICAgIC8vIGl0IGNvdWxkIGJlIG9ic2VydmFibGUgaWYgdGhlIHVzZXIgZGVm
aW5lcyBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4KICAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBz
aXR1YXRpb24sIHdlIGRlZmluZSBhIHdyYXBwZXIgb2JqZWN0IHRoYXQgQEBpdGVyYXRvciBqdXN0
IHJldHVybnMgYSBnaXZlbiBpdGVyYXRvci4KLSAgICAgICAgbGV0IHdyYXBwZXIgPSB7fTsKKyAg
ICAgICAgdmFyIHdyYXBwZXIgPSB7fTsKICAgICAgICAgd3JhcHBlci5AaXRlcmF0b3JTeW1ib2wg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGl0ZXJhdG9yOyB9CiAKLSAgICAgICAgZm9yIChsZXQgdmFs
dWUgb2Ygd3JhcHBlcikgeworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVyKSB7CiAg
ICAgICAgICAgICBpZiAobWFwRm4pCiAgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGFj
Y3VtdWxhdG9yLCBrLCB0aGlzQXJnID09PSBAdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDog
bWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTg1
LDMwICs4NSwzMCBAQCBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qIFsgLCBtYXBmbiBbICwgdGhpc0Fy
ZyBdIF0gKi8pCiAgICAgICAgICAgICBrKys7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgY29u
c3RydWN0RnVuY3Rpb24gPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFsbG9jYXRlVHlw
ZWRBcnJheSIpOworICAgICAgICB2YXIgY29uc3RydWN0RnVuY3Rpb24gPSBAZ2V0QnlJZERpcmVj
dFByaXZhdGUodGhpcywgImFsbG9jYXRlVHlwZWRBcnJheSIpOwogICAgICAgICBpZiAoY29uc3Ry
dWN0RnVuY3Rpb24gPT09IEB1bmRlZmluZWQpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IlR5cGVkQXJyYXkuZnJvbSByZXF1aXJlcyBpdHMgdGhpcyBhcmd1bWVudCBzdWJjbGFzcyBhIFR5
cGVkQXJyYXkgY29uc3RydWN0b3IiKTsKIAotICAgICAgICBsZXQgcmVzdWx0ID0gY29uc3RydWN0
RnVuY3Rpb24oayk7CisgICAgICAgIHZhciByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihrKTsK
IAotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGs7IGkrKykgCisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgazsgaSsrKSAKICAgICAgICAgICAgIHJlc3VsdFtpXSA9IGFjY3VtdWxhdG9y
W2ldOwogCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBsZXQgYXJyYXlM
aWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgpOworICAgIHZhciBhcnJheUxp
a2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7CiAKLSAgICBsZXQgY29uc3Ry
dWN0RnVuY3Rpb24gPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFsbG9jYXRlVHlwZWRB
cnJheSIpOworICAgIHZhciBjb25zdHJ1Y3RGdW5jdGlvbiA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0
ZSh0aGlzLCAiYWxsb2NhdGVUeXBlZEFycmF5Iik7CiAgICAgaWYgKGNvbnN0cnVjdEZ1bmN0aW9u
ID09PSBAdW5kZWZpbmVkKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInRoaXMgZG9lcyBub3Qg
c3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIik7CiAKLSAgICBsZXQgcmVzdWx0ID0g
Y29uc3RydWN0RnVuY3Rpb24oYXJyYXlMaWtlTGVuZ3RoKTsKKyAgICB2YXIgcmVzdWx0ID0gY29u
c3RydWN0RnVuY3Rpb24oYXJyYXlMaWtlTGVuZ3RoKTsKIAotICAgIGxldCBrID0gMDsKKyAgICB2
YXIgayA9IDA7CiAgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHsKLSAgICAgICAgbGV0
IHZhbHVlID0gYXJyYXlMaWtlW2tdOworICAgICAgICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107
CiAgICAgICAgIGlmIChtYXBGbikKICAgICAgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNBcmcgPT09
IEB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1
ZSwgayk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKaW5kZXggODNkNzUxMTkxYmQ5OGQ2MjZjZWFi
NjA3MjAxNzU2MTM2NDU2YzU2MC4uM2I3ODFkYzBlMGQ5YjUyZGI0ZWViMGJkMWUwNGRmOTZkOTlk
NTllNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJy
YXlQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanMKQEAgLTM1LDcgKzM1LDcgQEAKIGZ1bmN0aW9uIHR5cGVkQXJyYXlT
cGVjaWVzQ29uc3RydWN0b3IodmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwotICAgIGxldCBj
b25zdHJ1Y3RvciA9IHZhbHVlLmNvbnN0cnVjdG9yOworICAgIHZhciBjb25zdHJ1Y3RvciA9IHZh
bHVlLmNvbnN0cnVjdG9yOwogICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKICAg
ICAgICAgcmV0dXJuIEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih2YWx1ZSk7CiAK
QEAgLTYwLDcgKzYwLDcgQEAgZnVuY3Rpb24gdHlwZWRBcnJheUNsYW1wQXJndW1lbnRUb1N0YXJ0
T3JFbmQodmFsdWUsIGxlbmd0aCwgdW5kZWZpbmVkVmFsdWUpCiAgICAgaWYgKHZhbHVlID09PSBA
dW5kZWZpbmVkKQogICAgICAgICByZXR1cm4gdW5kZWZpbmVkVmFsdWU7CiAKLSAgICBsZXQgaW50
ID0gQHRvSW50ZWdlcih2YWx1ZSk7CisgICAgdmFyIGludCA9IEB0b0ludGVnZXIodmFsdWUpOwog
ICAgIGlmIChpbnQgPCAwKSB7CiAgICAgICAgIGludCArPSBsZW5ndGg7CiAgICAgICAgIHJldHVy
biBpbnQgPCAwID8gMCA6IGludDsKQEAgLTg5LDE1ICs4OSwxNSBAQCBmdW5jdGlvbiBmaWxsKHZh
bHVlIC8qIFssIHN0YXJ0IFssIGVuZF1dICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAg
IGxldCBsZW5ndGggPSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0g
QHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CiAKLSAgICBsZXQgc3RhcnQgPSBAYXJndW1lbnQoMSk7
Ci0gICAgbGV0IGVuZCA9IEBhcmd1bWVudCgyKTsKKyAgICB2YXIgc3RhcnQgPSBAYXJndW1lbnQo
MSk7CisgICAgdmFyIGVuZCA9IEBhcmd1bWVudCgyKTsKIAogICAgIHN0YXJ0ID0gQHR5cGVkQXJy
YXlDbGFtcEFyZ3VtZW50VG9TdGFydE9yRW5kKHN0YXJ0LCBsZW5ndGgsIDApOwogICAgIGVuZCA9
IEB0eXBlZEFycmF5Q2xhbXBBcmd1bWVudFRvU3RhcnRPckVuZChlbmQsIGxlbmd0aCwgbGVuZ3Ro
KTsKIAotICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKQorICAgIGZvciAodmFy
IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKQogICAgICAgICB0aGlzW2ldID0gdmFsdWU7CiAgICAg
cmV0dXJuIHRoaXM7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgZnVuY3Rpb24gZmluZChjYWxsYmFj
ayAvKiBbLCB0aGlzQXJnXSAqLykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5
LnByb3RvdHlwZS5maW5kIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBsZXQgZWxlbSA9IHRoaXNb
aV07CisgICAgICAgIHZhciBlbGVtID0gdGhpc1tpXTsKICAgICAgICAgaWYgKGNhbGxiYWNrLkBj
YWxsKHRoaXNBcmcsIGVsZW0sIGksIHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuIGVsZW07CiAg
ICAgfQpAQCAtMjM4LDEyICsyMzgsMTIgQEAgZnVuY3Rpb24gc3ViYXJyYXkoYmVnaW4sIGVuZCkK
ICAgICBpZiAoIUBpc1R5cGVkQXJyYXlWaWV3KHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoInx0aGlzfCBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Iik7CiAKLSAgICBsZXQgc3Rh
cnQgPSBAdG9JbnRlZ2VyKGJlZ2luKTsKLSAgICBsZXQgZmluaXNoOworICAgIHZhciBzdGFydCA9
IEB0b0ludGVnZXIoYmVnaW4pOworICAgIHZhciBmaW5pc2g7CiAgICAgaWYgKGVuZCAhPT0gQHVu
ZGVmaW5lZCkKICAgICAgICAgZmluaXNoID0gQHRvSW50ZWdlcihlbmQpOwogCi0gICAgbGV0IGNv
bnN0cnVjdG9yID0gQHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IodGhpcyk7CisgICAgdmFy
IGNvbnN0cnVjdG9yID0gQHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IodGhpcyk7CiAKICAg
ICByZXR1cm4gQHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZS5AY2FsbCh0aGlzLCBzdGFydCwgZmlu
aXNoLCBjb25zdHJ1Y3Rvcik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387494</attachid>
            <date>2020-01-12 15:14:10 -0800</date>
            <delta_ts>2020-01-12 15:59:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206157-20200112151409.patch</filename>
            <type>text/plain</type>
            <size>58238</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NzhiNDc1Y2RkY2VlOTkwOWQwMGU0NTE5NDc4ZDAwZjc2OGNiNGY0Li45MTIzZWVjZWQyZTExNDZm
NzU2MDBhYWYxOTU2YzgyOTBjMzNjNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMC0wMS0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENvbnNpc3RlbnRseSB1c2UgInZhciIgaW4gYnVpbHRpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGV0IC8gY29u
c3QgcmVxdWlyZXMgYWRkaXRpb25hbCBieXRlY29kZSB0byBtYWtlIGl0IEVtcHR5IGluaXRpYWxp
emVkIGZvciBub3cuCisgICAgICAgIEZvciBidWlsdGluIEpTLCB3ZSB3b3VsZCBsaWtlIHRvIGtl
ZXAgaXQgYXMgZWZmaWNpZW50IGFuZCBjb21wYWN0IGFzIHdlIGNhbgorICAgICAgICBzbyB3ZSBz
aG91bGQgdXNlIGB2YXJgIGNvbnNpc3RlbnRseS4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzOgorICAgICAgICAoc29ydC5zdHJpbmdDb21wYXJhdG9yKToKKyAgICAgICAg
KHNvcnQuY29tcGFjdFNwYXJzZSk6CisgICAgICAgIChzb3J0LmNvbXBhY3RTbG93KToKKyAgICAg
ICAgKHNvcnQuY29tcGFjdCk6CisgICAgICAgIChzb3J0Lm1lcmdlKToKKyAgICAgICAgKHNvcnQu
bWVyZ2VTb3J0KToKKyAgICAgICAgKHNvcnQuYnVja2V0U29ydCk6CisgICAgICAgIChzb3J0LmNv
bXBhcmF0b3JTb3J0KToKKyAgICAgICAgKHNvcnQuc3RyaW5nU29ydCk6CisgICAgICAgIChzb3J0
KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuY29uY2F0U2xvd1BhdGgpOgorICAgICAgICAoY29u
Y2F0KToKKyAgICAgICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAg
KGNhbGwpOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3lt
Ym9sSGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJ1aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllcyk6CisgICAgICAgIChn
bG9iYWxQcml2YXRlLmNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucyk6CisgICAgICAgICog
YnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzOgorICAgICAgICAocGVyZm9ybUl0ZXJhdGlvbik6
CisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzOgorICAgICAgICAoYXN5bmMgbG9h
ZE1vZHVsZSk6CisgICAgICAgIChhc3luYyBsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAg
ICAoYXN5bmMgcmVxdWVzdEltcG9ydE1vZHVsZSk6CisgICAgICAgIChkZXBlbmRlbmN5S2V5c0lm
RXZhbHVhdGVkKToKKyAgICAgICAgKiBidWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qczoKKyAg
ICAgICAgKGZyb21FbnRyaWVzKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlUHJvdG90eXBl
LmpzOgorICAgICAgICAoZmluYWxseSk6CisgICAgICAgICh2YWx1ZVRodW5rKToKKyAgICAgICAg
KGdsb2JhbFByaXZhdGUuZ2V0VGhlbkZpbmFsbHkpOgorICAgICAgICAodGhyb3dlcik6CisgICAg
ICAgIChnbG9iYWxQcml2YXRlLmdldENhdGNoRmluYWxseSk6CisgICAgICAgIChjb25zdC52YWx1
ZVRodW5rKTogRGVsZXRlZC4KKyAgICAgICAgKGNvbnN0LnRocm93ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZh
dGUuYWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUucmVnRXhwRXhl
Yyk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJl
Z0V4cE1hdGNoKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWF0Y2hTbG93KToKKyAgICAgICAg
KG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLm1hdGNoKToKKyAgICAgICAgKG92
ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLm1hdGNoQWxsKToKKyAgICAgICAgKGdl
dFN1YnN0aXR1dGlvbik6CisgICAgICAgIChvdmVycmlkZGVuTmFtZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5yZXBsYWNlKToKKyAgICAgICAgKG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnNlYXJjaCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmhhc09ic2VydmFibGVTaWRlRWZm
ZWN0c0ZvclJlZ0V4cFNwbGl0KToKKyAgICAgICAgKG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnNwbGl0KToKKyAgICAgICAgKGludHJpbnNpYy5SZWdFeHBUZXN0SW50cmluc2lj
LnRlc3QpOgorICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAobmV4dCk6CisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBl
LmpzOgorICAgICAgICAobWF0Y2gpOgorICAgICAgICAobWF0Y2hBbGwpOgorICAgICAgICAoZ2xv
YmFsUHJpdmF0ZS5oYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlKToKKyAg
ICAgICAgKGludHJpbnNpYy5TdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljLnJlcGxhY2Up
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jcmVhdGVIVE1MKToKKyAgICAgICAgKiBidWlsdGlu
cy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanM6CisgICAgICAgIChvZik6CisgICAgICAgIChmcm9t
KToKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOgorICAgICAgICAo
Z2xvYmFsUHJpdmF0ZS50eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKGds
b2JhbFByaXZhdGUudHlwZWRBcnJheUNsYW1wQXJndW1lbnRUb1N0YXJ0T3JFbmQpOgorICAgICAg
ICAoZmlsbCk6CisgICAgICAgIChmaW5kKToKKyAgICAgICAgKHN1YmFycmF5KToKKwogMjAyMC0w
MS0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJD
b3JlXSBSZW9yZ2FuaXplIEpTVHlwZSBpbiBXZWJDb3JlIHRvIG9mZmVyIG1vcmUgYml0cyB0byBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3Rv
dHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5q
cwppbmRleCBkOTBjN2ExMDkwNjljNTQzMzc1MTQ3MjI3ZmJjZDg0OWRhODExMGFjLi40OGY2YzNl
ODkzOTQ3YmQ3YTRjN2ExZGI4NWMyYjk5ZWE5YjBjNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC0zMTcsMTYgKzMxNywxNiBA
QCBmdW5jdGlvbiBtaW4oYSwgYikKIAogICAgIGZ1bmN0aW9uIHN0cmluZ0NvbXBhcmF0b3IoYSwg
YikKICAgICB7Ci0gICAgICAgIGxldCBhU3RyaW5nID0gYS5zdHJpbmc7Ci0gICAgICAgIGxldCBi
U3RyaW5nID0gYi5zdHJpbmc7CisgICAgICAgIHZhciBhU3RyaW5nID0gYS5zdHJpbmc7CisgICAg
ICAgIHZhciBiU3RyaW5nID0gYi5zdHJpbmc7CiAKLSAgICAgICAgbGV0IGFMZW5ndGggPSBhU3Ry
aW5nLmxlbmd0aDsKLSAgICAgICAgbGV0IGJMZW5ndGggPSBiU3RyaW5nLmxlbmd0aDsKLSAgICAg
ICAgbGV0IGxlbmd0aCA9IG1pbihhTGVuZ3RoLCBiTGVuZ3RoKTsKKyAgICAgICAgdmFyIGFMZW5n
dGggPSBhU3RyaW5nLmxlbmd0aDsKKyAgICAgICAgdmFyIGJMZW5ndGggPSBiU3RyaW5nLmxlbmd0
aDsKKyAgICAgICAgdmFyIGxlbmd0aCA9IG1pbihhTGVuZ3RoLCBiTGVuZ3RoKTsKIAotICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBsZXQgYUNo
YXJDb2RlID0gYVN0cmluZy5AY2hhckNvZGVBdChpKTsKLSAgICAgICAgICAgIGxldCBiQ2hhckNv
ZGUgPSBiU3RyaW5nLkBjaGFyQ29kZUF0KGkpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgYUNoYXJDb2RlID0gYVN0cmluZy5AY2hh
ckNvZGVBdChpKTsKKyAgICAgICAgICAgIHZhciBiQ2hhckNvZGUgPSBiU3RyaW5nLkBjaGFyQ29k
ZUF0KGkpOwogCiAgICAgICAgICAgICBpZiAoYUNoYXJDb2RlID09IGJDaGFyQ29kZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTM0MCwyNSArMzQwLDI1IEBAIGZ1bmN0aW9uIHN0cmlu
Z0NvbXBhcmF0b3IoYSwgYikKICAgICAvLyBNb3ZlIHVuZGVmaW5lZHMgYW5kIGhvbGVzIHRvIHRo
ZSBlbmQgb2YgYSBzcGFyc2UgYXJyYXkuIFJlc3VsdCBpcyBbdmFsdWVzLi4uLCB1bmRlZmluZWRz
Li4uLCBob2xlcy4uLl0uCiAgICAgZnVuY3Rpb24gY29tcGFjdFNwYXJzZShhcnJheSwgZHN0LCBz
cmMsIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIGxldCB2YWx1ZXMgPSBbIF07Ci0gICAgICAgIGxl
dCBzZWVuID0geyB9OwotICAgICAgICBsZXQgdmFsdWVDb3VudCA9IDA7Ci0gICAgICAgIGxldCB1
bmRlZmluZWRDb3VudCA9IDA7CisgICAgICAgIHZhciB2YWx1ZXMgPSBbIF07CisgICAgICAgIHZh
ciBzZWVuID0geyB9OworICAgICAgICB2YXIgdmFsdWVDb3VudCA9IDA7CisgICAgICAgIHZhciB1
bmRlZmluZWRDb3VudCA9IDA7CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgYWZ0ZXIgdGhlIGluLXBy
b2dyZXNzIG5vbi1zcGFyc2UgY29tcGFjdGlvbiB0aGF0IGZhaWxlZC4KLSAgICAgICAgZm9yIChs
ZXQgaSA9IGRzdDsgaSA8IHNyYzsgKytpKQorICAgICAgICBmb3IgKHZhciBpID0gZHN0OyBpIDwg
c3JjOyArK2kpCiAgICAgICAgICAgICBkZWxldGUgYXJyYXlbaV07CiAKLSAgICAgICAgZm9yIChs
ZXQgb2JqZWN0ID0gYXJyYXk7IG9iamVjdDsgb2JqZWN0ID0gQE9iamVjdC5AZ2V0UHJvdG90eXBl
T2Yob2JqZWN0KSkgewotICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBsZXQgaW5k
ZXggPSBwcm9wZXJ0eU5hbWVzW2ldOworICAgICAgICBmb3IgKHZhciBvYmplY3QgPSBhcnJheTsg
b2JqZWN0OyBvYmplY3QgPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVPZihvYmplY3QpKSB7CisgICAg
ICAgICAgICB2YXIgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHByb3BlcnR5TmFtZXNb
aV07CiAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7IC8vIEV4Y2x1ZGUgbm9u
LW51bWVyaWMgcHJvcGVydGllcyBhbmQgcHJvcGVydGllcyBwYXN0IGxlbmd0aC4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNlZW5baW5kZXhdKSAvLyBFeGNsdWRlIGR1cGxpY2F0ZXMuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgc2Vlbltp
bmRleF0gPSAxOwogCi0gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGFycmF5W2luZGV4
XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdOwogICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgYXJyYXlbaW5kZXhdOwogCiAgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSA9PT0gQHVuZGVmaW5lZCkgewpAQCAtMzcxLDcgKzM3MSw3IEBAIGZ1bmN0aW9u
IGNvbXBhY3RTcGFyc2UoYXJyYXksIGRzdCwgc3JjLCBsZW5ndGgpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGxldCBpID0gdmFsdWVDb3VudDsgaSA8IHZhbHVlQ291
bnQgKyB1bmRlZmluZWRDb3VudDsgKytpKQorICAgICAgICBmb3IgKHZhciBpID0gdmFsdWVDb3Vu
dDsgaSA8IHZhbHVlQ291bnQgKyB1bmRlZmluZWRDb3VudDsgKytpKQogICAgICAgICAgICAgYXJy
YXlbaV0gPSBAdW5kZWZpbmVkOwogCiAgICAgICAgIHJldHVybiB2YWx1ZUNvdW50OwpAQCAtMzc5
LDEwICszNzksMTAgQEAgZnVuY3Rpb24gY29tcGFjdFNwYXJzZShhcnJheSwgZHN0LCBzcmMsIGxl
bmd0aCkKIAogICAgIGZ1bmN0aW9uIGNvbXBhY3RTbG93KGFycmF5LCBsZW5ndGgpCiAgICAgewot
ICAgICAgICBsZXQgaG9sZUNvdW50ID0gMDsKKyAgICAgICAgdmFyIGhvbGVDb3VudCA9IDA7CiAK
LSAgICAgICAgbGV0IGRzdCA9IDA7Ci0gICAgICAgIGxldCBzcmMgPSAwOworICAgICAgICB2YXIg
ZHN0ID0gMDsKKyAgICAgICAgdmFyIHNyYyA9IDA7CiAgICAgICAgIGZvciAoOyBzcmMgPCBsZW5n
dGg7ICsrc3JjKSB7CiAgICAgICAgICAgICBpZiAoIShzcmMgaW4gYXJyYXkpKSB7CiAgICAgICAg
ICAgICAgICAgKytob2xlQ291bnQ7CkBAIC0zOTEsMjAgKzM5MSwyMCBAQCBmdW5jdGlvbiBjb21w
YWN0U2xvdyhhcnJheSwgbGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBjb21wYWN0U3Bh
cnNlKGFycmF5LCBkc3QsIHNyYywgbGVuZ3RoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgbGV0IHZhbHVlID0gYXJyYXlbc3JjXTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5
W3NyY107CiAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEB1bmRlZmluZWQpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGFycmF5W2RzdCsrXSA9IHZhbHVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgbGV0IHZhbHVlQ291bnQgPSBkc3Q7Ci0gICAgICAgIGxldCB1bmRl
ZmluZWRDb3VudCA9IGxlbmd0aCAtIHZhbHVlQ291bnQgLSBob2xlQ291bnQ7CisgICAgICAgIHZh
ciB2YWx1ZUNvdW50ID0gZHN0OworICAgICAgICB2YXIgdW5kZWZpbmVkQ291bnQgPSBsZW5ndGgg
LSB2YWx1ZUNvdW50IC0gaG9sZUNvdW50OwogCi0gICAgICAgIGZvciAobGV0IGkgPSB2YWx1ZUNv
dW50OyBpIDwgdmFsdWVDb3VudCArIHVuZGVmaW5lZENvdW50OyArK2kpCisgICAgICAgIGZvciAo
dmFyIGkgPSB2YWx1ZUNvdW50OyBpIDwgdmFsdWVDb3VudCArIHVuZGVmaW5lZENvdW50OyArK2kp
CiAgICAgICAgICAgICBhcnJheVtpXSA9IEB1bmRlZmluZWQ7CiAKLSAgICAgICAgZm9yIChsZXQg
aSA9IHZhbHVlQ291bnQgKyB1bmRlZmluZWRDb3VudDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAg
ICBmb3IgKHZhciBpID0gdmFsdWVDb3VudCArIHVuZGVmaW5lZENvdW50OyBpIDwgbGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICBkZWxldGUgYXJyYXlbaV07CiAKICAgICAgICAgcmV0dXJuIHZhbHVl
Q291bnQ7CkBAIC00MTMsNyArNDEzLDcgQEAgZnVuY3Rpb24gY29tcGFjdFNsb3coYXJyYXksIGxl
bmd0aCkKICAgICAvLyBNb3ZlIHVuZGVmaW5lZHMgYW5kIGhvbGVzIHRvIHRoZSBlbmQgb2YgYW4g
YXJyYXkuIFJlc3VsdCBpcyBbdmFsdWVzLi4uLCB1bmRlZmluZWRzLi4uLCBob2xlcy4uLl0uCiAg
ICAgZnVuY3Rpb24gY29tcGFjdChhcnJheSwgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYXJyYXlbaV0gPT09
IEB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhY3RTbG93KGFycmF5LCBs
ZW5ndGgpOwogICAgICAgICB9CkBAIC00MjMsMTkgKzQyMywxOSBAQCBmdW5jdGlvbiBjb21wYWN0
KGFycmF5LCBsZW5ndGgpCiAKICAgICBmdW5jdGlvbiBtZXJnZShkc3QsIHNyYywgc3JjSW5kZXgs
IHNyY0VuZCwgd2lkdGgsIGNvbXBhcmF0b3IpCiAgICAgewotICAgICAgICBsZXQgbGVmdCA9IHNy
Y0luZGV4OwotICAgICAgICBsZXQgbGVmdEVuZCA9IG1pbihsZWZ0ICsgd2lkdGgsIHNyY0VuZCk7
Ci0gICAgICAgIGxldCByaWdodCA9IGxlZnRFbmQ7Ci0gICAgICAgIGxldCByaWdodEVuZCA9IG1p
bihyaWdodCArIHdpZHRoLCBzcmNFbmQpOworICAgICAgICB2YXIgbGVmdCA9IHNyY0luZGV4Owor
ICAgICAgICB2YXIgbGVmdEVuZCA9IG1pbihsZWZ0ICsgd2lkdGgsIHNyY0VuZCk7CisgICAgICAg
IHZhciByaWdodCA9IGxlZnRFbmQ7CisgICAgICAgIHZhciByaWdodEVuZCA9IG1pbihyaWdodCAr
IHdpZHRoLCBzcmNFbmQpOwogCi0gICAgICAgIGZvciAobGV0IGRzdEluZGV4ID0gbGVmdDsgZHN0
SW5kZXggPCByaWdodEVuZDsgKytkc3RJbmRleCkgeworICAgICAgICBmb3IgKHZhciBkc3RJbmRl
eCA9IGxlZnQ7IGRzdEluZGV4IDwgcmlnaHRFbmQ7ICsrZHN0SW5kZXgpIHsKICAgICAgICAgICAg
IGlmIChyaWdodCA8IHJpZ2h0RW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQgPj0gbGVm
dEVuZCkgewogICAgICAgICAgICAgICAgICAgICBkc3RbZHN0SW5kZXhdID0gc3JjW3JpZ2h0Kytd
OwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBsZXQgY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmF0b3Ioc3JjW3JpZ2h0
XSwgc3JjW2xlZnRdKTsKKyAgICAgICAgICAgICAgICB2YXIgY29tcGFyaXNvblJlc3VsdCA9IGNv
bXBhcmF0b3Ioc3JjW3JpZ2h0XSwgc3JjW2xlZnRdKTsKICAgICAgICAgICAgICAgICBpZiAoKHR5
cGVvZiBjb21wYXJpc29uUmVzdWx0ID09PSAiYm9vbGVhbiIgJiYgIWNvbXBhcmlzb25SZXN1bHQp
IHx8IGNvbXBhcmlzb25SZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtkc3RJ
bmRleF0gPSBzcmNbcmlnaHQrK107CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NDQ5LDIyICs0NDksMjIgQEAgZnVuY3Rpb24gbWVyZ2UoZHN0LCBzcmMsIHNyY0luZGV4LCBzcmNF
bmQsIHdpZHRoLCBjb21wYXJhdG9yKQogCiAgICAgZnVuY3Rpb24gbWVyZ2VTb3J0KGFycmF5LCB2
YWx1ZUNvdW50LCBjb21wYXJhdG9yKQogICAgIHsKLSAgICAgICAgbGV0IGJ1ZmZlciA9IFsgXTsK
KyAgICAgICAgdmFyIGJ1ZmZlciA9IFsgXTsKICAgICAgICAgYnVmZmVyLmxlbmd0aCA9IHZhbHVl
Q291bnQ7CiAKLSAgICAgICAgbGV0IGRzdCA9IGJ1ZmZlcjsKLSAgICAgICAgbGV0IHNyYyA9IGFy
cmF5OwotICAgICAgICBmb3IgKGxldCB3aWR0aCA9IDE7IHdpZHRoIDwgdmFsdWVDb3VudDsgd2lk
dGggKj0gMikgewotICAgICAgICAgICAgZm9yIChsZXQgc3JjSW5kZXggPSAwOyBzcmNJbmRleCA8
IHZhbHVlQ291bnQ7IHNyY0luZGV4ICs9IDIgKiB3aWR0aCkKKyAgICAgICAgdmFyIGRzdCA9IGJ1
ZmZlcjsKKyAgICAgICAgdmFyIHNyYyA9IGFycmF5OworICAgICAgICBmb3IgKHZhciB3aWR0aCA9
IDE7IHdpZHRoIDwgdmFsdWVDb3VudDsgd2lkdGggKj0gMikgeworICAgICAgICAgICAgZm9yICh2
YXIgc3JjSW5kZXggPSAwOyBzcmNJbmRleCA8IHZhbHVlQ291bnQ7IHNyY0luZGV4ICs9IDIgKiB3
aWR0aCkKICAgICAgICAgICAgICAgICBtZXJnZShkc3QsIHNyYywgc3JjSW5kZXgsIHZhbHVlQ291
bnQsIHdpZHRoLCBjb21wYXJhdG9yKTsKIAotICAgICAgICAgICAgbGV0IHRtcCA9IHNyYzsKKyAg
ICAgICAgICAgIHZhciB0bXAgPSBzcmM7CiAgICAgICAgICAgICBzcmMgPSBkc3Q7CiAgICAgICAg
ICAgICBkc3QgPSB0bXA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc3JjICE9IGFycmF5KSB7
Ci0gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdmFsdWVDb3VudDsgaSsrKQorICAgICAg
ICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHZhbHVlQ291bnQ7IGkrKykKICAgICAgICAgICAgICAg
ICBhcnJheVtpXSA9IHNyY1tpXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ3MywyNyArNDczLDI3
IEBAIGZ1bmN0aW9uIGJ1Y2tldFNvcnQoYXJyYXksIGRzdCwgYnVja2V0LCBkZXB0aCkKICAgICB7
CiAgICAgICAgIGlmIChidWNrZXQubGVuZ3RoIDwgMzIgfHwgZGVwdGggPiAzMikgewogICAgICAg
ICAgICAgbWVyZ2VTb3J0KGJ1Y2tldCwgYnVja2V0Lmxlbmd0aCwgc3RyaW5nQ29tcGFyYXRvcik7
Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1Y2tldC5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVja2V0Lmxlbmd0aDsgKytpKQogICAgICAg
ICAgICAgICAgIGFycmF5W2RzdCsrXSA9IGJ1Y2tldFtpXS52YWx1ZTsKICAgICAgICAgICAgIHJl
dHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgYnVja2V0cyA9IFsgXTsKLSAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWNrZXQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IGxldCBlbnRyeSA9IGJ1Y2tldFtpXTsKLSAgICAgICAgICAgIGxldCBzdHJpbmcgPSBlbnRyeS5z
dHJpbmc7CisgICAgICAgIHZhciBidWNrZXRzID0gWyBdOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGJ1Y2tldC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGVudHJ5ID0gYnVj
a2V0W2ldOworICAgICAgICAgICAgdmFyIHN0cmluZyA9IGVudHJ5LnN0cmluZzsKICAgICAgICAg
ICAgIGlmIChzdHJpbmcubGVuZ3RoID09IGRlcHRoKSB7CiAgICAgICAgICAgICAgICAgYXJyYXlb
ZHN0KytdID0gZW50cnkudmFsdWU7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGxldCBjID0gc3RyaW5nLkBjaGFyQ29kZUF0KGRlcHRoKTsK
KyAgICAgICAgICAgIHZhciBjID0gc3RyaW5nLkBjaGFyQ29kZUF0KGRlcHRoKTsKICAgICAgICAg
ICAgIGlmICghYnVja2V0c1tjXSkKICAgICAgICAgICAgICAgICBidWNrZXRzW2NdID0gWyBdOwog
ICAgICAgICAgICAgYnVja2V0c1tjXVtidWNrZXRzW2NdLmxlbmd0aF0gPSBlbnRyeTsKICAgICAg
ICAgfQogCi0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVja2V0cy5sZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Y2tldHMubGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIGlmICghYnVja2V0c1tpXSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGRzdCA9IGJ1Y2tldFNvcnQoYXJyYXksIGRzdCwgYnVja2V0c1tpXSwgZGVwdGgg
KyAxKTsKQEAgLTUwNCwyMiArNTA0LDIyIEBAIGZ1bmN0aW9uIGJ1Y2tldFNvcnQoYXJyYXksIGRz
dCwgYnVja2V0LCBkZXB0aCkKIAogICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3JTb3J0KGFycmF5LCBs
ZW5ndGgsIGNvbXBhcmF0b3IpCiAgICAgewotICAgICAgICBsZXQgdmFsdWVDb3VudCA9IGNvbXBh
Y3QoYXJyYXksIGxlbmd0aCk7CisgICAgICAgIHZhciB2YWx1ZUNvdW50ID0gY29tcGFjdChhcnJh
eSwgbGVuZ3RoKTsKICAgICAgICAgbWVyZ2VTb3J0KGFycmF5LCB2YWx1ZUNvdW50LCBjb21wYXJh
dG9yKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdHJpbmdTb3J0KGFycmF5LCBsZW5ndGgpCiAg
ICAgewotICAgICAgICBsZXQgdmFsdWVDb3VudCA9IGNvbXBhY3QoYXJyYXksIGxlbmd0aCk7Cisg
ICAgICAgIHZhciB2YWx1ZUNvdW50ID0gY29tcGFjdChhcnJheSwgbGVuZ3RoKTsKIAotICAgICAg
ICBsZXQgc3RyaW5ncyA9IEBuZXdBcnJheVdpdGhTaXplKHZhbHVlQ291bnQpOwotICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHZhbHVlQ291bnQ7ICsraSkKKyAgICAgICAgdmFyIHN0cmluZ3Mg
PSBAbmV3QXJyYXlXaXRoU2l6ZSh2YWx1ZUNvdW50KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB2YWx1ZUNvdW50OyArK2kpCiAgICAgICAgICAgICBzdHJpbmdzW2ldID0geyBzdHJpbmc6
IEB0b1N0cmluZyhhcnJheVtpXSksIHZhbHVlOiBhcnJheVtpXSB9OwogCiAgICAgICAgIGJ1Y2tl
dFNvcnQoYXJyYXksIDAsIHN0cmluZ3MsIDApOwogICAgIH0KIAotICAgIGxldCBzb3J0RnVuY3Rp
b247CisgICAgdmFyIHNvcnRGdW5jdGlvbjsKICAgICBpZiAodHlwZW9mIGNvbXBhcmF0b3IgPT0g
ImZ1bmN0aW9uIikKICAgICAgICAgc29ydEZ1bmN0aW9uID0gY29tcGFyYXRvclNvcnQ7CiAgICAg
ZWxzZSBpZiAoY29tcGFyYXRvciA9PT0gQHVuZGVmaW5lZCkKQEAgLTUyNyw5ICs1MjcsOSBAQCBl
bHNlIGlmIChjb21wYXJhdG9yID09PSBAdW5kZWZpbmVkKQogICAgIGVsc2UKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGUgY29tcGFyc2lv
biBmdW5jdGlvbiBiZSBhIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgbGV0IGFycmF5
ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmpl
Y3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgbGV0IGxlbmd0aCA9IEB0b0xlbmd0aChhcnJh
eS5sZW5ndGgpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAog
ICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggRmlyZWZveCBhbmQgQ2hyb21lLCBkbyBub3Ro
aW5nIG9ic2VydmFibGUKICAgICAvLyB0byB0aGUgdGFyZ2V0IGFycmF5IGlmIGl0IGhhcyAwIG9y
IDEgc29ydGFibGUgcHJvcGVydGllcy4KQEAgLTU1NSw5ICs1NTUsOSBAQCBmdW5jdGlvbiBjb25j
YXRTbG93UGF0aCgpCiAgICAgdmFyIGFyZ0luZGV4ID0gMDsKIAogICAgIGRvIHsKLSAgICAgICAg
bGV0IHNwcmVhZGFibGUgPSBAaXNPYmplY3QoY3VycmVudEVsZW1lbnQpICYmIGN1cnJlbnRFbGVt
ZW50LkBpc0NvbmNhdFNwcmVhZGFibGVTeW1ib2w7CisgICAgICAgIHZhciBzcHJlYWRhYmxlID0g
QGlzT2JqZWN0KGN1cnJlbnRFbGVtZW50KSAmJiBjdXJyZW50RWxlbWVudC5AaXNDb25jYXRTcHJl
YWRhYmxlU3ltYm9sOwogICAgICAgICBpZiAoKHNwcmVhZGFibGUgPT09IEB1bmRlZmluZWQgJiYg
QGlzQXJyYXkoY3VycmVudEVsZW1lbnQpKSB8fCBzcHJlYWRhYmxlKSB7Ci0gICAgICAgICAgICBs
ZXQgbGVuZ3RoID0gQHRvTGVuZ3RoKGN1cnJlbnRFbGVtZW50Lmxlbmd0aCk7CisgICAgICAgICAg
ICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGN1cnJlbnRFbGVtZW50Lmxlbmd0aCk7CiAgICAgICAg
ICAgICBpZiAobGVuZ3RoICsgcmVzdWx0SW5kZXggPiBATUFYX0FSUkFZX0lOREVYKQogICAgICAg
ICAgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkxlbmd0aCBleGNlZWRlZCB0aGUgbWF4aW11bSBh
cnJheSBsZW5ndGgiKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRJc0FycmF5ICYmIEBpc0pTQXJy
YXkoY3VycmVudEVsZW1lbnQpKSB7CkBAIC01OTEsNyArNTkxLDcgQEAgZnVuY3Rpb24gY29uY2F0
KGZpcnN0KQogICAgICAgICAmJiB0aGlzLkBpc0NvbmNhdFNwcmVhZGFibGVTeW1ib2wgPT09IEB1
bmRlZmluZWQKICAgICAgICAgJiYgKCFAaXNPYmplY3QoZmlyc3QpIHx8ICghQGlzUHJveHlPYmpl
Y3QoZmlyc3QpICYmIGZpcnN0LkBpc0NvbmNhdFNwcmVhZGFibGVTeW1ib2wgPT09IEB1bmRlZmlu
ZWQpKSkgewogCi0gICAgICAgIGxldCByZXN1bHQgPSBAY29uY2F0TWVtY3B5KHRoaXMsIGZpcnN0
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IEBjb25jYXRNZW1jcHkodGhpcywgZmlyc3QpOwogICAg
ICAgICBpZiAocmVzdWx0ICE9PSBudWxsKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Q
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90
b3R5cGUuanMKaW5kZXggZjU5MzUyN2RjM2M0N2IzYWExNmRjMzA3ZmYwYWRjNTNjNWY3NTNiNC4u
ZTIyZTY1NWM3ZTk3YjAzNjdlODQ5MmJlYzIxNTdiNWI2MzdkYTEzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMjcs
OSArMjcsOSBAQCBmdW5jdGlvbiBjYWxsKHRoaXNBcmd1bWVudCkKIHsKICAgICAidXNlIHN0cmlj
dCI7CiAKLSAgICBsZXQgYXJndW1lbnRWYWx1ZXMgPSBbXTsKKyAgICB2YXIgYXJndW1lbnRWYWx1
ZXMgPSBbXTsKICAgICAvLyBTdGFydCBmcm9tIDEgdG8gaWdub3JlIHRoaXNBcmd1bWVudAotICAg
IGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQogICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoYXJndW1lbnRWYWx1ZXMsIGktMSwgYXJndW1lbnRzW2ldKTsKIAogICAgIHJldHVybiB0aGlz
LkBhcHBseSh0aGlzQXJndW1lbnQsIGFyZ3VtZW50VmFsdWVzKTsKQEAgLTUzLDcgKzUzLDcgQEAg
ZnVuY3Rpb24gc3ltYm9sSGFzSW5zdGFuY2UodmFsdWUpCiAgICAgaWYgKEBpc0JvdW5kRnVuY3Rp
b24odGhpcykpCiAgICAgICAgIHJldHVybiBAaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKHRoaXMs
IHZhbHVlKTsKIAotICAgIGxldCB0YXJnZXQgPSB0aGlzLnByb3RvdHlwZTsKKyAgICB2YXIgdGFy
Z2V0ID0gdGhpcy5wcm90b3R5cGU7CiAgICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJn
ZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xv
YmFsT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxP
cGVyYXRpb25zLmpzCmluZGV4IDk3MzdiYjc4ZTJjZWFiYjFkNzYyMjcxNTBkYmY4OTdhM2NlZTQx
NmMuLjU4YzE5YjM4MjgzMjhjM2JjMzU3ZjVlYjc5NTM1NTQyNTc1ZDUwYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCkBAIC05
NSwxNCArOTUsMTQgQEAgZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVzKHRhcmdldCwgc291cmNl
LCBleGNsdWRlZFNldCkKICAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKHNvdXJjZSkpCiAgICAg
ICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBsZXQgZnJvbSA9IEB0b09iamVjdChzb3VyY2UpOwot
ICAgIGxldCBrZXlzID0gQG93bktleXMoZnJvbSk7Ci0gICAgbGV0IGtleXNMZW5ndGggPSBrZXlz
Lmxlbmd0aDsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXNMZW5ndGg7IGkrKykgewotICAg
ICAgICBsZXQgbmV4dEtleSA9IGtleXNbaV07CisgICAgdmFyIGZyb20gPSBAdG9PYmplY3Qoc291
cmNlKTsKKyAgICB2YXIga2V5cyA9IEBvd25LZXlzKGZyb20pOworICAgIHZhciBrZXlzTGVuZ3Ro
ID0ga2V5cy5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzTGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgdmFyIG5leHRLZXkgPSBrZXlzW2ldOwogICAgICAgICBpZiAoIWV4Y2x1ZGVk
U2V0LkBoYXMobmV4dEtleSkpIHsKICAgICAgICAgICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFi
bGUoZnJvbSwgbmV4dEtleSkpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcFZhbHVlID0gZnJv
bVtuZXh0S2V5XTsKKyAgICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gZnJvbVtuZXh0S2V5
XTsKICAgICAgICAgICAgICAgICBAZGVmaW5lRW51bWVyYWJsZVdyaXRhYmxlQ29uZmlndXJhYmxl
RGF0YVByb3BlcnR5KHRhcmdldCwgbmV4dEtleSwgcHJvcFZhbHVlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTIyLDEzICsxMjIsMTMgQEAgZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0
aWVzTm9FeGNsdXNpb25zKHRhcmdldCwgc291cmNlKQogICAgIGlmIChAaXNVbmRlZmluZWRPck51
bGwoc291cmNlKSkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKIAotICAgIGxldCBmcm9tID0gQHRv
T2JqZWN0KHNvdXJjZSk7Ci0gICAgbGV0IGtleXMgPSBAb3duS2V5cyhmcm9tKTsKLSAgICBsZXQg
a2V5c0xlbmd0aCA9IGtleXMubGVuZ3RoOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5c0xl
bmd0aDsgaSsrKSB7Ci0gICAgICAgIGxldCBuZXh0S2V5ID0ga2V5c1tpXTsKKyAgICB2YXIgZnJv
bSA9IEB0b09iamVjdChzb3VyY2UpOworICAgIHZhciBrZXlzID0gQG93bktleXMoZnJvbSk7Cisg
ICAgdmFyIGtleXNMZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGtleXNMZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgbmV4dEtleSA9IGtleXNbaV07CiAgICAg
ICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFibGUoZnJvbSwgbmV4dEtleSkpIHsKLSAgICAgICAg
ICAgIGxldCBwcm9wVmFsdWUgPSBmcm9tW25leHRLZXldOworICAgICAgICAgICAgdmFyIHByb3BW
YWx1ZSA9IGZyb21bbmV4dEtleV07CiAgICAgICAgICAgICBAZGVmaW5lRW51bWVyYWJsZVdyaXRh
YmxlQ29uZmlndXJhYmxlRGF0YVByb3BlcnR5KHRhcmdldCwgbmV4dEtleSwgcHJvcFZhbHVlKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9JdGVyYXRvckhlbHBlcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
SXRlcmF0b3JIZWxwZXJzLmpzCmluZGV4IDFhYzlmOTFjZjg5NDQ0ZmMxNDJkZjBiZmZjN2I4YTRh
NjA3OThmMGUuLjBmYmE1MmJkNDJhNDQ4OThhNTY2MTg2OTE0ZDIyYjE3OTE4N2U5OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwpA
QCAtMzAsMTIgKzMwLDEyIEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAg
ICAgLy8gYW5kIHJldHVybmluZyB0aGUgcmVzdWx0IGluIGFuIGFycmF5LgogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJ1bnRpbWUtc2VtYW50aWNzLWFycmF5YWNj
dW11bGF0aW9uCiAKLSAgICBsZXQgcmVzdWx0ID0gW107CisgICAgdmFyIHJlc3VsdCA9IFtdOwog
Ci0gICAgbGV0IGl0ZXJhdG9yID0gaXRlcmFibGUuQGl0ZXJhdG9yU3ltYm9sKCk7Ci0gICAgbGV0
IG5leHQgPSBpdGVyYXRvci5uZXh0OwotICAgIGxldCBpdGVtOwotICAgIGxldCBpbmRleCA9IDA7
CisgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmFibGUuQGl0ZXJhdG9yU3ltYm9sKCk7CisgICAgdmFy
IG5leHQgPSBpdGVyYXRvci5uZXh0OworICAgIHZhciBpdGVtOworICAgIHZhciBpbmRleCA9IDA7
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaXRlbSA9IG5leHQuQGNhbGwoaXRlcmF0b3Ip
OwogICAgICAgICBpZiAoIUBpc09iamVjdChpdGVtKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCmluZGV4IDFhZWZhZmZlZTVmMmY3NjVkNjRjMDM1
OGRmMTU0ZDcxZTM2MGYzMzEuLjA4YTYyZDFiODNkZTllY2VhYTQzZDEzMzhkMDE4Njk3NzFkNjdl
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5q
cwpAQCAtMzM4LDggKzMzOCw4IEBAIGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFt
ZSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAgICAvLyByZXNvbHZlOiBtb2R1bGVOYW1lID0+IFBy
b21pc2UobW9kdWxlS2V5KQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8g
dGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8g
Rm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhl
IHJlc291cmNlLgotICAgIGxldCBrZXkgPSBhd2FpdCB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwg
QHVuZGVmaW5lZCwgZmV0Y2hlcik7Ci0gICAgbGV0IGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0
U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwg
bmV3IEBTZXQpOworICAgIHZhciBrZXkgPSBhd2FpdCB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwg
QHVuZGVmaW5lZCwgZmV0Y2hlcik7CisgICAgdmFyIGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0
U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwg
bmV3IEBTZXQpOwogICAgIHJldHVybiBlbnRyeS5rZXk7CiB9CiAKQEAgLTM1OSw3ICszNTksNyBA
QCBhc3luYyBmdW5jdGlvbiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1l
dGVycywgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBsZXQga2V5ID0gYXdh
aXQgdGhpcy5sb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpOworICAg
IHZhciBrZXkgPSBhd2FpdCB0aGlzLmxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1ldGVycywg
ZmV0Y2hlcik7CiAgICAgcmV0dXJuIGF3YWl0IHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGtl
eSwgZmV0Y2hlcik7CiB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBhc3luYyBmdW5jdGlvbiByZXF1
ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0
cmljdCI7CiAKLSAgICBsZXQgZW50cnkgPSBhd2FpdCB0aGlzLnJlcXVlc3RTYXRpc2Z5KHRoaXMu
ZW5zdXJlUmVnaXN0ZXJlZChrZXkpLCBwYXJhbWV0ZXJzLCBmZXRjaGVyLCBuZXcgQFNldCk7Cisg
ICAgdmFyIGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lz
dGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwgbmV3IEBTZXQpOwogICAgIHRoaXMubGlu
a0FuZEV2YWx1YXRlTW9kdWxlKGVudHJ5LmtleSwgZmV0Y2hlcik7CiAgICAgcmV0dXJuIHRoaXMu
Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiB9CkBAIC0zNzYsMTQgKzM3
NiwxNCBAQCBmdW5jdGlvbiBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKGtleSkKIHsKICAgICAi
dXNlIHN0cmljdCI7CiAKLSAgICBsZXQgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsK
KyAgICB2YXIgZW50cnkgPSB0aGlzLnJlZ2lzdHJ5LkBnZXQoa2V5KTsKICAgICBpZiAoIWVudHJ5
IHx8ICFlbnRyeS5ldmFsdWF0ZWQpCiAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgbGV0IGRl
cGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKLSAgICBsZXQgbGVuZ3RoID0gZGVwZW5k
ZW5jaWVzLmxlbmd0aDsKLSAgICBsZXQgcmVzdWx0ID0gbmV3IEBBcnJheShsZW5ndGgpOwotICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgdmFyIGRlcGVuZGVuY2llcyA9
IGVudHJ5LmRlcGVuZGVuY2llczsKKyAgICB2YXIgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0
aDsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IEBBcnJheShsZW5ndGgpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHJlc3VsdFtpXSA9IGRlcGVuZGVuY2llc1tp
XS5rZXk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCmluZGV4IDdkMDVjZTU5OTY3OTFiMjZk
MDBkN2Q1M2E4YjlhYzgwZmU4NmY1ZTMuLjA5YzZiNmQ3ZDBkYzZkNjk2ZWM2ZDAyMWI2MGRkZTlm
ZjQ4YzRmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmpl
Y3RDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2Jq
ZWN0Q29uc3RydWN0b3IuanMKQEAgLTQ1LDEzICs0NSwxMyBAQCBmdW5jdGlvbiBmcm9tRW50cmll
cyhpdGVyYWJsZSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBsZXQgb2JqZWN0ID0ge307
CisgICAgdmFyIG9iamVjdCA9IHt9OwogCi0gICAgZm9yIChsZXQgZW50cnkgb2YgaXRlcmFibGUp
IHsKKyAgICBmb3IgKHZhciBlbnRyeSBvZiBpdGVyYWJsZSkgewogICAgICAgICBpZiAoIUBpc09i
amVjdChlbnRyeSkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk9iamVjdC5mcm9tRW50
cmllcyByZXF1aXJlcyB0aGUgZmlyc3QgaXRlcmFibGUgcGFyYW1ldGVyIHlpZWxkcyBvYmplY3Rz
Iik7Ci0gICAgICAgIGxldCBrZXkgPSBlbnRyeVswXTsKLSAgICAgICAgbGV0IHZhbHVlID0gZW50
cnlbMV07CisgICAgICAgIHZhciBrZXkgPSBlbnRyeVswXTsKKyAgICAgICAgdmFyIHZhbHVlID0g
ZW50cnlbMV07CiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChvYmplY3QsIGtleSwgdmFsdWUpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21p
c2VQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZVBy
b3RvdHlwZS5qcwppbmRleCAzZjAzMmU1ZmFiMGJlOTk1NWYzZWIzYWU4ZGVkZDkwOTI2OTE1ZDcx
Li5lYzVlM2IyM2I1NDEyOTQ3YTEwMDdjMjVjNmM4YzNjNTZjYzYwMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpAQCAtNzks
MTIgKzc5LDEyIEBAIGZ1bmN0aW9uIGZpbmFsbHkob25GaW5hbGx5KQogICAgIGlmICghQGlzT2Jq
ZWN0KHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYW4gb2Jq
ZWN0Iik7CiAKLSAgICBjb25zdCBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhp
cywgQFByb21pc2UpOworICAgIHZhciBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3Io
dGhpcywgQFByb21pc2UpOwogCiAgICAgQGFzc2VydChAaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cikpOwogCi0gICAgbGV0IHRoZW5GaW5hbGx5OwotICAgIGxldCBjYXRjaEZpbmFsbHk7CisgICAg
dmFyIHRoZW5GaW5hbGx5OworICAgIHZhciBjYXRjaEZpbmFsbHk7CiAKICAgICBpZiAodHlwZW9m
IG9uRmluYWxseSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICB0aGVuRmluYWxseSA9IG9uRmlu
YWxseTsKQEAgLTEwNSwxNSArMTA1LDE1IEBAIGZ1bmN0aW9uIGdldFRoZW5GaW5hbGx5KG9uRmlu
YWxseSwgY29uc3RydWN0b3IpCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKQogICAgIHsKICAg
ICAgICAgQGFzc2VydCh0eXBlb2Ygb25GaW5hbGx5ID09PSAiZnVuY3Rpb24iKTsKLSAgICAgICAg
Y29uc3QgcmVzdWx0ID0gb25GaW5hbGx5KCk7CisgICAgICAgIHZhciByZXN1bHQgPSBvbkZpbmFs
bHkoKTsKIAogICAgICAgICBAYXNzZXJ0KEBpc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSk7Ci0g
ICAgICAgIGNvbnN0IHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29u
c3RydWN0b3IpOworICAgICAgICB2YXIgcmVzdWx0Q2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShjb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgcmVzdWx0Q2FwYWJpbGl0eS5AcmVzb2x2
ZS5AY2FsbChAdW5kZWZpbmVkLCByZXN1bHQpOwogCi0gICAgICAgIGNvbnN0IHByb21pc2UgPSBy
ZXN1bHRDYXBhYmlsaXR5LkBwcm9taXNlOwotICAgICAgICBjb25zdCB2YWx1ZVRodW5rID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH07CisgICAgICAgIHZhciBwcm9taXNlID0gcmVzdWx0
Q2FwYWJpbGl0eS5AcHJvbWlzZTsKKyAgICAgICAgdmFyIHZhbHVlVGh1bmsgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiB2YWx1ZTsgfTsKIAogICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHZhbHVl
VGh1bmspOwogICAgIH0KQEAgLTEyNywxNSArMTI3LDE1IEBAIGZ1bmN0aW9uIGdldENhdGNoRmlu
YWxseShvbkZpbmFsbHksIGNvbnN0cnVjdG9yKQogICAgIHJldHVybiBmdW5jdGlvbihyZWFzb24p
CiAgICAgewogICAgICAgICBAYXNzZXJ0KHR5cGVvZiBvbkZpbmFsbHkgPT09ICJmdW5jdGlvbiIp
OwotICAgICAgICBjb25zdCByZXN1bHQgPSBvbkZpbmFsbHkoKTsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IG9uRmluYWxseSgpOwogCiAgICAgICAgIEBhc3NlcnQoQGlzQ29uc3RydWN0b3IoY29uc3Ry
dWN0b3IpKTsKLSAgICAgICAgY29uc3QgcmVzdWx0Q2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShjb25zdHJ1Y3Rvcik7CisgICAgICAgIHZhciByZXN1bHRDYXBhYmlsaXR5ID0gQG5l
d1Byb21pc2VDYXBhYmlsaXR5KGNvbnN0cnVjdG9yKTsKIAogICAgICAgICByZXN1bHRDYXBhYmls
aXR5LkByZXNvbHZlLkBjYWxsKEB1bmRlZmluZWQsIHJlc3VsdCk7CiAKLSAgICAgICAgY29uc3Qg
cHJvbWlzZSA9IHJlc3VsdENhcGFiaWxpdHkuQHByb21pc2U7Ci0gICAgICAgIGNvbnN0IHRocm93
ZXIgPSBmdW5jdGlvbiAoKSB7IHRocm93IHJlYXNvbjsgfTsKKyAgICAgICAgdmFyIHByb21pc2Ug
PSByZXN1bHRDYXBhYmlsaXR5LkBwcm9taXNlOworICAgICAgICB2YXIgdGhyb3dlciA9IGZ1bmN0
aW9uICgpIHsgdGhyb3cgcmVhc29uOyB9OwogCiAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4o
dGhyb3dlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1JlZ0V4cFByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMKaW5kZXggYmI0ZDUwYjcwMzUxNTI2ZWEzYzQyYzJjZDg3YTIzZDVm
N2YwZGQzNi4uMzk0ZmU1NDljYjM0MTkxNGJkY2ZjZDJlYmVmOTcwOTYyZTA1YzBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCkBA
IC00OCwxMSArNDgsMTEgQEAgZnVuY3Rpb24gYWR2YW5jZVN0cmluZ0luZGV4KHN0cmluZywgaW5k
ZXgsIHVuaWNvZGUpCiAgICAgaWYgKGluZGV4ICsgMSA+PSBzdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gaW5kZXggKyAxOwogCi0gICAgbGV0IGZpcnN0ID0gc3RyaW5nLkBjaGFyQ29kZUF0
KGluZGV4KTsKKyAgICB2YXIgZmlyc3QgPSBzdHJpbmcuQGNoYXJDb2RlQXQoaW5kZXgpOwogICAg
IGlmIChmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRikKICAgICAgICAgcmV0dXJuIGlu
ZGV4ICsgMTsKIAotICAgIGxldCBzZWNvbmQgPSBzdHJpbmcuQGNoYXJDb2RlQXQoaW5kZXggKyAx
KTsKKyAgICB2YXIgc2Vjb25kID0gc3RyaW5nLkBjaGFyQ29kZUF0KGluZGV4ICsgMSk7CiAgICAg
aWYgKHNlY29uZCA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkYpCiAgICAgICAgIHJldHVybiBp
bmRleCArIDE7CiAKQEAgLTY0LDEwICs2NCwxMCBAQCBmdW5jdGlvbiByZWdFeHBFeGVjKHJlZ2V4
cCwgc3RyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGxldCBleGVjID0gcmVnZXhwLmV4
ZWM7Ci0gICAgbGV0IGJ1aWx0aW5FeGVjID0gQHJlZ0V4cEJ1aWx0aW5FeGVjOworICAgIHZhciBl
eGVjID0gcmVnZXhwLmV4ZWM7CisgICAgdmFyIGJ1aWx0aW5FeGVjID0gQHJlZ0V4cEJ1aWx0aW5F
eGVjOwogICAgIGlmIChleGVjICE9PSBidWlsdGluRXhlYyAmJiB0eXBlb2YgZXhlYyA9PT0gImZ1
bmN0aW9uIikgewotICAgICAgICBsZXQgcmVzdWx0ID0gZXhlYy5AY2FsbChyZWdleHAsIHN0cik7
CisgICAgICAgIHZhciByZXN1bHQgPSBleGVjLkBjYWxsKHJlZ2V4cCwgc3RyKTsKICAgICAgICAg
aWYgKHJlc3VsdCAhPT0gbnVsbCAmJiAhQGlzT2JqZWN0KHJlc3VsdCkpCiAgICAgICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlRoZSByZXN1bHQgb2YgYSBSZWdFeHAgZXhlYyBtdXN0IGJlIG51bGwg
b3IgYW4gb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04NCwxNCArODQsMTQg
QEAgZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2gocmVnZXhw
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhl
IFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCi0gICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5
R2V0QnlJZChyZWdleHAsICJleGVjIik7CisgICAgdmFyIHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJ
ZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGlu
RXhlYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBsZXQgcmVnZXhwR2xvYmFsID0gQHRy
eUdldEJ5SWQocmVnZXhwLCAiZ2xvYmFsIik7CisgICAgdmFyIHJlZ2V4cEdsb2JhbCA9IEB0cnlH
ZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOwogICAgIGlmIChyZWdleHBHbG9iYWwgIT09IEByZWdF
eHBQcm90b0dsb2JhbEdldHRlcikKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgbGV0IHJlZ2V4
cFVuaWNvZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmljb2RlIik7CisgICAgdmFyIHJlZ2V4
cFVuaWNvZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmljb2RlIik7CiAgICAgaWYgKHJlZ2V4
cFVuaWNvZGUgIT09IEByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCkBAIC0xMDYsMTcgKzEwNiwxNyBAQCBmdW5jdGlvbiBtYXRjaFNsb3cocmVnZXhwLCBz
dHIpCiAgICAgaWYgKCFyZWdleHAuZ2xvYmFsKQogICAgICAgICByZXR1cm4gQHJlZ0V4cEV4ZWMo
cmVnZXhwLCBzdHIpOwogICAgIAotICAgIGxldCB1bmljb2RlID0gcmVnZXhwLnVuaWNvZGU7Cisg
ICAgdmFyIHVuaWNvZGUgPSByZWdleHAudW5pY29kZTsKICAgICByZWdleHAubGFzdEluZGV4ID0g
MDsKLSAgICBsZXQgcmVzdWx0TGlzdCA9IFtdOworICAgIHZhciByZXN1bHRMaXN0ID0gW107CiAK
ICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgZ3JlYXQgdG8gaW1wbGVtZW50IGEgc29sdXRpb24g
c2ltaWxhciB0byB3aGF0IHdlIGRvIGluCiAgICAgLy8gUmVnRXhwT2JqZWN0OjptYXRjaEdsb2Jh
bCgpLiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGlzIHBvc3NpYmxlLCBzaW5jZSB0aGlzIGxvb3Ag
aGFzCiAgICAgLy8gZWZmZWN0cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODE0NQotICAgIGNvbnN0IG1heGltdW1SZWFzb25hYmxlTWF0Y2hTaXplID0gMTAwMDAw
MDAwOworICAgIHZhciBtYXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSA9IDEwMDAwMDAwMDsKIAog
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBAcmVnRXhwRXhlYyhyZWdl
eHAsIHN0cik7CisgICAgICAgIHZhciByZXN1bHQgPSBAcmVnRXhwRXhlYyhyZWdleHAsIHN0cik7
CiAgICAgICAgIAogICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0TGlzdC5sZW5ndGggPT09IDApCkBAIC0xMjcsNyArMTI3LDcgQEAgZnVuY3Rpb24g
bWF0Y2hTbG93KHJlZ2V4cCwgc3RyKQogICAgICAgICBpZiAocmVzdWx0TGlzdC5sZW5ndGggPiBt
YXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSkKICAgICAgICAgICAgIEB0aHJvd091dE9mTWVtb3J5
RXJyb3IoKTsKIAotICAgICAgICBsZXQgcmVzdWx0U3RyaW5nID0gQHRvU3RyaW5nKHJlc3VsdFsw
XSk7CisgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSBAdG9TdHJpbmcocmVzdWx0WzBdKTsKIAog
ICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpCiAgICAgICAgICAgICByZWdleHAubGFz
dEluZGV4ID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNv
ZGUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIGZ1bmN0aW9uIG1hdGNoKHN0ckFyZykKICAgICBpZiAo
IUBpc09iamVjdCh0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZWdFeHAucHJvdG90
eXBlLkBAbWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBs
ZXQgc3RyID0gQHRvU3RyaW5nKHN0ckFyZyk7CisgICAgdmFyIHN0ciA9IEB0b1N0cmluZyhzdHJB
cmcpOwogCiAgICAgLy8gQ2hlY2sgZm9yIG9ic2VydmFibGUgc2lkZSBlZmZlY3RzIGFuZCBjYWxs
IHRoZSBmYXN0IHBhdGggaWYgdGhlcmUgYXJlbid0IGFueS4KICAgICBpZiAoIUBoYXNPYnNlcnZh
YmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRjaCh0aGlzKSkKQEAgLTE1NywxOSArMTU3LDE5IEBA
IGZ1bmN0aW9uIG1hdGNoQWxsKHN0ckFyZykKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBs
ZXQgcmVnRXhwID0gdGhpczsKKyAgICB2YXIgcmVnRXhwID0gdGhpczsKICAgICBpZiAoIUBpc09i
amVjdChyZWdFeHApKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUu
QEBtYXRjaEFsbCByZXF1aXJlcyB8dGhpc3wgdG8gYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQg
c3RyaW5nID0gQHRvU3RyaW5nKHN0ckFyZyk7Ci0gICAgbGV0IE1hdGNoZXIgPSBAc3BlY2llc0Nv
bnN0cnVjdG9yKHJlZ0V4cCwgQFJlZ0V4cCk7CisgICAgdmFyIHN0cmluZyA9IEB0b1N0cmluZyhz
dHJBcmcpOworICAgIHZhciBNYXRjaGVyID0gQHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdFeHAsIEBS
ZWdFeHApOwogCi0gICAgbGV0IGZsYWdzID0gQHRvU3RyaW5nKHJlZ0V4cC5mbGFncyk7Ci0gICAg
bGV0IG1hdGNoZXIgPSBuZXcgTWF0Y2hlcihyZWdFeHAsIGZsYWdzKTsKKyAgICB2YXIgZmxhZ3Mg
PSBAdG9TdHJpbmcocmVnRXhwLmZsYWdzKTsKKyAgICB2YXIgbWF0Y2hlciA9IG5ldyBNYXRjaGVy
KHJlZ0V4cCwgZmxhZ3MpOwogICAgIG1hdGNoZXIubGFzdEluZGV4ID0gQHRvTGVuZ3RoKHJlZ0V4
cC5sYXN0SW5kZXgpOwogCi0gICAgbGV0IGdsb2JhbCA9IEBzdHJpbmdJbmNsdWRlc0ludGVybmFs
LkBjYWxsKGZsYWdzLCAiZyIpOwotICAgIGxldCBmdWxsVW5pY29kZSA9IEBzdHJpbmdJbmNsdWRl
c0ludGVybmFsLkBjYWxsKGZsYWdzLCAidSIpOworICAgIHZhciBnbG9iYWwgPSBAc3RyaW5nSW5j
bHVkZXNJbnRlcm5hbC5AY2FsbChmbGFncywgImciKTsKKyAgICB2YXIgZnVsbFVuaWNvZGUgPSBA
c3RyaW5nSW5jbHVkZXNJbnRlcm5hbC5AY2FsbChmbGFncywgInUiKTsKIAogICAgIHJldHVybiBu
ZXcgQFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKG1hdGNoZXIsIHN0cmluZywgZ2xvYmFsLCBmdWxsVW5p
Y29kZSk7CiB9CkBAIC0xODMsMTkgKzE4MywxOSBAQCBmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24o
bWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhYwog
ICAgIHsKICAgICAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgICAgIGxldCBtYXRjaExlbmd0aCA9
IG1hdGNoZWQubGVuZ3RoOwotICAgICAgICBsZXQgc3RyaW5nTGVuZ3RoID0gc3RyLmxlbmd0aDsK
LSAgICAgICAgbGV0IHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoTGVuZ3RoOwotICAgICAgICBs
ZXQgbSA9IGNhcHR1cmVzLmxlbmd0aDsKLSAgICAgICAgbGV0IHJlcGxhY2VtZW50TGVuZ3RoID0g
cmVwbGFjZW1lbnQubGVuZ3RoOwotICAgICAgICBsZXQgcmVzdWx0ID0gIiI7Ci0gICAgICAgIGxl
dCBsYXN0U3RhcnQgPSAwOworICAgICAgICB2YXIgbWF0Y2hMZW5ndGggPSBtYXRjaGVkLmxlbmd0
aDsKKyAgICAgICAgdmFyIHN0cmluZ0xlbmd0aCA9IHN0ci5sZW5ndGg7CisgICAgICAgIHZhciB0
YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaExlbmd0aDsKKyAgICAgICAgdmFyIG0gPSBjYXB0dXJl
cy5sZW5ndGg7CisgICAgICAgIHZhciByZXBsYWNlbWVudExlbmd0aCA9IHJlcGxhY2VtZW50Lmxl
bmd0aDsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICIiOworICAgICAgICB2YXIgbGFzdFN0YXJ0ID0g
MDsKIAotICAgICAgICBmb3IgKGxldCBzdGFydCA9IDA7IHN0YXJ0ID0gcmVwbGFjZW1lbnQuaW5k
ZXhPZigiJCIsIGxhc3RTdGFydCksIHN0YXJ0ICE9PSAtMTsgbGFzdFN0YXJ0ID0gc3RhcnQpIHsK
KyAgICAgICAgZm9yICh2YXIgc3RhcnQgPSAwOyBzdGFydCA9IHJlcGxhY2VtZW50LmluZGV4T2Yo
IiQiLCBsYXN0U3RhcnQpLCBzdGFydCAhPT0gLTE7IGxhc3RTdGFydCA9IHN0YXJ0KSB7CiAgICAg
ICAgICAgICBpZiAoc3RhcnQgLSBsYXN0U3RhcnQgPiAwKQogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdCArIHJlcGxhY2VtZW50LnN1YnN0cmluZyhsYXN0U3RhcnQsIHN0YXJ0KTsKICAg
ICAgICAgICAgIHN0YXJ0Kys7Ci0gICAgICAgICAgICBsZXQgY2ggPSByZXBsYWNlbWVudC5jaGFy
QXQoc3RhcnQpOworICAgICAgICAgICAgdmFyIGNoID0gcmVwbGFjZW1lbnQuY2hhckF0KHN0YXJ0
KTsKICAgICAgICAgICAgIGlmIChjaCA9PT0gIiIpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0ICsgIiQiOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0yMjEsMTEgKzIyMSwxMSBAQCBm
dW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMs
IG5hbWVkQ2FwdHVyZXMsIHJlcGxhYwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBjYXNlICI8IjoKICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWVkQ2FwdHVy
ZXMgIT09IEB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncm91cE5h
bWVTdGFydEluZGV4ID0gc3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdy
b3VwTmFtZUVuZEluZGV4ID0gcmVwbGFjZW1lbnQuaW5kZXhPZigiPiIsIGdyb3VwTmFtZVN0YXJ0
SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwTmFtZVN0YXJ0SW5kZXgg
PSBzdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JvdXBOYW1lRW5kSW5k
ZXggPSByZXBsYWNlbWVudC5pbmRleE9mKCI+IiwgZ3JvdXBOYW1lU3RhcnRJbmRleCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBOYW1lRW5kSW5kZXggIT09IC0xKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwTmFtZSA9IHJlcGxhY2VtZW50LnN1YnN0
cmluZyhncm91cE5hbWVTdGFydEluZGV4LCBncm91cE5hbWVFbmRJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2dyb3VwTmFtZV07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwTmFtZSA9IHJlcGxhY2VtZW50
LnN1YnN0cmluZyhncm91cE5hbWVTdGFydEluZGV4LCBncm91cE5hbWVFbmRJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2dyb3Vw
TmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhcHR1cmUgIT09IEB1bmRl
ZmluZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAr
IEB0b1N0cmluZyhjYXB0dXJlKTsKIApAQCAtMjM4LDIxICsyMzgsMjEgQEAgZnVuY3Rpb24gZ2V0
U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1
cmVzLCByZXBsYWMKICAgICAgICAgICAgICAgICAgICAgc3RhcnQrKzsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgbGV0IGNoQ29kZSA9IGNoLmNoYXJDb2RlQXQoMCk7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBjaENvZGUgPSBjaC5jaGFyQ29kZUF0KDApOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2hD
b2RlID49IDB4MzAgJiYgY2hDb2RlIDw9IDB4MzkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxldCBvcmlnaW5hbFN0YXJ0ID0gc3RhcnQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG9yaWdpbmFsU3RhcnQgPSBzdGFydCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydCsrOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNoQ29kZSAtIDB4MzA7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGNoQ29kZSAtIDB4MzA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobiA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSByZXN1bHQgKyByZXBsYWNlbWVudC5zdWJzdHJpbmcob3JpZ2luYWxTdGFydCwg
c3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCByZXBs
YWNlbWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXh0Q2hD
b2RlID0gcmVwbGFjZW1lbnQuY2hhckNvZGVBdChzdGFydCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG5leHRDaENvZGUgPSByZXBsYWNlbWVudC5jaGFyQ29kZUF0KHN0YXJ0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dENoQ29kZSA+PSAweDMwICYmIG5l
eHRDaENvZGUgPD0gMHgzOSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
bm4gPSAxMCAqIG4gKyBuZXh0Q2hDb2RlIC0gMHgzMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG5uID0gMTAgKiBuICsgbmV4dENoQ29kZSAtIDB4MzA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChubiA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuID0gbm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydCsrOwpAQCAtMjY1LDcgKzI2NSw3IEBAIGZ1bmN0aW9uIGdldFN1YnN0aXR1dGlv
bihtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFj
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXB0dXJlID0gY2FwdHVyZXNb
biAtIDFdOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBjYXB0dXJlc1tu
IC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FwdHVyZSAhPT0gQHVuZGVmaW5l
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBjYXB0dXJl
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTI4MSwyNiArMjgxLDI2IEBAIGZ1bmN0
aW9uIGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFt
ZWRDYXB0dXJlcywgcmVwbGFjCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykpCiAgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQHJlcGxhY2UgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQgcmVnZXhwID0gdGhpczsKKyAgICB2YXIg
cmVnZXhwID0gdGhpczsKIAotICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyQXJnKTsKLSAgICBs
ZXQgc3RyaW5nTGVuZ3RoID0gc3RyLmxlbmd0aDsKLSAgICBsZXQgZnVuY3Rpb25hbFJlcGxhY2Ug
PSB0eXBlb2YgcmVwbGFjZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgICB2YXIgc3RyID0gQHRvU3RyaW5n
KHN0ckFyZyk7CisgICAgdmFyIHN0cmluZ0xlbmd0aCA9IHN0ci5sZW5ndGg7CisgICAgdmFyIGZ1
bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2UgPT09ICdmdW5jdGlvbic7CiAKICAgICBp
ZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKQogICAgICAgICByZXBsYWNlID0gQHRvU3RyaW5nKHJlcGxh
Y2UpOwogCi0gICAgbGV0IGdsb2JhbCA9IHJlZ2V4cC5nbG9iYWw7Ci0gICAgbGV0IHVuaWNvZGUg
PSBmYWxzZTsKKyAgICB2YXIgZ2xvYmFsID0gcmVnZXhwLmdsb2JhbDsKKyAgICB2YXIgdW5pY29k
ZSA9IGZhbHNlOwogCiAgICAgaWYgKGdsb2JhbCkgewogICAgICAgICB1bmljb2RlID0gcmVnZXhw
LnVuaWNvZGU7CiAgICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSAwOwogICAgIH0KIAotICAgIGxl
dCByZXN1bHRMaXN0ID0gW107Ci0gICAgbGV0IHJlc3VsdDsKLSAgICBsZXQgZG9uZSA9IGZhbHNl
OworICAgIHZhciByZXN1bHRMaXN0ID0gW107CisgICAgdmFyIHJlc3VsdDsKKyAgICB2YXIgZG9u
ZSA9IGZhbHNlOwogICAgIHdoaWxlICghZG9uZSkgewogICAgICAgICByZXN1bHQgPSBAcmVnRXhw
RXhlYyhyZWdleHAsIHN0cik7CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBmdW5jdGlvbiBnZXRTdWJz
dGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMs
IHJlcGxhYwogICAgICAgICAgICAgaWYgKCFnbG9iYWwpCiAgICAgICAgICAgICAgICAgZG9uZSA9
IHRydWU7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgbWF0Y2hTdHIg
PSBAdG9TdHJpbmcocmVzdWx0WzBdKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2hTdHIgPSBA
dG9TdHJpbmcocmVzdWx0WzBdKTsKIAogICAgICAgICAgICAgICAgIGlmICghbWF0Y2hTdHIubGVu
Z3RoKQogICAgICAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4ID0gQGFkdmFuY2VTdHJp
bmdJbmRleChzdHIsIHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNvZGUpOwpAQCAtMzE5LDQxICszMTks
NDEgQEAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNh
cHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGxl
dCBhY2N1bXVsYXRlZFJlc3VsdCA9ICIiOwotICAgIGxldCBuZXh0U291cmNlUG9zaXRpb24gPSAw
OwotICAgIGxldCBsYXN0UG9zaXRpb24gPSAwOworICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9
ICIiOworICAgIHZhciBuZXh0U291cmNlUG9zaXRpb24gPSAwOworICAgIHZhciBsYXN0UG9zaXRp
b24gPSAwOwogCi0gICAgZm9yIChsZXQgaSA9IDAsIHJlc3VsdExpc3RMZW5ndGggPSByZXN1bHRM
aXN0Lmxlbmd0aDsgaSA8IHJlc3VsdExpc3RMZW5ndGg7ICsraSkgewotICAgICAgICBsZXQgcmVz
dWx0ID0gcmVzdWx0TGlzdFtpXTsKLSAgICAgICAgbGV0IG5DYXB0dXJlcyA9IHJlc3VsdC5sZW5n
dGggLSAxOworICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRMaXN0TGVuZ3RoID0gcmVzdWx0TGlz
dC5sZW5ndGg7IGkgPCByZXN1bHRMaXN0TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IHJlc3VsdExpc3RbaV07CisgICAgICAgIHZhciBuQ2FwdHVyZXMgPSByZXN1bHQubGVuZ3Ro
IC0gMTsKICAgICAgICAgaWYgKG5DYXB0dXJlcyA8IDApCiAgICAgICAgICAgICBuQ2FwdHVyZXMg
PSAwOwotICAgICAgICBsZXQgbWF0Y2hlZCA9IEB0b1N0cmluZyhyZXN1bHRbMF0pOwotICAgICAg
ICBsZXQgbWF0Y2hMZW5ndGggPSBtYXRjaGVkLmxlbmd0aDsKLSAgICAgICAgbGV0IHBvc2l0aW9u
ID0gcmVzdWx0LmluZGV4OworICAgICAgICB2YXIgbWF0Y2hlZCA9IEB0b1N0cmluZyhyZXN1bHRb
MF0pOworICAgICAgICB2YXIgbWF0Y2hMZW5ndGggPSBtYXRjaGVkLmxlbmd0aDsKKyAgICAgICAg
dmFyIHBvc2l0aW9uID0gcmVzdWx0LmluZGV4OwogICAgICAgICBwb3NpdGlvbiA9IChwb3NpdGlv
biA+IHN0cmluZ0xlbmd0aCkgPyBzdHJpbmdMZW5ndGggOiBwb3NpdGlvbjsKICAgICAgICAgcG9z
aXRpb24gPSAocG9zaXRpb24gPCAwKSA/IDAgOiBwb3NpdGlvbjsKIAotICAgICAgICBsZXQgY2Fw
dHVyZXMgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPD0gbkNhcHR1cmVzOyBuKysp
IHsKLSAgICAgICAgICAgIGxldCBjYXBOID0gcmVzdWx0W25dOworICAgICAgICB2YXIgY2FwdHVy
ZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbiA9IDE7IG4gPD0gbkNhcHR1cmVzOyBuKyspIHsK
KyAgICAgICAgICAgIHZhciBjYXBOID0gcmVzdWx0W25dOwogICAgICAgICAgICAgaWYgKGNhcE4g
IT09IEB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgY2FwTiA9IEB0b1N0cmluZyhjYXBOKTsK
ICAgICAgICAgICAgIGNhcHR1cmVzLkBwdXNoKGNhcE4pOwogICAgICAgICB9CiAKLSAgICAgICAg
bGV0IHJlcGxhY2VtZW50OwotICAgICAgICBsZXQgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91
cHM7CisgICAgICAgIHZhciByZXBsYWNlbWVudDsKKyAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMg
PSByZXN1bHQuZ3JvdXBzOwogCiAgICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkgewotICAg
ICAgICAgICAgbGV0IHJlcGxhY2VyQXJncyA9IFsgbWF0Y2hlZCBdLmNvbmNhdChjYXB0dXJlcyk7
CisgICAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gWyBtYXRjaGVkIF0uY29uY2F0KGNhcHR1
cmVzKTsKICAgICAgICAgICAgIHJlcGxhY2VyQXJncy5AcHVzaChwb3NpdGlvbik7CiAgICAgICAg
ICAgICByZXBsYWNlckFyZ3MuQHB1c2goc3RyKTsKIAogICAgICAgICAgICAgaWYgKG5hbWVkQ2Fw
dHVyZXMgIT09IEB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgcmVwbGFjZXJBcmdzLkBwdXNo
KG5hbWVkQ2FwdHVyZXMpOwogCi0gICAgICAgICAgICBsZXQgcmVwbFZhbHVlID0gcmVwbGFjZS5A
YXBwbHkoQHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKTsKKyAgICAgICAgICAgIHZhciByZXBsVmFs
dWUgPSByZXBsYWNlLkBhcHBseShAdW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpOwogICAgICAgICAg
ICAgcmVwbGFjZW1lbnQgPSBAdG9TdHJpbmcocmVwbFZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSBAdW5kZWZpbmVkKQpAQCAtMzgxLDcg
KzM4MSw3IEBAIGZ1bmN0aW9uIHNlYXJjaChzdHJBcmcpCiB7CiAgICAgInVzZSBzdHJpY3QiOwog
Ci0gICAgbGV0IHJlZ2V4cCA9IHRoaXM7CisgICAgdmFyIHJlZ2V4cCA9IHRoaXM7CiAKICAgICAv
LyBDaGVjayBmb3Igb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdHMgYW5kIGNhbGwgdGhlIGZhc3QgcGF0
aCBpZiB0aGVyZSBhcmVuJ3QgYW55LgogICAgIGlmIChAaXNSZWdFeHBPYmplY3QocmVnZXhwKQpA
QCAtMzk1LDEwICszOTUsMTAgQEAgZnVuY3Rpb24gc2VhcmNoKHN0ckFyZykKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAc2VhcmNoIHJlcXVpcmVzIHRoYXQgfHRo
aXN8IGJlIGFuIE9iamVjdCIpOwogCiAgICAgLy8gMy4gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJp
bmcpLgotICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyQXJnKQorICAgIHZhciBzdHIgPSBAdG9T
dHJpbmcoc3RyQXJnKQogCiAgICAgLy8gNC4gTGV0IHByZXZpb3VzTGFzdEluZGV4IGJlID8gR2V0
KHJ4LCAibGFzdEluZGV4IikuCi0gICAgbGV0IHByZXZpb3VzTGFzdEluZGV4ID0gcmVnZXhwLmxh
c3RJbmRleDsKKyAgICB2YXIgcHJldmlvdXNMYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4Owog
CiAgICAgLy8gNS5JZiBTYW1lVmFsdWUocHJldmlvdXNMYXN0SW5kZXgsIDApIGlzIGZhbHNlLCB0
aGVuCiAgICAgLy8gNS5hLiBQZXJmb3JtID8gU2V0KHJ4LCAibGFzdEluZGV4IiwgMCwgdHJ1ZSku
CkBAIC00MDcsNyArNDA3LDcgQEAgZnVuY3Rpb24gc2VhcmNoKHN0ckFyZykKICAgICAgICAgcmVn
ZXhwLmxhc3RJbmRleCA9IDA7CiAKICAgICAvLyA2LiBMZXQgcmVzdWx0IGJlID8gUmVnRXhwRXhl
YyhyeCwgUykuCi0gICAgbGV0IHJlc3VsdCA9IEByZWdFeHBFeGVjKHJlZ2V4cCwgc3RyKTsKKyAg
ICB2YXIgcmVzdWx0ID0gQHJlZ0V4cEV4ZWMocmVnZXhwLCBzdHIpOwogCiAgICAgLy8gNy4gTGV0
IGN1cnJlbnRMYXN0SW5kZXggYmUgPyBHZXQocngsICJsYXN0SW5kZXgiKS4KICAgICAvLyA4LiBJ
ZiBTYW1lVmFsdWUoY3VycmVudExhc3RJbmRleCwgcHJldmlvdXNMYXN0SW5kZXgpIGlzIGZhbHNl
LCB0aGVuCkBAIC00MzMsMzQgKzQzMywzNCBAQCBmdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lkZUVm
ZmVjdHNGb3JSZWdFeHBTcGxpdChyZWdleHApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gVGhpcyBpcyBhY2Nlc3NlZCBieSB0aGUgUmVnRXhwRXhlYyBpbnRlcm5hbCBmdW5jdGlvbi4K
LSAgICBsZXQgcmVnZXhwRXhlYyA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImV4ZWMiKTsKKyAgICB2
YXIgcmVnZXhwRXhlYyA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImV4ZWMiKTsKICAgICBpZiAocmVn
ZXhwRXhlYyAhPT0gQHJlZ0V4cEJ1aWx0aW5FeGVjKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKICAgICAvLyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHN0ZXAgNSBiZWxvdy4KLSAgICBsZXQgcmVn
ZXhwRmxhZ3MgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJmbGFncyIpOworICAgIHZhciByZWdleHBG
bGFncyA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImZsYWdzIik7CiAgICAgaWYgKHJlZ2V4cEZsYWdz
ICE9PSBAcmVnRXhwUHJvdG9GbGFnc0dldHRlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
CiAgICAgLy8gVGhlc2UgYXJlIGFjY2Vzc2VkIGJ5IHRoZSBidWlsdGluIGZsYWdzIGdldHRlci4K
LSAgICBsZXQgcmVnZXhwR2xvYmFsID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZ2xvYmFsIik7Cisg
ICAgdmFyIHJlZ2V4cEdsb2JhbCA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOwogICAg
IGlmIChyZWdleHBHbG9iYWwgIT09IEByZWdFeHBQcm90b0dsb2JhbEdldHRlcikKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgbGV0IHJlZ2V4cElnbm9yZUNhc2UgPSBAdHJ5R2V0QnlJZChyZWdl
eHAsICJpZ25vcmVDYXNlIik7CisgICAgdmFyIHJlZ2V4cElnbm9yZUNhc2UgPSBAdHJ5R2V0QnlJ
ZChyZWdleHAsICJpZ25vcmVDYXNlIik7CiAgICAgaWYgKHJlZ2V4cElnbm9yZUNhc2UgIT09IEBy
ZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGxl
dCByZWdleHBNdWx0aWxpbmUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJtdWx0aWxpbmUiKTsKKyAg
ICB2YXIgcmVnZXhwTXVsdGlsaW5lID0gQHRyeUdldEJ5SWQocmVnZXhwLCAibXVsdGlsaW5lIik7
CiAgICAgaWYgKHJlZ2V4cE11bHRpbGluZSAhPT0gQHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVy
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBsZXQgcmVnZXhwU3RpY2t5ID0gQHRyeUdldEJ5
SWQocmVnZXhwLCAic3RpY2t5Iik7CisgICAgdmFyIHJlZ2V4cFN0aWNreSA9IEB0cnlHZXRCeUlk
KHJlZ2V4cCwgInN0aWNreSIpOwogICAgIGlmIChyZWdleHBTdGlja3kgIT09IEByZWdFeHBQcm90
b1N0aWNreUdldHRlcikKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgbGV0IHJlZ2V4cFVuaWNv
ZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmljb2RlIik7CisgICAgdmFyIHJlZ2V4cFVuaWNv
ZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmljb2RlIik7CiAgICAgaWYgKHJlZ2V4cFVuaWNv
ZGUgIT09IEByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhlIFJlZ0V4cCBzcGVjaWVzIGNvbnN0
cnVjdG9yLgotICAgIGxldCByZWdleHBTb3VyY2UgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJzb3Vy
Y2UiKTsKKyAgICB2YXIgcmVnZXhwU291cmNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAic291cmNl
Iik7CiAgICAgaWYgKHJlZ2V4cFNvdXJjZSAhPT0gQHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNDc3LDI5ICs0NzcsMjkgQEAgZnVuY3Rpb24gc3Bs
aXQoc3RyaW5nLCBsaW1pdCkKICAgICAvLyAyLiBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0LCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykpCiAg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQHNwbGl0IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOwotICAgIGxldCByZWdleHAgPSB0aGlzOworICAg
IHZhciByZWdleHAgPSB0aGlzOwogCiAgICAgLy8gMy4gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJp
bmcpLgotICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyaW5nKTsKKyAgICB2YXIgc3RyID0gQHRv
U3RyaW5nKHN0cmluZyk7CiAKICAgICAvLyA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3Rv
cihyeCwgJVJlZ0V4cCUpLgotICAgIGxldCBzcGVjaWVzQ29uc3RydWN0b3IgPSBAc3BlY2llc0Nv
bnN0cnVjdG9yKHJlZ2V4cCwgQFJlZ0V4cCk7CisgICAgdmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9
IEBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBAUmVnRXhwKTsKIAogICAgIGlmIChzcGVjaWVz
Q29uc3RydWN0b3IgPT09IEBSZWdFeHAgJiYgIUBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JS
ZWdFeHBTcGxpdChyZWdleHApKQogICAgICAgICByZXR1cm4gQHJlZ0V4cFNwbGl0RmFzdC5AY2Fs
bChyZWdleHAsIHN0ciwgbGltaXQpOwogCiAgICAgLy8gNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KLSAgICBsZXQgZmxhZ3MgPSBAdG9TdHJpbmcocmVnZXhw
LmZsYWdzKTsKKyAgICB2YXIgZmxhZ3MgPSBAdG9TdHJpbmcocmVnZXhwLmZsYWdzKTsKIAotICAg
IC8vIDYuIElmIGZsYWdzIGNvbnRhaW5zICJ1IiwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVl
LgotICAgIC8vIDcuIEVsc2UsIGxldCB1bmljb2RlTWF0Y2hpbmcgYmUgZmFsc2UuCi0gICAgbGV0
IHVuaWNvZGVNYXRjaGluZyA9IEBzdHJpbmdJbmNsdWRlc0ludGVybmFsLkBjYWxsKGZsYWdzLCAi
dSIpOwotICAgIC8vIDguIElmIGZsYWdzIGNvbnRhaW5zICJ5IiwgbGV0IG5ld0ZsYWdzIGJlIGZs
YWdzLgotICAgIC8vIDkuIEVsc2UsIGxldCBuZXdGbGFncyBiZSB0aGUgc3RyaW5nIHRoYXQgaXMg
dGhlIGNvbmNhdGVuYXRpb24gb2YgZmxhZ3MgYW5kICJ5Ii4KLSAgICBsZXQgbmV3RmxhZ3MgPSBA
c3RyaW5nSW5jbHVkZXNJbnRlcm5hbC5AY2FsbChmbGFncywgInkiKSA/IGZsYWdzIDogZmxhZ3Mg
KyAieSI7CisgICAgLy8gNi4gSWYgZmxhZ3MgY29udGFpbnMgInUiLCB2YXIgdW5pY29kZU1hdGNo
aW5nIGJlIHRydWUuCisgICAgLy8gNy4gRWxzZSwgdmFyIHVuaWNvZGVNYXRjaGluZyBiZSBmYWxz
ZS4KKyAgICB2YXIgdW5pY29kZU1hdGNoaW5nID0gQHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwuQGNh
bGwoZmxhZ3MsICJ1Iik7CisgICAgLy8gOC4gSWYgZmxhZ3MgY29udGFpbnMgInkiLCB2YXIgbmV3
RmxhZ3MgYmUgZmxhZ3MuCisgICAgLy8gOS4gRWxzZSwgdmFyIG5ld0ZsYWdzIGJlIHRoZSBzdHJp
bmcgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBmbGFncyBhbmQgInkiLgorICAgIHZhciBu
ZXdGbGFncyA9IEBzdHJpbmdJbmNsdWRlc0ludGVybmFsLkBjYWxsKGZsYWdzLCAieSIpID8gZmxh
Z3MgOiBmbGFncyArICJ5IjsKIAogICAgIC8vIDEwLiBMZXQgc3BsaXR0ZXIgYmUgPyBDb25zdHJ1
Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KLSAgICBsZXQgc3BsaXR0ZXIgPSBuZXcgc3BlY2ll
c0NvbnN0cnVjdG9yKHJlZ2V4cCwgbmV3RmxhZ3MpOworICAgIHZhciBzcGxpdHRlciA9IG5ldyBz
cGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBuZXdGbGFncyk7CiAKICAgICAvLyBXZSBuZWVkIHRv
IGNoZWNrIGFnYWluIGZvciBSZWdFeHAgc3ViY2xhc3NlcyB0aGF0IHdpbGwgZmFpbCB0aGUgc3Bl
Y2llc0NvbnN0cnVjdG9yIHRlc3QKICAgICAvLyBidXQgY2FuIHN0aWxsIHVzZSB0aGUgZmFzdCBw
YXRoIGFmdGVyIHdlIGludm9rZSB0aGUgY29uc3RydWN0b3IgYWJvdmUuCkBAIC01MDgsOSArNTA4
LDkgQEAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKIAogICAgIC8vIDExLiBMZXQgQSBi
ZSBBcnJheUNyZWF0ZSgwKS4KICAgICAvLyAxMi4gTGV0IGxlbmd0aEEgYmUgMC4KLSAgICBsZXQg
cmVzdWx0ID0gW107CisgICAgdmFyIHJlc3VsdCA9IFtdOwogCi0gICAgLy8gMTMuIElmIGxpbWl0
IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSBiZSAyXjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWlu
dDMyKGxpbWl0KS4KKyAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCB2YXIgbGltIGJl
IDJeMzItMTsgZWxzZSB2YXIgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgogICAgIGxpbWl0ID0g
KGxpbWl0ID09PSBAdW5kZWZpbmVkKSA/IDB4ZmZmZmZmZmYgOiBsaW1pdCA+Pj4gMDsKIAogICAg
IC8vIDE2LiBJZiBsaW0gPSAwLCByZXR1cm4gQS4KQEAgLTUxOCwxMiArNTE4LDEyIEBAIGZ1bmN0
aW9uIHNwbGl0KHN0cmluZywgbGltaXQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAv
LyAxNC4gW0RlZmVyZWQgZnJvbSBhYm92ZV0gTGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBpbiBTLgotICAgIGxldCBzaXplID0gc3RyLmxlbmd0aDsKKyAgICB2YXIgc2l6ZSA9IHN0
ci5sZW5ndGg7CiAKICAgICAvLyAxNy4gSWYgc2l6ZSA9IDAsIHRoZW4KICAgICBpZiAoIXNpemUp
IHsKICAgICAgICAgLy8gYS4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KLSAg
ICAgICAgbGV0IHogPSBAcmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKKyAgICAgICAgdmFyIHog
PSBAcmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKICAgICAgICAgLy8gYi4gSWYgeiBpcyBub3Qg
bnVsbCwgcmV0dXJuIEEuCiAgICAgICAgIGlmICh6ICE9IG51bGwpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtNTM0LDMyICs1MzQsMzIgQEAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBs
aW1pdCkKICAgICB9CiAKICAgICAvLyAxNS4gW0RlZmVyZWQgZnJvbSBhYm92ZV0gTGV0IHAgYmUg
MC4KLSAgICBsZXQgcG9zaXRpb24gPSAwOworICAgIHZhciBwb3NpdGlvbiA9IDA7CiAgICAgLy8g
MTguIExldCBxIGJlIHAuCi0gICAgbGV0IG1hdGNoUG9zaXRpb24gPSAwOworICAgIHZhciBtYXRj
aFBvc2l0aW9uID0gMDsKIAogICAgIC8vIDE5LiBSZXBlYXQsIHdoaWxlIHEgPCBzaXplCiAgICAg
d2hpbGUgKG1hdGNoUG9zaXRpb24gPCBzaXplKSB7CiAgICAgICAgIC8vIGEuIFBlcmZvcm0gPyBT
ZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KICAgICAgICAgc3BsaXR0ZXIubGFz
dEluZGV4ID0gbWF0Y2hQb3NpdGlvbjsKICAgICAgICAgLy8gYi4gTGV0IHogYmUgPyBSZWdFeHBF
eGVjKHNwbGl0dGVyLCBTKS4KLSAgICAgICAgbGV0IG1hdGNoZXMgPSBAcmVnRXhwRXhlYyhzcGxp
dHRlciwgc3RyKTsKLSAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxsLCBsZXQgcSBiZSBBZHZhbmNl
U3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgdmFyIG1hdGNoZXMg
PSBAcmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxs
LCB2YXIgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KICAg
ICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpCiAgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0g
QGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9zaXRpb24sIHVuaWNvZGVNYXRjaGluZyk7
CiAgICAgICAgIC8vIGQuIEVsc2UgeiBpcyBub3QgbnVsbCwKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBpLiBMZXQgZSBiZSA/IFRvTGVuZ3RoKD8gR2V0KHNwbGl0dGVyLCAibGFzdElu
ZGV4IikpLgotICAgICAgICAgICAgbGV0IGVuZFBvc2l0aW9uID0gQHRvTGVuZ3RoKHNwbGl0dGVy
Lmxhc3RJbmRleCk7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb24gPSBAdG9MZW5ndGgoc3Bs
aXR0ZXIubGFzdEluZGV4KTsKICAgICAgICAgICAgIC8vIGlpLiBMZXQgZSBiZSBtaW4oZSwgc2l6
ZSkuCiAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IChlbmRQb3NpdGlvbiA8PSBzaXplKSA/IGVu
ZFBvc2l0aW9uIDogc2l6ZTsKLSAgICAgICAgICAgIC8vIGlpaS4gSWYgZSA9IHAsIGxldCBxIGJl
IEFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICAgICAg
Ly8gaWlpLiBJZiBlID0gcCwgdmFyIHEgYmUgQWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNv
ZGVNYXRjaGluZykuCiAgICAgICAgICAgICBpZiAoZW5kUG9zaXRpb24gPT09IHBvc2l0aW9uKQog
ICAgICAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBAYWR2YW5jZVN0cmluZ0luZGV4KHN0ciwg
bWF0Y2hQb3NpdGlvbiwgdW5pY29kZU1hdGNoaW5nKTsKICAgICAgICAgICAgIC8vIGl2LiBFbHNl
IGUgIT0gcCwKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIDEuIExldCBU
IGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5n
IG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBxIChleGNs
dXNpdmUpLgotICAgICAgICAgICAgICAgIGxldCBzdWJTdHIgPSBAc3RyaW5nU3Vic3RySW50ZXJu
YWwuQGNhbGwoc3RyLCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKKyAgICAg
ICAgICAgICAgICB2YXIgc3ViU3RyID0gQHN0cmluZ1N1YnN0ckludGVybmFsLkBjYWxsKHN0ciwg
cG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgLy8g
Mi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBU
KS4KICAgICAgICAgICAgICAgICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KICAg
ICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1bHQubGVuZ3RoLCBzdWJT
dHIpOwpAQCAtNTcxLDE0ICs1NzEsMTQgQEAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkK
ICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwogICAgICAgICAgICAgICAg
IC8vIDYuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxlbmd0
aCIpKS4KICAgICAgICAgICAgICAgICAvLyA3LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSBtYXgo
bnVtYmVyT2ZDYXB0dXJlcy0xLCAwKS4KLSAgICAgICAgICAgICAgICBsZXQgbnVtYmVyT2ZDYXB0
dXJlcyA9IG1hdGNoZXMubGVuZ3RoID4gMSA/IG1hdGNoZXMubGVuZ3RoIC0gMSA6IDA7CisgICAg
ICAgICAgICAgICAgdmFyIG51bWJlck9mQ2FwdHVyZXMgPSBtYXRjaGVzLmxlbmd0aCA+IDEgPyBt
YXRjaGVzLmxlbmd0aCAtIDEgOiAwOwogCiAgICAgICAgICAgICAgICAgLy8gOC4gTGV0IGkgYmUg
MS4KLSAgICAgICAgICAgICAgICBsZXQgaSA9IDE7CisgICAgICAgICAgICAgICAgdmFyIGkgPSAx
OwogICAgICAgICAgICAgICAgIC8vIDkuIFJlcGVhdCwgd2hpbGUgaSA8PSBudW1iZXJPZkNhcHR1
cmVzLAogICAgICAgICAgICAgICAgIHdoaWxlIChpIDw9IG51bWJlck9mQ2FwdHVyZXMpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gYS4gTGV0IG5leHRDYXB0dXJlIGJlID8gR2V0KHosICEgVG9T
dHJpbmcoaSkpLgotICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dENhcHR1cmUgPSBtYXRjaGVz
W2ldOworICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dENhcHR1cmUgPSBtYXRjaGVzW2ldOwog
ICAgICAgICAgICAgICAgICAgICAvLyBiLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEs
ICEgVG9TdHJpbmcobGVuZ3RoQSksIG5leHRDYXB0dXJlKS4KICAgICAgICAgICAgICAgICAgICAg
Ly8gZC4gTGV0IGxlbmd0aEEgYmUgbGVuZ3RoQSArIDEuCiAgICAgICAgICAgICAgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIHJlc3VsdC5sZW5ndGgsIG5leHRDYXB0dXJlKTsKQEAgLTU5
NCw3ICs1OTQsNyBAQCBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIGxpbWl0KQogICAgICAgICB9CiAg
ICAgfQogICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vi
c3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNs
dXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZlKS4KLSAgICBsZXQgcmVtYWluaW5nU3RyID0g
QHN0cmluZ1N1YnN0ckludGVybmFsLkBjYWxsKHN0ciwgcG9zaXRpb24sIHNpemUpOworICAgIHZh
ciByZW1haW5pbmdTdHIgPSBAc3RyaW5nU3Vic3RySW50ZXJuYWwuQGNhbGwoc3RyLCBwb3NpdGlv
biwgc2l6ZSk7CiAgICAgLy8gMjEuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBU
b1N0cmluZyhsZW5ndGhBKSwgVCkuCiAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgcmVzdWx0
Lmxlbmd0aCwgcmVtYWluaW5nU3RyKTsKICAgICAvLyAyMi4gUmV0dXJuIEEuCkBAIC02MDcsNyAr
NjA3LDcgQEAgZnVuY3Rpb24gdGVzdChzdHJBcmcpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0g
ICAgbGV0IHJlZ2V4cCA9IHRoaXM7CisgICAgdmFyIHJlZ2V4cCA9IHRoaXM7CiAKICAgICAvLyBD
aGVjayBmb3Igb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdHMgYW5kIGNhbGwgdGhlIGZhc3QgcGF0aCBp
ZiB0aGVyZSBhcmVuJ3QgYW55LgogICAgIGlmIChAaXNSZWdFeHBPYmplY3QocmVnZXhwKQpAQCAt
NjIxLDEwICs2MjEsMTAgQEAgZnVuY3Rpb24gdGVzdChzdHJBcmcpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS50ZXN0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFu
IE9iamVjdCIpOwogCiAgICAgLy8gMy4gTGV0IHN0cmluZyBiZSA/IFRvU3RyaW5nKFMpLgotICAg
IGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyQXJnKTsKKyAgICB2YXIgc3RyID0gQHRvU3RyaW5nKHN0
ckFyZyk7CiAKICAgICAvLyA0LiBMZXQgbWF0Y2ggYmUgPyBSZWdFeHBFeGVjKFIsIHN0cmluZyku
Ci0gICAgbGV0IG1hdGNoID0gQHJlZ0V4cEV4ZWMocmVnZXhwLCBzdHIpOworICAgIHZhciBtYXRj
aCA9IEByZWdFeHBFeGVjKHJlZ2V4cCwgc3RyKTsKIAogICAgIC8vIDUuIElmIG1hdGNoIGlzIG5v
dCBudWxsLCByZXR1cm4gdHJ1ZTsgZWxzZSByZXR1cm4gZmFsc2UuCiAgICAgaWYgKG1hdGNoICE9
PSBudWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGEwM2JhNmI5YzAyYzcz
OWJhNmViMzgzMTMxNDEzYjFlMGNlNTZiNjYuLmU3ZTlkZDM0MzJlM2QxMWFmYjI2ZDBlMmExMzYw
NTI5NWZkZTYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTMwLDI3ICsz
MCwyNyBAQCBmdW5jdGlvbiBuZXh0KCkKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKICAgICAg
ICAgQHRocm93VHlwZUVycm9yKCIlUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQg
cmVxdWlyZXMgfHRoaXN8IHRvIGJlIGFuIE9iamVjdCIpOwogCi0gICAgbGV0IGRvbmUgPSBAZ2V0
QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJlZ0V4cFN0cmluZ0l0ZXJhdG9yRG9uZSIpOworICAg
IHZhciBkb25lID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJyZWdFeHBTdHJpbmdJdGVy
YXRvckRvbmUiKTsKICAgICBpZiAoZG9uZSA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgQHRocm93
VHlwZUVycm9yKCIlUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMg
fHRoaXN8IHRvIGJlIGFuIFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IgaW5zdGFuY2UiKTsKIAogICAg
IGlmIChkb25lKQogICAgICAgICByZXR1cm4geyB2YWx1ZTogQHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9OwogCi0gICAgbGV0IHJlZ0V4cCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAicmVn
RXhwU3RyaW5nSXRlcmF0b3JSZWdFeHAiKTsKLSAgICBsZXQgc3RyaW5nID0gQGdldEJ5SWREaXJl
Y3RQcml2YXRlKHRoaXMsICJyZWdFeHBTdHJpbmdJdGVyYXRvclN0cmluZyIpOwotICAgIGxldCBn
bG9iYWwgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJlZ0V4cFN0cmluZ0l0ZXJhdG9y
R2xvYmFsIik7Ci0gICAgbGV0IGZ1bGxVbmljb2RlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRo
aXMsICJyZWdFeHBTdHJpbmdJdGVyYXRvclVuaWNvZGUiKTsKLSAgICBsZXQgbWF0Y2ggPSBAcmVn
RXhwRXhlYyhyZWdFeHAsIHN0cmluZyk7CisgICAgdmFyIHJlZ0V4cCA9IEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZSh0aGlzLCAicmVnRXhwU3RyaW5nSXRlcmF0b3JSZWdFeHAiKTsKKyAgICB2YXIgc3Ry
aW5nID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJyZWdFeHBTdHJpbmdJdGVyYXRvclN0
cmluZyIpOworICAgIHZhciBnbG9iYWwgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJl
Z0V4cFN0cmluZ0l0ZXJhdG9yR2xvYmFsIik7CisgICAgdmFyIGZ1bGxVbmljb2RlID0gQGdldEJ5
SWREaXJlY3RQcml2YXRlKHRoaXMsICJyZWdFeHBTdHJpbmdJdGVyYXRvclVuaWNvZGUiKTsKKyAg
ICB2YXIgbWF0Y2ggPSBAcmVnRXhwRXhlYyhyZWdFeHAsIHN0cmluZyk7CiAgICAgaWYgKG1hdGNo
ID09PSBudWxsKSB7CiAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAicmVnRXhw
U3RyaW5nSXRlcmF0b3JEb25lIiwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB7IHZhbHVlOiBAdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH07CiAgICAgfQogCiAgICAgaWYgKGdsb2JhbCkgewotICAgICAg
ICBsZXQgbWF0Y2hTdHIgPSBAdG9TdHJpbmcobWF0Y2hbMF0pOworICAgICAgICB2YXIgbWF0Y2hT
dHIgPSBAdG9TdHJpbmcobWF0Y2hbMF0pOwogICAgICAgICBpZiAobWF0Y2hTdHIgPT09ICIiKSB7
Ci0gICAgICAgICAgICBsZXQgdGhpc0luZGV4ID0gQHRvTGVuZ3RoKHJlZ0V4cC5sYXN0SW5kZXgp
OworICAgICAgICAgICAgdmFyIHRoaXNJbmRleCA9IEB0b0xlbmd0aChyZWdFeHAubGFzdEluZGV4
KTsKICAgICAgICAgICAgIHJlZ0V4cC5sYXN0SW5kZXggPSBAYWR2YW5jZVN0cmluZ0luZGV4KHN0
cmluZywgdGhpc0luZGV4LCBmdWxsVW5pY29kZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCmlu
ZGV4IGExNDE1ZWJmNjMyZDVjYjAxMTk0ZDQ1ZDFkNzYyYjZkNWRlZWMyYzAuLjNkOGFlYWY1Y2M3
MzhmMDFiYTFiYjg4ZWYwZjlkODExNGE1OGNlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAtMzgsOCArMzgsOCBAQCBmdW5j
dGlvbiBtYXRjaChyZWdleHApCiAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlci5AY2FsbChyZWdl
eHAsIHRoaXMpOwogICAgIH0KIAotICAgIGxldCB0aGlzU3RyaW5nID0gQHRvU3RyaW5nKHRoaXMp
OwotICAgIGxldCBjcmVhdGVkUmVnRXhwID0gQHJlZ0V4cENyZWF0ZShyZWdleHAsIEB1bmRlZmlu
ZWQpOworICAgIHZhciB0aGlzU3RyaW5nID0gQHRvU3RyaW5nKHRoaXMpOworICAgIHZhciBjcmVh
dGVkUmVnRXhwID0gQHJlZ0V4cENyZWF0ZShyZWdleHAsIEB1bmRlZmluZWQpOwogICAgIHJldHVy
biBjcmVhdGVkUmVnRXhwLkBtYXRjaFN5bWJvbCh0aGlzU3RyaW5nKTsKIH0KIApAQCAtNTQsMTMg
KzU0LDEzIEBAIGZ1bmN0aW9uIG1hdGNoQWxsKGFyZykKICAgICAgICAgaWYgKEBpc1JlZ0V4cChh
cmcpICYmICFAc3RyaW5nSW5jbHVkZXNJbnRlcm5hbC5AY2FsbChAdG9TdHJpbmcoYXJnLmZsYWdz
KSwgImciKSkKICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5t
YXRjaEFsbCBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG5vbi1nbG9iYWwgcmVndWxhciBleHByZXNz
aW9uIik7CiAKLSAgICAgICAgbGV0IG1hdGNoZXIgPSBhcmcuQG1hdGNoQWxsU3ltYm9sOworICAg
ICAgICB2YXIgbWF0Y2hlciA9IGFyZy5AbWF0Y2hBbGxTeW1ib2w7CiAgICAgICAgIGlmICghQGlz
VW5kZWZpbmVkT3JOdWxsKG1hdGNoZXIpKQogICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIuQGNh
bGwoYXJnLCB0aGlzKTsKICAgICB9CiAKLSAgICBsZXQgc3RyaW5nID0gQHRvU3RyaW5nKHRoaXMp
OwotICAgIGxldCByZWdFeHAgPSBAcmVnRXhwQ3JlYXRlKGFyZywgImciKTsKKyAgICB2YXIgc3Ry
aW5nID0gQHRvU3RyaW5nKHRoaXMpOworICAgIHZhciByZWdFeHAgPSBAcmVnRXhwQ3JlYXRlKGFy
ZywgImciKTsKICAgICByZXR1cm4gcmVnRXhwLkBtYXRjaEFsbFN5bWJvbChzdHJpbmcpOwogfQog
CkBAIC0yMjIsMTUgKzIyMiwxNSBAQCBmdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNG
b3JTdHJpbmdSZXBsYWNlKHJlZ2V4cCwgcmVwbGFjZXIpCiAgICAgaWYgKHJlcGxhY2VyICE9PSBA
cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Ci0gICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CisgICAg
dmFyIHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CiAgICAgaWYgKHJl
Z2V4cEV4ZWMgIT09IEByZWdFeHBCdWlsdGluRXhlYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBsZXQgcmVnZXhwR2xvYmFsID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZ2xvYmFsIik7Cisg
ICAgdmFyIHJlZ2V4cEdsb2JhbCA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOwogICAg
IGlmIChyZWdleHBHbG9iYWwgIT09IEByZWdFeHBQcm90b0dsb2JhbEdldHRlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBsZXQgcmVnZXhwVW5pY29kZSA9IEB0cnlHZXRCeUlkKHJlZ2V4
cCwgInVuaWNvZGUiKTsKKyAgICB2YXIgcmVnZXhwVW5pY29kZSA9IEB0cnlHZXRCeUlkKHJlZ2V4
cCwgInVuaWNvZGUiKTsKICAgICBpZiAocmVnZXhwVW5pY29kZSAhPT0gQHJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBm
dW5jdGlvbiByZXBsYWNlKHNlYXJjaCwgcmVwbGFjZSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICBpZiAoc2VhcmNoICE9IG51bGwpIHsKLSAgICAgICAg
bGV0IHJlcGxhY2VyID0gc2VhcmNoLkByZXBsYWNlU3ltYm9sOworICAgICAgICB2YXIgcmVwbGFj
ZXIgPSBzZWFyY2guQHJlcGxhY2VTeW1ib2w7CiAgICAgICAgIGlmIChyZXBsYWNlciAhPT0gQHVu
ZGVmaW5lZCkgewogICAgICAgICAgICAgaWYgKCFAaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9y
U3RyaW5nUmVwbGFjZShzZWFyY2gsIHJlcGxhY2VyKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
QHRvU3RyaW5nKHRoaXMpLkByZXBsYWNlVXNpbmdSZWdFeHAoc2VhcmNoLCByZXBsYWNlKTsKQEAg
LTI1NCw4ICsyNTQsOCBAQCBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaCwgcmVwbGFjZSkKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGxldCB0aGlzU3RyaW5nID0gQHRvU3RyaW5nKHRoaXMpOwotICAg
IGxldCBzZWFyY2hTdHJpbmcgPSBAdG9TdHJpbmcoc2VhcmNoKTsKKyAgICB2YXIgdGhpc1N0cmlu
ZyA9IEB0b1N0cmluZyh0aGlzKTsKKyAgICB2YXIgc2VhcmNoU3RyaW5nID0gQHRvU3RyaW5nKHNl
YXJjaCk7CiAgICAgcmV0dXJuIHRoaXNTdHJpbmcuQHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChz
ZWFyY2hTdHJpbmcsIHJlcGxhY2UpOwogfQogCkBAIC0zNDYsMTYgKzM0NiwxNiBAQCBmdW5jdGlv
biBjcmVhdGVIVE1MKGZ1bmMsIHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKQogICAgICJ1
c2Ugc3RyaWN0IjsKICAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKHN0cmluZykpCiAgICAgICAg
IEB0aHJvd1R5cGVFcnJvcihgJHtmdW5jfSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWRgKTsKLSAgICBsZXQgUyA9IEB0b1N0cmluZyhzdHJpbmcpOwotICAgIGxl
dCBwMSA9ICI8IiArIHRhZzsKKyAgICB2YXIgUyA9IEB0b1N0cmluZyhzdHJpbmcpOworICAgIHZh
ciBwMSA9ICI8IiArIHRhZzsKICAgICBpZiAoYXR0cmlidXRlKSB7Ci0gICAgICAgIGxldCBWID0g
QHRvU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgbGV0IGVzY2FwZWRWID0gVi5AcmVwbGFjZVVzaW5n
UmVnRXhwKC8iL2csICcmcXVvdDsnKTsKKyAgICAgICAgdmFyIFYgPSBAdG9TdHJpbmcodmFsdWUp
OworICAgICAgICB2YXIgZXNjYXBlZFYgPSBWLkByZXBsYWNlVXNpbmdSZWdFeHAoLyIvZywgJyZx
dW90OycpOwogICAgICAgICBwMSA9IHAxICsgIiAiICsgQHRvU3RyaW5nKGF0dHJpYnV0ZSkgKyAn
PSInICsgZXNjYXBlZFYgKyAnIicKICAgICB9Ci0gICAgbGV0IHAyID0gcDEgKyAiPiIKLSAgICBs
ZXQgcDMgPSBwMiArIFM7Ci0gICAgbGV0IHA0ID0gcDMgKyAiPC8iICsgdGFnICsgIj4iOworICAg
IHZhciBwMiA9IHAxICsgIj4iCisgICAgdmFyIHAzID0gcDIgKyBTOworICAgIHZhciBwNCA9IHAz
ICsgIjwvIiArIHRhZyArICI+IjsKICAgICByZXR1cm4gcDQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCmlu
ZGV4IGZhODg1ZDExMzAyNTU4ZDVlNmMxMTFiNTlmNzE0MWE1NGQyN2MxMGUuLjMyZTk2ZWMyMjQz
ZmUwZGY1YmMxZTkyYmM1OTE3ZjFmODc5MDkzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwpAQCAtMzEsMTQg
KzMxLDE0IEBACiBmdW5jdGlvbiBvZigvKiBpdGVtcy4uLiAqLykKIHsKICAgICAidXNlIHN0cmlj
dCI7Ci0gICAgbGV0IGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7Ci0gICAgbGV0IGNvbnN0cnVjdEZ1
bmN0aW9uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhbGxvY2F0ZVR5cGVkQXJyYXki
KTsKKyAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgICB2YXIgY29uc3RydWN0RnVu
Y3Rpb24gPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFsbG9jYXRlVHlwZWRBcnJheSIp
OwogICAgIGlmIChjb25zdHJ1Y3RGdW5jdGlvbiA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJUeXBlZEFycmF5Lm9mIHJlcXVpcmVzIGl0cyB0aGlzIGFyZ3VtZW50IHRv
IHN1YmNsYXNzIGEgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciIpOwogCi0gICAgbGV0IHJlc3VsdCA9
IGNvbnN0cnVjdEZ1bmN0aW9uKGxlbik7CisgICAgdmFyIHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0
aW9uKGxlbik7CiAKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgICAgIHJlc3VsdFtpXSA9IGFyZ3VtZW50c1tp
XTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00OCw5ICs0OCw5IEBAIGZ1bmN0aW9uIGZyb20o
aXRlbXMgLyogWyAsIG1hcGZuIFsgLCB0aGlzQXJnIF0gXSAqLykKIHsKICAgICAidXNlIHN0cmlj
dCI7CiAKLSAgICBsZXQgbWFwRm4gPSBAYXJndW1lbnQoMSk7CisgICAgdmFyIG1hcEZuID0gQGFy
Z3VtZW50KDEpOwogCi0gICAgbGV0IHRoaXNBcmc7CisgICAgdmFyIHRoaXNBcmc7CiAKICAgICBp
ZiAobWFwRm4gIT09IEB1bmRlZmluZWQpIHsKICAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0g
ImZ1bmN0aW9uIikKQEAgLTU5LDI1ICs1OSwyNSBAQCBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qIFsg
LCBtYXBmbiBbICwgdGhpc0FyZyBdIF0gKi8pCiAgICAgICAgIHRoaXNBcmcgPSBAYXJndW1lbnQo
Mik7CiAgICAgfQogCi0gICAgbGV0IGFycmF5TGlrZSA9IEB0b09iamVjdChpdGVtcywgIlR5cGVk
QXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVu
ZGVmaW5lZCIpOworICAgIHZhciBhcnJheUxpa2UgPSBAdG9PYmplY3QoaXRlbXMsICJUeXBlZEFy
cmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRl
ZmluZWQiKTsKIAotICAgIGxldCBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zLkBpdGVyYXRvclN5bWJv
bDsKKyAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtcy5AaXRlcmF0b3JTeW1ib2w7CiAgICAg
aWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHsKICAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRv
ck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlw
ZWRBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1
bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24i
KTsKIAotICAgICAgICBsZXQgYWNjdW11bGF0b3IgPSBbXTsKKyAgICAgICAgdmFyIGFjY3VtdWxh
dG9yID0gW107CiAKLSAgICAgICAgbGV0IGsgPSAwOwotICAgICAgICBsZXQgaXRlcmF0b3IgPSBp
dGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7CisgICAgICAgIHZhciBrID0gMDsKKyAgICAgICAg
dmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNhbGwoaXRlbXMpOwogCiAgICAgICAgIC8v
IFNpbmNlIGZvci1vZiBsb29wIG9uY2UgbW9yZSBsb29rcyB1cCB0aGUgQEBpdGVyYXRvciBwcm9w
ZXJ0eSBvZiBhIGdpdmVuIGl0ZXJhYmxlLAogICAgICAgICAvLyBpdCBjb3VsZCBiZSBvYnNlcnZh
YmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBnZXR0ZXIgZm9yIEBAaXRlcmF0b3IuCiAgICAgICAg
IC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBkZWZpbmUgYSB3cmFwcGVyIG9iamVjdCB0
aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5zIGEgZ2l2ZW4gaXRlcmF0b3IuCi0gICAgICAgIGxl
dCB3cmFwcGVyID0ge307CisgICAgICAgIHZhciB3cmFwcGVyID0ge307CiAgICAgICAgIHdyYXBw
ZXIuQGl0ZXJhdG9yU3ltYm9sID0gZnVuY3Rpb24oKSB7IHJldHVybiBpdGVyYXRvcjsgfQogCi0g
ICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHdyYXBwZXIpIHsKKyAgICAgICAgZm9yICh2YXIgdmFs
dWUgb2Ygd3JhcHBlcikgewogICAgICAgICAgICAgaWYgKG1hcEZuKQogICAgICAgICAgICAgICAg
IEBwdXRCeVZhbERpcmVjdChhY2N1bXVsYXRvciwgaywgdGhpc0FyZyA9PT0gQHVuZGVmaW5lZCA/
IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7CiAgICAg
ICAgICAgICBlbHNlCkBAIC04NSwzMCArODUsMzAgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBb
ICwgbWFwZm4gWyAsIHRoaXNBcmcgXSBdICovKQogICAgICAgICAgICAgaysrOwogICAgICAgICB9
CiAKLSAgICAgICAgbGV0IGNvbnN0cnVjdEZ1bmN0aW9uID0gQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJhbGxvY2F0ZVR5cGVkQXJyYXkiKTsKKyAgICAgICAgdmFyIGNvbnN0cnVjdEZ1bmN0
aW9uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhbGxvY2F0ZVR5cGVkQXJyYXkiKTsK
ICAgICAgICAgaWYgKGNvbnN0cnVjdEZ1bmN0aW9uID09PSBAdW5kZWZpbmVkKQogICAgICAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LmZyb20gcmVxdWlyZXMgaXRzIHRoaXMgYXJn
dW1lbnQgc3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIik7CiAKLSAgICAgICAgbGV0
IHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0aW9uKGspOworICAgICAgICB2YXIgcmVzdWx0ID0gY29u
c3RydWN0RnVuY3Rpb24oayk7CiAKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrOyBpKysp
IAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGs7IGkrKykgCiAgICAgICAgICAgICByZXN1
bHRbaV0gPSBhY2N1bXVsYXRvcltpXTsKIAogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgbGV0IGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2UubGVuZ3Ro
KTsKKyAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgp
OwogCi0gICAgbGV0IGNvbnN0cnVjdEZ1bmN0aW9uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRo
aXMsICJhbGxvY2F0ZVR5cGVkQXJyYXkiKTsKKyAgICB2YXIgY29uc3RydWN0RnVuY3Rpb24gPSBA
Z2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFsbG9jYXRlVHlwZWRBcnJheSIpOwogICAgIGlm
IChjb25zdHJ1Y3RGdW5jdGlvbiA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ0aGlzIGRvZXMgbm90IHN1YmNsYXNzIGEgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciIpOwog
Ci0gICAgbGV0IHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0aW9uKGFycmF5TGlrZUxlbmd0aCk7Cisg
ICAgdmFyIHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0aW9uKGFycmF5TGlrZUxlbmd0aCk7CiAKLSAg
ICBsZXQgayA9IDA7CisgICAgdmFyIGsgPSAwOwogICAgIHdoaWxlIChrIDwgYXJyYXlMaWtlTGVu
Z3RoKSB7Ci0gICAgICAgIGxldCB2YWx1ZSA9IGFycmF5TGlrZVtrXTsKKyAgICAgICAgdmFyIHZh
bHVlID0gYXJyYXlMaWtlW2tdOwogICAgICAgICBpZiAobWFwRm4pCiAgICAgICAgICAgICByZXN1
bHRba10gPSB0aGlzQXJnID09PSBAdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4u
QGNhbGwodGhpc0FyZywgdmFsdWUsIGspOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCmluZGV4IDgz
ZDc1MTE5MWJkOThkNjI2Y2VhYjYwNzIwMTc1NjEzNjQ1NmM1NjAuLjNiNzgxZGMwZTBkOWI1MmRi
NGVlYjBiZDFlMDRkZjk2ZDk5ZDU5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCkBAIC0zNSw3ICszNSw3IEBACiBm
dW5jdGlvbiB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKHZhbHVlKQogewogICAgICJ1c2Ug
c3RyaWN0IjsKLSAgICBsZXQgY29uc3RydWN0b3IgPSB2YWx1ZS5jb25zdHJ1Y3RvcjsKKyAgICB2
YXIgY29uc3RydWN0b3IgPSB2YWx1ZS5jb25zdHJ1Y3RvcjsKICAgICBpZiAoY29uc3RydWN0b3Ig
PT09IEB1bmRlZmluZWQpCiAgICAgICAgIHJldHVybiBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29u
c3RydWN0b3IodmFsdWUpOwogCkBAIC02MCw3ICs2MCw3IEBAIGZ1bmN0aW9uIHR5cGVkQXJyYXlD
bGFtcEFyZ3VtZW50VG9TdGFydE9yRW5kKHZhbHVlLCBsZW5ndGgsIHVuZGVmaW5lZFZhbHVlKQog
ICAgIGlmICh2YWx1ZSA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFZh
bHVlOwogCi0gICAgbGV0IGludCA9IEB0b0ludGVnZXIodmFsdWUpOworICAgIHZhciBpbnQgPSBA
dG9JbnRlZ2VyKHZhbHVlKTsKICAgICBpZiAoaW50IDwgMCkgewogICAgICAgICBpbnQgKz0gbGVu
Z3RoOwogICAgICAgICByZXR1cm4gaW50IDwgMCA/IDAgOiBpbnQ7CkBAIC04OSwxNSArODksMTUg
QEAgZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiBbLCBzdGFydCBbLCBlbmRdXSAqLykKIHsKICAgICAi
dXNlIHN0cmljdCI7CiAKLSAgICBsZXQgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7
CisgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwogCi0gICAgbGV0IHN0
YXJ0ID0gQGFyZ3VtZW50KDEpOwotICAgIGxldCBlbmQgPSBAYXJndW1lbnQoMik7CisgICAgdmFy
IHN0YXJ0ID0gQGFyZ3VtZW50KDEpOworICAgIHZhciBlbmQgPSBAYXJndW1lbnQoMik7CiAKICAg
ICBzdGFydCA9IEB0eXBlZEFycmF5Q2xhbXBBcmd1bWVudFRvU3RhcnRPckVuZChzdGFydCwgbGVu
Z3RoLCAwKTsKICAgICBlbmQgPSBAdHlwZWRBcnJheUNsYW1wQXJndW1lbnRUb1N0YXJ0T3JFbmQo
ZW5kLCBsZW5ndGgsIGxlbmd0aCk7CiAKLSAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7
IGkrKykKKyAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykKICAgICAgICAgdGhp
c1tpXSA9IHZhbHVlOwogICAgIHJldHVybiB0aGlzOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIGZ1
bmN0aW9uIGZpbmQoY2FsbGJhY2sgLyogWywgdGhpc0FyZ10gKi8pCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUuZmluZCBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgbGV0IGVsZW0gPSB0aGlzW2ldOworICAgICAgICB2YXIgZWxlbSA9IHRoaXNbaV07CiAgICAg
ICAgIGlmIChjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBlbGVtLCBpLCB0aGlzKSkKICAgICAgICAg
ICAgIHJldHVybiBlbGVtOwogICAgIH0KQEAgLTIzOCwxMiArMjM4LDEyIEBAIGZ1bmN0aW9uIHN1
YmFycmF5KGJlZ2luLCBlbmQpCiAgICAgaWYgKCFAaXNUeXBlZEFycmF5Vmlldyh0aGlzKSkKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyIpOwogCi0gICAgbGV0IHN0YXJ0ID0gQHRvSW50ZWdlcihiZWdpbik7Ci0gICAgbGV0IGZpbmlz
aDsKKyAgICB2YXIgc3RhcnQgPSBAdG9JbnRlZ2VyKGJlZ2luKTsKKyAgICB2YXIgZmluaXNoOwog
ICAgIGlmIChlbmQgIT09IEB1bmRlZmluZWQpCiAgICAgICAgIGZpbmlzaCA9IEB0b0ludGVnZXIo
ZW5kKTsKIAotICAgIGxldCBjb25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVj
dG9yKHRoaXMpOworICAgIHZhciBjb25zdHJ1Y3RvciA9IEB0eXBlZEFycmF5U3BlY2llc0NvbnN0
cnVjdG9yKHRoaXMpOwogCiAgICAgcmV0dXJuIEB0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUuQGNh
bGwodGhpcywgc3RhcnQsIGZpbmlzaCwgY29uc3RydWN0b3IpOwogfQo=
</data>
<flag name="review"
          id="403282"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>