<?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>169789</bug_id>
          
          <creation_ts>2017-03-16 14:40:34 -0700</creation_ts>
          <short_desc>Returning false in event handler must not cancel CustomEvent of type beforeunload</short_desc>
          <delta_ts>2024-08-28 08:22:43 -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>DOM</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>168382</dup_id>
          
          <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="Domenic Denicola">d</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annevk</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288761</commentid>
    <comment_count>0</comment_count>
    <who name="Domenic Denicola">d</who>
    <bug_when>2017-03-16 14:40:34 -0700</bug_when>
    <thetext>The newly-introduced test at http://w3c-test.org/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html named

&gt; Returning false must not cancel the event, because it&apos;s coerced to the DOMString &quot;false&quot; which does not cancel CustomEvents: CustomEvent, cancelable

does not pass in Safari Tech Preview 25. Everything else does (except the test &quot;Returning a string must not cancel the event: BeforeUnloadEvent with type &quot;click&quot;, cancelable&quot; which is fine since it&apos;s best if Safari doesn&apos;t implement createEvent(&quot;beforeunload&quot;); see https://github.com/whatwg/dom/issues/362.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288813</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-16 16:03:02 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The newly-introduced test at
&gt; http://w3c-test.org/html/browsers/browsing-the-web/unloading-documents/
&gt; beforeunload-canceling.html named
&gt; 
&gt; &gt; Returning false must not cancel the event, because it&apos;s coerced to the DOMString &quot;false&quot; which does not cancel CustomEvents: CustomEvent, cancelable
&gt; 
&gt; does not pass in Safari Tech Preview 25. Everything else does (except the
&gt; test &quot;Returning a string must not cancel the event: BeforeUnloadEvent with
&gt; type &quot;click&quot;, cancelable&quot; which is fine since it&apos;s best if Safari doesn&apos;t
&gt; implement createEvent(&quot;beforeunload&quot;); see
&gt; https://github.com/whatwg/dom/issues/362.)

I am not clear yet on what part of the spec says so.

I found:
https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (step 5)

which says:
If return value is not null, then:
    1. Set E&apos;s canceled flag.
    ...

So if you return false, we cancel the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288814</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-16 16:04:40 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; The newly-introduced test at
&gt; &gt; http://w3c-test.org/html/browsers/browsing-the-web/unloading-documents/
&gt; &gt; beforeunload-canceling.html named
&gt; &gt; 
&gt; &gt; &gt; Returning false must not cancel the event, because it&apos;s coerced to the DOMString &quot;false&quot; which does not cancel CustomEvents: CustomEvent, cancelable
&gt; &gt; 
&gt; &gt; does not pass in Safari Tech Preview 25. Everything else does (except the
&gt; &gt; test &quot;Returning a string must not cancel the event: BeforeUnloadEvent with
&gt; &gt; type &quot;click&quot;, cancelable&quot; which is fine since it&apos;s best if Safari doesn&apos;t
&gt; &gt; implement createEvent(&quot;beforeunload&quot;); see
&gt; &gt; https://github.com/whatwg/dom/issues/362.)
&gt; 
&gt; I am not clear yet on what part of the spec says so.
&gt; 
&gt; I found:
&gt; https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (step 5)
&gt; 
&gt; which says:
&gt; If return value is not null, then:
&gt;     1. Set E&apos;s canceled flag.
&gt;     ...
&gt; 
&gt; So if you return false, we cancel the event.

Oh, it is a CustomEvent, not a BeforeUnloadEvent. I get it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288815</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-16 16:07:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; The newly-introduced test at
&gt; &gt; &gt; http://w3c-test.org/html/browsers/browsing-the-web/unloading-documents/
&gt; &gt; &gt; beforeunload-canceling.html named
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Returning false must not cancel the event, because it&apos;s coerced to the DOMString &quot;false&quot; which does not cancel CustomEvents: CustomEvent, cancelable
&gt; &gt; &gt; 
&gt; &gt; &gt; does not pass in Safari Tech Preview 25. Everything else does (except the
&gt; &gt; &gt; test &quot;Returning a string must not cancel the event: BeforeUnloadEvent with
&gt; &gt; &gt; type &quot;click&quot;, cancelable&quot; which is fine since it&apos;s best if Safari doesn&apos;t
&gt; &gt; &gt; implement createEvent(&quot;beforeunload&quot;); see
&gt; &gt; &gt; https://github.com/whatwg/dom/issues/362.)
&gt; &gt; 
&gt; &gt; I am not clear yet on what part of the spec says so.
&gt; &gt; 
&gt; &gt; I found:
&gt; &gt; https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (step 5)
&gt; &gt; 
&gt; &gt; which says:
&gt; &gt; If return value is not null, then:
&gt; &gt;     1. Set E&apos;s canceled flag.
&gt; &gt;     ...
&gt; &gt; 
&gt; &gt; So if you return false, we cancel the event.
&gt; 
&gt; Oh, it is a CustomEvent, not a BeforeUnloadEvent. I get it now.

So:

&quot;&quot;&quot;
Otherwise
If return value is false, then set E&apos;s canceled flag.

If we&apos;ve gotten to this &quot;Otherwise&quot; clause because E&apos;s type is beforeunload but E is not a BeforeUnloadEvent object, then return value will never be false, since in such cases return value will have been coerced into either null or a DOMString.
&quot;&quot;&quot;

From https://html.spec.whatwg.org/#the-event-handler-processing-algorithm (step 5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288824</commentid>
    <comment_count>4</comment_count>
      <attachid>304716</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-16 16:17:41 -0700</bug_when>
    <thetext>Created attachment 304716
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288936</commentid>
    <comment_count>5</comment_count>
      <attachid>304755</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-16 22:01:49 -0700</bug_when>
    <thetext>Created attachment 304755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289586</commentid>
    <comment_count>6</comment_count>
      <attachid>304953</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-20 15:01:37 -0700</bug_when>
    <thetext>Created attachment 304953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289589</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-20 15:06:36 -0700</bug_when>
    <thetext>Tried to clarify the code a bit based on Darin&apos;s feedback offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330758</commentid>
    <comment_count>8</comment_count>
      <attachid>304953</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-07-20 13:52:28 -0700</bug_when>
    <thetext>Comment on attachment 304953
Patch

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

&gt; Source/WebCore/bindings/js/JSEventListener.cpp:184
&gt; +            // OnBeforeUnloadEventHandler returns a DOMString. Therefore, the value returned by JS should get serialized to a
&gt; +            // String and cannot be False below.
&gt; +            // See https://html.spec.whatwg.org/#onbeforeunloadeventhandler.
&gt; +            bool isOnBeforeUnloadEventHandler = m_isAttribute &amp;&amp; event-&gt;type() == eventNames().beforeunloadEvent;
&gt; +            if (isOnBeforeUnloadEventHandler)
&gt; +                return;

Why do we use event-&gt;type() == eventNames().beforeunloadEvent here but is&lt;BeforeUnloadEvent&gt;(*event) above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330760</commentid>
    <comment_count>9</comment_count>
      <attachid>304953</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-20 13:58:39 -0700</bug_when>
    <thetext>Comment on attachment 304953
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSEventListener.cpp:184
&gt;&gt; +                return;
&gt; 
&gt; Why do we use event-&gt;type() == eventNames().beforeunloadEvent here but is&lt;BeforeUnloadEvent&gt;(*event) above?

To state the obvious, we have to check is&lt;BeforeUnloadEvent&gt; above, because it guards a cast and the code uses data that is not stored in an event that just happens to be named &quot;beforeunload&quot; but was not generated by the DOM with the appropriate underlying class.

So whatever we decide, we must not change that to just checking the event type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330762</commentid>
    <comment_count>10</comment_count>
      <attachid>304953</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-20 14:00:21 -0700</bug_when>
    <thetext>Comment on attachment 304953
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/JSEventListener.cpp:184
&gt;&gt;&gt; +                return;
&gt;&gt; 
&gt;&gt; Why do we use event-&gt;type() == eventNames().beforeunloadEvent here but is&lt;BeforeUnloadEvent&gt;(*event) above?
&gt; 
&gt; To state the obvious, we have to check is&lt;BeforeUnloadEvent&gt; above, because it guards a cast and the code uses data that is not stored in an event that just happens to be named &quot;beforeunload&quot; but was not generated by the DOM with the appropriate underlying class.
&gt; 
&gt; So whatever we decide, we must not change that to just checking the event type.

OK, I remember now, this is exactly what the change is all about! You can have a custom event of type &quot;beforeunload&quot; and it has to work. I believe this is covered by the test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503295</commentid>
    <comment_count>11</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:19:01 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055947</commentid>
    <comment_count>12</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2024-08-28 08:22:43 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 168382 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304716</attachid>
            <date>2017-03-16 16:17:41 -0700</date>
            <delta_ts>2017-03-16 22:01:45 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>169789_beforeunload_wip.patch</filename>
            <type>text/plain</type>
            <size>1575</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IDZkNTFiYzdjNmM1Li4yMTlhZTlmODllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQmVm
b3JlVW5sb2FkRXZlbnQuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Lmgi
CkBAIC0xNzAsMTAgKzE3MSwxOCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICAg
ICAgZXZlbnQtPnRhcmdldCgpLT51bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAg
ICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChpczxCZWZvcmVVbmxvYWRFdmVudD4oKmV2ZW50KSkKKyAg
ICAgICAgICAgIGlmIChpczxCZWZvcmVVbmxvYWRFdmVudD4oKmV2ZW50KSkgewogICAgICAgICAg
ICAgICAgIGhhbmRsZUJlZm9yZVVubG9hZEV2ZW50UmV0dXJuVmFsdWUoZG93bmNhc3Q8QmVmb3Jl
VW5sb2FkRXZlbnQ+KCpldmVudCksIGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4o
KmV4ZWMsIHJldHZhbCwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1faXNBdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBoZXJlIGJlY2F1
c2UgRSdzIHR5cGUgaXMgYmVmb3JldW5sb2FkIGJ1dCBFIGlzIG5vdCBhIEJlZm9yZVVubG9hZEV2
ZW50IG9iamVjdCwgdGhlbiByZXR1cm4gdmFsdWUgd2lsbCBuZXZlciBiZSBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAvLyBzaW5jZSBpbiBzdWNoIGNhc2VzIHJldHVybiB2YWx1ZSB3aWxsIGhhdmUg
YmVlbiBjb2VyY2VkIGludG8gZWl0aGVyIG51bGwgb3IgYSBET01TdHJpbmcuCisgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBJZiBy
ZXR1cm4gdmFsdWUgaXMgZmFsc2UsIHRoZW4gc2V0IEUncyBjYW5jZWxlZCBmbGFnLgogICAgICAg
ICAgICAgICAgIGlmIChyZXR2YWwuaXNGYWxzZSgpKQogICAgICAgICAgICAgICAgICAgICBldmVu
dC0+cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304755</attachid>
            <date>2017-03-16 22:01:49 -0700</date>
            <delta_ts>2017-03-20 15:01:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169789-20170316220148.patch</filename>
            <type>text/plain</type>
            <size>9135</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEyNjM5NDU2YWU2OWYx
MDljOGE5Njc0MWYxNjExYzNlMDcyZGE3YS4uNzY1MjE3ZTFkMTM1ODY1YmNhNmIyOGQ4ODAxNjhm
YzljYWUzMmZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAzLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIGZhbHNlIGlu
IGV2ZW50IGhhbmRsZXIgbXVzdCBub3QgY2FuY2VsIEN1c3RvbUV2ZW50IG9mIHR5cGUgYmVmb3Jl
dW5sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXR1cm5pbmcgZmFsc2UgaW4gZXZlbnQgaGFuZGxlciBtdXN0IG5vdCBjYW5jZWwgQ3VzdG9tRXZl
bnQgb2YgdHlwZSBiZWZvcmV1bmxvYWQsCisgICAgICAgIGFzIHBlcjoKKyAgICAgICAgLSBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFs
Z29yaXRobSAoc3RlcCA1LCBPdGhlcndpc2UpCisKKyAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHRo
ZSBiZWZvcmV1bmxvYWQgZXZlbnQgaGFuZGxlciBpcyBvZiB0eXBlIE9uQmVmb3JlVW5sb2FkRXZl
bnRIYW5kbGVyOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI29uYmVm
b3JldW5sb2FkZXZlbnRoYW5kbGVyCisgICAgICAgIHdoaWNoIHJldHVybnMgYSBET01TdHJpbmcu
IFRoZXJlZm9yZSwgcmV0dXJuaW5nIGZhbHNlIGdldHMgY29lcmNlZCB0byB0aGUgc3RyaW5nICJm
YWxzZSIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVkIGV4aXN0aW5nIHRlc3QuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisKIDIwMTctMDMtMTYgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggR1RL
IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggNmQ1MWJjN2M2YzVkMjRiNTQzMTRjYmFkZDM3Y2U3MWJjMDJjMWM0Ny4uMjE5YWU5
Zjg5ZWY4YjUxYjY1MDRjOTQzYTk0MzlmZTFjYjk0MjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j
bHVkZSAiQmVmb3JlVW5sb2FkRXZlbnQuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3kuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0LmgiCkBAIC0xNzAsMTAgKzE3MSwxOCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
ICAgICAgICAgICAgZXZlbnQtPnRhcmdldCgpLT51bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5k
bGVyKCk7CiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpczxCZWZvcmVVbmxvYWRFdmVudD4oKmV2
ZW50KSkKKyAgICAgICAgICAgIGlmIChpczxCZWZvcmVVbmxvYWRFdmVudD4oKmV2ZW50KSkgewog
ICAgICAgICAgICAgICAgIGhhbmRsZUJlZm9yZVVubG9hZEV2ZW50UmV0dXJuVmFsdWUoZG93bmNh
c3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCksIGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRE9N
U3RyaW5nPj4oKmV4ZWMsIHJldHZhbCwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5v
cm1hbCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKG1faXNBdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBo
ZXJlIGJlY2F1c2UgRSdzIHR5cGUgaXMgYmVmb3JldW5sb2FkIGJ1dCBFIGlzIG5vdCBhIEJlZm9y
ZVVubG9hZEV2ZW50IG9iamVjdCwgdGhlbiByZXR1cm4gdmFsdWUgd2lsbCBuZXZlciBiZSBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAvLyBzaW5jZSBpbiBzdWNoIGNhc2VzIHJldHVybiB2YWx1ZSB3
aWxsIGhhdmUgYmVlbiBjb2VyY2VkIGludG8gZWl0aGVyIG51bGwgb3IgYSBET01TdHJpbmcuCisg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVu
bG9hZEV2ZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICAvLyBJZiByZXR1cm4gdmFsdWUgaXMgZmFsc2UsIHRoZW4gc2V0IEUncyBjYW5jZWxlZCBmbGFn
LgogICAgICAgICAgICAgICAgIGlmIChyZXR2YWwuaXNGYWxzZSgpKQogICAgICAgICAgICAgICAg
ICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IDFiYmJlNzY0MDBhYjQyZTNjYjljYjY0MmI5ODU2MzBkZGZk
NDkyY2MuLjMwNWQ3NTQ5ZjQ4Y2FlZTE2ZGM2NWEwYjQwMTEyMDBiNTU3MDk0MWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAzLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIGZhbHNlIGlu
IGV2ZW50IGhhbmRsZXIgbXVzdCBub3QgY2FuY2VsIEN1c3RvbUV2ZW50IG9mIHR5cGUgYmVmb3Jl
dW5sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZS1zeW5jIHRlc3Qgd2l0aCB1cHN0cmVhbS4gVGhlIHJlYXNvbiB3ZSBmYWlsIG9uZSBvZiB0aGUg
MiBuZXcgY2hlY2tzIGlzIGJlY2F1c2Ugd2UgZG8KKyAgICAgICAgbm90IHN1cHBvcnQgY3JlYXRl
RXZlbnQoImJlZm9yZXVubG9hZCIpLCB3aGljaCBpcyBsaWtlbHkgZmluZToKKyAgICAgICAgLSBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2RvbS9pc3N1ZXMvMzYyCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL3VubG9hZGluZy1k
b2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi91bmxvYWRp
bmctZG9jdW1lbnRzL2JlZm9yZXVubG9hZC1jYW5jZWxpbmcuaHRtbDoKKwogMjAxNy0wMy0xNiAg
Smlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJDcnlwdG9d
IFN1cHBvcnQgU1BLSS9QS0NTOCBmb3IgRWxsaXB0aWMgQ3VydmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93
c2luZy10aGUtd2ViL3VubG9hZGluZy1kb2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi91bmxvYWRpbmctZG9jdW1lbnRzL2JlZm9y
ZXVubG9hZC1jYW5jZWxpbmctZXhwZWN0ZWQudHh0CmluZGV4IDI5NmFmMWFiNDFiMmZhYWJiM2Fk
MzM2NjU2N2YzM2ZmZmJjNWI0NmYuLmEzYzc2Yzg3YTRjMDEwYTdiODUwMGNiZTk4MTcxZDliNjA2
NzA0MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL3VubG9hZGluZy1kb2N1bWVudHMv
YmVmb3JldW5sb2FkLWNhbmNlbGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13
ZWIvdW5sb2FkaW5nLWRvY3VtZW50cy9iZWZvcmV1bmxvYWQtY2FuY2VsaW5nLWV4cGVjdGVkLnR4
dApAQCAtMTEsNiArMTEsOCBAQCBDT05GSVJNIE5BVklHQVRJT046IGZvbwogCiBQQVNTIFJldHVy
bmluZyBhIHN0cmluZyBtdXN0IG5vdCBjYW5jZWwgdGhlIGV2ZW50OiBDdXN0b21FdmVudCwgbm9u
LWNhbmNlbGFibGUgCiBQQVNTIFJldHVybmluZyBhIHN0cmluZyBtdXN0IG5vdCBjYW5jZWwgdGhl
IGV2ZW50OiBDdXN0b21FdmVudCwgY2FuY2VsYWJsZSAKK1BBU1MgUmV0dXJuaW5nIGZhbHNlIG11
c3Qgbm90IGNhbmNlbCB0aGUgZXZlbnQsIGJlY2F1c2UgaXQncyBjb2VyY2VkIHRvIHRoZSBET01T
dHJpbmcgImZhbHNlIiB3aGljaCBkb2VzIG5vdCBjYW5jZWwgQ3VzdG9tRXZlbnRzOiBDdXN0b21F
dmVudCwgY2FuY2VsYWJsZSAKK0ZBSUwgUmV0dXJuaW5nIGEgc3RyaW5nIG11c3Qgbm90IGNhbmNl
bCB0aGUgZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50IHdpdGggdHlwZSAiY2xpY2siLCBjYW5jZWxh
YmxlIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KIFBBU1MgUmV0dXJuaW5nIG51bGwg
d2l0aCBhIHJlYWwgaWZyYW1lIHVubG9hZGluZyAKIFBBU1MgUmV0dXJuaW5nIHVuZGVmaW5lZCB3
aXRoIGEgcmVhbCBpZnJhbWUgdW5sb2FkaW5nIAogUEFTUyBSZXR1cm5pbmcgIHdpdGggYSByZWFs
IGlmcmFtZSB1bmxvYWRpbmcgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi91bmxvYWRp
bmctZG9jdW1lbnRzL2JlZm9yZXVubG9hZC1jYW5jZWxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUt
d2ViL3VubG9hZGluZy1kb2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGluZy5odG1sCmluZGV4
IGI0MTVhYzJhMzljMTk2NTAwODdkMTMyZWI1YWE3ZmE1NDAwNzE5MzQuLjUxMDJkMWY4MDI5ZTM5
MTg5ZmFmZDEyNDFiYzlmYTY4MzY2NDVhNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2Vi
L3VubG9hZGluZy1kb2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGluZy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9i
cm93c2luZy10aGUtd2ViL3VubG9hZGluZy1kb2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGlu
Zy5odG1sCkBAIC0xMSw0NCArMTEsODMgQEAKIDxzY3JpcHQ+CiAidXNlIHN0cmljdCI7CiAKLWFz
eW5jX3Rlc3QodCA9PiB7Citwcm9taXNlX3Rlc3QodCA9PiB7CiAgIGxldCBvbmJlZm9yZXVubG9h
ZEhhcHBlbmVkID0gZmFsc2U7CiAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IHQuc3RlcF9mdW5j
KCgpID0+IHsKICAgICBvbmJlZm9yZXVubG9hZEhhcHBlbmVkID0gdHJ1ZTsKICAgICByZXR1cm4g
ImNhbmNlbCBtZSI7CiAgIH0pOwogCi0gIGNvbnN0IGxpc3RlbmVyID0gdC5zdGVwX2Z1bmMoZSA9
PiB7CisgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgd2luZG93LCAi
YmVmb3JldW5sb2FkIik7CisgIGNvbnN0IHByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3Io
ImJlZm9yZXVubG9hZCIpLnRoZW4oZSA9PiB7CiAgICAgYXNzZXJ0X3RydWUob25iZWZvcmV1bmxv
YWRIYXBwZW5lZCwgIkN1c3RvbUV2ZW50IG11c3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBldmVu
dCBoYW5kbGVyIik7CiAgICAgYXNzZXJ0X2ZhbHNlKGUuZGVmYXVsdFByZXZlbnRlZCwgIlRoZSBl
dmVudCBtdXN0IG5vdCBoYXZlIGJlZW4gY2FuY2VsZWQiKTsKICAgICB3aW5kb3cub25iZWZvcmV1
bmxvYWQgPSBudWxsOwotICAgIHQuZG9uZSgpOwogICB9KTsKIAotICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigiYmVmb3JldW5sb2FkIiwgbGlzdGVuZXIpOwotCiAgIHdpbmRvdy5kaXNwYXRjaEV2
ZW50KG5ldyBDdXN0b21FdmVudCgiYmVmb3JldW5sb2FkIikpOworCisgIHJldHVybiBwcm9taXNl
OwogfSwgIlJldHVybmluZyBhIHN0cmluZyBtdXN0IG5vdCBjYW5jZWwgdGhlIGV2ZW50OiBDdXN0
b21FdmVudCwgbm9uLWNhbmNlbGFibGUiKTsKIAotYXN5bmNfdGVzdCh0ID0+IHsKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKICAgbGV0IG9uYmVmb3JldW5sb2FkSGFwcGVuZWQgPSBmYWxzZTsKICAgd2lu
ZG93Lm9uYmVmb3JldW5sb2FkID0gdC5zdGVwX2Z1bmMoKCkgPT4gewogICAgIG9uYmVmb3JldW5s
b2FkSGFwcGVuZWQgPSB0cnVlOwogICAgIHJldHVybiAiY2FuY2VsIG1lIjsKICAgfSk7CiAKLSAg
Y29uc3QgbGlzdGVuZXIgPSB0LnN0ZXBfZnVuYyhlID0+IHsKKyAgY29uc3QgZXZlbnRXYXRjaGVy
ID0gbmV3IEV2ZW50V2F0Y2hlcih0LCB3aW5kb3csICJiZWZvcmV1bmxvYWQiKTsKKyAgY29uc3Qg
cHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigiYmVmb3JldW5sb2FkIikudGhlbihlID0+
IHsKICAgICBhc3NlcnRfdHJ1ZShvbmJlZm9yZXVubG9hZEhhcHBlbmVkLCAiQ3VzdG9tRXZlbnQg
bXVzdCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGV2ZW50IGhhbmRsZXIiKTsKICAgICBhc3NlcnRf
ZmFsc2UoZS5kZWZhdWx0UHJldmVudGVkLCAiVGhlIGV2ZW50IG11c3Qgbm90IGhhdmUgYmVlbiBj
YW5jZWxlZCIpOwogICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7CiAgICAgdC5kb25l
KCk7CiAgIH0pOwogCi0gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLCBs
aXN0ZW5lcik7Ci0KICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJiZWZv
cmV1bmxvYWQiLCB7IGNhbmNlbGFibGU6IHRydWUgfSkpOworCisgIHJldHVybiBwcm9taXNlOwog
fSwgIlJldHVybmluZyBhIHN0cmluZyBtdXN0IG5vdCBjYW5jZWwgdGhlIGV2ZW50OiBDdXN0b21F
dmVudCwgY2FuY2VsYWJsZSIpOwogCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBvbmJlZm9y
ZXVubG9hZEhhcHBlbmVkID0gZmFsc2U7CisgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IHQuc3Rl
cF9mdW5jKCgpID0+IHsKKyAgICBvbmJlZm9yZXVubG9hZEhhcHBlbmVkID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0pOworCisgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdh
dGNoZXIodCwgd2luZG93LCAiYmVmb3JldW5sb2FkIik7CisgIGNvbnN0IHByb21pc2UgPSBldmVu
dFdhdGNoZXIud2FpdF9mb3IoImJlZm9yZXVubG9hZCIpLnRoZW4oZSA9PiB7CisgICAgYXNzZXJ0
X3RydWUob25iZWZvcmV1bmxvYWRIYXBwZW5lZCwgIkN1c3RvbUV2ZW50IG11c3QgYmUgYWJsZSB0
byB0cmlnZ2VyIHRoZSBldmVudCBoYW5kbGVyIik7CisgICAgYXNzZXJ0X2ZhbHNlKGUuZGVmYXVs
dFByZXZlbnRlZCwgIlRoZSBldmVudCBtdXN0IG5vdCBoYXZlIGJlZW4gY2FuY2VsZWQiKTsKKyAg
ICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOworICAgIHQuZG9uZSgpOworICB9KTsKKwor
ICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImJlZm9yZXVubG9hZCIsIHsg
Y2FuY2VsYWJsZTogdHJ1ZSB9KSk7CisKKyAgcmV0dXJuIHByb21pc2U7Cit9LCAiUmV0dXJuaW5n
IGZhbHNlIG11c3Qgbm90IGNhbmNlbCB0aGUgZXZlbnQsIGJlY2F1c2UgaXQncyBjb2VyY2VkIHRv
IHRoZSBET01TdHJpbmcgXCJmYWxzZVwiIHdoaWNoIGRvZXMgbm90IGNhbmNlbCAiICsKKyAgICJD
dXN0b21FdmVudHM6IEN1c3RvbUV2ZW50LCBjYW5jZWxhYmxlIik7CisKKy8vIFRoaXMgdGVzdCBj
YW4gYmUgcmVtb3ZlZCBpZiB3ZSB1cGRhdGUgdGhlIERPTSBTdGFuZGFyZCB0byBkaXNhbGxvdyBj
cmVhdGVFdmVudCgiQmVmb3JlVW5sb2FkRXZlbnQiKS4gQnJvd3NlciBzdXBwb3J0CisvLyBpcyBp
bmNvbnNpc3RlbnQuIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZG9tL2lzc3Vlcy8zNjIKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hl
cih0LCB3aW5kb3csICJjbGljayIpOworICBjb25zdCBwcm9taXNlID0gZXZlbnRXYXRjaGVyLndh
aXRfZm9yKCJjbGljayIpLnRoZW4oZSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKGUuZGVmYXVsdFBy
ZXZlbnRlZCwgIlRoZSBldmVudCBtdXN0IG5vdCBoYXZlIGJlZW4gY2FuY2VsZWQiKTsKKyAgICB3
aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOworICAgIHQuZG9uZSgpOworICB9KTsKKworICBj
b25zdCBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJCZWZvcmVVbmxvYWRFdmVudCIpOworICBl
di5pbml0RXZlbnQoImNsaWNrIiwgZmFsc2UsIHRydWUpOworICB3aW5kb3cuZGlzcGF0Y2hFdmVu
dChldik7CisKKyAgcmV0dXJuIHByb21pc2U7Cit9LCAiUmV0dXJuaW5nIGEgc3RyaW5nIG11c3Qg
bm90IGNhbmNlbCB0aGUgZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50IHdpdGggdHlwZSBcImNsaWNr
XCIsIGNhbmNlbGFibGUiKTsKKwogY29uc3QgdGVzdENhc2VzID0gWwogICB7CiAgICAgdmFsdWVU
b1JldHVybjogbnVsbCwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304953</attachid>
            <date>2017-03-20 15:01:37 -0700</date>
            <delta_ts>2017-07-20 14:00:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169789-20170320150136.patch</filename>
            <type>text/plain</type>
            <size>9332</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU5MTRkYWZlMWIxNjFl
OGJhODNmOGFiMTliOGFiOWVmNjk3Y2U1Yi4uMzA5NzNiOGQzZDg2MGIyODU2OWRkMjZjYmFjODhl
MTI0N2E2MGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAzLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIGZhbHNlIGlu
IGV2ZW50IGhhbmRsZXIgbXVzdCBub3QgY2FuY2VsIEN1c3RvbUV2ZW50IG9mIHR5cGUgYmVmb3Jl
dW5sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXR1cm5pbmcgZmFsc2UgaW4gZXZlbnQgaGFuZGxlciBtdXN0IG5vdCBjYW5jZWwgQ3VzdG9tRXZl
bnQgb2YgdHlwZSBiZWZvcmV1bmxvYWQsCisgICAgICAgIGFzIHBlcjoKKyAgICAgICAgLSBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFs
Z29yaXRobSAoc3RlcCA1LCBPdGhlcndpc2UpCisKKyAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHRo
ZSBiZWZvcmV1bmxvYWQgZXZlbnQgaGFuZGxlciBpcyBvZiB0eXBlIE9uQmVmb3JlVW5sb2FkRXZl
bnRIYW5kbGVyOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI29uYmVm
b3JldW5sb2FkZXZlbnRoYW5kbGVyCisgICAgICAgIHdoaWNoIHJldHVybnMgYSBET01TdHJpbmcu
IFRoZXJlZm9yZSwgcmV0dXJuaW5nIGZhbHNlIGdldHMgY29lcmNlZCB0byB0aGUgc3RyaW5nICJm
YWxzZSIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVkIGV4aXN0aW5nIHRlc3QuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisKIDIwMTctMDMtMjAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJl
IFNvY2tldFN0cmVhbUhhbmRsZSBmb3IgYmVpbmcgY3JlYXRlZCBmcm9tIFdLMgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNmQ1MWJjN2M2
YzVkMjRiNTQzMTRjYmFkZDM3Y2U3MWJjMDJjMWM0Ny4uNmZkODk4MjU0MDhlNmIzODhkMTVkNzZi
ZjBlMWVhZDE0YzVmMGU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQmVmb3JlVW5sb2Fk
RXZlbnQuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJF
dmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCkBAIC0xNzAs
MTMgKzE3MSwyMSBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICAgICAgZXZlbnQt
PnRhcmdldCgpLT51bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAgICAgICAgICAg
ICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChpczxCZWZvcmVVbmxvYWRFdmVudD4oKmV2ZW50KSkKKyAgICAgICAgICAg
IGlmIChpczxCZWZvcmVVbmxvYWRFdmVudD4oKmV2ZW50KSkgewogICAgICAgICAgICAgICAgIGhh
bmRsZUJlZm9yZVVubG9hZEV2ZW50UmV0dXJuVmFsdWUoZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZl
bnQ+KCpldmVudCksIGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmV4ZWMsIHJl
dHZhbCwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCkpOwotCi0gICAgICAg
ICAgICBpZiAobV9pc0F0dHJpYnV0ZSkgewotICAgICAgICAgICAgICAgIGlmIChyZXR2YWwuaXNG
YWxzZSgpKQotICAgICAgICAgICAgICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE9u
QmVmb3JlVW5sb2FkRXZlbnRIYW5kbGVyIHJldHVybnMgYSBET01TdHJpbmcuIFRoZXJlZm9yZSwg
dGhlIHZhbHVlIHJldHVybmVkIGJ5IEpTIHNob3VsZCBnZXQgc2VyaWFsaXplZCB0byBhCisgICAg
ICAgICAgICAvLyBTdHJpbmcgYW5kIGNhbm5vdCBiZSBGYWxzZSBiZWxvdy4KKyAgICAgICAgICAg
IC8vIFNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNvbmJlZm9yZXVubG9hZGV2ZW50
aGFuZGxlci4KKyAgICAgICAgICAgIGJvb2wgaXNPbkJlZm9yZVVubG9hZEV2ZW50SGFuZGxlciA9
IG1faXNBdHRyaWJ1dGUgJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmVmb3JldW5s
b2FkRXZlbnQ7CisgICAgICAgICAgICBpZiAoaXNPbkJlZm9yZVVubG9hZEV2ZW50SGFuZGxlcikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIElmIHJldHVybiB2YWx1
ZSBpcyBmYWxzZSwgdGhlbiBzZXQgZXZlbnQncyBjYW5jZWxlZCBmbGFnLgorICAgICAgICAgICAg
aWYgKG1faXNBdHRyaWJ1dGUgJiYgcmV0dmFsLmlzRmFsc2UoKSkKKyAgICAgICAgICAgICAgICBl
dmVudC0+cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IDdmMjY5N2YxMzlkZDMxODVkNmQ3NTc0NTJlZWU3ZTRjODcx
Mzk5MTAuLmRiYzU2MjhjMGM0ZWVlMmExYmZhOGI5OGRhMjI2NzAyODcyZWZhMWEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAzLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIGZhbHNlIGlu
IGV2ZW50IGhhbmRsZXIgbXVzdCBub3QgY2FuY2VsIEN1c3RvbUV2ZW50IG9mIHR5cGUgYmVmb3Jl
dW5sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZS1zeW5jIHRlc3Qgd2l0aCB1cHN0cmVhbS4gVGhlIHJlYXNvbiB3ZSBmYWlsIG9uZSBvZiB0aGUg
MiBuZXcgY2hlY2tzIGlzIGJlY2F1c2Ugd2UgZG8KKyAgICAgICAgbm90IHN1cHBvcnQgY3JlYXRl
RXZlbnQoImJlZm9yZXVubG9hZCIpLCB3aGljaCBpcyBsaWtlbHkgZmluZToKKyAgICAgICAgLSBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2RvbS9pc3N1ZXMvMzYyCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL3VubG9hZGluZy1k
b2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi91bmxvYWRp
bmctZG9jdW1lbnRzL2JlZm9yZXVubG9hZC1jYW5jZWxpbmcuaHRtbDoKKwogMjAxNy0wMy0xOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzZWxm
Lm9yaWdpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRvY3VtZW50
cy9iZWZvcmV1bmxvYWQtY2FuY2VsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2Vi
L3VubG9hZGluZy1kb2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNlbGluZy1leHBlY3RlZC50eHQK
aW5kZXggMjk2YWYxYWI0MWIyZmFhYmIzYWQzMzY2NTY3ZjMzZmZmYmM1YjQ2Zi4uYTNjNzZjODdh
NGMwMTBhN2I4NTAwY2JlOTgxNzFkOWI2MDY3MDQzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRo
ZS13ZWIvdW5sb2FkaW5nLWRvY3VtZW50cy9iZWZvcmV1bmxvYWQtY2FuY2VsaW5nLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi91bmxvYWRpbmctZG9jdW1lbnRzL2JlZm9yZXVu
bG9hZC1jYW5jZWxpbmctZXhwZWN0ZWQudHh0CkBAIC0xMSw2ICsxMSw4IEBAIENPTkZJUk0gTkFW
SUdBVElPTjogZm9vCiAKIFBBU1MgUmV0dXJuaW5nIGEgc3RyaW5nIG11c3Qgbm90IGNhbmNlbCB0
aGUgZXZlbnQ6IEN1c3RvbUV2ZW50LCBub24tY2FuY2VsYWJsZSAKIFBBU1MgUmV0dXJuaW5nIGEg
c3RyaW5nIG11c3Qgbm90IGNhbmNlbCB0aGUgZXZlbnQ6IEN1c3RvbUV2ZW50LCBjYW5jZWxhYmxl
IAorUEFTUyBSZXR1cm5pbmcgZmFsc2UgbXVzdCBub3QgY2FuY2VsIHRoZSBldmVudCwgYmVjYXVz
ZSBpdCdzIGNvZXJjZWQgdG8gdGhlIERPTVN0cmluZyAiZmFsc2UiIHdoaWNoIGRvZXMgbm90IGNh
bmNlbCBDdXN0b21FdmVudHM6IEN1c3RvbUV2ZW50LCBjYW5jZWxhYmxlIAorRkFJTCBSZXR1cm5p
bmcgYSBzdHJpbmcgbXVzdCBub3QgY2FuY2VsIHRoZSBldmVudDogQmVmb3JlVW5sb2FkRXZlbnQg
d2l0aCB0eXBlICJjbGljayIsIGNhbmNlbGFibGUgVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9y
dGVkLgogUEFTUyBSZXR1cm5pbmcgbnVsbCB3aXRoIGEgcmVhbCBpZnJhbWUgdW5sb2FkaW5nIAog
UEFTUyBSZXR1cm5pbmcgdW5kZWZpbmVkIHdpdGggYSByZWFsIGlmcmFtZSB1bmxvYWRpbmcgCiBQ
QVNTIFJldHVybmluZyAgd2l0aCBhIHJlYWwgaWZyYW1lIHVubG9hZGluZyAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9icm93c2luZy10aGUtd2ViL3VubG9hZGluZy1kb2N1bWVudHMvYmVmb3JldW5sb2FkLWNhbmNl
bGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRvY3VtZW50cy9iZWZvcmV1
bmxvYWQtY2FuY2VsaW5nLmh0bWwKaW5kZXggYjQxNWFjMmEzOWMxOTY1MDA4N2QxMzJlYjVhYTdm
YTU0MDA3MTkzNC4uNTEwMmQxZjgwMjllMzkxODlmYWZkMTI0MWJjOWZhNjgzNjY0NWE0MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRvY3VtZW50cy9iZWZvcmV1bmxv
YWQtY2FuY2VsaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRvY3Vt
ZW50cy9iZWZvcmV1bmxvYWQtY2FuY2VsaW5nLmh0bWwKQEAgLTExLDQ0ICsxMSw4MyBAQAogPHNj
cmlwdD4KICJ1c2Ugc3RyaWN0IjsKIAotYXN5bmNfdGVzdCh0ID0+IHsKK3Byb21pc2VfdGVzdCh0
ID0+IHsKICAgbGV0IG9uYmVmb3JldW5sb2FkSGFwcGVuZWQgPSBmYWxzZTsKICAgd2luZG93Lm9u
YmVmb3JldW5sb2FkID0gdC5zdGVwX2Z1bmMoKCkgPT4gewogICAgIG9uYmVmb3JldW5sb2FkSGFw
cGVuZWQgPSB0cnVlOwogICAgIHJldHVybiAiY2FuY2VsIG1lIjsKICAgfSk7CiAKLSAgY29uc3Qg
bGlzdGVuZXIgPSB0LnN0ZXBfZnVuYyhlID0+IHsKKyAgY29uc3QgZXZlbnRXYXRjaGVyID0gbmV3
IEV2ZW50V2F0Y2hlcih0LCB3aW5kb3csICJiZWZvcmV1bmxvYWQiKTsKKyAgY29uc3QgcHJvbWlz
ZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigiYmVmb3JldW5sb2FkIikudGhlbihlID0+IHsKICAg
ICBhc3NlcnRfdHJ1ZShvbmJlZm9yZXVubG9hZEhhcHBlbmVkLCAiQ3VzdG9tRXZlbnQgbXVzdCBi
ZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGV2ZW50IGhhbmRsZXIiKTsKICAgICBhc3NlcnRfZmFsc2Uo
ZS5kZWZhdWx0UHJldmVudGVkLCAiVGhlIGV2ZW50IG11c3Qgbm90IGhhdmUgYmVlbiBjYW5jZWxl
ZCIpOwogICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7Ci0gICAgdC5kb25lKCk7CiAg
IH0pOwogCi0gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLCBsaXN0ZW5l
cik7Ci0KICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJiZWZvcmV1bmxv
YWQiKSk7CisKKyAgcmV0dXJuIHByb21pc2U7CiB9LCAiUmV0dXJuaW5nIGEgc3RyaW5nIG11c3Qg
bm90IGNhbmNlbCB0aGUgZXZlbnQ6IEN1c3RvbUV2ZW50LCBub24tY2FuY2VsYWJsZSIpOwogCi1h
c3luY190ZXN0KHQgPT4geworcHJvbWlzZV90ZXN0KHQgPT4gewogICBsZXQgb25iZWZvcmV1bmxv
YWRIYXBwZW5lZCA9IGZhbHNlOwogICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSB0LnN0ZXBfZnVu
YygoKSA9PiB7CiAgICAgb25iZWZvcmV1bmxvYWRIYXBwZW5lZCA9IHRydWU7CiAgICAgcmV0dXJu
ICJjYW5jZWwgbWUiOwogICB9KTsKIAotICBjb25zdCBsaXN0ZW5lciA9IHQuc3RlcF9mdW5jKGUg
PT4geworICBjb25zdCBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIHdpbmRvdywg
ImJlZm9yZXVubG9hZCIpOworICBjb25zdCBwcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRfZm9y
KCJiZWZvcmV1bmxvYWQiKS50aGVuKGUgPT4gewogICAgIGFzc2VydF90cnVlKG9uYmVmb3JldW5s
b2FkSGFwcGVuZWQsICJDdXN0b21FdmVudCBtdXN0IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgZXZl
bnQgaGFuZGxlciIpOwogICAgIGFzc2VydF9mYWxzZShlLmRlZmF1bHRQcmV2ZW50ZWQsICJUaGUg
ZXZlbnQgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbmNlbGVkIik7CiAgICAgd2luZG93Lm9uYmVmb3Jl
dW5sb2FkID0gbnVsbDsKICAgICB0LmRvbmUoKTsKICAgfSk7CiAKLSAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsIGxpc3RlbmVyKTsKLQogICB3aW5kb3cuZGlzcGF0Y2hF
dmVudChuZXcgQ3VzdG9tRXZlbnQoImJlZm9yZXVubG9hZCIsIHsgY2FuY2VsYWJsZTogdHJ1ZSB9
KSk7CisKKyAgcmV0dXJuIHByb21pc2U7CiB9LCAiUmV0dXJuaW5nIGEgc3RyaW5nIG11c3Qgbm90
IGNhbmNlbCB0aGUgZXZlbnQ6IEN1c3RvbUV2ZW50LCBjYW5jZWxhYmxlIik7CiAKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgbGV0IG9uYmVmb3JldW5sb2FkSGFwcGVuZWQgPSBmYWxzZTsKKyAgd2lu
ZG93Lm9uYmVmb3JldW5sb2FkID0gdC5zdGVwX2Z1bmMoKCkgPT4geworICAgIG9uYmVmb3JldW5s
b2FkSGFwcGVuZWQgPSB0cnVlOworICAgIHJldHVybiBmYWxzZTsKKyAgfSk7CisKKyAgY29uc3Qg
ZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCB3aW5kb3csICJiZWZvcmV1bmxvYWQi
KTsKKyAgY29uc3QgcHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigiYmVmb3JldW5sb2Fk
IikudGhlbihlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShvbmJlZm9yZXVubG9hZEhhcHBlbmVkLCAi
Q3VzdG9tRXZlbnQgbXVzdCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGV2ZW50IGhhbmRsZXIiKTsK
KyAgICBhc3NlcnRfZmFsc2UoZS5kZWZhdWx0UHJldmVudGVkLCAiVGhlIGV2ZW50IG11c3Qgbm90
IGhhdmUgYmVlbiBjYW5jZWxlZCIpOworICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7
CisgICAgdC5kb25lKCk7CisgIH0pOworCisgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0
b21FdmVudCgiYmVmb3JldW5sb2FkIiwgeyBjYW5jZWxhYmxlOiB0cnVlIH0pKTsKKworICByZXR1
cm4gcHJvbWlzZTsKK30sICJSZXR1cm5pbmcgZmFsc2UgbXVzdCBub3QgY2FuY2VsIHRoZSBldmVu
dCwgYmVjYXVzZSBpdCdzIGNvZXJjZWQgdG8gdGhlIERPTVN0cmluZyBcImZhbHNlXCIgd2hpY2gg
ZG9lcyBub3QgY2FuY2VsICIgKworICAgIkN1c3RvbUV2ZW50czogQ3VzdG9tRXZlbnQsIGNhbmNl
bGFibGUiKTsKKworLy8gVGhpcyB0ZXN0IGNhbiBiZSByZW1vdmVkIGlmIHdlIHVwZGF0ZSB0aGUg
RE9NIFN0YW5kYXJkIHRvIGRpc2FsbG93IGNyZWF0ZUV2ZW50KCJCZWZvcmVVbmxvYWRFdmVudCIp
LiBCcm93c2VyIHN1cHBvcnQKKy8vIGlzIGluY29uc2lzdGVudC4gaHR0cHM6Ly9naXRodWIuY29t
L3doYXR3Zy9kb20vaXNzdWVzLzM2MgorcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBldmVu
dFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIHdpbmRvdywgImNsaWNrIik7CisgIGNvbnN0
IHByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoImNsaWNrIikudGhlbihlID0+IHsKKyAg
ICBhc3NlcnRfZmFsc2UoZS5kZWZhdWx0UHJldmVudGVkLCAiVGhlIGV2ZW50IG11c3Qgbm90IGhh
dmUgYmVlbiBjYW5jZWxlZCIpOworICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7Cisg
ICAgdC5kb25lKCk7CisgIH0pOworCisgIGNvbnN0IGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
IkJlZm9yZVVubG9hZEV2ZW50Iik7CisgIGV2LmluaXRFdmVudCgiY2xpY2siLCBmYWxzZSwgdHJ1
ZSk7CisgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2KTsKKworICByZXR1cm4gcHJvbWlzZTsKK30s
ICJSZXR1cm5pbmcgYSBzdHJpbmcgbXVzdCBub3QgY2FuY2VsIHRoZSBldmVudDogQmVmb3JlVW5s
b2FkRXZlbnQgd2l0aCB0eXBlIFwiY2xpY2tcIiwgY2FuY2VsYWJsZSIpOworCiBjb25zdCB0ZXN0
Q2FzZXMgPSBbCiAgIHsKICAgICB2YWx1ZVRvUmV0dXJuOiBudWxsLAo=
</data>
<flag name="review"
          id="326437"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>