<?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>200460</bug_id>
          
          <creation_ts>2019-08-05 17:25:07 -0700</creation_ts>
          <short_desc>[WHLSL] Simplify and eliminate redundant work in WHLSLFunctionWriter.cpp</short_desc>
          <delta_ts>2019-08-07 12:59:20 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1558646</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-05 17:25:07 -0700</bug_when>
    <thetext>WHLSLFunctionWriter.cpp has a few blatantly unnecessary/inneficient parts:
- FunctionDeclarationWriter is a subclass of Visitor for no reason, it could just be a stand-alone function
- We convert a few times between StringBuilder and String. We could just keep a single StringBuilder throughout.
- We give a name to every function in functionMapping, even those that we know at that point not to be reachable.
- When computing reachable functions we can visit each function many times (exponential complexity, same problem that we already fixed in the recursion checker)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558649</commentid>
    <comment_count>1</comment_count>
      <attachid>375586</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-05 17:31:29 -0700</bug_when>
    <thetext>Created attachment 375586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558661</commentid>
    <comment_count>2</comment_count>
      <attachid>375586</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-05 17:44:38 -0700</bug_when>
    <thetext>Comment on attachment 375586
Patch

It conflicts with the patch that inlines native functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558673</commentid>
    <comment_count>3</comment_count>
      <attachid>375591</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-05 18:32:19 -0700</bug_when>
    <thetext>Created attachment 375591
Patch

Properly rebased.
One of the simplifications is gone because it no longer makes sense (we no longer want to emit native function declarations, even if they&apos;re reachable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558674</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-05 18:35:05 -0700</bug_when>
    <thetext>Attachment 375591 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:740:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:767:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559210</commentid>
    <comment_count>5</comment_count>
      <attachid>375721</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-07 11:28:20 -0700</bug_when>
    <thetext>Created attachment 375721
Patch

Rebased, most of the part disappeared because it was duplicated in https://bugs.webkit.org/attachment.cgi?id=375632&amp;action=prettypatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559260</commentid>
    <comment_count>6</comment_count>
      <attachid>375721</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-07 12:58:21 -0700</bug_when>
    <thetext>Comment on attachment 375721
Patch

Clearing flags on attachment: 375721

Committed r248384: &lt;https://trac.webkit.org/changeset/248384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559261</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-07 12:58:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559262</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-07 12:59:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/54046511&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375586</attachid>
            <date>2019-08-05 17:31:29 -0700</date>
            <delta_ts>2019-08-05 18:32:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch200460</filename>
            <type>text/plain</type>
            <size>13568</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOWJmNmJiYWJiOS4uZjEzY2JmZjBjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0wOC0wNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSExTTF0gU2ltcGxpZnkgYW5kIGVsaW1pbmF0ZSByZWR1bmRhbnQg
d29yayBpbiBXSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgNCB0cml2aWFsIHNpbXBsaWZpY2F0aW9uczoKKyAgICAg
ICAgLSBSZXBsYWNlIEZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXIgYnkgYSBzdGFuZGFsb25lIGZ1
bmN0aW9uLCB0aGVyZSB3YXMgbm8gcmVhc29uIHRvIG1ha2UgaXQgYSBzdWJjbGFzcyBvZiBWaXNp
dG9yCisgICAgICAgIC0gS2VlcCBhIHNpbmdsZSBTdHJpbmdCdWlsZGVyIHRocm91Z2hvdXQgdG8g
bWluaW1pemUgY29udmVyc2lvbnMgYmV0d2VlbiBTdHJpbmdCdWlsZGVyIGFuZCBTdHJpbmcKKyAg
ICAgICAgLSBPbmx5IHB1dCB0aGUgcmVhY2hhYmxlIGZ1bmN0aW9ucyBpbiBmdW5jdGlvbk1hcHBp
bmcKKyAgICAgICAgLSBBdm9pZCBhbiBleHBvbmVudGlhbCBibG93LXVwIGluIHRoZSBjb21wdXRh
dGlvbiBvZiByZWFjaGFibGUgZnVuY3Rpb25zLgorCisgICAgICAgIEkgaGF2ZSB3YXkgdG9vIG11
Y2ggbm9pc2Ugb24gbXkgc3lzdGVtIChzd2luZ3MgYmFjayBhbmQgZm9ydGggYmV0d2VlbiA3IGFu
ZCAxMm1zIGZvciB0aGlzIHBoYXNlKSB0byBtZWFzdXJlIGEgcGVyZm9ybWFuY2Ugd2luLAorICAg
ICAgICBidXQgc2luY2UgdGhpcyBwYXRjaCBzaW1wbGlmaWVzIHRoaW5ncyB3aXRob3V0IGFkZGlu
ZyBjb21wbGV4aXR5IEkgdGhpbmsgaXQgaXMgd29ydGggaXQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3QgYXMgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6ZGVjbGFyZUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpSZW5k
ZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OkNvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpzaGFyZWRNZXRhbEZ1bmN0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6Om1ldGFsRnVuY3Rpb25zKToKKwogMjAxOS0wOC0wNSAgVGFr
YXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0g
aW1wbGVtZW50IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeUluZm8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5j
dGlvbldyaXRlci5jcHAKaW5kZXggMDVlYjU1NWU1YzYuLmE2NzkzNWExMzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9u
V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNDcsNTYgKzQ3LDM1IEBAIG5hbWVzcGFjZSBX
SExTTCB7CiAKIG5hbWVzcGFjZSBNZXRhbCB7CiAKLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb25X
cml0ZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlv
bldyaXRlcihUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotICAgICAgICA6
IG1fdHlwZU5hbWVyKHR5cGVOYW1lcikKLSAgICAgICAgLCBtX2Z1bmN0aW9uTWFwcGluZyhmdW5j
dGlvbk1hcHBpbmcpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVjbGFy
YXRpb25Xcml0ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSB7IHJldHVy
biBtX3N0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZ1
bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBUeXBlTmFtZXIm
IG1fdHlwZU5hbWVyOwotICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFu
Z2xlZEZ1bmN0aW9uTmFtZT4mIG1fZnVuY3Rpb25NYXBwaW5nOwotICAgIFN0cmluZ0J1aWxkZXIg
bV9zdHJpbmdCdWlsZGVyOwotfTsKLQotdm9pZCBGdW5jdGlvbkRlY2xhcmF0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCitzdGF0
aWMgdm9pZCBkZWNsYXJlRnVuY3Rpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlv
bkRlY2xhcmF0aW9uLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBTdHJp
bmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewogICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9u
LmVudHJ5UG9pbnRUeXBlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rp
b25EZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKKyAgICBh
dXRvIGl0ZXJhdG9yID0gZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRpb24p
OworICAgIEFTU0VSVChpdGVyYXRvciAhPSBmdW5jdGlvbk1hcHBpbmcuZW5kKCkpOworICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShm
dW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCh0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVtpXS0+
dHlwZSgpKSk7CiAgICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKKyAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogfQogCiBjbGFzcyBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIgOiBwdWJsaWMgVmlzaXRvciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyKEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVy
LCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+
JiBmdW5jdGlvbk1hcHBpbmcsIExheW91dCYgbGF5b3V0KQorICAgIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcihJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFz
aE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVu
Y3Rpb25NYXBwaW5nLCBMYXlvdXQmIGxheW91dCwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
cikKICAgICAgICAgOiBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKICAgICAgICAgLCBtX3R5cGVO
YW1lcih0eXBlTmFtZXIpCiAgICAgICAgICwgbV9mdW5jdGlvbk1hcHBpbmcoZnVuY3Rpb25NYXBw
aW5nKQorICAgICAgICAsIG1fc3RyaW5nQnVpbGRlcihzdHJpbmdCdWlsZGVyKQogICAgICAgICAs
IG1fbGF5b3V0KGxheW91dCkKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyKCkgPSBkZWZhdWx0OwogCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkgeyBy
ZXR1cm4gbV9zdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7IH0KLQogICAgIHZvaWQgdmlzaXQoQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwogCkBAIC0yMTksNyArMTk4LDcgQEAg
cHJvdGVjdGVkOgogICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7CiAgICAgSGFzaE1hcDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgbV9mdW5jdGlvbk1h
cHBpbmc7CiAgICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBNYW5nbGVkVmFy
aWFibGVOYW1lPiBtX3ZhcmlhYmxlTWFwcGluZzsKLSAgICBTdHJpbmdCdWlsZGVyIG1fc3RyaW5n
QnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyJiBtX3N0cmluZ0J1aWxkZXI7CiAKICAgICBWZWN0
b3I8U3RhY2tJdGVtPiBtX3N0YWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nOwpAQCAtNzQ2LDggKzcyNSw5IEBAIFN0
cmluZyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNvbnN0YW50RXhwcmVzc2lvblN0cmluZyhB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvCiAKIGNsYXNzIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlciA6IHB1YmxpYyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewogcHVibGljOgotICAgIFJl
bmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBl
TmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5n
bGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBNYXRjaGVkUmVuZGVyU2VtYW50aWNz
JiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyKGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBs
YXlvdXQpCisgICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKEludHJpbnNpY3MmIGlu
dHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIE1hdGNoZWRS
ZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCwKKyAgICAg
ICAgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKKyAgICAgICAgOiBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIoaW50cmluc2ljcywgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIGxheW91
dCwgc3RyaW5nQnVpbGRlcikKICAgICAgICAgLCBtX21hdGNoZWRTZW1hbnRpY3MoV1RGTW92ZSht
YXRjaGVkU2VtYW50aWNzKSkKICAgICB7CiAgICAgfQpAQCAtNzcyLDggKzc1Miw5IEBAIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6Y3JlYXRlRW50CiAKIGNsYXNzIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXIgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsKIHB1YmxpYzoKLSAgICBDb21w
dXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVO
YW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmds
ZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIE1hdGNoZWRDb21wdXRlU2VtYW50aWNz
JiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyKGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBs
YXlvdXQpCisgICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihJbnRyaW5zaWNzJiBp
bnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBNYXRjaGVk
Q29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0LAorICAg
ICAgICBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQorICAgICAgICA6IEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcihpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgbGF5
b3V0LCBzdHJpbmdCdWlsZGVyKQogICAgICAgICAsIG1fbWF0Y2hlZFNlbWFudGljcyhXVEZNb3Zl
KG1hdGNoZWRTZW1hbnRpY3MpKQogICAgIHsKICAgICB9CkBAIC03OTYsNDYgKzc3NywzNiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjpjcmVhdGVFbgogCiBzdHJ1Y3QgU2hhcmVkTWV0YWxGdW5jdGlvbnNSZXN1
bHQgewogICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwgTWFuZ2xlZEZ1bmN0
aW9uTmFtZT4gZnVuY3Rpb25NYXBwaW5nOwotICAgIFN0cmluZyBtZXRhbEZ1bmN0aW9uczsKIH07
Ci1zdGF0aWMgU2hhcmVkTWV0YWxGdW5jdGlvbnNSZXN1bHQgc2hhcmVkTWV0YWxGdW5jdGlvbnMo
UHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIGNvbnN0IEhhc2hTZXQ8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKj4mIHJlYWNoYWJsZUZ1bmN0aW9ucykKK3N0YXRpYyBTaGFy
ZWRNZXRhbEZ1bmN0aW9uc1Jlc3VsdCBzaGFyZWRNZXRhbEZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9n
cmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgY29uc3QgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qPiYgcmVhY2hhYmxlRnVuY3Rpb25zLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyKQogewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLQogICAgIHVuc2lnbmVk
IG51bUZ1bmN0aW9ucyA9IDA7CiAgICAgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24q
LCBNYW5nbGVkRnVuY3Rpb25OYW1lPiBmdW5jdGlvbk1hcHBpbmc7Ci0gICAgZm9yIChhdXRvJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZnVuY3Rpb25NYXBwaW5nLmFkZCgm
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSB7IG51bUZ1bmN0
aW9ucysrIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHBy
b2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
ZnVuY3Rpb25NYXBwaW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uLCBNYW5nbGVkRnVuY3Rpb25O
YW1lIHsgbnVtRnVuY3Rpb25zKysgfSk7CisgICAgZm9yIChhdXRvIGZ1bmN0aW9uRGVjbGFyYXRp
b25QdHIgOiByZWFjaGFibGVGdW5jdGlvbnMpIHsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBm
dW5jdGlvbk1hcHBpbmcuYWRkKGZ1bmN0aW9uRGVjbGFyYXRpb25QdHIsIE1hbmdsZWRGdW5jdGlv
bk5hbWUgeyBudW1GdW5jdGlvbnMrKyB9KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9CiAKLSAgICB7Ci0gICAgICAgIEZ1bmN0
aW9uRGVjbGFyYXRpb25Xcml0ZXIgZnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlcih0eXBlTmFtZXIs
IGZ1bmN0aW9uTWFwcGluZyk7Ci0gICAgICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewotICAgICAg
ICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbikpCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlci52aXNp
dChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1
dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7
Ci0gICAgICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50cnlQb2ludFR5cGUoKSAm
JiByZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCi0gICAg
ICAgICAgICAgICAgZnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlci52aXNpdChmdW5jdGlvbkRlZmlu
aXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZ1bmN0aW9u
RGVjbGFyYXRpb25Xcml0ZXIudG9TdHJpbmcoKSk7CisgICAgZm9yIChhdXRvJiBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKSB7
CisgICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJm5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pKQorICAgICAgICAgICAgZGVjbGFyZUZ1bmN0aW9uKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24sIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nLCBzdHJpbmdCdWlsZGVyKTsK
KyAgICB9CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSkgeworICAgICAgICBpZiAoIWZ1bmN0aW9uRGVmaW5pdGlvbi0+ZW50
cnlQb2ludFR5cGUoKSAmJiByZWFjaGFibGVGdW5jdGlvbnMuY29udGFpbnMoJmZ1bmN0aW9uRGVm
aW5pdGlvbikpCisgICAgICAgICAgICBkZWNsYXJlRnVuY3Rpb24oZnVuY3Rpb25EZWZpbml0aW9u
LCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywgc3RyaW5nQnVpbGRlcik7CiAgICAgfQogCiAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShmdW5j
dGlvbk1hcHBpbmcpLCBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsKKyAgICByZXR1cm4geyBX
VEZNb3ZlKGZ1bmN0aW9uTWFwcGluZykgfTsKIH0KIAotY2xhc3MgUmVhY2hhYmxlRnVuY3Rpb25z
R2F0aGVyZXIgOiBwdWJsaWMgVmlzaXRvciB7CitjbGFzcyBSZWFjaGFibGVGdW5jdGlvbnNHYXRo
ZXJlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKIHB1YmxpYzoKICAgICB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAgICAg
ICBtX3JlYWNoYWJsZUZ1bmN0aW9ucy5hZGQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25zLmFkZCgmZnVuY3Rpb25EZWNsYXJh
dGlvbik7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIFZpc2l0
b3I6OnZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAgIH0KIAogICAgIHZvaWQgdmlzaXQo
QVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pIG92ZXJyaWRlCkBAIC04NjMsMTIg
KzgzNCwxMSBAQCBSZW5kZXJNZXRhbEZ1bmN0aW9ucyBtZXRhbEZ1bmN0aW9ucyhQcm9ncmFtJiBw
cm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgTWF0YwogICAgIHJlYWNoYWJsZUZ1bmN0aW9u
c0dhdGhlcmVyLlZpc2l0b3I6OnZpc2l0KGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCk7CiAgICAg
YXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci50YWtl
UmVhY2hhYmxlRnVuY3Rpb25zKCk7CiAKLSAgICBhdXRvIHNoYXJlZE1ldGFsRnVuY3Rpb25zID0g
TWV0YWw6OnNoYXJlZE1ldGFsRnVuY3Rpb25zKHByb2dyYW0sIHR5cGVOYW1lciwgcmVhY2hhYmxl
RnVuY3Rpb25zKTsKLQogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChzaGFyZWRNZXRhbEZ1bmN0aW9ucy5tZXRhbEZ1bmN0aW9ucyk7CiAK
LSAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyKHByb2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIHNoYXJlZE1ldGFsRnVuY3Rpb25z
LmZ1bmN0aW9uTWFwcGluZywgV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKKyAg
ICBhdXRvIHNoYXJlZE1ldGFsRnVuY3Rpb25zID0gTWV0YWw6OnNoYXJlZE1ldGFsRnVuY3Rpb25z
KHByb2dyYW0sIHR5cGVOYW1lciwgcmVhY2hhYmxlRnVuY3Rpb25zLCBzdHJpbmdCdWlsZGVyKTsK
KworICAgIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHR5cGVOYW1lciwgc2hhcmVkTWV0YWxGdW5jdGlv
bnMuZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQsIHN0
cmluZ0J1aWxkZXIpOwogICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6
IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewogICAgICAgICBpZiAocmVh
Y2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkKICAg
ICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKTsKQEAgLTg3Nyw3ICs4NDcsNiBAQCBSZW5kZXJNZXRhbEZ1bmN0aW9ucyBtZXRh
bEZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgTWF0Ywog
ICAgICAgICBpZiAocmVhY2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRp
b24pKQogICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLnZpc2l0KGZ1bmN0aW9u
RGVmaW5pdGlvbik7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlci50b1N0cmluZygpKTsKIAogICAgIFJlbmRlck1ldGFsRnVuY3Rpb25zIHJl
c3VsdDsKICAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CkBAIC04OTQsMTIgKzg2MywxMSBAQCBDb21wdXRlTWV0YWxGdW5jdGlvbnMgbWV0YWxGdW5jdGlv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdAogICAgIHJlYWNo
YWJsZUZ1bmN0aW9uc0dhdGhlcmVyLlZpc2l0b3I6OnZpc2l0KGVudHJ5UG9pbnQpOwogICAgIGF1
dG8gcmVhY2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIudGFrZVJl
YWNoYWJsZUZ1bmN0aW9ucygpOwogCi0gICAgYXV0byBzaGFyZWRNZXRhbEZ1bmN0aW9ucyA9IE1l
dGFsOjpzaGFyZWRNZXRhbEZ1bmN0aW9ucyhwcm9ncmFtLCB0eXBlTmFtZXIsIHJlYWNoYWJsZUZ1
bmN0aW9ucyk7Ci0KICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoc2hhcmVkTWV0YWxGdW5jdGlvbnMubWV0YWxGdW5jdGlvbnMpOwogCi0g
ICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXIocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHR5cGVOYW1lciwgc2hhcmVkTWV0YWxGdW5jdGlvbnMu
ZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQpOworICAg
IGF1dG8gc2hhcmVkTWV0YWxGdW5jdGlvbnMgPSBNZXRhbDo6c2hhcmVkTWV0YWxGdW5jdGlvbnMo
cHJvZ3JhbSwgdHlwZU5hbWVyLCByZWFjaGFibGVGdW5jdGlvbnMsIHN0cmluZ0J1aWxkZXIpOwor
CisgICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlciBmdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHR5cGVOYW1lciwgc2hhcmVkTWV0YWxGdW5jdGlv
bnMuZnVuY3Rpb25NYXBwaW5nLCBXVEZNb3ZlKG1hdGNoZWRTZW1hbnRpY3MpLCBsYXlvdXQsIHN0
cmluZ0J1aWxkZXIpOwogICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6
IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkgewogICAgICAgICBpZiAocmVh
Y2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkKICAg
ICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKTsKQEAgLTkwOCw3ICs4NzYsNiBAQCBDb21wdXRlTWV0YWxGdW5jdGlvbnMgbWV0
YWxGdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdAog
ICAgICAgICBpZiAocmVhY2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRp
b24pKQogICAgICAgICAgICAgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLnZpc2l0KGZ1bmN0aW9u
RGVmaW5pdGlvbik7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlci50b1N0cmluZygpKTsKIAogICAgIENvbXB1dGVNZXRhbEZ1bmN0aW9ucyBy
ZXN1bHQ7CiAgICAgcmVzdWx0Lm1ldGFsU291cmNlID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
Owo=
</data>
<flag name="review"
          id="391370"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="391371"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375591</attachid>
            <date>2019-08-05 18:32:19 -0700</date>
            <delta_ts>2019-08-07 11:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch200460</filename>
            <type>text/plain</type>
            <size>12049</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NmFkY2ExM2EwNC4uYTNiMDQzYzU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOS0wOC0wNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSExTTF0gU2ltcGxpZnkgYW5kIGVsaW1pbmF0ZSByZWR1bmRhbnQg
d29yayBpbiBXSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgMyB0cml2aWFsIHNpbXBsaWZpY2F0aW9uczoKKyAgICAg
ICAgLSBSZXBsYWNlIEZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXIgYnkgYSBzdGFuZGFsb25lIGZ1
bmN0aW9uLCB0aGVyZSB3YXMgbm8gcmVhc29uIHRvIG1ha2UgaXQgYSBzdWJjbGFzcyBvZiBWaXNp
dG9yCisgICAgICAgIC0gS2VlcCBhIHNpbmdsZSBTdHJpbmdCdWlsZGVyIHRocm91Z2hvdXQgdG8g
bWluaW1pemUgY29udmVyc2lvbnMgYmV0d2VlbiBTdHJpbmdCdWlsZGVyIGFuZCBTdHJpbmcKKyAg
ICAgICAgLSBBdm9pZCBhbiBleHBvbmVudGlhbCBibG93LXVwIGluIHRoZSBjb21wdXRhdGlvbiBv
ZiByZWFjaGFibGUgZnVuY3Rpb25zLgorCisgICAgICAgIEkgaGF2ZSB3YXkgdG9vIG11Y2ggbm9p
c2Ugb24gbXkgc3lzdGVtIChzd2luZ3MgYmFjayBhbmQgZm9ydGggYmV0d2VlbiA3IGFuZCAxMm1z
IGZvciB0aGlzIHBoYXNlKSB0byBtZWFzdXJlIGEgcGVyZm9ybWFuY2Ugd2luLAorICAgICAgICBi
dXQgc2luY2UgdGhpcyBwYXRjaCBzaW1wbGlmaWVzIHRoaW5ncyB3aXRob3V0IGFkZGluZyBjb21w
bGV4aXR5IEkgdGhpbmsgaXQgaXMgd29ydGggaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3QgYXMg
dGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6ZGVjbGFyZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpSZW5kZXJGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OkNvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpzaGFyZWRNZXRhbEZ1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6Om1ldGFsRnVuY3Rpb25zKToKKwogMjAxOS0wOC0wNSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzcG9uc2UgY29uc3RydWN0b3Ig
ZG9lc24ndCB0aHJvdyBvbiBkaXN0dXJiZWQgUmVhZGFibGVTdHJlYW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKaW5kZXggM2M3ZjJkMzQ1Y2IuLmY3MmIxOTljYWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNDcsNTYgKzQ3LDM1IEBAIG5hbWVzcGFj
ZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBNZXRhbCB7CiAKLWNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRp
b25Xcml0ZXIgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNsYXJh
dGlvbldyaXRlcihUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotICAgICAg
ICA6IG1fdHlwZU5hbWVyKHR5cGVOYW1lcikKLSAgICAgICAgLCBtX2Z1bmN0aW9uTWFwcGluZyhm
dW5jdGlvbk1hcHBpbmcpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVj
bGFyYXRpb25Xcml0ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSB7IHJl
dHVybiBtX3N0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24mKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBUeXBlTmFt
ZXImIG1fdHlwZU5hbWVyOwotICAgIEhhc2hNYXA8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiwg
TWFuZ2xlZEZ1bmN0aW9uTmFtZT4mIG1fZnVuY3Rpb25NYXBwaW5nOwotICAgIFN0cmluZ0J1aWxk
ZXIgbV9zdHJpbmdCdWlsZGVyOwotfTsKLQotdm9pZCBGdW5jdGlvbkRlY2xhcmF0aW9uV3JpdGVy
Ojp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24pCitz
dGF0aWMgdm9pZCBkZWNsYXJlRnVuY3Rpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5j
dGlvbkRlY2xhcmF0aW9uLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewogICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0
aW9uLmVudHJ5UG9pbnRUeXBlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaXRlcmF0
b3IgPSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5jdGlvbkRlY2xhcmF0aW9uKTsKLSAgICBB
U1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVu
Y3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRp
b24pOworICAgIEFTU0VSVChpdGVyYXRvciAhPSBmdW5jdGlvbk1hcHBpbmcuZW5kKCkpOworICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQodHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCh0eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVtp
XS0+dHlwZSgpKSk7CiAgICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsK
KyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogfQogCiBjbGFzcyBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIgOiBwdWJsaWMgVmlzaXRvciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyKEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5h
bWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5h
bWU+JiBmdW5jdGlvbk1hcHBpbmcsIExheW91dCYgbGF5b3V0KQorICAgIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcihJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwg
SGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYg
ZnVuY3Rpb25NYXBwaW5nLCBMYXlvdXQmIGxheW91dCwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlcikKICAgICAgICAgOiBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKICAgICAgICAgLCBtX3R5
cGVOYW1lcih0eXBlTmFtZXIpCiAgICAgICAgICwgbV9mdW5jdGlvbk1hcHBpbmcoZnVuY3Rpb25N
YXBwaW5nKQorICAgICAgICAsIG1fc3RyaW5nQnVpbGRlcihzdHJpbmdCdWlsZGVyKQogICAgICAg
ICAsIG1fbGF5b3V0KGxheW91dCkKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKCkgPSBkZWZhdWx0OwogCi0gICAgU3RyaW5nIHRvU3RyaW5nKCkg
eyByZXR1cm4gbV9zdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7IH0KLQogICAgIHZvaWQgdmlzaXQo
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNp
dChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOwogCkBAIC0yMTksNyArMTk4LDcg
QEAgcHJvdGVjdGVkOgogICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7CiAgICAgSGFzaE1hcDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgbV9mdW5jdGlv
bk1hcHBpbmc7CiAgICAgSGFzaE1hcDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qLCBNYW5nbGVk
VmFyaWFibGVOYW1lPiBtX3ZhcmlhYmxlTWFwcGluZzsKLSAgICBTdHJpbmdCdWlsZGVyIG1fc3Ry
aW5nQnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyJiBtX3N0cmluZ0J1aWxkZXI7CiAKICAgICBW
ZWN0b3I8U3RhY2tJdGVtPiBtX3N0YWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50
U2NhZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nOwpAQCAtNzU2LDggKzczNSw5IEBA
IFN0cmluZyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNvbnN0YW50RXhwcmVzc2lvblN0cmlu
ZyhBU1Q6OkNvbnN0YW50RXhwcmVzc2lvCiAKIGNsYXNzIFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlciA6IHB1YmxpYyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgewogcHVibGljOgotICAg
IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBU
eXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBN
YW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBNYXRjaGVkUmVuZGVyU2VtYW50
aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5n
LCBsYXlvdXQpCisgICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKEludHJpbnNpY3Mm
IGludHJpbnNpY3MsIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIE1hdGNo
ZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQmIGxheW91dCwKKyAg
ICAgICAgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKKyAgICAgICAgOiBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXIoaW50cmluc2ljcywgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIGxh
eW91dCwgc3RyaW5nQnVpbGRlcikKICAgICAgICAgLCBtX21hdGNoZWRTZW1hbnRpY3MoV1RGTW92
ZShtYXRjaGVkU2VtYW50aWNzKSkKICAgICB7CiAgICAgfQpAQCAtNzgyLDggKzc2Miw5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6Y3JlYXRlRW50CiAKIGNsYXNzIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsKIHB1YmxpYzoKLSAgICBD
b21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKEludHJpbnNpY3MmIGludHJpbnNpY3MsIFR5
cGVOYW1lciYgdHlwZU5hbWVyLCBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1h
bmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1hcHBpbmcsIE1hdGNoZWRDb21wdXRlU2VtYW50
aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCi0gICAgICAgIDogRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKGludHJpbnNpY3MsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5n
LCBsYXlvdXQpCisgICAgQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nLCBNYXRj
aGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0LAor
ICAgICAgICBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQorICAgICAgICA6IEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcihpbnRyaW5zaWNzLCB0eXBlTmFtZXIsIGZ1bmN0aW9uTWFwcGluZywg
bGF5b3V0LCBzdHJpbmdCdWlsZGVyKQogICAgICAgICAsIG1fbWF0Y2hlZFNlbWFudGljcyhXVEZN
b3ZlKG1hdGNoZWRTZW1hbnRpY3MpKQogICAgIHsKICAgICB9CkBAIC04MDYsMTIgKzc4Nyw5IEBA
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVuCiAKIHN0cnVjdCBTaGFyZWRNZXRhbEZ1bmN0aW9uc1Jl
c3VsdCB7CiAgICAgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVu
Y3Rpb25OYW1lPiBmdW5jdGlvbk1hcHBpbmc7Ci0gICAgU3RyaW5nIG1ldGFsRnVuY3Rpb25zOwog
fTsKLXN0YXRpYyBTaGFyZWRNZXRhbEZ1bmN0aW9uc1Jlc3VsdCBzaGFyZWRNZXRhbEZ1bmN0aW9u
cyhQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgY29uc3QgSGFzaFNldDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiYgcmVhY2hhYmxlRnVuY3Rpb25zKQorc3RhdGljIFNo
YXJlZE1ldGFsRnVuY3Rpb25zUmVzdWx0IHNoYXJlZE1ldGFsRnVuY3Rpb25zKFByb2dyYW0mIHBy
b2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBjb25zdCBIYXNoU2V0PEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbio+JiByZWFjaGFibGVGdW5jdGlvbnMsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotCiAgICAgdW5zaWdu
ZWQgbnVtRnVuY3Rpb25zID0gMDsKICAgICBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biosIE1hbmdsZWRGdW5jdGlvbk5hbWU+IGZ1bmN0aW9uTWFwcGluZzsKICAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7CkBA
IC04MTksMjUgKzc5NywyMiBAQCBzdGF0aWMgU2hhcmVkTWV0YWxGdW5jdGlvbnNSZXN1bHQgc2hh
cmVkTWV0YWxGdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbQogICAgICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAotICAg
IHsKLSAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlciBmdW5jdGlvbkRlY2xhcmF0aW9u
V3JpdGVyKHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nKTsKLSAgICAgICAgZm9yIChhdXRvJiBm
dW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAg
ICAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCkgJiYgcmVh
Y2hhYmxlRnVuY3Rpb25zLmNvbnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQotICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9u
KTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChmdW5jdGlvbkRlY2xh
cmF0aW9uV3JpdGVyLnRvU3RyaW5nKCkpOworICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0
aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKKyAgICAgICAgaWYgKCFmdW5j
dGlvbkRlZmluaXRpb24tPmVudHJ5UG9pbnRUeXBlKCkgJiYgcmVhY2hhYmxlRnVuY3Rpb25zLmNv
bnRhaW5zKCZmdW5jdGlvbkRlZmluaXRpb24pKQorICAgICAgICAgICAgZGVjbGFyZUZ1bmN0aW9u
KGZ1bmN0aW9uRGVmaW5pdGlvbiwgdHlwZU5hbWVyLCBmdW5jdGlvbk1hcHBpbmcsIHN0cmluZ0J1
aWxkZXIpOwogICAgIH0KIAogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIHJl
dHVybiB7IFdURk1vdmUoZnVuY3Rpb25NYXBwaW5nKSwgc3RyaW5nQnVpbGRlci50b1N0cmluZygp
IH07CisgICAgcmV0dXJuIHsgV1RGTW92ZShmdW5jdGlvbk1hcHBpbmcpIH07CiB9CiAKLWNsYXNz
IFJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyIDogcHVibGljIFZpc2l0b3IgeworY2xhc3MgUmVh
Y2hhYmxlRnVuY3Rpb25zR2F0aGVyZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7CiBwdWJsaWM6
CiAgICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFy
YXRpb24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRl
Y2xhcmF0aW9uKTsKLSAgICAgICAgbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbkRl
Y2xhcmF0aW9uKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlYWNoYWJsZUZ1bmN0aW9ucy5h
ZGQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
CisgICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9
CiAKICAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKSBv
dmVycmlkZQpAQCAtODY1LDE3ICs4NDAsMTYgQEAgUmVuZGVyTWV0YWxGdW5jdGlvbnMgbWV0YWxG
dW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdGMKICAg
ICByZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdChmcmFnbWVudFNoYWRl
ckVudHJ5UG9pbnQpOwogICAgIGF1dG8gcmVhY2hhYmxlRnVuY3Rpb25zID0gcmVhY2hhYmxlRnVu
Y3Rpb25zR2F0aGVyZXIudGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpOwogCi0gICAgYXV0byBzaGFy
ZWRNZXRhbEZ1bmN0aW9ucyA9IE1ldGFsOjpzaGFyZWRNZXRhbEZ1bmN0aW9ucyhwcm9ncmFtLCB0
eXBlTmFtZXIsIHJlYWNoYWJsZUZ1bmN0aW9ucyk7Ci0KICAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2hhcmVkTWV0YWxGdW5jdGlvbnMu
bWV0YWxGdW5jdGlvbnMpOwogCi0gICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIGZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcihwcm9ncmFtLmludHJpbnNpY3MoKSwgdHlwZU5hbWVyLCBz
aGFyZWRNZXRhbEZ1bmN0aW9ucy5mdW5jdGlvbk1hcHBpbmcsIFdURk1vdmUobWF0Y2hlZFNlbWFu
dGljcyksIGxheW91dCk7CisgICAgYXV0byBzaGFyZWRNZXRhbEZ1bmN0aW9ucyA9IE1ldGFsOjpz
aGFyZWRNZXRhbEZ1bmN0aW9ucyhwcm9ncmFtLCB0eXBlTmFtZXIsIHJlYWNoYWJsZUZ1bmN0aW9u
cywgc3RyaW5nQnVpbGRlcik7CisKKyAgICBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIg
ZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHByb2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIs
IHNoYXJlZE1ldGFsRnVuY3Rpb25zLmZ1bmN0aW9uTWFwcGluZywgV1RGTW92ZShtYXRjaGVkU2Vt
YW50aWNzKSwgbGF5b3V0LCBzdHJpbmdCdWlsZGVyKTsKKwogICAgIGZvciAoYXV0byYgZnVuY3Rp
b25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKICAgICAgICAg
aWYgKHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkKICAg
ICAgICAgICAgIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChmdW5jdGlvbkRlZmluaXRp
b24pOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChmdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIudG9TdHJpbmcoKSk7CiAKICAgICBSZW5kZXJNZXRhbEZ1bmN0aW9ucyByZXN1bHQ7CiAg
ICAgcmVzdWx0Lm1ldGFsU291cmNlID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwpAQCAtODky
LDE3ICs4NjYsMTUgQEAgQ29tcHV0ZU1ldGFsRnVuY3Rpb25zIG1ldGFsRnVuY3Rpb25zKFByb2dy
YW0mIHByb2dyYW0sIFR5cGVOYW1lciYgdHlwZU5hbWVyLCBNYXQKICAgICByZWFjaGFibGVGdW5j
dGlvbnNHYXRoZXJlci5WaXNpdG9yOjp2aXNpdChlbnRyeVBvaW50KTsKICAgICBhdXRvIHJlYWNo
YWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZUZ1bmN0aW9uc0dhdGhlcmVyLnRha2VSZWFjaGFibGVG
dW5jdGlvbnMoKTsKIAotICAgIGF1dG8gc2hhcmVkTWV0YWxGdW5jdGlvbnMgPSBNZXRhbDo6c2hh
cmVkTWV0YWxGdW5jdGlvbnMocHJvZ3JhbSwgdHlwZU5hbWVyLCByZWFjaGFibGVGdW5jdGlvbnMp
OwotCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKHNoYXJlZE1ldGFsRnVuY3Rpb25zLm1ldGFsRnVuY3Rpb25zKTsKIAotICAgIENvbXB1
dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHByb2dy
YW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIHNoYXJlZE1ldGFsRnVuY3Rpb25zLmZ1bmN0aW9u
TWFwcGluZywgV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKKyAgICBhdXRvIHNo
YXJlZE1ldGFsRnVuY3Rpb25zID0gTWV0YWw6OnNoYXJlZE1ldGFsRnVuY3Rpb25zKHByb2dyYW0s
IHR5cGVOYW1lciwgcmVhY2hhYmxlRnVuY3Rpb25zLCBzdHJpbmdCdWlsZGVyKTsKKworICAgIENv
bXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHBy
b2dyYW0uaW50cmluc2ljcygpLCB0eXBlTmFtZXIsIHNoYXJlZE1ldGFsRnVuY3Rpb25zLmZ1bmN0
aW9uTWFwcGluZywgV1RGTW92ZShtYXRjaGVkU2VtYW50aWNzKSwgbGF5b3V0LCBzdHJpbmdCdWls
ZGVyKTsKICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rp
b25EZWZpbml0aW9ucygpKSB7CiAgICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlvbnMuY29udGFp
bnMoJmZ1bmN0aW9uRGVmaW5pdGlvbikpCiAgICAgICAgICAgICBmdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIudmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyLnRvU3RyaW5nKCkpOwogCiAgICAgQ29t
cHV0ZU1ldGFsRnVuY3Rpb25zIHJlc3VsdDsKICAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7Cg==
</data>
<flag name="review"
          id="391375"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="391376"
          type_id="3"
          status="-"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375721</attachid>
            <date>2019-08-07 11:28:20 -0700</date>
            <delta_ts>2019-08-07 12:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch200460</filename>
            <type>text/plain</type>
            <size>5311</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OTJhOTRhNDI5OS4uNTRiNTFmNDVlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxOS0wOC0wNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSExTTF0gU2ltcGxpZnkgYW5kIGVsaW1pbmF0ZSByZWR1bmRhbnQg
d29yayBpbiBXSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXls
ZXMgTWF4ZmllbGQuCisKKyAgICAgICAgMiB0cml2aWFsIHNpbXBsaWZpY2F0aW9uczoKKyAgICAg
ICAgLSBSZXBsYWNlIEZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXIgYnkgYSBzdGFuZGFsb25lIGZ1
bmN0aW9uLCB0aGVyZSB3YXMgbm8gcmVhc29uIHRvIG1ha2UgaXQgYSBzdWJjbGFzcyBvZiBWaXNp
dG9yCisgICAgICAgIC0gQXZvaWQgYW4gZXhwb25lbnRpYWwgYmxvdy11cCBpbiB0aGUgY29tcHV0
YXRpb24gb2YgcmVhY2hhYmxlIGZ1bmN0aW9ucy4KKworICAgICAgICBJIGhhdmUgd2F5IHRvbyBt
dWNoIG5vaXNlIG9uIG15IHN5c3RlbSAoc3dpbmdzIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gNyBh
bmQgMTJtcyBmb3IgdGhpcyBwaGFzZSkgdG8gbWVhc3VyZSBhIHBlcmZvcm1hbmNlIHdpbiwKKyAg
ICAgICAgYnV0IHNpbmNlIHRoaXMgcGF0Y2ggc2ltcGxpZmllcyB0aGluZ3Mgd2l0aG91dCBhZGRp
bmcgY29tcGxleGl0eSBJIHRoaW5rIGl0IGlzIHdvcnRoIGl0LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0IGFzIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OmRlY2xhcmVGdW5jdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6RnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6UmVu
ZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjpDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6c2hhcmVkTWV0YWxGdW5jdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjptZXRhbEZ1bmN0aW9ucyk6CisKIDIwMTktMDgtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhyZWFkIHNhZmV0
eSBpc3N1ZSB1bmRlciBKU0hpc3Rvcnk6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKaW5kZXggNzYxYzFhMzY4M2MuLmNhMzQ2ZTMyYjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNDcsMzkgKzQ3LDIwIEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBNZXRhbCB7CiAKLWNsYXNzIEZ1bmN0aW9u
RGVjbGFyYXRpb25Xcml0ZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAg
RnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlcihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBU
eXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBN
YW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQotICAgICAgICA6IG1fdHlwZU5h
bWVyKHR5cGVOYW1lcikKLSAgICAgICAgLCBtX2Z1bmN0aW9uTWFwcGluZyhmdW5jdGlvbk1hcHBp
bmcpCi0gICAgICAgICwgbV9zdHJpbmdCdWlsZGVyKHN0cmluZ0J1aWxkZXIpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgfkZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXIoKSA9IGRlZmF1bHQ7
Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpIG92ZXJyaWRlOwot
Ci1wcml2YXRlOgotICAgIFR5cGVOYW1lciYgbV90eXBlTmFtZXI7Ci0gICAgSGFzaE1hcDxBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgbV9mdW5jdGlvbk1h
cHBpbmc7Ci0gICAgU3RyaW5nQnVpbGRlciYgbV9zdHJpbmdCdWlsZGVyOwotfTsKLQotdm9pZCBG
dW5jdGlvbkRlY2xhcmF0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24m
IGZ1bmN0aW9uRGVjbGFyYXRpb24pCitzdGF0aWMgdm9pZCBkZWNsYXJlRnVuY3Rpb24oU3RyaW5n
QnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlv
bkRlY2xhcmF0aW9uLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgSGFzaE1hcDxBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24qLCBNYW5nbGVkRnVuY3Rpb25OYW1lPiYgZnVuY3Rpb25NYXBwaW5nKQogewog
ICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRUeXBlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZmdW5j
dGlvbkRlY2xhcmF0aW9uKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBp
bmcuZW5kKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIGl0
ZXJhdG9yLT52YWx1ZSwgJygnKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gZnVuY3Rpb25NYXBwaW5n
LmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOworICAgIEFTU0VSVChpdGVyYXRvciAhPSBmdW5j
dGlvbk1hcHBpbmcuZW5kKCkpOworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQodHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcg
JywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KGkpCi0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCpmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCh0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpmdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVtpXS0+dHlwZSgpKSk7CiAgICAgfQotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIik7XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIp
OwogfQogCiBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIgOiBwdWJsaWMgVmlzaXRvciB7
CkBAIC04MjcsMTAgKzgwOCw5IEBAIHN0YXRpYyBIYXNoTWFwPEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+IGdlbmVyYXRlTWV0YWxGdW5jCiAKIHN0YXRpYyB2
b2lkIGVtaXRTaGFyZWRNZXRhbEZ1bmN0aW9ucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgY29uc3QgSGFzaFNldDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qPiYgcmVhY2hhYmxlRnVuY3Rpb25zLCBIYXNoTWFwPEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiosIE1hbmdsZWRGdW5jdGlvbk5hbWU+JiBmdW5jdGlvbk1h
cHBpbmcpCiB7Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlciBmdW5jdGlvbkRlY2xhcmF0
aW9uV3JpdGVyKHN0cmluZ0J1aWxkZXIsIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nKTsKICAg
ICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0
aW9ucygpKSB7CiAgICAgICAgIGlmICghZnVuY3Rpb25EZWZpbml0aW9uLT5lbnRyeVBvaW50VHlw
ZSgpICYmIHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZnVuY3Rpb25EZWZpbml0aW9uKSkK
LSAgICAgICAgICAgIGZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXIudmlzaXQoZnVuY3Rpb25EZWZp
bml0aW9uKTsKKyAgICAgICAgICAgIGRlY2xhcmVGdW5jdGlvbihzdHJpbmdCdWlsZGVyLCBmdW5j
dGlvbkRlZmluaXRpb24sIHR5cGVOYW1lciwgZnVuY3Rpb25NYXBwaW5nKTsKICAgICB9CiAKICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKQEAgLTg0MCw4ICs4MjAsOSBAQCBjbGFzcyBS
ZWFjaGFibGVGdW5jdGlvbnNHYXRoZXJlciBmaW5hbCA6IHB1YmxpYyBWaXNpdG9yIHsKIHB1Ymxp
YzoKICAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNs
YXJhdGlvbikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9u
RGVjbGFyYXRpb24pOwotICAgICAgICBtX3JlYWNoYWJsZUZ1bmN0aW9ucy5hZGQoJmZ1bmN0aW9u
RGVjbGFyYXRpb24pOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVhY2hhYmxlRnVuY3Rpb25z
LmFkZCgmZnVuY3Rpb25EZWNsYXJhdGlvbik7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAg
IH0KIAogICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24p
IG92ZXJyaWRlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>