<?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>155177</bug_id>
          
          <creation_ts>2016-03-08 11:04:25 -0800</creation_ts>
          <short_desc>[ES6] Implement RegExp sticky flag and related functionality</short_desc>
          <delta_ts>2016-03-09 12:11:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172105</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-08 11:04:25 -0800</bug_when>
    <thetext>Implement the sticky flag, &apos;y&apos;, and the behavior described in the ES6 spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172106</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-08 11:04:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/25038274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172615</commentid>
    <comment_count>2</comment_count>
      <attachid>273443</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-09 10:41:27 -0800</bug_when>
    <thetext>Created attachment 273443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172616</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 10:42:37 -0800</bug_when>
    <thetext>Attachment 273443 did not pass style-queue:


ERROR: Source/JavaScriptCore/yarr/YarrPattern.h:305:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172619</commentid>
    <comment_count>4</comment_count>
      <attachid>273443</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-09 10:48:38 -0800</bug_when>
    <thetext>Comment on attachment 273443
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        Changed both the Yarr interpreter and jit to no loop to the next character for sticky RegExp&apos;s.

typo: &quot;to no loop&quot; ==&gt; &quot;to not loop&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172622</commentid>
    <comment_count>5</comment_count>
      <attachid>273443</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-09 10:59:05 -0800</bug_when>
    <thetext>Comment on attachment 273443
Patch

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

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:179
&gt; +    if (exec-&gt;hadException())
&gt; +        return string;
&gt; +    JSValue stickyValue = regexp-&gt;get(exec, exec-&gt;propertyNames().sticky);
&gt; +    if (exec-&gt;hadException())
&gt; +        return string;

Perhaps take this opportunity to cache &quot;VM&amp; vm = exec-&gt;vm();&quot; up top and use &quot;vm.exception()&quot; in all these tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172632</commentid>
    <comment_count>6</comment_count>
      <attachid>273443</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-09 11:23:57 -0800</bug_when>
    <thetext>Comment on attachment 273443
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:179
&gt; +    if (exec-&gt;hadException())
&gt; +        return string;

All the exception checks in this function would be better off if they cached the VM at the top and checked vm.exception()

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:1848
&gt; +                            // If the pattern size is not fixed, then store the start index, for use if we match.

second comma not needed.

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:1898
&gt; +                    removeCallFrame();
&gt; +                    move(TrustedImmPtr((void*)WTF::notFound), returnRegister);
&gt; +                    move(TrustedImm32(0), returnRegister2);
&gt; +                    generateReturn();

This code is repeated in a couple other places. Might be worth a helper.

&gt; LayoutTests/js/script-tests/regexp-sticky.js:56
&gt; +    for (var iter = 0; iter &lt; expected.length; iter++) {
&gt; +        let lastIndexStart = re.lastIndex;
&gt; +
&gt; +        let result = str.match(re);
&gt; +        let correctResult = false;
&gt; +	if (expected[iter] === null || result === null)
&gt; +	    correctResult = (expected[iter] === result);
&gt; +	else if (result.length == expected[iter].length) {
&gt; +	    correctResult = true;
&gt; +            for (let i = 0; i &lt; result.length; i++) {
&gt; +                if (result[i] != expected[iter][i])
&gt; +                    correctResult = false;
&gt; +            }
&gt; +        }

Style: Indentation is off here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172664</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-09 12:11:33 -0800</bug_when>
    <thetext>Committed r197869: &lt;http://trac.webkit.org/changeset/197869&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273443</attachid>
            <date>2016-03-09 10:41:27 -0800</date>
            <delta_ts>2016-03-09 11:23:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>155177.patch</filename>
            <type>text/plain</type>
            <size>58146</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3ODYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDE2LTAzLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBSZWdFeHAgc3RpY2t5IGZsYWcgYW5kIHJlbGF0ZWQgZnVuY3Rp
b25hbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50ZWQgdGhlIEVTNiBSZWdFeHAgc3RpY2t5IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAg
ICAgVGhlcmUgYXJlIHR3byBtYWluIGJlaGF2aW9yIGNoYW5nZXMgd2hlbiB0aGUgc3RpY2t5IGZs
YWcgaXMgc3BlY2lmaWVkLgorICAgICAgICAxKSBNYXRjaGluZyBzdGFydHMgYXQgbGFzdEluZGV4
IGFuZCBsYXN0SW5kZXggaXMgdXBkYXRlZCBhZnRlciB0aGUgbWF0Y2guCisgICAgICAgIDIpIFRo
ZSByZWd1bGFyIGV4cHJlc3Npb24gaXMgb25seSBtYXRjaGVkIGZyb20gdGhlIHN0YXJ0IHBvc2l0
aW9uIGluIHRoZSBzdHJpbmcuCisgICAgICAgIFNlZSBFUzYgc2VjdGlvbiAyMS4yLjUuMi4yIGZv
ciBkZXRhaWxzLgorCisgICAgICAgIENoYW5nZWQgYm90aCB0aGUgWWFyciBpbnRlcnByZXRlciBh
bmQgaml0IHRvIG5vIGxvb3AgdG8gdGhlIG5leHQgY2hhcmFjdGVyIGZvciBzdGlja3kgUmVnRXhw
J3MuCisgICAgICAgIFVwZGF0ZWQgUmVnRXhwIGV4ZWMgYW5kIG1hdGNoLCBhbmQgc3RyaW5nUHJv
dG9GdW5jTWF0Y2ggdG8gaGFuZGxlIGxhc3RJbmRleCBjaGFuZ2VzLgorCisgICAgICAgIFJlc3Ry
dWN0dXJlZCB0aGUgd2F5IGZsYWdzIGFyZSBwYXNzZWQgdG8gYW5kIHRocm91Z2ggWWFyclBhdHRl
cm5zIHRvIHVzZSBSZWdFeHBGbGFncyBpbnN0ZWFkIG9mCisgICAgICAgIGluZGl2aWR1YWwgYm9v
bHMuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cyBmb3IgJ3knIGZsYWcgYW5kIG5ldyBiZWhhdmlv
ci4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OnJl
Z2V4cFRvU291cmNlU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OmZpbmRNYWdpY0NvbW1lbnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cEZs
YWdzKToKKyAgICAgICAgKEpTQzo6UmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6Om91dHB1
dE9uZVRlc3QpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxl
TWF0Y2hPbmx5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwS2V5Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZXhlY0lubGluZSk6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAg
ICAgIChKU0M6OmZsYWdzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJN
dWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclN0aWNreSk6CisgICAg
ICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSk6CisgICAgICAgICogcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNNYXRjaCk6
CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3N0YXRp
Yy1nZXR0ZXItaW4tbmFtZXMuanM6CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogeWFy
ci9SZWd1bGFyRXhwcmVzc2lvbi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uOjpQcml2YXRlOjpjb21waWxlKToKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjp0cnlDb25zdW1lQmFja1Jl
ZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaEFzc2VydGlv
bkJPTCk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaEFzc2VydGlvbkVP
TCk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaEFzc2VydGlvbldvcmRC
b3VuZGFyeSk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaERvdFN0YXJF
bmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hEaXNqdW5j
dGlvbik6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjpJbnRlcnByZXRlcik6Cisg
ICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhdHRlcm5DaGFyYWN0ZXIpOgor
ICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OllhcnI6OkJ5
dGVjb2RlUGF0dGVybjo6Qnl0ZWNvZGVQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0
ZWNvZGVQYXR0ZXJuOjplc3RpbWF0ZWRTaXplSW5CeXRlcyk6CisgICAgICAgIChKU0M6OllhcnI6
OkJ5dGVjb2RlUGF0dGVybjo6aWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVj
b2RlUGF0dGVybjo6bXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0
ZXJuOjpzdGlja3kpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm46OnVuaWNv
ZGUpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6Ollh
cnJHZW5lcmF0b3I6Om1hdGNoQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyR2VuZXJhdG9yOjpqdW1wSWZDaGFyTm90RXF1YWxzKToKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVBc3NlcnRpb25CT0wpOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUFzc2VydGlvbkVPTCk6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRlUGF0dGVybkNoYXJhY3Rlck9uY2UpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJGaXhl
ZCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRlRG90U3RhckVu
Y2xvc3VyZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmJhY2t0cmFjayk6
CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6Ollh
cnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGF0dGVybkNoYXJhY3Rlcik6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNldHVwQWx0ZXJu
YXRpdmVPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rv
cjo6b3B0aW1pemVCT0wpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybik6CisgICAg
ICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bjo6cmVzZXQpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6bm9ud29yZGNoYXJD
aGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjppZ25vcmVD
YXNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46Om11bHRpbGluZSk6CisgICAg
ICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpzdGlja3kpOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyUGF0dGVybjo6dW5pY29kZSk6CisKIDIwMTYtMDMtMDkgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgSGFyZGVuIEpTQyBSb290IGVsZW1lbnQgZnVu
Y3Rpb25zIGZyb20gYmFkIHZhbHVlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiAr
Mjc0LDEwIEBAIHN0YXRpYyBDU3RyaW5nIHJlZ2V4cFRvU291cmNlU3RyaW5nKFJlZ0UKICAgICAg
ICAgcG9zdGZpeFtpbmRleCsrXSA9ICdpJzsKICAgICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkK
ICAgICAgICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7CisgICAgaWYgKHJlZ0V4cC0+c3RpY2t5KCkp
CisgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAneSc7CisgICAgaWYgKHJlZ0V4cC0+dW5pY29k
ZSgpKQorICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ3UnOwogCiAgICAgcmV0dXJuIHRvQ1N0
cmluZygiLyIsIHJlZ0V4cC0+cGF0dGVybigpLmltcGwoKSwgcG9zdGZpeCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3Qg
U3RyCiB7CiAgICAgQVNTRVJUKCFjb250ZW50LmlzTnVsbCgpKTsKICAgICBjb25zdCBjaGFyKiBl
cnJvciA9IG51bGxwdHI7Ci0gICAgSlNDOjpZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKHBhdHRl
cm5TdHJpbmcsIGZhbHNlLCB0cnVlLCBmYWxzZSwgJmVycm9yKTsKKyAgICBKU0M6OllhcnI6Ollh
cnJQYXR0ZXJuIHBhdHRlcm4ocGF0dGVyblN0cmluZywgSlNDOjpSZWdFeHBGbGFnczo6RmxhZ011
bHRpbGluZSwgJmVycm9yKTsKICAgICBBU1NFUlQoIWVycm9yKTsKICAgICBCdW1wUG9pbnRlckFs
bG9jYXRvciByZWdleEFsbG9jYXRvcjsKICAgICBhdXRvIGJ5dGVjb2RlUGF0dGVybiA9IEpTQzo6
WWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnJlZ2V4QWxsb2NhdG9yKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2
aXNpb24gMTk3ODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw3IEBACiAgICAgbWFjcm8o
c291cmNlQ29kZSkgXAogICAgIG1hY3JvKHNvdXJjZVVSTCkgXAogICAgIG1hY3JvKHN0YWNrKSBc
CisgICAgbWFjcm8oc3RpY2t5KSBcCiAgICAgbWFjcm8oc3ViYXJyYXkpIFwKICAgICBtYWNybyh0
YXJnZXQpIFwKICAgICBtYWNybyh0ZXN0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDEyIEBA
IFJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFN0cmluZyYgc3QKICAgICAgICAgICAgIGZs
YWdzID0gc3RhdGljX2Nhc3Q8UmVnRXhwRmxhZ3M+KGZsYWdzIHwgRmxhZ1VuaWNvZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgIGNhc2UgJ3knOgorICAg
ICAgICAgICAgaWYgKGZsYWdzICYgRmxhZ1N0aWNreSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
SW52YWxpZEZsYWdzOworICAgICAgICAgICAgZmxhZ3MgPSBzdGF0aWNfY2FzdDxSZWdFeHBGbGFn
cz4oZmxhZ3MgfCBGbGFnU3RpY2t5KTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gSW52YWxpZEZsYWdzOwogICAgICAgICB9CkBAIC05
OCw2ICsxMDQsOCBAQCB2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwCiAg
ICAgICAgICAgICBmcHV0YygnaScsIG1fZmlsZSk7CiAgICAgICAgIGlmIChyZWdFeHAtPm11bHRp
bGluZSgpKQogICAgICAgICAgICAgZnB1dGMoJ20nLCBtX2ZpbGUpOworICAgICAgICBpZiAocmVn
RXhwLT5zdGlja3koKSkKKyAgICAgICAgICAgIGZwdXRjKCd5JywgbV9maWxlKTsKICAgICAgICAg
aWYgKHJlZ0V4cC0+dW5pY29kZSgpKQogICAgICAgICAgICAgZnB1dGMoJ3UnLCBtX2ZpbGUpOwog
ICAgICAgICBmcHJpbnRmKG1fZmlsZSwgIlxuIik7CkBAIC0yMTQsNyArMjIyLDcgQEAgUmVnRXhw
OjpSZWdFeHAoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHBhdAogdm9pZCBSZWdFeHA6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgWWFy
cjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIGlnbm9yZUNhc2UoKSwgbXVs
dGlsaW5lKCksIHVuaWNvZGUoKSwgJm1fY29uc3RydWN0aW9uRXJyb3IpOworICAgIFlhcnI6Ollh
cnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rp
b25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3IpCiAgICAgICAgIG1fc3RhdGUg
PSBQYXJzZUVycm9yOwogICAgIGVsc2UKQEAgLTI1NCw3ICsyNjIsNyBAQCBSZWdFeHAqIFJlZ0V4
cDo6Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2
bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewotICAgIFlhcnI6OllhcnJQYXR0ZXJu
IHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpLCB1bmlj
b2RlKCksICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0
ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAg
IGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAjaWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUp
CkBAIC0yOTMsNyArMzAxLDcgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJp
bmcmIAogCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKIHsKLSAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0
dGVyblN0cmluZywgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSwgdW5pY29kZSgpLCAmbV9jb25z
dHJ1Y3Rpb25FcnJvcik7CisgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5T
dHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1
Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lm
IENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9DT0RFKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2
ICs1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBGbGFnR2xvYmFsOyB9CiAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzICYgRmxhZ011bHRpbGluZTsgfQorICAgIGJvb2wgc3RpY2t5KCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdTdGlja3k7IH0KICAgICBib29sIHVuaWNvZGUoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1VuaWNvZGU7IH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgJKHJldmlzaW9uIDE5Nzg2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw4ICszOCw5IEBAIGVudW0gUmVnRXhwRmxhZ3MgewogICAgIEZsYWdHbG9iYWwg
PSAxLAogICAgIEZsYWdJZ25vcmVDYXNlID0gMiwKICAgICBGbGFnTXVsdGlsaW5lID0gNCwKLSAg
ICBGbGFnVW5pY29kZSA9IDgsCi0gICAgSW52YWxpZEZsYWdzID0gMTYsCisgICAgRmxhZ1N0aWNr
eSA9IDgsCisgICAgRmxhZ1VuaWNvZGUgPSAxNiwKKyAgICBJbnZhbGlkRmxhZ3MgPSAzMiwKICAg
ICBEZWxldGVkVmFsdWVGbGFncyA9IC0xCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTc4
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2MywxMCBAQCBKU1ZhbHVlIFJlZ0V4cE9iamVj
dDo6ZXhlY0lubGluZShFeGVjU3RhCiAgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShl
eGVjKTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTUxNDUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAK
LSAgICBib29sIGdsb2JhbCA9IHJlZ0V4cC0+Z2xvYmFsKCk7CisgICAgYm9vbCBnbG9iYWxPclN0
aWNreSA9IHJlZ0V4cC0+Z2xvYmFsKCkgfHwgcmVnRXhwLT5zdGlja3koKTsKIAogICAgIHVuc2ln
bmVkIGxhc3RJbmRleDsKLSAgICBpZiAoZ2xvYmFsKSB7CisgICAgaWYgKGdsb2JhbE9yU3RpY2t5
KSB7CiAgICAgICAgIGxhc3RJbmRleCA9IGdldFJlZ0V4cE9iamVjdExhc3RJbmRleEFzVW5zaWdu
ZWQoZXhlYywgdGhpcywgaW5wdXQpOwogICAgICAgICBpZiAobGFzdEluZGV4ID09IFVJTlRfTUFY
KQogICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtNzcsMTEgKzc3LDEyIEBAIEpTVmFs
dWUgUmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKEV4ZWNTdGEKICAgICBKU0FycmF5KiBhcnJheSA9
CiAgICAgICAgIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJp
bmcsIGlucHV0LCByZWdFeHAsIGxhc3RJbmRleCwgcmVzdWx0KTsKICAgICBpZiAoIWFycmF5KSB7
Ci0gICAgICAgIGlmIChnbG9iYWwpCisgICAgICAgIGlmIChnbG9iYWxPclN0aWNreSkKICAgICAg
ICAgICAgIHNldExhc3RJbmRleChleGVjLCAwKTsKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
ICAgIH0KLSAgICBpZiAoZ2xvYmFsKQorCisgICAgaWYgKGdsb2JhbE9yU3RpY2t5KQogICAgICAg
ICBzZXRMYXN0SW5kZXgoZXhlYywgcmVzdWx0LmVuZCk7CiAgICAgcmVnRXhwQ29uc3RydWN0b3It
PnJlY29yZE1hdGNoKHZtLCByZWdFeHAsIHN0cmluZywgcmVzdWx0KTsKICAgICByZXR1cm4gYXJy
YXk7CkBAIC05NSw3ICs5Niw3IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2hJbmxp
bmUoCiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOwogICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFs
dWUoZXhlYyk7IC8vIEZJWE1FOiBIYW5kbGUgZXJyb3JzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ1CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGlmICghcmVnRXhwLT5nbG9iYWwoKSkKKyAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkg
JiYgIXJlZ0V4cC0+c3RpY2t5KCkpCiAgICAgICAgIHJldHVybiByZWdFeHBDb25zdHJ1Y3Rvci0+
cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0cmluZywgaW5wdXQsIDApOwogCiAgICAgdW5zaWdu
ZWQgbGFzdEluZGV4ID0gZ2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4QXNVbnNpZ25lZChleGVjLCB0
aGlzLCBpbnB1dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRQogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlcklnbm9yZUNhc2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJVbmljb2RlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNT
dGF0ZSopOwpAQCAtNjksNiArNzAsNyBAQCBjb25zdCBDbGFzc0luZm8gUmVnRXhwUHJvdG90eXBl
OjpzX2luZm8gCiAgIGdsb2JhbCAgICAgICAgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwgICAgIERv
bnRFbnVtfEFjY2Vzc29yCiAgIGlnbm9yZUNhc2UgICAgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVD
YXNlIERvbnRFbnVtfEFjY2Vzc29yCiAgIG11bHRpbGluZSAgICAgcmVnRXhwUHJvdG9HZXR0ZXJN
dWx0aWxpbmUgIERvbnRFbnVtfEFjY2Vzc29yCisgIHN0aWNreSAgICAgICAgcmVnRXhwUHJvdG9H
ZXR0ZXJTdGlja3kgICAgIERvbnRFbnVtfEFjY2Vzc29yCiAgIHVuaWNvZGUgICAgICAgcmVnRXhw
UHJvdG9HZXR0ZXJVbmljb2RlICAgIERvbnRFbnVtfEFjY2Vzc29yCiAgIHNvdXJjZSAgICAgICAg
cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UgICAgIERvbnRFbnVtfEFjY2Vzc29yCiAgIGZsYWdzICAg
ICAgICAgcmVnRXhwUHJvdG9HZXR0ZXJGbGFncyAgICAgIERvbnRFbnVtfEFjY2Vzc29yCkBAIC0x
NTQsNyArMTU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXR5cGVkZWYg
c3RkOjphcnJheTxjaGFyLCA0ICsgMT4gRmxhZ3NTdHJpbmc7IC8vIDQgZGlmZmVyZW50IGZsYWdz
IGFuZCBhIG51bGwgY2hhcmFjdGVyIHRlcm1pbmF0b3IuCit0eXBlZGVmIHN0ZDo6YXJyYXk8Y2hh
ciwgNSArIDE+IEZsYWdzU3RyaW5nOyAvLyA1IGRpZmZlcmVudCBmbGFncyBhbmQgYSBudWxsIGNo
YXJhY3RlciB0ZXJtaW5hdG9yLgogCiBzdGF0aWMgaW5saW5lIEZsYWdzU3RyaW5nIGZsYWdzU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHJlZ2V4cCkKIHsKQEAgLTE3MCw2ICsxNzIs
MTEgQEAgc3RhdGljIGlubGluZSBGbGFnc1N0cmluZyBmbGFnc1N0cmluZyhFeAogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHN0cmluZzsKICAgICBKU1ZhbHVl
IHVuaWNvZGVWYWx1ZSA9IHJlZ2V4cC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51
bmljb2RlKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBz
dHJpbmc7CisgICAgSlNWYWx1ZSBzdGlja3lWYWx1ZSA9IHJlZ2V4cC0+Z2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5zdGlja3kpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIHN0cmluZzsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBp
ZiAoZ2xvYmFsVmFsdWUudG9Cb29sZWFuKGV4ZWMpKQpAQCAtMTgwLDYgKzE4Nyw4IEBAIHN0YXRp
YyBpbmxpbmUgRmxhZ3NTdHJpbmcgZmxhZ3NTdHJpbmcoRXgKICAgICAgICAgc3RyaW5nW2luZGV4
KytdID0gJ20nOwogICAgIGlmICh1bmljb2RlVmFsdWUudG9Cb29sZWFuKGV4ZWMpKQogICAgICAg
ICBzdHJpbmdbaW5kZXgrK10gPSAndSc7CisgICAgaWYgKHN0aWNreVZhbHVlLnRvQm9vbGVhbihl
eGVjKSkKKyAgICAgICAgc3RyaW5nW2luZGV4KytdID0gJ3knOwogICAgIEFTU0VSVChpbmRleCA8
IHN0cmluZy5zaXplKCkpOwogICAgIHN0cmluZ1tpbmRleF0gPSAwOwogICAgIHJldHVybiBzdHJp
bmc7CkBAIC0yMzgsNiArMjQ3LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9i
amVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpKTsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5zdGlj
a3koKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0
dGVyVW5pY29kZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3ODYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA0MSwxNiArMTA0MSwzOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogCiAgICAgUmVnRXhw
KiByZWdFeHA7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwOwogICAgIGJvb2wgZ2xvYmFs
ID0gZmFsc2U7CisgICAgYm9vbCBzdGlja3kgPSBmYWxzZTsKKyAgICBSZWdFeHBPYmplY3QqIHJl
Z0V4cE9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKGEwLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6
aW5mbygpKSkgewotICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IGFzUmVnRXhw
T2JqZWN0KGEwKTsKKyAgICAgICAgcmVnRXhwT2JqZWN0ID0gYXNSZWdFeHBPYmplY3QoYTApOwog
ICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOwogICAgICAgICBpZiAoKGds
b2JhbCA9IHJlZ0V4cC0+Z2xvYmFsKCkpKSB7Ci0gICAgICAgICAgICAvLyBFUzUuMSAxNS41LjQu
MTAgc3RlcCA4LmEuCisgICAgICAgICAgICAvLyBFUzYgMjEuMi41LjYgc3RlcCA2LmIuCiAgICAg
ICAgICAgICByZWdFeHBPYmplY3QtPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CisgICAgICAgIGlmICgoc3RpY2t5
ID0gcmVnRXhwLT5zdGlja3koKSkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNMYXN0SW5kZXgg
PSByZWdFeHBPYmplY3QtPmdldExhc3RJbmRleCgpOworICAgICAgICAgICAgdW5zaWduZWQgbGFz
dEluZGV4OworICAgICAgICAgICAgaWYgKExJS0VMWShqc0xhc3RJbmRleC5pc1VJbnQzMigpKSkg
eworICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IGpzTGFzdEluZGV4LmFzVUludDMyKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA+IHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkb3VibGUg
ZG91YmxlTGFzdEluZGV4ID0ganNMYXN0SW5kZXgudG9JbnRlZ2VyKGV4ZWMpOworICAgICAgICAg
ICAgICAgIGlmIChkb3VibGVMYXN0SW5kZXggPCAwIHx8IGRvdWJsZUxhc3RJbmRleCA+IHMubGVu
Z3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgo
ZXhlYywgMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxhc3RJbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVMYXN0SW5kZXgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBzdGFydE9mZnNldCA9IGxhc3RJbmRleDsKKyAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqICBFQ01BIDE1LjUuNC4xMiBTdHJpbmcu
cHJvdG90eXBlLnNlYXJjaCAocmVnZXhwKQpAQCAtMTA2OSwxMyArMTA5MiwxOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNz
YWdlKCkpKTsKICAgICB9CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9y
ID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOwotICAgIE1hdGNoUmVzdWx0IHJl
c3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmlu
ZywgcywgMCk7CisgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBl
cmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCBzdGFydE9mZnNldCk7CiAgICAgLy8g
Y2FzZSB3aXRob3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlrZSBSZWdFeHAucHJvdG90eXBlLmV4
ZWMKLSAgICBpZiAoIWdsb2JhbCkKKyAgICBpZiAoIWdsb2JhbCkgeworICAgICAgICBpZiAoc3Rp
Y2t5KQorICAgICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgoZXhlYywgcmVzdWx0
ID8gcmVzdWx0LmVuZCA6IDApOworCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5n
LCByZWdFeHAsIHJlc3VsdC5zdGFydCkgOiBqc051bGwoKSk7CisgICAgfQogCiAgICAgLy8gcmV0
dXJuIGFycmF5IG9mIG1hdGNoZXMKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OworICAg
IHNpemVfdCBlbmQgPSAwOwogICAgIHdoaWxlIChyZXN1bHQpIHsKICAgICAgICAgLy8gV2UgZGVm
ZW5kIG91cnNlbHZlcyBmcm9tIGNyYXp5LgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bVJl
YXNvbmFibGVNYXRjaFNpemUgPSAxMDAwMDAwMDAwOwpAQCAtMTA4NCwyMCArMTExMiwzMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBzaXplX3QgZW5kID0gcmVzdWx0LmVuZDsKKyAgICAgICAgZW5kID0gcmVzdWx0LmVu
ZDsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGVuZCAtIHJlc3VsdC5zdGFydDsKICAgICAgICAg
bGlzdC5hcHBlbmQoanNTdWJzdHJpbmcoZXhlYywgcywgcmVzdWx0LnN0YXJ0LCBsZW5ndGgpKTsK
ICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICArK2VuZDsKLSAgICAgICAgcmVzdWx0
ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5nLCBz
LCBlbmQpOworICAgICAgICAKKyAgICAgICAgaWYgKGdsb2JhbCkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywg
cywgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQo
KTsKICAgICB9CiAgICAgaWYgKGxpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGlmIHRoZXJl
IGFyZSBubyBtYXRjaGVzIGF0IGFsbCwgaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuCiAgICAgICAg
IC8vIE51bGwgaW5zdGVhZCBvZiBhbiBlbXB0eSBhcnJheSwgYmVjYXVzZSB0aGlzIG1hdGNoZXMK
ICAgICAgICAgLy8gb3RoZXIgYnJvd3NlcnMgYW5kIGJlY2F1c2UgTnVsbCBpcyBhIGZhbHNlIHZh
bHVlLgorICAgICAgICBpZiAoc3RpY2t5KQorICAgICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRM
YXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKICAgICB9Ci0KKyAgICAKKyAgICBpZiAoc3RpY2t5KQorICAgICAgICBy
ZWdFeHBPYmplY3QtPnNldExhc3RJbmRleChleGVjLCBlbmQpOworICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXkoZXhlYywgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KDApLCBsaXN0KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYueWFtbAkod29ya2luZyBjb3B5KQpAQCAtOTkxLDcgKzk5MSw3IEBACiAtIHBh
dGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfUHJvbWlzZV9yZXNvbHZlX2Z1bmN0aW9u
cy5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9n
ZXRfY2FsbHNfUmVnRXhwLnByb3RvdHlwZS5mbGFncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2Fs
bHNfUmVnRXhwLnByb3RvdHlwZS50ZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wubWF0
Y2hdLmpzCkBAIC0xMDk1LDkgKzEwOTUsOSBAQAogLSBwYXRoOiBlczYvUmVnRXhwX3lfYW5kX3Vf
ZmxhZ3NfdV9mbGFnX1VuaWNvZGVfY29kZV9wb2ludF9lc2NhcGVzLmpzCiAgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L1JlZ0V4cF95X2FuZF91X2ZsYWdzX3lfZmxhZy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdF
eHBfeV9hbmRfdV9mbGFnc195X2ZsYWdfbGFzdEluZGV4LmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3Jlc3RfcGFyYW1ldGVyc19hcmd1
bWVudHNfb2JqZWN0X2ludGVyYWN0aW9uLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L3Jlc3RfcGFyYW1ldGVyc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdGF0aWMt
Z2V0dGVyLWluLW5hbWVzLmpzCShyZXZpc2lvbiAxOTc4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3N0YXRpYy1nZXR0ZXItaW4tbmFtZXMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTMsNSArMyw1IEBAIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwogfQogCi1z
aG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhSZWdFeHAu
cHJvdG90eXBlKS5zb3J0KCkpLCAnWyJjb21waWxlIiwiY29uc3RydWN0b3IiLCJleGVjIiwiZmxh
Z3MiLCJnbG9iYWwiLCJpZ25vcmVDYXNlIiwibGFzdEluZGV4IiwibXVsdGlsaW5lIiwic291cmNl
IiwidGVzdCIsInRvU3RyaW5nIiwidW5pY29kZSJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lm
eShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhSZWdFeHAucHJvdG90eXBlKS5zb3J0KCkpLCAn
WyJjb21waWxlIiwiY29uc3RydWN0b3IiLCJleGVjIiwiZmxhZ3MiLCJnbG9iYWwiLCJpZ25vcmVD
YXNlIiwibGFzdEluZGV4IiwibXVsdGlsaW5lIiwic291cmNlIiwic3RpY2t5IiwidGVzdCIsInRv
U3RyaW5nIiwidW5pY29kZSJdJyk7CiBzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcygvQ29jb2EvKS5zb3J0KCkpLCAnWyJsYXN0SW5kZXgiXScpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNw
cAkocmV2aXNpb24gMTk3ODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxh
ckV4cHJlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1NywxNSBAQCBwcml2YXRl
OgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBjb21w
aWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgVGV4dENhc2VTZW5zaXRpdml0eSBjYXNl
U2Vuc2l0aXZpdHksIE11bHRpbGluZU1vZGUgbXVsdGlsaW5lTW9kZSkKICAgICB7Ci0gICAgICAg
IEpTQzo6WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCAoY2FzZVNlbnNp
dGl2aXR5ID09IFRleHRDYXNlSW5zZW5zaXRpdmUpLCAobXVsdGlsaW5lTW9kZSA9PSBNdWx0aWxp
bmVFbmFibGVkKSwgZmFsc2UsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICAgICAgUmVnRXhw
RmxhZ3MgZmxhZ3MgPSBOb0ZsYWdzOworCisgICAgICAgIGlmIChjYXNlU2Vuc2l0aXZpdHkgPT0g
VGV4dENhc2VJbnNlbnNpdGl2ZSkKKyAgICAgICAgICAgIGZsYWdzID0gc3RhdGljX2Nhc3Q8UmVn
RXhwRmxhZ3M+KGZsYWdzIHwgRmxhZ0lnbm9yZUNhc2UpOworCisgICAgICAgIGlmIChtdWx0aWxp
bmVNb2RlID09IE11bHRpbGluZUVuYWJsZWQpCisgICAgICAgICAgICBmbGFncyA9IHN0YXRpY19j
YXN0PFJlZ0V4cEZsYWdzPihmbGFncyB8IEZsYWdNdWx0aWxpbmUpOworCisgICAgICAgIEpTQzo6
WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBmbGFncywgJm1fY29uc3Ry
dWN0aW9uRXJyb3IpOwogICAgICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJSZWd1bGFyRXhwcmVzc2lvbjogWUFSUiBjb21waWxlIGZhaWxlZCB3
aXRoICclcyciLCBtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAxOTc4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNyArMzc2LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgaWYgKG9sZENoID09IGNoKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICBpZiAocGF0dGVybi0+bV9pZ25vcmVDYXNlKSB7CisgICAgICAg
ICAgICBpZiAocGF0dGVybi0+aWdub3JlQ2FzZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2Vl
IEVTIDYuMCwgMjEuMi4yLjguMiBmb3IgdGhlIGRlZmluaXRpb24gb2YgQ2Fub25pY2FsaXplKCku
IEZvciBub24tVW5pY29kZQogICAgICAgICAgICAgICAgIC8vIHBhdHRlcm5zLCBVbmljb2RlIHZh
bHVlcyBhcmUgbmV2ZXIgYWxsb3dlZCB0byBtYXRjaCBhZ2FpbnN0IEFTQ0lJIG9uZXMuCiAgICAg
ICAgICAgICAgICAgLy8gRm9yIFVuaWNvZGUsIHdlIG5lZWQgdG8gY2hlY2sgYWxsIGNhbm9uaWNh
bCBlcXVpdmFsZW50cyBvZiBhIGNoYXJhY3Rlci4KQEAgLTM5NiwxNSArMzk2LDE1IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgbWF0Y2hBc3NlcnRpb25CT0woQnl0ZVRlcm0mIHRlcm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gKGlucHV0LmF0U3RhcnQodGVybS5pbnB1dFBvc2l0aW9uKSkgfHwgKHBh
dHRlcm4tPm1fbXVsdGlsaW5lICYmIHRlc3RDaGFyYWN0ZXJDbGFzcyhwYXR0ZXJuLT5uZXdsaW5l
Q2hhcmFjdGVyQ2xhc3MsIGlucHV0LnJlYWRDaGVja2VkKHRlcm0uaW5wdXRQb3NpdGlvbiArIDEp
KSk7CisgICAgICAgIHJldHVybiAoaW5wdXQuYXRTdGFydCh0ZXJtLmlucHV0UG9zaXRpb24pKSB8
fCAocGF0dGVybi0+bXVsdGlsaW5lKCkgJiYgdGVzdENoYXJhY3RlckNsYXNzKHBhdHRlcm4tPm5l
d2xpbmVDaGFyYWN0ZXJDbGFzcywgaW5wdXQucmVhZENoZWNrZWQodGVybS5pbnB1dFBvc2l0aW9u
ICsgMSkpKTsKICAgICB9CiAKICAgICBib29sIG1hdGNoQXNzZXJ0aW9uRU9MKEJ5dGVUZXJtJiB0
ZXJtKQogICAgIHsKICAgICAgICAgaWYgKHRlcm0uaW5wdXRQb3NpdGlvbikKLSAgICAgICAgICAg
IHJldHVybiAoaW5wdXQuYXRFbmQodGVybS5pbnB1dFBvc2l0aW9uKSkgfHwgKHBhdHRlcm4tPm1f
bXVsdGlsaW5lICYmIHRlc3RDaGFyYWN0ZXJDbGFzcyhwYXR0ZXJuLT5uZXdsaW5lQ2hhcmFjdGVy
Q2xhc3MsIGlucHV0LnJlYWRDaGVja2VkKHRlcm0uaW5wdXRQb3NpdGlvbikpKTsKKyAgICAgICAg
ICAgIHJldHVybiAoaW5wdXQuYXRFbmQodGVybS5pbnB1dFBvc2l0aW9uKSkgfHwgKHBhdHRlcm4t
Pm11bHRpbGluZSgpICYmIHRlc3RDaGFyYWN0ZXJDbGFzcyhwYXR0ZXJuLT5uZXdsaW5lQ2hhcmFj
dGVyQ2xhc3MsIGlucHV0LnJlYWRDaGVja2VkKHRlcm0uaW5wdXRQb3NpdGlvbikpKTsKIAotICAg
ICAgICByZXR1cm4gKGlucHV0LmF0RW5kKCkpIHx8IChwYXR0ZXJuLT5tX211bHRpbGluZSAmJiB0
ZXN0Q2hhcmFjdGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3RlckNsYXNzLCBpbnB1dC5y
ZWFkKCkpKTsKKyAgICAgICAgcmV0dXJuIChpbnB1dC5hdEVuZCgpKSB8fCAocGF0dGVybi0+bXVs
dGlsaW5lKCkgJiYgdGVzdENoYXJhY3RlckNsYXNzKHBhdHRlcm4tPm5ld2xpbmVDaGFyYWN0ZXJD
bGFzcywgaW5wdXQucmVhZCgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBtYXRjaEFzc2VydGlvbldv
cmRCb3VuZGFyeShCeXRlVGVybSYgdGVybSkKQEAgLTExNTMsNyArMTE1Myw3IEBAIHB1YmxpYzoK
IAogICAgICAgICBpZiAoKChtYXRjaEJlZ2luICYmIHRlcm0uYW5jaG9ycy5tX2JvbCkKICAgICAg
ICAgICAgICB8fCAoKG1hdGNoRW5kICE9IGlucHV0LmVuZCgpKSAmJiB0ZXJtLmFuY2hvcnMubV9l
b2wpKQotICAgICAgICAgICAgJiYgIXBhdHRlcm4tPm1fbXVsdGlsaW5lKQorICAgICAgICAgICAg
JiYgIXBhdHRlcm4tPm11bHRpbGluZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIGNvbnRleHQtPm1hdGNoQmVnaW4gPSBtYXRjaEJlZ2luOwpAQCAtMTM4Nyw3ICsxMzg3
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKG9mZnNldCA+IDApCiAgICAgICAgICAgICAg
ICAgTUFUQ0hfTkVYVCgpOwogCi0gICAgICAgICAgICBpZiAoaW5wdXQuYXRFbmQoKSkKKyAgICAg
ICAgICAgIGlmIChpbnB1dC5hdEVuZCgpIHx8IHBhdHRlcm4tPnN0aWNreSgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7CiAKICAgICAgICAgICAgIGlucHV0Lm5leHQo
KTsKQEAgLTE1NDEsOSArMTU0MSw5IEBAIHB1YmxpYzoKIAogICAgIEludGVycHJldGVyKEJ5dGVj
b2RlUGF0dGVybiogcGF0dGVybiwgdW5zaWduZWQqIG91dHB1dCwgY29uc3QgQ2hhclR5cGUqIGlu
cHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0KQogICAgICAgICA6IHBhdHRlcm4o
cGF0dGVybikKLSAgICAgICAgLCB1bmljb2RlKHBhdHRlcm4tPm1fdW5pY29kZSkKKyAgICAgICAg
LCB1bmljb2RlKHBhdHRlcm4tPnVuaWNvZGUoKSkKICAgICAgICAgLCBvdXRwdXQob3V0cHV0KQot
ICAgICAgICAsIGlucHV0KGlucHV0LCBzdGFydCwgbGVuZ3RoLCBwYXR0ZXJuLT5tX3VuaWNvZGUp
CisgICAgICAgICwgaW5wdXQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIHBhdHRlcm4tPnVuaWNvZGUo
KSkKICAgICAgICAgLCBhbGxvY2F0b3JQb29sKDApCiAgICAgICAgICwgcmVtYWluaW5nTWF0Y2hD
b3VudChtYXRjaExpbWl0KQogICAgIHsKQEAgLTE2MTIsNyArMTYxMiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYXRvbVBhdHRlcm5DaGFyYWN0ZXIoVUNoYXIzMiBjaCwgdW5zaWduZWQgaW5wdXRQ
b3NpdGlvbiwgdW5zaWduZWQgZnJhbWVMb2NhdGlvbiwgQ2hlY2tlZDx1bnNpZ25lZD4gcXVhbnRp
dHlDb3VudCwgUXVhbnRpZmllclR5cGUgcXVhbnRpdHlUeXBlKQogICAgIHsKLSAgICAgICAgaWYg
KG1fcGF0dGVybi5tX2lnbm9yZUNhc2UpIHsKKyAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVD
YXNlKCkpIHsKICAgICAgICAgICAgIFVDaGFyMzIgbG8gPSB1X3RvbG93ZXIoY2gpOwogICAgICAg
ICAgICAgVUNoYXIzMiBoaSA9IHVfdG91cHBlcihjaCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCShyZXZpc2lvbiAxOTc4NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzM5LDkgKzMzOSw3IEBAIHN0cnVjdCBCeXRlY29kZVBhdHRlcm4gewogcHVibGljOgog
ICAgIEJ5dGVjb2RlUGF0dGVybihzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPiBib2R5
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4+JiBwYXJlbnRoZXNlc0lu
Zm9Ub0Fkb3B0LCBZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFs
bG9jYXRvcikKICAgICAgICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKLSAgICAgICAgLCBtX2ln
bm9yZUNhc2UocGF0dGVybi5tX2lnbm9yZUNhc2UpCi0gICAgICAgICwgbV9tdWx0aWxpbmUocGF0
dGVybi5tX211bHRpbGluZSkKLSAgICAgICAgLCBtX3VuaWNvZGUocGF0dGVybi5tX3VuaWNvZGUp
CisgICAgICAgICwgbV9mbGFncyhwYXR0ZXJuLm1fZmxhZ3MpCiAgICAgICAgICwgbV9hbGxvY2F0
b3IoYWxsb2NhdG9yKQogICAgIHsKICAgICAgICAgbV9ib2R5LT50ZXJtcy5zaHJpbmtUb0ZpdCgp
OwpAQCAtMzU3LDExICszNTUsMTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIHNpemVfdCBlc3Rp
bWF0ZWRTaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYm9keS0+ZXN0aW1hdGVkU2l6ZUlu
Qnl0ZXMoKTsgfQorICAgIAorICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3MgJiBGbGFnSWdub3JlQ2FzZTsgfQorICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0aWxpbmU7IH0KKyAgICBib29sIHN0aWNreSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnU3RpY2t5OyB9CisgICAgYm9vbCB1bmljb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdVbmljb2RlOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZURpc2p1bmN0aW9uPiBtX2JvZHk7Ci0gICAgYm9vbCBtX2lnbm9yZUNhc2U7Ci0gICAg
Ym9vbCBtX211bHRpbGluZTsKLSAgICBib29sIG1fdW5pY29kZTsKKyAgICBSZWdFeHBGbGFncyBt
X2ZsYWdzOwogICAgIC8vIEVhY2ggQnl0ZWNvZGVQYXR0ZXJuIGlzIGFzc29jaWF0ZWQgd2l0aCBh
IFJlZ0V4cCwgZWFjaCBSZWdFeHAgaXMgYXNzb2NpYXRlZAogICAgIC8vIHdpdGggYSBWTS4gIENh
Y2hlIGEgcG9pbnRlciB0byBvdXQgVk0ncyBtX3JlZ0V4cEFsbG9jYXRvci4KICAgICBCdW1wUG9p
bnRlckFsbG9jYXRvciogbV9hbGxvY2F0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAkocmV2aXNpb24gMTk3ODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjaGFyQ2xhc3MtPm1fbWF0Y2hlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgICAgIGNoYXIgY2ggPSBjaGFyQ2xhc3MtPm1fbWF0Y2hlc1tpXTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9wYXR0ZXJuLm1faWdub3JlQ2FzZSkgeworICAgICAgICAgICAgICAg
IGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0FTQ0lJTG93ZXIoY2gpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzQVphei5h
cHBlbmQoY2gpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTEsOCAr
MjkxLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogCiAgICAg
ICAgIC8vIEZvciBjYXNlLWluc2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJz
IHRoYXQgaGF2ZSBkaWZmZXJlbnQKICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJl
c2VudGF0aW9ucyBhcmUgY29udmVydGVkIHRvIGEgY2hhcmFjdGVyIGNsYXNzLgotICAgICAgICBB
U1NFUlQoIW1fcGF0dGVybi5tX2lnbm9yZUNhc2UgfHwgaXNBU0NJSUFscGhhKGNoKSB8fCBpc0Nh
bm9uaWNhbGx5VW5pcXVlKGNoKSk7Ci0gICAgICAgIGlmIChtX3BhdHRlcm4ubV9pZ25vcmVDYXNl
ICYmIGlzQVNDSUlBbHBoYShjaCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3Jl
Q2FzZSgpIHx8IGlzQVNDSUlBbHBoYShjaCkgfHwgaXNDYW5vbmljYWxseVVuaXF1ZShjaCkpOwor
ICAgICAgICBpZiAobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY2gpKSB7
CiAgICAgICAgICAgICBvcjMyKFRydXN0ZWRJbW0zMigweDIwKSwgY2hhcmFjdGVyKTsKICAgICAg
ICAgICAgIGNoIHw9IDB4MjA7CiAgICAgICAgIH0KQEAgLTYzMyw3ICs2MzMsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIFlhcnJPcCYgb3AgPSBt
X29wc1tvcEluZGV4XTsKICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAK
LSAgICAgICAgaWYgKG1fcGF0dGVybi5tX211bHRpbGluZSkgeworICAgICAgICBpZiAobV9wYXR0
ZXJuLm11bHRpbGluZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3Rl
ciA9IHJlZ1QwOwogCiAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaERlc3Q7CkBAIC02NjMsNyAr
NjYzLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAg
ICBZYXJyT3AmIG9wID0gbV9vcHNbb3BJbmRleF07CiAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJt
ID0gb3AubV90ZXJtOwogCi0gICAgICAgIGlmIChtX3BhdHRlcm4ubV9tdWx0aWxpbmUpIHsKKyAg
ICAgICAgaWYgKG1fcGF0dGVybi5tdWx0aWxpbmUoKSkgewogICAgICAgICAgICAgY29uc3QgUmVn
aXN0ZXJJRCBjaGFyYWN0ZXIgPSByZWdUMDsKIAogICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hE
ZXN0OwpAQCAtNzg3LDkgKzc4Nyw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1h
Y3JvQXNzZW0KIAogICAgICAgICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24t
YXNjaWkgY2hhcmFjdGVycyB0aGF0IGhhdmUgZGlmZmVyZW50CiAgICAgICAgIC8vIHVwcGVyICYg
bG93ZXIgY2FzZSByZXByZXNlbnRhdGlvbnMgYXJlIGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBj
bGFzcy4KLSAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4ubV9pZ25vcmVDYXNlIHx8IGlzQVNDSUlB
bHBoYShjaCkgfHwgaXNDYW5vbmljYWxseVVuaXF1ZShjaCkpOworICAgICAgICBBU1NFUlQoIW1f
cGF0dGVybi5pZ25vcmVDYXNlKCkgfHwgaXNBU0NJSUFscGhhKGNoKSB8fCBpc0Nhbm9uaWNhbGx5
VW5pcXVlKGNoKSk7CiAKLSAgICAgICAgaWYgKG1fcGF0dGVybi5tX2lnbm9yZUNhc2UgJiYgaXNB
U0NJSUFscGhhKGNoKSkKKyAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNB
U0NJSUFscGhhKGNoKSkKICNpZiBDUFUoQklHX0VORElBTikKICAgICAgICAgICAgIGlnbm9yZUNh
c2VNYXNrIHw9IDMyIDw8IChtX2NoYXJTaXplID09IENoYXI4ID8gMjQgOiAxNik7CiAjZWxzZQpA
QCAtODIzLDExICs4MjMsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9B
c3NlbQogCiAgICAgICAgICAgICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24t
YXNjaWkgY2hhcmFjdGVycyB0aGF0IGhhdmUgZGlmZmVyZW50CiAgICAgICAgICAgICAvLyB1cHBl
ciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFyZSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0
ZXIgY2xhc3MuCi0gICAgICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5tX2lnbm9yZUNhc2UgfHwg
aXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlVbmlxdWUoY3Vy
cmVudENoYXJhY3RlcikpOworICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3JlQ2Fz
ZSgpIHx8IGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5p
cXVlKGN1cnJlbnRDaGFyYWN0ZXIpKTsKIAogICAgICAgICAgICAgYWxsQ2hhcmFjdGVycyB8PSAo
Y3VycmVudENoYXJhY3RlciA8PCBzaGlmdEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9w
YXR0ZXJuLm1faWdub3JlQ2FzZSkgJiYgKGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkp
CisgICAgICAgICAgICBpZiAoKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkpICYmIChpc0FTQ0lJQWxw
aGEoY3VycmVudENoYXJhY3RlcikpKQogICAgICAgICAgICAgICAgIGlnbm9yZUNhc2VNYXNrIHw9
IDMyIDw8IHNoaWZ0QW1vdW50OyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgIH0KIApAQCAt
OTAwLDggKzkwMCw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0K
IAogICAgICAgICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24tYXNjaWkgY2hh
cmFjdGVycyB0aGF0IGhhdmUgZGlmZmVyZW50CiAgICAgICAgIC8vIHVwcGVyICYgbG93ZXIgY2Fz
ZSByZXByZXNlbnRhdGlvbnMgYXJlIGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBjbGFzcy4KLSAg
ICAgICAgQVNTRVJUKCFtX3BhdHRlcm4ubV9pZ25vcmVDYXNlIHx8IGlzQVNDSUlBbHBoYShjaCkg
fHwgaXNDYW5vbmljYWxseVVuaXF1ZShjaCkpOwotICAgICAgICBpZiAobV9wYXR0ZXJuLm1faWdu
b3JlQ2FzZSAmJiBpc0FTQ0lJQWxwaGEoY2gpKSB7CisgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJu
Lmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEoY2gpIHx8IGlzQ2Fub25pY2FsbHlVbmlxdWUo
Y2gpKTsKKyAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFscGhh
KGNoKSkgewogICAgICAgICAgICAgb3IzMihUcnVzdGVkSW1tMzIoMHgyMCksIGNoYXJhY3Rlcik7
CiAgICAgICAgICAgICBjaCB8PSAweDIwOwogICAgICAgICB9CkBAIC0xMTk1LDcgKzExOTUsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIGFkZDMy
KFRydXN0ZWRJbW0zMigxKSwgbWF0Y2hQb3MpOyAvLyBBZHZhbmNlIHBhc3QgbmV3bGluZQogICAg
ICAgICBzYXZlU3RhcnRJbmRleC5saW5rKHRoaXMpOwogCi0gICAgICAgIGlmICghbV9wYXR0ZXJu
Lm1fbXVsdGlsaW5lICYmIHRlcm0tPmFuY2hvcnMuYm9sQW5jaG9yKQorICAgICAgICBpZiAoIW1f
cGF0dGVybi5tdWx0aWxpbmUoKSAmJiB0ZXJtLT5hbmNob3JzLmJvbEFuY2hvcikKICAgICAgICAg
ICAgIG9wLm1fanVtcHMuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBtYXRjaFBvcykpOwog
CiAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpOwpAQCAt
MTIxNSw3ICsxMjE1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3Nl
bQogCiAgICAgICAgIGZvdW5kRW5kaW5nTmV3TGluZS5saW5rKHRoaXMpOwogCi0gICAgICAgIGlm
ICghbV9wYXR0ZXJuLm1fbXVsdGlsaW5lICYmIHRlcm0tPmFuY2hvcnMuZW9sQW5jaG9yKQorICAg
ICAgICBpZiAoIW1fcGF0dGVybi5tdWx0aWxpbmUoKSAmJiB0ZXJtLT5hbmNob3JzLmVvbEFuY2hv
cikKICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBtYXRj
aFBvcywgbGVuZ3RoKSk7CiAKICAgICAgICAgbW92ZShtYXRjaFBvcywgaW5kZXgpOwpAQCAtMTg0
Myw0NyArMTg0Myw2NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2Vt
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcm91bmQgdG8gdGhlIGZpcnN0IGFsdGVybmF0
aXZlLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rKHRo
aXMpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlz
IG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXgsIGZvciB1c2UgaWYgd2UgbWF0
Y2guCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFz
Rml4ZWRTaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dE1hdGNoU3RhcnQoaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCByZWdUMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplIC0gMSksIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRk
MzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE1hdGNoU3RhcnQocmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8g
bmVlZCB0byBhZHZhbmNlIGFuZCByZXRyeSBmb3IgYSBzdGljayBwYXR0ZXJuLgorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4uc3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBz
dG9yZSB0aGUgc3RhcnQgaW5kZXgsIGZvciB1c2UgaWYgd2UgbWF0Y2guCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNo
U3RhcnQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJ
bW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
R2VuZXJhdGUgY29kZSB0byBsb29wLiBDaGVjayB3aGV0aGVyIHRoZSBsYXN0IGFsdGVybmF0aXZl
IGlzIGxvbmdlciB0aGFuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgKGUu
Zy4gL2F8eHkvIG9yIC9hfHh5ei8pLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplID4gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVt
U2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gbG9vcCwg
YW5kIGluY3JlbWVudCBpbnB1dCBwb3NpdGlvbi4gSWYgdGhlIGRlbHRhIGlzIDEsIGl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBjb3JyZWN0bHkgaW5jcmVtZW50
ZWQsIGlmIG1vcmUgdGhhbiBvbmUgdGhlbiBkZWNyZW1lbnQgYXMgYXBwcm9wcmlhdGUuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSAtIGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlbHRhKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZGVsdGEgIT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ViMzIoSW1tMzIoZGVsdGEgLSAxKSwgaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGp1bXAoYmVnaW5PcC0+bV9yZWVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGFs
dGVybmF0aXZlIGhhcyBtaW5pbXVtIHNpemUgMHhGRkZGRkZGRnUsIHRoZW4gdGhlcmUgY2Fubm90
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgc3VmZmljZW50IGlucHV0IGF2YWls
YWJsZSB0byBoYW5kbGUgdGhpcywgc28ganVzdCBmYWxsIHRocm91Z2guCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDB4RkZGRkZGRkZ1KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaW5wdXQgYmVjYXVzZSB3ZSBh
cmUgaW5jcmVtZW50aW5nIHRoZSBpbnB1dC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkMzIoSW1tMzIoZGVsdGEgKyAxKSwgaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGVja0lucHV0KCkubGlua1RvKGJlZ2luT3AtPm1fcmVlbnRyeSwgdGhpcyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgY29kZSB0byBsb29wLiBD
aGVjayB3aGV0aGVyIHRoZSBsYXN0IGFsdGVybmF0aXZlIGlzIGxvbmdlciB0aGFuIHRoZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IChlLmcuIC9hfHh5LyBvciAvYXx4eXov
KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgPiBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gbG9vcCwgYW5kIGluY3JlbWVu
dCBpbnB1dCBwb3NpdGlvbi4gSWYgdGhlIGRlbHRhIGlzIDEsIGl0IGlzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgY29ycmVjdGx5IGluY3JlbWVudGVkLCBpZiBt
b3JlIHRoYW4gb25lIHRoZW4gZGVjcmVtZW50IGFzIGFwcHJvcHJpYXRlLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmlt
dW1TaXplIC0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlbHRhKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWIzMihJbW0zMihkZWx0YSAtIDEpLCBpbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGp1bXAoYmVnaW5PcC0+bV9yZWVudHJ5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgaGFzIG1pbmltdW0gc2l6ZSAweEZGRkZGRkZG
dSwgdGhlbiB0aGVyZSBjYW5ub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YmUgc3VmZmljZW50IGlucHV0IGF2YWlsYWJsZSB0byBoYW5kbGUgdGhpcywgc28ganVzdCBmYWxs
IHRocm91Z2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRlbHRh
ID0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEg
IT0gMHhGRkZGRkZGRnUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gY2hlY2sgaW5wdXQgYmVjYXVzZSB3ZSBhcmUgaW5jcmVtZW50aW5nIHRoZSBp
bnB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGRl
bHRhICsgMSksIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrSW5wdXQoKS5saW5rVG8oYmVnaW5PcC0+bV9yZWVudHJ5LCB0aGlzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBmYWlsZWQgbWF0Y2hpbmcgZnJvbSB0aGUgaW5p
dGlhbCBpbmRleCBhbmQgd2UncmUgYSBzdGlja3kgZXhwcmVzc2lvbi4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgYXJlIGRvbmUgbWF0Y2hpbmcuIExpbmsgZmFpbHVyZXMgZm9yIGFueSByZWFz
b24gdG8gaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgWWFyck9wKiB0ZW1wT3AgPSBiZWdpbk9w
OworICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1w
T3AtPm1fanVtcHMubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBPcCA9
ICZtX29wc1t0ZW1wT3AtPm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAo
dGVtcE9wLT5tX29wICE9IE9wQm9keUFsdGVybmF0aXZlRW5kKTsKKworICAgICAgICAgICAgICAg
ICAgICByZW1vdmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKCh2b2lkKilXVEY6Om5vdEZvdW5kKSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmV0dXJuUmVnaXN0ZXIyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdGVSZXR1cm4oKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIHJlYWNo
IHRoaXMgcG9pbnQgaW4gdGhlIGNvZGUgaW4gdHdvIHdheXM6CiAgICAgICAgICAgICAgICAgLy8g
IC0gRmFsbHRocm91Z2ggZnJvbSB0aGUgY29kZSBhYm92ZSAoYSByZXBlYXRpbmcgYWx0ZXJuYXRp
dmUgYmFja3RyYWNrZWQgb3V0IG9mIGl0cwogICAgICAgICAgICAgICAgIC8vICAgIGxhc3QgYWx0
ZXJuYXRpdmUsIGFuZCBkaWQgbm90IGhhdmUgc3VmZmljZW50IGlucHV0IHRvIHJ1biB0aGUgZmly
c3QpLgotICAgICAgICAgICAgICAgIC8vICAtIFdlIHdpbGwgbG9vcCBiYWNrIHVwIHRvIHRoZSBm
b2xsb3dpbmcgbGFiZWwgd2hlbiBhIHJlbGVhdGluZyBhbHRlcm5hdGl2ZSBsb29wcywKKyAgICAg
ICAgICAgICAgICAvLyAgLSBXZSB3aWxsIGxvb3AgYmFjayB1cCB0byB0aGUgZm9sbG93aW5nIGxh
YmVsIHdoZW4gYSByZXBlYXRpbmcgYWx0ZXJuYXRpdmUgbG9vcHMsCiAgICAgICAgICAgICAgICAg
Ly8gICAgZm9sbG93aW5nIGEgZmFpbGVkIGlucHV0IGNoZWNrLgogICAgICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHdheSwgd2UgaGF2ZSBqdXN0IGZhaWxlZCB0aGUg
aW5wdXQgY2hlY2sgZm9yIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHJldmlzaW9uIDE5Nzg2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc2LDcgKzI3Niw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogcHVibGlj
OgogICAgIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IoWWFyclBhdHRlcm4mIHBhdHRlcm4pCiAgICAg
ICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0
cnVjdG9yKHBhdHRlcm4ubV9pZ25vcmVDYXNlLCBwYXR0ZXJuLm1fdW5pY29kZSA/IENhbm9uaWNh
bE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQorICAgICAgICAsIG1fY2hhcmFj
dGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVybi51bmljb2Rl
KCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikKICAgICAg
ICAgLCBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24oZmFsc2UpCiAgICAgewogICAgICAg
ICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKQEAg
LTMyMiwxMiArMzIyLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFdlIGhhbmRsZSBj
YXNlLWluc2Vuc2l0aXZlIGNoZWNraW5nIG9mIHVuaWNvZGUgY2hhcmFjdGVycyB3aGljaCBkbyBo
YXZlIGJvdGgKICAgICAgICAgLy8gY2FzZXMgYnkgaGFuZGxpbmcgdGhlbSBhcyBpZiB0aGV5IHdl
cmUgZGVmaW5lZCB1c2luZyBhIENoYXJhY3RlckNsYXNzLgotICAgICAgICBpZiAoIW1fcGF0dGVy
bi5tX2lnbm9yZUNhc2UgfHwgKGlzQVNDSUkoY2gpICYmICFtX3BhdHRlcm4ubV91bmljb2RlKSkg
eworICAgICAgICBpZiAoIW1fcGF0dGVybi5pZ25vcmVDYXNlKCkgfHwgKGlzQVNDSUkoY2gpICYm
ICFtX3BhdHRlcm4udW5pY29kZSgpKSkgewogICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90
ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oY2gpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGNvbnN0IENhbm9uaWNhbGl6YXRpb25SYW5nZSogaW5mbyA9IGNhbm9u
aWNhbFJhbmdlSW5mb0ZvcihjaCwgbV9wYXR0ZXJuLm1fdW5pY29kZSA/IENhbm9uaWNhbE1vZGU6
OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKTsKKyAgICAgICAgY29uc3QgQ2Fub25pY2Fs
aXphdGlvblJhbmdlKiBpbmZvID0gY2Fub25pY2FsUmFuZ2VJbmZvRm9yKGNoLCBtX3BhdHRlcm4u
dW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIp
OwogICAgICAgICBpZiAoaW5mby0+dHlwZSA9PSBDYW5vbmljYWxpemVVbmlxdWUpIHsKICAgICAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKGNoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02MDEsNyArNjAxLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VG
b3JCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAgICAgYWx0
ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChtX3BhdHRlcm4ubV91bmljb2RlKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICht
X3BhdHRlcm4udW5pY29kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1dFBv
c2l0aW9uICs9IFUxNl9MRU5HVEgodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSAqIHRlcm0ucXVhbnRp
dHlDb3VudDsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudElucHV0UG9zaXRpb24gKz0gdGVybS5xdWFudGl0eUNvdW50OwpAQCAtNjEzLDcgKzYxMyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3Vy
cmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVT
aXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb0NoYXJhY3RlckNsYXNzOwogICAg
ICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX3VuaWNvZGUpIHsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi51bmljb2RlKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFj
a1RyYWNrSW5mb0NoYXJhY3RlckNsYXNzOwogICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW5w
dXRQb3NpdGlvbiArPSB0ZXJtLnF1YW50aXR5Q291bnQ7CkBAIC03MzMsNyArNzMzLDcgQEAgcHVi
bGljOgogICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGlzIGlzIG9ubHkgdmFsaWQgZm9yIG5v
bi1tdWx0aWxpbmUgZXhwcmVzc2lvbnMuCiAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogZGlz
anVuY3Rpb24gPSBtX3BhdHRlcm4ubV9ib2R5OwogICAgICAgICAKLSAgICAgICAgaWYgKCFtX3Bh
dHRlcm4ubV9jb250YWluc0JPTCB8fCBtX3BhdHRlcm4ubV9tdWx0aWxpbmUpCisgICAgICAgIGlm
ICghbV9wYXR0ZXJuLm1fY29udGFpbnNCT0wgfHwgbV9wYXR0ZXJuLm11bHRpbGluZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBs
b29wRGlzanVuY3Rpb24gPSBjb3B5RGlzanVuY3Rpb24oZGlzanVuY3Rpb24sIHRydWUpOwpAQCAt
ODQ0LDcgKzg0NCw3IEBAIGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFMK
IHsKICAgICBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIGNvbnN0cnVjdG9yKCp0aGlzKTsKIAotICAg
IGlmIChjb25zdCBjaGFyKiBlcnJvciA9IHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3RyaW5n
LCBtX3VuaWNvZGUpKQorICAgIGlmIChjb25zdCBjaGFyKiBlcnJvciA9IHBhcnNlKGNvbnN0cnVj
dG9yLCBwYXR0ZXJuU3RyaW5nLCB1bmljb2RlKCkpKQogICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgCiAgICAgLy8gSWYgdGhlIHBhdHRlcm4gY29udGFpbnMgaWxsZWdhbCBiYWNrcmVmZXJlbmNl
cyByZXNldCAmIHJlcGFyc2UuCkBAIC04NTgsNyArODU4LDcgQEAgY29uc3QgY2hhciogWWFyclBh
dHRlcm46OmNvbXBpbGUoY29uc3QgUwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgY29u
c3QgY2hhciogZXJyb3IgPQogI2VuZGlmCi0gICAgICAgICAgICBwYXJzZShjb25zdHJ1Y3Rvciwg
cGF0dGVyblN0cmluZywgbV91bmljb2RlLCBudW1TdWJwYXR0ZXJucyk7CisgICAgICAgICAgICBw
YXJzZShjb25zdHJ1Y3RvciwgcGF0dGVyblN0cmluZywgdW5pY29kZSgpLCBudW1TdWJwYXR0ZXJu
cyk7CiAKICAgICAgICAgQVNTRVJUKCFlcnJvcik7CiAgICAgICAgIEFTU0VSVChudW1TdWJwYXR0
ZXJucyA9PSBtX251bVN1YnBhdHRlcm5zKTsKQEAgLTg3MywxMyArODczLDExIEBAIGNvbnN0IGNo
YXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFMKICAgICByZXR1cm4gMDsKIH0KIAotWWFy
clBhdHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVD
YXNlLCBib29sIG11bHRpbGluZSwgYm9vbCB1bmljb2RlLCBjb25zdCBjaGFyKiogZXJyb3IpCi0g
ICAgOiBtX2lnbm9yZUNhc2UoaWdub3JlQ2FzZSkKLSAgICAsIG1fbXVsdGlsaW5lKG11bHRpbGlu
ZSkKLSAgICAsIG1fdW5pY29kZSh1bmljb2RlKQotICAgICwgbV9jb250YWluc0JhY2tyZWZlcmVu
Y2VzKGZhbHNlKQorWWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVy
biwgUmVnRXhwRmxhZ3MgZmxhZ3MsIGNvbnN0IGNoYXIqKiBlcnJvcikKKyAgICA6IG1fY29udGFp
bnNCYWNrcmVmZXJlbmNlcyhmYWxzZSkKICAgICAsIG1fY29udGFpbnNCT0woZmFsc2UpCiAgICAg
LCBtX2NvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuKGZhbHNlKQorICAgICwgbV9mbGFncyhm
bGFncykKICAgICAsIG1fbnVtU3VicGF0dGVybnMoMCkKICAgICAsIG1fbWF4QmFja1JlZmVyZW5j
ZSgwKQogICAgICwgbmV3bGluZUNhY2hlZCgwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5oCShyZXZpc2lvbiAxOTc4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaWZuZGVmIFlhcnJQYXR0ZXJuX2gKICNkZWZpbmUgWWFyclBhdHRlcm5faAogCisjaW5jbHVk
ZSAiUmVnRXhwS2V5LmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yOTks
OCArMzAwLDkgQEAgc3RydWN0IFRlcm1DaGFpbiB7CiAgICAgVmVjdG9yPFRlcm1DaGFpbj4gaG90
VGVybXM7CiB9OwogCisKIHN0cnVjdCBZYXJyUGF0dGVybiB7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJv
b2wgbXVsdGlsaW5lLCBib29sIHVuaWNvZGUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBG
bGFncyBmbGFncywgY29uc3QgY2hhcioqIGVycm9yKTsKIAogICAgIHZvaWQgcmVzZXQoKQogICAg
IHsKQEAgLTM5MCwxMiArMzkyLDE1IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgICAgIHJl
dHVybiBub253b3JkY2hhckNhY2hlZDsKICAgICB9CiAKLSAgICBib29sIG1faWdub3JlQ2FzZSA6
IDE7Ci0gICAgYm9vbCBtX211bHRpbGluZSA6IDE7Ci0gICAgYm9vbCBtX3VuaWNvZGUgOiAxOwor
ICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3Jl
Q2FzZTsgfQorICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZs
YWdNdWx0aWxpbmU7IH0KKyAgICBib29sIHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mg
JiBGbGFnU3RpY2t5OyB9CisgICAgYm9vbCB1bmljb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
cyAmIEZsYWdVbmljb2RlOyB9CisKICAgICBib29sIG1fY29udGFpbnNCYWNrcmVmZXJlbmNlcyA6
IDE7CiAgICAgYm9vbCBtX2NvbnRhaW5zQk9MIDogMTsKICAgICBib29sIG1fY29udGFpbnNVbnNp
Z25lZExlbmd0aFBhdHRlcm4gOiAxOyAKKyAgICBSZWdFeHBGbGFncyBtX2ZsYWdzOwogICAgIHVu
c2lnbmVkIG1fbnVtU3VicGF0dGVybnM7CiAgICAgdW5zaWduZWQgbV9tYXhCYWNrUmVmZXJlbmNl
OwogICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogbV9ib2R5OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3
ODYxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTYtMDMtMDkgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFJlZ0V4cCBzdGlja3kgZmxhZyBhbmQgcmVsYXRlZCBm
dW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOZXcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3du
UHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVnZXhwLWZsYWdzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9yZWdleHAtc3RpY2t5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvcmVnZXhwLXN0aWNreS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1mbGFncy5qczoKKyAgICAgICAgKFJlZ0V4cC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkpOiBEZWxldGVkIGNoZWNrIGZvciBzdGlja3kgcHJvcGVydHkuCisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1zdGlja3kuanM6IE5ldyB0ZXN0LgorICAg
ICAgICAoYXNTdHJpbmcpOgorICAgICAgICAodGVzdFN0aWNreUV4ZWMpOgorICAgICAgICAodGVz
dFN0aWNreU1hdGNoKToKKwogMjAxNi0wMy0wOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFw
cGxlLmNvbT4KIAogICAgICAgICBDbGVhbmluZyB1cCBUZXN0RXhwZWN0YXRpb25zIGZpbGVzIHRv
IHJlbW92ZSBkZWxldGVkIHRlc3RzIGFuZCBkdXBsaWNhdGUgZW50cmllcyBmb3IgaW9zLXNpbXVs
YXRvci4KSW5kZXg6IExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJv
cGVydHlOYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Nzg2MSkKKysrIExheW91dFRlc3Rz
L2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsNyBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTnVtYmVy
LnByCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRGF0ZSkgaXMgWydVVEMnLCAnbGVu
Z3RoJywgJ25hbWUnLCAnbm93JywgJ3BhcnNlJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoRGF0ZS5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAnZ2V0
RGF0ZScsICdnZXREYXknLCAnZ2V0RnVsbFllYXInLCAnZ2V0SG91cnMnLCAnZ2V0TWlsbGlzZWNv
bmRzJywgJ2dldE1pbnV0ZXMnLCAnZ2V0TW9udGgnLCAnZ2V0U2Vjb25kcycsICdnZXRUaW1lJywg
J2dldFRpbWV6b25lT2Zmc2V0JywgJ2dldFVUQ0RhdGUnLCAnZ2V0VVRDRGF5JywgJ2dldFVUQ0Z1
bGxZZWFyJywgJ2dldFVUQ0hvdXJzJywgJ2dldFVUQ01pbGxpc2Vjb25kcycsICdnZXRVVENNaW51
dGVzJywgJ2dldFVUQ01vbnRoJywgJ2dldFVUQ1NlY29uZHMnLCAnZ2V0WWVhcicsICdzZXREYXRl
JywgJ3NldEZ1bGxZZWFyJywgJ3NldEhvdXJzJywgJ3NldE1pbGxpc2Vjb25kcycsICdzZXRNaW51
dGVzJywgJ3NldE1vbnRoJywgJ3NldFNlY29uZHMnLCAnc2V0VGltZScsICdzZXRVVENEYXRlJywg
J3NldFVUQ0Z1bGxZZWFyJywgJ3NldFVUQ0hvdXJzJywgJ3NldFVUQ01pbGxpc2Vjb25kcycsICdz
ZXRVVENNaW51dGVzJywgJ3NldFVUQ01vbnRoJywgJ3NldFVUQ1NlY29uZHMnLCAnc2V0WWVhcics
ICd0b0RhdGVTdHJpbmcnLCAndG9HTVRTdHJpbmcnLCAndG9JU09TdHJpbmcnLCAndG9KU09OJywg
J3RvTG9jYWxlRGF0ZVN0cmluZycsICd0b0xvY2FsZVN0cmluZycsICd0b0xvY2FsZVRpbWVTdHJp
bmcnLCAndG9TdHJpbmcnLCAndG9UaW1lU3RyaW5nJywgJ3RvVVRDU3RyaW5nJywgJ3ZhbHVlT2Yn
XQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFJlZ0V4cCkgaXMgWyckJicsICIkJyIs
ICckKicsICckKycsICckMScsICckMicsICckMycsICckNCcsICckNScsICckNicsICckNycsICck
OCcsICckOScsICckXycsICckYCcsICdpbnB1dCcsICdsYXN0TWF0Y2gnLCAnbGFzdFBhcmVuJywg
J2xlZnRDb250ZXh0JywgJ2xlbmd0aCcsICdtdWx0aWxpbmUnLCAnbmFtZScsICdwcm90b3R5cGUn
LCAncmlnaHRDb250ZXh0J10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhSZWdFeHAu
cHJvdG90eXBlKSBpcyBbJ2NvbXBpbGUnLCAnY29uc3RydWN0b3InLCAnZXhlYycsICdmbGFncycs
ICdnbG9iYWwnLCAnaWdub3JlQ2FzZScsICdsYXN0SW5kZXgnLCAnbXVsdGlsaW5lJywgJ3NvdXJj
ZScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKFJlZ0V4cC5wcm90b3R5cGUpIGlzIFsnY29tcGlsZScsICdjb25zdHJ1Y3Rvcics
ICdleGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNlJywgJ2xhc3RJbmRleCcsICdt
dWx0aWxpbmUnLCAnc291cmNlJywgJ3N0aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNv
ZGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yKSBpcyBbJ2xlbmd0aCcs
ICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJy
b3IucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0
cmluZyddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWF0aCkgaXMgWydFJywnTE4x
MCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdh
Y29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQn
LCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3Vu
ZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWlu
JywncG93JywncmFuZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4n
LCd0YW5oJywndHJ1bmMnXQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZsYWdzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3MtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxOTc4NjEpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3Mt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMCBAQCB1bmljb2RlIGZs
YWcKIFBBU1MgL2EvdWltZy5mbGFncyBpcyAnZ2ltdScKIFBBU1MgbmV3IFJlZ0V4cCgnYScsICd1
aW1nJykuZmxhZ3MgaXMgJ2dpbXUnCiBQQVNTIGZsYWdzLmNhbGwoe2dsb2JhbDogdHJ1ZSwgbXVs
dGlsaW5lOiB0cnVlLCBpZ25vcmVDYXNlOiB0cnVlLCB1bmljb2RlOiB0cnVlfSkgaXMgJ2dpbXUn
CitzdGlja3kgZmxhZworUEFTUyAvYS95aW1nLmZsYWdzIGlzICdnaW15JworUEFTUyBuZXcgUmVn
RXhwKCdhJywgJ3lpbWcnKS5mbGFncyBpcyAnZ2lteScKK1BBU1MgZmxhZ3MuY2FsbCh7Z2xvYmFs
OiB0cnVlLCBtdWx0aWxpbmU6IHRydWUsIGlnbm9yZUNhc2U6IHRydWUsIHN0aWNreTogdHJ1ZX0p
IGlzICdnaW15JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdleHAtc3RpY2t5LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtc3RpY2t5LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ2V4cC1zdGlja3ktZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKK1Rlc3QgZm9yIEVTNiBzdGlja3kgZmxhZyBy
ZWd1bGFyIGV4cHJlc3Npb24gcHJvY2Vzc2luZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBSZXBlYXRpbmcgUGF0dGVybgorUEFTUyBUZXN0IGxhc3RJbmRleCByZXNldHMK
K1BBU1MgSWdub3JlIENhc2UKK1BBU1MgQWx0ZXJuYXRlcworUEFTUyBCT0wgQW5jaG9yZWQsIHN0
YXJ0aW5nIGF0IDAKK1BBU1MgQk9MIEFuY2hvcmVkLCBzdGFydGluZyBhdCAxCitQQVNTIEVPTCBB
bmNob3JlZCwgbm90IGF0IEVPTAorUEFTUyBFT0wgQW5jaG9yZWQsIGF0IEVPTAorUEFTUyBMb29r
YWhlYWQgQXNzZXJ0aW9uCitQQVNTIExvb2thaGVhZCBOZWdhdGl2ZSBBc3NlcnRpb24KK1BBU1Mg
U3VicGF0dGVybnMgLSBleGVjCitQQVNTIFN1YnBhdHRlcm5zIC0gbWF0Y2gKK1BBU1MgRml4ZWQg
Q291bnQKK1BBU1MgR3JlZWR5CitQQVNTIE5vbi1ncmVlZHkKK1BBU1MgR3JlZWR5L05vbi1ncmVl
ZHkKK1BBU1MgQ291bnRlZCBSYW5nZQorUEFTUyBDaGFyYWN0ZXIgQ2xhc3NlcworUEFTUyBVbm1h
dGNoZWQgR3JlZWR5CitQQVNTIEdsb2JhbCBGbGFnIC0gZXhlYworUEFTUyBHbG9iYWwgRmxhZyAt
IG1hdGNoCitQQVNTIFVuaWNvZGUgRmxhZyAtIEFueSBDaGFyYWN0ZXIKK1BBU1MgVW5pY29kZSAm
IElnbm9yZSBDYXNlIEZsYWdzCitQQVNTIE11bHRpbGluZQorUEFTUyBNdWx0aWxpbmUgd2l0aCBC
T0wgQW5jaG9yCitQQVNTICIxMjMgMTIzNCAiLnNlYXJjaChyZSkgaXMgMAorUEFTUyAiMTIzIDEy
MzQgIi5zZWFyY2gocmUpIGlzIDAKK1BBU1MgIiAxMjMgMTIzNCAiLnNlYXJjaChyZSkgaXMgLTEK
K1BBU1MgcmUudGVzdCgiMTIzIDEyMzQgIikgaXMgdHJ1ZQorUEFTUyByZS5sYXN0SW5kZXggaXMg
NAorUEFTUyByZS50ZXN0KCIxMjMgMTIzNCAiKSBpcyB0cnVlCitQQVNTIHJlLmxhc3RJbmRleCBp
cyA5CitQQVNTIHJlLnRlc3QoIjEyMyAxMjM0ICIpIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVnZXhwLXN0aWNreS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ2V4cC1z
dGlja3kuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ2V4cC1zdGlja3ku
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXN0aWNreS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdl
dE93blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lvbiAxOTc4NjEpCisr
KyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdmFyIGV4cGVjdGVkUHJvcGVydHlO
YW1lc1NldCA9IHsKICAgICAiRGF0ZSI6ICJbJ1VUQycsICdsZW5ndGgnLCAnbmFtZScsICdub3cn
LCAncGFyc2UnLCAncHJvdG90eXBlJ10iLAogICAgICJEYXRlLnByb3RvdHlwZSI6ICJbJ2NvbnN0
cnVjdG9yJywgJ2dldERhdGUnLCAnZ2V0RGF5JywgJ2dldEZ1bGxZZWFyJywgJ2dldEhvdXJzJywg
J2dldE1pbGxpc2Vjb25kcycsICdnZXRNaW51dGVzJywgJ2dldE1vbnRoJywgJ2dldFNlY29uZHMn
LCAnZ2V0VGltZScsICdnZXRUaW1lem9uZU9mZnNldCcsICdnZXRVVENEYXRlJywgJ2dldFVUQ0Rh
eScsICdnZXRVVENGdWxsWWVhcicsICdnZXRVVENIb3VycycsICdnZXRVVENNaWxsaXNlY29uZHMn
LCAnZ2V0VVRDTWludXRlcycsICdnZXRVVENNb250aCcsICdnZXRVVENTZWNvbmRzJywgJ2dldFll
YXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdzZXRIb3VycycsICdzZXRNaWxsaXNlY29u
ZHMnLCAnc2V0TWludXRlcycsICdzZXRNb250aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAn
c2V0VVRDRGF0ZScsICdzZXRVVENGdWxsWWVhcicsICdzZXRVVENIb3VycycsICdzZXRVVENNaWxs
aXNlY29uZHMnLCAnc2V0VVRDTWludXRlcycsICdzZXRVVENNb250aCcsICdzZXRVVENTZWNvbmRz
JywgJ3NldFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3RvR01UU3RyaW5nJywgJ3RvSVNPU3RyaW5n
JywgJ3RvSlNPTicsICd0b0xvY2FsZURhdGVTdHJpbmcnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9M
b2NhbGVUaW1lU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3RvVGltZVN0cmluZycsICd0b1VUQ1N0cmlu
ZycsICd2YWx1ZU9mJ10iLAogICAgICJSZWdFeHAiOiAiWyckJicsIFwiJCdcIiwgJyQqJywgJyQr
JywgJyQxJywgJyQyJywgJyQzJywgJyQ0JywgJyQ1JywgJyQ2JywgJyQ3JywgJyQ4JywgJyQ5Jywg
JyRfJywgJyRgJywgJ2lucHV0JywgJ2xhc3RNYXRjaCcsICdsYXN0UGFyZW4nLCAnbGVmdENvbnRl
eHQnLCAnbGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3Byb3RvdHlwZScsICdyaWdodENv
bnRleHQnXSIsCi0gICAgIlJlZ0V4cC5wcm90b3R5cGUiOiAiWydjb21waWxlJywgJ2NvbnN0cnVj
dG9yJywgJ2V4ZWMnLCAnZmxhZ3MnLCAnZ2xvYmFsJywgJ2lnbm9yZUNhc2UnLCAnbGFzdEluZGV4
JywgJ211bHRpbGluZScsICdzb3VyY2UnLCAndGVzdCcsICd0b1N0cmluZycsICd1bmljb2RlJ10i
LAorICAgICJSZWdFeHAucHJvdG90eXBlIjogIlsnY29tcGlsZScsICdjb25zdHJ1Y3RvcicsICdl
eGVjJywgJ2ZsYWdzJywgJ2dsb2JhbCcsICdpZ25vcmVDYXNlJywgJ2xhc3RJbmRleCcsICdtdWx0
aWxpbmUnLCAnc291cmNlJywgJ3N0aWNreScsICd0ZXN0JywgJ3RvU3RyaW5nJywgJ3VuaWNvZGUn
XSIsCiAgICAgIkVycm9yIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAg
ICJFcnJvci5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAn
dG9TdHJpbmcnXSIsCiAgICAgIk1hdGgiOiAiWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xP
RzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywn
YXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3Mn
LCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xv
ZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91
bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXSIsCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWZsYWdzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtZmxhZ3MuanMJKHJldmlz
aW9uIDE5Nzg2MSkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtZmxhZ3Mu
anMJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMyw3IEBAIHNob3VsZEJlKCIvYS91aW1nLmZs
YWdzIiwgIidnaW11JyIpOwogc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAndWltZycpLmZsYWdz
IiwgIidnaW11JyIpOwogc2hvdWxkQmUoImZsYWdzLmNhbGwoe2dsb2JhbDogdHJ1ZSwgbXVsdGls
aW5lOiB0cnVlLCBpZ25vcmVDYXNlOiB0cnVlLCB1bmljb2RlOiB0cnVlfSkiLCAiJ2dpbXUnIik7
CiAKLWlmIChSZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCdzdGlja3knKSkgewotICBk
ZWJ1Zygic3RpY2t5IGZsYWciKTsKLSAgLy8gd2hlbiB0aGUgZW5naW5lIHN1cHBvcnRzICJzdGlj
a3kiLCB0aGVzZSB0ZXN0cyB3aWxsIGZhaWwgYnkgZGVzaWduLgotICAvLyBIb3BlZnVsbHksIG9u
bHkgdGhlIGV4cGVjdGVkIG91dHB1dCB3aWxsIG5lZWQgdXBkYXRpbmcuCi0gIHNob3VsZEJlKCIv
YS95aW1nLmZsYWdzIiwgIidnaW15JyIpOwotICBzaG91bGRCZSgibmV3IFJlZ0V4cCgnYScsICd5
aW1nJykuZmxhZ3MiLCAiJ2dpbXknIik7Ci0gIHNob3VsZEJlKCJmbGFncy5jYWxsKHtnbG9iYWw6
IHRydWUsIG11bHRpbGluZTogdHJ1ZSwgaWdub3JlQ2FzZTogdHJ1ZSwgc3RpY2t5OiB0cnVlfSki
LCAiJ2dpbXknIik7Ci19CitkZWJ1Zygic3RpY2t5IGZsYWciKTsKK3Nob3VsZEJlKCIvYS95aW1n
LmZsYWdzIiwgIidnaW15JyIpOworc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAneWltZycpLmZs
YWdzIiwgIidnaW15JyIpOworc2hvdWxkQmUoImZsYWdzLmNhbGwoe2dsb2JhbDogdHJ1ZSwgbXVs
dGlsaW5lOiB0cnVlLCBpZ25vcmVDYXNlOiB0cnVlLCBzdGlja3k6IHRydWV9KSIsICInZ2lteSci
KTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtc3RpY2t5LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtc3RpY2t5Lmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1zdGlj
a3kuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKK2Rlc2NyaXB0aW9uKAorJ1Rl
c3QgZm9yIEVTNiBzdGlja3kgZmxhZyByZWd1bGFyIGV4cHJlc3Npb24gcHJvY2Vzc2luZycKKyk7
CisKK2Z1bmN0aW9uIGFzU3RyaW5nKG8pCit7CisgICAgaWYgKG8gPT09IG51bGwpCisgICAgICAg
IHJldHVybiAiPG51bGw+IjsKKworICAgIHJldHVybiBvLnRvU3RyaW5nKCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTdGlja3lFeGVjKHRlc3REZXNjcmlwdGlvbiwgcmUsIHN0ciwgYmVnaW5MYXN0SW5k
ZXgsIGV4cGVjdGVkKQoreworICAgIHJlLmxhc3RJbmRleCA9IGJlZ2luTGFzdEluZGV4OworCisg
ICAgbGV0IGZhaWx1cmVzID0gMDsKKworICAgIGZvciAobGV0IGl0ZXIgPSAwOyBpdGVyIDwgZXhw
ZWN0ZWQubGVuZ3RoOyBpdGVyKyspIHsKKyAgICAgICAgbGV0IGxhc3RJbmRleFN0YXJ0ID0gcmUu
bGFzdEluZGV4OworCisgICAgICAgIGxldCByZXN1bHQgPSByZS5leGVjKHN0cik7CisKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZFtpdGVyXSkgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCh0ZXN0RGVzY3JpcHRpb24gKyAiLCBpdGVyYXRpb24gIiArIGl0ZXIgKyAiLCBmcm9tIGxhc3RJ
bmRleDogIiArIGxhc3RJbmRleFN0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgIiwgZXhw
ZWN0ZWQgXCIiICsgYXNTdHJpbmcoZXhwZWN0ZWRbaXRlcl0pICsgIlwiLCBnb3QgXCIiICsgYXNT
dHJpbmcocmVzdWx0KSArICJcIiIpOworICAgICAgICAgICAgZmFpbHVyZXMrKzsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChmYWlsdXJlcykKKyAgICAgICAgdGVzdEZhaWxlZCh0ZXN0RGVz
Y3JpcHRpb24gKyAiIC0gZmFpbGVkOiAiICsgZmFpbHVyZXMgKyAiIHRlc3RzIik7CisgICAgZWxz
ZQorICAgICAgICB0ZXN0UGFzc2VkKHRlc3REZXNjcmlwdGlvbik7Cit9CisKK2Z1bmN0aW9uIHRl
c3RTdGlja3lNYXRjaCh0ZXN0RGVzY3JpcHRpb24sIHJlLCBzdHIsIGJlZ2luTGFzdEluZGV4LCBl
eHBlY3RlZCkKK3sKKyAgICByZS5sYXN0SW5kZXggPSBiZWdpbkxhc3RJbmRleDsKKworICAgIGxl
dCBmYWlsdXJlcyA9IDA7CisKKyAgICBmb3IgKHZhciBpdGVyID0gMDsgaXRlciA8IGV4cGVjdGVk
Lmxlbmd0aDsgaXRlcisrKSB7CisgICAgICAgIGxldCBsYXN0SW5kZXhTdGFydCA9IHJlLmxhc3RJ
bmRleDsKKworICAgICAgICBsZXQgcmVzdWx0ID0gc3RyLm1hdGNoKHJlKTsKKyAgICAgICAgbGV0
IGNvcnJlY3RSZXN1bHQgPSBmYWxzZTsKKwlpZiAoZXhwZWN0ZWRbaXRlcl0gPT09IG51bGwgfHwg
cmVzdWx0ID09PSBudWxsKQorCSAgICBjb3JyZWN0UmVzdWx0ID0gKGV4cGVjdGVkW2l0ZXJdID09
PSByZXN1bHQpOworCWVsc2UgaWYgKHJlc3VsdC5sZW5ndGggPT0gZXhwZWN0ZWRbaXRlcl0ubGVu
Z3RoKSB7CisJICAgIGNvcnJlY3RSZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAocmVz
dWx0W2ldICE9IGV4cGVjdGVkW2l0ZXJdW2ldKQorICAgICAgICAgICAgICAgICAgICBjb3JyZWN0
UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwkKKyAgICAgICAgaWYg
KCFjb3JyZWN0UmVzdWx0KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKHRlc3REZXNjcmlwdGlv
biArICIsIGl0ZXJhdGlvbiAiICsgaXRlciArICIsIGZyb20gbGFzdEluZGV4OiAiICsgbGFzdElu
ZGV4U3RhcnQgKworICAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCBcIiIgKyBhc1N0
cmluZyhleHBlY3RlZFtpdGVyXSkgKyAiXCIsIGdvdCBcIiIgKyBhc1N0cmluZyhyZXN1bHQpICsg
IlwiIik7CisgICAgICAgICAgICBmYWlsdXJlcysrOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKGZhaWx1cmVzKQorICAgICAgICB0ZXN0RmFpbGVkKHRlc3REZXNjcmlwdGlvbiArICIgLSBm
YWlsZWQ6ICIgKyBmYWlsdXJlcyArICIgdGVzdHMiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQ
YXNzZWQodGVzdERlc2NyaXB0aW9uKTsKK30KKworCit0ZXN0U3RpY2t5RXhlYygiUmVwZWF0aW5n
IFBhdHRlcm4iLCBuZXcgUmVnRXhwKCJhYmMiLCAieSIpLCAiYWJjYWJjYWJjIiwgMCwgWyJhYmMi
LCAiYWJjIiwgImFiYyIsIG51bGxdKTsKK3Rlc3RTdGlja3lFeGVjKCJUZXN0IGxhc3RJbmRleCBy
ZXNldHMiLCAvXGQveSwgIjEyMzQ1IiwgMCwgWyIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCBudWxs
LCAiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgbnVsbF0pOwordGVzdFN0aWNreUV4ZWMoIklnbm9y
ZSBDYXNlIiwgbmV3IFJlZ0V4cCgidGVzdCIsICJpeSIpLCAiVEVTVHRlc3RUZXN0IiwgMCwgWyJU
RVNUIiwgInRlc3QiLCAiVGVzdCIsIG51bGxdKTsKK3Rlc3RTdGlja3lFeGVjKCJBbHRlcm5hdGVz
IiwgbmV3IFJlZ0V4cCgiRG9nIHxDYXQgfE1vdXNlICIsICJ5IiksICJNb3VzZSBEb2cgQ2F0ICIs
IDAsIFsiTW91c2UgIiwgIkRvZyAiLCAiQ2F0ICIsIG51bGxdKTsKK3Rlc3RTdGlja3lFeGVjKCJC
T0wgQW5jaG9yZWQsIHN0YXJ0aW5nIGF0IDAiLCAvXlgveSwgIlhYWCIsIDAsIFsiWCIsIG51bGxd
KTsKK3Rlc3RTdGlja3lFeGVjKCJCT0wgQW5jaG9yZWQsIHN0YXJ0aW5nIGF0IDEiLCAvXlgveSwg
IlhYWCIsIDEsIFtudWxsLCAiWCIsIG51bGxdKTsKK3Rlc3RTdGlja3lFeGVjKCJFT0wgQW5jaG9y
ZWQsIG5vdCBhdCBFT0wiLCAvIyQveSwgIiMjIiwgMCwgW251bGxdKTsKK3Rlc3RTdGlja3lFeGVj
KCJFT0wgQW5jaG9yZWQsIGF0IEVPTCIsIC8jJC95LCAiIyMiLCAxLCBbIiMiLCBudWxsXSk7Cit0
ZXN0U3RpY2t5RXhlYygiTG9va2FoZWFkIEFzc2VydGlvbiIsIC9cZCsoPz0tKS95LCAiMjEyLTU1
NS0xMjEyIiwgMCwgWyIyMTIiLCBudWxsXSk7Cit0ZXN0U3RpY2t5RXhlYygiTG9va2FoZWFkIE5l
Z2F0aXZlIEFzc2VydGlvbiIsIC9cZCsoPyFcZCkveSwgIjIxMi01NTUtMTIxMiIsIDAsIFsiMjEy
IiwgbnVsbF0pOwordGVzdFN0aWNreUV4ZWMoIlN1YnBhdHRlcm5zIC0gZXhlYyIsIC8oXGQrKSg/
Oi18JCkveSwgIjIxMi01NTUtMTIxMiIsIDAsIFsiMjEyLSwyMTIiLCAiNTU1LSw1NTUiLCAiMTIx
MiwxMjEyIl0sIG51bGwpOwordGVzdFN0aWNreU1hdGNoKCJTdWJwYXR0ZXJucyAtIG1hdGNoIiwg
LyhcZCspKD86LXwkKS95LCAiMjEyLTU1NS0xMjEyIiwgMCwgW1siMjEyLSIsICIyMTIiXSwgWyI1
NTUtIiwgIjU1NSJdLCBbIjEyMTIiLCAiMTIxMiJdXSwgbnVsbCk7Cit0ZXN0U3RpY2t5RXhlYygi
Rml4ZWQgQ291bnQiLCAvXGR7NH0veSwgIjEyMzQ1Njc4OSIsIDAsIFsiMTIzNCIsICI1Njc4Iiwg
bnVsbF0pOwordGVzdFN0aWNreUV4ZWMoIkdyZWVkeSIsIC9cZCoveSwgIjEyMzQ1IDY3ODkwIiwg
MCwgWyIxMjM0NSIsICIiXSk7Cit0ZXN0U3RpY2t5TWF0Y2goIk5vbi1ncmVlZHkiLCAvXHcrPy4v
eSwgImFiY2RlZmciLCAwLCBbWyJhYiJdLCBbImNkIl0sIFsiZWYiXSwgbnVsbF0pOwordGVzdFN0
aWNreUV4ZWMoIkdyZWVkeS9Ob24tZ3JlZWR5IiwgL1xzKihcZCspL3ksICIgICAgMTIzNCAgMzI0
NTEyICAgNzQzNTIiLCAwLCBbIiAgICAxMjM0LDEyMzQiLCAiICAzMjQ1MTIsMzI0NTEyIiwgIiAg
IDc0MzUyLDc0MzUyIiwgbnVsbF0pOwordGVzdFN0aWNreUV4ZWMoIkNvdW50ZWQgUmFuZ2UiLCAv
KFx3K1xzKyl7MSwzfS95LCAiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgIiwg
MCwgWyJUaGUgcXVpY2sgYnJvd24gLGJyb3duICIsICJmb3gganVtcGVkIG92ZXIgLG92ZXIgIiwg
InRoZSAsdGhlICIsIG51bGxdKTsKK3Rlc3RTdGlja3lNYXRjaCgiQ2hhcmFjdGVyIENsYXNzZXMi
LCAvWzAtOUEtRl0vaXksICJmRUVkMTIzWCIsIDAsIFtbImYiXSwgWyJFIl0sIFsiRSJdLCBbImQi
XSwgWyIxIl0sIFsiMiJdLCBbIjMiXSwgbnVsbF0pOwordGVzdFN0aWNreUV4ZWMoIlVubWF0Y2hl
ZCBHcmVlZHkiLCAvXlxzKnxccyokL3ksICJhYiIsIDEsIFtudWxsXSk7Cit0ZXN0U3RpY2t5RXhl
YygiR2xvYmFsIEZsYWcgLSBleGVjIiwgL1xzKihcK3xbMC05XSspXHMqL2d5LCAiMyArIDQiLCAw
LCBbIjMgLDMiLCAiKyAsKyIsICI0LDQiLCBudWxsXSk7Cit0ZXN0U3RpY2t5TWF0Y2goIkdsb2Jh
bCBGbGFnIC0gbWF0Y2giLCAvXHMqKFwrfFswLTldKylccyovZ3ksICIzICsgNCIsIDAsIFtbIjMg
IiwgIisgIiwgIjQiXSwgWyIzICIsICIrICIsICI0Il1dKTsKK3Rlc3RTdGlja3lFeGVjKCJVbmlj
b2RlIEZsYWcgLSBBbnkgQ2hhcmFjdGVyIiwgLy4vdXksICJhQFx1ezEwNDAyfTFcdTIwMmFcdXsx
MjM0NX0iLCAwLCBbImEiLCAiQCIsICJcdXsxMDQwMn0iLCAiMSIsICJcdTIwMmEiLCAiXHV7MTIz
NDV9IiwgbnVsbF0pOwordGVzdFN0aWNreU1hdGNoKCJVbmljb2RlICYgSWdub3JlIENhc2UgRmxh
Z3MiLCAvKD86XHV7MTE4YzB9fFx1ezEwY2IwfXxcdyk6L2l1eSwgImE6XHV7MTE4YTB9Ong6XHV7
MTBjYjB9IiwgMCwgW1siYToiXSwgWyJcdXsxMThhMH06Il0sIFsieDoiXSwgbnVsbF0pOwordGVz
dFN0aWNreUV4ZWMoIk11bHRpbGluZSIsIC8oPzpcdysgKikrKD86XG58JCkvbXksICJMaW5lIE9u
ZVxuTGluZSBUd28iLCAwLCBbIkxpbmUgT25lXG4iLCAiTGluZSBUd28iLCBudWxsXSk7Cit0ZXN0
U3RpY2t5TWF0Y2goIk11bHRpbGluZSB3aXRoIEJPTCBBbmNob3IiLCAvXlxkKlxzPy9teSwgIjEz
NTc0XG4yOTVcbjk5IiwgMCwgW1siMTM1NzRcbiJdLCBbIjI5NVxuIl0sIFsiOTkiXSwgbnVsbF0p
OworCisvLyBWZXJpZnkgdGhhdCBTdHJpbmcuc2VhcmNoIHN0YXJ0cyBhdCAwIGV2ZW4gd2l0aCB0
aGUgc3RpY2t5IGZsYWcuCit2YXIgcmUgPSBuZXcgUmVnRXhwKCJcXGQrXFxzIiwgInkiKTsKK3No
b3VsZEJlKCciMTIzIDEyMzQgIi5zZWFyY2gocmUpJywgJzAnKTsKK3Nob3VsZEJlKCciMTIzIDEy
MzQgIi5zZWFyY2gocmUpJywgJzAnKTsKKy8vIFZlcmlmeSB0aGF0IFN0cmluZy5zZWFyY2ggZG9l
c24ndCBhZHZhbmNlIHBhc3QgMCB3aXRoIHRoZSBzdGlja3kgZmxhZy4KK3Nob3VsZEJlKCciIDEy
MyAxMjM0ICIuc2VhcmNoKHJlKScsICctMScpOworCityZS5sYXN0SW5kZXggPSAwOworc2hvdWxk
QmVUcnVlKCdyZS50ZXN0KCIxMjMgMTIzNCAiKScpOworc2hvdWxkQmUoJ3JlLmxhc3RJbmRleCcs
ICc0Jyk7CitzaG91bGRCZVRydWUoJ3JlLnRlc3QoIjEyMyAxMjM0ICIpJyk7CitzaG91bGRCZSgn
cmUubGFzdEluZGV4JywgJzknKTsKK3Nob3VsZEJlRmFsc2UoJ3JlLnRlc3QoIjEyMyAxMjM0ICIp
Jyk7CisK
</data>
<flag name="review"
          id="298037"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>