<?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>176316</bug_id>
          
          <creation_ts>2017-09-03 11:48:44 -0700</creation_ts>
          <short_desc>WSL should correctly handle the interaction between casting operators and complex types</short_desc>
          <delta_ts>2018-10-13 17:03:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>Other</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>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345009</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 11:48:44 -0700</bug_when>
    <thetext>For example, we need to figure out what to do if:

typedef Foo = Bar;
operator Foo(Baz);
operator Bar(Baz);

The following should also probably work (maybe?)

typedef Foo = Bar[]
operator Foo(Baz);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345011</commentid>
    <comment_count>1</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 11:50:40 -0700</bug_when>
    <thetext>And of course, what about
operator Foo[](Bar);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345036</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 13:21:15 -0700</bug_when>
    <thetext>operator T&lt;T&gt;(T);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345749</commentid>
    <comment_count>3</comment_count>
      <attachid>319966</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 18:24:51 -0700</bug_when>
    <thetext>Created attachment 319966
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345789</commentid>
    <comment_count>4</comment_count>
      <attachid>319976</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 20:43:56 -0700</bug_when>
    <thetext>Created attachment 319976
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345799</commentid>
    <comment_count>5</comment_count>
      <attachid>319980</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 21:24:41 -0700</bug_when>
    <thetext>Created attachment 319980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345801</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 21:33:00 -0700</bug_when>
    <thetext>I guess I could test this more if I add

operator bool&lt;&gt;&lt;T&gt;(T x) {
    T defaultValue;
    return x != defaultValue;
}

Then I could test that !7 is false and !0 is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345809</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 22:04:35 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; I guess I could test this more if I add
&gt; 
&gt; operator bool&lt;&gt;&lt;T&gt;(T x) {
&gt;     T defaultValue;
&gt;     return x != defaultValue;
&gt; }
&gt; 
&gt; Then I could test that !7 is false and !0 is true.

Actually, it looks like I can&apos;t do this unless I add some sort of Comparable protocol. It would have to be:

protocol Equatable {
    bool operator==(Equatable, Equatable);
}

operator bool&lt;&gt;&lt;T:Comparable&gt;(T x) {
    T defaultValue;
    return x != defaultValue;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345810</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 22:05:10 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #7)
&gt; (In reply to Myles C. Maxfield from comment #6)
&gt; &gt; I guess I could test this more if I add
&gt; &gt; 
&gt; &gt; operator bool&lt;&gt;&lt;T&gt;(T x) {
&gt; &gt;     T defaultValue;
&gt; &gt;     return x != defaultValue;
&gt; &gt; }
&gt; &gt; 
&gt; &gt; Then I could test that !7 is false and !0 is true.
&gt; 
&gt; Actually, it looks like I can&apos;t do this unless I add some sort of Comparable
&gt; protocol. It would have to be:
&gt; 
&gt; protocol Equatable {
&gt;     bool operator==(Equatable, Equatable);
&gt; }
&gt; 
&gt; operator bool&lt;&gt;&lt;T:Comparable&gt;(T x) {
&gt;     T defaultValue;
&gt;     return x != defaultValue;
&gt; }

Whoops, got this wrong:

protocol Equatable {
    bool operator==(Equatable, Equatable);
}

operator bool&lt;&gt;&lt;T:Equatable&gt;(T x) {
    T defaultValue;
    return x != defaultValue;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345811</commentid>
    <comment_count>9</comment_count>
      <attachid>319982</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 22:18:35 -0700</bug_when>
    <thetext>Created attachment 319982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345817</commentid>
    <comment_count>10</comment_count>
      <attachid>319985</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 22:28:32 -0700</bug_when>
    <thetext>Created attachment 319985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345994</commentid>
    <comment_count>11</comment_count>
      <attachid>319985</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-06 10:28:49 -0700</bug_when>
    <thetext>Comment on attachment 319985
Patch

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

r=me with comments

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:237
&gt; +    checkCastOrCallExpression(node, cast)

Let&apos;s make &quot;cast&quot; not be a boolean.  It seems that the only use of cast is to deal with the returnType.  What if you replaced &quot;cast&quot; with &quot;returnType&quot;, and visitCastExpression would pass node.returnType while visitCallExpression passes null.

&gt; Tools/WebGPUShadingLanguageRI/ResolveOverloadImpl.js:68
&gt; +        if (returnType) {
&gt; +            if (!returnType.unify(unificationContext, func.returnType)) {
&gt; +                failures.push(new OverloadResolutionFailure(func, &quot;Return type &quot; + func.returnType + &quot; does not match &quot; + returnType));
&gt; +                continue;
&gt; +            }
&gt; +        }

Nice

&gt; Tools/WebGPUShadingLanguageRI/StandardLibrary.js:75
&gt; +const standardLibraryEpilogue = `
&gt; +operator bool&lt;&gt;&lt;T:Equatable&gt;(T x) {
&gt; +    T defaultValue;
&gt; +    return x != defaultValue;
&gt; +}
&gt; +`;

Maybe move this to StandardLibraryEpilogue, so that the start line number of it doesn&apos;t depend on the length of the prologue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346018</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-06 11:26:29 -0700</bug_when>
    <thetext>Committed r221686: &lt;http://trac.webkit.org/changeset/221686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353556</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:38:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468954</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 17:03:27 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/155</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319966</attachid>
            <date>2017-09-05 18:24:51 -0700</date>
            <delta_ts>2017-09-05 20:43:54 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176316-20170905182451.patch</filename>
            <type>text/plain</type>
            <size>18991</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRiZWU0MDQ1NDExODM1MjAyYjQ4OWZlZmUyYjMxMmY0
M2EwZjQzMy4uODA1MjY0Zjk4MDZiYjkyZGZmZTU5ZmYxYjUyYTEyN2MyMWY2MGQxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQz
IEBACiAyMDE3LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBi
ZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYXN0RXhwcmVz
c2lvbi5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZl
RnVuY0luc3RhbmNlLmpzLgorICAgICAgICAoQ2FzdEV4cHJlc3Npb24pOgorICAgICAgICAoQ2Fz
dEV4cHJlc3Npb24ucHJvdG90eXBlLmdldCBmdW5jdGlvbk5hbWUpOgorICAgICAgICAoQ2FzdEV4
cHJlc3Npb24ucHJvdG90eXBlLmdldCByZXR1cm5UeXBlKToKKyAgICAgICAgKENhc3RFeHByZXNz
aW9uLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tlci5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpz
OgorICAgICAgICAoRnVuYy5wcm90b3R5cGUudG9EZWNsU3RyaW5nKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5qczoKKyAgICAgICAgKE5hdGl2ZUZ1bmNJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6Cisg
ICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgor
ICAgICAgICAocGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAo
cGFyc2VOb25PcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAocGFyc2VH
ZW5lcmljRnVuY0RlZlZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUHJvZ3JhbS5qczoKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLnJlc29sdmVG
dW5jT3ZlcmxvYWQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVP
dmVybG9hZEltcGwuanM6CisgICAgICAgIChyZXNvbHZlT3ZlcmxvYWRJbXBsKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VHlwZURlZlJlc29sdmVyLmpzOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyKToKKyAgICAgICAg
KFR5cGVEZWZSZXNvbHZlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUudmlzaXRDYXN0RXhwcmVzc2lvbik6CisKKzIwMTctMDktMDUgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwogICAgICAgICBXU0wgc2hvdWxkIHN1
cHBvcnQgdGhlIGJvb2wgdHlwZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2Mjg1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRl
eCBlOTU1NTQxNTE2MzcxMGM2ZDZlMTEzYWE5M2RkMjYzNzNhYzhlYzM1Li5hZjE2ZmY4NzhiZmNl
NTQ1NTg0ZmJkYjk0YzMzMjM5Y2Q1N2RlNzc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsLmpzCkBAIC00MSw2ICs0MSw3IEBAIGxvYWQoIkJvb2xMaXRlcmFsLmpzIik7CiBsb2FkKCJD
YWxsQXNzaWdubWVudC5qcyIpOwogbG9hZCgiQ2FsbEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNh
bGxGdW5jdGlvbi5qcyIpOworbG9hZCgiQ2FzdEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNoZWNr
LmpzIik7CiBsb2FkKCJDaGVja0xpdGVyYWxUeXBlcy5qcyIpOwogbG9hZCgiQ2hlY2tSZXR1cm5z
LmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYXN0RXhw
cmVzc2lvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nhc3RFeHByZXNzaW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3MmUwYzUxOWZhNGEyYzE0MmIzMDhjMzlkYmRiMDM0ZjQzZjFkMmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYXN0RXhw
cmVzc2lvbi5qcwpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKKy8vIFRoaXMgaXMgYSBiaXQgb2YgYSBt
aXNub21lciwgYXMgdGhpcyByZXByZXNlbnRzIGNhc3RzIGFzIHdlbGwgYXMgY29uc3RydWN0b3Jz
LgorLy8gU3ludGFjdGljYWxseSB0aGV5IGFyZSBpZGVudGljYWw7IGEgY2FzdCBqdXN0IHRha2Vz
IG9uZSBhcmd1bWVudCB3aGVyZWFzIGEKKy8vIGNvbnN0cnVjdG9yIHRha2VzIDAtbi4KK2NsYXNz
IENhc3RFeHByZXNzaW9uIGV4dGVuZHMgQ2FsbEV4cHJlc3Npb24geworICAgIGNvbnN0cnVjdG9y
KG9yaWdpbiwgcmV0dXJuVHlwZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRMaXN0KQorICAgIHsK
KyAgICAgICAgc3VwZXIob3JpZ2luLCBDYXN0RXhwcmVzc2lvbi5mdW5jdGlvbk5hbWUsIHR5cGVB
cmd1bWVudHMsIGFyZ3VtZW50TGlzdCk7CisgICAgICAgIHRoaXMuX3JldHVyblR5cGUgPSByZXR1
cm5UeXBlOworICAgIH0KKworICAgIHN0YXRpYyBnZXQgZnVuY3Rpb25OYW1lKCkgeyByZXR1cm4g
Im9wZXJhdG9yIGNhc3QiOyB9CisgICAgCisgICAgZ2V0IHJldHVyblR5cGUoKSB7IHJldHVybiB0
aGlzLl9yZXR1cm5UeXBlOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucmV0dXJuVHlwZSArICI8IiArIHRoaXMudHlwZUFyZ3VtZW50cyArICI+KCIg
KyB0aGlzLmFyZ3VtZW50TGlzdCArICIpIjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDc2MTJkNTM4ZDMxMzg2ZWU5YzYwY2I2NGY5NmM4
N2M0OTE2ZWU2MWUuLjQ0MjMyNjEwNWNiYzAyNDIwZDRjYjI3Mjg3ZDRhNDk4NDVkOWY0YWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMjMzLDYgKzIzMyw1
OCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICByZXN1bHQg
PSBleHByZXNzaW9uLnZpc2l0KHRoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
KworICAgIHZpc2l0Q2FzdEV4cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGZvciAobGV0
IHR5cGVBcmd1bWVudCBvZiBub2RlLnR5cGVBcmd1bWVudHMpCisgICAgICAgICAgICB0eXBlQXJn
dW1lbnQudmlzaXQodGhpcyk7CisgICAgICAgIGxldCBhcmd1bWVudFR5cGVzID0gbm9kZS5hcmd1
bWVudExpc3QubWFwKGFyZ3VtZW50ID0+IHsKKyAgICAgICAgICAgIGxldCBuZXdBcmd1bWVudCA9
IGFyZ3VtZW50LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgaWYgKCFuZXdBcmd1bWVudCkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInZpc2l0b3IgcmV0dXJuZWQgbnVsbCBmb3Ig
IiArIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBUeXBlUmVmLndyYXAobmV3QXJndW1l
bnQpOworICAgICAgICB9KTsKKyAgICAgICAgbm9kZS5hcmd1bWVudFR5cGVzID0gYXJndW1lbnRU
eXBlczsKKyAgICAgICAgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KHRoaXMpOworICAgICAgICAKKyAg
ICAgICAgbGV0IG92ZXJsb2FkID0gbnVsbDsKKyAgICAgICAgbGV0IGZhaWx1cmVzID0gW107Cisg
ICAgICAgIGZvciAobGV0IHR5cGVQYXJhbWV0ZXIgb2YgdGhpcy5fY3VycmVudFN0YXRlbWVudC50
eXBlUGFyYW1ldGVycykgeworICAgICAgICAgICAgaWYgKCEodHlwZVBhcmFtZXRlciBpbnN0YW5j
ZW9mIFR5cGVWYXJpYWJsZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAoIXR5cGVQYXJhbWV0ZXIucHJvdG9jb2wpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBsZXQgc2lnbmF0dXJlcyA9CisgICAgICAgICAgICAgICAgdHlwZVBhcmFt
ZXRlci5wcm90b2NvbC5wcm90b2NvbERlY2wuc2lnbmF0dXJlc0J5TmFtZVdpdGhUeXBlVmFyaWFi
bGUobm9kZS5uYW1lLCB0eXBlUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmICghc2lnbmF0dXJl
cykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG92ZXJsb2FkID0gcmVz
b2x2ZU92ZXJsb2FkSW1wbChzaWduYXR1cmVzLCBub2RlLnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIG5vZGUucmV0dXJuVHlwZSk7CisgICAgICAgICAgICBpZiAob3ZlcmxvYWQuZnVuYykK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goLi4ub3Zl
cmxvYWQuZmFpbHVyZXMpOworICAgICAgICAgICAgb3ZlcmxvYWQgPSBudWxsOworICAgICAgICB9
CisgICAgICAgIGlmICghb3ZlcmxvYWQpIHsKKyAgICAgICAgICAgIG92ZXJsb2FkID0gdGhpcy5f
cHJvZ3JhbS5yZXNvbHZlRnVuY092ZXJsb2FkKAorICAgICAgICAgICAgICAgIG5vZGUubmFtZSwg
bm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBub2RlLnJldHVyblR5cGUpOworICAg
ICAgICAgICAgaWYgKCFvdmVybG9hZC5mdW5jKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMu
cHVzaCguLi5vdmVybG9hZC5mYWlsdXJlcyk7CisgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2Ug
PSAiRGlkIG5vdCBmaW5kIGZ1bmN0aW9uIGZvciBjYWxsIjsKKyAgICAgICAgICAgICAgICBpZiAo
ZmFpbHVyZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIsIGJ1dCBj
b25zaWRlcmVkOlxuIiArIGZhaWx1cmVzLmpvaW4oIlxuIikKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsIG1lc3NhZ2UpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1l
bnRUeXBlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGFyZ3VtZW50VHlwZSA9IGFy
Z3VtZW50VHlwZXNbaV07CisgICAgICAgICAgICBsZXQgcGFyYW1ldGVyVHlwZSA9IG92ZXJsb2Fk
LmZ1bmMucGFyYW1ldGVyc1tpXS50eXBlLnN1YnN0aXR1dGVUb1VuaWZpY2F0aW9uKAorICAgICAg
ICAgICAgICAgIG92ZXJsb2FkLmZ1bmMudHlwZVBhcmFtZXRlcnMsIG92ZXJsb2FkLnVuaWZpY2F0
aW9uQ29udGV4dCk7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXJndW1lbnRUeXBlLmVxdWFs
c1dpdGhDb21taXQocGFyYW1ldGVyVHlwZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyBub2RlLm9yaWdpbi5vcmlnaW5T
dHJpbmcgKyAiIGFyZ3VtZW50IGFuZCBwYXJhbWV0ZXIgdHlwZXMgbm90IGVxdWFsIGFmdGVyIHR5
cGUgYXJndW1lbnQgc3Vic3RpdHV0aW9uOiBhcmd1bWVudCA9ICIgKyBhcmd1bWVudFR5cGUgKyAi
LCBwYXJhbWV0ZXIgPSAiICsgcGFyYW1ldGVyVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG5vZGUucmVzb2x2ZShvdmVybG9hZCk7CisgICAgfQogICAgIAogICAgIHZpc2l0Q2FsbEV4
cHJlc3Npb24obm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwpp
bmRleCA4ZDJmZjI0ODRhNjRlODk3NjAwZWVkODdiNDcwNjQ1YmIwNTA2ZmY5Li5mOTYzMzNmZDIz
ZWY0YTQ2MTY2ODVkODIwMmY1ZjMxODk4ZWJiM2M0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0Z1bmMuanMKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRnVuYyBleHRlbmRzIE5vZGUgewog
ICAgIAogICAgIHRvRGVjbFN0cmluZygpCiAgICAgewotICAgICAgICByZXR1cm4gKHRoaXMuaXND
YXN0ID8gIiIgOiB0aGlzLnJldHVyblR5cGUgKyAiICIpICsgdGhpcy5uYW1lICsgIjwiICsgdGhp
cy50eXBlUGFyYW1ldGVycyArICI+KCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CisgICAgICAg
IHJldHVybiAodGhpcy5pc0Nhc3QgPyAib3BlcmF0b3IgIiArIHRoaXMucmV0dXJuVHlwZSA6IHRo
aXMucmV0dXJuVHlwZSArICIgIiArIHRoaXMubmFtZSkgKyAiPCIgKyB0aGlzLnR5cGVQYXJhbWV0
ZXJzICsgIj4oIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKICAgICB9CiAgICAgCiAgICAgdG9T
dHJpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZl
RnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKaW5k
ZXggMDk2NGIxZTdmMzk5ZDY0MjEzNmYyOTNhOTllZTZkZTliN2NlNjBmMC4uNDZlNjg4NWFmMDA4
MzFhMzExYTc4ZjcyZWE1NjQ4MjBhMDUwNjkzZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9OYXRpdmVGdW5jLmpzCkBAIC0yNSw3ICsyNSw3IEBACiAidXNlIHN0cmljdCI7CiAK
IGNsYXNzIE5hdGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4s
IG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBpc0Nhc3QgPSBm
YWxzZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJh
bWV0ZXJzLCBwYXJhbWV0ZXJzLCBpc0Nhc3QpCiAgICAgewogICAgICAgICBzdXBlcihvcmlnaW4s
IG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBpc0Nhc3QpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1
bmNJbnN0YW5jZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJ
bnN0YW5jZS5qcwppbmRleCA5YjdkNjY2ZDA1MjgwZjRlNDZlYWYwYzgzMGVhYzY4NmI5NzdmNzJh
Li4zMGNlYjM4ZDAwODcwMGJkZGNhOWQ5NmRjMjNmMzEwNGUwMTg3Y2JiIDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuY0luc3RhbmNlLmpzCkBAIC0y
Nyw3ICsyNyw4IEBACiBjbGFzcyBOYXRpdmVGdW5jSW5zdGFuY2UgZXh0ZW5kcyBGdW5jIHsKICAg
ICBjb25zdHJ1Y3RvcihmdW5jLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgcmV0dXJuVHlwZSwgW10sIHBhcmFtZXRl
cnMpOworICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgaXNDYXN0IGJlIGhlcmU/CisgICAg
ICAgIHN1cGVyKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIHJldHVyblR5cGUsIFtdLCBwYXJhbWV0
ZXJzLCBmYWxzZSk7CiAgICAgfQogICAgIAogICAgIGdldCBmdW5jKCkgeyByZXR1cm4gdGhpcy5f
ZnVuYzsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2Uu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCA0MjlmMDRj
NmRmYmVmNWExNjJmZWM2NmVjMzMwZjUzZTMzMDI0NzI3Li5lZmRhMDQ5NzNlYjY4MTRkNmIwMTU4
NWM2MThmNGViNmRiY2ZjZmY1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9QYXJzZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5q
cwpAQCAtMzgwLDggKzM4MCwxMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHBy
ZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkpOwogICAgICAgICBpZiAodG9rZW4g
PSB0cnlDb25zdW1lKCJAIikpCiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4
cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tl
biA9IHRyeUNvbnN1bWUoIiEiKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTG9naWNhbE5vdCh0
b2tlbiwgbmV3IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IgYm9vbCIsIFtdLCBbcGFy
c2VQb3NzaWJsZVByZWZpeCgpXSkpOworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIh
IikpIHsKKyAgICAgICAgICAgIGxldCByZW1haW5kZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7
CisgICAgICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYXN0RXhwcmVz
c2lvbihyZW1haW5kZXIub3JpZ2luLCBuZXcgVHlwZVJlZihyZW1haW5kZXIub3JpZ2luLCAiYm9v
bCIsIFtdKSwgW10sIFtyZW1haW5kZXJdKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBh
cnNlUG9zc2libGVTdWZmaXgoKTsKICAgICB9CiAgICAgCkBAIC02MjAsNDQgKzYyMiwyNyBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgIHJldHVybiBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CiAgICAgfQogCi0g
ICAgZnVuY3Rpb24gcGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMoKQotICAgIHsKLSAgICAgICAg
bGV0IHJlc3VsdCA9IHt9OwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjMxNiBDb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlv
biBiZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCi0gICAgICAgIGxl
dCBjYXN0VHlwZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgcmVz
dWx0LnJldHVyblR5cGUgPSBuZXcgVHlwZVJlZihuYW1lLCBjYXN0VHlwZSwgW10pOwotICAgICAg
ICByZXN1bHQubmFtZSA9ICJvcGVyYXRvciAiICsgY2FzdFR5cGU7Ci0gICAgICAgIHJlc3VsdC5p
c0Nhc3QgPSB0cnVlOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCkKLSAgICB7Ci0gICAgICAgIGxldCBy
ZXN1bHQgPSB7fTsKLSAgICAgICAgcmVzdWx0LnJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAg
ICAgICAgcmVzdWx0Lm9yaWdpbiA9IHJlc3VsdC5yZXR1cm5UeXBlLm9yaWdpbjsKLSAgICAgICAg
cmVzdWx0Lm5hbWUgPSBwYXJzZUZ1bmNOYW1lKCk7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJz
ZUdlbmVyaWNGdW5jRGVmVmFsdWVzKCkKKyAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWNsKCkKICAg
ICB7CisgICAgICAgIGxldCBvcmlnaW47CisgICAgICAgIGxldCByZXR1cm5UeXBlOworICAgICAg
ICBsZXQgbmFtZTsKKyAgICAgICAgbGV0IGlzQ2FzdDsKICAgICAgICAgbGV0IG9wZXJhdG9yVG9r
ZW4gPSB0cnlDb25zdW1lKCJvcGVyYXRvciIpOwogICAgICAgICBpZiAob3BlcmF0b3JUb2tlbikg
ewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7
Ci0gICAgICAgICAgICByZXN1bHQub3JpZ2luID0gb3BlcmF0b3JUb2tlbi5vcmlnaW47Ci0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgb3JpZ2luID0gb3BlcmF0b3JUb2tl
bjsKKyAgICAgICAgICAgIHJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgIG5h
bWUgPSBDYXN0RXhwcmVzc2lvbi5mdW5jdGlvbk5hbWU7CisgICAgICAgICAgICBpc0Nhc3QgPSB0
cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlw
ZSgpOworICAgICAgICAgICAgb3JpZ2luID0gcmV0dXJuVHlwZS5vcmlnaW47CisgICAgICAgICAg
ICBuYW1lID0gcGFyc2VGdW5jTmFtZSgpOworICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VGdW5jRGVjbCgpCi0gICAgewotICAgICAgICBs
ZXQgdmFsdWVzID0gcGFyc2VHZW5lcmljRnVuY0RlZlZhbHVlcygpOwogICAgICAgICBsZXQgdHlw
ZVBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGxldCBwYXJhbWV0
ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyh2YWx1ZXMu
b3JpZ2luLCB2YWx1ZXMubmFtZSwgdmFsdWVzLnJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBw
YXJhbWV0ZXJzLCB2YWx1ZXMuaXNDYXN0KTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdp
biwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzCmluZGV4IDA3YTkzM2EzMzhmNjA4Y2FiNWM2
MTUxMjg2OWZiZDlhYzIwNDAwOWEuLjcxZTNlYWZlZWEzNmJjMjEwYmFhZDk0NWU3OWY3NjVkZTUy
MTkzMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0u
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcwpAQCAtNTgs
MTMgKzU4LDEzIEBAIGNsYXNzIFByb2dyYW0gZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgdGhpcy5f
dG9wTGV2ZWxTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTsKICAgICB9CiAgICAgCi0gICAgcmVz
b2x2ZUZ1bmNPdmVybG9hZChuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQorICAg
IHJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywg
cmV0dXJuVHlwZSkKICAgICB7CiAgICAgICAgIGxldCBmdW5jdGlvbnMgPSB0aGlzLmZ1bmN0aW9u
cy5nZXQobmFtZSk7CiAgICAgICAgIGlmICghZnVuY3Rpb25zKQogICAgICAgICAgICAgcmV0dXJu
IHtmYWlsdXJlczogW119OwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIHJlc29sdmVPdmVybG9h
ZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1
bWVudFR5cGVzLCByZXR1cm5UeXBlKTsKICAgICB9CiAgICAgCiAgICAgZ2V0IG5hbWVDb250ZXh0
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVy
bG9hZEltcGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3Zlcmxv
YWRJbXBsLmpzCmluZGV4IGJiM2UyYjQwNDAxYjY1ZDE1ZjgxMWI0MWI0N2IxYTE2MmY5YTI3MGQu
Ljc5MzE0ZDU1YjM4ZmNjMmY1MDA4OGM3YjU3NTBmNjZlNzU0NTUzYzcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAidXNlIHN0cmljdCI7CiAKLWZ1bmN0aW9uIHJlc29sdmVPdmVy
bG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQorZnVuY3Rp
b24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIHJldHVyblR5cGUpCiB7CiAgICAgbGV0IGZhaWx1cmVzID0gW107CiAgICAgZm9yIChs
ZXQgZnVuYyBvZiBmdW5jdGlvbnMpIHsKQEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gcmVzb2x2
ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCiAg
ICAgICAgICAgICBsZXQgYXJndW1lbnQgPSB0eXBlQXJndW1lbnRzW2ldOwogICAgICAgICAgICAg
bGV0IHBhcmFtZXRlciA9IGZ1bmMudHlwZVBhcmFtZXRlcnNbaV07CiAgICAgICAgICAgICBpZiAo
IWFyZ3VtZW50LnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgcGFyYW1ldGVyKSkgewotICAgICAg
ICAgICAgICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVu
YywgIlR5cGUgYXJndW1lbnQgIyIgKyAoaSArIDEpICsgIiBmb3IgcGFyYW1ldGVyICIgKyBmdW5j
LnR5cGVQYXJhbWV0ZXJzLm5hbWUgKyAiIGRvZXMgbm90IG1hdGNoIChwYXNzZWQgIiArIGFyZ3Vt
ZW50ICsgIiwgcmVxdWlyZSAiICsgcGFyYW1ldGVyICsgIikiKSk7CisgICAgICAgICAgICAgICAg
ZmFpbHVyZXMucHVzaChuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiVHlwZSBh
cmd1bWVudCAjIiArIChpICsgMSkgKyAiIGZvciBwYXJhbWV0ZXIgIiArIHBhcmFtZXRlci5uYW1l
ICsgIiBkb2VzIG5vdCBtYXRjaCAocGFzc2VkICIgKyBhcmd1bWVudCArICIsIHJlcXVpcmUgIiAr
IHBhcmFtZXRlciArICIpIikpOwogICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC02MCw2ICs2MCwxMiBAQCBmdW5jdGlv
biByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRU
eXBlcykKICAgICAgICAgfQogICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChyZXR1cm5UeXBlKSB7CisgICAgICAgICAgICBpZiAoIXJldHVyblR5cGUu
dW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5jLnJldHVyblR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgZmFpbHVyZXMucHVzaChuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAi
UmV0dXJuIHR5cGUgIiArIGZ1bmMucmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJl
dHVyblR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQogICAgICAgICBpZiAoIXVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKSkgewogICAg
ICAgICAgICAgZmFpbHVyZXMucHVzaChuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5j
LCAiVmlvbGF0ZXMgdHlwZSB2YXJpYWJsZSBjb25zdHJhaW50cyIpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0
ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCBk
MjkwNzEzOTFmZGEzZjg5YTVmYmNkMGFkNmU3ZGE1ZGM4OWQ0N2U5Li45ODMxZTFmNWIzZjI4YTgz
OGFkN2MxYmRhZWFlN2M1ZjJkODc3MTg3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXdyaXRlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9SZXdyaXRlci5qcwpAQCAtMjM1LDYgKzIzNSwyNSBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAg
ICAgIHJlc3VsdC50eXBlID0gbm9kZS50eXBlID8gbm9kZS50eXBlLnZpc2l0KHRoaXMpIDogbnVs
bDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2aXNpdENhc3RFeHByZXNz
aW9uKG5vZGUpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IENhc3RFeHByZXNzaW9u
KAorICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwK
KyAgICAgICAgICAgIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5cGVB
cmd1bWVudC52aXNpdCh0aGlzKSksCisgICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdC5tYXAo
YXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpKTsKKyAgICAgICAgbGV0IGFjdHVhbFR5
cGVBcmd1bWVudHMgPSBub2RlLmFjdHVhbFR5cGVBcmd1bWVudHM7CisgICAgICAgIGlmIChhY3R1
YWxUeXBlQXJndW1lbnRzKSB7CisgICAgICAgICAgICByZXN1bHQuYWN0dWFsVHlwZUFyZ3VtZW50
cyA9CisgICAgICAgICAgICAgICAgYWN0dWFsVHlwZUFyZ3VtZW50cy5tYXAoYWN0dWFsVHlwZUFy
Z3VtZW50ID0+IGFjdHVhbFR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSk7CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IGFyZ3VtZW50VHlwZXMgPSBub2RlLmFyZ3VtZW50VHlwZXM7CisgICAgICAgIGlm
IChhcmd1bWVudFR5cGVzKQorICAgICAgICAgICAgcmVzdWx0LmFyZ3VtZW50VHlwZXMgPSBhcmd1
bWVudFR5cGVzLm1hcChhcmd1bWVudFR5cGUgPT4gYXJndW1lbnRUeXBlLnZpc2l0KHRoaXMpKTsK
KyAgICAgICAgcmVzdWx0LmZ1bmMgPSBub2RlLmZ1bmM7CisgICAgICAgIHJlc3VsdC5uYXRpdmVG
dW5jSW5zdGFuY2UgPSBub2RlLm5hdGl2ZUZ1bmNJbnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCA2NDEzNTdkNTMwYTEw
NGI1NTkxOWRkOTkyYWM0NDYxY2E0YWE1MDAyLi42ZTZiMDQ5ZDBkNDA2OWNhNmZiNDYwYTI1NDI1
NWNkZWU1ZjhjOTViIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBA
IC0xNyw2ICsxNyw3IEBACiA8c2NyaXB0IHNyYz0iQ2FsbEFzc2lnbm1lbnQuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkNhbGxFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJDYWxsRnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhc3RFeHByZXNzaW9u
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVjay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iQ2hlY2tMaXRlcmFsVHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNr
UmV0dXJucy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UeXBlRGVmUmVzb2x2ZXIuanMKaW5kZXggMmQyMGRlOTU5MDM3YjY3ZGZjZWZhOTQwOGUwNWFh
OTc4ZmI1MjE5Ny4uMWRhMTVmZDYyOTVjNTdjMzZlZDgwNmFkMmEyMTlmM2YwNmQzMzZhMSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29sdmVyLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcwpA
QCAtMzAsMTUgKzMwLDYgQEAgY2xhc3MgVHlwZURlZlJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX3Zpc2l0aW5nID0gbmV3IFZpc2l0aW5n
U2V0KCk7CiAgICAgfQotCi0gICAgdmlzaXRGdW5jRGVmKG5vZGUpCi0gICAgewotICAgICAgICBp
ZiAobm9kZS5pc0Nhc3QgJiYgbm9kZS5yZXR1cm5UeXBlLnR5cGUgaW5zdGFuY2VvZiBUeXBlRGVm
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjMxNiBDb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVu
IGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCi0gICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkNhc3Rpbmcgb3BlcmF0b3JzIGRvbid0IHdvcmsgd2l0aCB0eXBlZGVmcy4iKTsK
LSAgICAgICAgfQotICAgICAgICBzdXBlci52aXNpdEZ1bmNEZWYobm9kZSk7Ci0gICAgfQogICAg
IAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9WaXNpdG9yLmpzCmluZGV4IDFlNDk5YzUwZmYxNTZlYzI3MTJjOTZkZTU5NDhkODhiNzZi
OTQ4MTguLmQ0ZGFjNjM2OTgzMzA5YjUwZDc5ZWExNDg1NTA5OGI5MGYxY2MzNGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpAQCAtMjU1LDYgKzI1NSwxMiBAQCBj
bGFzcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICBhcmd1bWVudC52aXNpdCh0aGlzKTsKICAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2aXNpdENhc3RFeHByZXNzaW9uKG5vZGUpCisgICAg
eworICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSk7CisgICAgICAgIG5vZGUu
cmV0dXJuVHlwZS52aXNpdCh0aGlzKTsKKyAgICB9CiAKICAgICB2aXNpdExvZ2ljYWxOb3Qobm9k
ZSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319976</attachid>
            <date>2017-09-05 20:43:56 -0700</date>
            <delta_ts>2017-09-05 21:24:39 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176316-20170905204356.patch</filename>
            <type>text/plain</type>
            <size>19287</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRiZWU0MDQ1NDExODM1MjAyYjQ4OWZlZmUyYjMxMmY0
M2EwZjQzMy4uODA1MjY0Zjk4MDZiYjkyZGZmZTU5ZmYxYjUyYTEyN2MyMWY2MGQxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQz
IEBACiAyMDE3LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBi
ZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYXN0RXhwcmVz
c2lvbi5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZl
RnVuY0luc3RhbmNlLmpzLgorICAgICAgICAoQ2FzdEV4cHJlc3Npb24pOgorICAgICAgICAoQ2Fz
dEV4cHJlc3Npb24ucHJvdG90eXBlLmdldCBmdW5jdGlvbk5hbWUpOgorICAgICAgICAoQ2FzdEV4
cHJlc3Npb24ucHJvdG90eXBlLmdldCByZXR1cm5UeXBlKToKKyAgICAgICAgKENhc3RFeHByZXNz
aW9uLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tlci5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpz
OgorICAgICAgICAoRnVuYy5wcm90b3R5cGUudG9EZWNsU3RyaW5nKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5qczoKKyAgICAgICAgKE5hdGl2ZUZ1bmNJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6Cisg
ICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgor
ICAgICAgICAocGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAo
cGFyc2VOb25PcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAocGFyc2VH
ZW5lcmljRnVuY0RlZlZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUHJvZ3JhbS5qczoKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLnJlc29sdmVG
dW5jT3ZlcmxvYWQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVP
dmVybG9hZEltcGwuanM6CisgICAgICAgIChyZXNvbHZlT3ZlcmxvYWRJbXBsKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VHlwZURlZlJlc29sdmVyLmpzOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyKToKKyAgICAgICAg
KFR5cGVEZWZSZXNvbHZlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUudmlzaXRDYXN0RXhwcmVzc2lvbik6CisKKzIwMTctMDktMDUgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwogICAgICAgICBXU0wgc2hvdWxkIHN1
cHBvcnQgdGhlIGJvb2wgdHlwZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2Mjg1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRl
eCBlOTU1NTQxNTE2MzcxMGM2ZDZlMTEzYWE5M2RkMjYzNzNhYzhlYzM1Li5hZjE2ZmY4NzhiZmNl
NTQ1NTg0ZmJkYjk0YzMzMjM5Y2Q1N2RlNzc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsLmpzCkBAIC00MSw2ICs0MSw3IEBAIGxvYWQoIkJvb2xMaXRlcmFsLmpzIik7CiBsb2FkKCJD
YWxsQXNzaWdubWVudC5qcyIpOwogbG9hZCgiQ2FsbEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNh
bGxGdW5jdGlvbi5qcyIpOworbG9hZCgiQ2FzdEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNoZWNr
LmpzIik7CiBsb2FkKCJDaGVja0xpdGVyYWxUeXBlcy5qcyIpOwogbG9hZCgiQ2hlY2tSZXR1cm5z
LmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYXN0RXhw
cmVzc2lvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nhc3RFeHByZXNzaW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3MmUwYzUxOWZhNGEyYzE0MmIzMDhjMzlkYmRiMDM0ZjQzZjFkMmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYXN0RXhw
cmVzc2lvbi5qcwpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKKy8vIFRoaXMgaXMgYSBiaXQgb2YgYSBt
aXNub21lciwgYXMgdGhpcyByZXByZXNlbnRzIGNhc3RzIGFzIHdlbGwgYXMgY29uc3RydWN0b3Jz
LgorLy8gU3ludGFjdGljYWxseSB0aGV5IGFyZSBpZGVudGljYWw7IGEgY2FzdCBqdXN0IHRha2Vz
IG9uZSBhcmd1bWVudCB3aGVyZWFzIGEKKy8vIGNvbnN0cnVjdG9yIHRha2VzIDAtbi4KK2NsYXNz
IENhc3RFeHByZXNzaW9uIGV4dGVuZHMgQ2FsbEV4cHJlc3Npb24geworICAgIGNvbnN0cnVjdG9y
KG9yaWdpbiwgcmV0dXJuVHlwZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRMaXN0KQorICAgIHsK
KyAgICAgICAgc3VwZXIob3JpZ2luLCBDYXN0RXhwcmVzc2lvbi5mdW5jdGlvbk5hbWUsIHR5cGVB
cmd1bWVudHMsIGFyZ3VtZW50TGlzdCk7CisgICAgICAgIHRoaXMuX3JldHVyblR5cGUgPSByZXR1
cm5UeXBlOworICAgIH0KKworICAgIHN0YXRpYyBnZXQgZnVuY3Rpb25OYW1lKCkgeyByZXR1cm4g
Im9wZXJhdG9yIGNhc3QiOyB9CisgICAgCisgICAgZ2V0IHJldHVyblR5cGUoKSB7IHJldHVybiB0
aGlzLl9yZXR1cm5UeXBlOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucmV0dXJuVHlwZSArICI8IiArIHRoaXMudHlwZUFyZ3VtZW50cyArICI+KCIg
KyB0aGlzLmFyZ3VtZW50TGlzdCArICIpIjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDc2MTJkNTM4ZDMxMzg2ZWU5YzYwY2I2NGY5NmM4
N2M0OTE2ZWU2MWUuLjliNjljZjg0NTk5N2I3NThlZDE2M2VlMmJkN2Y4MTMyMTE5OWM3MGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMjMzLDggKzIzMyw4
IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHJlc3VsdCA9
IGV4cHJlc3Npb24udmlzaXQodGhpcyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQot
ICAgIAotICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKKworICAgIGNoZWNrQ2FzdE9yQ2Fs
bEV4cHJlc3Npb24obm9kZSwgY2FzdCkKICAgICB7CiAgICAgICAgIGZvciAobGV0IHR5cGVBcmd1
bWVudCBvZiBub2RlLnR5cGVBcmd1bWVudHMpCiAgICAgICAgICAgICB0eXBlQXJndW1lbnQudmlz
aXQodGhpcyk7CkBAIC0yNDUsNiArMjQ1LDggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0
b3IgewogICAgICAgICAgICAgcmV0dXJuIFR5cGVSZWYud3JhcChuZXdBcmd1bWVudCk7CiAgICAg
ICAgIH0pOwogICAgICAgICBub2RlLmFyZ3VtZW50VHlwZXMgPSBhcmd1bWVudFR5cGVzOworICAg
ICAgICBpZiAoY2FzdCkKKyAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKTsK
ICAgICAgICAgCiAgICAgICAgIGxldCBvdmVybG9hZCA9IG51bGw7CiAgICAgICAgIGxldCBmYWls
dXJlcyA9IFtdOwpAQCAtMjU3LDcgKzI1OSw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgICAgICB0eXBlUGFyYW1ldGVyLnByb3RvY29sLnByb3RvY29sRGVj
bC5zaWduYXR1cmVzQnlOYW1lV2l0aFR5cGVWYXJpYWJsZShub2RlLm5hbWUsIHR5cGVQYXJhbWV0
ZXIpOwogICAgICAgICAgICAgaWYgKCFzaWduYXR1cmVzKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgb3ZlcmxvYWQgPSByZXNvbHZlT3ZlcmxvYWRJbXBsKHNpZ25hdHVy
ZXMsIG5vZGUudHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcyk7CisgICAgICAgICAgICBvdmVy
bG9hZCA9IHJlc29sdmVPdmVybG9hZEltcGwoc2lnbmF0dXJlcywgbm9kZS50eXBlQXJndW1lbnRz
LCBhcmd1bWVudFR5cGVzLCBjYXN0ID8gbm9kZS5yZXR1cm5UeXBlIDogdW5kZWZpbmVkKTsKICAg
ICAgICAgICAgIGlmIChvdmVybG9hZC5mdW5jKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZmFpbHVyZXMucHVzaCguLi5vdmVybG9hZC5mYWlsdXJlcyk7CkBAIC0yNjUsNyAr
MjY3LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB9CiAgICAg
ICAgIGlmICghb3ZlcmxvYWQpIHsKICAgICAgICAgICAgIG92ZXJsb2FkID0gdGhpcy5fcHJvZ3Jh
bS5yZXNvbHZlRnVuY092ZXJsb2FkKAotICAgICAgICAgICAgICAgIG5vZGUubmFtZSwgbm9kZS50
eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAgICAgICAgICBub2RlLm5hbWUs
IG5vZGUudHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgY2FzdCA/IG5vZGUucmV0dXJuVHlw
ZSA6IHVuZGVmaW5lZCk7CiAgICAgICAgICAgICBpZiAoIW92ZXJsb2FkLmZ1bmMpIHsKICAgICAg
ICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZhaWx1cmVzKTsKICAgICAgICAg
ICAgICAgICBsZXQgbWVzc2FnZSA9ICJEaWQgbm90IGZpbmQgZnVuY3Rpb24gZm9yIGNhbGwiOwpA
QCAtMjg0LDUgKzI4NiwxNSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG5vZGUucmVzb2x2ZShvdmVybG9hZCk7CiAgICAgfQorCisg
ICAgdmlzaXRDYXN0RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
Y2hlY2tDYXN0T3JDYWxsRXhwcmVzc2lvbihub2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAg
dmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2hl
Y2tDYXN0T3JDYWxsRXhwcmVzc2lvbihub2RlLCBmYWxzZSk7CisgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwppbmRleCA4ZDJmZjI0ODRhNjRlODk3NjAwZWVkODdi
NDcwNjQ1YmIwNTA2ZmY5Li5mOTYzMzNmZDIzZWY0YTQ2MTY2ODVkODIwMmY1ZjMxODk4ZWJiM2M0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKQEAgLTQ4LDcgKzQ4LDcgQEAg
Y2xhc3MgRnVuYyBleHRlbmRzIE5vZGUgewogICAgIAogICAgIHRvRGVjbFN0cmluZygpCiAgICAg
ewotICAgICAgICByZXR1cm4gKHRoaXMuaXNDYXN0ID8gIiIgOiB0aGlzLnJldHVyblR5cGUgKyAi
ICIpICsgdGhpcy5uYW1lICsgIjwiICsgdGhpcy50eXBlUGFyYW1ldGVycyArICI+KCIgKyB0aGlz
LnBhcmFtZXRlcnMgKyAiKSI7CisgICAgICAgIHJldHVybiAodGhpcy5pc0Nhc3QgPyAib3BlcmF0
b3IgIiArIHRoaXMucmV0dXJuVHlwZSA6IHRoaXMucmV0dXJuVHlwZSArICIgIiArIHRoaXMubmFt
ZSkgKyAiPCIgKyB0aGlzLnR5cGVQYXJhbWV0ZXJzICsgIj4oIiArIHRoaXMucGFyYW1ldGVycyAr
ICIpIjsKICAgICB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0lubGluZXIuanMKaW5kZXggNmNiMTU2OGY5NjBmOGFkZmEzY2MwNGVlMjU1NWIwMTMy
MDRiZjhmYy4uZTdlODMyZTc1MWU4NTUyOTE4ZmE3YmMzNmMyM2FlYmQwOGU2YTc1MCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmVyLmpzCkBAIC01OCw1ICs1OCwxMCBAQCBj
bGFzcyBJbmxpbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgICAgIGZ1bmMucGFy
YW1ldGVycywgZnVuYy5ib2R5KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgdmlzaXRDYXN0
RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRDYWxsRXhw
cmVzc2lvbihub2RlKTsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVGdW5jLmpzCmluZGV4IDA5NjRiMWU3ZjM5OWQ2NDIxMzZmMjkzYTk5ZWU2ZGU5Yjdj
ZTYwZjAuLjQ2ZTY4ODVhZjAwODMxYTMxMWE3OGY3MmVhNTY0ODIwYTA1MDY5M2UgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcwpAQCAtMjUsNyArMjUsNyBA
QAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4dGVuZHMgRnVuYyB7Ci0gICAg
Y29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFy
YW1ldGVycywgaXNDYXN0ID0gZmFsc2UpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCBy
ZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXNDYXN0KQogICAgIHsKICAg
ICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFy
YW1ldGVycywgaXNDYXN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMKaW5kZXggOWI3ZDY2NmQwNTI4MGY0ZTQ2ZWFm
MGM4MzBlYWM2ODZiOTc3ZjcyYS4uMzBjZWIzOGQwMDg3MDBiZGRjYTlkOTZkYzIzZjMxMDRlMDE4
N2NiYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVu
Y0luc3RhbmNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1
bmNJbnN0YW5jZS5qcwpAQCAtMjcsNyArMjcsOCBAQAogY2xhc3MgTmF0aXZlRnVuY0luc3RhbmNl
IGV4dGVuZHMgRnVuYyB7CiAgICAgY29uc3RydWN0b3IoZnVuYywgcmV0dXJuVHlwZSwgcGFyYW1l
dGVycykKICAgICB7Ci0gICAgICAgIHN1cGVyKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIHJldHVy
blR5cGUsIFtdLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIGlz
Q2FzdCBiZSBoZXJlPworICAgICAgICBzdXBlcihmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCByZXR1
cm5UeXBlLCBbXSwgcGFyYW1ldGVycywgZmFsc2UpOwogICAgIH0KICAgICAKICAgICBnZXQgZnVu
YygpIHsgcmV0dXJuIHRoaXMuX2Z1bmM7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanMKaW5kZXggNDI5ZjA0YzZkZmJlZjVhMTYyZmVjNjZlYzMzMGY1M2UzMzAyNDcyNy4uZWZk
YTA0OTczZWI2ODE0ZDZiMDE1ODVjNjE4ZjRlYjZkYmNmY2ZmNSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTM4MCw4ICszODAsMTAgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgcmV0
dXJuIG5ldyBNYWtlUHRyRXhwcmVzc2lvbih0b2tlbiwgcGFyc2VQb3NzaWJsZVByZWZpeCgpKTsK
ICAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiQCIpKQogICAgICAgICAgICAgcmV0dXJu
IG5ldyBNYWtlQXJyYXlSZWZFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkp
OwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpCi0gICAgICAgICAgICByZXR1
cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYWxsRXhwcmVzc2lvbih0b2tlbiwgIm9wZXJh
dG9yIGJvb2wiLCBbXSwgW3BhcnNlUG9zc2libGVQcmVmaXgoKV0pKTsKKyAgICAgICAgaWYgKHRv
a2VuID0gdHJ5Q29uc3VtZSgiISIpKSB7CisgICAgICAgICAgICBsZXQgcmVtYWluZGVyID0gcGFy
c2VQb3NzaWJsZVByZWZpeCgpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBMb2dpY2FsTm90KHRv
a2VuLCBuZXcgQ2FzdEV4cHJlc3Npb24ocmVtYWluZGVyLm9yaWdpbiwgbmV3IFR5cGVSZWYocmVt
YWluZGVyLm9yaWdpbiwgImJvb2wiLCBbXSksIFtdLCBbcmVtYWluZGVyXSkpOworICAgICAgICB9
CiAgICAgICAgIHJldHVybiBwYXJzZVBvc3NpYmxlU3VmZml4KCk7CiAgICAgfQogICAgIApAQCAt
NjIwLDQ0ICs2MjIsMjcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gY29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KS50ZXh0OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVz
KCkKLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYgQ29ycmVjdGx5IGhh
bmRsZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBjYXN0aW5nIG9wZXJhdG9ycyBhbmQgY29tcGxl
eCB0eXBlcwotICAgICAgICBsZXQgY2FzdFR5cGUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIp
LnRleHQ7Ci0gICAgICAgIHJlc3VsdC5yZXR1cm5UeXBlID0gbmV3IFR5cGVSZWYobmFtZSwgY2Fz
dFR5cGUsIFtdKTsKLSAgICAgICAgcmVzdWx0Lm5hbWUgPSAib3BlcmF0b3IgIiArIGNhc3RUeXBl
OwotICAgICAgICByZXN1bHQuaXNDYXN0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZhbHVlcygpCi0g
ICAgewotICAgICAgICBsZXQgcmVzdWx0ID0ge307Ci0gICAgICAgIHJlc3VsdC5yZXR1cm5UeXBl
ID0gcGFyc2VUeXBlKCk7Ci0gICAgICAgIHJlc3VsdC5vcmlnaW4gPSByZXN1bHQucmV0dXJuVHlw
ZS5vcmlnaW47Ci0gICAgICAgIHJlc3VsdC5uYW1lID0gcGFyc2VGdW5jTmFtZSgpOwotICAgICAg
ICByZXN1bHQuaXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gcGFyc2VHZW5lcmljRnVuY0RlZlZhbHVlcygpCisgICAgZnVuY3Rpb24g
cGFyc2VGdW5jRGVjbCgpCiAgICAgeworICAgICAgICBsZXQgb3JpZ2luOworICAgICAgICBsZXQg
cmV0dXJuVHlwZTsKKyAgICAgICAgbGV0IG5hbWU7CisgICAgICAgIGxldCBpc0Nhc3Q7CiAgICAg
ICAgIGxldCBvcGVyYXRvclRva2VuID0gdHJ5Q29uc3VtZSgib3BlcmF0b3IiKTsKICAgICAgICAg
aWYgKG9wZXJhdG9yVG9rZW4pIHsKLSAgICAgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZU9wZXJh
dG9yRnVuY0RlZlZhbHVlcygpOwotICAgICAgICAgICAgcmVzdWx0Lm9yaWdpbiA9IG9wZXJhdG9y
VG9rZW4ub3JpZ2luOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIG9y
aWdpbiA9IG9wZXJhdG9yVG9rZW47CisgICAgICAgICAgICByZXR1cm5UeXBlID0gcGFyc2VUeXBl
KCk7CisgICAgICAgICAgICBuYW1lID0gQ2FzdEV4cHJlc3Npb24uZnVuY3Rpb25OYW1lOworICAg
ICAgICAgICAgaXNDYXN0ID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJl
dHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgIG9yaWdpbiA9IHJldHVyblR5cGUu
b3JpZ2luOworICAgICAgICAgICAgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAgICAgICAgICAg
IGlzQ2FzdCA9IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZU5vbk9wZXJh
dG9yRnVuY0RlZlZhbHVlcygpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlRnVuY0RlY2wo
KQotICAgIHsKLSAgICAgICAgbGV0IHZhbHVlcyA9IHBhcnNlR2VuZXJpY0Z1bmNEZWZWYWx1ZXMo
KTsKICAgICAgICAgbGV0IHR5cGVQYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1ldGVycygpOwog
ICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHBhcnNlUGFyYW1ldGVycygpOwotICAgICAgICByZXR1
cm4gbmV3IEZ1bmModmFsdWVzLm9yaWdpbiwgdmFsdWVzLm5hbWUsIHZhbHVlcy5yZXR1cm5UeXBl
LCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgdmFsdWVzLmlzQ2FzdCk7CisgICAgICAgIHJl
dHVybiBuZXcgRnVuYyhvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBw
YXJhbWV0ZXJzLCBpc0Nhc3QpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2xG
dW5jRGVjbCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9n
cmFtLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcwppbmRleCAw
N2E5MzNhMzM4ZjYwOGNhYjVjNjE1MTI4NjlmYmQ5YWMyMDQwMDlhLi43MWUzZWFmZWVhMzZiYzIx
MGJhYWQ5NDVlNzlmNzY1ZGU1MjE5MzFhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Byb2dyYW0uanMKQEAgLTU4LDEzICs1OCwxMyBAQCBjbGFzcyBQcm9ncmFtIGV4dGVuZHMgTm9k
ZSB7CiAgICAgICAgIHRoaXMuX3RvcExldmVsU3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7CiAg
ICAgfQogICAgIAotICAgIHJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywg
YXJndW1lbnRUeXBlcykKKyAgICByZXNvbHZlRnVuY092ZXJsb2FkKG5hbWUsIHR5cGVBcmd1bWVu
dHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiAgICAgewogICAgICAgICBsZXQgZnVuY3Rp
b25zID0gdGhpcy5mdW5jdGlvbnMuZ2V0KG5hbWUpOwogICAgICAgICBpZiAoIWZ1bmN0aW9ucykK
ICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtdfTsKICAgICAgICAgCi0gICAgICAgIHJl
dHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1l
bnRUeXBlcyk7CisgICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywg
dHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSk7CiAgICAgfQogICAgIAog
ICAgIGdldCBuYW1lQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwppbmRleCBiYjNlMmI0MDQwMWI2NWQxNWY4MTFi
NDFiNDdiMWExNjJmOWEyNzBkLi43OTMxNGQ1NWIzOGZjYzJmNTAwODhjN2I1NzUwZjY2ZTc1NDU1
M2M3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3Zl
cmxvYWRJbXBsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVP
dmVybG9hZEltcGwuanMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogInVzZSBzdHJpY3QiOwogCi1m
dW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJn
dW1lbnRUeXBlcykKK2Z1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0eXBl
QXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCByZXR1cm5UeXBlKQogewogICAgIGxldCBmYWlsdXJl
cyA9IFtdOwogICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3Rpb25zKSB7CkBAIC00Miw3ICs0Miw3
IEBAIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRz
LCBhcmd1bWVudFR5cGVzKQogICAgICAgICAgICAgbGV0IGFyZ3VtZW50ID0gdHlwZUFyZ3VtZW50
c1tpXTsKICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBmdW5jLnR5cGVQYXJhbWV0ZXJzW2ld
OwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudC51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIHBh
cmFtZXRlcikpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKG5ldyBPdmVybG9hZFJl
c29sdXRpb25GYWlsdXJlKGZ1bmMsICJUeXBlIGFyZ3VtZW50ICMiICsgKGkgKyAxKSArICIgZm9y
IHBhcmFtZXRlciAiICsgZnVuYy50eXBlUGFyYW1ldGVycy5uYW1lICsgIiBkb2VzIG5vdCBtYXRj
aCAocGFzc2VkICIgKyBhcmd1bWVudCArICIsIHJlcXVpcmUgIiArIHBhcmFtZXRlciArICIpIikp
OworICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZh
aWx1cmUoZnVuYywgIlR5cGUgYXJndW1lbnQgIyIgKyAoaSArIDEpICsgIiBmb3IgcGFyYW1ldGVy
ICIgKyBwYXJhbWV0ZXIubmFtZSArICIgZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgYXJndW1l
bnQgKyAiLCByZXF1aXJlICIgKyBwYXJhbWV0ZXIgKyAiKSIpKTsKICAgICAgICAgICAgICAgICBv
ayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNjAs
NiArNjAsMTIgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVB
cmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvaykKICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmV0dXJuVHlwZSkgeworICAgICAgICAg
ICAgaWYgKCFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5U
eXBlKSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1
dGlvbkZhaWx1cmUoZnVuYywgIlJldHVybiB0eXBlICIgKyBmdW5jLnJldHVyblR5cGUgKyAiIGRv
ZXMgbm90IG1hdGNoICIgKyByZXR1cm5UeXBlKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKCF1bmlmaWNhdGlvbkNvbnRl
eHQudmVyaWZ5KCkpIHsKICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVz
b2x1dGlvbkZhaWx1cmUoZnVuYywgIlZpb2xhdGVzIHR5cGUgdmFyaWFibGUgY29uc3RyYWludHMi
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmV3cml0ZXIuanMKaW5kZXggZDI5MDcxMzkxZmRhM2Y4OWE1ZmJjZDBhZDZlN2RhNWRjODlkNDdl
OS4uNjVmZGI3ODYyNjgxN2I5N2Q0NzRiZjMwNWVhZmEwMzRlZTY0MjNmYSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTIzNSwxMyArMjM1LDkgQEAgY2xh
c3MgUmV3cml0ZXIgewogICAgICAgICByZXN1bHQudHlwZSA9IG5vZGUudHlwZSA/IG5vZGUudHlw
ZS52aXNpdCh0aGlzKSA6IG51bGw7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAg
IAotICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKKworICAgIHByb2Nlc3NEZXJpdmVkQ2Fs
bERhdGEobm9kZSwgcmVzdWx0KQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBDYWxs
RXhwcmVzc2lvbigKLSAgICAgICAgICAgIG5vZGUub3JpZ2luLCBub2RlLm5hbWUsCi0gICAgICAg
ICAgICBub2RlLnR5cGVBcmd1bWVudHMubWFwKHR5cGVBcmd1bWVudCA9PiB0eXBlQXJndW1lbnQu
dmlzaXQodGhpcykpLAotICAgICAgICAgICAgbm9kZS5hcmd1bWVudExpc3QubWFwKGFyZ3VtZW50
ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgICAgIGxldCBhY3R1YWxUeXBlQXJndW1l
bnRzID0gbm9kZS5hY3R1YWxUeXBlQXJndW1lbnRzOwogICAgICAgICBpZiAoYWN0dWFsVHlwZUFy
Z3VtZW50cykgewogICAgICAgICAgICAgcmVzdWx0LmFjdHVhbFR5cGVBcmd1bWVudHMgPQpAQCAt
MjU0LDYgKzI1MCwyNCBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAgICAgIHJlc3VsdC5uYXRpdmVG
dW5jSW5zdGFuY2UgPSBub2RlLm5hdGl2ZUZ1bmNJbnN0YW5jZTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisKKyAgICB2aXNpdENhc3RFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IENhc3RFeHByZXNzaW9uKAorICAgICAgICAgICAgbm9kZS5v
cmlnaW4sIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwKKyAgICAgICAgICAgIG5vZGUudHlw
ZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSks
CisgICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQu
dmlzaXQodGhpcykpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0Rlcml2ZWRDYWxsRGF0
YShub2RlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5v
ZGUpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IENhbGxFeHByZXNzaW9uKAorICAg
ICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKKyAgICAgICAgICAgIG5vZGUudHlwZUFy
Z3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSksCisg
ICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlz
aXQodGhpcykpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0Rlcml2ZWRDYWxsRGF0YShu
b2RlLCByZXN1bHQpOworICAgIH0KICAgICAKICAgICB2aXNpdEZ1bmN0aW9uTGlrZUJsb2NrKG5v
ZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IDY0
MTM1N2Q1MzBhMTA0YjU1OTE5ZGQ5OTJhYzQ0NjFjYTRhYTUwMDIuLjZlNmIwNDlkMGQ0MDY5Y2E2
ZmI0NjBhMjU0MjU1Y2RlZTVmOGM5NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWwKQEAgLTE3LDYgKzE3LDcgQEAKIDxzY3JpcHQgc3JjPSJDYWxsQXNzaWdubWVudC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2Fz
dEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJDaGVja0xpdGVyYWxUeXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcwppbmRleCAyZDIwZGU5NTkwMzdiNjdkZmNl
ZmE5NDA4ZTA1YWE5NzhmYjUyMTk3Li4xZGExNWZkNjI5NWM1N2MzNmVkODA2YWQyYTIxOWYzZjA2
ZDMzNmExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVm
UmVzb2x2ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJl
c29sdmVyLmpzCkBAIC0zMCwxNSArMzAsNiBAQCBjbGFzcyBUeXBlRGVmUmVzb2x2ZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fdmlzaXRpbmcgPSBu
ZXcgVmlzaXRpbmdTZXQoKTsKICAgICB9Ci0KLSAgICB2aXNpdEZ1bmNEZWYobm9kZSkKLSAgICB7
Ci0gICAgICAgIGlmIChub2RlLmlzQ2FzdCAmJiBub2RlLnJldHVyblR5cGUudHlwZSBpbnN0YW5j
ZW9mIFR5cGVEZWYpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MzE2IENvcnJlY3RseSBoYW5kbGUgdGhlIGludGVyYWN0
aW9uIGJldHdlZW4gY2FzdGluZyBvcGVyYXRvcnMgYW5kIGNvbXBsZXggdHlwZXMKLSAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQ2FzdGluZyBvcGVyYXRvcnMgZG9uJ3Qgd29yayB3aXRoIHR5
cGVkZWZzLiIpOwotICAgICAgICB9Ci0gICAgICAgIHN1cGVyLnZpc2l0RnVuY0RlZihub2RlKTsK
LSAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggMWU0OTljNTBmZjE1NmVjMjcxMmM5NmRl
NTk0OGQ4OGI3NmI5NDgxOC4uZDRkYWM2MzY5ODMzMDliNTBkNzllYTE0ODU1MDk4YjkwZjFjYzM0
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC0yNTUsNiAr
MjU1LDEyIEBAIGNsYXNzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIGFyZ3VtZW50LnZpc2l0
KHRoaXMpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZpc2l0Q2FzdEV4cHJlc3Npb24o
bm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAg
ICAgICAgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KHRoaXMpOworICAgIH0KIAogICAgIHZpc2l0TG9n
aWNhbE5vdChub2RlKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319980</attachid>
            <date>2017-09-05 21:24:41 -0700</date>
            <delta_ts>2017-09-05 22:18:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176316-20170905212442.patch</filename>
            <type>text/plain</type>
            <size>23315</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRiZWU0MDQ1NDExODM1MjAyYjQ4OWZlZmUyYjMxMmY0
M2EwZjQzMy4uYjAwNmY4OGZhNGU4MGU3YTE4ZTkyZDM5OWRkYjYyYjU4ZDZhNjdkYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYy
IEBACiAyMDE3LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBi
ZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgc3RhbmRh
cmQgbGlicmFyeSB0byBpbmNsdWRlIGFsbCBpZGVudGl0eSBjYXN0IG9wZXJhdG9ycyBmb3IgYWxs
IGV4c3RpbmcKKyAgICAgICAgYW5kIHlldC10by1leGlzdCB0eXBlcy4gVGhlIHN0YW5kYXJkIGxp
YnJhcnkgbm93IGhhcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZToKKyAgICAgICAgb3Bl
cmF0b3IgVDw+PFQ+KFQpLiBUaGlzIG1lYW5zICJmb3IgYWxsIFQsIGRlZmluZSBhIGNhc3Qgb3Bl
cmF0b3IgZnJvbSBUIHRvIFQ8Pi4iIFRoZQorICAgICAgICBkdXBsaWNhdGUgPD5zIGxldHMgdXMg
c2F5IHRoaW5ncyBsaWtlIG9wZXJhdG9yIE91dHB1dFZlY3RvcjxUPjxUPihJbnB1dFZlY3RvcjxU
PiB4KS4KKworICAgICAgICBCZWNhdXNlIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgZG9lc24ndCBw
YXJzZSBjYXN0cyBvciBjb25zdHJ1Y3RvcnMsIHRoZXJlJ3Mgbm8gd2F5IHRvCisgICAgICAgIHRl
c3QgdGhpcyBiZXlvbmQgdGhlIGltcGxpY2l0IGNhc3RzIHVzZWQgaW4gdGhlICEgb3BlcmF0b3Iu
IFNvLCBzaW1wbHkgcmVwbGFjaW5nIHRoZQorICAgICAgICBvbGQgaWRlbnRpdHkgY2FzdHMgd2l0
aCB0aGlzIG5ldyBjYXN0IGFuZCByZS1ydW5uaW5nIGFsbCB0aGUgdGVzdHMgc2hvdWxkIGJlIGVu
b3VnaAorICAgICAgICB1bnRpbCBJIGNhbiBpbXBsZW1lbnQgY2FzdHMvY29uc3RydWN0b3JzLgor
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzOiBDb3BpZWQgZnJvbSBUb29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMuCisgICAgICAg
IChDYXN0RXhwcmVzc2lvbik6CisgICAgICAgIChDYXN0RXhwcmVzc2lvbi5wcm90b3R5cGUuZ2V0
IGZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChDYXN0RXhwcmVzc2lvbi5wcm90b3R5cGUuZ2V0IHJl
dHVyblR5cGUpOgorICAgICAgICAoQ2FzdEV4cHJlc3Npb24ucHJvdG90eXBlLnRvU3RyaW5nKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanM6CisgICAgICAgIChGdW5jLnByb3RvdHlw
ZS50b0RlY2xTdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGlu
ZXIuanM6CisgICAgICAgIChJbmxpbmVyLnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToK
KyAgICAgICAgKElubGluZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5qczoKKyAgICAgICAgKE5hdGl2ZUZ1bmNJbnN0YW5j
ZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6CisgICAgICAg
IChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgorICAgICAg
ICAocGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAocGFyc2VO
b25PcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAocGFyc2VHZW5lcmlj
RnVuY0RlZlZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUHJvZ3JhbS5qczoKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLnJlc29sdmVGdW5jT3Zl
cmxvYWQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9h
ZEltcGwuanM6CisgICAgICAgIChyZXNvbHZlT3ZlcmxvYWRJbXBsKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVyLnByb3Rv
dHlwZS5wcm9jZXNzRGVyaXZlZENhbGxEYXRhKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlw
ZS52aXNpdENhc3RFeHByZXNzaW9uKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNp
dENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanM6CisgICAgICAgIChvcGVyYXRvci5ULlQpOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanM6CisgICAgICAgIChUeXBlRGVmUmVzb2x2ZXIpOgor
ICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanM6CisgICAgICAg
IChWaXNpdG9yLnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKworMjAxNy0wOS0wNSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAgIFdTTCBz
aG91bGQgc3VwcG9ydCB0aGUgYm9vbCB0eXBlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyODUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxs
LmpzCmluZGV4IGU5NTU1NDE1MTYzNzEwYzZkNmUxMTNhYTkzZGQyNjM3M2FjOGVjMzUuLmFmMTZm
Zjg3OGJmY2U1NDU1ODRmYmRiOTRjMzMyMzljZDU3ZGU3NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9BbGwuanMKQEAgLTQxLDYgKzQxLDcgQEAgbG9hZCgiQm9vbExpdGVyYWwuanMiKTsK
IGxvYWQoIkNhbGxBc3NpZ25tZW50LmpzIik7CiBsb2FkKCJDYWxsRXhwcmVzc2lvbi5qcyIpOwog
bG9hZCgiQ2FsbEZ1bmN0aW9uLmpzIik7Citsb2FkKCJDYXN0RXhwcmVzc2lvbi5qcyIpOwogbG9h
ZCgiQ2hlY2suanMiKTsKIGxvYWQoIkNoZWNrTGl0ZXJhbFR5cGVzLmpzIik7CiBsb2FkKCJDaGVj
a1JldHVybnMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Nhc3RFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FzdEV4
cHJlc3Npb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcyZTBjNTE5ZmE0YTJjMTQyYjMwOGMzOWRiZGIwMzRm
NDNmMWQyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Nhc3RFeHByZXNzaW9uLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworLy8gVGhpcyBpcyBhIGJp
dCBvZiBhIG1pc25vbWVyLCBhcyB0aGlzIHJlcHJlc2VudHMgY2FzdHMgYXMgd2VsbCBhcyBjb25z
dHJ1Y3RvcnMuCisvLyBTeW50YWN0aWNhbGx5IHRoZXkgYXJlIGlkZW50aWNhbDsgYSBjYXN0IGp1
c3QgdGFrZXMgb25lIGFyZ3VtZW50IHdoZXJlYXMgYQorLy8gY29uc3RydWN0b3IgdGFrZXMgMC1u
LgorY2xhc3MgQ2FzdEV4cHJlc3Npb24gZXh0ZW5kcyBDYWxsRXhwcmVzc2lvbiB7CisgICAgY29u
c3RydWN0b3Iob3JpZ2luLCByZXR1cm5UeXBlLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudExpc3Qp
CisgICAgeworICAgICAgICBzdXBlcihvcmlnaW4sIENhc3RFeHByZXNzaW9uLmZ1bmN0aW9uTmFt
ZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRMaXN0KTsKKyAgICAgICAgdGhpcy5fcmV0dXJuVHlw
ZSA9IHJldHVyblR5cGU7CisgICAgfQorCisgICAgc3RhdGljIGdldCBmdW5jdGlvbk5hbWUoKSB7
IHJldHVybiAib3BlcmF0b3IgY2FzdCI7IH0KKyAgICAKKyAgICBnZXQgcmV0dXJuVHlwZSgpIHsg
cmV0dXJuIHRoaXMuX3JldHVyblR5cGU7IH0KKyAgICAKKyAgICB0b1N0cmluZygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5UeXBlICsgIjwiICsgdGhpcy50eXBlQXJndW1lbnRz
ICsgIj4oIiArIHRoaXMuYXJndW1lbnRMaXN0ICsgIikiOworICAgIH0KK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKaW5kZXggNzYxMmQ1MzhkMzEzODZlZTljNjBj
YjY0Zjk2Yzg3YzQ5MTZlZTYxZS4uOWI2OWNmODQ1OTk3Yjc1OGVkMTYzZWUyYmQ3ZjgxMzIxMTk5
YzcwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC0yMzMs
OCArMjMzLDggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
cmVzdWx0ID0gZXhwcmVzc2lvbi52aXNpdCh0aGlzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9Ci0gICAgCi0gICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQorCisgICAgY2hlY2tD
YXN0T3JDYWxsRXhwcmVzc2lvbihub2RlLCBjYXN0KQogICAgIHsKICAgICAgICAgZm9yIChsZXQg
dHlwZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKICAgICAgICAgICAgIHR5cGVBcmd1
bWVudC52aXNpdCh0aGlzKTsKQEAgLTI0NSw2ICsyNDUsOCBAQCBjbGFzcyBDaGVja2VyIGV4dGVu
ZHMgVmlzaXRvciB7CiAgICAgICAgICAgICByZXR1cm4gVHlwZVJlZi53cmFwKG5ld0FyZ3VtZW50
KTsKICAgICAgICAgfSk7CiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9IGFyZ3VtZW50VHlw
ZXM7CisgICAgICAgIGlmIChjYXN0KQorICAgICAgICAgICAgbm9kZS5yZXR1cm5UeXBlLnZpc2l0
KHRoaXMpOwogICAgICAgICAKICAgICAgICAgbGV0IG92ZXJsb2FkID0gbnVsbDsKICAgICAgICAg
bGV0IGZhaWx1cmVzID0gW107CkBAIC0yNTcsNyArMjU5LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRl
bmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHR5cGVQYXJhbWV0ZXIucHJvdG9jb2wucHJv
dG9jb2xEZWNsLnNpZ25hdHVyZXNCeU5hbWVXaXRoVHlwZVZhcmlhYmxlKG5vZGUubmFtZSwgdHlw
ZVBhcmFtZXRlcik7CiAgICAgICAgICAgICBpZiAoIXNpZ25hdHVyZXMpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBvdmVybG9hZCA9IHJlc29sdmVPdmVybG9hZEltcGwo
c2lnbmF0dXJlcywgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAg
ICAgIG92ZXJsb2FkID0gcmVzb2x2ZU92ZXJsb2FkSW1wbChzaWduYXR1cmVzLCBub2RlLnR5cGVB
cmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGNhc3QgPyBub2RlLnJldHVyblR5cGUgOiB1bmRlZmlu
ZWQpOwogICAgICAgICAgICAgaWYgKG92ZXJsb2FkLmZ1bmMpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZhaWx1cmVzKTsKQEAg
LTI2NSw3ICsyNjcsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFvdmVybG9hZCkgewogICAgICAgICAgICAgb3ZlcmxvYWQgPSB0aGlz
Ll9wcm9ncmFtLnJlc29sdmVGdW5jT3ZlcmxvYWQoCi0gICAgICAgICAgICAgICAgbm9kZS5uYW1l
LCBub2RlLnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpOworICAgICAgICAgICAgICAgIG5v
ZGUubmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBjYXN0ID8gbm9kZS5y
ZXR1cm5UeXBlIDogdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGlmICghb3ZlcmxvYWQuZnVuYykg
ewogICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goLi4ub3ZlcmxvYWQuZmFpbHVyZXMpOwog
ICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmluZCBmdW5jdGlvbiBmb3Ig
Y2FsbCI7CkBAIC0yODQsNSArMjg2LDE1IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9y
IHsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbm9kZS5yZXNvbHZlKG92ZXJsb2FkKTsKICAg
ICB9CisKKyAgICB2aXNpdENhc3RFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5jaGVja0Nhc3RPckNhbGxFeHByZXNzaW9uKG5vZGUsIHRydWUpOworICAgIH0KKyAg
ICAKKyAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5jaGVja0Nhc3RPckNhbGxFeHByZXNzaW9uKG5vZGUsIGZhbHNlKTsKKyAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCmluZGV4IDhkMmZmMjQ4NGE2NGU4OTc2
MDBlZWQ4N2I0NzA2NDViYjA1MDZmZjkuLmY5NjMzM2ZkMjNlZjRhNDYxNjY4NWQ4MjAyZjVmMzE4
OThlYmIzYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwpAQCAtNDgsNyAr
NDgsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgCiAgICAgdG9EZWNsU3RyaW5n
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAodGhpcy5pc0Nhc3QgPyAiIiA6IHRoaXMucmV0dXJu
VHlwZSArICIgIikgKyB0aGlzLm5hbWUgKyAiPCIgKyB0aGlzLnR5cGVQYXJhbWV0ZXJzICsgIj4o
IiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAgICAgICAgcmV0dXJuICh0aGlzLmlzQ2FzdCA/
ICJvcGVyYXRvciAiICsgdGhpcy5yZXR1cm5UeXBlIDogdGhpcy5yZXR1cm5UeXBlICsgIiAiICsg
dGhpcy5uYW1lKSArICI8IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJh
bWV0ZXJzICsgIikiOwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0luc3RhbnRpYXRvci5qcwppbmRleCA4NGU0N2Zl
ODVlNWM2NjI1MTI5ODI0NDg4YTdlNDgwZTAyNDllODE3Li5lNmE3ZGEwNTdiMWFiNzNmMzVhMWJi
YTAyNmU1ZTBkN2UxYWJiNjEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0Z1bmNJbnN0YW50aWF0b3IuanMKQEAgLTkyLDcgKzkyLDggQEAgY2xhc3MgRnVuY0luc3Rh
bnRpYXRvciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jSW5zdGFuY2Uo
CiAgICAgICAgICAgICAgICAgICAgIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMucmV0
dXJuVHlwZS52aXNpdChzdWJzdGl0dXRpb24pLAotICAgICAgICAgICAgICAgICAgICBmdW5jLnBh
cmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudmlzaXQoc3Vic3RpdHV0aW9uKSkp
OworICAgICAgICAgICAgICAgICAgICBmdW5jLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBw
YXJhbWV0ZXIudmlzaXQoc3Vic3RpdHV0aW9uKSksCisgICAgICAgICAgICAgICAgICAgIGZ1bmMu
aXNDYXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBsZXQgcmVzdWx0aW5n
RnVuYyA9IGZ1bmMudmlzaXQobmV3IEluc3RhbnRpYXRlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0lubGluZXIuanMKaW5kZXggNmNiMTU2OGY5NjBmOGFkZmEzY2MwNGVlMjU1NWIw
MTMyMDRiZjhmYy4uZTdlODMyZTc1MWU4NTUyOTE4ZmE3YmMzNmMyM2FlYmQwOGU2YTc1MCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmVyLmpzCkBAIC01OCw1ICs1OCwxMCBA
QCBjbGFzcyBJbmxpbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgICAgIGZ1bmMu
cGFyYW1ldGVycywgZnVuYy5ib2R5KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgdmlzaXRD
YXN0RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRDYWxs
RXhwcmVzc2lvbihub2RlKTsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IGVjMmFkYzY3MDllNzIxOGQyODJmMjRjMTlhOWY5NzA2
YmIxNjBmNmQuLmYzYWEwZDUzMDc0NGI0MjhiZDNmZjkyNzE2YzczM2M3MDdmOGRiMTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMTc4LDI3ICsx
NzgsNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9w
ZXJhdG9yIGludDw+KGludCkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAg
ICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PgotICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
Ci0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVp
bnQ8Pih1aW50KSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+Ci0gICAgICAgICAgICAgICAgICAgIEVQdHIu
Ym94KHZhbHVlLmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAg
ICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgYm9vbDw+KGJv
b2wpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4KLSAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3godmFs
dWUubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICBsZXQg
YXJyYXlFbGVtZW50UHRyID0gZnVuYyA9PiB7CiAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFtyZWYsIGluZGV4XSwgbm9kZSkgPT4gewogICAgICAgICAgICAgICAgIHJlZiA9IHJl
Zi5sb2FkVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5j
LmpzCmluZGV4IDA5NjRiMWU3ZjM5OWQ2NDIxMzZmMjkzYTk5ZWU2ZGU5YjdjZTYwZjAuLjQ2ZTY4
ODVhZjAwODMxYTMxMWE3OGY3MmVhNTY0ODIwYTA1MDY5M2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcwpAQCAtMjUsNyArMjUsNyBAQAogInVzZSBzdHJp
Y3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4dGVuZHMgRnVuYyB7Ci0gICAgY29uc3RydWN0b3Io
b3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXND
YXN0ID0gZmFsc2UpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0
eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXNDYXN0KQogICAgIHsKICAgICAgICAgc3VwZXIo
b3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXND
YXN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9O
YXRpdmVGdW5jSW5zdGFuY2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRp
dmVGdW5jSW5zdGFuY2UuanMKaW5kZXggOWI3ZDY2NmQwNTI4MGY0ZTQ2ZWFmMGM4MzBlYWM2ODZi
OTc3ZjcyYS4uZWQ5ZTcxZjQwNmNkNjIwZGIxMDhmY2YwYjRmZTVkYjMwNjI3YTdhNyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuY0luc3RhbmNlLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5q
cwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jSW5z
dGFuY2UgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihmdW5jLCByZXR1cm5UeXBlLCBw
YXJhbWV0ZXJzKQorICAgIGNvbnN0cnVjdG9yKGZ1bmMsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMs
IGlzQ2FzdCkKICAgICB7Ci0gICAgICAgIHN1cGVyKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIHJl
dHVyblR5cGUsIFtdLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgc3VwZXIoZnVuYy5vcmlnaW4sIGZ1
bmMubmFtZSwgcmV0dXJuVHlwZSwgW10sIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAgfQogICAg
IAogICAgIGdldCBmdW5jKCkgeyByZXR1cm4gdGhpcy5fZnVuYzsgfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCA0MjlmMDRjNmRmYmVmNWExNjJmZWM2NmVjMzMwZjUz
ZTMzMDI0NzI3Li5lZmRhMDQ5NzNlYjY4MTRkNmIwMTU4NWM2MThmNGViNmRiY2ZjZmY1IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMzgwLDggKzM4MCwxMCBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3Np
YmxlUHJlZml4KCkpOwogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpCiAgICAg
ICAgICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBhcnNlUG9z
c2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEiKSkKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgTG9naWNhbE5vdCh0b2tlbiwgbmV3IENhbGxFeHByZXNzaW9u
KHRva2VuLCAib3BlcmF0b3IgYm9vbCIsIFtdLCBbcGFyc2VQb3NzaWJsZVByZWZpeCgpXSkpOwor
ICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKKyAgICAgICAgICAgIGxldCBy
ZW1haW5kZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICByZXR1cm4gbmV3
IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYXN0RXhwcmVzc2lvbihyZW1haW5kZXIub3JpZ2luLCBu
ZXcgVHlwZVJlZihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtdKSwgW10sIFtyZW1haW5kZXJd
KSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoKTsKICAg
ICB9CiAgICAgCkBAIC02MjAsNDQgKzYyMiwyNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiBjb25zdW1lS2lu
ZCgiaWRlbnRpZmllciIpLnRleHQ7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VPcGVyYXRv
ckZ1bmNEZWZWYWx1ZXMoKQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwotICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjMx
NiBDb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0
b3JzIGFuZCBjb21wbGV4IHR5cGVzCi0gICAgICAgIGxldCBjYXN0VHlwZSA9IGNvbnN1bWVLaW5k
KCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgcmVzdWx0LnJldHVyblR5cGUgPSBuZXcgVHlw
ZVJlZihuYW1lLCBjYXN0VHlwZSwgW10pOwotICAgICAgICByZXN1bHQubmFtZSA9ICJvcGVyYXRv
ciAiICsgY2FzdFR5cGU7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlTm9uT3BlcmF0b3JGdW5j
RGVmVmFsdWVzKCkKLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVz
dWx0LnJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAgcmVzdWx0Lm9yaWdpbiA9IHJl
c3VsdC5yZXR1cm5UeXBlLm9yaWdpbjsKLSAgICAgICAgcmVzdWx0Lm5hbWUgPSBwYXJzZUZ1bmNO
YW1lKCk7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUdlbmVyaWNGdW5jRGVmVmFsdWVzKCkK
KyAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWNsKCkKICAgICB7CisgICAgICAgIGxldCBvcmlnaW47
CisgICAgICAgIGxldCByZXR1cm5UeXBlOworICAgICAgICBsZXQgbmFtZTsKKyAgICAgICAgbGV0
IGlzQ2FzdDsKICAgICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1lKCJvcGVyYXRv
ciIpOwogICAgICAgICBpZiAob3BlcmF0b3JUb2tlbikgewotICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7Ci0gICAgICAgICAgICByZXN1bHQub3Jp
Z2luID0gb3BlcmF0b3JUb2tlbi5vcmlnaW47Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgb3JpZ2luID0gb3BlcmF0b3JUb2tlbjsKKyAgICAgICAgICAgIHJldHVyblR5
cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgIG5hbWUgPSBDYXN0RXhwcmVzc2lvbi5mdW5j
dGlvbk5hbWU7CisgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAgb3JpZ2lu
ID0gcmV0dXJuVHlwZS5vcmlnaW47CisgICAgICAgICAgICBuYW1lID0gcGFyc2VGdW5jTmFtZSgp
OworICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
cGFyc2VGdW5jRGVjbCgpCi0gICAgewotICAgICAgICBsZXQgdmFsdWVzID0gcGFyc2VHZW5lcmlj
RnVuY0RlZlZhbHVlcygpOwogICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQ
YXJhbWV0ZXJzKCk7CiAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7
Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyh2YWx1ZXMub3JpZ2luLCB2YWx1ZXMubmFtZSwgdmFs
dWVzLnJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCB2YWx1ZXMuaXNDYXN0
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlw
ZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Byb2dyYW0uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9n
cmFtLmpzCmluZGV4IDA3YTkzM2EzMzhmNjA4Y2FiNWM2MTUxMjg2OWZiZDlhYzIwNDAwOWEuLjcx
ZTNlYWZlZWEzNmJjMjEwYmFhZDk0NWU3OWY3NjVkZTUyMTkzMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcwpAQCAtNTgsMTMgKzU4LDEzIEBAIGNsYXNzIFByb2dy
YW0gZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzLnB1c2go
c3RhdGVtZW50KTsKICAgICB9CiAgICAgCi0gICAgcmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1lLCB0
eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQorICAgIHJlc29sdmVGdW5jT3ZlcmxvYWQobmFt
ZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKICAgICB7CiAgICAg
ICAgIGxldCBmdW5jdGlvbnMgPSB0aGlzLmZ1bmN0aW9ucy5nZXQobmFtZSk7CiAgICAgICAgIGlm
ICghZnVuY3Rpb25zKQogICAgICAgICAgICAgcmV0dXJuIHtmYWlsdXJlczogW119OwogICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJn
dW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVPdmVybG9hZElt
cGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCByZXR1cm5UeXBlKTsK
ICAgICB9CiAgICAgCiAgICAgZ2V0IG5hbWVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCmluZGV4IGJiM2UyYjQw
NDAxYjY1ZDE1ZjgxMWI0MWI0N2IxYTE2MmY5YTI3MGQuLjc5MzE0ZDU1YjM4ZmNjMmY1MDA4OGM3
YjU3NTBmNjZlNzU0NTUzYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwpAQCAtMjQsNyArMjQsNyBAQAogICovCiAidXNl
IHN0cmljdCI7CiAKLWZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0eXBl
QXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQorZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChm
dW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiB7CiAg
ICAgbGV0IGZhaWx1cmVzID0gW107CiAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jdGlvbnMpIHsK
QEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMs
IHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCiAgICAgICAgICAgICBsZXQgYXJndW1lbnQg
PSB0eXBlQXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IGZ1bmMudHlw
ZVBhcmFtZXRlcnNbaV07CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50LnVuaWZ5KHVuaWZpY2F0
aW9uQ29udGV4dCwgcGFyYW1ldGVyKSkgewotICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2go
bmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIlR5cGUgYXJndW1lbnQgIyIgKyAo
aSArIDEpICsgIiBmb3IgcGFyYW1ldGVyICIgKyBmdW5jLnR5cGVQYXJhbWV0ZXJzLm5hbWUgKyAi
IGRvZXMgbm90IG1hdGNoIChwYXNzZWQgIiArIGFyZ3VtZW50ICsgIiwgcmVxdWlyZSAiICsgcGFy
YW1ldGVyICsgIikiKSk7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChuZXcgT3Zlcmxv
YWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiVHlwZSBhcmd1bWVudCAjIiArIChpICsgMSkgKyAi
IGZvciBwYXJhbWV0ZXIgIiArIHBhcmFtZXRlci5uYW1lICsgIiBkb2VzIG5vdCBtYXRjaCAocGFz
c2VkICIgKyBhcmd1bWVudCArICIsIHJlcXVpcmUgIiArIHBhcmFtZXRlciArICIpIikpOwogICAg
ICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC02MCw2ICs2MCwxMiBAQCBmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1
bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcykKICAgICAgICAgfQogICAgICAg
ICBpZiAoIW9rKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXR1cm5UeXBl
KSB7CisgICAgICAgICAgICBpZiAoIXJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25Db250ZXh0
LCBmdW5jLnJldHVyblR5cGUpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChuZXcg
T3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiUmV0dXJuIHR5cGUgIiArIGZ1bmMucmV0
dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJldHVyblR5cGUpKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAoIXVu
aWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKSkgewogICAgICAgICAgICAgZmFpbHVyZXMucHVzaChu
ZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiVmlvbGF0ZXMgdHlwZSB2YXJpYWJs
ZSBjb25zdHJhaW50cyIpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCBkMjkwNzEzOTFmZGEzZjg5YTVmYmNkMGFk
NmU3ZGE1ZGM4OWQ0N2U5Li42NWZkYjc4NjI2ODE3Yjk3ZDQ3NGJmMzA1ZWFmYTAzNGVlNjQyM2Zh
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAtMjM1LDEz
ICsyMzUsOSBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAgICAgIHJlc3VsdC50eXBlID0gbm9kZS50
eXBlID8gbm9kZS50eXBlLnZpc2l0KHRoaXMpIDogbnVsbDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9Ci0gICAgCi0gICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQorCisgICAgcHJv
Y2Vzc0Rlcml2ZWRDYWxsRGF0YShub2RlLCByZXN1bHQpCiAgICAgewotICAgICAgICBsZXQgcmVz
dWx0ID0gbmV3IENhbGxFeHByZXNzaW9uKAotICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUu
bmFtZSwKLSAgICAgICAgICAgIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+
IHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSksCi0gICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlz
dC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpKTsKICAgICAgICAgbGV0IGFj
dHVhbFR5cGVBcmd1bWVudHMgPSBub2RlLmFjdHVhbFR5cGVBcmd1bWVudHM7CiAgICAgICAgIGlm
IChhY3R1YWxUeXBlQXJndW1lbnRzKSB7CiAgICAgICAgICAgICByZXN1bHQuYWN0dWFsVHlwZUFy
Z3VtZW50cyA9CkBAIC0yNTQsNiArMjUwLDI0IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAgICAg
cmVzdWx0Lm5hdGl2ZUZ1bmNJbnN0YW5jZSA9IG5vZGUubmF0aXZlRnVuY0luc3RhbmNlOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIHZpc2l0Q2FzdEV4cHJlc3Npb24obm9k
ZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgQ2FzdEV4cHJlc3Npb24oCisgICAg
ICAgICAgICBub2RlLm9yaWdpbiwgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KHRoaXMpLAorICAgICAg
ICAgICAgbm9kZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJndW1lbnQgPT4gdHlwZUFyZ3VtZW50
LnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgIG5vZGUuYXJndW1lbnRMaXN0Lm1hcChhcmd1bWVu
dCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOworICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNz
RGVyaXZlZENhbGxEYXRhKG5vZGUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpc2l0Q2Fs
bEV4cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgQ2FsbEV4
cHJlc3Npb24oCisgICAgICAgICAgICBub2RlLm9yaWdpbiwgbm9kZS5uYW1lLAorICAgICAgICAg
ICAgbm9kZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJndW1lbnQgPT4gdHlwZUFyZ3VtZW50LnZp
c2l0KHRoaXMpKSwKKyAgICAgICAgICAgIG5vZGUuYXJndW1lbnRMaXN0Lm1hcChhcmd1bWVudCA9
PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOworICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGVy
aXZlZENhbGxEYXRhKG5vZGUsIHJlc3VsdCk7CisgICAgfQogICAgIAogICAgIHZpc2l0RnVuY3Rp
b25MaWtlQmxvY2sobm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXggYzg4OGY4NTYzNjU0MGEwNzdiNDk0M2NiNzNm
MTI5MGIxNTI0YzViYi4uZDNiYzM4ZTBlZTE4NTY3Yzg3Mzk0MWY2NjNkM2RlODEyOTFkZTZhNiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5q
cwpAQCAtNTMsOSArNTMsMTEgQEAgbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQsIGludCk7CiBu
YXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsIHVpbnQpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I9
PShib29sLCBib29sKTsKIAotbmF0aXZlIG9wZXJhdG9yIGludChpbnQpOwotbmF0aXZlIG9wZXJh
dG9yIHVpbnQodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbChib29sKTsKKy8vIFRoZSBmaXJz
dCA8PiBiZWxvbmcgdG8gdGhlIHJldHVybiB0eXBlLiBUaGUgc2Vjb25kIDw+IGRlc2NyaWJlIHRo
ZSB0eXBlIHZhcmlhYmxlcy4KKy8vIFRoaXMgd2F5LCB5b3UgY291bGQgc2F5IHNvbWV0aGluZyBs
aWtlICJvcGVyYXRvciBPdXRwdXRWZWN0b3I8VD48VD4oSW5wdXRWZWN0b3I8VD4geCkiCitvcGVy
YXRvciBUPD48VD4oVCB4KSB7CisgICAgcmV0dXJuIHg7Cit9CiAKIG5hdGl2ZSB0aHJlYWQgVF4g
b3BlcmF0b3ImW108VD4odGhyZWFkIFRbXSwgdWludCk7CiBuYXRpdmUgdGhyZWFkZ3JvdXAgVF4g
b3BlcmF0b3ImW108VDpwcmltaXRpdmU+KHRocmVhZGdyb3VwIFRbXSwgdWludCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggNjQxMzU3ZDUzMGExMDRiNTU5MTlk
ZDk5MmFjNDQ2MWNhNGFhNTAwMi4uNmU2YjA0OWQwZDQwNjljYTZmYjQ2MGEyNTQyNTVjZGVlNWY4
Yzk1YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1s
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtMTcsNiAr
MTcsNyBAQAogPHNjcmlwdCBzcmM9IkNhbGxBc3NpZ25tZW50LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJDYWxsRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEZ1
bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDYXN0RXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNo
ZWNrTGl0ZXJhbFR5cGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JldHVybnMu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VHlwZURlZlJlc29sdmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURl
ZlJlc29sdmVyLmpzCmluZGV4IDJkMjBkZTk1OTAzN2I2N2RmY2VmYTk0MDhlMDVhYTk3OGZiNTIx
OTcuLjFkYTE1ZmQ2Mjk1YzU3YzM2ZWQ4MDZhZDJhMjE5ZjNmMDZkMzM2YTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMKQEAgLTMwLDE1
ICszMCw2IEBAIGNsYXNzIFR5cGVEZWZSZXNvbHZlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICBzdXBlcigpOwogICAgICAgICB0aGlzLl92aXNpdGluZyA9IG5ldyBWaXNpdGluZ1NldCgpOwog
ICAgIH0KLQotICAgIHZpc2l0RnVuY0RlZihub2RlKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUu
aXNDYXN0ICYmIG5vZGUucmV0dXJuVHlwZS50eXBlIGluc3RhbmNlb2YgVHlwZURlZikgewotICAg
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYzMTYgQ29ycmVjdGx5IGhhbmRsZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBjYXN0aW5n
IG9wZXJhdG9ycyBhbmQgY29tcGxleCB0eXBlcwotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJDYXN0aW5nIG9wZXJhdG9ycyBkb24ndCB3b3JrIHdpdGggdHlwZWRlZnMuIik7Ci0gICAgICAg
IH0KLSAgICAgICAgc3VwZXIudmlzaXRGdW5jRGVmKG5vZGUpOwotICAgIH0KICAgICAKICAgICB2
aXNpdFR5cGVSZWYobm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qcwppbmRleCAxZTQ5OWM1MGZmMTU2ZWMyNzEyYzk2ZGU1OTQ4ZDg4Yjc2Yjk0ODE4Li5k
NGRhYzYzNjk4MzMwOWI1MGQ3OWVhMTQ4NTUwOThiOTBmMWNjMzRlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKQEAgLTI1NSw2ICsyNTUsMTIgQEAgY2xhc3MgVmlz
aXRvciB7CiAgICAgICAgICAgICAgICAgYXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgICAgIH0K
ICAgICB9CisgICAgCisgICAgdmlzaXRDYXN0RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAg
ICAgdGhpcy52aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpOworICAgICAgICBub2RlLnJldHVyblR5
cGUudmlzaXQodGhpcyk7CisgICAgfQogCiAgICAgdmlzaXRMb2dpY2FsTm90KG5vZGUpCiAgICAg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319982</attachid>
            <date>2017-09-05 22:18:35 -0700</date>
            <delta_ts>2017-09-05 22:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176316-20170905221835.patch</filename>
            <type>text/plain</type>
            <size>24015</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRiZWU0MDQ1NDExODM1MjAyYjQ4OWZlZmUyYjMxMmY0
M2EwZjQzMy4uNWRiNzllZjQxOGVmZjJjNTU1MmU0MmRjYzg3NDRlMWFiODAyMGFlNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDE3LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBi
ZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgc3RhbmRh
cmQgbGlicmFyeSB0byBpbmNsdWRlIGFsbCBpZGVudGl0eSBjYXN0IG9wZXJhdG9ycyBmb3IgYWxs
IGV4c3RpbmcKKyAgICAgICAgYW5kIHlldC10by1leGlzdCB0eXBlcy4gVGhlIHN0YW5kYXJkIGxp
YnJhcnkgbm93IGhhcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZToKKyAgICAgICAgb3Bl
cmF0b3IgVDw+PFQ+KFQpLiBUaGlzIG1lYW5zICJmb3IgYWxsIFQsIGRlZmluZSBhIGNhc3Qgb3Bl
cmF0b3IgZnJvbSBUIHRvIFQ8Pi4iIFRoZQorICAgICAgICBkdXBsaWNhdGUgPD5zIGxldHMgdXMg
c2F5IHRoaW5ncyBsaWtlIG9wZXJhdG9yIE91dHB1dFZlY3RvcjxUPjxUPihJbnB1dFZlY3RvcjxU
PiB4KS4KKworICAgICAgICBGb3IgdGVzdGluZywgdGhpcyBwYXRjaCBhbHNvIGFkZHMgdGhlIGFi
aWxpdHkgdG8gY2FzdCBhbiBhcmJpdHJhcnkgRXF1YXRhYmxlIHR5cGUgdG8gYm9vbCwKKyAgICAg
ICAgYnkgY29tcGFyaW5nIHRoZSB2YWx1ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhhdCB0
eXBlLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzOiBDb3BpZWQgZnJv
bSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMuCisg
ICAgICAgIChDYXN0RXhwcmVzc2lvbik6CisgICAgICAgIChDYXN0RXhwcmVzc2lvbi5wcm90b3R5
cGUuZ2V0IGZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChDYXN0RXhwcmVzc2lvbi5wcm90b3R5cGUu
Z2V0IHJldHVyblR5cGUpOgorICAgICAgICAoQ2FzdEV4cHJlc3Npb24ucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanM6CisgICAgICAgIChGdW5jLnBy
b3RvdHlwZS50b0RlY2xTdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0lubGluZXIuanM6CisgICAgICAgIChJbmxpbmVyLnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNz
aW9uKToKKyAgICAgICAgKElubGluZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5qczoKKyAgICAgICAgKE5hdGl2ZUZ1bmNJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6Cisg
ICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgor
ICAgICAgICAocGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAo
cGFyc2VOb25PcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAocGFyc2VH
ZW5lcmljRnVuY0RlZlZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUHJvZ3JhbS5qczoKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLnJlc29sdmVG
dW5jT3ZlcmxvYWQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVP
dmVybG9hZEltcGwuanM6CisgICAgICAgIChyZXNvbHZlT3ZlcmxvYWRJbXBsKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS5wcm9jZXNzRGVyaXZlZENhbGxEYXRhKToKKyAgICAgICAgKFJld3JpdGVyLnBy
b3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlw
ZS52aXNpdENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChvcGVyYXRvci5ULlQpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanM6CisgICAgICAgIChUeXBlRGVmUmVzb2x2
ZXIpOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanM6Cisg
ICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKworMjAxNy0w
OS0wNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAg
IFdTTCBzaG91bGQgc3VwcG9ydCB0aGUgYm9vbCB0eXBlCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyODUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzCmluZGV4IGU5NTU1NDE1MTYzNzEwYzZkNmUxMTNhYTkzZGQyNjM3M2FjOGVjMzUu
LmFmMTZmZjg3OGJmY2U1NDU1ODRmYmRiOTRjMzMyMzljZDU3ZGU3NzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTQxLDYgKzQxLDcgQEAgbG9hZCgiQm9vbExpdGVyYWwu
anMiKTsKIGxvYWQoIkNhbGxBc3NpZ25tZW50LmpzIik7CiBsb2FkKCJDYWxsRXhwcmVzc2lvbi5q
cyIpOwogbG9hZCgiQ2FsbEZ1bmN0aW9uLmpzIik7Citsb2FkKCJDYXN0RXhwcmVzc2lvbi5qcyIp
OwogbG9hZCgiQ2hlY2suanMiKTsKIGxvYWQoIkNoZWNrTGl0ZXJhbFR5cGVzLmpzIik7CiBsb2Fk
KCJDaGVja1JldHVybnMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2FzdEV4cHJlc3Npb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcyZTBjNTE5ZmE0YTJjMTQyYjMwOGMzOWRi
ZGIwMzRmNDNmMWQyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworLy8gVGhpcyBp
cyBhIGJpdCBvZiBhIG1pc25vbWVyLCBhcyB0aGlzIHJlcHJlc2VudHMgY2FzdHMgYXMgd2VsbCBh
cyBjb25zdHJ1Y3RvcnMuCisvLyBTeW50YWN0aWNhbGx5IHRoZXkgYXJlIGlkZW50aWNhbDsgYSBj
YXN0IGp1c3QgdGFrZXMgb25lIGFyZ3VtZW50IHdoZXJlYXMgYQorLy8gY29uc3RydWN0b3IgdGFr
ZXMgMC1uLgorY2xhc3MgQ2FzdEV4cHJlc3Npb24gZXh0ZW5kcyBDYWxsRXhwcmVzc2lvbiB7Cisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCByZXR1cm5UeXBlLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVu
dExpc3QpCisgICAgeworICAgICAgICBzdXBlcihvcmlnaW4sIENhc3RFeHByZXNzaW9uLmZ1bmN0
aW9uTmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRMaXN0KTsKKyAgICAgICAgdGhpcy5fcmV0
dXJuVHlwZSA9IHJldHVyblR5cGU7CisgICAgfQorCisgICAgc3RhdGljIGdldCBmdW5jdGlvbk5h
bWUoKSB7IHJldHVybiAib3BlcmF0b3IgY2FzdCI7IH0KKyAgICAKKyAgICBnZXQgcmV0dXJuVHlw
ZSgpIHsgcmV0dXJuIHRoaXMuX3JldHVyblR5cGU7IH0KKyAgICAKKyAgICB0b1N0cmluZygpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5UeXBlICsgIjwiICsgdGhpcy50eXBlQXJn
dW1lbnRzICsgIj4oIiArIHRoaXMuYXJndW1lbnRMaXN0ICsgIikiOworICAgIH0KK30KKwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKaW5kZXggNzYxMmQ1MzhkMzEzODZl
ZTljNjBjYjY0Zjk2Yzg3YzQ5MTZlZTYxZS4uOWI2OWNmODQ1OTk3Yjc1OGVkMTYzZWUyYmQ3Zjgx
MzIxMTk5YzcwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hl
Y2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBA
IC0yMzMsOCArMjMzLDggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICAgICAgcmVzdWx0ID0gZXhwcmVzc2lvbi52aXNpdCh0aGlzKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9Ci0gICAgCi0gICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQorCisgICAg
Y2hlY2tDYXN0T3JDYWxsRXhwcmVzc2lvbihub2RlLCBjYXN0KQogICAgIHsKICAgICAgICAgZm9y
IChsZXQgdHlwZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKICAgICAgICAgICAgIHR5
cGVBcmd1bWVudC52aXNpdCh0aGlzKTsKQEAgLTI0NSw2ICsyNDUsOCBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICByZXR1cm4gVHlwZVJlZi53cmFwKG5ld0Fy
Z3VtZW50KTsKICAgICAgICAgfSk7CiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9IGFyZ3Vt
ZW50VHlwZXM7CisgICAgICAgIGlmIChjYXN0KQorICAgICAgICAgICAgbm9kZS5yZXR1cm5UeXBl
LnZpc2l0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgbGV0IG92ZXJsb2FkID0gbnVsbDsKICAg
ICAgICAgbGV0IGZhaWx1cmVzID0gW107CkBAIC0yNTcsNyArMjU5LDcgQEAgY2xhc3MgQ2hlY2tl
ciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHR5cGVQYXJhbWV0ZXIucHJvdG9j
b2wucHJvdG9jb2xEZWNsLnNpZ25hdHVyZXNCeU5hbWVXaXRoVHlwZVZhcmlhYmxlKG5vZGUubmFt
ZSwgdHlwZVBhcmFtZXRlcik7CiAgICAgICAgICAgICBpZiAoIXNpZ25hdHVyZXMpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBvdmVybG9hZCA9IHJlc29sdmVPdmVybG9h
ZEltcGwoc2lnbmF0dXJlcywgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAg
ICAgICAgICAgIG92ZXJsb2FkID0gcmVzb2x2ZU92ZXJsb2FkSW1wbChzaWduYXR1cmVzLCBub2Rl
LnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGNhc3QgPyBub2RlLnJldHVyblR5cGUgOiB1
bmRlZmluZWQpOwogICAgICAgICAgICAgaWYgKG92ZXJsb2FkLmZ1bmMpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZhaWx1cmVz
KTsKQEAgLTI2NSw3ICsyNjcsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFvdmVybG9hZCkgewogICAgICAgICAgICAgb3ZlcmxvYWQg
PSB0aGlzLl9wcm9ncmFtLnJlc29sdmVGdW5jT3ZlcmxvYWQoCi0gICAgICAgICAgICAgICAgbm9k
ZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpOworICAgICAgICAgICAg
ICAgIG5vZGUubmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBjYXN0ID8g
bm9kZS5yZXR1cm5UeXBlIDogdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGlmICghb3ZlcmxvYWQu
ZnVuYykgewogICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goLi4ub3ZlcmxvYWQuZmFpbHVy
ZXMpOwogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmluZCBmdW5jdGlv
biBmb3IgY2FsbCI7CkBAIC0yODQsNSArMjg2LDE1IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbm9kZS5yZXNvbHZlKG92ZXJsb2Fk
KTsKICAgICB9CisKKyAgICB2aXNpdENhc3RFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5jaGVja0Nhc3RPckNhbGxFeHByZXNzaW9uKG5vZGUsIHRydWUpOworICAg
IH0KKyAgICAKKyAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5jaGVja0Nhc3RPckNhbGxFeHByZXNzaW9uKG5vZGUsIGZhbHNlKTsKKyAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCmluZGV4IDhkMmZmMjQ4NGE2
NGU4OTc2MDBlZWQ4N2I0NzA2NDViYjA1MDZmZjkuLmY5NjMzM2ZkMjNlZjRhNDYxNjY4NWQ4MjAy
ZjVmMzE4OThlYmIzYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwpAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgCiAgICAgdG9EZWNs
U3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAodGhpcy5pc0Nhc3QgPyAiIiA6IHRoaXMu
cmV0dXJuVHlwZSArICIgIikgKyB0aGlzLm5hbWUgKyAiPCIgKyB0aGlzLnR5cGVQYXJhbWV0ZXJz
ICsgIj4oIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAgICAgICAgcmV0dXJuICh0aGlzLmlz
Q2FzdCA/ICJvcGVyYXRvciAiICsgdGhpcy5yZXR1cm5UeXBlIDogdGhpcy5yZXR1cm5UeXBlICsg
IiAiICsgdGhpcy5uYW1lKSArICI8IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhp
cy5wYXJhbWV0ZXJzICsgIikiOwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0luc3RhbnRpYXRvci5qcwppbmRleCA4
NGU0N2ZlODVlNWM2NjI1MTI5ODI0NDg4YTdlNDgwZTAyNDllODE3Li5lNmE3ZGEwNTdiMWFiNzNm
MzVhMWJiYTAyNmU1ZTBkN2UxYWJiNjEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Z1bmNJbnN0YW50aWF0b3IuanMKQEAgLTkyLDcgKzkyLDggQEAgY2xhc3MgRnVu
Y0luc3RhbnRpYXRvciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jSW5z
dGFuY2UoCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgIGZ1
bmMucmV0dXJuVHlwZS52aXNpdChzdWJzdGl0dXRpb24pLAotICAgICAgICAgICAgICAgICAgICBm
dW5jLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudmlzaXQoc3Vic3RpdHV0
aW9uKSkpOworICAgICAgICAgICAgICAgICAgICBmdW5jLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRl
ciA9PiBwYXJhbWV0ZXIudmlzaXQoc3Vic3RpdHV0aW9uKSksCisgICAgICAgICAgICAgICAgICAg
IGZ1bmMuaXNDYXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBsZXQgcmVz
dWx0aW5nRnVuYyA9IGZ1bmMudmlzaXQobmV3IEluc3RhbnRpYXRlKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0lubGluZXIuanMKaW5kZXggNmNiMTU2OGY5NjBmOGFkZmEzY2MwNGVl
MjU1NWIwMTMyMDRiZjhmYy4uZTdlODMyZTc1MWU4NTUyOTE4ZmE3YmMzNmMyM2FlYmQwOGU2YTc1
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmVyLmpzCkBAIC01OCw1ICs1
OCwxMCBAQCBjbGFzcyBJbmxpbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgICAg
IGZ1bmMucGFyYW1ldGVycywgZnVuYy5ib2R5KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAg
dmlzaXRDYXN0RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmlz
aXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IGVjMmFkYzY3MDllNzIxOGQyODJmMjRjMTlh
OWY5NzA2YmIxNjBmNmQuLmYzYWEwZDUzMDc0NGI0MjhiZDNmZjkyNzE2YzczM2M3MDdmOGRiMTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMTc4
LDI3ICsxNzgsNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0
aXZlIG9wZXJhdG9yIGludDw+KGludCkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PgotICAgICAgICAgICAg
ICAgICAgICBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJh
dG9yIHVpbnQ8Pih1aW50KSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+Ci0gICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAK
LSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgYm9v
bDw+KGJvb2wpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4KLSAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3godmFsdWUubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAg
ICBsZXQgYXJyYXlFbGVtZW50UHRyID0gZnVuYyA9PiB7CiAgICAgICAgICAgICBmdW5jLmltcGxl
bWVudGF0aW9uID0gKFtyZWYsIGluZGV4XSwgbm9kZSkgPT4gewogICAgICAgICAgICAgICAgIHJl
ZiA9IHJlZi5sb2FkVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRp
dmVGdW5jLmpzCmluZGV4IDA5NjRiMWU3ZjM5OWQ2NDIxMzZmMjkzYTk5ZWU2ZGU5YjdjZTYwZjAu
LjQ2ZTY4ODVhZjAwODMxYTMxMWE3OGY3MmVhNTY0ODIwYTA1MDY5M2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcwpAQCAtMjUsNyArMjUsNyBAQAogInVz
ZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4dGVuZHMgRnVuYyB7Ci0gICAgY29uc3Ry
dWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVy
cywgaXNDYXN0ID0gZmFsc2UpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5U
eXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXNDYXN0KQogICAgIHsKICAgICAgICAg
c3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVy
cywgaXNDYXN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVGdW5jSW5zdGFuY2UuanMKaW5kZXggOWI3ZDY2NmQwNTI4MGY0ZTQ2ZWFmMGM4MzBl
YWM2ODZiOTc3ZjcyYS4uZWQ5ZTcxZjQwNmNkNjIwZGIxMDhmY2YwYjRmZTVkYjMwNjI3YTdhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuY0luc3Rh
bmNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0
YW5jZS5qcwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVG
dW5jSW5zdGFuY2UgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihmdW5jLCByZXR1cm5U
eXBlLCBwYXJhbWV0ZXJzKQorICAgIGNvbnN0cnVjdG9yKGZ1bmMsIHJldHVyblR5cGUsIHBhcmFt
ZXRlcnMsIGlzQ2FzdCkKICAgICB7Ci0gICAgICAgIHN1cGVyKGZ1bmMub3JpZ2luLCBmdW5jLm5h
bWUsIHJldHVyblR5cGUsIFtdLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgc3VwZXIoZnVuYy5vcmln
aW4sIGZ1bmMubmFtZSwgcmV0dXJuVHlwZSwgW10sIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAg
fQogICAgIAogICAgIGdldCBmdW5jKCkgeyByZXR1cm4gdGhpcy5fZnVuYzsgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCA0MjlmMDRjNmRmYmVmNWExNjJmZWM2NmVj
MzMwZjUzZTMzMDI0NzI3Li5lZmRhMDQ5NzNlYjY4MTRkNmIwMTU4NWM2MThmNGViNmRiY2ZjZmY1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMzgwLDggKzM4MCwx
MCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRl
eHQpCiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJz
ZVBvc3NpYmxlUHJlZml4KCkpOwogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikp
CiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBh
cnNlUG9zc2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEi
KSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTG9naWNhbE5vdCh0b2tlbiwgbmV3IENhbGxFeHBy
ZXNzaW9uKHRva2VuLCAib3BlcmF0b3IgYm9vbCIsIFtdLCBbcGFyc2VQb3NzaWJsZVByZWZpeCgp
XSkpOworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKKyAgICAgICAgICAg
IGxldCByZW1haW5kZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICByZXR1
cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYXN0RXhwcmVzc2lvbihyZW1haW5kZXIub3Jp
Z2luLCBuZXcgVHlwZVJlZihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtdKSwgW10sIFtyZW1h
aW5kZXJdKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgo
KTsKICAgICB9CiAgICAgCkBAIC02MjAsNDQgKzYyMiwyNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiBjb25z
dW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VP
cGVyYXRvckZ1bmNEZWZWYWx1ZXMoKQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9Owot
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NjMxNiBDb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGNhc3Rpbmcg
b3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCi0gICAgICAgIGxldCBjYXN0VHlwZSA9IGNvbnN1
bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgcmVzdWx0LnJldHVyblR5cGUgPSBu
ZXcgVHlwZVJlZihuYW1lLCBjYXN0VHlwZSwgW10pOwotICAgICAgICByZXN1bHQubmFtZSA9ICJv
cGVyYXRvciAiICsgY2FzdFR5cGU7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSB0cnVlOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlTm9uT3BlcmF0
b3JGdW5jRGVmVmFsdWVzKCkKLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAg
ICAgcmVzdWx0LnJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAgcmVzdWx0Lm9yaWdp
biA9IHJlc3VsdC5yZXR1cm5UeXBlLm9yaWdpbjsKLSAgICAgICAgcmVzdWx0Lm5hbWUgPSBwYXJz
ZUZ1bmNOYW1lKCk7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUdlbmVyaWNGdW5jRGVmVmFs
dWVzKCkKKyAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWNsKCkKICAgICB7CisgICAgICAgIGxldCBv
cmlnaW47CisgICAgICAgIGxldCByZXR1cm5UeXBlOworICAgICAgICBsZXQgbmFtZTsKKyAgICAg
ICAgbGV0IGlzQ2FzdDsKICAgICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1lKCJv
cGVyYXRvciIpOwogICAgICAgICBpZiAob3BlcmF0b3JUb2tlbikgewotICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7Ci0gICAgICAgICAgICByZXN1
bHQub3JpZ2luID0gb3BlcmF0b3JUb2tlbi5vcmlnaW47Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICAgICAgb3JpZ2luID0gb3BlcmF0b3JUb2tlbjsKKyAgICAgICAgICAgIHJl
dHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgIG5hbWUgPSBDYXN0RXhwcmVzc2lv
bi5mdW5jdGlvbk5hbWU7CisgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAg
b3JpZ2luID0gcmV0dXJuVHlwZS5vcmlnaW47CisgICAgICAgICAgICBuYW1lID0gcGFyc2VGdW5j
TmFtZSgpOworICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gcGFyc2VGdW5jRGVjbCgpCi0gICAgewotICAgICAgICBsZXQgdmFsdWVzID0gcGFyc2VH
ZW5lcmljRnVuY0RlZlZhbHVlcygpOwogICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJz
ZVR5cGVQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0
ZXJzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyh2YWx1ZXMub3JpZ2luLCB2YWx1ZXMubmFt
ZSwgdmFsdWVzLnJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCB2YWx1ZXMu
aXNDYXN0KTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlw
ZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Qcm9ncmFtLmpzCmluZGV4IDA3YTkzM2EzMzhmNjA4Y2FiNWM2MTUxMjg2OWZiZDlhYzIwNDAw
OWEuLjcxZTNlYWZlZWEzNmJjMjEwYmFhZDk0NWU3OWY3NjVkZTUyMTkzMWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcwpAQCAtNTgsMTMgKzU4LDEzIEBAIGNsYXNz
IFByb2dyYW0gZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRz
LnB1c2goc3RhdGVtZW50KTsKICAgICB9CiAgICAgCi0gICAgcmVzb2x2ZUZ1bmNPdmVybG9hZChu
YW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQorICAgIHJlc29sdmVGdW5jT3Zlcmxv
YWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKICAgICB7
CiAgICAgICAgIGxldCBmdW5jdGlvbnMgPSB0aGlzLmZ1bmN0aW9ucy5nZXQobmFtZSk7CiAgICAg
ICAgIGlmICghZnVuY3Rpb25zKQogICAgICAgICAgICAgcmV0dXJuIHtmYWlsdXJlczogW119Owog
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0
eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVPdmVy
bG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCByZXR1cm5U
eXBlKTsKICAgICB9CiAgICAgCiAgICAgZ2V0IG5hbWVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCmluZGV4IGJi
M2UyYjQwNDAxYjY1ZDE1ZjgxMWI0MWI0N2IxYTE2MmY5YTI3MGQuLjc5MzE0ZDU1YjM4ZmNjMmY1
MDA4OGM3YjU3NTBmNjZlNzU0NTUzYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAidXNlIHN0cmljdCI7CiAKLWZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25z
LCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQorZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2Fk
SW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUp
CiB7CiAgICAgbGV0IGZhaWx1cmVzID0gW107CiAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jdGlv
bnMpIHsKQEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5j
dGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCiAgICAgICAgICAgICBsZXQgYXJn
dW1lbnQgPSB0eXBlQXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IGZ1
bmMudHlwZVBhcmFtZXRlcnNbaV07CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50LnVuaWZ5KHVu
aWZpY2F0aW9uQ29udGV4dCwgcGFyYW1ldGVyKSkgewotICAgICAgICAgICAgICAgIGZhaWx1cmVz
LnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIlR5cGUgYXJndW1lbnQg
IyIgKyAoaSArIDEpICsgIiBmb3IgcGFyYW1ldGVyICIgKyBmdW5jLnR5cGVQYXJhbWV0ZXJzLm5h
bWUgKyAiIGRvZXMgbm90IG1hdGNoIChwYXNzZWQgIiArIGFyZ3VtZW50ICsgIiwgcmVxdWlyZSAi
ICsgcGFyYW1ldGVyICsgIikiKSk7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChuZXcg
T3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiVHlwZSBhcmd1bWVudCAjIiArIChpICsg
MSkgKyAiIGZvciBwYXJhbWV0ZXIgIiArIHBhcmFtZXRlci5uYW1lICsgIiBkb2VzIG5vdCBtYXRj
aCAocGFzc2VkICIgKyBhcmd1bWVudCArICIsIHJlcXVpcmUgIiArIHBhcmFtZXRlciArICIpIikp
OwogICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CkBAIC02MCw2ICs2MCwxMiBAQCBmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJ
bXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcykKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXR1
cm5UeXBlKSB7CisgICAgICAgICAgICBpZiAoIXJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25D
b250ZXh0LCBmdW5jLnJldHVyblR5cGUpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVz
aChuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiUmV0dXJuIHR5cGUgIiArIGZ1
bmMucmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJldHVyblR5cGUpKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBp
ZiAoIXVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKSkgewogICAgICAgICAgICAgZmFpbHVyZXMu
cHVzaChuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiVmlvbGF0ZXMgdHlwZSB2
YXJpYWJsZSBjb25zdHJhaW50cyIpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCBkMjkwNzEzOTFmZGEzZjg5YTVm
YmNkMGFkNmU3ZGE1ZGM4OWQ0N2U5Li42NWZkYjc4NjI2ODE3Yjk3ZDQ3NGJmMzA1ZWFmYTAzNGVl
NjQyM2ZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRl
ci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAt
MjM1LDEzICsyMzUsOSBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAgICAgIHJlc3VsdC50eXBlID0g
bm9kZS50eXBlID8gbm9kZS50eXBlLnZpc2l0KHRoaXMpIDogbnVsbDsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9Ci0gICAgCi0gICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQorCisg
ICAgcHJvY2Vzc0Rlcml2ZWRDYWxsRGF0YShub2RlLCByZXN1bHQpCiAgICAgewotICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IENhbGxFeHByZXNzaW9uKAotICAgICAgICAgICAgbm9kZS5vcmlnaW4s
IG5vZGUubmFtZSwKLSAgICAgICAgICAgIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3Vt
ZW50ID0+IHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSksCi0gICAgICAgICAgICBub2RlLmFyZ3Vt
ZW50TGlzdC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpKTsKICAgICAgICAg
bGV0IGFjdHVhbFR5cGVBcmd1bWVudHMgPSBub2RlLmFjdHVhbFR5cGVBcmd1bWVudHM7CiAgICAg
ICAgIGlmIChhY3R1YWxUeXBlQXJndW1lbnRzKSB7CiAgICAgICAgICAgICByZXN1bHQuYWN0dWFs
VHlwZUFyZ3VtZW50cyA9CkBAIC0yNTQsNiArMjUwLDI0IEBAIGNsYXNzIFJld3JpdGVyIHsKICAg
ICAgICAgcmVzdWx0Lm5hdGl2ZUZ1bmNJbnN0YW5jZSA9IG5vZGUubmF0aXZlRnVuY0luc3RhbmNl
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIHZpc2l0Q2FzdEV4cHJlc3Np
b24obm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgQ2FzdEV4cHJlc3Npb24o
CisgICAgICAgICAgICBub2RlLm9yaWdpbiwgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KHRoaXMpLAor
ICAgICAgICAgICAgbm9kZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJndW1lbnQgPT4gdHlwZUFy
Z3VtZW50LnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgIG5vZGUuYXJndW1lbnRMaXN0Lm1hcChh
cmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOworICAgICAgICByZXR1cm4gdGhpcy5w
cm9jZXNzRGVyaXZlZENhbGxEYXRhKG5vZGUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
c2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
Q2FsbEV4cHJlc3Npb24oCisgICAgICAgICAgICBub2RlLm9yaWdpbiwgbm9kZS5uYW1lLAorICAg
ICAgICAgICAgbm9kZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJndW1lbnQgPT4gdHlwZUFyZ3Vt
ZW50LnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgIG5vZGUuYXJndW1lbnRMaXN0Lm1hcChhcmd1
bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOworICAgICAgICByZXR1cm4gdGhpcy5wcm9j
ZXNzRGVyaXZlZENhbGxEYXRhKG5vZGUsIHJlc3VsdCk7CisgICAgfQogICAgIAogICAgIHZpc2l0
RnVuY3Rpb25MaWtlQmxvY2sobm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXggYzg4OGY4NTYzNjU0MGEwNzdiNDk0
M2NiNzNmMTI5MGIxNTI0YzViYi4uNmJhMTcxZDU2YzZhNTc0MzcyYmVlNWJmNzc3YmM2NDU2OTcy
M2EyNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRM
aWJyYXJ5LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGli
cmFyeS5qcwpAQCAtNTMsOSArNTMsMTggQEAgbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQsIGlu
dCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsIHVpbnQpOwogbmF0aXZlIGJvb2wgb3Bl
cmF0b3I9PShib29sLCBib29sKTsKIAotbmF0aXZlIG9wZXJhdG9yIGludChpbnQpOwotbmF0aXZl
IG9wZXJhdG9yIHVpbnQodWludCk7Ci1uYXRpdmUgb3BlcmF0b3IgYm9vbChib29sKTsKK3Byb3Rv
Y29sIEVxdWF0YWJsZSB7CisgICAgYm9vbCBvcGVyYXRvcj09KEVxdWF0YWJsZSwgRXF1YXRhYmxl
KTsKK30KKworb3BlcmF0b3IgYm9vbDw+PFQ6RXF1YXRhYmxlPihUIHgpIHsKKyAgICBUIGRlZmF1
bHRWYWx1ZTsKKyAgICByZXR1cm4geCAhPSBkZWZhdWx0VmFsdWU7Cit9CisKK29wZXJhdG9yIFQ8
PjxUPihUIHgpIHsKKyAgICByZXR1cm4geDsKK30KIAogbmF0aXZlIHRocmVhZCBUXiBvcGVyYXRv
ciZbXTxUPih0aHJlYWQgVFtdLCB1aW50KTsKIG5hdGl2ZSB0aHJlYWRncm91cCBUXiBvcGVyYXRv
ciZbXTxUOnByaW1pdGl2ZT4odGhyZWFkZ3JvdXAgVFtdLCB1aW50KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCA2NDEzNTdkNTMwYTEwNGI1NTkxOWRkOTkyYWM0
NDYxY2E0YWE1MDAyLi42ZTZiMDQ5ZDBkNDA2OWNhNmZiNDYwYTI1NDI1NWNkZWU1ZjhjOTViIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xNyw2ICsxNyw3IEBA
CiA8c2NyaXB0IHNyYz0iQ2FsbEFzc2lnbm1lbnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkNhbGxFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDYWxsRnVuY3Rpb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhc3RFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJDaGVjay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tMaXRl
cmFsVHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBkNWNiNTI5MWVk
MjJjYTU4ZTBlMGI5ZTc5OGI5ZmJiNWVkZTQ3YmYwLi40Y2IyZWRmNmY5MDY2MDI4NDkyNzg1OGZj
YTU3M2FjNTk5YjA1MTIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAg
LTIwMSw2ICsyMDEsMTMgQEAgZnVuY3Rpb24gVEVTVF9lcXVhbGl0eVR5cGVGYWlsdXJlKCkKICAg
ICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yICYmIGUubWVzc2FnZS5pbmRleE9m
KCIvaW50ZXJuYWwvdGVzdDoxIikgIT0gLTEpOwogfQogCitmdW5jdGlvbiBURVNUX2dlbmVyYWxO
ZWdhdGlvbigpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoImJvb2wgZm9vKGludCB4KSB7
IHJldHVybiAheDsgfSIpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA3KV0pLCBmYWxzZSk7CisgICAgY2hl
Y2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50
KHByb2dyYW0sIDApXSksIHRydWUpOworfQorCiBmdW5jdGlvbiBURVNUX2FkZDEoKSB7CiAgICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoImludCBmb28oaW50IHgpIHsgcmV0dXJuIHggKyAxOyB9Iik7
CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwg
W21ha2VJbnQocHJvZ3JhbSwgNDIpXSksIDQzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcwppbmRleCAyZDIwZGU5NTkwMzdiNjdkZmNlZmE5
NDA4ZTA1YWE5NzhmYjUyMTk3Li4xZGExNWZkNjI5NWM1N2MzNmVkODA2YWQyYTIxOWYzZjA2ZDMz
NmExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVz
b2x2ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29s
dmVyLmpzCkBAIC0zMCwxNSArMzAsNiBAQCBjbGFzcyBUeXBlRGVmUmVzb2x2ZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fdmlzaXRpbmcgPSBuZXcg
VmlzaXRpbmdTZXQoKTsKICAgICB9Ci0KLSAgICB2aXNpdEZ1bmNEZWYobm9kZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChub2RlLmlzQ2FzdCAmJiBub2RlLnJldHVyblR5cGUudHlwZSBpbnN0YW5jZW9m
IFR5cGVEZWYpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MzE2IENvcnJlY3RseSBoYW5kbGUgdGhlIGludGVyYWN0aW9u
IGJldHdlZW4gY2FzdGluZyBvcGVyYXRvcnMgYW5kIGNvbXBsZXggdHlwZXMKLSAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQ2FzdGluZyBvcGVyYXRvcnMgZG9uJ3Qgd29yayB3aXRoIHR5cGVk
ZWZzLiIpOwotICAgICAgICB9Ci0gICAgICAgIHN1cGVyLnZpc2l0RnVuY0RlZihub2RlKTsKLSAg
ICB9CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggMWU0OTljNTBmZjE1NmVjMjcxMmM5NmRlNTk0
OGQ4OGI3NmI5NDgxOC4uZDRkYWM2MzY5ODMzMDliNTBkNzllYTE0ODU1MDk4YjkwZjFjYzM0ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC0yNTUsNiArMjU1
LDEyIEBAIGNsYXNzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIGFyZ3VtZW50LnZpc2l0KHRo
aXMpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZpc2l0Q2FzdEV4cHJlc3Npb24obm9k
ZSkKKyAgICB7CisgICAgICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAgICAg
ICAgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KHRoaXMpOworICAgIH0KIAogICAgIHZpc2l0TG9naWNh
bE5vdChub2RlKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319985</attachid>
            <date>2017-09-05 22:28:32 -0700</date>
            <delta_ts>2017-09-06 10:28:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176316-20170905222831.patch</filename>
            <type>text/plain</type>
            <size>25286</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRiZWU0MDQ1NDExODM1MjAyYjQ4OWZlZmUyYjMxMmY0
M2EwZjQzMy4uNWRiNzllZjQxOGVmZjJjNTU1MmU0MmRjYzg3NDRlMWFiODAyMGFlNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDE3LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBi
ZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgc3RhbmRh
cmQgbGlicmFyeSB0byBpbmNsdWRlIGFsbCBpZGVudGl0eSBjYXN0IG9wZXJhdG9ycyBmb3IgYWxs
IGV4c3RpbmcKKyAgICAgICAgYW5kIHlldC10by1leGlzdCB0eXBlcy4gVGhlIHN0YW5kYXJkIGxp
YnJhcnkgbm93IGhhcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZToKKyAgICAgICAgb3Bl
cmF0b3IgVDw+PFQ+KFQpLiBUaGlzIG1lYW5zICJmb3IgYWxsIFQsIGRlZmluZSBhIGNhc3Qgb3Bl
cmF0b3IgZnJvbSBUIHRvIFQ8Pi4iIFRoZQorICAgICAgICBkdXBsaWNhdGUgPD5zIGxldHMgdXMg
c2F5IHRoaW5ncyBsaWtlIG9wZXJhdG9yIE91dHB1dFZlY3RvcjxUPjxUPihJbnB1dFZlY3RvcjxU
PiB4KS4KKworICAgICAgICBGb3IgdGVzdGluZywgdGhpcyBwYXRjaCBhbHNvIGFkZHMgdGhlIGFi
aWxpdHkgdG8gY2FzdCBhbiBhcmJpdHJhcnkgRXF1YXRhYmxlIHR5cGUgdG8gYm9vbCwKKyAgICAg
ICAgYnkgY29tcGFyaW5nIHRoZSB2YWx1ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhhdCB0
eXBlLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzOiBDb3BpZWQgZnJv
bSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMuCisg
ICAgICAgIChDYXN0RXhwcmVzc2lvbik6CisgICAgICAgIChDYXN0RXhwcmVzc2lvbi5wcm90b3R5
cGUuZ2V0IGZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChDYXN0RXhwcmVzc2lvbi5wcm90b3R5cGUu
Z2V0IHJldHVyblR5cGUpOgorICAgICAgICAoQ2FzdEV4cHJlc3Npb24ucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanM6CisgICAgICAgIChGdW5jLnBy
b3RvdHlwZS50b0RlY2xTdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0lubGluZXIuanM6CisgICAgICAgIChJbmxpbmVyLnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNz
aW9uKToKKyAgICAgICAgKElubGluZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5qczoKKyAgICAgICAgKE5hdGl2ZUZ1bmNJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6Cisg
ICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgor
ICAgICAgICAocGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAo
cGFyc2VOb25PcGVyYXRvckZ1bmNEZWZWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAocGFyc2VH
ZW5lcmljRnVuY0RlZlZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUHJvZ3JhbS5qczoKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLnJlc29sdmVG
dW5jT3ZlcmxvYWQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVP
dmVybG9hZEltcGwuanM6CisgICAgICAgIChyZXNvbHZlT3ZlcmxvYWRJbXBsKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS5wcm9jZXNzRGVyaXZlZENhbGxEYXRhKToKKyAgICAgICAgKFJld3JpdGVyLnBy
b3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlw
ZS52aXNpdENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChvcGVyYXRvci5ULlQpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanM6CisgICAgICAgIChUeXBlRGVmUmVzb2x2
ZXIpOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanM6Cisg
ICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdENhc3RFeHByZXNzaW9uKToKKworMjAxNy0w
OS0wNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAg
IFdTTCBzaG91bGQgc3VwcG9ydCB0aGUgYm9vbCB0eXBlCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyODUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzCmluZGV4IGU5NTU1NDE1MTYzNzEwYzZkNmUxMTNhYTkzZGQyNjM3M2FjOGVjMzUu
LmFmMTZmZjg3OGJmY2U1NDU1ODRmYmRiOTRjMzMyMzljZDU3ZGU3NzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTQxLDYgKzQxLDcgQEAgbG9hZCgiQm9vbExpdGVyYWwu
anMiKTsKIGxvYWQoIkNhbGxBc3NpZ25tZW50LmpzIik7CiBsb2FkKCJDYWxsRXhwcmVzc2lvbi5q
cyIpOwogbG9hZCgiQ2FsbEZ1bmN0aW9uLmpzIik7Citsb2FkKCJDYXN0RXhwcmVzc2lvbi5qcyIp
OwogbG9hZCgiQ2hlY2suanMiKTsKIGxvYWQoIkNoZWNrTGl0ZXJhbFR5cGVzLmpzIik7CiBsb2Fk
KCJDaGVja1JldHVybnMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2FzdEV4cHJlc3Npb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcyZTBjNTE5ZmE0YTJjMTQyYjMwOGMzOWRi
ZGIwMzRmNDNmMWQyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Nhc3RFeHByZXNzaW9uLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworLy8gVGhpcyBp
cyBhIGJpdCBvZiBhIG1pc25vbWVyLCBhcyB0aGlzIHJlcHJlc2VudHMgY2FzdHMgYXMgd2VsbCBh
cyBjb25zdHJ1Y3RvcnMuCisvLyBTeW50YWN0aWNhbGx5IHRoZXkgYXJlIGlkZW50aWNhbDsgYSBj
YXN0IGp1c3QgdGFrZXMgb25lIGFyZ3VtZW50IHdoZXJlYXMgYQorLy8gY29uc3RydWN0b3IgdGFr
ZXMgMC1uLgorY2xhc3MgQ2FzdEV4cHJlc3Npb24gZXh0ZW5kcyBDYWxsRXhwcmVzc2lvbiB7Cisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCByZXR1cm5UeXBlLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVu
dExpc3QpCisgICAgeworICAgICAgICBzdXBlcihvcmlnaW4sIENhc3RFeHByZXNzaW9uLmZ1bmN0
aW9uTmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRMaXN0KTsKKyAgICAgICAgdGhpcy5fcmV0
dXJuVHlwZSA9IHJldHVyblR5cGU7CisgICAgfQorCisgICAgc3RhdGljIGdldCBmdW5jdGlvbk5h
bWUoKSB7IHJldHVybiAib3BlcmF0b3IgY2FzdCI7IH0KKyAgICAKKyAgICBnZXQgcmV0dXJuVHlw
ZSgpIHsgcmV0dXJuIHRoaXMuX3JldHVyblR5cGU7IH0KKyAgICAKKyAgICB0b1N0cmluZygpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5UeXBlICsgIjwiICsgdGhpcy50eXBlQXJn
dW1lbnRzICsgIj4oIiArIHRoaXMuYXJndW1lbnRMaXN0ICsgIikiOworICAgIH0KK30KKwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKaW5kZXggNzYxMmQ1MzhkMzEzODZl
ZTljNjBjYjY0Zjk2Yzg3YzQ5MTZlZTYxZS4uOWI2OWNmODQ1OTk3Yjc1OGVkMTYzZWUyYmQ3Zjgx
MzIxMTk5YzcwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hl
Y2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBA
IC0yMzMsOCArMjMzLDggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICAgICAgcmVzdWx0ID0gZXhwcmVzc2lvbi52aXNpdCh0aGlzKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9Ci0gICAgCi0gICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQorCisgICAg
Y2hlY2tDYXN0T3JDYWxsRXhwcmVzc2lvbihub2RlLCBjYXN0KQogICAgIHsKICAgICAgICAgZm9y
IChsZXQgdHlwZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKICAgICAgICAgICAgIHR5
cGVBcmd1bWVudC52aXNpdCh0aGlzKTsKQEAgLTI0NSw2ICsyNDUsOCBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICByZXR1cm4gVHlwZVJlZi53cmFwKG5ld0Fy
Z3VtZW50KTsKICAgICAgICAgfSk7CiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9IGFyZ3Vt
ZW50VHlwZXM7CisgICAgICAgIGlmIChjYXN0KQorICAgICAgICAgICAgbm9kZS5yZXR1cm5UeXBl
LnZpc2l0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgbGV0IG92ZXJsb2FkID0gbnVsbDsKICAg
ICAgICAgbGV0IGZhaWx1cmVzID0gW107CkBAIC0yNTcsNyArMjU5LDcgQEAgY2xhc3MgQ2hlY2tl
ciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHR5cGVQYXJhbWV0ZXIucHJvdG9j
b2wucHJvdG9jb2xEZWNsLnNpZ25hdHVyZXNCeU5hbWVXaXRoVHlwZVZhcmlhYmxlKG5vZGUubmFt
ZSwgdHlwZVBhcmFtZXRlcik7CiAgICAgICAgICAgICBpZiAoIXNpZ25hdHVyZXMpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBvdmVybG9hZCA9IHJlc29sdmVPdmVybG9h
ZEltcGwoc2lnbmF0dXJlcywgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAg
ICAgICAgICAgIG92ZXJsb2FkID0gcmVzb2x2ZU92ZXJsb2FkSW1wbChzaWduYXR1cmVzLCBub2Rl
LnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGNhc3QgPyBub2RlLnJldHVyblR5cGUgOiB1
bmRlZmluZWQpOwogICAgICAgICAgICAgaWYgKG92ZXJsb2FkLmZ1bmMpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZhaWx1cmVz
KTsKQEAgLTI2NSw3ICsyNjcsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFvdmVybG9hZCkgewogICAgICAgICAgICAgb3ZlcmxvYWQg
PSB0aGlzLl9wcm9ncmFtLnJlc29sdmVGdW5jT3ZlcmxvYWQoCi0gICAgICAgICAgICAgICAgbm9k
ZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpOworICAgICAgICAgICAg
ICAgIG5vZGUubmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBjYXN0ID8g
bm9kZS5yZXR1cm5UeXBlIDogdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGlmICghb3ZlcmxvYWQu
ZnVuYykgewogICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goLi4ub3ZlcmxvYWQuZmFpbHVy
ZXMpOwogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmluZCBmdW5jdGlv
biBmb3IgY2FsbCI7CkBAIC0yODQsNSArMjg2LDE1IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbm9kZS5yZXNvbHZlKG92ZXJsb2Fk
KTsKICAgICB9CisKKyAgICB2aXNpdENhc3RFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5jaGVja0Nhc3RPckNhbGxFeHByZXNzaW9uKG5vZGUsIHRydWUpOworICAg
IH0KKyAgICAKKyAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5jaGVja0Nhc3RPckNhbGxFeHByZXNzaW9uKG5vZGUsIGZhbHNlKTsKKyAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCmluZGV4IDhkMmZmMjQ4NGE2
NGU4OTc2MDBlZWQ4N2I0NzA2NDViYjA1MDZmZjkuLmY5NjMzM2ZkMjNlZjRhNDYxNjY4NWQ4MjAy
ZjVmMzE4OThlYmIzYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwpAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgCiAgICAgdG9EZWNs
U3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAodGhpcy5pc0Nhc3QgPyAiIiA6IHRoaXMu
cmV0dXJuVHlwZSArICIgIikgKyB0aGlzLm5hbWUgKyAiPCIgKyB0aGlzLnR5cGVQYXJhbWV0ZXJz
ICsgIj4oIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAgICAgICAgcmV0dXJuICh0aGlzLmlz
Q2FzdCA/ICJvcGVyYXRvciAiICsgdGhpcy5yZXR1cm5UeXBlIDogdGhpcy5yZXR1cm5UeXBlICsg
IiAiICsgdGhpcy5uYW1lKSArICI8IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhp
cy5wYXJhbWV0ZXJzICsgIikiOwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0luc3RhbnRpYXRvci5qcwppbmRleCA4
NGU0N2ZlODVlNWM2NjI1MTI5ODI0NDg4YTdlNDgwZTAyNDllODE3Li5lNmE3ZGEwNTdiMWFiNzNm
MzVhMWJiYTAyNmU1ZTBkN2UxYWJiNjEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Z1bmNJbnN0YW50aWF0b3IuanMKQEAgLTkyLDcgKzkyLDggQEAgY2xhc3MgRnVu
Y0luc3RhbnRpYXRvciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jSW5z
dGFuY2UoCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgIGZ1
bmMucmV0dXJuVHlwZS52aXNpdChzdWJzdGl0dXRpb24pLAotICAgICAgICAgICAgICAgICAgICBm
dW5jLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudmlzaXQoc3Vic3RpdHV0
aW9uKSkpOworICAgICAgICAgICAgICAgICAgICBmdW5jLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRl
ciA9PiBwYXJhbWV0ZXIudmlzaXQoc3Vic3RpdHV0aW9uKSksCisgICAgICAgICAgICAgICAgICAg
IGZ1bmMuaXNDYXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBsZXQgcmVz
dWx0aW5nRnVuYyA9IGZ1bmMudmlzaXQobmV3IEluc3RhbnRpYXRlKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0lubGluZXIuanMKaW5kZXggNmNiMTU2OGY5NjBmOGFkZmEzY2MwNGVl
MjU1NWIwMTMyMDRiZjhmYy4uZTdlODMyZTc1MWU4NTUyOTE4ZmE3YmMzNmMyM2FlYmQwOGU2YTc1
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lci5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmVyLmpzCkBAIC01OCw1ICs1
OCwxMCBAQCBjbGFzcyBJbmxpbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgICAg
IGZ1bmMucGFyYW1ldGVycywgZnVuYy5ib2R5KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAg
dmlzaXRDYXN0RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmlz
aXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IGVjMmFkYzY3MDllNzIxOGQyODJmMjRjMTlh
OWY5NzA2YmIxNjBmNmQuLmYzYWEwZDUzMDc0NGI0MjhiZDNmZjkyNzE2YzczM2M3MDdmOGRiMTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMTc4
LDI3ICsxNzgsNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0
aXZlIG9wZXJhdG9yIGludDw+KGludCkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PgotICAgICAgICAgICAg
ICAgICAgICBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJh
dG9yIHVpbnQ8Pih1aW50KSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+Ci0gICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAK
LSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgYm9v
bDw+KGJvb2wpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4KLSAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3godmFsdWUubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAg
ICBsZXQgYXJyYXlFbGVtZW50UHRyID0gZnVuYyA9PiB7CiAgICAgICAgICAgICBmdW5jLmltcGxl
bWVudGF0aW9uID0gKFtyZWYsIGluZGV4XSwgbm9kZSkgPT4gewogICAgICAgICAgICAgICAgIHJl
ZiA9IHJlZi5sb2FkVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRp
dmVGdW5jLmpzCmluZGV4IDA5NjRiMWU3ZjM5OWQ2NDIxMzZmMjkzYTk5ZWU2ZGU5YjdjZTYwZjAu
LjQ2ZTY4ODVhZjAwODMxYTMxMWE3OGY3MmVhNTY0ODIwYTA1MDY5M2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcwpAQCAtMjUsNyArMjUsNyBAQAogInVz
ZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4dGVuZHMgRnVuYyB7Ci0gICAgY29uc3Ry
dWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVy
cywgaXNDYXN0ID0gZmFsc2UpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5U
eXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXNDYXN0KQogICAgIHsKICAgICAgICAg
c3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVy
cywgaXNDYXN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVGdW5jSW5zdGFuY2UuanMKaW5kZXggOWI3ZDY2NmQwNTI4MGY0ZTQ2ZWFmMGM4MzBl
YWM2ODZiOTc3ZjcyYS4uZWQ5ZTcxZjQwNmNkNjIwZGIxMDhmY2YwYjRmZTVkYjMwNjI3YTdhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuY0luc3Rh
bmNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0
YW5jZS5qcwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVG
dW5jSW5zdGFuY2UgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihmdW5jLCByZXR1cm5U
eXBlLCBwYXJhbWV0ZXJzKQorICAgIGNvbnN0cnVjdG9yKGZ1bmMsIHJldHVyblR5cGUsIHBhcmFt
ZXRlcnMsIGlzQ2FzdCkKICAgICB7Ci0gICAgICAgIHN1cGVyKGZ1bmMub3JpZ2luLCBmdW5jLm5h
bWUsIHJldHVyblR5cGUsIFtdLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgc3VwZXIoZnVuYy5vcmln
aW4sIGZ1bmMubmFtZSwgcmV0dXJuVHlwZSwgW10sIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAg
fQogICAgIAogICAgIGdldCBmdW5jKCkgeyByZXR1cm4gdGhpcy5fZnVuYzsgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCA0MjlmMDRjNmRmYmVmNWExNjJmZWM2NmVj
MzMwZjUzZTMzMDI0NzI3Li5lZmRhMDQ5NzNlYjY4MTRkNmIwMTU4NWM2MThmNGViNmRiY2ZjZmY1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMzgwLDggKzM4MCwx
MCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRl
eHQpCiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJz
ZVBvc3NpYmxlUHJlZml4KCkpOwogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikp
CiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBh
cnNlUG9zc2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEi
KSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTG9naWNhbE5vdCh0b2tlbiwgbmV3IENhbGxFeHBy
ZXNzaW9uKHRva2VuLCAib3BlcmF0b3IgYm9vbCIsIFtdLCBbcGFyc2VQb3NzaWJsZVByZWZpeCgp
XSkpOworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKKyAgICAgICAgICAg
IGxldCByZW1haW5kZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICByZXR1
cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYXN0RXhwcmVzc2lvbihyZW1haW5kZXIub3Jp
Z2luLCBuZXcgVHlwZVJlZihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtdKSwgW10sIFtyZW1h
aW5kZXJdKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgo
KTsKICAgICB9CiAgICAgCkBAIC02MjAsNDQgKzYyMiwyNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiBjb25z
dW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VP
cGVyYXRvckZ1bmNEZWZWYWx1ZXMoKQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9Owot
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NjMxNiBDb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGNhc3Rpbmcg
b3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCi0gICAgICAgIGxldCBjYXN0VHlwZSA9IGNvbnN1
bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgcmVzdWx0LnJldHVyblR5cGUgPSBu
ZXcgVHlwZVJlZihuYW1lLCBjYXN0VHlwZSwgW10pOwotICAgICAgICByZXN1bHQubmFtZSA9ICJv
cGVyYXRvciAiICsgY2FzdFR5cGU7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSB0cnVlOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlTm9uT3BlcmF0
b3JGdW5jRGVmVmFsdWVzKCkKLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAg
ICAgcmVzdWx0LnJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAgcmVzdWx0Lm9yaWdp
biA9IHJlc3VsdC5yZXR1cm5UeXBlLm9yaWdpbjsKLSAgICAgICAgcmVzdWx0Lm5hbWUgPSBwYXJz
ZUZ1bmNOYW1lKCk7Ci0gICAgICAgIHJlc3VsdC5pc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUdlbmVyaWNGdW5jRGVmVmFs
dWVzKCkKKyAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWNsKCkKICAgICB7CisgICAgICAgIGxldCBv
cmlnaW47CisgICAgICAgIGxldCByZXR1cm5UeXBlOworICAgICAgICBsZXQgbmFtZTsKKyAgICAg
ICAgbGV0IGlzQ2FzdDsKICAgICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1lKCJv
cGVyYXRvciIpOwogICAgICAgICBpZiAob3BlcmF0b3JUb2tlbikgewotICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7Ci0gICAgICAgICAgICByZXN1
bHQub3JpZ2luID0gb3BlcmF0b3JUb2tlbi5vcmlnaW47Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICAgICAgb3JpZ2luID0gb3BlcmF0b3JUb2tlbjsKKyAgICAgICAgICAgIHJl
dHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgIG5hbWUgPSBDYXN0RXhwcmVzc2lv
bi5mdW5jdGlvbk5hbWU7CisgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAg
b3JpZ2luID0gcmV0dXJuVHlwZS5vcmlnaW47CisgICAgICAgICAgICBuYW1lID0gcGFyc2VGdW5j
TmFtZSgpOworICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gcGFyc2VGdW5jRGVjbCgpCi0gICAgewotICAgICAgICBsZXQgdmFsdWVzID0gcGFyc2VH
ZW5lcmljRnVuY0RlZlZhbHVlcygpOwogICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJz
ZVR5cGVQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0
ZXJzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyh2YWx1ZXMub3JpZ2luLCB2YWx1ZXMubmFt
ZSwgdmFsdWVzLnJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCB2YWx1ZXMu
aXNDYXN0KTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlw
ZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9QcmVwYXJlLmpzCmluZGV4IDI5NmFmOWQ5MmQ1ZjI2MmEyZWRjZDFkNjNjZjU5YTcxNzkzYjgx
ZjguLmU4ZGFiZjNjZDVjZTRkOGQyYjA4MzJiNmM4NmI2MzZlZTcxMTI1MjcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwpAQCAtMjcsOCArMjcsOSBAQAogZnVuY3Rp
b24gcHJlcGFyZShvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiB7CiAgICAgbGV0IHBy
b2dyYW0gPSBuZXcgUHJvZ3JhbSgpOwotICAgIHBhcnNlKHByb2dyYW0sICIvaW50ZXJuYWwvc3Rk
bGliIiwgMjgsIHN0YW5kYXJkTGlicmFyeSk7CisgICAgcGFyc2UocHJvZ3JhbSwgIi9pbnRlcm5h
bC9zdGRsaWIvcHJvbG9ndWUiLCAyOCwgc3RhbmRhcmRMaWJyYXJ5UHJvbG9ndWUpOwogICAgIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCk7CisgICAgcGFyc2Uo
cHJvZ3JhbSwgIi9pbnRlcm5hbC9zdGRsaWIvZXBpbG9ndWUiLCA3MCwgc3RhbmRhcmRMaWJyYXJ5
RXBpbG9ndWUpOwogICAgIHJlc29sdmVOYW1lcyhwcm9ncmFtKTsKICAgICByZXNvbHZlVHlwZURl
ZnMocHJvZ3JhbSk7CiAgICAgY2hlY2socHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUHJvZ3JhbS5qcwppbmRleCAwN2E5MzNhMzM4ZjYwOGNhYjVjNjE1MTI4NjlmYmQ5YWMy
MDQwMDlhLi43MWUzZWFmZWVhMzZiYzIxMGJhYWQ5NDVlNzlmNzY1ZGU1MjE5MzFhIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKQEAgLTU4LDEzICs1OCwxMyBAQCBj
bGFzcyBQcm9ncmFtIGV4dGVuZHMgTm9kZSB7CiAgICAgICAgIHRoaXMuX3RvcExldmVsU3RhdGVt
ZW50cy5wdXNoKHN0YXRlbWVudCk7CiAgICAgfQogICAgIAotICAgIHJlc29sdmVGdW5jT3Zlcmxv
YWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcykKKyAgICByZXNvbHZlRnVuY092
ZXJsb2FkKG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiAg
ICAgewogICAgICAgICBsZXQgZnVuY3Rpb25zID0gdGhpcy5mdW5jdGlvbnMuZ2V0KG5hbWUpOwog
ICAgICAgICBpZiAoIWZ1bmN0aW9ucykKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtd
fTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9u
cywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcyk7CisgICAgICAgIHJldHVybiByZXNvbHZl
T3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0
dXJuVHlwZSk7CiAgICAgfQogICAgIAogICAgIGdldCBuYW1lQ29udGV4dCgpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwppbmRl
eCBiYjNlMmI0MDQwMWI2NWQxNWY4MTFiNDFiNDdiMWExNjJmOWEyNzBkLi43OTMxNGQ1NWIzOGZj
YzJmNTAwODhjN2I1NzUwZjY2ZTc1NDU1M2M3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMKQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogInVzZSBzdHJpY3QiOwogCi1mdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0
aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcykKK2Z1bmN0aW9uIHJlc29sdmVPdmVy
bG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCByZXR1cm5U
eXBlKQogewogICAgIGxldCBmYWlsdXJlcyA9IFtdOwogICAgIGZvciAobGV0IGZ1bmMgb2YgZnVu
Y3Rpb25zKSB7CkBAIC00Miw3ICs0Miw3IEBAIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwo
ZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQogICAgICAgICAgICAgbGV0
IGFyZ3VtZW50ID0gdHlwZUFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIg
PSBmdW5jLnR5cGVQYXJhbWV0ZXJzW2ldOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudC51bmlm
eSh1bmlmaWNhdGlvbkNvbnRleHQsIHBhcmFtZXRlcikpIHsKLSAgICAgICAgICAgICAgICBmYWls
dXJlcy5wdXNoKG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKGZ1bmMsICJUeXBlIGFyZ3Vt
ZW50ICMiICsgKGkgKyAxKSArICIgZm9yIHBhcmFtZXRlciAiICsgZnVuYy50eXBlUGFyYW1ldGVy
cy5uYW1lICsgIiBkb2VzIG5vdCBtYXRjaCAocGFzc2VkICIgKyBhcmd1bWVudCArICIsIHJlcXVp
cmUgIiArIHBhcmFtZXRlciArICIpIikpOworICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2go
bmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIlR5cGUgYXJndW1lbnQgIyIgKyAo
aSArIDEpICsgIiBmb3IgcGFyYW1ldGVyICIgKyBwYXJhbWV0ZXIubmFtZSArICIgZG9lcyBub3Qg
bWF0Y2ggKHBhc3NlZCAiICsgYXJndW1lbnQgKyAiLCByZXF1aXJlICIgKyBwYXJhbWV0ZXIgKyAi
KSIpKTsKICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtNjAsNiArNjAsMTIgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJs
b2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
cmV0dXJuVHlwZSkgeworICAgICAgICAgICAgaWYgKCFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0
aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBlKSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmVz
LnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIlJldHVybiB0eXBlICIg
KyBmdW5jLnJldHVyblR5cGUgKyAiIGRvZXMgbm90IG1hdGNoICIgKyByZXR1cm5UeXBlKSk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAg
ICAgaWYgKCF1bmlmaWNhdGlvbkNvbnRleHQudmVyaWZ5KCkpIHsKICAgICAgICAgICAgIGZhaWx1
cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIlZpb2xhdGVzIHR5
cGUgdmFyaWFibGUgY29uc3RyYWludHMiKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggZDI5MDcxMzkxZmRhM2Y4
OWE1ZmJjZDBhZDZlN2RhNWRjODlkNDdlOS4uNjVmZGI3ODYyNjgxN2I5N2Q0NzRiZjMwNWVhZmEw
MzRlZTY0MjNmYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMK
QEAgLTIzNSwxMyArMjM1LDkgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgICAgICByZXN1bHQudHlw
ZSA9IG5vZGUudHlwZSA/IG5vZGUudHlwZS52aXNpdCh0aGlzKSA6IG51bGw7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQotICAgIAotICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkK
KworICAgIHByb2Nlc3NEZXJpdmVkQ2FsbERhdGEobm9kZSwgcmVzdWx0KQogICAgIHsKLSAgICAg
ICAgbGV0IHJlc3VsdCA9IG5ldyBDYWxsRXhwcmVzc2lvbigKLSAgICAgICAgICAgIG5vZGUub3Jp
Z2luLCBub2RlLm5hbWUsCi0gICAgICAgICAgICBub2RlLnR5cGVBcmd1bWVudHMubWFwKHR5cGVB
cmd1bWVudCA9PiB0eXBlQXJndW1lbnQudmlzaXQodGhpcykpLAotICAgICAgICAgICAgbm9kZS5h
cmd1bWVudExpc3QubWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAg
ICAgIGxldCBhY3R1YWxUeXBlQXJndW1lbnRzID0gbm9kZS5hY3R1YWxUeXBlQXJndW1lbnRzOwog
ICAgICAgICBpZiAoYWN0dWFsVHlwZUFyZ3VtZW50cykgewogICAgICAgICAgICAgcmVzdWx0LmFj
dHVhbFR5cGVBcmd1bWVudHMgPQpAQCAtMjU0LDYgKzI1MCwyNCBAQCBjbGFzcyBSZXdyaXRlciB7
CiAgICAgICAgIHJlc3VsdC5uYXRpdmVGdW5jSW5zdGFuY2UgPSBub2RlLm5hdGl2ZUZ1bmNJbnN0
YW5jZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2aXNpdENhc3RFeHBy
ZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IENhc3RFeHByZXNz
aW9uKAorICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlz
KSwKKyAgICAgICAgICAgIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5
cGVBcmd1bWVudC52aXNpdCh0aGlzKSksCisgICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdC5t
YXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMucHJvY2Vzc0Rlcml2ZWRDYWxsRGF0YShub2RlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0g
bmV3IENhbGxFeHByZXNzaW9uKAorICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwK
KyAgICAgICAgICAgIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5cGVB
cmd1bWVudC52aXNpdCh0aGlzKSksCisgICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdC5tYXAo
YXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cHJvY2Vzc0Rlcml2ZWRDYWxsRGF0YShub2RlLCByZXN1bHQpOworICAgIH0KICAgICAKICAgICB2
aXNpdEZ1bmN0aW9uTGlrZUJsb2NrKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IGM4ODhmODU2MzY1NDBhMDc3
YjQ5NDNjYjczZjEyOTBiMTUyNGM1YmIuLjY3NzZhYjQxZjZiZGZjYWM1ODczNTkzZTQyNDczMTUw
NzBlMGE0ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5k
YXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFy
ZExpYnJhcnkuanMKQEAgLTI1LDcgKzI1LDcgQEAKICJ1c2Ugc3RyaWN0IjsKIAogLy8gTk9URTog
VGhlIG5leHQgbGluZSBpcyBsaW5lIDI4LCBhbmQgd2UgcmVseSBvbiB0aGlzIGluIFByZXBhcmUu
anMuCi1jb25zdCBzdGFuZGFyZExpYnJhcnkgPSBgCitjb25zdCBzdGFuZGFyZExpYnJhcnlQcm9s
b2d1ZSA9IGAKIC8vIFRoaXMgaXMgdGhlIFdTTCBzdGFuZGFyZCBsaWJyYXJ5LiBJbXBsZW1lbnRh
dGlvbnMgb2YgYWxsIG9mIHRoZXNlIHRoaW5ncyBhcmUgaW4KIC8vIEludHJpbnNpY3MuanMuIFRo
ZSBvbmx5IHRoaW5nIHRoYXQgZ2V0cyBkZWZpbmVkIGJlZm9yZSB3ZSBnZXQgaGVyZSBpcyB0aGUg
cHJpbWl0aXZlCiAvLyBwcm90b2NvbC4KQEAgLTUzLDEyICs1MywyMyBAQCBuYXRpdmUgYm9vbCBv
cGVyYXRvcj09KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCwgdWludCk7
CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOwogCi1uYXRpdmUgb3BlcmF0b3Ig
aW50KGludCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludCh1aW50KTsKLW5hdGl2ZSBvcGVyYXRvciBi
b29sKGJvb2wpOworcHJvdG9jb2wgRXF1YXRhYmxlIHsKKyAgICBib29sIG9wZXJhdG9yPT0oRXF1
YXRhYmxlLCBFcXVhdGFibGUpOworfQorCitvcGVyYXRvciBUPD48VD4oVCB4KSB7CisgICAgcmV0
dXJuIHg7Cit9CiAKIG5hdGl2ZSB0aHJlYWQgVF4gb3BlcmF0b3ImW108VD4odGhyZWFkIFRbXSwg
dWludCk7CiBuYXRpdmUgdGhyZWFkZ3JvdXAgVF4gb3BlcmF0b3ImW108VDpwcmltaXRpdmU+KHRo
cmVhZGdyb3VwIFRbXSwgdWludCk7CiBuYXRpdmUgZGV2aWNlIFReIG9wZXJhdG9yJltdPFQ6cHJp
bWl0aXZlPihkZXZpY2UgVFtdLCB1aW50KTsKIG5hdGl2ZSBjb25zdGFudCBUXiBvcGVyYXRvciZb
XTxUOnByaW1pdGl2ZT4oY29uc3RhbnQgVFtdLCB1aW50KTsKIGA7CisKK2NvbnN0IHN0YW5kYXJk
TGlicmFyeUVwaWxvZ3VlID0gYAorb3BlcmF0b3IgYm9vbDw+PFQ6RXF1YXRhYmxlPihUIHgpIHsK
KyAgICBUIGRlZmF1bHRWYWx1ZTsKKyAgICByZXR1cm4geCAhPSBkZWZhdWx0VmFsdWU7Cit9Citg
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IDY0MTM1N2Q1MzBh
MTA0YjU1OTE5ZGQ5OTJhYzQ0NjFjYTRhYTUwMDIuLjZlNmIwNDlkMGQ0MDY5Y2E2ZmI0NjBhMjU0
MjU1Y2RlZTVmOGM5NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwK
QEAgLTE3LDYgKzE3LDcgQEAKIDxzY3JpcHQgc3JjPSJDYWxsQXNzaWdubWVudC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IkNhbGxGdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2FzdEV4cHJlc3Np
b24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJDaGVja0xpdGVyYWxUeXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hl
Y2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmpz
CmluZGV4IGQ1Y2I1MjkxZWQyMmNhNThlMGUwYjllNzk4YjlmYmI1ZWRlNDdiZjAuLjRjYjJlZGY2
ZjkwNjYwMjg0OTI3ODU4ZmNhNTczYWM1OTliMDUxMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5qcwpAQCAtMjAxLDYgKzIwMSwxMyBAQCBmdW5jdGlvbiBURVNUX2VxdWFsaXR5
VHlwZUZhaWx1cmUoKQogICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IgJiYg
ZS5tZXNzYWdlLmluZGV4T2YoIi9pbnRlcm5hbC90ZXN0OjEiKSAhPSAtMSk7CiB9CiAKK2Z1bmN0
aW9uIFRFU1RfZ2VuZXJhbE5lZ2F0aW9uKCkKK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgi
Ym9vbCBmb28oaW50IHgpIHsgcmV0dXJuICF4OyB9Iik7CisgICAgY2hlY2tCb29sKHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDcpXSks
IGZhbHNlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMCldKSwgdHJ1ZSk7Cit9CisKIGZ1bmN0aW9uIFRF
U1RfYWRkMSgpIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgiaW50IGZvbyhpbnQgeCkgeyBy
ZXR1cm4geCArIDE7IH0iKTsKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA0MildKSwgNDMpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29sdmVyLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29sdmVyLmpzCmluZGV4IDJkMjBk
ZTk1OTAzN2I2N2RmY2VmYTk0MDhlMDVhYTk3OGZiNTIxOTcuLjFkYTE1ZmQ2Mjk1YzU3YzM2ZWQ4
MDZhZDJhMjE5ZjNmMDZkMzM2YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMKQEAgLTMwLDE1ICszMCw2IEBAIGNsYXNzIFR5cGVEZWZS
ZXNvbHZlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlz
Ll92aXNpdGluZyA9IG5ldyBWaXNpdGluZ1NldCgpOwogICAgIH0KLQotICAgIHZpc2l0RnVuY0Rl
Zihub2RlKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUuaXNDYXN0ICYmIG5vZGUucmV0dXJuVHlw
ZS50eXBlIGluc3RhbmNlb2YgVHlwZURlZikgewotICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYgQ29ycmVjdGx5IGhhbmRs
ZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBjYXN0aW5nIG9wZXJhdG9ycyBhbmQgY29tcGxleCB0
eXBlcwotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYXN0aW5nIG9wZXJhdG9ycyBkb24n
dCB3b3JrIHdpdGggdHlwZWRlZnMuIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3VwZXIudmlzaXRG
dW5jRGVmKG5vZGUpOwotICAgIH0KICAgICAKICAgICB2aXNpdFR5cGVSZWYobm9kZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCAxZTQ5OWM1MGZm
MTU2ZWMyNzEyYzk2ZGU1OTQ4ZDg4Yjc2Yjk0ODE4Li5kNGRhYzYzNjk4MzMwOWI1MGQ3OWVhMTQ4
NTUwOThiOTBmMWNjMzRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9WaXNpdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3Iu
anMKQEAgLTI1NSw2ICsyNTUsMTIgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAg
YXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdmlzaXRD
YXN0RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy52aXNpdENhbGxFeHByZXNz
aW9uKG5vZGUpOworICAgICAgICBub2RlLnJldHVyblR5cGUudmlzaXQodGhpcyk7CisgICAgfQog
CiAgICAgdmlzaXRMb2dpY2FsTm90KG5vZGUpCiAgICAgewo=
</data>
<flag name="review"
          id="340156"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>