<?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>176152</bug_id>
          
          <creation_ts>2017-08-30 21:46:12 -0700</creation_ts>
          <short_desc>WSL should be able to run a program that uses generics</short_desc>
          <delta_ts>2018-10-13 20:07:12 -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>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343867</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-30 21:46:12 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343869</commentid>
    <comment_count>1</comment_count>
      <attachid>319447</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-30 21:46:39 -0700</bug_when>
    <thetext>Created attachment 319447
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343874</commentid>
    <comment_count>2</comment_count>
      <attachid>319450</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-30 22:01:37 -0700</bug_when>
    <thetext>Created attachment 319450
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344063</commentid>
    <comment_count>3</comment_count>
      <attachid>319450</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-31 12:28:23 -0700</bug_when>
    <thetext>Comment on attachment 319450
the patch

seems reasonable r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344072</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-31 12:42:00 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/221434/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353657</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:47:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469016</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 20:07:12 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/210</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319447</attachid>
            <date>2017-08-30 21:46:39 -0700</date>
            <delta_ts>2017-08-30 22:01:37 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17788</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwkocmV2aXNpb24g
MjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICBsZXQgb3ZlcmxvYWQgPSBudWxs
OworICAgICAgICBsZXQgZmFpbHVyZXMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgdHlwZVBhcmFt
ZXRlciBvZiB0aGlzLl9jdXJyZW50U3RhdGVtZW50LnR5cGVQYXJhbWV0ZXJzKSB7CiAgICAgICAg
ICAgICBpZiAoISh0eXBlUGFyYW1ldGVyIGluc3RhbmNlb2YgVHlwZVZhcmlhYmxlKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTE3NSwxNSArMTc2LDI1IEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIGlmICghc2lnbmF0dXJlcykKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG92ZXJsb2FkID0gcmVzb2x2ZU92ZXJsb2Fk
SW1wbChzaWduYXR1cmVzLCBub2RlLnR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpOwotICAg
ICAgICAgICAgaWYgKG92ZXJsb2FkKQorICAgICAgICAgICAgaWYgKG92ZXJsb2FkLmZ1bmMpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJs
b2FkLmZhaWx1cmVzKTsKKyAgICAgICAgICAgIG92ZXJsb2FkID0gbnVsbDsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW92ZXJsb2FkKSB7CiAgICAgICAgICAgICBvdmVybG9hZCA9IHRoaXMuX3By
b2dyYW0ucmVzb2x2ZUZ1bmNPdmVybG9hZCgKICAgICAgICAgICAgICAgICBub2RlLm5hbWUsIG5v
ZGUudHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcyk7CisgICAgICAgICAgICBpZiAoIW92ZXJs
b2FkLmZ1bmMpIHsKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZh
aWx1cmVzKTsKKyAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICJEaWQgbm90IGZpbmQgZnVu
Y3Rpb24gZm9yIGNhbGwiOworICAgICAgICAgICAgICAgIGlmIChmYWlsdXJlcy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmluZ2lmeUZhaWx1cmUgPQorICAgICAgICAgICAg
ICAgICAgICAgICAgZmFpbHVyZSA9PiBmYWlsdXJlLmZ1bmMgKyAiIGRpZCBub3QgbWF0Y2ggYmVj
YXVzZTogIiArIGZhaWx1cmUucmVhc29uOworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
ICIsIGJ1dCBjb25zaWRlcmVkOlxuIiArIGZhaWx1cmVzLm1hcChzdHJpbmdpZnlGYWlsdXJlKS5q
b2luKCJcbiIpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgbWVzc2FnZSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFvdmVybG9hZCkKLSAgICAgICAgICAgIHRocm93
IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkRpZCBub3QgZmluZCBm
dW5jdGlvbiBmb3IgY2FsbCIpOwogICAgICAgICBub2RlLmZ1bmMgPSBvdmVybG9hZC5mdW5jOwog
ICAgICAgICBub2RlLmFjdHVhbFR5cGVBcmd1bWVudHMgPSBvdmVybG9hZC50eXBlQXJndW1lbnRz
Lm1hcChUeXBlUmVmLndyYXApOwogICAgICAgICBsZXQgcmVzdWx0ID0gb3ZlcmxvYWQuZnVuYy5y
ZXR1cm5UeXBlLnN1YnN0aXR1dGVUb1VuaWZpY2F0aW9uKApJbmRleDogVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIEZ1bmNEZWYgZXh0ZW5kcyBGdW5jIHsKICAgICAKICAgICB0b1N0cmluZygp
CiAgICAgewotICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKSArICIgeyAiICsgdGhpcy5i
b2R5ICsgIiB9IjsKKyAgICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCkgKyAiICIgKyB0aGlz
LmJvZHk7CiAgICAgfQogfQogCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9M
ZXhlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhl
ci5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TGV4ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw0ICsxNTQsMTkgQEAgY2xhc3MgTGV4ZXIg
ewogICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB0ZXN0
U2NvcGUoY2FsbGJhY2spCisgICAgeworICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLnN0YXRlOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB0aHJvdyBlOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdGhpcy5zdGF0
ZSA9IHN0YXRlOworICAgICAgICB9CisgICAgfQogfQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMJKHJldmlzaW9uIDIyMTM5MykKKysrIFRvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw4IEBAIGNsYXNzIE5hbWVDb250ZXh0IHsKICAgICB7CiAgICAgICAgIHRoaXMu
X2Z1bmNNYXAgPSBuZXcgTWFwKCk7CiAgICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTsKLSAg
ICAgICAgdGhpcy5fZGVmaW5lZCA9IG5ldyBTZXQoKTsKKyAgICAgICAgdGhpcy5fc2V0ID0gbmV3
IFNldCgpOworICAgICAgICB0aGlzLl9kZWZpbmVkID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3Vy
cmVudFN0YXRlbWVudCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7
CiAgICAgICAgIHRoaXMuX2ludHJpbnNpY3MgPSBudWxsOwpAQCAtNzAsNiArNzEsNyBAQCBjbGFz
cyBOYW1lQ29udGV4dCB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICh0aGluZy5r
aW5kID09IEZ1bmMpIHsKKyAgICAgICAgICAgIHRoaXMuX3NldC5hZGQodGhpbmcpOwogICAgICAg
ICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZnVuY01hcC5nZXQodGhpbmcubmFtZSk7CiAgICAgICAg
ICAgICBpZiAoIWFycmF5KQogICAgICAgICAgICAgICAgIHRoaXMuX2Z1bmNNYXAuc2V0KHRoaW5n
Lm5hbWUsIGFycmF5ID0gW10pOwpAQCAtNzgsNiArODAsNyBAQCBjbGFzcyBOYW1lQ29udGV4dCB7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRoaXMuX21hcC5oYXModGhpbmcubmFtZSkpCiAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcih0aGluZy5vcmlnaW4ub3JpZ2luU3RyaW5nLCAi
RHVwbGljYXRlIG5hbWU6ICIgKyB0aGluZy5uYW1lKTsKKyAgICAgICAgdGhpcy5fc2V0LmFkZCh0
aGluZyk7CiAgICAgICAgIHRoaXMuX21hcC5zZXQodGhpbmcubmFtZSwgdGhpbmcpOwogICAgIH0K
ICAgICAKQEAgLTEwMCwxMCArMTAzLDE4IEBAIGNsYXNzIE5hbWVDb250ZXh0IHsKICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgfQogICAgIAorICAgIGhhbmRsZURlZmluaW5nKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2RlZmluZWQgPSBuZXcgU2V0KCk7CisgICAgfQorICAgIAogICAgIGlzRGVm
aW5lZCh0aGluZykKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kZWZpbmVkLmhhcyh0aGlu
ZykKLSAgICAgICAgICAgIHx8ICh0aGlzLl9kZWxlZ2F0ZSAmJiB0aGlzLl9kZWxlZ2F0ZS5pc0Rl
ZmluZWQodGhpbmcpKTsKKyAgICAgICAgaWYgKHRoaXMuX3NldC5oYXModGhpbmcpKSB7CisgICAg
ICAgICAgICByZXR1cm4gIXRoaXMuX2RlZmluZWQKKyAgICAgICAgICAgICAgICB8fCB0aGlzLl9k
ZWZpbmVkLmhhcyh0aGluZyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVn
YXRlICYmIHRoaXMuX2RlbGVnYXRlLmlzRGVmaW5lZCh0aGluZyk7CiAgICAgfQogICAgIAogICAg
IGRlZmluZSh0aGluZykKQEAgLTExMyw4ICsxMjQsNyBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAg
ICAgCiAgICAgZGVmaW5lQWxsKCkKICAgICB7Ci0gICAgICAgIGZvciAobGV0IHRoaW5nIG9mIHRo
aXMpCi0gICAgICAgICAgICB0aGlzLmRlZmluZSh0aGluZyk7CisgICAgICAgIHRoaXMuX2RlZmlu
ZWQgPSBudWxsOwogICAgIH0KICAgICAKICAgICBkb1N0YXRlbWVudChzdGF0ZW1lbnQsIGNhbGxi
YWNrKQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZl
ci5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TmFtZVJlc29sdmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIE5h
bWVSZXNvbHZlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBsZXQgbmFtZUNvbnRleHQgPSBu
ZXcgTmFtZUNvbnRleHQodGhpcy5fbmFtZUNvbnRleHQpOwogICAgICAgICBuYW1lQ29udGV4dC5w
cm9ncmFtID0gbm9kZTsKICAgICAgICAgbmFtZUNvbnRleHQucmVjb2duaXplSW50cmluc2ljcygp
OworICAgICAgICBuYW1lQ29udGV4dC5oYW5kbGVEZWZpbmluZygpOwogICAgICAgICBub2RlLmlu
dHJpbnNpY3MgPSBuYW1lQ29udGV4dC5pbnRyaW5zaWNzOwogICAgICAgICBmb3IgKGxldCBzdGF0
ZW1lbnQgb2Ygbm9kZS50b3BMZXZlbFN0YXRlbWVudHMpCiAgICAgICAgICAgICBuYW1lQ29udGV4
dC5hZGQoc3RhdGVtZW50KTsKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Bh
cnNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNl
LmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Q
YXJzZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTc3LDkgKzE3NywxNSBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iCiAgICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgi
SW50ZWdlciBsaXRlcmFsIGlzIG5vdCAzMi1iaXQgaW50ZWdlciIpOwogICAgICAgICAgICAgcmV0
dXJuIG5ldyBJbnRMaXRlcmFsKHRva2VuLm9yaWdpbiwgaW50VmVyc2lvbik7CiAgICAgICAgIH0K
KyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZUtpbmQoImRvdWJsZUxpdGVyYWwiKSkgewor
ICAgICAgICAgICAgdG9rZW4gPSBjb25zdW1lS2luZCgiZG91YmxlTGl0ZXJhbCIpOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBEb3VibGVMaXRlcmFsKHRva2VuLm9yaWdpbiwgK3Rva2VuLnRleHQp
OworICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHN1cHBvcnQgZm9yIGZsb2F0IGxp
dGVyYWxzIGFuZCBwcm9iYWJseSBvdGhlciBsaXRlcmFscyB0b28uCi0gICAgICAgIHRva2VuID0g
Y29uc3VtZUtpbmQoImRvdWJsZUxpdGVyYWwiKTsKLSAgICAgICAgcmV0dXJuIG5ldyBEb3VibGVM
aXRlcmFsKHRva2VuLm9yaWdpbiwgK3Rva2VuLnRleHQpOworICAgICAgICBjb25zdW1lKCIoIik7
CisgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgY29uc3Vt
ZSgiKSIpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBmdW5jdGlv
biBwYXJzZUNvbnN0ZXhwcigpCkBAIC0zMzYsNDIgKzM0Miw0NiBAQCBmdW5jdGlvbiBwYXJzZShw
cm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY29uc3VtZSgiKSIpOwotICAgICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNz
aW9uKG5hbWUub3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudExpc3QpOworICAg
ICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNzaW9uKG5hbWUub3JpZ2luLCBuYW1lLnRleHQsIHR5
cGVBcmd1bWVudHMsIGFyZ3VtZW50TGlzdCk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBh
cnNlUG9zc2libGVTdWZmaXgoKQogICAgIHsKLSAgICAgICAgbGV0IHNpbXBsZUNhc2UgPSBsZXhl
ci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7Ci0gICAgICAgICAgICBsZXQgbGVmdCA9IHBhcnNl
VGVybSgpOwotICAgICAgICAgICAgbGV0IHRva2VuOwotICAgICAgICAgICAgd2hpbGUgKHRva2Vu
ID0gdHJ5Q29uc3VtZSgiKysiLCAiLS0iLCAiLiIsICItPiIsICJbIikpIHsKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHRva2VuLnRleHQpIHsKLSAgICAgICAgICAgICAgICBjYXNlICIrKyI6Ci0g
ICAgICAgICAgICAgICAgY2FzZSAiLS0iOgotICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3
IFN1ZmZpeENhbGxBc3NpZ25tZW50KHRva2VuLm9yaWdpbiwgIm9wZXJhdG9yIiArIHRva2VuLnRl
eHQsIGxlZnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlICIuIjoKLSAgICAgICAgICAgICAgICBjYXNlICItPiI6Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh0b2tlbi50ZXh0ID09ICItPiIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0g
bmV3IERlcmVmZXJlbmNlRXhwcmVzc2lvbih0b2tlbi5vcmlnaW4sIGxlZnQpOwotICAgICAgICAg
ICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9rZW4ub3JpZ2luLCBsZWZ0LCBj
b25zdW1lS2luZCgiaWRlbnRpZmllciIpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAiWyI6IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4
ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsK
LSAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBJbmRleEV4cHJlc3Npb24odG9rZW4ub3Jp
Z2luLCBsZWZ0LCBpbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCB0b2tlbjogIiArIHRva2VuKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGVmdDsKKyAgICAgICAgLy8gRmly
c3QgY2hlY2sgaWYgdGhpcyBpcyBhIGNhbGwgZXhwcmVzc2lvbi4KKyAgICAgICAgbGV0IGlzQ2Fs
bEV4cHJlc3Npb24gPSBsZXhlci50ZXN0U2NvcGUoKCkgPT4geworICAgICAgICAgICAgY29uc3Vt
ZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIHBhcnNlVHlwZUFyZ3VtZW50cygpOwor
ICAgICAgICAgICAgY29uc3VtZSgiKCIpOwogICAgICAgICB9KTsKLSAgICAgICAgaWYgKHNpbXBs
ZUNhc2UpCi0gICAgICAgICAgICByZXR1cm4gc2ltcGxlQ2FzZTsKICAgICAgICAgCi0gICAgICAg
IHJldHVybiBwYXJzZUNhbGxFeHByZXNzaW9uKCk7CisgICAgICAgIGlmIChpc0NhbGxFeHByZXNz
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKKyAgICAgICAg
CisgICAgICAgIGxldCBsZWZ0ID0gcGFyc2VUZXJtKCk7CisgICAgICAgIGxldCB0b2tlbjsKKyAg
ICAgICAgd2hpbGUgKHRva2VuID0gdHJ5Q29uc3VtZSgiKysiLCAiLS0iLCAiLiIsICItPiIsICJb
IikpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodG9rZW4udGV4dCkgeworICAgICAgICAgICAgY2Fz
ZSAiKysiOgorICAgICAgICAgICAgY2FzZSAiLS0iOgorICAgICAgICAgICAgICAgIGxlZnQgPSBu
ZXcgU3VmZml4Q2FsbEFzc2lnbm1lbnQodG9rZW4ub3JpZ2luLCAib3BlcmF0b3IiICsgdG9rZW4u
dGV4dCwgbGVmdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIu
IjoKKyAgICAgICAgICAgIGNhc2UgIi0+IjoKKyAgICAgICAgICAgICAgICBpZiAodG9rZW4udGV4
dCA9PSAiLT4iKQorICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IERlcmVmZXJlbmNlRXhw
cmVzc2lvbih0b2tlbi5vcmlnaW4sIGxlZnQpOworICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcg
RG90RXhwcmVzc2lvbih0b2tlbi5vcmlnaW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVy
IikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiWyI6IHsKKyAg
ICAgICAgICAgICAgICBsZXQgaW5kZXggPSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgICAg
ICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBJbmRleEV4cHJl
c3Npb24odG9rZW4ub3JpZ2luLCBsZWZ0LCBpbmRleCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIHRva2VuOiAiICsgdG9rZW4pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybiBsZWZ0OwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBw
YXJzZVBvc3NpYmxlUHJlZml4KCkKQEAgLTQ5NywxNSArNTA3LDE2IEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWIKICAgICAgICAgICAgIGxleGVyLmZhaWwoIlVuZXhw
ZWN0ZWQgZW5kIG9mIGZpbGUiKTsKICAgICAgICAgb3JpZ2luID0gb3JpZ2luLm9yaWdpbjsKICAg
ICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBs
ZXhlci5iYWNrdHJhY2tpbmdTY29wZShwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24pOworICAgICAg
ICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgo
KSA9PiB7CisgICAgICAgICAgICAgICAgcGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCk7CisgICAg
ICAgICAgICAgICAgY29uc3VtZSgiLCIpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBp
ZiAoIWVmZmVjdGZ1bEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICBsZXQgZmluYWwgPSBm
aW5hbEV4cHJlc3Npb25QYXJzZXIoKTsKICAgICAgICAgICAgICAgICBsaXN0LnB1c2goZmluYWwp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlz
dC5wdXNoKGVmZmVjdGZ1bEV4cHJlc3Npb24pOwotICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1l
KCIsIikpCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG5ldyBDb21tYUV4cHJlc3Npb24ob3JpZ2luLCBsaXN0KTsKICAgICB9CkBAIC01MzAsNyArNTQx
LDkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYgogICAgIGZ1bmN0
aW9uIHBhcnNlUmV0dXJuKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJy
ZXR1cm4iKS5vcmlnaW47Ci0gICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG9yaWdpbiwgcGFyc2VF
eHByZXNzaW9uKCkpOworICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigp
OworICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG9yaWdp
biwgZXhwcmVzc2lvbik7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVE
ZWNscygpCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMJKHJl
dmlzaW9uIDIyMTM5MykKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0u
anMJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgUHJvZ3JhbSBleHRlbmRz
IE5vZGUgewogICAgIHsKICAgICAgICAgbGV0IGZ1bmN0aW9ucyA9IHRoaXMuZnVuY3Rpb25zLmdl
dChuYW1lKTsKICAgICAgICAgaWYgKCFmdW5jdGlvbnMpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtdfTsKICAgICAgICAgCiAgICAgICAg
IHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJn
dW1lbnRUeXBlcyk7CiAgICAgfQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJvdG9jb2xEZWNsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Byb3RvY29sRGVjbC5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUHJvdG9jb2xEZWNsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2
OCw3IEBAIGNsYXNzIFByb3RvY29sRGVjbCBleHRlbmRzIFByb3RvY29sIHsKICAgICAgICAgICAg
IGlmICghc2lnbmF0dXJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBsZXQgb3ZlcmxvYWQgPSByZXNvbHZlT3ZlcmxvYWRJbXBsKHNpZ25hdHVyZXMsIFtdLCBv
dGhlclNpZ25hdHVyZS5wYXJhbWV0ZXJUeXBlcyk7Ci0gICAgICAgICAgICBpZiAoIW92ZXJsb2Fk
KQorICAgICAgICAgICAgaWYgKCFvdmVybG9hZC5mdW5jKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGxldCBzdWJzdGl0dXRlZFJldHVyblR5cGUgPQogICAgICAg
ICAgICAgICAgIG92ZXJsb2FkLmZ1bmMucmV0dXJuVHlwZS5zdWJzdGl0dXRlVG9VbmlmaWNhdGlv
bigKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZElt
cGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2
ZU92ZXJsb2FkSW1wbC5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTcgKzI2LDIzIEBACiAKIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0
eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKQogeworICAgIGxldCBmYWlsdXJlcyA9IFtdOwog
ICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3Rpb25zKSB7Ci0gICAgICAgIGlmICh0eXBlQXJndW1l
bnRzLmxlbmd0aCAmJiB0eXBlQXJndW1lbnRzLmxlbmd0aCAhPSBmdW5jLnR5cGVQYXJhbWV0ZXJz
Lmxlbmd0aCkKKyAgICAgICAgaWYgKHR5cGVBcmd1bWVudHMubGVuZ3RoICYmIHR5cGVBcmd1bWVu
dHMubGVuZ3RoICE9IGZ1bmMudHlwZVBhcmFtZXRlcnMubGVuZ3RoKSB7CisgICAgICAgICAgICBm
YWlsdXJlcy5wdXNoKHtmdW5jLCByZWFzb246ICJXcm9uZyBudW1iZXIgb2YgdHlwZSBhcmd1bWVu
dHMgKHBhc3NlZCAiICsgdHlwZUFyZ3VtZW50cy5sZW5ndGggKyAiLCByZXF1aXJlICIgKyBmdW5j
LnR5cGVQYXJhbWV0ZXJzLmxlbmd0aCArICIpIn0pOwogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmIChhcmd1bWVudFR5cGVzLmxlbmd0aCAhPSBmdW5jLnBhcmFtZXRlcnMubGVuZ3Ro
KQorICAgICAgICB9CisgICAgICAgIGlmIChhcmd1bWVudFR5cGVzLmxlbmd0aCAhPSBmdW5jLnBh
cmFtZXRlcnMubGVuZ3RoKSB7CisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKHtmdW5jLCByZWFz
b246ICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIChwYXNzZWQgIiArIGFyZ3VtZW50VHlwZXMu
bGVuZ3RoICsgIiwgcmVxdWlyZSAiICsgZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCArICIpIn0pOwog
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgbGV0IHVuaWZpY2F0aW9u
Q29udGV4dCA9IG5ldyBVbmlmaWNhdGlvbkNvbnRleHQoZnVuYy50eXBlUGFyYW1ldGVycyk7CiAg
ICAgICAgIGxldCBvayA9IHRydWU7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZUFy
Z3VtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IGFyZ3VtZW50ID0gdHlwZUFy
Z3VtZW50c1tpXTsKICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBmdW5jLnR5cGVQYXJhbWV0
ZXJzW2ldOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudC51bmlmeSh1bmlmaWNhdGlvbkNvbnRl
eHQsIHBhcmFtZXRlcikpIHsKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKHtmdW5jLCBy
ZWFzb246ICJUeXBlIGFyZ3VtZW50ICMiICsgKGkgKyAxKSArICIgZm9yIHBhcmFtZXRlciAiICsg
ZnVuYy50eXBlUGFyYW1ldGVycy5uYW1lICsgIiBkb2VzIG5vdCBtYXRjaCAocGFzc2VkICIgKyBh
cmd1bWVudCArICIsIHJlcXVpcmUgIiArIHBhcmFtZXRlciArICIpIn0pOwogICAgICAgICAgICAg
ICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBA
IC00NywyMCArNTMsMjQgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMs
IAogICAgICAgICAgICAgaWYgKCFhcmd1bWVudFR5cGVzW2ldKQogICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiTnVsbCBhcmd1bWVudCB0eXBlIGF0IGkgPSAiICsgaSk7CiAgICAgICAg
ICAgICBpZiAoIWFyZ3VtZW50VHlwZXNbaV0udW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5j
LnBhcmFtZXRlcnNbaV0udHlwZSkpIHsKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKHtm
dW5jLCByZWFzb246ICJBcmd1bWVudCAjIiArIChpICsgMSkgKyAiICIgKyAoZnVuYy5wYXJhbWV0
ZXJzW2ldLm5hbWUgPyAiZm9yIHBhcmFtZXRlciAiICsgZnVuYy5wYXJhbWV0ZXJzW2ldLm5hbWUg
OiAiIikgKyAiIGRvZXMgbm90IG1hdGNoIChwYXNzZWQgIiArIGFyZ3VtZW50VHlwZXNbaV0gKyAi
LCByZXF1aXJlICIgKyBmdW5jLnBhcmFtZXRlcnNbaV0udHlwZSArICIpIn0pOwogICAgICAgICAg
ICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoIXVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKSkKKyAgICAgICAgaWYgKCF1bmlm
aWNhdGlvbkNvbnRleHQudmVyaWZ5KCkpIHsKKyAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goe2Z1
bmMsIHJlYXNvbjogIlZpb2xhdGVzIHR5cGUgdmFyaWFibGUgY29uc3RyYWludHMifSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBsZXQgc2hvdWxkQnVpbGRUeXBl
QXJndW1lbnRzID0gIXR5cGVBcmd1bWVudHMubGVuZ3RoOwogICAgICAgICBpZiAoc2hvdWxkQnVp
bGRUeXBlQXJndW1lbnRzKQogICAgICAgICAgICAgdHlwZUFyZ3VtZW50cyA9IFtdOwogICAgICAg
ICBmb3IgKGxldCB0eXBlUGFyYW1ldGVyIG9mIGZ1bmMudHlwZVBhcmFtZXRlcnMpIHsKICAgICAg
ICAgICAgIGxldCB0eXBlQXJndW1lbnQgPSB1bmlmaWNhdGlvbkNvbnRleHQuZmluZCh0eXBlUGFy
YW1ldGVyKTsKICAgICAgICAgICAgIGlmICh0eXBlQXJndW1lbnQgPT0gdHlwZVBhcmFtZXRlcikg
eworICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goe2Z1bmMsIHJlYXNvbjogIlR5cGUgcGFy
YW1ldGVyICIgKyB0eXBlUGFyYW1ldGVyICsgIiBkaWQgbm90IGdldCBhc3NpZ25lZCBhIHR5cGUi
fSk7CiAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KQEAgLTcyLDUgKzgyLDUgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2Fk
SW1wbChmdW5jdGlvbnMsIAogICAgICAgICByZXR1cm4ge2Z1bmMsIHVuaWZpY2F0aW9uQ29udGV4
dCwgdHlwZUFyZ3VtZW50c307CiAgICAgfQogICAgIAotICAgIHJldHVybiBudWxsOworICAgIHJl
dHVybiB7ZmFpbHVyZXM6IGZhaWx1cmVzfTsKIH0KSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDMxIEBACiAKIGxv
YWQoIkFsbC5qcyIpOwogCitmdW5jdGlvbiBjaGVja0ludChyZXN1bHQsIGV4cGVjdGVkKQogewot
ICAgIGxldCBwcm9ncmFtID0gcHJlcGFyZSgiPHRlc3Q+IiwgMCwgImludCBmb28oaW50IHgpIHsg
cmV0dXJuIHggKyAxOyB9Iik7Ci0gICAgbGV0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10sIFtuZXcgRUludChwcm9ncmFtLmludHJpbnNpY3MuaW50MzIsIDQyKV0pOwog
ICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEVJbnQpKQogICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIldyb25nIHJlc3VsdCB0eXBlOyByZXN1bHQ6ICIgKyByZXN1bHQpOwotICAgIGlmIChyZXN1
bHQudmFsdWUgIT0gNDMpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiV3JvbmcgcmVzdWx0OiAi
ICsgcmVzdWx0KTsKKyAgICBpZiAocmVzdWx0LnZhbHVlICE9IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIldyb25nIHJlc3VsdDogIiArIHJlc3VsdCArICIgKGV4cGVjdGVkICIg
KyBleHBlY3RlZCArICIpIik7Cit9CisKK2Z1bmN0aW9uIFRFU1RfYWRkMSgpIHsKKyAgICBsZXQg
cHJvZ3JhbSA9IHByZXBhcmUoIjx0ZXN0PiIsIDAsICJpbnQgZm9vKGludCB4KSB7IHJldHVybiB4
ICsgMTsgfSIpOworICAgIGNoZWNrSW50KGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10s
IFtuZXcgRUludChwcm9ncmFtLmludHJpbnNpY3MuaW50MzIsIDQyKV0pLCA0Myk7CiB9CiAKK2Z1
bmN0aW9uIFRFU1Rfc2ltcGxlR2VuZXJpYygpIHsKKyAgICBsZXQgcHJvZ3JhbSA9IHByZXBhcmUo
CisgICAgICAgICI8dGVzdD4iLCAwLAorICAgICAgICBgVCBpZDxUPihUIHgpIHsgcmV0dXJuIHg7
IH0KKyAgICAgICAgIGludCBmb28oaW50IHgpIHsgcmV0dXJuIGlkKHgpICsgMTsgfWApOworICAg
IGNoZWNrSW50KGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtuZXcgRUludChwcm9n
cmFtLmludHJpbnNpY3MuaW50MzIsIDQyKV0pLCA0Myk7Cit9CisKK2ZvciAobGV0IHMgaW4gdGhp
cykgeworICAgIGlmIChzLnN0YXJ0c1dpdGgoIlRFU1RfIikpIHsKKyAgICAgICAgcHJpbnQocyAr
ICIuLi4iKTsKKyAgICAgICAgdGhpc1tzXSgpOworICAgICAgICBwcmludCgiICAgIE9LISIpOwor
ICAgIH0KK30KSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVWYXJpYWJs
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlVmFy
aWFibGUuanMJKHJldmlzaW9uIDIyMTM5MykKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1R5cGVWYXJpYWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBjbGFz
cyBUeXBlVmFyaWFibGUgZXh0ZW5kcyBUeXBlIHsKICAgICAgICAgaWYgKHJlYWxUaGlzICE9IHRo
aXMpCiAgICAgICAgICAgICByZXR1cm4gcmVhbFRoaXMudW5pZnkodW5pZmljYXRpb25Db250ZXh0
LCBvdGhlcik7CiAgICAgICAgIAotICAgICAgICB1bmlmaWNhdGlvbkNvbnRleHQudW5pZnkodGhp
cywgb3RoZXIpOworICAgICAgICB1bmlmaWNhdGlvbkNvbnRleHQudW5pb24odGhpcywgb3RoZXIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkluZGV4OiBUb29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzCShyZXZpc2lv
biAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNv
bnRleHQuanMJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywxNiBAQCBjbGFzcyBVbmlmaWNh
dGlvbkNvbnRleHQgewogICAgIAogICAgIHVuaW9uKGEsIGIpCiAgICAgewotICAgICAgICBhID0g
ZmluZChhKTsKLSAgICAgICAgYiA9IGZpbmQoYik7CisgICAgICAgIGEgPSB0aGlzLmZpbmQoYSk7
CisgICAgICAgIGIgPSB0aGlzLmZpbmQoYik7CiAgICAgICAgIGlmIChhID09IGIpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBpZiAoIWIuaXNVbmlmaWFibGUpCisgICAg
ICAgIGlmICghYi5pc1VuaWZpYWJsZSkgewogICAgICAgICAgICAgW2EsIGJdID0gW2IsIGFdOwot
ICAgICAgICBpZiAoIWEuaXNVbmlmaWFibGUpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkNhbm5vdCB1bmlmeSBub24tdW5pZmlhYmxlIHRoaW5ncyAiICsgYSArICIgYW5kICIgKyBiKTsK
KyAgICAgICAgICAgIGlmICghYi5pc1VuaWZpYWJsZSkKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkNhbm5vdCB1bmlmeSBub24tdW5pZmlhYmxlIHRoaW5ncyAiICsgYSArICIgYW5k
ICIgKyBiKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dHlwZSBwYXJhbWV0ZXJzIGRvbid0IGVuZCB1cCBiZWluZyByb290cy4KICAgICAgICAgaWYgKGEu
aXNVbmlmaWFibGUgJiYgYi5pc1VuaWZpYWJsZSAmJiB0aGlzLl90eXBlUGFyYW1ldGVycy5oYXMo
YikpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319450</attachid>
            <date>2017-08-30 22:01:37 -0700</date>
            <delta_ts>2017-08-31 12:28:23 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25603</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMTQxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc1IEBACisyMDE3LTA4LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV1NMIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBhIHByb2dyYW0gdGhhdCB1c2VzIGdl
bmVyaWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzYxNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgZml4ZXMgdGhlIFdTTCBwYXJzZXIgYW5kIHR5cGUgY2hlY2tlciB0byB0aGUg
cG9pbnQgdGhhdCB3ZSBjYW46CisgICAgICAgIAorICAgICAgICAtIFBhcnNlIGEgZnVuY3Rpb24g
Y2FsbCEKKyAgICAgICAgLSBUeXBlIGNoZWNrIGEgZ2VuZXJpYyBmdW5jdGlvbiBjYWxsIHdpdGgg
YW4gaW5mZXJyZWQgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgIC0gSW5zdGFudGlhdGUgYSBnZW5l
cmljIGZ1bmN0aW9uLgorICAgICAgICAtIElubGluZSBhIGZ1bmN0aW9uIGNhbGwuCisgICAgICAg
IC0gRXZhbHVhdGUgYW4gaW5saW5lZCBmdW5jdGlvbiBjYWxsLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGNoYW5nZXMgdGhlIHRlc3Qgc3VpdGUgc28gdGhhdCBpdCdzIGEgbGl0dGxlIG5p
Y2VyIHRvIGFkZCBuZXcgdGVzdHMuIEZ1bmN0aW9ucyB3aG9zZQorICAgICAgICBuYW1lcyBzdGFy
dCB3aXRoICJURVNUXyIgYXJlIHRlc3RzLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UHJvdG9j
b2xEZWNsLnNldCB0aHJvdyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRUJ1
ZmZlckJ1aWxkZXIuanM6CisgICAgICAgIChFQnVmZmVyQnVpbGRlci5wcm90b3R5cGUudmlzaXRG
dW5jUGFyYW1ldGVyKToKKyAgICAgICAgKEVCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6CisgICAgICAgIChFdmFsdWF0b3IucHJv
dG90eXBlLnZpc2l0RnVuY3Rpb25MaWtlQmxvY2spOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Z1bmNEZWYuanM6CisgICAgICAgIChGdW5jRGVmLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgIChGdW5jRGVmKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9GdW5jSW5zdGFudGlhdG9yLmpzOgorICAgICAgICAoRnVuY0luc3RhbnRpYXRvci5wcm90b3R5
cGUuZ2V0VW5pcXVlKToKKyAgICAgICAgKEZ1bmNJbnN0YW50aWF0b3IpOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZXIuanM6CisgICAgICAgIChJbmxpbmVyLnByb3Rv
dHlwZS52aXNpdENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKElubGluZXIpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzOgorICAgICAgICAoTGV4ZXIpOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzOgorICAgICAgICAo
TmFtZUNvbnRleHQpOgorICAgICAgICAoTmFtZUNvbnRleHQucHJvdG90eXBlLmFkZCk6CisgICAg
ICAgIChOYW1lQ29udGV4dC5wcm90b3R5cGUuZ2V0IGxldCk6CisgICAgICAgIChOYW1lQ29udGV4
dC5wcm90b3R5cGUuZGVmaW5lQWxsKToKKyAgICAgICAgKE5hbWVDb250ZXh0LmdldCBpbnRyaW5z
aWNzKTogRGVsZXRlZC4KKyAgICAgICAgKE5hbWVDb250ZXh0LnNldCBwcm9ncmFtKTogRGVsZXRl
ZC4KKyAgICAgICAgKE5hbWVDb250ZXh0LmdldCBwcm9ncmFtKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAgICAgIChOYW1l
UmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0UHJvZ3JhbSk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUGFyc2UuanM6CisgICAgICAgIChwYXJzZVRlcm0pOgorICAgICAgICAocGFy
c2VQb3NzaWJsZVN1ZmZpeCk6CisgICAgICAgIChnZW5lcmljUGFyc2VDb21tYUV4cHJlc3Npb24p
OgorICAgICAgICAocGFyc2VSZXR1cm4pOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Byb2dyYW0uanM6CisgICAgICAgIChQcm9ncmFtLnByb3RvdHlwZS5yZXNvbHZlRnVuY092
ZXJsb2FkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm90b2NvbERlY2wu
anM6CisgICAgICAgIChQcm90b2NvbERlY2wucHJvdG90eXBlLmluaGVyaXRzKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzOgorICAgICAg
ICAocmVzb2x2ZU92ZXJsb2FkSW1wbCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGdW5jUGFy
YW1ldGVyKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdENhbGxFeHByZXNzaW9u
KToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS5fbWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAoY2hlY2tJbnQpOgor
ICAgICAgICAoVEVTVF9hZGQxKToKKyAgICAgICAgKFRFU1Rfc2ltcGxlR2VuZXJpYyk6CisgICAg
ICAgIChsZXQucy5pbi50aGlzLnMuc3RhcnRzV2l0aCk6CisgICAgICAgIChsb2FkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlVmFyaWFibGUuanM6Cisg
ICAgICAgIChUeXBlVmFyaWFibGUucHJvdG90eXBlLnR5cGVWYXJpYWJsZVVuaWZ5KToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanM6CisgICAg
ICAgIChVbmlmaWNhdGlvbkNvbnRleHQucHJvdG90eXBlLnVuaW9uKToKKwogMjAxNy0wOC0zMCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJFR1JFU1NJ
T04gKHIyMTgxNDQpIC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpd
IHJldHVybnMgdGhlIGNvbnRlbnQgdmlldyBmb3IgYWN0aW9ucyBpbXBsZW1lbnRlZCBvbmx5IGJ5
IHRoZSBXS1dlYlZpZXcsIGNhdXNpbmcgYSBjcmFzaApJbmRleDogVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja2VyLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNiArMTY1
LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB9KTsKICAgICAg
ICAgCiAgICAgICAgIGxldCBvdmVybG9hZCA9IG51bGw7CisgICAgICAgIGxldCBmYWlsdXJlcyA9
IFtdOwogICAgICAgICBmb3IgKGxldCB0eXBlUGFyYW1ldGVyIG9mIHRoaXMuX2N1cnJlbnRTdGF0
ZW1lbnQudHlwZVBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgIGlmICghKHR5cGVQYXJhbWV0ZXIg
aW5zdGFuY2VvZiBUeXBlVmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTc1LDE1ICsxNzYsMjUgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICAgICAgaWYgKCFzaWduYXR1cmVzKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgb3ZlcmxvYWQgPSByZXNvbHZlT3ZlcmxvYWRJbXBsKHNpZ25hdHVyZXMsIG5vZGUudHlw
ZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcyk7Ci0gICAgICAgICAgICBpZiAob3ZlcmxvYWQpCisg
ICAgICAgICAgICBpZiAob3ZlcmxvYWQuZnVuYykKICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGZhaWx1cmVzLnB1c2goLi4ub3ZlcmxvYWQuZmFpbHVyZXMpOworICAgICAgICAg
ICAgb3ZlcmxvYWQgPSBudWxsOwogICAgICAgICB9CiAgICAgICAgIGlmICghb3ZlcmxvYWQpIHsK
ICAgICAgICAgICAgIG92ZXJsb2FkID0gdGhpcy5fcHJvZ3JhbS5yZXNvbHZlRnVuY092ZXJsb2Fk
KAogICAgICAgICAgICAgICAgIG5vZGUubmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLCBhcmd1bWVu
dFR5cGVzKTsKKyAgICAgICAgICAgIGlmICghb3ZlcmxvYWQuZnVuYykgeworICAgICAgICAgICAg
ICAgIGZhaWx1cmVzLnB1c2goLi4ub3ZlcmxvYWQuZmFpbHVyZXMpOworICAgICAgICAgICAgICAg
IGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmluZCBmdW5jdGlvbiBmb3IgY2FsbCI7CisgICAgICAg
ICAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBsZXQg
c3RyaW5naWZ5RmFpbHVyZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlID0+IGZh
aWx1cmUuZnVuYyArICIgZGlkIG5vdCBtYXRjaCBiZWNhdXNlOiAiICsgZmFpbHVyZS5yZWFzb247
CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiwgYnV0IGNvbnNpZGVyZWQ6XG4iICsg
ZmFpbHVyZXMubWFwKHN0cmluZ2lmeUZhaWx1cmUpLmpvaW4oIlxuIikKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBp
ZiAoIW92ZXJsb2FkKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmln
aW4ub3JpZ2luU3RyaW5nLCAiRGlkIG5vdCBmaW5kIGZ1bmN0aW9uIGZvciBjYWxsIik7CiAgICAg
ICAgIG5vZGUuZnVuYyA9IG92ZXJsb2FkLmZ1bmM7CiAgICAgICAgIG5vZGUuYWN0dWFsVHlwZUFy
Z3VtZW50cyA9IG92ZXJsb2FkLnR5cGVBcmd1bWVudHMubWFwKFR5cGVSZWYud3JhcCk7CiAgICAg
ICAgIGxldCByZXN1bHQgPSBvdmVybG9hZC5mdW5jLnJldHVyblR5cGUuc3Vic3RpdHV0ZVRvVW5p
ZmljYXRpb24oCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FQnVmZmVyQnVp
bGRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FQnVm
ZmVyQnVpbGRlci5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRUJ1ZmZlckJ1aWxkZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDgg
QEAgY2xhc3MgRUJ1ZmZlckJ1aWxkZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNp
dEZ1bmNQYXJhbWV0ZXIobm9kZSkKICAgICB7CisgICAgICAgIGlmICghbm9kZS50eXBlKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGdW5jIHBhcmFtZXRlciBoYXMgbm8gdHlwZTogIiAr
IG5vZGUpOwogICAgICAgICBub2RlLmVQdHIgPSB0aGlzLl9jcmVhdGVFUHRyKG5vZGUudHlwZSk7
CiAgICAgfQogfQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9y
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRv
ci5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RXZhbHVhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw4IEBAIGNsYXNzIEV2YWx1
YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0RnVuY3Rpb25MaWtlQmxvY2sobm9kZSkK
ICAgICB7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5hcmd1bWVudExpc3QubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBub2RlLnBhcmFtZXRlcnNbaV0ubFZhbHVlLnZhbHVlID0g
bm9kZS5hcmd1bWVudExpc3RbaV0udmlzaXQodGhpcyk7Ci0gICAgICAgIHJldHVybiB2aXNpdEZ1
bmN0aW9uQm9keShub2RlLmJsb2NrKTsKKyAgICAgICAgICAgIG5vZGUucGFyYW1ldGVyc1tpXS5l
UHRyLmNvcHlGcm9tKG5vZGUuYXJndW1lbnRMaXN0W2ldLnZpc2l0KHRoaXMpKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMudmlzaXRGdW5jdGlvbkJvZHkobm9kZS5ib2R5KTsKICAgICB9CiAgICAgCiAg
ICAgdmlzaXRSZXR1cm4obm9kZSkKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNEZWYuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RnVuY0RlZi5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRnVuY0RlZi5qcwkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBG
dW5jRGVmIGV4dGVuZHMgRnVuYyB7CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCkgKyAiIHsgIiArIHRoaXMuYm9keSArICIgfSI7Cisg
ICAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpICsgIiAiICsgdGhpcy5ib2R5OwogICAgIH0K
IH0KIApJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0luc3RhbnRpYXRv
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jSW5z
dGFudGlhdG9yLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GdW5jSW5zdGFudGlhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4
IEBAIGNsYXNzIEZ1bmNJbnN0YW50aWF0b3IgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmM7CiAg
ICAgICAgIAogICAgICAgICBsZXQgaW5zdGFuY2VzID0gdGhpcy5faW5zdGFuY2VzLmdldChmdW5j
KTsKLSAgICAgICAgaWYgKCFmdW5jdGlvbnMpCi0gICAgICAgICAgICB0aGlzLl9mdW5jdGlvbnMu
c2V0KGZ1bmMsIGZ1bmN0aW9ucyA9IFtdKTsKKyAgICAgICAgaWYgKCFpbnN0YW5jZXMpCisgICAg
ICAgICAgICB0aGlzLl9pbnN0YW5jZXMuc2V0KGZ1bmMsIGluc3RhbmNlcyA9IFtdKTsKICAgICAg
ICAgCiAgICAgICAgIGZvciAobGV0IGluc3RhbmNlIG9mIGluc3RhbmNlcykgewogICAgICAgICAg
ICAgbGV0IG9rID0gdHJ1ZTsKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgRnVuY0luc3RhbnRpYXRv
ciB7CiAgICAgICAgICAgICBmdW5jLmJvZHkudmlzaXQoc3Vic3RpdHV0aW9uKSk7CiAgICAgICAg
IGxldCBpbnN0YW5jZSA9IHtmdW5jOiByZXN1bHRpbmdGdW5jLCB0eXBlQXJndW1lbnRzfTsKICAg
ICAgICAgaW5zdGFuY2VzLnB1c2goaW5zdGFuY2UpOwotICAgICAgICByZXR1cm4gZnVuYzsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdGluZ0Z1bmM7CiAgICAgfQogfQogCkluZGV4OiBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZXIuanMJKHJldmlzaW9uIDIyMTM5MykKKysrIFRvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgY2xhc3MgSW5saW5lciBleHRlbmRzIFJld3JpdGVyIHsKICAgICB2aXNpdENh
bGxFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBpZiAobm9kZS5mdW5jLmlzTmF0aXZl
KQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIudmlz
aXRDYWxsRXhwcmVzc2lvbihub2RlKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2l0aW5nLmRv
VmlzaXQobm9kZS5mdW5jLCAoKSA9PiB7CiAgICAgICAgICAgICBsZXQgZnVuYyA9IHRoaXMuX3By
b2dyYW0uZnVuY0luc3RhbnRpYXRvci5nZXRVbmlxdWUobm9kZS5mdW5jLCBub2RlLmFjdHVhbFR5
cGVBcmd1bWVudHMpOwogICAgICAgICAgICAgX2lubGluZUZ1bmN0aW9uKHRoaXMuX3Byb2dyYW0s
IGZ1bmMsIHRoaXMuX3Zpc2l0aW5nKTsKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0xleGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0xleGVyLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9MZXhlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMTU0LDQgKzE1NCwxOSBAQCBjbGFzcyBM
ZXhlciB7CiAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAg
IHRlc3RTY29wZShjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3Rh
dGU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmIChlIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB0aGlz
LnN0YXRlID0gc3RhdGU7CisgICAgICAgIH0KKyAgICB9CiB9CkluZGV4OiBUb29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9OYW1lQ29udGV4dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lQ29udGV4dC5qcwkocmV2aXNpb24gMjIxMzkzKQorKysg
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDggQEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgIHsKICAgICAgICAg
dGhpcy5fZnVuY01hcCA9IG5ldyBNYXAoKTsKICAgICAgICAgdGhpcy5fbWFwID0gbmV3IE1hcCgp
OwotICAgICAgICB0aGlzLl9kZWZpbmVkID0gbmV3IFNldCgpOworICAgICAgICB0aGlzLl9zZXQg
PSBuZXcgU2V0KCk7CisgICAgICAgIHRoaXMuX2RlZmluZWQgPSBudWxsOwogICAgICAgICB0aGlz
Ll9jdXJyZW50U3RhdGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKICAgICAgICAgdGhpcy5faW50cmluc2ljcyA9IG51bGw7CkBAIC03MCw2ICs3MSw3IEBA
IGNsYXNzIE5hbWVDb250ZXh0IHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHRo
aW5nLmtpbmQgPT0gRnVuYykgeworICAgICAgICAgICAgdGhpcy5fc2V0LmFkZCh0aGluZyk7CiAg
ICAgICAgICAgICBsZXQgYXJyYXkgPSB0aGlzLl9mdW5jTWFwLmdldCh0aGluZy5uYW1lKTsKICAg
ICAgICAgICAgIGlmICghYXJyYXkpCiAgICAgICAgICAgICAgICAgdGhpcy5fZnVuY01hcC5zZXQo
dGhpbmcubmFtZSwgYXJyYXkgPSBbXSk7CkBAIC03OCw2ICs4MCw3IEBAIGNsYXNzIE5hbWVDb250
ZXh0IHsKICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkK
ICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJp
bmcsICJEdXBsaWNhdGUgbmFtZTogIiArIHRoaW5nLm5hbWUpOworICAgICAgICB0aGlzLl9zZXQu
YWRkKHRoaW5nKTsKICAgICAgICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCB0aGluZyk7CiAg
ICAgfQogICAgIApAQCAtMTAwLDEwICsxMDMsMTggQEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAgICAgCisgICAgaGFuZGxlRGVmaW5pbmcoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fZGVmaW5lZCA9IG5ldyBTZXQoKTsKKyAgICB9CisgICAgCiAgICAg
aXNEZWZpbmVkKHRoaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmluZWQuaGFz
KHRoaW5nKQotICAgICAgICAgICAgfHwgKHRoaXMuX2RlbGVnYXRlICYmIHRoaXMuX2RlbGVnYXRl
LmlzRGVmaW5lZCh0aGluZykpOworICAgICAgICBpZiAodGhpcy5fc2V0Lmhhcyh0aGluZykpIHsK
KyAgICAgICAgICAgIHJldHVybiAhdGhpcy5fZGVmaW5lZAorICAgICAgICAgICAgICAgIHx8IHRo
aXMuX2RlZmluZWQuaGFzKHRoaW5nKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5f
ZGVsZWdhdGUgJiYgdGhpcy5fZGVsZWdhdGUuaXNEZWZpbmVkKHRoaW5nKTsKICAgICB9CiAgICAg
CiAgICAgZGVmaW5lKHRoaW5nKQpAQCAtMTEzLDggKzEyNCw3IEBAIGNsYXNzIE5hbWVDb250ZXh0
IHsKICAgICAKICAgICBkZWZpbmVBbGwoKQogICAgIHsKLSAgICAgICAgZm9yIChsZXQgdGhpbmcg
b2YgdGhpcykKLSAgICAgICAgICAgIHRoaXMuZGVmaW5lKHRoaW5nKTsKKyAgICAgICAgdGhpcy5f
ZGVmaW5lZCA9IG51bGw7CiAgICAgfQogICAgIAogICAgIGRvU3RhdGVtZW50KHN0YXRlbWVudCwg
Y2FsbGJhY2spCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2
ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJl
c29sdmVyLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYW1lUmVzb2x2ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgY2xh
c3MgTmFtZVJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIGxldCBuYW1lQ29udGV4
dCA9IG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCk7CiAgICAgICAgIG5hbWVDb250
ZXh0LnByb2dyYW0gPSBub2RlOwogICAgICAgICBuYW1lQ29udGV4dC5yZWNvZ25pemVJbnRyaW5z
aWNzKCk7CisgICAgICAgIG5hbWVDb250ZXh0LmhhbmRsZURlZmluaW5nKCk7CiAgICAgICAgIG5v
ZGUuaW50cmluc2ljcyA9IG5hbWVDb250ZXh0LmludHJpbnNpY3M7CiAgICAgICAgIGZvciAobGV0
IHN0YXRlbWVudCBvZiBub2RlLnRvcExldmVsU3RhdGVtZW50cykKICAgICAgICAgICAgIG5hbWVD
b250ZXh0LmFkZChzdGF0ZW1lbnQpOwpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUGFyc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UGFyc2UuanMJKHJldmlzaW9uIDIyMTM5MykKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1BhcnNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsOSArMTc3LDE1IEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWIKICAgICAgICAgICAgICAgICBsZXhlci5m
YWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IDMyLWJpdCBpbnRlZ2VyIik7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IEludExpdGVyYWwodG9rZW4ub3JpZ2luLCBpbnRWZXJzaW9uKTsKICAgICAg
ICAgfQorICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiZG91YmxlTGl0ZXJhbCIp
KSB7CisgICAgICAgICAgICB0b2tlbiA9IGNvbnN1bWVLaW5kKCJkb3VibGVMaXRlcmFsIik7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IERvdWJsZUxpdGVyYWwodG9rZW4ub3JpZ2luLCArdG9rZW4u
dGV4dCk7CisgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IE5lZWQgc3VwcG9ydCBmb3IgZmxv
YXQgbGl0ZXJhbHMgYW5kIHByb2JhYmx5IG90aGVyIGxpdGVyYWxzIHRvby4KLSAgICAgICAgdG9r
ZW4gPSBjb25zdW1lS2luZCgiZG91YmxlTGl0ZXJhbCIpOwotICAgICAgICByZXR1cm4gbmV3IERv
dWJsZUxpdGVyYWwodG9rZW4ub3JpZ2luLCArdG9rZW4udGV4dCk7CisgICAgICAgIGNvbnN1bWUo
IigiKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbigpOworICAgICAgICBj
b25zdW1lKCIpIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIGZ1
bmN0aW9uIHBhcnNlQ29uc3RleHByKCkKQEAgLTMzNiw0MiArMzQyLDQ2IEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWIKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjb25zdW1lKCIpIik7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbEV4
cHJlc3Npb24obmFtZS5vcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50TGlzdCk7
CisgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24obmFtZS5vcmlnaW4sIG5hbWUudGV4
dCwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRMaXN0KTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rp
b24gcGFyc2VQb3NzaWJsZVN1ZmZpeCgpCiAgICAgewotICAgICAgICBsZXQgc2ltcGxlQ2FzZSA9
IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKLSAgICAgICAgICAgIGxldCBsZWZ0ID0g
cGFyc2VUZXJtKCk7Ci0gICAgICAgICAgICBsZXQgdG9rZW47Ci0gICAgICAgICAgICB3aGlsZSAo
dG9rZW4gPSB0cnlDb25zdW1lKCIrKyIsICItLSIsICIuIiwgIi0+IiwgIlsiKSkgewotICAgICAg
ICAgICAgICAgIHN3aXRjaCAodG9rZW4udGV4dCkgewotICAgICAgICAgICAgICAgIGNhc2UgIisr
IjoKLSAgICAgICAgICAgICAgICBjYXNlICItLSI6Ci0gICAgICAgICAgICAgICAgICAgIGxlZnQg
PSBuZXcgU3VmZml4Q2FsbEFzc2lnbm1lbnQodG9rZW4ub3JpZ2luLCAib3BlcmF0b3IiICsgdG9r
ZW4udGV4dCwgbGVmdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgIi4iOgotICAgICAgICAgICAgICAgIGNhc2UgIi0+IjoKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHRva2VuLnRleHQgPT0gIi0+IikKLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnQgPSBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLm9yaWdpbiwgbGVmdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVzc2lvbih0b2tlbi5vcmlnaW4sIGxl
ZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlICJbIjogewotICAgICAgICAgICAgICAgICAgICBsZXQg
aW5kZXggPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgi
XSIpOwotICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IEluZGV4RXhwcmVzc2lvbih0b2tl
bi5vcmlnaW4sIGxlZnQsIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQmFkIHRva2VuOiAiICsgdG9rZW4pOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsZWZ0OworICAgICAgICAv
LyBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIGEgY2FsbCBleHByZXNzaW9uLgorICAgICAgICBsZXQg
aXNDYWxsRXhwcmVzc2lvbiA9IGxleGVyLnRlc3RTY29wZSgoKSA9PiB7CisgICAgICAgICAgICBj
b25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAgcGFyc2VUeXBlQXJndW1lbnRz
KCk7CisgICAgICAgICAgICBjb25zdW1lKCIoIik7CiAgICAgICAgIH0pOwotICAgICAgICBpZiAo
c2ltcGxlQ2FzZSkKLSAgICAgICAgICAgIHJldHVybiBzaW1wbGVDYXNlOwogICAgICAgICAKLSAg
ICAgICAgcmV0dXJuIHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKKyAgICAgICAgaWYgKGlzQ2FsbEV4
cHJlc3Npb24pCisgICAgICAgICAgICByZXR1cm4gcGFyc2VDYWxsRXhwcmVzc2lvbigpOworICAg
ICAgICAKKyAgICAgICAgbGV0IGxlZnQgPSBwYXJzZVRlcm0oKTsKKyAgICAgICAgbGV0IHRva2Vu
OworICAgICAgICB3aGlsZSAodG9rZW4gPSB0cnlDb25zdW1lKCIrKyIsICItLSIsICIuIiwgIi0+
IiwgIlsiKSkgeworICAgICAgICAgICAgc3dpdGNoICh0b2tlbi50ZXh0KSB7CisgICAgICAgICAg
ICBjYXNlICIrKyI6CisgICAgICAgICAgICBjYXNlICItLSI6CisgICAgICAgICAgICAgICAgbGVm
dCA9IG5ldyBTdWZmaXhDYWxsQXNzaWdubWVudCh0b2tlbi5vcmlnaW4sICJvcGVyYXRvciIgKyB0
b2tlbi50ZXh0LCBsZWZ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgIi4iOgorICAgICAgICAgICAgY2FzZSAiLT4iOgorICAgICAgICAgICAgICAgIGlmICh0b2tl
bi50ZXh0ID09ICItPiIpCisgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRGVyZWZlcmVu
Y2VFeHByZXNzaW9uKHRva2VuLm9yaWdpbiwgbGVmdCk7CisgICAgICAgICAgICAgICAgbGVmdCA9
IG5ldyBEb3RFeHByZXNzaW9uKHRva2VuLm9yaWdpbiwgbGVmdCwgY29uc3VtZUtpbmQoImlkZW50
aWZpZXIiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJbIjog
eworICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHBhcnNlRXhwcmVzc2lvbigpOworICAgICAg
ICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IEluZGV4
RXhwcmVzc2lvbih0b2tlbi5vcmlnaW4sIGxlZnQsIGluZGV4KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgdG9rZW46ICIgKyB0b2tlbik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgfQogICAgIAogICAgIGZ1bmN0
aW9uIHBhcnNlUG9zc2libGVQcmVmaXgoKQpAQCAtNDk3LDE1ICs1MDcsMTYgQEAgZnVuY3Rpb24g
cGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYgogICAgICAgICAgICAgbGV4ZXIuZmFpbCgi
VW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOwogICAgICAgICBvcmlnaW4gPSBvcmlnaW4ub3JpZ2lu
OwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBsZXQgZWZmZWN0ZnVsRXhwcmVzc2lv
biA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKHBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lvbik7Cisg
ICAgICAgICAgICBsZXQgZWZmZWN0ZnVsRXhwcmVzc2lvbiA9IGxleGVyLmJhY2t0cmFja2luZ1Nj
b3BlKCgpID0+IHsKKyAgICAgICAgICAgICAgICBwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24oKTsK
KyAgICAgICAgICAgICAgICBjb25zdW1lKCIsIik7CisgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGlmICghZWZmZWN0ZnVsRXhwcmVzc2lvbikgewogICAgICAgICAgICAgICAgIGxldCBmaW5h
bCA9IGZpbmFsRXhwcmVzc2lvblBhcnNlcigpOwogICAgICAgICAgICAgICAgIGxpc3QucHVzaChm
aW5hbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBsaXN0LnB1c2goZWZmZWN0ZnVsRXhwcmVzc2lvbik7Ci0gICAgICAgICAgICBpZiAoIXRyeUNv
bnN1bWUoIiwiKSkKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbmV3IENvbW1hRXhwcmVzc2lvbihvcmlnaW4sIGxpc3QpOwogICAgIH0KQEAgLTUzMCw3
ICs1NDEsOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iCiAgICAg
ZnVuY3Rpb24gcGFyc2VSZXR1cm4oKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1
bWUoInJldHVybiIpLm9yaWdpbjsKLSAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4ob3JpZ2luLCBw
YXJzZUV4cHJlc3Npb24oKSk7CisgICAgICAgIGxldCBleHByZXNzaW9uID0gcGFyc2VFeHByZXNz
aW9uKCk7CisgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4o
b3JpZ2luLCBleHByZXNzaW9uKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJp
YWJsZURlY2xzKCkKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0u
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5q
cwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJv
Z3JhbS5qcwkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQcm9ncmFtIGV4
dGVuZHMgTm9kZSB7CiAgICAgewogICAgICAgICBsZXQgZnVuY3Rpb25zID0gdGhpcy5mdW5jdGlv
bnMuZ2V0KG5hbWUpOwogICAgICAgICBpZiAoIWZ1bmN0aW9ucykKLSAgICAgICAgICAgIHJldHVy
biBudWxsOworICAgICAgICAgICAgcmV0dXJuIHtmYWlsdXJlczogW119OwogICAgICAgICAKICAg
ICAgICAgcmV0dXJuIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCB0eXBlQXJndW1lbnRz
LCBhcmd1bWVudFR5cGVzKTsKICAgICB9CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9Qcm90b2NvbERlY2wuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUHJvdG9jb2xEZWNsLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm90b2NvbERlY2wuanMJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgY2xhc3MgUHJvdG9jb2xEZWNsIGV4dGVuZHMgUHJvdG9jb2wgewogICAgICAg
ICAgICAgaWYgKCFzaWduYXR1cmVzKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGxldCBvdmVybG9hZCA9IHJlc29sdmVPdmVybG9hZEltcGwoc2lnbmF0dXJlcywg
W10sIG90aGVyU2lnbmF0dXJlLnBhcmFtZXRlclR5cGVzKTsKLSAgICAgICAgICAgIGlmICghb3Zl
cmxvYWQpCisgICAgICAgICAgICBpZiAoIW92ZXJsb2FkLmZ1bmMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgbGV0IHN1YnN0aXR1dGVkUmV0dXJuVHlwZSA9CiAg
ICAgICAgICAgICAgICAgb3ZlcmxvYWQuZnVuYy5yZXR1cm5UeXBlLnN1YnN0aXR1dGVUb1VuaWZp
Y2F0aW9uKApJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJs
b2FkSW1wbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9S
ZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCShyZXZpc2lvbiAyMjEzOTMpCisrKyBUb29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxNyArMjYsMjMgQEAKIAogZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlv
bnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCiB7CisgICAgbGV0IGZhaWx1cmVzID0g
W107CiAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKHR5cGVB
cmd1bWVudHMubGVuZ3RoICYmIHR5cGVBcmd1bWVudHMubGVuZ3RoICE9IGZ1bmMudHlwZVBhcmFt
ZXRlcnMubGVuZ3RoKQorICAgICAgICBpZiAodHlwZUFyZ3VtZW50cy5sZW5ndGggJiYgdHlwZUFy
Z3VtZW50cy5sZW5ndGggIT0gZnVuYy50eXBlUGFyYW1ldGVycy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIGZhaWx1cmVzLnB1c2goe2Z1bmMsIHJlYXNvbjogIldyb25nIG51bWJlciBvZiB0eXBlIGFy
Z3VtZW50cyAocGFzc2VkICIgKyB0eXBlQXJndW1lbnRzLmxlbmd0aCArICIsIHJlcXVpcmUgIiAr
IGZ1bmMudHlwZVBhcmFtZXRlcnMubGVuZ3RoICsgIikifSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKGFyZ3VtZW50VHlwZXMubGVuZ3RoICE9IGZ1bmMucGFyYW1ldGVycy5s
ZW5ndGgpCisgICAgICAgIH0KKyAgICAgICAgaWYgKGFyZ3VtZW50VHlwZXMubGVuZ3RoICE9IGZ1
bmMucGFyYW1ldGVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goe2Z1bmMs
IHJlYXNvbjogIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgKHBhc3NlZCAiICsgYXJndW1lbnRU
eXBlcy5sZW5ndGggKyAiLCByZXF1aXJlICIgKyBmdW5jLnBhcmFtZXRlcnMubGVuZ3RoICsgIiki
fSk7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBsZXQgdW5pZmlj
YXRpb25Db250ZXh0ID0gbmV3IFVuaWZpY2F0aW9uQ29udGV4dChmdW5jLnR5cGVQYXJhbWV0ZXJz
KTsKICAgICAgICAgbGV0IG9rID0gdHJ1ZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0
eXBlQXJndW1lbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgYXJndW1lbnQgPSB0
eXBlQXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IGZ1bmMudHlwZVBh
cmFtZXRlcnNbaV07CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50LnVuaWZ5KHVuaWZpY2F0aW9u
Q29udGV4dCwgcGFyYW1ldGVyKSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goe2Z1
bmMsIHJlYXNvbjogIlR5cGUgYXJndW1lbnQgIyIgKyAoaSArIDEpICsgIiBmb3IgcGFyYW1ldGVy
ICIgKyBmdW5jLnR5cGVQYXJhbWV0ZXJzLm5hbWUgKyAiIGRvZXMgbm90IG1hdGNoIChwYXNzZWQg
IiArIGFyZ3VtZW50ICsgIiwgcmVxdWlyZSAiICsgcGFyYW1ldGVyICsgIikifSk7CiAgICAgICAg
ICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTQ3LDIwICs1MywyNCBAQCBmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0
aW9ucywgCiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50VHlwZXNbaV0pCiAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJOdWxsIGFyZ3VtZW50IHR5cGUgYXQgaSA9ICIgKyBpKTsKICAg
ICAgICAgICAgIGlmICghYXJndW1lbnRUeXBlc1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQs
IGZ1bmMucGFyYW1ldGVyc1tpXS50eXBlKSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmVzLnB1
c2goe2Z1bmMsIHJlYXNvbjogIkFyZ3VtZW50ICMiICsgKGkgKyAxKSArICIgIiArIChmdW5jLnBh
cmFtZXRlcnNbaV0ubmFtZSA/ICJmb3IgcGFyYW1ldGVyICIgKyBmdW5jLnBhcmFtZXRlcnNbaV0u
bmFtZSA6ICIiKSArICIgZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgYXJndW1lbnRUeXBlc1tp
XSArICIsIHJlcXVpcmUgIiArIGZ1bmMucGFyYW1ldGVyc1tpXS50eXBlICsgIikifSk7CiAgICAg
ICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmICghdW5pZmljYXRpb25Db250ZXh0LnZlcmlmeSgpKQorICAgICAgICBpZiAo
IXVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKSkgeworICAgICAgICAgICAgZmFpbHVyZXMucHVz
aCh7ZnVuYywgcmVhc29uOiAiVmlvbGF0ZXMgdHlwZSB2YXJpYWJsZSBjb25zdHJhaW50cyJ9KTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGxldCBzaG91bGRCdWls
ZFR5cGVBcmd1bWVudHMgPSAhdHlwZUFyZ3VtZW50cy5sZW5ndGg7CiAgICAgICAgIGlmIChzaG91
bGRCdWlsZFR5cGVBcmd1bWVudHMpCiAgICAgICAgICAgICB0eXBlQXJndW1lbnRzID0gW107CiAg
ICAgICAgIGZvciAobGV0IHR5cGVQYXJhbWV0ZXIgb2YgZnVuYy50eXBlUGFyYW1ldGVycykgewog
ICAgICAgICAgICAgbGV0IHR5cGVBcmd1bWVudCA9IHVuaWZpY2F0aW9uQ29udGV4dC5maW5kKHR5
cGVQYXJhbWV0ZXIpOwogICAgICAgICAgICAgaWYgKHR5cGVBcmd1bWVudCA9PSB0eXBlUGFyYW1l
dGVyKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaCh7ZnVuYywgcmVhc29uOiAiVHlw
ZSBwYXJhbWV0ZXIgIiArIHR5cGVQYXJhbWV0ZXIgKyAiIGRpZCBub3QgZ2V0IGFzc2lnbmVkIGEg
dHlwZSJ9KTsKICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtNzIsNSArODIsNSBAQCBmdW5jdGlvbiByZXNvbHZlT3Zl
cmxvYWRJbXBsKGZ1bmN0aW9ucywgCiAgICAgICAgIHJldHVybiB7ZnVuYywgdW5pZmljYXRpb25D
b250ZXh0LCB0eXBlQXJndW1lbnRzfTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIG51bGw7Cisg
ICAgcmV0dXJuIHtmYWlsdXJlczogZmFpbHVyZXN9OwogfQpJbmRleDogVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMJKHJldmlzaW9uIDIyMTM5MykKKysrIFRvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAgICAgdGhpcy5fbWFwcGluZyA9IG5ldyBN
YXAoKTsKICAgICB9CiAgICAgCi0gICAgX21hcChvbGRJdGVtLCBuZXdJdGVtKQorICAgIF9tYXBO
b2RlKG9sZEl0ZW0sIG5ld0l0ZW0pCiAgICAgewogICAgICAgICB0aGlzLl9tYXBwaW5nLnNldChv
bGRJdGVtLCBuZXdJdGVtKTsKICAgICAgICAgcmV0dXJuIG5ld0l0ZW07CkBAIC01NCw4ICs1NCw4
IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9kZSkK
ICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm5hbWUs
IG5vZGUudHlwZS52aXNpdCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX21hcChub2RlLCByZXN1bHQp
OworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEZ1bmNQYXJhbWV0ZXIobm9kZS5vcmlnaW4sIG5v
ZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbWFwTm9kZShu
b2RlLCByZXN1bHQpOwogICAgICAgICByZXN1bHQubFZhbHVlID0gbm9kZS5sVmFsdWU7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTMgQEAgY2xhc3MgUmV3
cml0ZXIgewogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IENhbGxFeHByZXNzaW9uKAogICAgICAg
ICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAgICAgIG5vZGUudHlwZUFyZ3Vt
ZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSksCi0gICAg
ICAgICAgICBub2RlLmFyZ3VtZW50bGlzdC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQo
dGhpcykpKTsKKyAgICAgICAgICAgIG5vZGUuYXJndW1lbnRMaXN0Lm1hcChhcmd1bWVudCA9PiBh
cmd1bWVudC52aXNpdCh0aGlzKSkpOwogICAgICAgICBsZXQgYWN0dWFsVHlwZUFyZ3VtZW50cyA9
IG5vZGUuYWN0dWFsVHlwZUFyZ3VtZW50czsKICAgICAgICAgaWYgKGFjdHVhbFR5cGVBcmd1bWVu
dHMpIHsKICAgICAgICAgICAgIHJlc3VsdC5hY3R1YWxUeXBlQXJndW1lbnRzID0KICAgICAgICAg
ICAgICAgICBhY3R1YWxUeXBlQXJndW1lbnRzLm1hcChhY3R1YWxUeXBlQXJndW1lbnQgPT4gYWN0
dWFsVHlwZUFyZ3VtZW50LnZpc2l0KHRoaXMpKTsKICAgICAgICAgfQorICAgICAgICByZXN1bHQu
ZnVuYyA9IG5vZGUuZnVuYzsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCklu
ZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMJKHJldmlzaW9uIDIyMTM5MykK
KysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEyICsyNiwzNyBAQAogCiBsb2FkKCJBbGwuanMiKTsKIAorZnVuY3Rpb24gY2hlY2tJ
bnQocmVzdWx0LCBleHBlY3RlZCkKIHsKLSAgICBsZXQgcHJvZ3JhbSA9IHByZXBhcmUoIjx0ZXN0
PiIsIDAsICJpbnQgZm9vKGludCB4KSB7IHJldHVybiB4ICsgMTsgfSIpOwotICAgIGxldCByZXN1
bHQgPSBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbmV3IEVJbnQocHJvZ3JhbS5p
bnRyaW5zaWNzLmludDMyLCA0MildKTsKICAgICBpZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBFSW50
KSkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQgdHlwZTsgcmVzdWx0OiAi
ICsgcmVzdWx0KTsKLSAgICBpZiAocmVzdWx0LnZhbHVlICE9IDQzKQotICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIldyb25nIHJlc3VsdDogIiArIHJlc3VsdCk7CisgICAgaWYgKHJlc3VsdC52YWx1
ZSAhPSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQ6ICIg
KyByZXN1bHQgKyAiIChleHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiKSIpOworfQorCitmdW5jdGlv
biBURVNUX2FkZDEoKSB7CisgICAgbGV0IHByb2dyYW0gPSBwcmVwYXJlKCI8dGVzdD4iLCAwLCAi
aW50IGZvbyhpbnQgeCkgeyByZXR1cm4geCArIDE7IH0iKTsKKyAgICBjaGVja0ludChjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbmV3IEVJbnQocHJvZ3JhbS5pbnRyaW5zaWNzLmlu
dDMyLCA0MildKSwgNDMpOworfQorCitmdW5jdGlvbiBURVNUX3NpbXBsZUdlbmVyaWMoKSB7Cisg
ICAgbGV0IHByb2dyYW0gPSBwcmVwYXJlKAorICAgICAgICAiPHRlc3Q+IiwgMCwKKyAgICAgICAg
YFQgaWQ8VD4oVCB4KSB7IHJldHVybiB4OyB9CisgICAgICAgICBpbnQgZm9vKGludCB4KSB7IHJl
dHVybiBpZCh4KSArIDE7IH1gKTsKKyAgICBjaGVja0ludChjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdLCBbbmV3IEVJbnQocHJvZ3JhbS5pbnRyaW5zaWNzLmludDMyLCA0MildKSwgNDMp
OwogfQogCitsZXQgYmVmb3JlID0gcHJlY2lzZVRpbWUoKTsKKworZm9yIChsZXQgcyBpbiB0aGlz
KSB7CisgICAgaWYgKHMuc3RhcnRzV2l0aCgiVEVTVF8iKSkgeworICAgICAgICBwcmludChzICsg
Ii4uLiIpOworICAgICAgICB0aGlzW3NdKCk7CisgICAgICAgIHByaW50KCIgICAgT0shIik7Cisg
ICAgfQorfQorCitsZXQgYWZ0ZXIgPSBwcmVjaXNlVGltZSgpOworCitwcmludCgiVGhhdCB0b29r
ICIgKyAoYWZ0ZXIgLSBiZWZvcmUpICogMTAwMCArICIgbXMuIik7CkluZGV4OiBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlVmFyaWFibGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVZhcmlhYmxlLmpzCShyZXZpc2lvbiAyMjEzOTMp
CisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlVmFyaWFibGUuanMJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgVHlwZVZhcmlhYmxlIGV4dGVuZHMgVHlw
ZSB7CiAgICAgICAgIGlmIChyZWFsVGhpcyAhPSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHJl
YWxUaGlzLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgb3RoZXIpOwogICAgICAgICAKLSAgICAg
ICAgdW5pZmljYXRpb25Db250ZXh0LnVuaWZ5KHRoaXMsIG90aGVyKTsKKyAgICAgICAgdW5pZmlj
YXRpb25Db250ZXh0LnVuaW9uKHRoaXMsIG90aGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIApJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZmljYXRp
b25Db250ZXh0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1VuaWZpY2F0aW9uQ29udGV4dC5qcwkocmV2aXNpb24gMjIxMzkzKQorKysgVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywyMCArMzMsMjEgQEAgY2xhc3MgVW5pZmljYXRpb25Db250ZXh0IHsKICAgICAKICAgICB1
bmlvbihhLCBiKQogICAgIHsKLSAgICAgICAgYSA9IGZpbmQoYSk7Ci0gICAgICAgIGIgPSBmaW5k
KGIpOworICAgICAgICBhID0gdGhpcy5maW5kKGEpOworICAgICAgICBiID0gdGhpcy5maW5kKGIp
OwogICAgICAgICBpZiAoYSA9PSBiKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAg
ICAgICAgaWYgKCFiLmlzVW5pZmlhYmxlKQorICAgICAgICBpZiAoIWEuaXNVbmlmaWFibGUpIHsK
ICAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhXTsKLSAgICAgICAgaWYgKCFhLmlzVW5pZmlhYmxl
KQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdW5pZnkgbm9uLXVuaWZpYWJs
ZSB0aGluZ3MgIiArIGEgKyAiIGFuZCAiICsgYik7CisgICAgICAgICAgICBpZiAoIWEuaXNVbmlm
aWFibGUpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdW5pZnkgbm9u
LXVuaWZpYWJsZSB0aGluZ3MgIiArIGEgKyAiIGFuZCAiICsgYik7CisgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHR5cGUgcGFyYW1ldGVycyBkb24ndCBlbmQg
dXAgYmVpbmcgcm9vdHMuCiAgICAgICAgIGlmIChhLmlzVW5pZmlhYmxlICYmIGIuaXNVbmlmaWFi
bGUgJiYgdGhpcy5fdHlwZVBhcmFtZXRlcnMuaGFzKGIpKQogICAgICAgICAgICAgW2EsIGJdID0g
W2IsIGFdOwotCisgICAgICAgIAogICAgICAgICB0aGlzLl9uZXh0TWFwLnNldChhLCBiKTsKICAg
ICB9CiAgICAgCg==
</data>
<flag name="review"
          id="339736"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>