<?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>161229</bug_id>
          
          <creation_ts>2016-08-26 01:08:27 -0700</creation_ts>
          <short_desc>[JSC] Implement CompareStrictEq(String, Untyped) in FTL</short_desc>
          <delta_ts>2016-08-26 17:38:05 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1223431</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-26 01:08:27 -0700</bug_when>
    <thetext>[JSC] Implement CompareStrictEq(String, Untyped) in FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223432</commentid>
    <comment_count>1</comment_count>
      <attachid>287077</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-26 01:11:38 -0700</bug_when>
    <thetext>Created attachment 287077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223585</commentid>
    <comment_count>2</comment_count>
      <attachid>287077</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-26 10:50:41 -0700</bug_when>
    <thetext>Comment on attachment 287077
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5204
&gt; +        // Given left is string. If the value are strictly equal, rightValue has to be the same string.

values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223586</commentid>
    <comment_count>3</comment_count>
      <attachid>287077</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-26 10:51:02 -0700</bug_when>
    <thetext>Comment on attachment 287077
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5179
&gt; +        RELEASE_ASSERT(m_node-&gt;isBinaryUseKind(UntypedUse));

Maybe make this a DFG_ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223731</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-26 14:54:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5179
&gt; &gt; +        RELEASE_ASSERT(m_node-&gt;isBinaryUseKind(UntypedUse));
&gt; 
&gt; Maybe make this a DFG_ASSERT?

Yep, that&apos;s significantly better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223735</commentid>
    <comment_count>5</comment_count>
      <attachid>287155</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-26 15:04:36 -0700</bug_when>
    <thetext>Created attachment 287155
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223819</commentid>
    <comment_count>6</comment_count>
      <attachid>287155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-26 17:38:02 -0700</bug_when>
    <thetext>Comment on attachment 287155
Patch for landing

Clearing flags on attachment: 287155

Committed r205064: &lt;http://trac.webkit.org/changeset/205064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223820</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-26 17:38:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287077</attachid>
            <date>2016-08-26 01:11:38 -0700</date>
            <delta_ts>2016-08-26 15:04:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161229-20160826010934.patch</filename>
            <type>text/plain</type>
            <size>19203</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxYzE0NjNjOTc4Y2I3YWExNzJkODk3ZmFiYmNjYTUyMDE0ZDIwLi5lMzMxN2NiZjJkMzkxZDJh
OWEwM2JiMzM1ODJjMzYwODgyMTIwYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wOC0yNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IENvbXBhcmVTdHJpY3RFcShTdHJpbmcs
IFVudHlwZWQpIGluIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIChTdHJpbmcsIFVudHlwZWQpIHVzZXMgdG8gRlRMIENvbXBhcmVTdHJpY3RF
cS4KKyAgICAgICAgVGhpcyB3YXMgdGhlIGxhc3QgdXNlIHR5cGUgbm90IGltcGxlbWVudGVkLCB0
aGUgbm9kZSBpcyBmdWxseQorICAgICAgICBzdXBwb3J0ZWQgYnkgRlRMIGFmdGVyIHRoaXMgcGF0
Y2guCisKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RF
cSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdU
b1VudHlwZWRTdHJpY3RFcXVhbGl0eSk6CisKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bm9uU3BlY3VsYXRpdmVDb21wYXJlKToKKyAgICAgICAgUmVtb3ZlIHRoZSB0eXBl
IGNoZWNrcyB3aGVuIHBvc3NpYmxlLgorCiAyMDE2LTA4LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgc2hv
dWxkIGdlbmVyYXRlIHBsYXRmb3JtIGluZGVwZW5kZW50IGZpbGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMTFiMjQwMzNjZTkzYjNlMzNl
YjhkZTBkZmYzMzMxYTZiYjJjYzIxYi4uMjE2N2FmMTVkZDFkNmJlODM1ZjkyZGQ0ZmRiNWY3Y2Q4
M2FiZTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMjQ2LDYgKzI0Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICBjYXNlIFB1dER5bmFt
aWNWYXI6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CisgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6
CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTM4OCw0MiAr
Mzg5LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT3RoZXJVc2UgfHwgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IE90aGVyVXNlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIHJldHVybiBDYW5ub3RDb21waWxlOwotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgotICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJs
ZVJlcFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UsIE9iamVjdFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJv
bFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChTeW1ib2xVc2UsIFVudHlwZWRVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3ltYm9sVXNlKSkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2Us
IFVudHlwZWRVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5n
VmFyVXNlKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpKQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgIGNhc2UgQ29tcGFyZUxlc3M6
CiAgICAgY2FzZSBDb21wYXJlTGVzc0VxOgogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODQ1MDBj
ZGZjMjQwMWExZmU4NjhkYmQ4NTZjMDIxM2RhNWE0MDUzMi4uYTBjMTAwNThlNDdmZjY1N2EzZWY5
MjgwNTI0NDliYWEyZGQ1MTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtNTEwMiwxNSArNTEwMiw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoVW50eXBlZFVzZSkpIHsKLSAgICAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgK
LSAgICAgICAgICAgICAgICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3ltYm9sVXNlKSkgewogICAgICAgICAgICAgTFZhbHVlIGxlZnRTeW1ib2wg
PSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHRT
eW1ib2wgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CkBAIC01MTc1LDEwICs1MTY2LDYz
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90
Q2VsbFJlc3VsdCwgbm90U3RyaW5nUmVzdWx0LCBpc1N0cmluZ1Jlc3VsdCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kcyIpOworCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpKSB7CisgICAgICAgICAgICBjb21waWxl
U3RyaW5nVG9VbnR5cGVkU3RyaWN0RXF1YWxpdHkobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAg
ICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNoaWxkMigp
LCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2Up
KTsKKyAgICAgICAgbm9uU3BlY3VsYXRpdmVDb21wYXJlKAorICAgICAgICAgICAgWyZdIChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVx
dWFsKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXEpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZVN0cmluZ1Rv
VW50eXBlZFN0cmljdEVxdWFsaXR5KEVkZ2Ugc3RyaW5nRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChzdHJpbmdFZGdlLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2Up
OworICAgICAgICBBU1NFUlQodW50eXBlZEVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwor
CisgICAgICAgIExWYWx1ZSBsZWZ0U3RyaW5nID0gbG93Q2VsbChzdHJpbmdFZGdlKTsKKyAgICAg
ICAgTFZhbHVlIHJpZ2h0VmFsdWUgPSBsb3dKU1ZhbHVlKHVudHlwZWRFZGdlKTsKKyAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcmlnaHRWYWx1ZVR5cGUgPSBwcm92ZW5UeXBlKHVudHlwZWRFZGdlKTsK
KworICAgICAgICAvLyBWZXJpZnkgbGVmdCBpcyBzdHJpbmcuCisgICAgICAgIHNwZWN1bGF0ZVN0
cmluZyhzdHJpbmdFZGdlLCBsZWZ0U3RyaW5nKTsKKworICAgICAgICBMQmFzaWNCbG9jayB0ZXN0
VW50eXBlZEVkZ2VJc0NlbGwgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayB0ZXN0VW50eXBlZEVkZ2VJc1N0cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIHRlc3RTdHJpbmdFcXVhbGl0eSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAg
Ly8gR2l2ZW4gbGVmdCBpcyBzdHJpbmcuIElmIHRoZSB2YWx1ZSBhcmUgc3RyaWN0bHkgZXF1YWws
IHJpZ2h0VmFsdWUgaGFzIHRvIGJlIHRoZSBzYW1lIHN0cmluZy4KKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZmFzdFRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobGVmdFN0cmluZywgcmlnaHRWYWx1ZSksIHVuc3Vy
ZShjb250aW51YXRpb24pLCB1bnN1cmUodGVzdFVudHlwZWRFZGdlSXNDZWxsKSk7CisKKyAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh0ZXN0VW50eXBlZEVkZ2VJ
c0NlbGwsIHRlc3RVbnR5cGVkRWRnZUlzU3RyaW5nKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZmFzdEZhbHNlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1f
b3V0LmJyYW5jaChpc05vdENlbGwocmlnaHRWYWx1ZSwgcmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKHRlc3RVbnR5cGVkRWRnZUlzU3RyaW5nKSk7CisKKyAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlIHVudHlwZWQgZWRnZSBpcyBhIHN0cmluZy4KKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8odGVzdFVudHlwZWRFZGdlSXNTdHJpbmcsIHRlc3RTdHJpbmdFcXVhbGl0eSk7
CisgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdFN0cmluZyhyaWdodFZhbHVlLCByaWdodFZhbHVl
VHlwZSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUodGVzdFN0cmluZ0VxdWFsaXR5KSk7
CisKKyAgICAgICAgLy8gRnVsbCBTdHJpbmcgY29tcGFyZS4KKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8odGVzdFN0cmluZ0VxdWFsaXR5LCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0U3RyaW5nLCBy
aWdodFZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICAvLyBDb250aW51YXRpb24uCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFRydWUs
IGZhc3RGYWxzZSwgc2xvd1Jlc3VsdCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUNvbXBh
cmVFcVB0cigpCiAgICAgewogICAgICAgICBzZXRCb29sZWFuKApAQCAtODE0MiwxMCArODE4Niwx
MCBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihsZWZ0KSwgcmFy
ZWx5KHNsb3dQYXRoKSwgdXN1YWxseShsZWZ0SXNJbnQpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNo
KGlzTm90SW50MzIobGVmdCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHJhcmVseShz
bG93UGF0aCksIHVzdWFsbHkobGVmdElzSW50KSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGxlZnRJc0ludCwgZmFzdFBhdGgpOwotICAg
ICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihyaWdodCksIHJhcmVseShzbG93UGF0aCksIHVz
dWFsbHkoZmFzdFBhdGgpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIocmlnaHQs
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDIoKSkpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5
KGZhc3RQYXRoKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwg
c2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKGludEZ1bmN0b3IodW5ib3hJbnQzMihsZWZ0KSwgdW5ib3hJbnQzMihyaWdodCkpKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjc5
MmU2MTUxNzZmY2M5NjhiNWEzNDIzYjhhM2I1MzAzYjRhZGYwNy4uYjY1YTg5NTA2MDBmYTQ5ZTU4
ZGQ3YmY5Zjk4ZjY1MmVkODk5ODJlMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wOC0yNiAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0pTQ10gSW1wbGVt
ZW50IENvbXBhcmVTdHJpY3RFcShTdHJpbmcsIFVudHlwZWQpIGluIEZUTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMjI5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvY29tcGFyZS1zdHJp
Y3QtZXEtb24tdmFyaW91cy10eXBlcy5qczogQWRkZWQuCisKIDIwMTYtMDgtMjUgIENhaW8gTGlt
YSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIE5ld1JlZ2V4cCBzaG91bGQgbm90
IHByZXZlbnQgaW5saW5pbmcKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3Ry
aWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmlj
dC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiYTEzNmIyYWRiNDJiYmI1OGRl
MmZlOTJiM2MyYWM4M2I1MDliZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9j
b21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCkBAIC0wLDAgKzEsMjQwIEBACisi
dXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIG9wYXF1ZUtpdFN0cmluZygpIHsKKyAgICByZXR1cm4g
IktpdCI7Cit9Citub0lubGluZShvcGFxdWVLaXRTdHJpbmcpOworCitsZXQgc29tZU9iamVjdCA9
IG5ldyBPYmplY3Q7CitsZXQgdmFsaWRJbnB1dFRlc3RDYXNlcyA9IFsKKyAgICAidW5kZWZpbmVk
IiwKKyAgICAiU3ltYm9sKFwiV2ViS2l0XCIpIiwKKyAgICAibnVsbCIsCisgICAgInRydWUiLAor
ICAgICJmYWxzZSIsCisgICAgIjAiLAorICAgICJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuIE1h
dGguRTsgfSB9IiwKKyAgICAiLTAiLAorICAgICI0MiIsCisgICAgIi00MiIsCisgICAgIk1hdGgu
UEkiLAorICAgICJOYU4iLAorICAgICJcIldlYktpdFwiIiwKKyAgICAiXCJXZWJcIiArIG9wYXF1
ZUtpdFN0cmluZygpIiwKKyAgICAibmV3IFN0cmluZyhcIldlYktpdFwiKSIsCisgICAgInNvbWVP
YmplY3QiLAorICAgICJ2YWxpZElucHV0VGVzdENhc2VzIiwKK107CisKK2xldCBsZWZ0Q2FzZXMg
PSB2YWxpZElucHV0VGVzdENhc2VzLm1hcCgoZWxlbWVudCkgPT4geyByZXR1cm4gZXZhbCgiKCIg
KyBlbGVtZW50ICsgIikiKTsgfSk7CitsZXQgcmlnaHRDYXNlcyA9IHZhbGlkSW5wdXRUZXN0Q2Fz
ZXMubWFwKChlbGVtZW50KSA9PiB7IHJldHVybiBldmFsKCIoIiArIGVsZW1lbnQgKyAiKSIpOyB9
KTsKKworLy8gQmFzZWxpbmUgcmVzdWx0cy4KK2xldCBleHBlY3RlZEVxdWFsUmVzdWx0cyA9IFtd
OworbGV0IGV4cGVjdGVkTm90RXF1YWxSZXN1bHRzID0gW107Citmb3IgKGxldCB0ZXN0Q2FzZUlu
cHV0TGVmdCBvZiBsZWZ0Q2FzZXMpIHsKKyAgICBsZXQgZXF1YWxSZXN1bHRSb3cgPSBbXTsKKyAg
ICBsZXQgbm90RXF1YWxSZXN1bHRSb3cgPSBbXTsKKyAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0
UmlnaHQgb2YgcmlnaHRDYXNlcykgeworICAgICAgICBlcXVhbFJlc3VsdFJvdy5wdXNoKHRlc3RD
YXNlSW5wdXRMZWZ0ID09PSB0ZXN0Q2FzZUlucHV0UmlnaHQpOworICAgICAgICBub3RFcXVhbFJl
c3VsdFJvdy5wdXNoKHRlc3RDYXNlSW5wdXRMZWZ0ICE9PSB0ZXN0Q2FzZUlucHV0UmlnaHQpOwor
ICAgIH0KKyAgICBleHBlY3RlZEVxdWFsUmVzdWx0cy5wdXNoKGVxdWFsUmVzdWx0Um93KTsKKyAg
ICBleHBlY3RlZE5vdEVxdWFsUmVzdWx0cy5wdXNoKG5vdEVxdWFsUmVzdWx0Um93KTsKK30KKwor
ZnVuY3Rpb24gaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoZXhwZWN0
ZWQgPT09IGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWV4cGVjdGVkICYmIDEgLyBleHBl
Y3RlZCA9PT0gLUluZmluaXR5ICYmIDEgLyByZXN1bHQgIT09IC1JbmZpbml0eSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIHJlc3VsdCAhPT0gcmVzdWx0OworfQorCisKKy8vIFZlcnkgcG9seW1vcnBoaWMgY29tcGFy
ZS4KK2Z1bmN0aW9uIG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXMobGVmdCwgcmlnaHQpIHsKKyAg
ICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7Cit9Citub0lubGluZShvcGFxdWVTdHJpY3RFcXVhbEFs
bFR5cGVzKTsKK25vT1NSRXhpdEZ1enppbmcob3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcyk7CisK
K2Z1bmN0aW9uIG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXMobGVmdCwgcmlnaHQpIHsKKyAg
ICByZXR1cm4gbGVmdCAhPT0gcmlnaHQ7Cit9Citub0lubGluZShvcGFxdWVTdHJpY3ROb3RFcXVh
bEFsbFR5cGVzKTsKK25vT1NSRXhpdEZ1enppbmcob3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBl
cyk7CisKK2Z1bmN0aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTM7ICsraSkgeworICAgICAgICBmb3IgKGxldCBsZWZ0Q2FzZUluZGV4ID0gMDsgbGVm
dENhc2VJbmRleCA8IGxlZnRDYXNlcy5sZW5ndGg7ICsrbGVmdENhc2VJbmRleCkgeworICAgICAg
ICAgICAgZm9yIChsZXQgcmlnaHRDYXNlSW5kZXggPSAwOyByaWdodENhc2VJbmRleCA8IHJpZ2h0
Q2FzZXMubGVuZ3RoOyArK3JpZ2h0Q2FzZUluZGV4KSB7CisgICAgICAgICAgICAgICAgbGV0IHN0
cmljdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVm
dENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWlzSWRlbnRpY2FsKHN0cmljdEVxdWFsT3V0cHV0LCBleHBlY3RlZEVxdWFsUmVzdWx0
c1tsZWZ0Q2FzZUluZGV4XVtyaWdodENhc2VJbmRleF0pKSB7CisgICAgICAgICAgICAgICAgICAg
IHRocm93ICJGYWlsZWQgdGVzdEFsbFR5cGVzQ2FsbCBmb3IgZXF1YWxpdHkuIExlZnQgPSAiICsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSArCisgICAg
ICAgICAgICAgICAgICAgICAgICAiLCBSaWdodCA9ICIgKworICAgICAgICAgICAgICAgICAgICAg
ICAgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF0gKworICAgICAgICAgICAgICAgICAgICAgICAg
IiwgUmVzdWx0ID0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1
dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsZXQgc3RyaWN0Tm90RXF1
YWxPdXRwdXQgPSBvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzKGxlZnRDYXNlc1tsZWZ0Q2Fz
ZUluZGV4XSwgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF0pOworICAgICAgICAgICAgICAgIGlm
ICghaXNJZGVudGljYWwoc3RyaWN0Tm90RXF1YWxPdXRwdXQsIGV4cGVjdGVkTm90RXF1YWxSZXN1
bHRzW2xlZnRDYXNlSW5kZXhdW3JpZ2h0Q2FzZUluZGV4XSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgIkZhaWxlZCB0ZXN0QWxsVHlwZXNDYWxsIGZvciAhZXF1YWxpdHkuIExlZnQgPSAi
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSArCisg
ICAgICAgICAgICAgICAgICAgICAgICAiLCBSaWdodCA9ICIgKworICAgICAgICAgICAgICAgICAg
ICAgICAgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF0gKworICAgICAgICAgICAgICAgICAgICAg
ICAgIiwgUmVzdWx0ID0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91
dHB1dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcykg
PiAyKQorICAgICAgICB0aHJvdyAib3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcygpIHNob3VsZCBo
YXZlIGJlZW4gcXVpY2tseSBjb21waWxlZCBhcyBmdWxseSBwb2x5bW9ycGhpYy4iOworICAgIGlm
IChvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzKG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXMp
ID4gMikKKyAgICAgICAgdGhyb3cgIm9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXMoKSBzaG91bGQg
aGF2ZSBiZWVuIHF1aWNrbHkgY29tcGlsZWQgYXMgZnVsbHkgcG9seW1vcnBoaWMuIjsKK30KK3Rl
c3RBbGxUeXBlc0NhbGwoKTsKKworCisvLyBDb21wYXJpbmcgU3RyaW5nIHRvIGV2ZXJ5IHR5cGUu
CitmdW5jdGlvbiBvcGFxdWVTdHJpY3RFcXVhbFN0cmluZ1RvQWxsVHlwZXMobGVmdCwgcmlnaHQp
IHsKKyAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7Cit9Citub0lubGluZShvcGFxdWVTdHJpY3RF
cXVhbFN0cmluZ1RvQWxsVHlwZXMpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVTdHJpY3RFcXVh
bFN0cmluZ1RvQWxsVHlwZXMpOworCitmdW5jdGlvbiBvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVz
VG9TdHJpbmcobGVmdCwgcmlnaHQpIHsKKyAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7Cit9Citu
b0lubGluZShvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcpOworbm9PU1JFeGl0RnV6
emluZyhvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcpOworCitmdW5jdGlvbiBvcGFx
dWVTdHJpY3ROb3RFcXVhbFN0cmluZ1RvQWxsVHlwZXMobGVmdCwgcmlnaHQpIHsKKyAgICByZXR1
cm4gbGVmdCAhPT0gcmlnaHQ7Cit9Citub0lubGluZShvcGFxdWVTdHJpY3ROb3RFcXVhbFN0cmlu
Z1RvQWxsVHlwZXMpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVTdHJpY3ROb3RFcXVhbFN0cmlu
Z1RvQWxsVHlwZXMpOworCitmdW5jdGlvbiBvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9T
dHJpbmcobGVmdCwgcmlnaHQpIHsKKyAgICByZXR1cm4gbGVmdCAhPT0gcmlnaHQ7Cit9Citub0lu
bGluZShvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcpOworbm9PU1JFeGl0RnV6
emluZyhvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcpOworCitmdW5jdGlvbiB0
ZXN0U3RyaW5nVG9BbGxDb21wYXJlKCkgeworICAgIGNvbnN0IGxlZnRTdHJpbmdJbmRleCA9IGxl
ZnRDYXNlcy5pbmRleE9mKCJXZWJLaXQiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMzsg
KytpKSB7CisgICAgICAgIGZvciAobGV0IHJpZ2h0Q2FzZUluZGV4ID0gMDsgcmlnaHRDYXNlSW5k
ZXggPCByaWdodENhc2VzLmxlbmd0aDsgKytyaWdodENhc2VJbmRleCkgeworICAgICAgICAgICAg
bGV0IHJpZ2h0Q2FzZSA9IHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdOworICAgICAgICAgICAg
bGV0IHN0cmljdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0RXF1YWxTdHJpbmdUb0FsbFR5cGVz
KCJXZWIiICsgb3BhcXVlS2l0U3RyaW5nKCksIHJpZ2h0Q2FzZSk7CisgICAgICAgICAgICBpZiAo
IWlzSWRlbnRpY2FsKHN0cmljdEVxdWFsT3V0cHV0LCBleHBlY3RlZEVxdWFsUmVzdWx0c1tsZWZ0
U3RyaW5nSW5kZXhdW3JpZ2h0Q2FzZUluZGV4XSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAi
RmFpbGVkIG9wYXF1ZVN0cmljdEVxdWFsU3RyaW5nVG9BbGxUeXBlcygpIHdpdGggcmlnaHQgPSAi
ICsgcmlnaHRDYXNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVx
dWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxTdHJpbmdUb0FsbFR5cGVzKCJXZWIiICsg
b3BhcXVlS2l0U3RyaW5nKCksIHJpZ2h0Q2FzZSk7CisgICAgICAgICAgICBpZiAoIWlzSWRlbnRp
Y2FsKHN0cmljdE5vdEVxdWFsT3V0cHV0LCBleHBlY3RlZE5vdEVxdWFsUmVzdWx0c1tsZWZ0U3Ry
aW5nSW5kZXhdW3JpZ2h0Q2FzZUluZGV4XSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFp
bGVkIG9wYXF1ZVN0cmljdE5vdEVxdWFsU3RyaW5nVG9BbGxUeXBlcygpIHdpdGggcmlnaHQgPSAi
ICsgcmlnaHRDYXNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgY29u
c3QgcmlnaHRTdHJpbmdJbmRleCA9IGxlZnRDYXNlcy5sYXN0SW5kZXhPZigiV2ViS2l0Iik7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBmb3IgKGxldCBsZWZ0
Q2FzZUluZGV4ID0gMDsgbGVmdENhc2VJbmRleCA8IGxlZnRDYXNlcy5sZW5ndGg7ICsrbGVmdENh
c2VJbmRleCkgeworICAgICAgICAgICAgbGV0IGxlZnRDYXNlID0gbGVmdENhc2VzW2xlZnRDYXNl
SW5kZXhdOworICAgICAgICAgICAgbGV0IHN0cmljdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0
RXF1YWxBbGxUeXBlc1RvU3RyaW5nKGxlZnRDYXNlLCAiV2ViIiArIG9wYXF1ZUtpdFN0cmluZygp
KTsKKyAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwoc3RyaWN0RXF1YWxPdXRwdXQsIGV4cGVj
dGVkRXF1YWxSZXN1bHRzW2xlZnRDYXNlSW5kZXhdW3JpZ2h0U3RyaW5nSW5kZXhdKSkgeworICAg
ICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlc1RvU3Ry
aW5nKCkgd2l0aCBsZWZ0ID0gIiArIGxlZnRDYXNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbGV0IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBl
c1RvU3RyaW5nKGxlZnRDYXNlLCAiV2ViIiArIG9wYXF1ZUtpdFN0cmluZygpKTsKKyAgICAgICAg
ICAgIGlmICghaXNJZGVudGljYWwoc3RyaWN0Tm90RXF1YWxPdXRwdXQsIGV4cGVjdGVkTm90RXF1
YWxSZXN1bHRzW2xlZnRDYXNlSW5kZXhdW3JpZ2h0U3RyaW5nSW5kZXhdKSkgeworICAgICAgICAg
ICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlc1RvU3RyaW5n
KCkgd2l0aCBsZWZ0ID0gIiArIGxlZnRDYXNlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlU3RyaWN0RXF1YWxTdHJp
bmdUb0FsbFR5cGVzKSA+IDIpCisgICAgICAgIHRocm93ICJvcGFxdWVTdHJpY3RFcXVhbFN0cmlu
Z1RvQWxsVHlwZXMoKSBzaG91bGQgcXVpY2tseSBjb252ZXJnZSBpdHMgdHlwZXMuIjsKKyAgICBp
ZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcp
ID4gMikKKyAgICAgICAgdGhyb3cgIm9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXNUb1N0cmluZygp
IHNob3VsZCBxdWlja2x5IGNvbnZlcmdlIGl0cyB0eXBlcy4iOworICAgIGlmIChudW1iZXJPZkRG
R0NvbXBpbGVzKG9wYXF1ZVN0cmljdE5vdEVxdWFsU3RyaW5nVG9BbGxUeXBlcykgPiAyKQorICAg
ICAgICB0aHJvdyAib3BhcXVlU3RyaWN0Tm90RXF1YWxTdHJpbmdUb0FsbFR5cGVzKCkgc2hvdWxk
IHF1aWNrbHkgY29udmVyZ2UgaXRzIHR5cGVzLiI7CisgICAgaWYgKG51bWJlck9mREZHQ29tcGls
ZXMob3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlc1RvU3RyaW5nKSA+IDIpCisgICAgICAgIHRo
cm93ICJvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcoKSBzaG91bGQgcXVpY2ts
eSBjb252ZXJnZSBpdHMgdHlwZXMuIjsKK30KK3Rlc3RTdHJpbmdUb0FsbENvbXBhcmUoKTsKKwor
CisvLyBDb21wYXJlIG9uZSB0eXBlIHRvIGFsbCB0aGUgb3RoZXJzLgorZnVuY3Rpb24gY29tcGFy
ZU9uZVR5cGVUb0FsbCgpIHsKKyAgICBmb3IgKGxldCBsZWZ0Q2FzZUluZGV4ID0gMDsgbGVmdENh
c2VJbmRleCA8IHZhbGlkSW5wdXRUZXN0Q2FzZXMubGVuZ3RoOyArK2xlZnRDYXNlSW5kZXgpIHsK
KyAgICAgICAgbGV0IGxlZnRDYXNlID0gdmFsaWRJbnB1dFRlc3RDYXNlc1tsZWZ0Q2FzZUluZGV4
XTsKKyAgICAgICAgZXZhbChgCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVTdHJpY3RFcXVh
bE9uZVR5cGVUb0FsbChsZWZ0LCByaWdodCkgeworICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0
ID09PSByaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vSW5saW5lKG9wYXF1ZVN0
cmljdEVxdWFsT25lVHlwZVRvQWxsKTsKKyAgICAgICAgICAgIG5vT1NSRXhpdEZ1enppbmcob3Bh
cXVlU3RyaWN0RXF1YWxPbmVUeXBlVG9BbGwpOworCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFx
dWVTdHJpY3ROb3RFcXVhbE9uZVR5cGVUb0FsbChsZWZ0LCByaWdodCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBsZWZ0ICE9PSByaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5v
SW5saW5lKG9wYXF1ZVN0cmljdE5vdEVxdWFsT25lVHlwZVRvQWxsKTsKKyAgICAgICAgICAgIG5v
T1NSRXhpdEZ1enppbmcob3BhcXVlU3RyaWN0Tm90RXF1YWxPbmVUeXBlVG9BbGwpOworCisgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgICAgICAgICAg
Zm9yIChsZXQgcmlnaHRDYXNlSW5kZXggPSAwOyByaWdodENhc2VJbmRleCA8IHJpZ2h0Q2FzZXMu
bGVuZ3RoOyArK3JpZ2h0Q2FzZUluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBzdHJp
Y3RFcXVhbE91dHB1dCA9IG9wYXF1ZVN0cmljdEVxdWFsT25lVHlwZVRvQWxsKCR7bGVmdENhc2V9
LCByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
aXNJZGVudGljYWwoc3RyaWN0RXF1YWxPdXRwdXQsIGV4cGVjdGVkRXF1YWxSZXN1bHRzWyR7bGVm
dENhc2VJbmRleH1dW3JpZ2h0Q2FzZUluZGV4XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93ICJGYWlsZWQgb3BhcXVlU3RyaWN0RXF1YWxPbmVUeXBlVG9BbGwoKSB3aXRoIGxlZnQg
Y2FzZSA9ICIgKyAke2xlZnRDYXNlfSArICIsIHJpZ2h0IGNhc2UgPSAiICsgcmlnaHRDYXNlc1ty
aWdodENhc2VJbmRleF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxPbmVUeXBl
VG9BbGwoJHtsZWZ0Q2FzZX0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChzdHJpY3ROb3RFcXVhbE91dHB1dCwgZXhwZWN0
ZWROb3RFcXVhbFJlc3VsdHNbJHtsZWZ0Q2FzZUluZGV4fV1bcmlnaHRDYXNlSW5kZXhdKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVTdHJpY3ROb3RFcXVh
bE9uZVR5cGVUb0FsbCgpIHdpdGggbGVmdCBjYXNlID0gIiArICR7bGVmdENhc2V9ICsgIiwgcmln
aHQgY2FzZSA9ICIgKyByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBg
KTsKKyAgICB9Cit9Citjb21wYXJlT25lVHlwZVRvQWxsKCk7CisKK2Z1bmN0aW9uIGNvbXBhcmVB
bGxUeXBlc1RvT25lKCkgeworICAgIGZvciAobGV0IHJpZ2h0Q2FzZUluZGV4ID0gMDsgcmlnaHRD
YXNlSW5kZXggPCB2YWxpZElucHV0VGVzdENhc2VzLmxlbmd0aDsgKytyaWdodENhc2VJbmRleCkg
eworICAgICAgICBsZXQgcmlnaHRDYXNlID0gdmFsaWRJbnB1dFRlc3RDYXNlc1tyaWdodENhc2VJ
bmRleF07CisgICAgICAgIGV2YWwoYAorICAgICAgICAgICAgZnVuY3Rpb24gb3BhcXVlU3RyaWN0
RXF1YWxBbGxUb09uZShsZWZ0LCByaWdodCkgeworICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0
ID09PSByaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vSW5saW5lKG9wYXF1ZVN0
cmljdEVxdWFsQWxsVG9PbmUpOworICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhvcGFxdWVT
dHJpY3RFcXVhbEFsbFRvT25lKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gb3BhcXVlU3RyaWN0
Tm90RXF1YWxBbGxUb09uZShsZWZ0LCByaWdodCkgeworICAgICAgICAgICAgICAgIHJldHVybiBs
ZWZ0ICE9PSByaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vSW5saW5lKG9wYXF1
ZVN0cmljdE5vdEVxdWFsQWxsVG9PbmUpOworICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhv
cGFxdWVTdHJpY3ROb3RFcXVhbEFsbFRvT25lKTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IGxlZnRDYXNlSW5k
ZXggPSAwOyBsZWZ0Q2FzZUluZGV4IDwgbGVmdENhc2VzLmxlbmd0aDsgKytsZWZ0Q2FzZUluZGV4
KSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBzdHJpY3RFcXVhbE91dHB1dCA9IG9wYXF1ZVN0
cmljdEVxdWFsQWxsVG9PbmUobGVmdENhc2VzW2xlZnRDYXNlSW5kZXhdLCAke3JpZ2h0Q2FzZX0p
OworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKHN0cmljdEVxdWFsT3V0cHV0
LCBleHBlY3RlZEVxdWFsUmVzdWx0c1tsZWZ0Q2FzZUluZGV4XVske3JpZ2h0Q2FzZUluZGV4fV0p
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZVN0cmljdEVx
dWFsQWxsVG9PbmUoKSB3aXRoIGxlZnQgY2FzZSA9ICIgKyBsZWZ0Q2FzZXNbbGVmdENhc2VJbmRl
eF0gKyAiLCByaWdodCBjYXNlID0gIiArICR7cmlnaHRDYXNlfTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBsZXQgc3RyaWN0Tm90RXF1YWxPdXRwdXQgPSBvcGFx
dWVTdHJpY3ROb3RFcXVhbEFsbFRvT25lKGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSwgJHtyaWdo
dENhc2V9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChzdHJpY3ROb3RF
cXVhbE91dHB1dCwgZXhwZWN0ZWROb3RFcXVhbFJlc3VsdHNbbGVmdENhc2VJbmRleF1bJHtyaWdo
dENhc2VJbmRleH1dKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCBv
cGFxdWVTdHJpY3ROb3RFcXVhbEFsbFRvT25lKCkgd2l0aCBsZWZ0IGNhc2UgPSAiICsgbGVmdENh
c2VzW2xlZnRDYXNlSW5kZXhdICsgIiwgcmlnaHQgY2FzZSA9ICIgKyAke3JpZ2h0Q2FzZX07Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgYCk7CisgICAgfQorfQorY29tcGFyZUFsbFR5cGVzVG9PbmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287155</attachid>
            <date>2016-08-26 15:04:36 -0700</date>
            <delta_ts>2016-08-26 17:38:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161229-20160826150233.patch</filename>
            <type>text/plain</type>
            <size>19256</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTQ5ZjZjYTFhMDU5MzFmYWVlYTNiZmI1Y2IyZjc5ZmRkMWI2ZDlkLi41OWRmNTBlMDFmNTNiY2M0
ZTZhNDhjOTk2ZGE5OTE3MjVkNmEyNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wOC0yNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IENvbXBhcmVTdHJpY3RFcShTdHJpbmcs
IFVudHlwZWQpIGluIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgQWRkIChTdHJpbmcsIFVudHlwZWQpIHVzZXMgdG8gRlRMIENvbXBhcmVTdHJpY3RF
cS4KKyAgICAgICAgVGhpcyB3YXMgdGhlIGxhc3QgdXNlIHR5cGUgbm90IGltcGxlbWVudGVkLCB0
aGUgbm9kZSBpcyBmdWxseQorICAgICAgICBzdXBwb3J0ZWQgYnkgRlRMIGFmdGVyIHRoaXMgcGF0
Y2guCisKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RF
cSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdU
b1VudHlwZWRTdHJpY3RFcXVhbGl0eSk6CisKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bm9uU3BlY3VsYXRpdmVDb21wYXJlKToKKyAgICAgICAgUmVtb3ZlIHRoZSB0eXBl
IGNoZWNrcyB3aGVuIHBvc3NpYmxlLgorCiAyMDE2LTA4LTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdh
eSB0byBjbGVhciBhbiBJbmRleGVkREIgb2JqZWN0IHN0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMTFiMjQwMzNjZTkzYjNlMzNlYjhk
ZTBkZmYzMzMxYTZiYjJjYzIxYi4uMjE2N2FmMTVkZDFkNmJlODM1ZjkyZGQ0ZmRiNWY3Y2Q4M2Fi
ZTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMjQ2LDYgKzI0Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICBjYXNlIFB1dER5bmFtaWNW
YXI6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CisgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAg
ICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTM4OCw0MiArMzg5
LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT3RoZXJVc2UgfHwgbm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IE90aGVyVXNlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IHJldHVybiBDYW5ub3RDb21waWxlOwotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgotICAgICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJl
cFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChTdHJpbmdJZGVudFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlw
ZWRVc2UsIE9iamVjdFVzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVz
ZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTeW1ib2xVc2UsIFVudHlwZWRVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3ltYm9sVXNlKSkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVu
dHlwZWRVc2UpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFy
VXNlKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgIGNhc2UgQ29tcGFyZUxlc3M6CiAg
ICAgY2FzZSBDb21wYXJlTGVzc0VxOgogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODQ1MDBjZGZj
MjQwMWExZmU4NjhkYmQ4NTZjMDIxM2RhNWE0MDUzMi4uNDNhZDAxMzAyMTkwYThlZmIxZDg0Nzgw
NDI4NGY0NTJhOGNjMWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtNTEwMiwxNSArNTEwMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoVW50eXBlZFVzZSkpIHsKLSAgICAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKLSAg
ICAgICAgICAgICAgICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoU3ltYm9sVXNlKSkgewogICAgICAgICAgICAgTFZhbHVlIGxlZnRTeW1ib2wgPSBs
b3dTeW1ib2wobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHRTeW1i
b2wgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CkBAIC01MTc1LDEwICs1MTY2LDYzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2Vs
bFJlc3VsdCwgbm90U3RyaW5nUmVzdWx0LCBpc1N0cmluZ1Jlc3VsdCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHVzZSBraW5kcyIpOworCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpKSB7CisgICAgICAgICAgICBjb21waWxlU3Ry
aW5nVG9VbnR5cGVkU3RyaWN0RXF1YWxpdHkobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAg
IGNvbXBpbGVTdHJpbmdUb1VudHlwZWRTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNoaWxkMigpLCBt
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSk7CisgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKKyAgICAgICAgICAg
IFsmXSAoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBtX291dC5lcXVhbChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNvbXBp
bGVTdHJpbmdUb1VudHlwZWRTdHJpY3RFcXVhbGl0eShFZGdlIHN0cmluZ0VkZ2UsIEVkZ2UgdW50
eXBlZEVkZ2UpCisgICAgeworICAgICAgICBBU1NFUlQoc3RyaW5nRWRnZS51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlKTsKKyAgICAgICAgQVNTRVJUKHVudHlwZWRFZGdlLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKTsKKworICAgICAgICBMVmFsdWUgbGVmdFN0cmluZyA9IGxvd0NlbGwoc3RyaW5nRWRn
ZSk7CisgICAgICAgIExWYWx1ZSByaWdodFZhbHVlID0gbG93SlNWYWx1ZSh1bnR5cGVkRWRnZSk7
CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0VmFsdWVUeXBlID0gcHJvdmVuVHlwZSh1bnR5
cGVkRWRnZSk7CisKKyAgICAgICAgLy8gVmVyaWZ5IGxlZnQgaXMgc3RyaW5nLgorICAgICAgICBz
cGVjdWxhdGVTdHJpbmcoc3RyaW5nRWRnZSwgbGVmdFN0cmluZyk7CisKKyAgICAgICAgTEJhc2lj
QmxvY2sgdGVzdFVudHlwZWRFZGdlSXNDZWxsID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgdGVzdFVudHlwZWRFZGdlSXNTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayB0ZXN0U3RyaW5nRXF1YWxpdHkgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgIC8vIEdpdmVuIGxlZnQgaXMgc3RyaW5nLiBJZiB0aGUgdmFsdWUgYXJlIHN0cmlj
dGx5IGVxdWFsLCByaWdodFZhbHVlIGhhcyB0byBiZSB0aGUgc2FtZSBzdHJpbmcuCisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RUcnVlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVl
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGxlZnRTdHJpbmcsIHJpZ2h0VmFs
dWUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHRlc3RVbnR5cGVkRWRnZUlzQ2VsbCkp
OworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8odGVzdFVu
dHlwZWRFZGdlSXNDZWxsLCB0ZXN0VW50eXBlZEVkZ2VJc1N0cmluZyk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGZhc3RGYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwor
ICAgICAgICBtX291dC5icmFuY2goaXNOb3RDZWxsKHJpZ2h0VmFsdWUsIHJpZ2h0VmFsdWVUeXBl
KSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZSh0ZXN0VW50eXBlZEVkZ2VJc1N0cmluZykp
OworCisgICAgICAgIC8vIENoZWNrIGlmIHRoZSB1bnR5cGVkIGVkZ2UgaXMgYSBzdHJpbmcuCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHRlc3RVbnR5cGVkRWRnZUlzU3RyaW5nLCB0ZXN0U3RyaW5n
RXF1YWxpdHkpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RTdHJpbmcocmlnaHRWYWx1ZSwg
cmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHRlc3RTdHJpbmdF
cXVhbGl0eSkpOworCisgICAgICAgIC8vIEZ1bGwgU3RyaW5nIGNvbXBhcmUuCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHRlc3RTdHJpbmdFcXVhbGl0eSwgY29udGludWF0aW9uKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzdHJpbmdzRXF1YWwobGVm
dFN0cmluZywgcmlnaHRWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgLy8gQ29udGludWF0aW9uLgorICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIs
IGZhc3RUcnVlLCBmYXN0RmFsc2UsIHNsb3dSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVDb21wYXJlRXFQdHIoKQogICAgIHsKICAgICAgICAgc2V0Qm9vbGVhbigKQEAgLTgxNDIs
MTAgKzgxODYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIo
bGVmdCksIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkobGVmdElzSW50KSk7CisgICAgICAgIG1f
b3V0LmJyYW5jaChpc05vdEludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkp
LCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGxlZnRJc0ludCkpOwogICAgICAgICAKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhsZWZ0SXNJbnQsIGZhc3RQ
YXRoKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIocmlnaHQpLCByYXJlbHkoc2xv
d1BhdGgpLCB1c3VhbGx5KGZhc3RQYXRoKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdElu
dDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgcmFyZWx5KHNsb3dQYXRo
KSwgdXN1YWxseShmYXN0UGF0aCkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
ZmFzdFBhdGgsIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihpbnRGdW5jdG9yKHVuYm94SW50MzIobGVmdCksIHVuYm94SW50MzIocmln
aHQpKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGY0YmI0MDNiMWE3OTJiNzNlZGE4YzdhMWE0Yzg0NWM1NGQzNjk4ZDcuLjA5ZTk4OTU1
NGFkYjczYjg5NjI2MTMwMjYxYThjYzc4NzdmYzI5ZWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDgt
MjYgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBDb21wYXJlU3RyaWN0RXEoU3RyaW5nLCBVbnR5cGVkKSBpbiBGVEwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTIyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogc3RyZXNzL2Nv
bXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanM6IEFkZGVkLgorCiAyMDE2LTA4LTI2
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZd
IG5ld1Byb21pc2VDYXBhYmlsaXRpZXMgc2hvdWxkIGNoZWNrIHRoZSBnaXZlbiBhcmd1bWVudCBp
cyBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3Qt
ZXEtb24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVx
LW9uLXZhcmlvdXMtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJhMTM2YjJhZGI0MmJiYjU4ZGUyZmU5
MmIzYzJhYzgzYjUwOWJmOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBh
cmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTAsMCArMSwyNDAgQEAKKyJ1c2Ug
c3RyaWN0IjsKKworZnVuY3Rpb24gb3BhcXVlS2l0U3RyaW5nKCkgeworICAgIHJldHVybiAiS2l0
IjsKK30KK25vSW5saW5lKG9wYXF1ZUtpdFN0cmluZyk7CisKK2xldCBzb21lT2JqZWN0ID0gbmV3
IE9iamVjdDsKK2xldCB2YWxpZElucHV0VGVzdENhc2VzID0gWworICAgICJ1bmRlZmluZWQiLAor
ICAgICJTeW1ib2woXCJXZWJLaXRcIikiLAorICAgICJudWxsIiwKKyAgICAidHJ1ZSIsCisgICAg
ImZhbHNlIiwKKyAgICAiMCIsCisgICAgInsgdmFsdWVPZjogKCkgPT4geyByZXR1cm4gTWF0aC5F
OyB9IH0iLAorICAgICItMCIsCisgICAgIjQyIiwKKyAgICAiLTQyIiwKKyAgICAiTWF0aC5QSSIs
CisgICAgIk5hTiIsCisgICAgIlwiV2ViS2l0XCIiLAorICAgICJcIldlYlwiICsgb3BhcXVlS2l0
U3RyaW5nKCkiLAorICAgICJuZXcgU3RyaW5nKFwiV2ViS2l0XCIpIiwKKyAgICAic29tZU9iamVj
dCIsCisgICAgInZhbGlkSW5wdXRUZXN0Q2FzZXMiLAorXTsKKworbGV0IGxlZnRDYXNlcyA9IHZh
bGlkSW5wdXRUZXN0Q2FzZXMubWFwKChlbGVtZW50KSA9PiB7IHJldHVybiBldmFsKCIoIiArIGVs
ZW1lbnQgKyAiKSIpOyB9KTsKK2xldCByaWdodENhc2VzID0gdmFsaWRJbnB1dFRlc3RDYXNlcy5t
YXAoKGVsZW1lbnQpID0+IHsgcmV0dXJuIGV2YWwoIigiICsgZWxlbWVudCArICIpIik7IH0pOwor
CisvLyBCYXNlbGluZSByZXN1bHRzLgorbGV0IGV4cGVjdGVkRXF1YWxSZXN1bHRzID0gW107Cits
ZXQgZXhwZWN0ZWROb3RFcXVhbFJlc3VsdHMgPSBbXTsKK2ZvciAobGV0IHRlc3RDYXNlSW5wdXRM
ZWZ0IG9mIGxlZnRDYXNlcykgeworICAgIGxldCBlcXVhbFJlc3VsdFJvdyA9IFtdOworICAgIGxl
dCBub3RFcXVhbFJlc3VsdFJvdyA9IFtdOworICAgIGZvciAobGV0IHRlc3RDYXNlSW5wdXRSaWdo
dCBvZiByaWdodENhc2VzKSB7CisgICAgICAgIGVxdWFsUmVzdWx0Um93LnB1c2godGVzdENhc2VJ
bnB1dExlZnQgPT09IHRlc3RDYXNlSW5wdXRSaWdodCk7CisgICAgICAgIG5vdEVxdWFsUmVzdWx0
Um93LnB1c2godGVzdENhc2VJbnB1dExlZnQgIT09IHRlc3RDYXNlSW5wdXRSaWdodCk7CisgICAg
fQorICAgIGV4cGVjdGVkRXF1YWxSZXN1bHRzLnB1c2goZXF1YWxSZXN1bHRSb3cpOworICAgIGV4
cGVjdGVkTm90RXF1YWxSZXN1bHRzLnB1c2gobm90RXF1YWxSZXN1bHRSb3cpOworfQorCitmdW5j
dGlvbiBpc0lkZW50aWNhbChyZXN1bHQsIGV4cGVjdGVkKQoreworICAgIGlmIChleHBlY3RlZCA9
PT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZXhwZWN0ZWQgJiYgMSAvIGV4cGVjdGVk
ID09PSAtSW5maW5pdHkgJiYgMSAvIHJlc3VsdCAhPT0gLUluZmluaXR5KQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0ICE9PSByZXN1bHQ7Cit9CisKKworLy8gVmVyeSBwb2x5bW9ycGhpYyBjb21wYXJlLgor
ZnVuY3Rpb24gb3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcyhsZWZ0LCByaWdodCkgeworICAgIHJl
dHVybiBsZWZ0ID09PSByaWdodDsKK30KK25vSW5saW5lKG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlw
ZXMpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzKTsKKworZnVu
Y3Rpb24gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0LCByaWdodCkgeworICAgIHJl
dHVybiBsZWZ0ICE9PSByaWdodDsKK30KK25vSW5saW5lKG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxs
VHlwZXMpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzKTsK
KworZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDFlMzsgKytpKSB7CisgICAgICAgIGZvciAobGV0IGxlZnRDYXNlSW5kZXggPSAwOyBsZWZ0Q2Fz
ZUluZGV4IDwgbGVmdENhc2VzLmxlbmd0aDsgKytsZWZ0Q2FzZUluZGV4KSB7CisgICAgICAgICAg
ICBmb3IgKGxldCByaWdodENhc2VJbmRleCA9IDA7IHJpZ2h0Q2FzZUluZGV4IDwgcmlnaHRDYXNl
cy5sZW5ndGg7ICsrcmlnaHRDYXNlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBsZXQgc3RyaWN0
RXF1YWxPdXRwdXQgPSBvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzKGxlZnRDYXNlc1tsZWZ0Q2Fz
ZUluZGV4XSwgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF0pOworICAgICAgICAgICAgICAgIGlm
ICghaXNJZGVudGljYWwoc3RyaWN0RXF1YWxPdXRwdXQsIGV4cGVjdGVkRXF1YWxSZXN1bHRzW2xl
ZnRDYXNlSW5kZXhdW3JpZ2h0Q2FzZUluZGV4XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgIkZhaWxlZCB0ZXN0QWxsVHlwZXNDYWxsIGZvciBlcXVhbGl0eS4gTGVmdCA9ICIgKworICAg
ICAgICAgICAgICAgICAgICAgICAgbGVmdENhc2VzW2xlZnRDYXNlSW5kZXhdICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICBy
aWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCisgICAgICAgICAgICAgICAgICAgICAgICAiLCBS
ZXN1bHQgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0Owor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxldCBzdHJpY3ROb3RFcXVhbE91
dHB1dCA9IG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXMobGVmdENhc2VzW2xlZnRDYXNlSW5k
ZXhdLCByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSk7CisgICAgICAgICAgICAgICAgaWYgKCFp
c0lkZW50aWNhbChzdHJpY3ROb3RFcXVhbE91dHB1dCwgZXhwZWN0ZWROb3RFcXVhbFJlc3VsdHNb
bGVmdENhc2VJbmRleF1bcmlnaHRDYXNlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgICAgICB0
aHJvdyAiRmFpbGVkIHRlc3RBbGxUeXBlc0NhbGwgZm9yICFlcXVhbGl0eS4gTGVmdCA9ICIgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENhc2VzW2xlZnRDYXNlSW5kZXhdICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCisgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCisgICAgICAgICAgICAgICAgICAgICAgICAi
LCBSZXN1bHQgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzKSA+IDIp
CisgICAgICAgIHRocm93ICJvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzKCkgc2hvdWxkIGhhdmUg
YmVlbiBxdWlja2x5IGNvbXBpbGVkIGFzIGZ1bGx5IHBvbHltb3JwaGljLiI7CisgICAgaWYgKG9w
YXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXMob3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcykgPiAy
KQorICAgICAgICB0aHJvdyAib3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlcygpIHNob3VsZCBoYXZl
IGJlZW4gcXVpY2tseSBjb21waWxlZCBhcyBmdWxseSBwb2x5bW9ycGhpYy4iOworfQordGVzdEFs
bFR5cGVzQ2FsbCgpOworCisKKy8vIENvbXBhcmluZyBTdHJpbmcgdG8gZXZlcnkgdHlwZS4KK2Z1
bmN0aW9uIG9wYXF1ZVN0cmljdEVxdWFsU3RyaW5nVG9BbGxUeXBlcyhsZWZ0LCByaWdodCkgewor
ICAgIHJldHVybiBsZWZ0ID09PSByaWdodDsKK30KK25vSW5saW5lKG9wYXF1ZVN0cmljdEVxdWFs
U3RyaW5nVG9BbGxUeXBlcyk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVN0cmljdEVxdWFsU3Ry
aW5nVG9BbGxUeXBlcyk7CisKK2Z1bmN0aW9uIG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXNUb1N0
cmluZyhsZWZ0LCByaWdodCkgeworICAgIHJldHVybiBsZWZ0ID09PSByaWdodDsKK30KK25vSW5s
aW5lKG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXNUb1N0cmluZyk7Citub09TUkV4aXRGdXp6aW5n
KG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXNUb1N0cmluZyk7CisKK2Z1bmN0aW9uIG9wYXF1ZVN0
cmljdE5vdEVxdWFsU3RyaW5nVG9BbGxUeXBlcyhsZWZ0LCByaWdodCkgeworICAgIHJldHVybiBs
ZWZ0ICE9PSByaWdodDsKK30KK25vSW5saW5lKG9wYXF1ZVN0cmljdE5vdEVxdWFsU3RyaW5nVG9B
bGxUeXBlcyk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVN0cmljdE5vdEVxdWFsU3RyaW5nVG9B
bGxUeXBlcyk7CisKK2Z1bmN0aW9uIG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXNUb1N0cmlu
ZyhsZWZ0LCByaWdodCkgeworICAgIHJldHVybiBsZWZ0ICE9PSByaWdodDsKK30KK25vSW5saW5l
KG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXNUb1N0cmluZyk7Citub09TUkV4aXRGdXp6aW5n
KG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXNUb1N0cmluZyk7CisKK2Z1bmN0aW9uIHRlc3RT
dHJpbmdUb0FsbENvbXBhcmUoKSB7CisgICAgY29uc3QgbGVmdFN0cmluZ0luZGV4ID0gbGVmdENh
c2VzLmluZGV4T2YoIldlYktpdCIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kp
IHsKKyAgICAgICAgZm9yIChsZXQgcmlnaHRDYXNlSW5kZXggPSAwOyByaWdodENhc2VJbmRleCA8
IHJpZ2h0Q2FzZXMubGVuZ3RoOyArK3JpZ2h0Q2FzZUluZGV4KSB7CisgICAgICAgICAgICBsZXQg
cmlnaHRDYXNlID0gcmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF07CisgICAgICAgICAgICBsZXQg
c3RyaWN0RXF1YWxPdXRwdXQgPSBvcGFxdWVTdHJpY3RFcXVhbFN0cmluZ1RvQWxsVHlwZXMoIldl
YiIgKyBvcGFxdWVLaXRTdHJpbmcoKSwgcmlnaHRDYXNlKTsKKyAgICAgICAgICAgIGlmICghaXNJ
ZGVudGljYWwoc3RyaWN0RXF1YWxPdXRwdXQsIGV4cGVjdGVkRXF1YWxSZXN1bHRzW2xlZnRTdHJp
bmdJbmRleF1bcmlnaHRDYXNlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgIHRocm93ICJGYWls
ZWQgb3BhcXVlU3RyaWN0RXF1YWxTdHJpbmdUb0FsbFR5cGVzKCkgd2l0aCByaWdodCA9ICIgKyBy
aWdodENhc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgc3RyaWN0Tm90RXF1YWxP
dXRwdXQgPSBvcGFxdWVTdHJpY3ROb3RFcXVhbFN0cmluZ1RvQWxsVHlwZXMoIldlYiIgKyBvcGFx
dWVLaXRTdHJpbmcoKSwgcmlnaHRDYXNlKTsKKyAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwo
c3RyaWN0Tm90RXF1YWxPdXRwdXQsIGV4cGVjdGVkTm90RXF1YWxSZXN1bHRzW2xlZnRTdHJpbmdJ
bmRleF1bcmlnaHRDYXNlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
b3BhcXVlU3RyaWN0Tm90RXF1YWxTdHJpbmdUb0FsbFR5cGVzKCkgd2l0aCByaWdodCA9ICIgKyBy
aWdodENhc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBy
aWdodFN0cmluZ0luZGV4ID0gbGVmdENhc2VzLmxhc3RJbmRleE9mKCJXZWJLaXQiKTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGZvciAobGV0IGxlZnRDYXNl
SW5kZXggPSAwOyBsZWZ0Q2FzZUluZGV4IDwgbGVmdENhc2VzLmxlbmd0aDsgKytsZWZ0Q2FzZUlu
ZGV4KSB7CisgICAgICAgICAgICBsZXQgbGVmdENhc2UgPSBsZWZ0Q2FzZXNbbGVmdENhc2VJbmRl
eF07CisgICAgICAgICAgICBsZXQgc3RyaWN0RXF1YWxPdXRwdXQgPSBvcGFxdWVTdHJpY3RFcXVh
bEFsbFR5cGVzVG9TdHJpbmcobGVmdENhc2UsICJXZWIiICsgb3BhcXVlS2l0U3RyaW5nKCkpOwor
ICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChzdHJpY3RFcXVhbE91dHB1dCwgZXhwZWN0ZWRF
cXVhbFJlc3VsdHNbbGVmdENhc2VJbmRleF1bcmlnaHRTdHJpbmdJbmRleF0pKSB7CisgICAgICAg
ICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVTdHJpY3RFcXVhbEFsbFR5cGVzVG9TdHJpbmco
KSB3aXRoIGxlZnQgPSAiICsgbGVmdENhc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBs
ZXQgc3RyaWN0Tm90RXF1YWxPdXRwdXQgPSBvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9T
dHJpbmcobGVmdENhc2UsICJXZWIiICsgb3BhcXVlS2l0U3RyaW5nKCkpOworICAgICAgICAgICAg
aWYgKCFpc0lkZW50aWNhbChzdHJpY3ROb3RFcXVhbE91dHB1dCwgZXhwZWN0ZWROb3RFcXVhbFJl
c3VsdHNbbGVmdENhc2VJbmRleF1bcmlnaHRTdHJpbmdJbmRleF0pKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcoKSB3
aXRoIGxlZnQgPSAiICsgbGVmdENhc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVTdHJpY3RFcXVhbFN0cmluZ1Rv
QWxsVHlwZXMpID4gMikKKyAgICAgICAgdGhyb3cgIm9wYXF1ZVN0cmljdEVxdWFsU3RyaW5nVG9B
bGxUeXBlcygpIHNob3VsZCBxdWlja2x5IGNvbnZlcmdlIGl0cyB0eXBlcy4iOworICAgIGlmIChu
dW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZVN0cmljdEVxdWFsQWxsVHlwZXNUb1N0cmluZykgPiAy
KQorICAgICAgICB0aHJvdyAib3BhcXVlU3RyaWN0RXF1YWxBbGxUeXBlc1RvU3RyaW5nKCkgc2hv
dWxkIHF1aWNrbHkgY29udmVyZ2UgaXRzIHR5cGVzLiI7CisgICAgaWYgKG51bWJlck9mREZHQ29t
cGlsZXMob3BhcXVlU3RyaWN0Tm90RXF1YWxTdHJpbmdUb0FsbFR5cGVzKSA+IDIpCisgICAgICAg
IHRocm93ICJvcGFxdWVTdHJpY3ROb3RFcXVhbFN0cmluZ1RvQWxsVHlwZXMoKSBzaG91bGQgcXVp
Y2tseSBjb252ZXJnZSBpdHMgdHlwZXMuIjsKKyAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhv
cGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzVG9TdHJpbmcpID4gMikKKyAgICAgICAgdGhyb3cg
Im9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXNUb1N0cmluZygpIHNob3VsZCBxdWlja2x5IGNv
bnZlcmdlIGl0cyB0eXBlcy4iOworfQordGVzdFN0cmluZ1RvQWxsQ29tcGFyZSgpOworCisKKy8v
IENvbXBhcmUgb25lIHR5cGUgdG8gYWxsIHRoZSBvdGhlcnMuCitmdW5jdGlvbiBjb21wYXJlT25l
VHlwZVRvQWxsKCkgeworICAgIGZvciAobGV0IGxlZnRDYXNlSW5kZXggPSAwOyBsZWZ0Q2FzZUlu
ZGV4IDwgdmFsaWRJbnB1dFRlc3RDYXNlcy5sZW5ndGg7ICsrbGVmdENhc2VJbmRleCkgeworICAg
ICAgICBsZXQgbGVmdENhc2UgPSB2YWxpZElucHV0VGVzdENhc2VzW2xlZnRDYXNlSW5kZXhdOwor
ICAgICAgICBldmFsKGAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9wYXF1ZVN0cmljdEVxdWFsT25l
VHlwZVRvQWxsKGxlZnQsIHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgPT09
IHJpZ2h0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9JbmxpbmUob3BhcXVlU3RyaWN0
RXF1YWxPbmVUeXBlVG9BbGwpOworICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhvcGFxdWVT
dHJpY3RFcXVhbE9uZVR5cGVUb0FsbCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9wYXF1ZVN0
cmljdE5vdEVxdWFsT25lVHlwZVRvQWxsKGxlZnQsIHJpZ2h0KSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGxlZnQgIT09IHJpZ2h0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9Jbmxp
bmUob3BhcXVlU3RyaWN0Tm90RXF1YWxPbmVUeXBlVG9BbGwpOworICAgICAgICAgICAgbm9PU1JF
eGl0RnV6emluZyhvcGFxdWVTdHJpY3ROb3RFcXVhbE9uZVR5cGVUb0FsbCk7CisKKyAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KGxldCByaWdodENhc2VJbmRleCA9IDA7IHJpZ2h0Q2FzZUluZGV4IDwgcmlnaHRDYXNlcy5sZW5n
dGg7ICsrcmlnaHRDYXNlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmljdEVx
dWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0RXF1YWxPbmVUeXBlVG9BbGwoJHtsZWZ0Q2FzZX0sIHJp
Z2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0lk
ZW50aWNhbChzdHJpY3RFcXVhbE91dHB1dCwgZXhwZWN0ZWRFcXVhbFJlc3VsdHNbJHtsZWZ0Q2Fz
ZUluZGV4fV1bcmlnaHRDYXNlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgIkZhaWxlZCBvcGFxdWVTdHJpY3RFcXVhbE9uZVR5cGVUb0FsbCgpIHdpdGggbGVmdCBjYXNl
ID0gIiArICR7bGVmdENhc2V9ICsgIiwgcmlnaHQgY2FzZSA9ICIgKyByaWdodENhc2VzW3JpZ2h0
Q2FzZUluZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBs
ZXQgc3RyaWN0Tm90RXF1YWxPdXRwdXQgPSBvcGFxdWVTdHJpY3ROb3RFcXVhbE9uZVR5cGVUb0Fs
bCgke2xlZnRDYXNlfSwgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF0pOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKHN0cmljdE5vdEVxdWFsT3V0cHV0LCBleHBlY3RlZE5v
dEVxdWFsUmVzdWx0c1ske2xlZnRDYXNlSW5kZXh9XVtyaWdodENhc2VJbmRleF0pKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZVN0cmljdE5vdEVxdWFsT25l
VHlwZVRvQWxsKCkgd2l0aCBsZWZ0IGNhc2UgPSAiICsgJHtsZWZ0Q2FzZX0gKyAiLCByaWdodCBj
YXNlID0gIiArIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgIGApOwor
ICAgIH0KK30KK2NvbXBhcmVPbmVUeXBlVG9BbGwoKTsKKworZnVuY3Rpb24gY29tcGFyZUFsbFR5
cGVzVG9PbmUoKSB7CisgICAgZm9yIChsZXQgcmlnaHRDYXNlSW5kZXggPSAwOyByaWdodENhc2VJ
bmRleCA8IHZhbGlkSW5wdXRUZXN0Q2FzZXMubGVuZ3RoOyArK3JpZ2h0Q2FzZUluZGV4KSB7Cisg
ICAgICAgIGxldCByaWdodENhc2UgPSB2YWxpZElucHV0VGVzdENhc2VzW3JpZ2h0Q2FzZUluZGV4
XTsKKyAgICAgICAgZXZhbChgCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVTdHJpY3RFcXVh
bEFsbFRvT25lKGxlZnQsIHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgPT09
IHJpZ2h0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9JbmxpbmUob3BhcXVlU3RyaWN0
RXF1YWxBbGxUb09uZSk7CisgICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVN0cmlj
dEVxdWFsQWxsVG9PbmUpOworCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVTdHJpY3ROb3RF
cXVhbEFsbFRvT25lKGxlZnQsIHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQg
IT09IHJpZ2h0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9JbmxpbmUob3BhcXVlU3Ry
aWN0Tm90RXF1YWxBbGxUb09uZSk7CisgICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9wYXF1
ZVN0cmljdE5vdEVxdWFsQWxsVG9PbmUpOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlMzsgKytpKSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgbGVmdENhc2VJbmRleCA9
IDA7IGxlZnRDYXNlSW5kZXggPCBsZWZ0Q2FzZXMubGVuZ3RoOyArK2xlZnRDYXNlSW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmljdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0
RXF1YWxBbGxUb09uZShsZWZ0Q2FzZXNbbGVmdENhc2VJbmRleF0sICR7cmlnaHRDYXNlfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwoc3RyaWN0RXF1YWxPdXRwdXQsIGV4
cGVjdGVkRXF1YWxSZXN1bHRzW2xlZnRDYXNlSW5kZXhdWyR7cmlnaHRDYXNlSW5kZXh9XSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlU3RyaWN0RXF1YWxB
bGxUb09uZSgpIHdpdGggbGVmdCBjYXNlID0gIiArIGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSAr
ICIsIHJpZ2h0IGNhc2UgPSAiICsgJHtyaWdodENhc2V9OworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGxldCBzdHJpY3ROb3RFcXVhbE91dHB1dCA9IG9wYXF1ZVN0
cmljdE5vdEVxdWFsQWxsVG9PbmUobGVmdENhc2VzW2xlZnRDYXNlSW5kZXhdLCAke3JpZ2h0Q2Fz
ZX0pOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKHN0cmljdE5vdEVxdWFs
T3V0cHV0LCBleHBlY3RlZE5vdEVxdWFsUmVzdWx0c1tsZWZ0Q2FzZUluZGV4XVske3JpZ2h0Q2Fz
ZUluZGV4fV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1
ZVN0cmljdE5vdEVxdWFsQWxsVG9PbmUoKSB3aXRoIGxlZnQgY2FzZSA9ICIgKyBsZWZ0Q2FzZXNb
bGVmdENhc2VJbmRleF0gKyAiLCByaWdodCBjYXNlID0gIiArICR7cmlnaHRDYXNlfTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICBgKTsKKyAgICB9Cit9Citjb21wYXJlQWxsVHlwZXNUb09uZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>