<?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>165227</bug_id>
          
          <creation_ts>2016-11-30 16:14:10 -0800</creation_ts>
          <short_desc>Introduce the concept of Immutable Prototype Exotic Objects to comply with the spec.</short_desc>
          <delta_ts>2016-12-06 14:44:20 -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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1255033</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-30 16:14:10 -0800</bug_when>
    <thetext>See https://tc39.github.io/ecma262/#sec-immutable-prototype-exotic-objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255038</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-30 16:16:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/29442665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256436</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-05 12:29:58 -0800</bug_when>
    <thetext>Spec excerpts of relevance:

https://tc39.github.io/ecma262/#sec-properties-of-the-object-prototype-object
&quot;The Object prototype object is an immutable prototype exotic object.&quot;

https://html.spec.whatwg.org/#the-windowproxy-exotic-object
https://html.spec.whatwg.org/#windowproxy-setprototypeof
https://html.spec.whatwg.org/#the-location-interface
https://html.spec.whatwg.org/#location-setprototypeof
- Based on these WindowProxy and Location both have their [[SetPrototypeOf]] functions unconditionally return false.  This differs from the immutable prototype exotic object which allows [[SetPrototypeOf]] to return true if the set value is the same as the existing prototype value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256689</commentid>
    <comment_count>3</comment_count>
      <attachid>296251</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-05 20:01:06 -0800</bug_when>
    <thetext>Created attachment 296251
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256976</commentid>
    <comment_count>4</comment_count>
      <attachid>296251</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-06 14:37:41 -0800</bug_when>
    <thetext>Comment on attachment 296251
proposed patch.

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

r=me

&gt; LayoutTests/js/script-tests/prototype-assignment.js:36
&gt; +    let userAgent = navigator.userAgent;
&gt; +    if (userAgent.match(/ Chrome\/[0-9]+/)) engine = &quot;chrome&quot;;
&gt; +    else if (userAgent.match(/ Firefox\/[0-9]+/)) engine = &quot;default&quot;;
&gt; +    else engine = &quot;safari&quot;;

What&apos;s the point of this? Don&apos;t we already know the answer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256980</commentid>
    <comment_count>5</comment_count>
      <attachid>296251</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 14:39:43 -0800</bug_when>
    <thetext>Comment on attachment 296251
proposed patch.

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

&gt;&gt; LayoutTests/js/script-tests/prototype-assignment.js:36
&gt;&gt; +    else engine = &quot;safari&quot;;
&gt; 
&gt; What&apos;s the point of this? Don&apos;t we already know the answer?

This is so I can run this test on Chrome and Firefox to compare results.  The test configures the error messages to check below based on the browser it is running on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256983</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 14:44:20 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r209424: &lt;http://trac.webkit.org/r209424&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296251</attachid>
            <date>2016-12-05 20:01:06 -0800</date>
            <delta_ts>2016-12-06 14:37:41 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-165227.patch</filename>
            <type>text/plain</type>
            <size>50612</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDkzODIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIwIEBACisyMDE2LTEyLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgSW1tdXRhYmxlIFByb3RvdHlw
ZSBFeG90aWMgT2JqZWN0cyB0byBjb21wbHkgd2l0aCB0aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIyNworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjk0NDI2NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdHJlc3MvZ2V0LWZyb20tc2NvcGUtZHluYW1pYy1vbnRvLXByb3h5Lmpz
OgorICAgICAgICAtIFVwZGF0ZWQgZXJyb3IgbWVzc2FnZS4KKworICAgICAgICAqIHN0cmVzcy9w
cm94eS1kb250LWluZmluaXRlLWxvb3AuanM6IFJlbW92ZWQuCisgICAgICAgICogc3RyZXNzL3By
b3h5LWpzb24tcGF0aC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlc3MvcmVzdC1wYXJhbWV0
ZXItYWxsb2NhdGlvbi1lbGltaW5hdGlvbi13YXRjaHBvaW50cy02LmpzOiBSZW1vdmVkLgorICAg
ICAgICAtIFJlbW92ZWQgdGhlc2UgdGVzdHMgYmVjYXVzZSB0aGUgaXNzdWUgdGhleSBhcmUgdGVz
dGluZyByZWxpZXMgb24gYmVpbmcgYWJsZSB0bworICAgICAgICAgIHNldCBPYmplY3QucHJvdG90
eXBlLl9fcHJvdG9fXyB0byBzb21ldGhpbmcgZWxzZSAod2hpY2ggaXMgbm93IG5vdCBwb3NzaWJs
ZSkuCisKIDIwMTYtMTItMDUgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbSlNDXSByZXBvcnQgdW5leHBlY3RlZCB0b2tlbiB3aGVuICJhc3luYyIgaXMgZm9s
bG93ZWQgYnkgaWRlbnRpZmllciAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dldC1mcm9tLXNjb3Bl
LWR5bmFtaWMtb250by1wcm94eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nZXQt
ZnJvbS1zY29wZS1keW5hbWljLW9udG8tcHJveHkuanMJKHJldmlzaW9uIDIwOTM4MikKKysrIEpT
VGVzdHMvc3RyZXNzL2dldC1mcm9tLXNjb3BlLWR5bmFtaWMtb250by1wcm94eS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzLDQgKzEwMyw0IEBAIHRyeSB7CiAgICAgdGhyb3duID0gZTsKIH0KIE9i
amVjdC5wcm90b3R5cGUuX19wcm90b19fID0gbnVsbDsKLXNob3VsZEJlKFN0cmluZyh0aHJvd24p
LCBgRXJyb3I6IE5HYCk7CitzaG91bGRCZShTdHJpbmcodGhyb3duKSwgYFR5cGVFcnJvcjogQ2Fu
bm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3RgKTsKSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL3Byb3h5LWRvbnQtaW5maW5pdGUtbG9vcC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL3N0cmVzcy9wcm94eS1kb250LWluZmluaXRlLWxvb3AuanMJKHJldmlzaW9uIDIw
OTM4MikKKysrIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWRvbnQtaW5maW5pdGUtbG9vcC5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE3ICswLDAgQEAKLWZ1bmN0aW9uIGZvbygpIHsKLSAgICBsZXQgdGFy
Z2V0ID0gewotICAgICAgX19wcm90b19fOiBudWxsCi0gICAgfTsKLSAgICBsZXQgcHJveHkgPSBu
ZXcgUHJveHkodGFyZ2V0LCB7Ci0gICAgICAgIGdldCguLi5hcmdzKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gUmVmbGVjdC5nZXQoLi4uYXJncyk7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBPYmpl
Y3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IHsKLSAgICAgICBfX3Byb3RvX186IHByb3h5LAotICAg
IH07Ci0KLSAgICBsZXQgYSA9IHt9OwotICAgIGEudGVzdDsKLX0KLWZvbygpOwpJbmRleDogSlNU
ZXN0cy9zdHJlc3MvcHJveHktanNvbi1wYXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3Ry
ZXNzL3Byb3h5LWpzb24tcGF0aC5qcwkocmV2aXNpb24gMjA5MzgyKQorKysgSlNUZXN0cy9zdHJl
c3MvcHJveHktanNvbi1wYXRoLmpzCShub25leGlzdGVudCkKQEAgLTEsMjUgKzAsMCBAQAotdmFy
IHRhcmdldCA9IHsgX19wcm90b19fOiBudWxsIH07Ci12YXIgaGFuZGxlciA9IHsKLSAgICBnZXQ6
IGZ1bmN0aW9uICgpCi0gICAgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5nYCk7Ci0gICAg
fQotfTsKLQotdmFyIHRocm93biA9IG51bGw7Ci12YXIgaGVsbG8gPSA0MjsKLS8vIEFzIGEgcmVz
dWx0LCBnbG9iYWwgb2JqZWN0IGF1dG9tYXRpY2FsbHkgaW5oZXJpdCB0aGlzIHByb3h5LgotT2Jq
ZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSB7Ci0gICAgX19wcm90b19fOiBuZXcgUHJveHkodGFy
Z2V0LCBoYW5kbGVyKQotfTsKLQotdHJ5IHsKLSAgICBsb2FkU3RyaW5nKGBoZWxsbyA9IHsiaGVs
bG8iOiJ3b3JsZCJ9O3Byb3h5Lm9rID0ge31gKTsKLX0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgdGhy
b3duID0gZXJyb3I7Ci19Ci1PYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IG51bGw7Ci1pZiAo
dGhyb3duID09PSBudWxsKQotICAgIHRocm93IG5ldyBFcnJvcihgbm90IHRocm93bmApOwotaWYg
KFN0cmluZyh0aHJvd24pICE9PSBgRXJyb3I6IG5nYCkKLSAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCBlcnJvcjogJHtTdHJpbmcodGhyb3duKX1gKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Jlc3Qt
cGFyYW1ldGVyLWFsbG9jYXRpb24tZWxpbWluYXRpb24td2F0Y2hwb2ludHMtNi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9yZXN0LXBhcmFtZXRlci1hbGxvY2F0aW9uLWVsaW1pbmF0
aW9uLXdhdGNocG9pbnRzLTYuanMJKHJldmlzaW9uIDIwOTM4MikKKysrIEpTVGVzdHMvc3RyZXNz
L3Jlc3QtcGFyYW1ldGVyLWFsbG9jYXRpb24tZWxpbWluYXRpb24td2F0Y2hwb2ludHMtNi5qcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDI0ICswLDAgQEAKLWZ1bmN0aW9uIGFzc2VydChiKSB7Ci0gICAg
aWYgKCFiKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Ci19Ci1ub0lubGluZShhc3NlcnQpOwot
Ci1mdW5jdGlvbiBmb28oLi4uYXJncykgewotICAgIHJldHVybiBhcmdzWzBdOwotfQotbm9Jbmxp
bmUoZm9vKTsKLQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgLy8gV2Fy
bSBpdCB1cCBvbiBib3RoIGluIGJvdW5kIGFuZCBvdXQgb2YgYm91bmQgYWNjZXNzZXMuCi0gICAg
aWYgKGkgJSAyKQotICAgICAgICBhc3NlcnQoZm9vKGkpID09PSBpKTsKLSAgICBlbHNlCi0gICAg
ICAgIGFzc2VydChmb28oKSA9PT0gdW5kZWZpbmVkKTsKLX0KLQotbGV0IG5ld1Byb3RvID0gWzUw
XTsKLW5ld1Byb3RvLl9fcHJvdG9fXyA9IG51bGw7Ci1PYmplY3QucHJvdG90eXBlLl9fcHJvdG9f
XyA9IG5ld1Byb3RvOwotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQotICAgIGFzc2Vy
dChmb28oKSA9PT0gNTApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MDkzODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMTItMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEludHJvZHVjZSB0aGUgY29uY2VwdCBvZiBJbW11dGFibGUgUHJvdG90
eXBlIEV4b3RpYyBPYmplY3RzIHRvIGNvbXBseSB3aXRoIHRoZSBzcGVjLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjI3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yOTQ0MjY2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAtIFRoaXMgaXMgd2hl
cmUgd2UgY2hlY2sgZm9yIGltbXV0YWJsZSBwcm90b3R5cGUgZXhvdGljIG9iamVjdHMgYW5kIHJl
ZnVzZSB0byBzZXQKKyAgICAgICAgICB0aGUgcHJvdG90eXBlIGlmIG5lZWRlZC4KKyAgICAgICAg
ICBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaW1tdXRhYmxlLXByb3Rv
dHlwZS1leG90aWMtb2JqZWN0cy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgor
ICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIC0gQWRkIGZsYWcgZm9y
IGRlY2xhcmluZyBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYyBvYmplY3RzLgorCisgICAgICAg
ICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDoKKyAgICAgICAgLSBEZWNsYXJlIHRoYXQgT2Jq
ZWN0LnByb3RvdHlwZSBpcyBhbiBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYyBvYmplY3QuCisg
ICAgICAgICAgU2VlIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXByb3BlcnRp
ZXMtb2YtdGhlLW9iamVjdC1wcm90b3R5cGUtb2JqZWN0LgorCisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0
UHJvdG90eXBlT2YpOgorICAgICAgICAtIFVzZSBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCisKIDIw
MTYtMTItMDUgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHJlbW92ZSBBU1NFUlQgZnJvbSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
ZXJlZkFzeW5jQ2FsbERhdGEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHJldmlzaW9uIDIwOTM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5Myw2ICsxMzkzLDkgQEAg
Ym9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogICAgIGlmICh0aGlzLT5n
ZXRQcm90b3R5cGVEaXJlY3QoKSA9PSBwcm90b3R5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CisgICAgaWYgKHRoaXMtPnN0cnVjdHVyZSh2bSktPmlzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGlj
T2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRo
cm93SWZDYW50U2V0LCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0
YWJsZSBwcm90b3R5cGUgb2JqZWN0IikpOworCiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlz
LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CShyZXZpc2lvbiAyMDkzODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIE92ZXJyaWRlc0dldFByb3Blcgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFByb2hpYml0
c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwgMTA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgR2V0T3du
UHJvcGVydHlTbG90SXNJbXB1cmUgPSAxIDw8IDExOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5l
d0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyA9IDEgPDwgMTI7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QgPSAxIDw8IDEzOwogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlB
YnNlbmNlID0gMSA8PCAxNDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvID0gMSA8PCAxNTsKIApA
QCAtOTAsNiArOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoR2V0T3duUHJvcGVydHlTbG90SXNJ
bXB1cmUpOyB9CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoR2V0T3duUHJvcGVydHlTbG90
SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UpOyB9CiAgICAgYm9vbCBuZXdJbXB1cmVQcm9wZXJ0
eUZpcmVzV2F0Y2hwb2ludHMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKE5ld0ltcHVy
ZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyk7IH0KKyAgICBib29sIGlzSW1tdXRhYmxlUHJvdG90
eXBlRXhvdGljT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihJc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdCk7IH0KICAgICBib29sIGludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSBjb25zdCB7IHJldHVybiBp
c1NldE9uRmxhZ3MyKEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8pOyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IGZsYWdzT2Zmc2V0KCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwOTM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDExICsx
NzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogCiAgICAg
SlNWYWx1ZSBvYmplY3RWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChvYmplY3RW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIHVuZGVmaW5lZCBvciBu
dWxsIikpOwogCiAgICAgSlNWYWx1ZSBwcm90b1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAg
ICAgaWYgKCFwcm90b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJvdG90eXBl
IHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsIikpOwogCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDIwOTM4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgT2JqZWN0UHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSXNJbW11dGFibGVQcm90b3R5cGVFeG90
aWNPYmplY3Q7CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjA5MzgyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAs
MTEgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgdHlwZUluZm8oKS5uZXdJbXB1cmVQcm9wZXJ0
eUZpcmVzV2F0Y2hwb2ludHMoKTsKICAgICB9CiAKKyAgICBib29sIGlzSW1tdXRhYmxlUHJvdG90
eXBlRXhvdGljT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlSW5mbygpLmlzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0KCk7CisgICAgfQorCiAgICAgLy8gV2UgdXNlIFNs
b3dQYXRoIGluIEdldEJ5SWRTdGF0dXMgZm9yIHN0cnVjdHVyZXMgdGhhdCBtYXkgZ2V0IG5ldyBp
bXB1cmUgcHJvcGVydGllcyBsYXRlciB0byBwcmV2ZW50CiAgICAgLy8gREZHIGZyb20gaW5saW5p
bmcgcHJvcGVydHkgYWNjZXNzZXMgc2luY2Ugc3RydWN0dXJlcyBkb24ndCB0cmFuc2l0aW9uIHdo
ZW4gYSBuZXcgaW1wdXJlIHByb3BlcnR5IGFwcGVhcnMuCiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRo
SW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDkzODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
OCBAQAorMjAxNi0xMi0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBjb25jZXB0IG9mIEltbXV0YWJsZSBQcm90b3R5cGUgRXhvdGljIE9i
amVjdHMgdG8gY29tcGx5IHdpdGggdGhlIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5
NDQyNjY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgYWxsIG9iamVjdHMgaW4gd2luZG93Ll9fcHJvdG9fXydzIHByb3RvdHlwZSBjaGFpbiBp
bW11dGFibGUgcHJvdG90eXBlIGV4b3RpYworICAgICAgICBvYmplY3RzLiAgVGhpcyBnaXZlcyB1
cyByb3VnaGx5IGVxdWl2YWxlbnQgYmVoYXZpb3IgdG8gb3RoZXIgYnJvd3NlcnMuICAKKworICAg
ICAgICBGaXJlZm94J3MgYmVoYXZpb3IgZGlmZmVyIHNsaWdodGx5IGluIHRoYXQgRmlyZWZveCB3
aWxsIGZhaWwgYW55IGF0dGVtcHRlZAorICAgICAgICBhc3NpZ25tZW50IHRoZWlyIF9fcHJvdG9f
Xywgd2hpbGUgdGhlIGltbXV0YWJsZSBwcm90b3R5cGUgZXhvdGljIG9iamVjdHMgd2lsbAorICAg
ICAgICBvbmx5IGZhaWwgaWYgdGhlIGFzc2lnbm1lbnQgaXMgb2YgYSBkaWZmZXJlbnQgdmFsdWUu
ICBTZWUKKyAgICAgICAgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaW1tdXRh
YmxlLXByb3RvdHlwZS1leG90aWMtb2JqZWN0cy4KKworICAgICAgICBDaHJvbWUgZGlmZmVycyBp
biB0aGF0IGFzc2lnbm1lbnQgdG8gd2luZG93Ll9fcHJvdG9fXyBpcyBhbHNvIGhhbmRsZWQgbGlr
ZSBhbgorICAgICAgICBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYyBvYmplY3QuICBJbnN0ZWFk
IHdlIGFkaGVyZSB0byB0aGUgY3VycmVudCBIVE1MIHNwZWMKKyAgICAgICAgdGhhdCBzYXlzIHRo
YXQgdGhlIGFzc2lnbm1lbnQgc2hvdWxkIGZhaWwgdW5jb25kaXRpb25hbGx5LiAgU2VlCisgICAg
ICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS13aW5kb3dwcm94eS1leG90aWMt
b2JqZWN0IGFuZAorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN3aW5kb3dw
cm94eS1zZXRwcm90b3R5cGVvZi4KKworICAgICAgICBJZiB0aGUgSFRNTCBzcGVjIGlzIGNoYW5n
ZWQgdG8gbWFrZSB0aGUgV2luZG93UHJveHkgYW5kIExvY2F0aW9uIG9iamVjdHMgaW50bworICAg
ICAgICBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYyBvYmplY3RzIGxhdGVyLCB3ZSBjYW4gdXBk
YXRlIHRvIG1hdGNoIHRoZSBzcGVjIHRoZW4uCisKKyAgICAgICAgVGVzdDoganMvcHJvdG90eXBl
LWFzc2lnbm1lbnQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9w
ZXJ0aWVzLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaWRsOgorCiAyMDE2LTEyLTA1ICBSaWNreSBNb25kZWxsbyAgPHJtb25kZWxsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgU1RQIDE5IGZhaWxzIHRvIGxhdW5jaCBvbiAxNkIyNTUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5o
CShyZXZpc2lvbiAyMDkzODIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1Byb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVj
dCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcm90ZWN0ZWQ6CiAgICAgSlNET01XaW5kb3dQ
cm9wZXJ0aWVzKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDkzODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMTUyMiw2ICsxNTIyLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9
CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBv
aW50cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQ
cm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHN9OworICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0lt
bXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07CiAgICAgJHN0
cnVjdHVyZUZsYWdzeyJKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSJ9ID0gMSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfTsKIAogICAgICMgR2V0
dGVycwpAQCAtNTY5Niw2ICs1Njk3LDggQEAgc3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRp
b24KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xu
Iik7CiAgICAgfQogCisgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OklzSW1tdXRhYmxlUHJvdG90
eXBlRXhvdGljT2JqZWN0In0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0lzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGV9OworCiAgICAgIyBz
dHJ1Y3R1cmUgZmxhZ3MKICAgICBpZiAoJXN0cnVjdHVyZUZsYWdzKSB7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgInB1YmxpYzpcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CShyZXZpc2lvbiAyMDkzODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw2ICs3NCw4IEBAIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIElt
cGxlbWVudGF0aW9uUmV0dXJuVHlwZT0qCiBJbXBsaWNpdFRoaXMKIEludGVyZmFjZU5hbWU9Kgor
SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QKK0lzSW1tdXRhYmxlUHJvdG90eXBlRXhv
dGljT2JqZWN0T25Qcm90b3R5cGUKIElzV2Vha0NhbGxiYWNrCiBKU0J1aWx0aW4KIEpTQnVpbHRp
bkNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwJKHJldmlzaW9u
IDIwOTM4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIFsKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEV4
cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2Jq
ZWN0T25Qcm90b3R5cGUsCiAgICAgSlNDdXN0b21IZWFkZXIsCiAgICAgSlNDdXN0b21Ub05hdGl2
ZU9iamVjdCwKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHJldmlzaW9uIDIwOTM4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEltcGxpY2l0VGhpcywKICAgICBJbnRlcmZhY2VOYW1l
PVdpbmRvdywKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKKyAgICBJc0lt
bXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEpTQ3VzdG9tRGVm
aW5lT3duUHJvcGVydHksCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgSlNDdXN0b21U
b05hdGl2ZU9iamVjdCwKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTM4MikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTEyLTA1ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIGNv
bmNlcHQgb2YgSW1tdXRhYmxlIFByb3RvdHlwZSBFeG90aWMgT2JqZWN0cyB0byBjb21wbHkgd2l0
aCB0aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTIyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0NDI2NjU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBwcm90b3R5cGUt
YXNzaWdubWVudC5qcyB0ZXN0IGlzIGN1cnJlbnRseSBvbmx5IGVuYWJsZWQgZm9yIExMSW50IG9u
bHkKKyAgICAgICAgcnVuIGluIHRoZSBKU0MgdGVzdHMgdW50aWwgd2Via2l0Lm9yZy9iLzE2NTQw
MSBpcyBmaXhlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIC0gU2tp
cCBqcy9wcm90b3R5cGUtYXNzaWdubWVudC5odG1sIGZvciBub3cgdW50aWwgd2Via2l0Lm9yZy9i
LzE2NTQwMSBpcyBmaXhlZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2luZG93
LW5hbWVkLXZhbHVlT2YtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9wcm94eS1pcy1u
b3QtYWxsb3dlZC1pbi1nbG9iYWwtcHJvdG90eXBlLWNoYWluLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBqcy9kb20vcHJveHktaXMtbm90LWFsbG93ZWQtaW4tZ2xvYmFsLXByb3RvdHlwZS1jaGFp
bi5odG1sOgorICAgICAgICAtIFVwZGF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKyAgICAgICAgKiBq
cy9wcm90b3R5cGUtYXNzaWdubWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L3Byb3RvdHlwZS1hc3NpZ25tZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9wcm90b3R5cGUtYXNzaWdubWVudC5qczogQWRkZWQuCisgICAgICAgIChlbHNlKToKKyAg
ICAgICAgKHJlcG9ydEVycm9yKToKKyAgICAgICAgKHNob3VsZEVxdWFsKToKKyAgICAgICAgKHNo
b3VsZFRocm93KToKKyAgICAgICAgKHN0cmluZ2lmeSk6CisgICAgICAgIChtYWtlVGVzdElEKToK
KyAgICAgICAgKGRvSW50ZXJuYWxTZXRQcm90b3R5cGVPZik6CisgICAgICAgIChvcmRpbmFyeVNl
dFByb3RvdHlwZU9mKToKKyAgICAgICAgKHNldEltbXV0YWJsZVByb3RvdHlwZSk6CisgICAgICAg
ICh3aW5kb3dQcm94eVNldFByb3RvdHlwZU9mKToKKyAgICAgICAgKGluaXRTZXR0ZXJFeHBlY3Rh
dGlvbik6CisgICAgICAgICh0aHJvd0lmTm9FeGNlcHRpb25QZW5kaW5nKToKKyAgICAgICAgKG9i
amVjdFNldFByb3RvdHlwZU9mKToKKyAgICAgICAgKHNldFVuZGVyc2NvcmVQcm90byk6CisgICAg
ICAgIChyZWZsZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAobmV3T2JqZWN0UHJvdG8udG9T
dHJpbmcpOgorICAgICAgICAodGhpcy50ZXN0T2JqZWN0LnRhcmdldHMucHVzaC52YWx1ZSk6Cisg
ICAgICAgICh0aGlzLnRlc3RQcm94eS50YXJnZXRzLnB1c2guc2V0UHJvdG90eXBlT2YpOgorICAg
ICAgICAoU3ltYm9sKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAocnVuVGVzdHMpOgorICAg
ICAgICAqIGpzL3NldFByb3RvdHlwZU9mLWV4cGVjdGVkLnR4dDoKKwogMjAxNi0xMi0wNSAgRGF2
ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0gU2tpcCBt
b3JlIGJhZCB0ZXN0cwpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMDkzODIpCisr
KyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsNiAr
NjQwLDggQEAgd2Via2l0Lm9yZy9iLzE0MjkzNyBpZXRlc3RjZW50ZXIvSmF2YXNjcgogCiBbIERl
YnVnIF0ganMvcmVncmVzcy0xNDEwOTguaHRtbCBbIFNsb3cgXQogCit3ZWJraXQub3JnL2IvMTY1
NDAxIGpzL3Byb3RvdHlwZS1hc3NpZ25tZW50Lmh0bWwgWyBTa2lwIF0KKwogIyBJREJWZXJzaW9u
Q2hhbmdlRXZlbnQgdGVzdHMgbmVlZCB0byBiZSByZXdyaXR0ZW4gdG8gdXNlIGV2ZW50IGNvbnN0
cnVjdG9ycyBpbnN0ZWFkIG9mIGNyZWF0ZUV2ZW50LAogIyBhZnRlciB3ZSBpbXBsZW1lbnQgdGhl
IElEQlZlcnNpb25DaGFuZ2VFdmVudCBjb25zdHJ1Y3Rvci4KIHdlYmtpdC5vcmcvYi8xNDUzOTAg
c3RvcmFnZS9pbmRleGVkZGIvZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvd2luZG93LW5hbWVkLXZhbHVlT2YtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvd2luZG93LW5h
bWVkLXZhbHVlT2YtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDkzODIpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3dpbmRvdy1uYW1lZC12YWx1ZU9mLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBU
aHJldyBleGNlcHRpb246IFR5cGVFcnJvcjogSWxsZWdhbCBjb25zdHJ1Y3RvcgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFRocmV3IGV4Y2VwdGlvbjogVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHBy
b3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdAogVGhpcyBwYXNzZXMgaWYgaXQg
ZG9lc24ndCBhbGVydCB0aGUgY29udGVudHMgb2YgaW5ub2NlbnQtdmljdGltLiAgCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9wcm90b3R5cGUtYXNzaWdubWVudC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcHJvdG90eXBlLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2pzL3Byb3RvdHlwZS1hc3NpZ25tZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9w
cm90b3R5cGUtYXNzaWdubWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3By
b3RvdHlwZS1hc3NpZ25tZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvanMv
cHJvdG90eXBlLWFzc2lnbm1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJvdG90eXBl
LWFzc2lnbm1lbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvanMvc2V0UHJvdG90eXBlT2YtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3NldFByb3RvdHlwZU9mLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MzgyKQorKysg
TGF5b3V0VGVzdHMvanMvc2V0UHJvdG90eXBlT2YtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw4NyArMzAsODcgQEAgUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2YodmFsdWUsIHt9
KSBpcwogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpIGlzICh2YWx1ZSkuX19wcm90
b19fCiAKIE5vbi1Db2VyY2libGUgdmFsdWUKLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKHVu
ZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IE9iamVjdC5zZXRQcm90b3R5cGVPZihudWxsLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKHVuZGVmaW5lZCwge30p
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIHVuZGVm
aW5lZCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2YobnVsbCwge30pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIHVuZGVmaW5lZCBv
ciBudWxsLgogCiBOb24tT2JqZWN0L051bGwgcHJvdG8KIG9iamVjdCAoRnVuY3Rpb24pCi1QQVNT
IE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQ
cm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3Rv
dHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgT2JqZWN0LnNldFByb3Rv
dHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZh
bHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUg
dmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5
cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQ
cm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQ
cm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNT
IE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxs
Lgogb2JqZWN0IChGdW5jdGlvbjIpCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3Qs
IDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5z
ZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5
cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBu
dWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9y
IG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0
IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4g
b2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJv
bCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkg
YmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3Qs
IHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNh
biBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgogb2JqZWN0IChPYmplY3QpCi1QQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5
cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9m
KG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9m
KG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNh
biBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUg
Y2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVP
ZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFs
dWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5
cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5
cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQ
cm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQ
cm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgogb2Jq
ZWN0IChPYmplY3QyKQotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
amVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1Q
QVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
ZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQ
QVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BB
U1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgor
UEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxs
LgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBv
ciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9i
amVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmlu
ZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBi
ZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAoUmVnRXhwKQotUEFTUyBPYmplY3Quc2V0UHJv
dG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
ZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mg
T2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3Qs
IFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBP
YmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3Qs
IDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBi
ZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwg
dHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5
IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBv
bmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
ZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVl
IGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBl
T2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBl
IHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJv
dG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFBy
b3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAoQXJy
YXkpCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmpl
Y3QsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9i
amVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3Ry
aW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVm
aW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJv
dG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Qu
c2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQ
cm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9i
amVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQ
QVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51
bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVj
dCBvciBudWxsLgogb2JqZWN0IChFcnJvcikKLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
amVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgZmFsc2Up
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQ
cm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFBy
b3RvdHlwZU9mKG9iamVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0
IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmpl
Y3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgZmFsc2UpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBv
YmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmlu
ZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBi
ZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwg
U3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4g
b25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
amVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFs
dWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCiBvYmplY3QgKERhdGUpCi1QQVNTIE9i
amVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVl
IGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBl
T2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFs
dWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5
cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUg
dmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90
b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5z
ZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9i
amVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgog
b2JqZWN0IChOdW1iZXIpCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmplY3QsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
LVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihv
YmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgor
UEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwu
CitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51
bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0
IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4g
b2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVm
aW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5
IGJlIGFuIG9iamVjdCBvciBudWxsLgogb2JqZWN0IChCb29sZWFuKQotUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBB
U1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmpl
Y3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmpl
Y3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25s
eSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVj
dCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBv
bmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
ZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNh
biBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZh
bHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90
eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAo
U3RyaW5nKQotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwg
J3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9i
amVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9i
amVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBP
YmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxs
LgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBv
ciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBv
YmplY3Qgb3IgbnVsbC4KIAogT2JqZWN0IGFuZCBvYmplY3QgcHJvdG8KIG9iamVjdCAoRnVuY3Rp
b24pIHByb3RvIChGdW5jdGlvbikKSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9wcm94eS1pcy1u
b3QtYWxsb3dlZC1pbi1nbG9iYWwtcHJvdG90eXBlLWNoYWluLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kb20vcHJveHktaXMtbm90LWFsbG93ZWQtaW4tZ2xvYmFs
LXByb3RvdHlwZS1jaGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIwOTM4MikKKysrIExheW91
dFRlc3RzL2pzL2RvbS9wcm94eS1pcy1ub3QtYWxsb3dlZC1pbi1nbG9iYWwtcHJvdG90eXBlLWNo
YWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIgQEAKLUNPTlNPTEUg
TUVTU0FHRTogVHlwZUVycm9yOiBQcm94eSBpcyBub3QgYWxsb3dlZCBpbiB0aGUgZ2xvYmFsIHBy
b3RvdHlwZSBjaGFpbi4KLW9uZXJyb3Igc2F3IFR5cGVFcnJvcjogUHJveHkgaXMgbm90IGFsbG93
ZWQgaW4gdGhlIGdsb2JhbCBwcm90b3R5cGUgY2hhaW4uCitDYXVnaHQ6IFR5cGVFcnJvcjogQ2Fu
bm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QKIApJbmRleDog
TGF5b3V0VGVzdHMvanMvZG9tL3Byb3h5LWlzLW5vdC1hbGxvd2VkLWluLWdsb2JhbC1wcm90b3R5
cGUtY2hhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kb20vcHJveHktaXMt
bm90LWFsbG93ZWQtaW4tZ2xvYmFsLXByb3RvdHlwZS1jaGFpbi5odG1sCShyZXZpc2lvbiAyMDkz
ODIpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vcHJveHktaXMtbm90LWFsbG93ZWQtaW4tZ2xvYmFs
LXByb3RvdHlwZS1jaGFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw2IEBAIHRy
eSB7CiAKIH0gY2F0Y2ggKGUpIHsKICAgICBsb2coIkNhdWdodDogIiArIGUpOwotICAgIGxvZyhl
LnN0YWNrKTsKIH0KIAogZnVuY3Rpb24gbG9nKHMpCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcHJvdG90eXBlLWFzc2lnbm1lbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1hc3NpZ25tZW50LmpzCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtYXNzaWdubWVudC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzOCBAQAorLy9AIHJ1bkZUTE5vQ0pJVCgiLS11c2VK
SVQ9ZmFsc2UiKQorLy8gRklYTUU6IFJlbW92ZSB0aGUgIi0tdXNlSklUPWZhbHNlIiBvcHRpb24g
d2hlbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NDAxIGlzIGZp
eGVkLgorCisvLyBUaGlzIHRlc3Qgc3VpdGUgY29tcGFyZXMgdGhlIGJlaGF2aW9yIG9mIHNldHRp
bmcgdGhlIHByb3RvdHlwZSBvbiB2YXJpb3VzIHZhbHVlcworLy8gKHVzaW5nIE9iamVjdC5zZXRQ
cm90b3R5cGVPZigpLCBvYmouX19wcm90b19fIGFzc2lnbm1lbnQsIGFuZCBSZWZsZWN0LnNldFBy
b3RvdHlwZU9mKCkpCisvLyBhZ2FpbnN0IHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBFUyBzcGVj
LiAgVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNwZWNpZmllZCBhY2NvcmRpbmcKKy8vIHRvIHRoZSBz
cGVjIGlzIGV4cHJlc3NlZCBpbiBleHBlY3RhdGlvbnNGb3JPYmplY3RTZXRQcm90b3R5cGVPZiwK
Ky8vIGV4cGVjdGF0aW9uc0ZvclNldFVuZGVyc2NvcmVQcm90bywgYW5kIGV4cGVjdGF0aW9uc0Zv
clJlZmxlY3RTZXRQcm90b3R5cGVPZi4KKworCit2YXIgaW5Ccm93c2VyID0gKHR5cGVvZiB3aW5k
b3cgIT0gInVuZGVmaW5lZCIpOworCisvLyBUZXN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKK3Zh
ciB2ZXJib3NlID0gZmFsc2U7Cit2YXIgbWF4SXRlcmF0aW9ucyA9IDE7Cit2YXIgdGhyb3dPbkVh
Y2hFcnJvciA9IHRydWU7CisKK3ZhciB0ZXN0VW5kZWZpbmVkID0gdHJ1ZTsKK3ZhciB0ZXN0TnVs
bCA9IHRydWU7Cit2YXIgdGVzdFRydWUgPSB0cnVlOwordmFyIHRlc3RGYWxzZSA9IHRydWU7Cit2
YXIgdGVzdE51bWJlcnMgPSB0cnVlOwordmFyIHRlc3RTdHJpbmcgPSB0cnVlOwordmFyIHRlc3RT
eW1ib2wgPSB0cnVlOwordmFyIHRlc3RPYmplY3QgPSB0cnVlOwordmFyIHRlc3RHbG9iYWwgPSB0
cnVlOwordmFyIHRlc3RXaW5kb3dQcm90b3MgPSBpbkJyb3dzZXI7CisKKy8vPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisvLyBFcnJvciBtZXNzYWdlczoKKworaWYgKGluQnJvd3Nlcikgewor
ICAgIGxldCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50OworICAgIGlmICh1c2VyQWdl
bnQubWF0Y2goLyBDaHJvbWVcL1swLTldKy8pKSBlbmdpbmUgPSAiY2hyb21lIjsKKyAgICBlbHNl
IGlmICh1c2VyQWdlbnQubWF0Y2goLyBGaXJlZm94XC9bMC05XSsvKSkgZW5naW5lID0gImRlZmF1
bHQiOworICAgIGVsc2UgZW5naW5lID0gInNhZmFyaSI7Cit9IGVsc2UKKyAgICBlbmdpbmUgPSAi
anNjIjsKKworLy8gU2V0IGRlZmF1bHQgZXJyb3IgbWVzc2FnZXMgYW5kIHRoZW4gb3ZlcnJpZGUg
d2l0aCBlbmdpbmUgc3BlY2lmaWMgb25lcyBiZWxvdy4KK0RlZmF1bHRUeXBlRXJyb3IgPSAiVHlw
ZUVycm9yOiAiOworQ2Fubm90U2V0UHJvdG90eXBlT2ZJbW11dGFibGVQcm90b3R5cGVPYmplY3Qg
PSBEZWZhdWx0VHlwZUVycm9yOworQ2Fubm90U2V0UHJvdG90eXBlT2ZUaGlzT2JqZWN0ID0gRGVm
YXVsdFR5cGVFcnJvcjsKK0Nhbm5vdFNldFByb3RvdHlwZU9mVW5kZWZpbmVkT3JOdWxsID0gRGVm
YXVsdFR5cGVFcnJvcjsKK0Nhbm5vdFNldFByb3RvdHlwZU9mTm9uT2JqZWN0ID0gRGVmYXVsdFR5
cGVFcnJvcjsKK1Byb3RvdHlwZVZhbHVlQ2FuT25seUJlQW5PYmplY3RPck51bGwgPSBEZWZhdWx0
VHlwZUVycm9yOworT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yID0gRGVm
YXVsdFR5cGVFcnJvcjsKK1JlZmxlY3RTZXRQcm90b3R5cGVPZlJlcXVpcmVzVGhlRmlyc3RBcmd1
bWVudEJlQW5PYmplY3QgPSBEZWZhdWx0VHlwZUVycm9yOworUmVmbGVjdFNldFByb3RvdHlwZU9m
UmVxdWlyZXNUaGVTZWNvbmRBcmd1bWVudEJlQW5PYmplY3RPck51bGwgPSBEZWZhdWx0VHlwZUVy
cm9yOworCitpZiAoZW5naW5lID09ICJqc2MiIHx8IGVuZ2luZSA9PT0gInNhZmFyaSIpIHsKKyAg
ICBDYW5ub3RTZXRQcm90b3R5cGVPZkltbXV0YWJsZVByb3RvdHlwZU9iamVjdCA9ICJUeXBlRXJy
b3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0IjsK
KyAgICBDYW5ub3RTZXRQcm90b3R5cGVPZlRoaXNPYmplY3QgPSAiVHlwZUVycm9yOiBDYW5ub3Qg
c2V0IHByb3RvdHlwZSBvZiB0aGlzIG9iamVjdCI7CisgICAgQ2Fubm90U2V0UHJvdG90eXBlT2ZV
bmRlZmluZWRPck51bGwgPSAiVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRl
ZmluZWQgb3IgbnVsbCI7CisgICAgQ2Fubm90U2V0UHJvdG90eXBlT2ZOb25PYmplY3QgPSAiVHlw
ZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBub24tb2JqZWN0IjsKKyAgICBQcm90b3R5
cGVWYWx1ZUNhbk9ubHlCZUFuT2JqZWN0T3JOdWxsID0gIlR5cGVFcnJvcjogUHJvdG90eXBlIHZh
bHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsIjsKKyAgICBPYmplY3RQcm90b0NhbGxl
ZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IgPSAiVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9f
cHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiOworICAgIFJlZmxlY3RTZXRQcm90
b3R5cGVPZlJlcXVpcmVzVGhlRmlyc3RBcmd1bWVudEJlQW5PYmplY3QgPSAiVHlwZUVycm9yOiBS
ZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiOworICAgIFJlZmxlY3RTZXRQcm90b3R5cGVPZlJlcXVpcmVzVGhlU2Vjb25kQXJndW1l
bnRCZUFuT2JqZWN0T3JOdWxsID0gIlR5cGVFcnJvcjogUmVmbGVjdC5zZXRQcm90b3R5cGVPZiBy
ZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCI7
Cit9IGVsc2UgaWYgKGVuZ2luZSA9PT0gImNocm9tZSIpIHsKKyAgICBDYW5ub3RTZXRQcm90b3R5
cGVPZkltbXV0YWJsZVByb3RvdHlwZU9iamVjdCA9ICJUeXBlRXJyb3I6IEltbXV0YWJsZSBwcm90
b3R5cGUgb2JqZWN0ICI7Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBV
dGlsaXR5IGZ1bmN0aW9uczoKKworaWYgKGluQnJvd3NlcikKKyAgICBwcmludCA9IGNvbnNvbGUu
bG9nOworCitmdW5jdGlvbiByZXBvcnRFcnJvcihlcnJvck1lc3NhZ2UpIHsKKyAgICBpZiAodGhy
b3dPbkVhY2hFcnJvcikKKyAgICAgICAgdGhyb3cgZXJyb3JNZXNzYWdlOworICAgIGVsc2UKKyAg
ICAgICAgcHJpbnQoZXJyb3JNZXNzYWdlKTsKK30KKworZnVuY3Rpb24gc2hvdWxkRXF1YWwodGVz
dElELCByZXN1bHRUeXBlLCBhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPSBl
eHBlY3RlZCkKKyAgICAgICAgcmVwb3J0RXJyb3IoIkVSUk9SIGluICIgKyByZXN1bHRUeXBlCisg
ICAgICAgICAgICArICI6IGV4cGVjdCAiICsgc3RyaW5naWZ5KGV4cGVjdGVkKSArICIsIGFjdHVh
bCAiICsgc3RyaW5naWZ5KGFjdHVhbCkKKyAgICAgICAgICAgICsgIiBpbiB0ZXN0OiAiICsgdGVz
dElELnNpZ25hdHVyZSArICIgb24gaXRlcmF0aW9uICIgKyB0ZXN0SUQuaXRlcmF0aW9uKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3codGVzdElELCByZXN1bHRUeXBlLCBhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgbGV0IGFjdHVhbFN0ciA9ICIiICsgYWN0dWFsOworICAgIGlmICghYWN0dWFs
U3RyLnN0YXJ0c1dpdGgoZXhwZWN0ZWQpKQorICAgICAgICByZXBvcnRFcnJvcigiRVJST1IgaW4g
IiArIHJlc3VsdFR5cGUKKyAgICAgICAgICAgICsgIjogZXhwZWN0ICIgKyBleHBlY3RlZCArICIs
IGFjdHVhbCAiICsgYWN0dWFsCisgICAgICAgICAgICArICIgaW4gdGVzdDogIiArIHRlc3RJRC5z
aWduYXR1cmUgKyAiIG9uIGl0ZXJhdGlvbiAiICsgdGVzdElELml0ZXJhdGlvbik7Cit9CisKK2Z1
bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZSkgeworICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gInN0cmlu
ZyIpIHJldHVybiAnIicgKyB2YWx1ZSArICciJzsKKyAgICBpZiAodHlwZW9mIHZhbHVlID09ICJz
eW1ib2wiKSByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKworICAgIGlmICh2YWx1ZSA9PT0gb3Jp
Z0dsb2JhbFByb3RvKSByZXR1cm4gIm9yaWdHbG9iYWxQcm90byI7IAorICAgIGlmICh2YWx1ZSA9
PT0gb3JpZ09iamVjdFByb3RvKSByZXR1cm4gIm9yaWdPYmplY3RQcm90byI7IAorICAgIGlmICh2
YWx1ZSA9PT0gbmV3T2JqZWN0UHJvdG8pIHJldHVybiAibmV3T2JqZWN0UHJvdG8iOworICAgIGlm
ICh2YWx1ZSA9PT0gcHJveHlPYmplY3QpIHJldHVybiAicHJveHlPYmplY3QiOworCisgICAgaWYg
KHZhbHVlID09PSBudWxsKSByZXR1cm4gIm51bGwiOworICAgIGlmICh0eXBlb2YgdmFsdWUgPT0g
Im9iamVjdCIpIHJldHVybiAib2JqZWN0IjsgCisgICAgcmV0dXJuICIiICsgdmFsdWU7Cit9CisK
K2Z1bmN0aW9uIG1ha2VUZXN0SUQoaW5kZXgsIGl0ZXJhdGlvbiwgdGFyZ2V0TmFtZSwgcHJvdG9U
b1NldCwgcHJvdG9TZXR0ZXIsIGV4cGVjdGVkKSB7CisgICAgbGV0IHRlc3RJRCA9IHt9OworICAg
IHRlc3RJRC5zaWduYXR1cmUgPSAiWyIgKyBpbmRleCArICJdICIKKyAgICAgICAgKyBwcm90b1Nl
dHRlci5hY3Rpb25OYW1lICsgInwiCisgICAgICAgICsgdGFyZ2V0TmFtZSArICJ8IgorICAgICAg
ICArIHN0cmluZ2lmeShwcm90b1RvU2V0KSArICJ8IgorICAgICAgICArIHN0cmluZ2lmeShleHBl
Y3RlZC5yZXN1bHQpICsgInwiCisgICAgICAgICsgc3RyaW5naWZ5KGV4cGVjdGVkLnByb3RvKSAr
ICJ8IgorICAgICAgICArIHN0cmluZ2lmeShleHBlY3RlZC5leGNlcHRpb24pOworICAgIHRlc3RJ
RC5pdGVyYXRpb24gPSBpdGVyYXRpb247CisgICAgcmV0dXJuIHRlc3RJRDsKK30KKworLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEZ1bmN0aW9ucyB0byBleHByZXNzIHRoZSBleHBl
Y3RhdGlvbnMgb2YgdGhlIEVTIHNwZWNpZmljYXRpb246CisKK2Z1bmN0aW9uIGRvSW50ZXJuYWxT
ZXRQcm90b3R5cGVPZihyZXN1bHQsIHRhcmdldCwgb3JpZ1Byb3RvLCBuZXdQcm90bykgeworICAg
IGlmICghdGFyZ2V0LnNldFByb3RvdHlwZU9mKSB7CisgICAgICAgIHJlc3VsdC5zdWNjZXNzID0g
dHJ1ZTsKKyAgICAgICAgcmVzdWx0LmV4Y2VwdGlvbiA9IHVuZGVmaW5lZDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICB0YXJnZXQuc2V0UHJvdG90eXBlT2YocmVzdWx0LCBvcmlnUHJvdG8s
IG5ld1Byb3RvKTsKK30KKworLy8gOS4xLjIuMSBPcmRpbmFyeVNldFByb3RvdHlwZU9mICggTywg
ViApCisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXNldHBy
b3RvdHlwZW9mCitmdW5jdGlvbiBvcmRpbmFyeVNldFByb3RvdHlwZU9mKHJlc3VsdCwgY3VycmVu
dFByb3RvLCBuZXdQcm90bykgeworICAgIC8vIDkuMS4yLjEtNCBJZiBTYW1lVmFsdWUoViwgY3Vy
cmVudCkgaXMgdHJ1ZSwgcmV0dXJuIHRydWUuCisgICAgaWYgKG5ld1Byb3RvID09PSBjdXJyZW50
UHJvdG8pIHsKKyAgICAgICAgcmVzdWx0LnN1Y2Nlc3MgPSB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIC8vIDkuMS4yLjEtNSBbZXh0ZW5zaWJpbGl0eSBjaGVjayBub3QgdGVzdGVk
IGhlcmVdCisgICAgLy8gOS4xLjIuMS04IFtjeWNsZSBjaGVjayBub3QgdGVzdGVkIGhlcmVdCisg
ICAgcmVzdWx0LnN1Y2Nlc3MgPSB0cnVlOworfQorCisvLyA5LjQuNy4yIFNldEltbXV0YWJsZVBy
b3RvdHlwZSAoIE8sIFYgKQorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMt
c2V0LWltbXV0YWJsZS1wcm90b3R5cGUKK2Z1bmN0aW9uIHNldEltbXV0YWJsZVByb3RvdHlwZShy
ZXN1bHQsIGN1cnJlbnRQcm90bywgbmV3UHJvdG8pIHsKKyAgICBpZiAobmV3UHJvdG8gPT09IGN1
cnJlbnRQcm90bykgeworICAgICAgICByZXN1bHQuc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgcmVzdWx0LnN1Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXN1bHQuZXhj
ZXB0aW9uID0gQ2Fubm90U2V0UHJvdG90eXBlT2ZJbW11dGFibGVQcm90b3R5cGVPYmplY3Q7Cit9
CisKKy8vIEhUTUwgc3BlYzogNy40LjIgW1tTZXRQcm90b3R5cGVPZl1dICggViApCisvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN3aW5kb3dwcm94eS1zZXRwcm90b3R5cGVvZgorZnVu
Y3Rpb24gd2luZG93UHJveHlTZXRQcm90b3R5cGVPZihyZXN1bHQsIGN1cnJlbnRQcm90bywgbmV3
UHJvdG8pIHsKKyAgICByZXN1bHQuc3VjY2VzcyA9IGZhbHNlOworICAgIHJlc3VsdC5leGNlcHRp
b24gPSBDYW5ub3RTZXRQcm90b3R5cGVPZlRoaXNPYmplY3Q7Cit9CisKKwordmFyIGNvdW50ID0g
MDsKK2Z1bmN0aW9uIGluaXRTZXR0ZXJFeHBlY3RhdGlvbih0YXJnZXQsIG5ld1Byb3RvKSB7Cisg
ICAgdmFyIHRhcmdldFZhbHVlID0gdGFyZ2V0LnZhbHVlKCk7CisgICAgdmFyIG9yaWdQcm90byA9
IHVuZGVmaW5lZDsKKyAgICBpZiAodGFyZ2V0VmFsdWUgIT0gbnVsbCAmJiB0YXJnZXRWYWx1ZSAh
PSB1bmRlZmluZWQpCisgICAgICAgIG9yaWdQcm90byA9IHRhcmdldFZhbHVlLl9fcHJvdG9fXzsg
Ly8gRGVmYXVsdCB0byBvbGQgcHJvdG8uCisKKyAgICB2YXIgZXhwZWN0ZWQgPSB7fTsKKyAgICBl
eHBlY3RlZC50YXJnZXRWYWx1ZSA9IHRhcmdldFZhbHVlOworICAgIGV4cGVjdGVkLm9yaWdQcm90
byA9IG9yaWdQcm90bzsKKyAgICBleHBlY3RlZC5leGNlcHRpb24gPSB1bmRlZmluZWQ7CisgICAg
ZXhwZWN0ZWQucHJvdG8gPSBvcmlnUHJvdG87CisgICAgZXhwZWN0ZWQucmVzdWx0ID0gdW5kZWZp
bmVkOworCisgICAgcmV0dXJuIGV4cGVjdGVkOworfQorCisvLyAxOS4xLjIuMjEgT2JqZWN0LnNl
dFByb3RvdHlwZU9mICggTywgcHJvdG8gKQorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mCitmdW5jdGlvbiBvYmplY3RTZXRQcm90b3R5
cGVPZih0YXJnZXQsIG5ld1Byb3RvKSB7CisgICAgbGV0IGV4cGVjdGVkID0gaW5pdFNldHRlckV4
cGVjdGF0aW9uKHRhcmdldCwgbmV3UHJvdG8pOworICAgIHZhciB0YXJnZXRWYWx1ZSA9IGV4cGVj
dGVkLnRhcmdldFZhbHVlOworICAgIHZhciBvcmlnUHJvdG8gPSBleHBlY3RlZC5vcmlnUHJvdG87
CisKKyAgICBmdW5jdGlvbiB0aHJvd0lmTm9FeGNlcHRpb25QZW5kaW5nKGUpIHsKKyAgICAgICAg
aWYgKCFleHBlY3RlZC5leGNlcHRpb24pCisgICAgICAgICAgICBleHBlY3RlZC5leGNlcHRpb24g
PSBlOworICAgIH0KKworICAgIC8vIDE5LjEuMi4yMS0xIExldCBPIGJlID8gUmVxdWlyZU9iamVj
dENvZXJjaWJsZShPKS4KKyAgICBpZiAodGFyZ2V0VmFsdWUgPT0gdW5kZWZpbmVkIHx8IHRhcmdl
dFZhbHVlID09IG51bGwpCisgICAgICAgIHRocm93SWZOb0V4Y2VwdGlvblBlbmRpbmcoQ2Fubm90
U2V0UHJvdG90eXBlT2ZVbmRlZmluZWRPck51bGwpOworCisgICAgLy8gMTkuMS4yLjIxLTIgSWYg
VHlwZShwcm90bykgaXMgbmVpdGhlciBPYmplY3Qgbm9yIE51bGwsIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KKyAgICBpZiAodHlwZW9mIG5ld1Byb3RvICE9ICJvYmplY3QiKQorICAgICAg
ICB0aHJvd0lmTm9FeGNlcHRpb25QZW5kaW5nKFByb3RvdHlwZVZhbHVlQ2FuT25seUJlQW5PYmpl
Y3RPck51bGwpOworCisgICAgLy8gMTkuMS4yLjIxLTMgSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0
LCByZXR1cm4gTy4KKyAgICBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0VmFsdWUgIT0gIm9iamVjdCIp
CisgICAgICAgIGV4cGVjdGVkLnJlc3VsdCA9IHRhcmdldFZhbHVlOworCisgICAgLy8gMTkuMS4y
LjIxLTQgTGV0IHN0YXR1cyBiZSA/IE8uW1tTZXRQcm90b3R5cGVPZl1dKHByb3RvKS4KKyAgICBl
bHNlIHsKKyAgICAgICAgLy8gMTkuMS4yLjIxLTUgSWYgc3RhdHVzIGlzIGZhbHNlLCB0aHJvdyBh
IFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAg
ZG9JbnRlcm5hbFNldFByb3RvdHlwZU9mKHJlc3VsdCwgdGFyZ2V0LCBvcmlnUHJvdG8sIG5ld1By
b3RvKTsKKyAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKQorICAgICAgICAgICAgZXhwZWN0ZWQu
cHJvdG8gPSBuZXdQcm90bzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3dJZk5vRXhj
ZXB0aW9uUGVuZGluZyhyZXN1bHQuZXhjZXB0aW9uKTsKKworICAgICAgICAvLyAxOS4xLjIuMjEt
NiBSZXR1cm4gTy4KKyAgICAgICAgZXhwZWN0ZWQucmVzdWx0ID0gdGFyZ2V0VmFsdWU7CisgICAg
fQorCisgICAgcmV0dXJuIGV4cGVjdGVkOworfQorb2JqZWN0U2V0UHJvdG90eXBlT2YuYWN0aW9u
ID0gKG9iaiwgbmV3UHJvdG8pID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmosIG5ld1Byb3Rv
KTsKK29iamVjdFNldFByb3RvdHlwZU9mLmFjdGlvbk5hbWUgPSAiT2JqZWN0LnNldFByb3RvdHlw
ZU9mIjsKKworCisvLyBCLjIuMi4xLjIgc2V0IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fCisv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zZXQtb2JqZWN0LnByb3RvdHlw
ZS5fX3Byb3RvX18KK2Z1bmN0aW9uIHNldFVuZGVyc2NvcmVQcm90byh0YXJnZXQsIG5ld1Byb3Rv
KSB7CisgICAgbGV0IGV4cGVjdGVkID0gaW5pdFNldHRlckV4cGVjdGF0aW9uKHRhcmdldCwgbmV3
UHJvdG8pOworICAgIHZhciB0YXJnZXRWYWx1ZSA9IGV4cGVjdGVkLnRhcmdldFZhbHVlOworICAg
IHZhciBvcmlnUHJvdG8gPSBleHBlY3RlZC5vcmlnUHJvdG87CisKKyAgICBmdW5jdGlvbiB0aHJv
d0lmTm9FeGNlcHRpb25QZW5kaW5nKGUpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZC5leGNlcHRp
b24pCisgICAgICAgICAgICBleHBlY3RlZC5leGNlcHRpb24gPSBlOworICAgIH0KKworICAgIC8v
IEIuMi4yLjEuMi0xIExldCBPIGJlID8gUmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzIHZhbHVl
KS4KKyAgICBpZiAodGFyZ2V0VmFsdWUgPT0gdW5kZWZpbmVkIHx8IHRhcmdldFZhbHVlID09IG51
bGwpCisgICAgICAgIHRocm93SWZOb0V4Y2VwdGlvblBlbmRpbmcoRGVmYXVsdFR5cGVFcnJvcik7
CisKKyAgICAvLyBCLjIuMi4xLjItMiBJZiBUeXBlKHByb3RvKSBpcyBuZWl0aGVyIE9iamVjdCBu
b3IgTnVsbCwgcmV0dXJuIHVuZGVmaW5lZC4KKyAgICBpZiAodHlwZW9mIG5ld1Byb3RvICE9ICJv
YmplY3QiKQorICAgICAgICBleHBlY3RlZC5yZXN1bHQgPSB1bmRlZmluZWQ7CisgICAgCisgICAg
Ly8gQi4yLjIuMS4yLTMgSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCByZXR1cm4gdW5kZWZpbmVk
LgorICAgIGVsc2UgaWYgKHR5cGVvZiB0YXJnZXRWYWx1ZSAhPSAib2JqZWN0IikKKyAgICAgICAg
ZXhwZWN0ZWQucmVzdWx0ID0gdW5kZWZpbmVkOworCisgICAgLy8gQi4yLjIuMS4yLTQgTGV0IHN0
YXR1cyBiZSA/IE8uW1tTZXRQcm90b3R5cGVPZl1dKHByb3RvKS4KKyAgICBlbHNlIHsKKyAgICAg
ICAgLy8gQi4yLjIuMS4yLTUgSWYgc3RhdHVzIGlzIGZhbHNlLCB0aHJvdyBhIFR5cGVFcnJvciBl
eGNlcHRpb24uCisgICAgICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAgZG9JbnRlcm5hbFNl
dFByb3RvdHlwZU9mKHJlc3VsdCwgdGFyZ2V0LCBvcmlnUHJvdG8sIG5ld1Byb3RvKTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5zdWNjZXNzKQorICAgICAgICAgICAgZXhwZWN0ZWQucHJvdG8gPSBuZXdQ
cm90bzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3dJZk5vRXhjZXB0aW9uUGVuZGlu
ZyhyZXN1bHQuZXhjZXB0aW9uKTsKKworICAgICAgICAvLyBCLjIuMi4xLjItNiBSZXR1cm4gdW5k
ZWZpbmVkLgorICAgICAgICBleHBlY3RlZC5yZXN1bHQgPSB1bmRlZmluZWQ7CisgICAgfQorCisg
ICAgLy8gT3ZlcnJpZGUgdGhlIHJlc3VsdCB0byBiZSB0aGUgbmV3UHJvdG8gdmFsdWUgYmVjYXVz
ZSB0aGUgc3RhdGVtZW50IG9iai5fX3Byb3RvX18gPSB2YWx1ZQorICAgIC8vIHdpbGwgcHJvZHVj
ZSB0aGUgcmhzIHZhbHVlLCBub3QgdGhlIHJlc3VsdCBvZiB0aGUgb2JqLl9fcHJvdG9fXyBzZXR0
ZXIuCisgICAgZXhwZWN0ZWQucmVzdWx0ID0gbmV3UHJvdG87CisgICAgcmV0dXJuIGV4cGVjdGVk
OyAgICAKK30KK3NldFVuZGVyc2NvcmVQcm90by5hY3Rpb24gPSAob2JqLCBuZXdQcm90bykgPT4g
KG9iai5fX3Byb3RvX18gPSBuZXdQcm90byk7CitzZXRVbmRlcnNjb3JlUHJvdG8uYWN0aW9uTmFt
ZSA9ICJvYmouX19wcm90b19fIjsKKworCisvLyAyNi4xLjEzIFJlZmxlY3Quc2V0UHJvdG90eXBl
T2YgKCB0YXJnZXQsIHByb3RvICkKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2YKKy8vIGZ1bmN0aW9uIGV4cGVjdGF0aW9uc0ZvclJl
ZmxlY3RTZXRQcm90b3R5cGVPZih0YXJnZXQsIG5ld1Byb3RvLCB0YXJnZXRFeHBlY3RhdGlvbikg
eworZnVuY3Rpb24gcmVmbGVjdFNldFByb3RvdHlwZU9mKHRhcmdldCwgbmV3UHJvdG8pIHsKKyAg
ICBsZXQgZXhwZWN0ZWQgPSBpbml0U2V0dGVyRXhwZWN0YXRpb24odGFyZ2V0LCBuZXdQcm90byk7
CisgICAgdmFyIHRhcmdldFZhbHVlID0gZXhwZWN0ZWQudGFyZ2V0VmFsdWU7CisgICAgdmFyIG9y
aWdQcm90byA9IGV4cGVjdGVkLm9yaWdQcm90bzsKKworICAgIGZ1bmN0aW9uIHRocm93SWZOb0V4
Y2VwdGlvblBlbmRpbmcoZSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkLmV4Y2VwdGlvbikKKyAg
ICAgICAgICAgIGV4cGVjdGVkLmV4Y2VwdGlvbiA9IGU7CisgICAgfQorCisgICAgLy8gMjYuMS4x
My0xIElmIFR5cGUodGFyZ2V0KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNl
cHRpb24uCisgICAgaWYgKHRhcmdldFZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB0YXJnZXRWYWx1
ZSAhPSAib2JqZWN0IikKKyAgICAgICAgdGhyb3dJZk5vRXhjZXB0aW9uUGVuZGluZyhSZWZsZWN0
U2V0UHJvdG90eXBlT2ZSZXF1aXJlc1RoZUZpcnN0QXJndW1lbnRCZUFuT2JqZWN0KTsKKworICAg
IC8vIDI2LjEuMTMtMiBJZiBUeXBlKHByb3RvKSBpcyBub3QgT2JqZWN0IGFuZCBwcm90byBpcyBu
b3QgbnVsbCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICh0eXBlb2YgbmV3
UHJvdG8gIT0gIm9iamVjdCIpCisgICAgICAgIHRocm93SWZOb0V4Y2VwdGlvblBlbmRpbmcoUmVm
bGVjdFNldFByb3RvdHlwZU9mUmVxdWlyZXNUaGVTZWNvbmRBcmd1bWVudEJlQW5PYmplY3RPck51
bGwpOworICAgIAorICAgIC8vIDI2LjEuMTMtMyBSZXR1cm4gPyB0YXJnZXQuW1tTZXRQcm90b3R5
cGVPZl1dKHByb3RvKS4KKyAgICBsZXQgcmVzdWx0ID0ge307CisgICAgZG9JbnRlcm5hbFNldFBy
b3RvdHlwZU9mKHJlc3VsdCwgdGFyZ2V0LCBvcmlnUHJvdG8sIG5ld1Byb3RvKTsKKyAgICBleHBl
Y3RlZC5yZXN1bHQgPSByZXN1bHQuc3VjY2VzczsKKyAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpCisg
ICAgICAgIGV4cGVjdGVkLnByb3RvID0gbmV3UHJvdG87CisKKyAgICByZXR1cm4gZXhwZWN0ZWQ7
ICAgIAorfQorcmVmbGVjdFNldFByb3RvdHlwZU9mLmFjdGlvbiA9IChvYmosIG5ld1Byb3RvKSA9
PiBSZWZsZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgbmV3UHJvdG8pOworcmVmbGVjdFNldFByb3Rv
dHlwZU9mLmFjdGlvbk5hbWUgPSAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiI7CisKKworLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRlc3QgRGF0YToKKwordmFyIGdsb2JhbCA9IHRo
aXM7Cit2YXIgb3JpZ0dsb2JhbFByb3RvID0gZ2xvYmFsLl9fcHJvdG9fXzsKK3ZhciBvcmlnT2Jq
ZWN0UHJvdG8gPSB7fS5fX3Byb3RvX187Cit2YXIgcHJveHlPYmplY3QgPSBuZXcgUHJveHkoeyB9
LCB7CisgICAgc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB2YWx1ZSkgeworICAgICAgICB0aHJvdyAi
VGhyb3duIGZyb20gcHJveHkiOworICAgIH0KK30pOwordmFyIG5ld09iamVjdFByb3RvID0geyB0
b1N0cmluZygpIHsgcmV0dXJuICJuZXdPYmplY3RQcm90byI7IH0gfTsKKwordmFyIHRhcmdldHMg
PSBbXTsKKworaWYgKHRoaXMudGVzdFVuZGVmaW5lZCkgdGFyZ2V0cy5wdXNoKHsgbmFtZTogInVu
ZGVmaW5lZCIsIHZhbHVlOiAoKSA9PiB1bmRlZmluZWQgfSk7CitpZiAodGhpcy50ZXN0TnVsbCkg
ICAgICB0YXJnZXRzLnB1c2goeyBuYW1lOiAibnVsbCIsIHZhbHVlOiAoKSA9PiBudWxsIH0pOwor
aWYgKHRoaXMudGVzdFRydWUpICAgICB0YXJnZXRzLnB1c2goeyBuYW1lOiAidHJ1ZSIsIHZhbHVl
OiAoKSA9PiB0cnVlIH0pOworaWYgKHRoaXMudGVzdEZhbHNlKSAgICAgICAgdGFyZ2V0cy5wdXNo
KHsgbmFtZTogImZhbHNlIiwgdmFsdWU6ICgpID0+IGZhbHNlIH0pOworCitpZiAodGhpcy50ZXN0
TnVtYmVycykgeworICAgIHRhcmdldHMucHVzaCh7IG5hbWU6ICIwIiwgdmFsdWU6ICgpID0+IDAg
fSk7CisgICAgdGFyZ2V0cy5wdXNoKHsgbmFtZTogIjExIiwgdmFsdWU6ICgpID0+IDExIH0pOwor
ICAgIHRhcmdldHMucHVzaCh7IG5hbWU6ICIxMjMuNDU2IiwgdmFsdWU6ICgpID0+IDEyMy40NTYg
fSk7Cit9CisKK2lmICh0aGlzLnRlc3RTdHJpbmcpICAgIHRhcmdldHMucHVzaCh7IG5hbWU6ICci
ZG9oIicsIHZhbHVlOiAoKSA9PiAiZG9oIiB9KTsKK2lmICh0aGlzLnRlc3RTeW1ib2wpICAgIHRh
cmdldHMucHVzaCh7IG5hbWU6ICJTeW1ib2woZG9oKSIsIHZhbHVlOiAoKSA9PiBTeW1ib2woImRv
aCIpIH0pOworCitpZiAodGhpcy50ZXN0T2JqZWN0KSB7CisgICAgdGFyZ2V0cy5wdXNoKHsKKyAg
ICAgICAgbmFtZTogInt9IiwgCisgICAgICAgIHZhbHVlOiAoKSA9PiB7fSwKKyAgICAgICAgc2V0
UHJvdG90eXBlT2Y6IG9yZGluYXJ5U2V0UHJvdG90eXBlT2YKKyAgICB9KTsKKyAgICB0YXJnZXRz
LnB1c2goeworICAgICAgICBuYW1lOiAie30uX19wcm90b19fIiwgCisgICAgICAgIHZhbHVlOiAo
KSA9PiBvcmlnT2JqZWN0UHJvdG8sCisgICAgICAgIHNldFByb3RvdHlwZU9mOiBzZXRJbW11dGFi
bGVQcm90b3R5cGUKKyAgICB9KTsKK30KK2lmICh0aGlzLnRlc3RHbG9iYWwpIHsKKyAgICB0YXJn
ZXRzLnB1c2goeworICAgICAgICBuYW1lOiBpbkJyb3dzZXIgPyAid2luZG93IiA6ICJnbG9iYWwi
LAorICAgICAgICB2YWx1ZTogKCkgPT4gZ2xvYmFsLAorICAgICAgICBzZXRQcm90b3R5cGVPZjog
d2luZG93UHJveHlTZXRQcm90b3R5cGVPZgorICAgIH0pOworfQoraWYgKHRoaXMudGVzdFdpbmRv
d1Byb3RvcykgeworICAgIGlmIChpbkJyb3dzZXIpIHsKKyAgICAgICAgbGV0IGRlcHRoID0gMTsK
KyAgICAgICAgbGV0IHByb3RvID0gd2luZG93Ll9fcHJvdG9fXzsKKyAgICAgICAgd2hpbGUgKHBy
b3RvKSB7IAorICAgICAgICAgICAgbGV0IG5hbWUgPSAid2luZG93IjsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZGVwdGg7IGkrKykKKyAgICAgICAgICAgICAgICBuYW1lICs9ICIu
X19wcm90b19fIjsKKworICAgICAgICAgICAgbGV0IGN1cnJlbnRQcm90byA9IHByb3RvOworICAg
ICAgICAgICAgdGFyZ2V0cy5wdXNoKHsKKyAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLCAKKyAg
ICAgICAgICAgICAgICB2YWx1ZTogKCkgPT4gY3VycmVudFByb3RvLAorICAgICAgICAgICAgICAg
IHNldFByb3RvdHlwZU9mOiBzZXRJbW11dGFibGVQcm90b3R5cGUKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBwcm90byA9IHByb3RvLl9fcHJvdG9fXzsKKyAgICAgICAgICAgIGRlcHRo
Kys7CisgICAgICAgIH0KKyAgICB9Cit9CisKKwordmFyIG5ld1Byb3RvcyA9IFsKKyAgICB1bmRl
ZmluZWQsCisgICAgbnVsbCwKKyAgICB0cnVlLAorICAgIGZhbHNlLAorICAgIDAsCisgICAgMTEs
CisgICAgMTIzLjQ1NiwKKyAgICAiZG9oIiwKKyAgICBTeW1ib2woImRvaCIpLAorICAgIHt9LAor
ICAgIG9yaWdPYmplY3RQcm90bywKKyAgICBvcmlnR2xvYmFsUHJvdG8sCisgICAgbmV3T2JqZWN0
UHJvdG8KK107CisKK3ZhciBwcm90b1NldHRlcnMgPSBbCisgICAgb2JqZWN0U2V0UHJvdG90eXBl
T2YsCisgICAgc2V0VW5kZXJzY29yZVByb3RvLAorICAgIHJlZmxlY3RTZXRQcm90b3R5cGVPZiwK
K107CisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRlc3QgZHJpdmVyIGZ1
bmN0aW9uczoKKworZnVuY3Rpb24gdGVzdCh0ZXN0SUQsIHRhcmdldFZhbHVlLCBuZXdQcm90bywg
c2V0dGVyQWN0aW9uLCBleHBlY3RlZCkgeworICAgIGxldCBleGNlcHRpb24gPSB1bmRlZmluZWQ7
CisgICAgbGV0IHJlc3VsdCA9IHVuZGVmaW5lZDsKKyAgICB0cnkgeworICAgICAgICByZXN1bHQg
PSBzZXR0ZXJBY3Rpb24odGFyZ2V0VmFsdWUsIG5ld1Byb3RvKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgfQorICAgIHNob3VsZFRocm93KHRlc3RJRCwg
ImV4Y2VwdGlvbiIsIGV4Y2VwdGlvbiwgZXhwZWN0ZWQuZXhjZXB0aW9uKTsKKyAgICBpZiAoIWV4
cGVjdGVkLmV4Y2VwdGlvbikgeworICAgICAgICBzaG91bGRFcXVhbCh0ZXN0SUQsICJfX3Byb3Rv
X18iLCB0YXJnZXRWYWx1ZS5fX3Byb3RvX18sIGV4cGVjdGVkLnByb3RvKTsKKyAgICAgICAgc2hv
dWxkRXF1YWwodGVzdElELCAicmVzdWx0IiwgcmVzdWx0LCBleHBlY3RlZC5yZXN1bHQpOworICAg
IH0KK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgbGV0IHRlc3RJbmRleCA9IDA7Cisg
ICAgZm9yIChwcm90b1NldHRlciBvZiBwcm90b1NldHRlcnMpIHsKKyAgICAgICAgZm9yICh0YXJn
ZXQgb2YgdGFyZ2V0cykgeworICAgICAgICAgICAgZm9yIChuZXdQcm90byBvZiBuZXdQcm90b3Mp
IHsKKyAgICAgICAgICAgICAgICBsZXQgY3VycmVudFRlc3RJbmRleCA9IHRlc3RJbmRleCsrOwor
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4SXRlcmF0aW9uczsgaSsrKSB7
CisgICAgICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHByb3RvU2V0dGVyKHRhcmdldCwg
bmV3UHJvdG8pOworICAgICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmFsdWUgPSBleHBlY3Rl
ZC50YXJnZXRWYWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdElEID0gbWFrZVRl
c3RJRChjdXJyZW50VGVzdEluZGV4LCBpLCB0YXJnZXQubmFtZSwgbmV3UHJvdG8sIHByb3RvU2V0
dGVyLCBleHBlY3RlZCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIGkgPT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0OiAiICsgdGVzdElELnNpZ25h
dHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdCh0ZXN0SUQsIHRhcmdldFZhbHVlLCBu
ZXdQcm90bywgcHJvdG9TZXR0ZXIuYWN0aW9uLCBleHBlY3RlZCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitydW5UZXN0cygpOwo=
</data>
<flag name="review"
          id="318719"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>