<?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>191164</bug_id>
          
          <creation_ts>2018-11-01 12:24:24 -0700</creation_ts>
          <short_desc>Caret disappears at end of password field when caps lock indicator is shown; password field not scrolled when caps lock indicator is shown</short_desc>
          <delta_ts>2018-11-26 14:15:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>data:text/html,%20&lt;input%20type=&quot;password&quot;%20style=&quot;width:50px&quot;&gt;</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>191968</dependson>
          <blocked>190571</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1474221</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-01 12:24:24 -0700</bug_when>
    <thetext>Note you will need a build of WebKit with the fix for bug #190056 (if it has not already landed) to reproduce in a WebKit2 app, such as Safari. Alternatively, you can reproduce using ToT WebKit using a WebKit1 app (say, via MiniBrowser).

Perform the following:

1. Visit &lt;data:text/html,%20&lt;input%20type=&quot;password&quot;%20style=&quot;width:50px&quot;&gt;&gt;.
2. Focus the password field and type enough characters to fill the field.
3. Press the caps lock key on the keyboard.

Then the caret will no longer be visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474224</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-01 12:25:21 -0700</bug_when>
    <thetext>We do not seem to auto scroll the password field when the caps lock indicator is shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474227</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-01 12:32:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/45738179&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474678</commentid>
    <comment_count>3</comment_count>
      <attachid>353744</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-02 16:48:21 -0700</bug_when>
    <thetext>Created attachment 353744
For for Mac, but does not fix caret on iOS :(

Attached patch that fixes this issue on Mac. For some reason it does not fix the issue on iOS. Keep in mind that the bad behavior on iOS is that the caret is drawn at the wrong position whereas on Mac the &quot;caret disappears&quot;. The different in bad behavior is due to the fact that the caret on iOS is painted by UIKit on top of the WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481578</commentid>
    <comment_count>4</comment_count>
      <attachid>355651</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-26 10:32:09 -0800</bug_when>
    <thetext>Created attachment 355651
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481579</commentid>
    <comment_count>5</comment_count>
      <attachid>355651</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-26 10:32:53 -0800</bug_when>
    <thetext>Comment on attachment 355651
Patch and layout test

Patch will not apply to trunk as it depends on the patch for bug #191968.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481616</commentid>
    <comment_count>6</comment_count>
      <attachid>355651</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-26 12:00:01 -0800</bug_when>
    <thetext>Comment on attachment 355651
Patch and layout test

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

&gt; Source/WebCore/editing/FrameSelection.h:162
&gt; +    void setNeedsSelectionUpdate(bool forceRevealSelection = false);

Suggestion: declare an enum class RevealSelection { NotForced, Forced }; and use that as the parameter.

&gt; Source/WebCore/rendering/RenderTextControlSingleLine.cpp:219
&gt; +        frame().selection().setNeedsSelectionUpdate(true /* forceRevealSelection */);

... that way you don&apos;t need this comment.

&gt; LayoutTests/fast/forms/password-scrolled-after-caps-lock-toggled.html:45
&gt; +function runNextTest()
&gt; +{
&gt; +    if (currentTest &gt;= tests.length) {
&gt; +        done();
&gt; +        return;
&gt; +    }
&gt; +    tests[currentTest++]();
&gt; +}

Suggestion: declare const tests = [
function testFocusedEmptyFieldIsNotScrolled() { ... },
function testFieldDidNotScrollAfterTyping() { ... },
...
];

Then you just need
function runTests() {
  tests.forEach(t =&gt; { t(); });
  done();
}

Saves the nested stack in runNextTest() as well as all the calls to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481642</commentid>
    <comment_count>7</comment_count>
      <attachid>355651</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-26 12:51:13 -0800</bug_when>
    <thetext>Comment on attachment 355651
Patch and layout test

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

&gt;&gt; Source/WebCore/editing/FrameSelection.h:162
&gt;&gt; +    void setNeedsSelectionUpdate(bool forceRevealSelection = false);
&gt; 
&gt; Suggestion: declare an enum class RevealSelection { NotForced, Forced }; and use that as the parameter.

Will update the patch based on your suggestion before landing.

For completeness, I thought about adding such an enum when writing this patch. I chose not to since there is exactly one caller that passes forceRevealSelection := true. Maybe in the future there will be more such callers. Regardless, will switch to using an enum instead of a boolean.

&gt;&gt; LayoutTests/fast/forms/password-scrolled-after-caps-lock-toggled.html:45
&gt;&gt; +}
&gt; 
&gt; Suggestion: declare const tests = [
&gt; function testFocusedEmptyFieldIsNotScrolled() { ... },
&gt; function testFieldDidNotScrollAfterTyping() { ... },
&gt; ...
&gt; ];
&gt; 
&gt; Then you just need
&gt; function runTests() {
&gt;   tests.forEach(t =&gt; { t(); });
&gt;   done();
&gt; }
&gt; 
&gt; Saves the nested stack in runNextTest() as well as all the calls to it.

This structure assumes that each test executes synchronously such that once we return from the call to t_i() we can call t_{i + 1}(), ..., t_N(). This is not case for most of these sub-tests. We typically need to wait for DOM event to be dispatched before we can move on to the next test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481685</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-26 14:15:24 -0800</bug_when>
    <thetext>Committed r238522: &lt;https://trac.webkit.org/changeset/238522&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353744</attachid>
            <date>2018-11-02 16:48:21 -0700</date>
            <delta_ts>2018-11-26 10:32:06 -0800</delta_ts>
            <desc>For for Mac, but does not fix caret on iOS :(</desc>
            <filename>FixForMacNotiOS.diff</filename>
            <type>text/plain</type>
            <size>614</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDQwMGM4ZTMyNDAy
Li5hMDgyMjJhYmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC0yMTI3LDYgKzIxMjcsOCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJgogdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKQogewogICAgIG1faW5w
dXRUeXBlLT5jYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKKyAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5yZXZl
YWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355651</attachid>
            <date>2018-11-26 10:32:09 -0800</date>
            <delta_ts>2018-11-26 12:00:01 -0800</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-191164-20181126103208.patch</filename>
            <type>text/plain</type>
            <size>16811</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTlkN2EwY2I5YTRkNTI0
MmY4NTliOGIyMmY4YWZjMzZhZDgwMzIwOS4uZjdhYzdiYmU3YTNhN2JkN2YxNjFhODVmNTc2Yjhk
ZDc1YzM0Zjk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTExLTI2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDYXJldCBkaXNhcHBlYXJz
IGF0IGVuZCBvZiBwYXNzd29yZCBmaWVsZCB3aGVuIGNhcHMgbG9jayBpbmRpY2F0b3IgaXMgc2hv
d247IHBhc3N3b3JkIGZpZWxkCisgICAgICAgIG5vdCBzY3JvbGxlZCB3aGVuIGNhcHMgbG9jayBp
bmRpY2F0b3IgaXMgc2hvd24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTE2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU3MzgxNzk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgYW4gaXNz
dWUgd2hlcmUgdGhlIGNhcmV0IG1heSBiZSBvY2NsdWRlZCBieS0gb3IgcGFpbnQgb24gdG9wIG9m
LSB0aGUgY2FwcyBsb2NrIGluZGljYXRvciBvbgorICAgICAgICBNYWMgYW5kIGlPUywgcmVzcGVj
dGl2ZWx5LgorCisgICAgICAgIElmIHRoZXJlIGhhcyBub3QgYmVlbiBhIHByZXZpb3VzIHNlbGVj
dGlvbiBpbiBhIGZvY3VzZWQgcGFzc3dvcmQgZmllbGQsIGluY2x1ZGluZyBhIGNhcmV0CisgICAg
ICAgIHNlbGVjdGlvbiBtYWRlIGJ5IHByZXNzaW5nIHRoZSBhcnJvdyBrZXlzLCB0aGVuIHdlIG5l
dmVyIHNjcm9sbCB0aGUgcGFzc3dvcmQgZmllbGQgdG8gcmV2ZWFsCisgICAgICAgIHRoZSBjdXJy
ZW50IHNlbGVjdGlvbiB3aGVuIHRoZSBjYXBzIGxvY2sgaW5kaWNhdG9yIGlzIG1hZGUgdmlzaWJs
ZS4gV2hlbiB0aGUgY2FwcyBsb2NrIGluZGljYXRvcgorICAgICAgICBpcyBtYWRlIHZpc2libGUg
b3IgaGlkZGVuIHRoZSBzaXplIG9mIHRoZSBpbm5lciB0ZXh0IHJlbmRlcmVyIGNoYW5nZXMgYXMg
aXQgc2hyaW5rcyBvciBleHBhbmRzCisgICAgICAgIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSBjYXBz
IGxvY2sgaW5kaWNhdG9yIG9yIHRvIGZpbGwgdGhlIHZvaWQgb2YgdGhlIG5vdyBoaWRkZW4gY2Fw
cyBsb2NrIGluZGljYXRvciwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LiBXZSBzaG91bGQgZGV0ZWN0
IHN1Y2ggc2l6ZSBjaGFuZ2VzIGFuZCBzY2hlZHVsZSBhbiB1cGRhdGUgYW5kIHJldmVhbCBvZiB0
aGUgY3VycmVudAorICAgICAgICBzZWxlY3Rpb24gYWZ0ZXIgbGF5b3V0LgorCisgICAgICAgIFRl
c3Q6IGZhc3QvZm9ybXMvcGFzc3dvcmQtc2Nyb2xsZWQtYWZ0ZXItY2Fwcy1sb2NrLXRvZ2dsZWQu
aHRtbAorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0TmVlZHNTZWxlY3Rpb25VcGRhdGUpOiBNb2RpZmll
ZCB0byB0YWtlIGEgYm9vbGVhbiwgZm9yY2VSZXZlYWxTZWxlY3Rpb24sCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBjdXJyZW50IHNlbGVjdGlvbiByZXZlYWwgbW9kZSBmb3IgdGhlIG5leHQgdXBk
YXRlLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0KTogU2NoZWR1bGUgcG9zdC1sYXlv
dXQgYSBzZWxlY3Rpb24gdXBkYXRlIHRoYXQKKyAgICAgICAgcmV2ZWFscyB0aGUgY3VycmVudCBz
ZWxlY3Rpb24uIFdlIHBhc3MgZm9yY2VSZXZlYWxTZWxlY3Rpb24gOj0gdHJ1ZSB0byBlbnN1cmUg
dGhhdCB0aGUgc2NoZWR1bGVkCisgICAgICAgIHNlbGVjdGlvbiB1cGRhdGUgc2Nyb2xscyB0byB0
aGUgcmV2ZWFsIHRoZSBjdXJyZW50IHNlbGVjdGlvbiByZWdhcmRsZXNzIG9mIHNlbGVjdGlvbiBy
ZXZlYWwgbW9kZS4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0eXBpbmcgaW50
byBhIHBhc3N3b3JkIGZpZWxkIGRvZXMgbm90IGNoYW5nZSB0aGUgY3VycmVudCBzZWxlY3Rpb24g
cmV2ZWFsIG1vZGUuCisKIDIwMTgtMTEtMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBsYWNlaG9sZGVyIHRleHQgaXMgbm90IHJlcGFpbnRlZCBhZnRlciBj
YXBzIGxvY2sgaW5kaWNhdG9yIGlzIGhpZGRlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcAppbmRleCA0MjRlMzJlOWFlOTcwZWZhNzFkOTU2YTRjNGM4OTgzOTI3MzQx
MzZmLi45Nzg3N2ZlMzYxNTRhNDdjNWU4ZWVkODU0ZWFmMmYyMWQ1Yjc5N2Q3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtNDAzLDkgKzQwMywxMSBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25CeVVwZGF0aW5nTGF5b3V0T3JTdHlsZShGcmFtZSYg
ZnJhbWUpCiAjZW5kaWYKIH0KIAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0TmVlZHNTZWxlY3Rp
b25VcGRhdGUoKQordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0TmVlZHNTZWxlY3Rpb25VcGRhdGUo
Ym9vbCBmb3JjZVJldmVhbFNlbGVjdGlvbikKIHsKICAgICBtX3NlbGVjdGlvblJldmVhbEludGVu
dCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCk7CisgICAgaWYgKGZvcmNlUmV2ZWFsU2VsZWN0
aW9uKQorICAgICAgICBtX3NlbGVjdGlvblJldmVhbE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWw7CiAgICAgbV9wZW5kaW5nU2VsZWN0aW9uVXBkYXRlID0gdHJ1ZTsKICAgICBpZiAo
UmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICB2
aWV3LT5zZWxlY3Rpb24oKS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oCmluZGV4IDZkNzUyZGYxMTkzMjkwN2QyMzA4ZTE5MTNkZTA4MThhM2M3OGMxMTMuLmJm
MGQ0ZjA1MTM3NGFkY2M5ZWI5MzkxZTlmNmEwNjRhOTkwODdhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHVwZGF0ZUFwcGVhcmFuY2VBZnRlckxheW91dCgpOwogICAgIHZvaWQgc2NoZWR1bGVB
cHBlYXJhbmNlVXBkYXRlQWZ0ZXJTdHlsZUNoYW5nZSgpOwotICAgIHZvaWQgc2V0TmVlZHNTZWxl
Y3Rpb25VcGRhdGUoKTsKKyAgICB2b2lkIHNldE5lZWRzU2VsZWN0aW9uVXBkYXRlKGJvb2wgZm9y
Y2VSZXZlYWxTZWxlY3Rpb24gPSBmYWxzZSk7CiAKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IExh
eW91dFBvaW50JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggNGUyMzc1ZjlkMjlmOWJk
MDNiZGFkMmQxY2VkZTNjNjU5N2QzNzQ0OS4uMGQ0ZmI5ZjE5OTY5ZDE2N2JiNWY5ZjJiYjI2NjZh
NDZiODY4MzA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTExMCw4ICsxMTAsOSBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0KCkKICAgICByZXNldE92ZXJyaWRkZW5I
ZWlnaHQoaW5uZXJCbG9ja1JlbmRlcmVyLCB0aGlzKTsKICAgICByZXNldE92ZXJyaWRkZW5IZWln
aHQoY29udGFpbmVyUmVuZGVyZXIsIHRoaXMpOwogCi0gICAgLy8gU2F2ZSB0aGUgb2xkIHNpemUg
b2YgdGhlIGlubmVyIHRleHQgKGlmIHdlIGhhdmUgb25lKSBhcyB3ZSB3aWxsIG5lZWQgdG8gbGF5
b3V0IHRoZSBwbGFjZWhvbGRlciBpZgotICAgIC8vIGl0IGNoYW5nZXMgdG8ga2VlcCB0aGUgc2l6
ZSBvZiB0aGUgcGxhY2Vob2xkZXIgcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBpbm5l
ciB0ZXh0LgorICAgIC8vIFNhdmUgdGhlIG9sZCBzaXplIG9mIHRoZSBpbm5lciB0ZXh0IChpZiB3
ZSBoYXZlIG9uZSkgYXMgd2Ugd2lsbCBuZWVkIHRvIGxheW91dCB0aGUgcGxhY2Vob2xkZXIKKyAg
ICAvLyBhbmQgdXBkYXRlIHNlbGVjdGlvbiBpZiBpdCBjaGFuZ2VzLiBPbmUgd2F5IHRoZSBzaXpl
IG1heSBjaGFuZ2UgaXMgaWYgdGV4dCBkZWNvcmF0aW9ucyBhcmUKKyAgICAvLyB0b2dnbGVkLiBG
b3IgZXhhbXBsZSwgaGlkaW5nIGFuZCBzaG93aW5nIHRoZSBjYXBzIGxvY2sgaW5kaWNhdG9yIHdp
bGwgY2F1c2UgYSBzaXplIGNoYW5nZS4KICAgICBMYXlvdXRTaXplIG9sZElubmVyVGV4dFNpemU7
CiAgICAgaWYgKGlubmVyVGV4dFJlbmRlcmVyKQogICAgICAgICBvbGRJbm5lclRleHRTaXplID0g
aW5uZXJUZXh0UmVuZGVyZXItPnNpemUoKTsKQEAgLTE3MCw2ICsxNzEsOCBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0KCkKICAgICBlbHNlIGlmIChjb250YWluZXIg
JiYgY29udGFpbmVyUmVuZGVyZXIgJiYgY29udGFpbmVyUmVuZGVyZXItPmhlaWdodCgpICE9IGNv
bnRlbnRMb2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgIGNlbnRlclJlbmRlcmVyKCpjb250YWluZXJS
ZW5kZXJlcik7CiAKKyAgICBib29sIGlubmVyVGV4dFNpemVDaGFuZ2VkID0gaW5uZXJUZXh0UmVu
ZGVyZXIgJiYgaW5uZXJUZXh0UmVuZGVyZXItPnNpemUoKSAhPSBvbGRJbm5lclRleHRTaXplOwor
CiAgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCA9IGlucHV0RWxlbWVudCgpLnBs
YWNlaG9sZGVyRWxlbWVudCgpOwogICAgIGlmIChSZW5kZXJCb3gqIHBsYWNlaG9sZGVyQm94ID0g
cGxhY2Vob2xkZXJFbGVtZW50ID8gcGxhY2Vob2xkZXJFbGVtZW50LT5yZW5kZXJCb3goKSA6IDAp
IHsKICAgICAgICAgTGF5b3V0U2l6ZSBpbm5lclRleHRTaXplOwpAQCAtMTc5LDcgKzE4Miw3IEBA
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQoKQogICAgICAgICBwbGFj
ZWhvbGRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChpbm5lclRleHRTaXpl
LmhlaWdodCgpIC0gcGxhY2Vob2xkZXJCb3gtPnZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVu
dCgpLCBGaXhlZCkpOwogICAgICAgICBib29sIG5lZWRlZExheW91dCA9IHBsYWNlaG9sZGVyQm94
LT5uZWVkc0xheW91dCgpOwogICAgICAgICBib29sIHBsYWNlaG9sZGVyQm94SGFkTGF5b3V0ID0g
cGxhY2Vob2xkZXJCb3gtPmV2ZXJIYWRMYXlvdXQoKTsKLSAgICAgICAgaWYgKGlubmVyVGV4dFNp
emUgIT0gb2xkSW5uZXJUZXh0U2l6ZSkgeworICAgICAgICBpZiAoaW5uZXJUZXh0U2l6ZUNoYW5n
ZWQpIHsKICAgICAgICAgICAgIC8vIFRoZSBjYXBzIGxvY2sgaW5kaWNhdG9yIHdhcyBoaWRkZW4u
IExheW91dCB0aGUgcGxhY2Vob2xkZXIuIEl0cyBsYXlvdXQgZG9lcyBub3QgYWZmZWN0IGl0cyBw
YXJlbnQuCiAgICAgICAgICAgICBwbGFjZWhvbGRlckJveC0+c2V0Q2hpbGROZWVkc0xheW91dChN
YXJrT25seVRoaXMpOwogICAgICAgICB9CkBAIC0yMDksNiArMjEyLDEyIEBAIHZvaWQgUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQoKQogICAgIGlmIChpbnB1dEVsZW1lbnQoKS5p
c1NlYXJjaEZpZWxkKCkpCiAgICAgICAgIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRl
clJhZGl1cyhtdXRhYmxlU3R5bGUoKSwgKnRoaXMpOwogI2VuZGlmCisgICAgaWYgKGlubmVyVGV4
dFNpemVDaGFuZ2VkKSB7CisgICAgICAgIC8vIFRoZSBjYXBzIGxvY2sgaW5kaWNhdG9yIHdhcyBo
aWRkZW4gb3Igc2hvd24uIElmIGl0IGlzIG5vdyB2aXNpYmxlIHRoZW4gaXQgbWF5IGJlIG9jY2x1
ZGluZworICAgICAgICAvLyB0aGUgY3VycmVudCBzZWxlY3Rpb24gKHNheSwgdGhlIGNhcmV0IHdh
cyBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgZmllbGQpLgorICAgICAgICAv
LyBTY2hlZHVsZSBhbiB1cGRhdGUgYW5kIHJldmVhbCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24u
CisgICAgICAgIGZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0TmVlZHNTZWxlY3Rpb25VcGRhdGUodHJ1
ZSAvKiBmb3JjZVJldmVhbFNlbGVjdGlvbiAqLyk7CisgICAgfQogfQogCiBib29sIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NTg4YWI5NzAxM2M2ODcyNjcwZWIz
ZjZjYWRjNzc5ZWZhY2RhNzQxLi40OTk0ZTY2YzkzMTE3NmJkODNhOTIzMWFiOTJlZDY4NGRmZmQz
MDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTEtMjYgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIENhcmV0IGRpc2FwcGVhcnMgYXQgZW5kIG9mIHBh
c3N3b3JkIGZpZWxkIHdoZW4gY2FwcyBsb2NrIGluZGljYXRvciBpcyBzaG93bjsgcGFzc3dvcmQg
ZmllbGQKKyAgICAgICAgbm90IHNjcm9sbGVkIHdoZW4gY2FwcyBsb2NrIGluZGljYXRvciBpcyBz
aG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
MTY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTczODE3OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB0aGF0
IHdlIHNjcm9sbCB0aGUgcGFzc3dvcmQgZmllbGQgd2hlbiBjYXBzIGxvY2sgaXMgdG9nZ2xlZC4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGhlIHRlc3Qgb24gYWxsIHBsYXRm
b3JtcyBhcyB3ZSBvbmx5IHN1cHBvcnQgdG9nZ2xpbmcgQ2FwcyBMb2NrIGluCisgICAgICAgIFdl
YktpdDIgb24gTWFjIGF0IHRoZSBtb21lbnQuCisgICAgICAgICogZmFzdC9mb3Jtcy9wYXNzd29y
ZC1zY3JvbGxlZC1hZnRlci1jYXBzLWxvY2stdG9nZ2xlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvcGFzc3dvcmQtc2Nyb2xsZWQtYWZ0ZXItY2Fwcy1sb2NrLXRv
Z2dsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zOiBNYXJrIHRoZSB0ZXN0IGFzIFBBU1Mgc28gdGhhdCB3ZSBydW4gaXQuCisKIDIwMTgt
MTEtMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYWNl
aG9sZGVyIHRleHQgaXMgbm90IHJlcGFpbnRlZCBhZnRlciBjYXBzIGxvY2sgaW5kaWNhdG9yIGlz
IGhpZGRlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMDQyY2Q2ZDU4NmRiZmEzMTkxMDJlYzVkNTFk
MWY1NGMwNzcwZGQ3Mi4uZGFhODY4YTMwNTVhZDg4MWUwNTRhYTJiNWM5NDEyMmJiNjIxODY4NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCkBAIC00MDAsNiArNDAwLDcgQEAgZmFzdC9taXNjL3ZhbGlkLXBy
aW1hcnktc2NyZWVuLWRpc3BsYXlJRC5odG1sIFsgU2tpcCBdCiAKIGZhc3QvZXZlbnRzL2RldGVj
dC1jYXBzLWxvY2suaHRtbCBbIFNraXAgXQogZmFzdC9yZXBhaW50L3BsYWNlaG9sZGVyLWFmdGVy
LWNhcHMtbG9jay1oaWRkZW4uaHRtbCBbIFNraXAgXQorZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3Jv
bGxlZC1hZnRlci1jYXBzLWxvY2stdG9nZ2xlZC5odG1sIFsgU2tpcCBdCiAKICMgVGhpcyB0ZXN0
IGN1cnJlbnRseSBvbmx5IHdvcmtzIGZvciBtYWMtd2syCiBmYXN0L2V2ZW50cy9pbmFjdGl2ZS13
aW5kb3ctbm8tbW91c2UtZXZlbnQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3JvbGxlZC1hZnRlci1jYXBzLWxvY2stdG9nZ2xlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3N3b3JkLXNjcm9sbGVkLWFm
dGVyLWNhcHMtbG9jay10b2dnbGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2JmNTE1OTIz
MmI5NTFmNGJiNmE1OTlhNGFhMzE2ZGMzNWM4YjZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3JvbGxlZC1hZnRlci1jYXBzLWxvY2stdG9nZ2xl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NCBAQAorVGVzdHMgdGhhdCB0aGUgcGFzc3dvcmQg
ZmllbGQgaXMgc2Nyb2xsZWQgd2hlbiB0aGUgY2FwcyBsb2NrIGluZGljYXRvciBpcyB0b2dnbGVk
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2FzZSAxOiBFbXB0eSBmaWVsZDoK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2Nyb2xsTGVmdCBpcyAwCisK
K0FmdGVyIGNhcHMgbG9jayBlbmFibGVkOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXQnKS5zY3JvbGxMZWZ0IGlzIDAKKworQWZ0ZXIgY2FwcyBsb2NrIGRpc2FibGVkOgorUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0IGlzIDAKKworQ2Fz
ZSAyOiBBZnRlciB0eXBpbmcgaW50byBmaWVsZDoKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2lucHV0Jykuc2Nyb2xsTGVmdCBpcyAwCisKK0FmdGVyIGNhcHMgbG9jayBlbmFibGVkOgor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0IGlzIG5vbi16
ZXJvLgorCitBZnRlciBjYXBzIGxvY2sgZGlzYWJsZWQ6CitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbnB1dCcpLnNjcm9sbExlZnQgaXMgMAorCitDYXNlIDM6IEFmdGVyIHNlbGVjdGlu
ZyB0aGUgZmlyc3QgMiBjaGFyYWN0ZXJzOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXQnKS5zY3JvbGxMZWZ0IGlzIDAKKworQWZ0ZXIgY2FwcyBsb2NrIGVuYWJsZWQ6CitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpLnNjcm9sbExlZnQgaXMgMAorCitBZnRl
ciBjYXBzIGxvY2sgZGlzYWJsZWQ6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1
dCcpLnNjcm9sbExlZnQgaXMgMAorCitDYXNlIDQ6IEFmdGVyIHNlbGVjdGluZyB0aGUgbGFzdCAy
IGNoYXJhY3RlcnM6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpLnNjcm9s
bExlZnQgaXMgMAorCitBZnRlciBjYXBzIGxvY2sgZW5hYmxlZDoKK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2Nyb2xsTGVmdCBpcyBub24temVyby4KKworQWZ0ZXIgY2Fw
cyBsb2NrIGRpc2FibGVkOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5z
Y3JvbGxMZWZ0IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3N3b3JkLXNj
cm9sbGVkLWFmdGVyLWNhcHMtbG9jay10b2dnbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Bhc3N3b3JkLXNjcm9sbGVkLWFmdGVyLWNhcHMtbG9jay10b2dnbGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2U2YzE3ZWI0MjFjMjE3Mjk0OGFjMWQ2ZTM0MTBjYmRkNjYyZjcyMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGFzc3dvcmQtc2Nyb2xsZWQtYWZ0ZXIt
Y2Fwcy1sb2NrLXRvZ2dsZWQuaHRtbApAQCAtMCwwICsxLDE3NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxTY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L1NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2xldCBp
bnB1dDsKK2xldCBudW1iZXJPZkNoYXJhY3RlcnNUb092ZXJmbG93RmllbGRXaGVuQ2Fwc0xvY2tT
aG93bjsKKworbGV0IHRlc3RzID0gWworICAgIC8vIFRlc3QgZm9yIGNhcmV0IHNlbGVjdGlvbgor
ICAgIC8vIEVtcHR5IGZpZWxkCisgICAgdGVzdEZvY3VzZWRFbXB0eUZpZWxkSXNOb3RTY3JvbGxl
ZCwKKyAgICB0ZXN0RmllbGREaWROb3RTY3JvbGxBZnRlckNhcHNMb2NrRW5hYmxlZCwKKyAgICB0
ZXN0RmllbGREaWROb3RTY3JvbGxBZnRlckNhcHNMb2NrRGlzYWJsZWQsCisKKyAgICAvLyBOb24t
ZW1wdHkgZmllbGQKKyAgICB0ZXN0RmllbGREaWROb3RTY3JvbGxBZnRlclR5cGluZywKKyAgICB0
ZXN0RmllbGREaWRTY3JvbGxBZnRlckNhcHNMb2NrRW5hYmxlZCwKKyAgICB0ZXN0RmllbGREaWRT
Y3JvbGxBZnRlckNhcHNMb2NrRGlzYWJsZWQsCisKKyAgICAvLyBUZXN0IGZvciByYW5nZSBzZWxl
Y3Rpb24KKyAgICAvLyBTZWxlY3QgdGhlIGZpcnN0IGZldyBjaGFyYWN0ZXJzCisgICAgdGVzdEZp
ZWxkRGlkTm90U2Nyb2xsQWZ0ZXJTZWxlY3RpbmdQcmVmaXgsCisgICAgdGVzdEZpZWxkRGlkTm90
U2Nyb2xsQWZ0ZXJDYXBzTG9ja0VuYWJsZWQsCisgICAgdGVzdEZpZWxkRGlkTm90U2Nyb2xsQWZ0
ZXJDYXBzTG9ja0Rpc2FibGVkLAorCisgICAgLy8gU2VsZWN0IHRoZSBsYXN0IGZldyBjaGFyYWN0
ZXJzCisgICAgdGVzdEZpZWxkRGlkTm90U2Nyb2xsQWZ0ZXJTZWxlY3RpbmdTdWZmaXgsCisgICAg
dGVzdEZpZWxkRGlkU2Nyb2xsQWZ0ZXJDYXBzTG9ja0VuYWJsZWQsCisgICAgdGVzdEZpZWxkRGlk
U2Nyb2xsQWZ0ZXJDYXBzTG9ja0Rpc2FibGVkLAorXTsKKworbGV0IGN1cnJlbnRUZXN0ID0gMDsK
KworZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQoreworICAgIGlmIChjdXJyZW50VGVzdCA+PSB0ZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHRlc3RzW2N1cnJlbnRUZXN0KytdKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IHJ1bk5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGb2N1c2VkRW1wdHlGaWVsZElzTm90
U2Nyb2xsZWQoKQoreworICAgIGRlYnVnKCJDYXNlIDE6IEVtcHR5IGZpZWxkOiIpOworICAgIGlu
cHV0LmZvY3VzKCk7CisgICAgc2hvdWxkQmVaZXJvKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXQnKS5zY3JvbGxMZWZ0Iik7CisgICAgcnVuTmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24g
dGVzdEZpZWxkRGlkTm90U2Nyb2xsQWZ0ZXJUeXBpbmcoKQoreworICAgIGZ1bmN0aW9uIGNoZWNr
RmllbGRGaWxsZWQoZXZlbnQpIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0
ID09PSBpbnB1dCk7CisgICAgICAgIGlmIChpbnB1dC52YWx1ZS5sZW5ndGggPCBudW1iZXJPZkNo
YXJhY3RlcnNUb092ZXJmbG93RmllbGRXaGVuQ2Fwc0xvY2tTaG93bikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaW5wdXQub25pbnB1dCA9IG51bGw7CisgICAgICAgIHNob3VsZEJlWmVy
bygiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2Nyb2xsTGVmdCIpOworICAgICAg
ICBydW5OZXh0VGVzdCgpOworICAgIH0KKyAgICBpbnB1dC5vbmlucHV0ID0gY2hlY2tGaWVsZEZp
bGxlZDsKKworICAgIGRlYnVnKCI8YnI+Q2FzZSAyOiBBZnRlciB0eXBpbmcgaW50byBmaWVsZDoi
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBudW1iZXJPZkNoYXJhY3RlcnNUb092ZXJmbG93RmllbGRXaGVuQ2Fwc0xvY2tTaG93bjsg
KytpKQorICAgICAgICAgICAgVUlIZWxwZXIua2V5RG93bigiYSIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gX3RvZ2dsZUNhcHNMb2NrV2l0aENhbGxiYWNrQW5kUnVuTmV4dFRlc3QoZXhwZWN0Q2Fw
c0xvY2tFbmFibGVkLCBjYWxsYmFjaykKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoaW50ZXJuYWxzLmNhcHNMb2NrSXNPbigpICE9IGV4cGVjdENh
cHNMb2NrRW5hYmxlZCk7CisgICAgbGV0IG5ld0NhcHNMb2NrU3RhdGVEaXNwbGF5TmFtZTsKKyAg
ICBsZXQgZXZlbnRUb0xpc3RlbkZvcjsKKyAgICBpZiAoZXhwZWN0Q2Fwc0xvY2tFbmFibGVkKSB7
CisgICAgICAgIG5ld0NhcHNMb2NrU3RhdGVEaXNwbGF5TmFtZSA9ICJlbmFibGVkIjsKKyAgICAg
ICAgZXZlbnRUb0xpc3RlbkZvciA9ICJrZXlkb3duIjsKKyAgICB9IGVsc2UgeworICAgICAgICBu
ZXdDYXBzTG9ja1N0YXRlRGlzcGxheU5hbWUgPSAiZGlzYWJsZWQiOworICAgICAgICBldmVudFRv
TGlzdGVuRm9yID0gImtleXVwIjsKKyAgICB9CisKKyAgICBsZXQgb2xkVmFsdWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0OworICAgIGZ1bmN0aW9uIGhhbmRs
ZUNhcHNMb2NrQ2hhbmdlKGV2ZW50KSB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50Lmtl
eSA9PT0gIkNhcHNMb2NrIik7CisgICAgICAgIGNhbGxiYWNrKG9sZFZhbHVlLCBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0KTsKKyAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKKyAgICB9CisgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFRvTGlzdGVuRm9yLCBo
YW5kbGVDYXBzTG9ja0NoYW5nZSwgeyBvbmNlOiB0cnVlIH0pOworICAgIGRlYnVnKGA8YnI+QWZ0
ZXIgY2FwcyBsb2NrICR7bmV3Q2Fwc0xvY2tTdGF0ZURpc3BsYXlOYW1lfTpgKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIudG9nZ2xlQ2Fwc0xvY2soKTsK
K30KKworZnVuY3Rpb24gdGVzdEZpZWxkRGlkU2Nyb2xsQWZ0ZXJDYXBzTG9ja0VuYWJsZWQoKQor
eworICAgIF90b2dnbGVDYXBzTG9ja1dpdGhDYWxsYmFja0FuZFJ1bk5leHRUZXN0KHRydWUsIChv
bGRWYWx1ZSwgbmV3VmFsdWUpID0+IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2xkVmFsdWUg
IT0gbmV3VmFsdWUpOworICAgICAgICBzaG91bGRCZU5vblplcm8oImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbnB1dCcpLnNjcm9sbExlZnQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVz
dEZpZWxkRGlkU2Nyb2xsQWZ0ZXJDYXBzTG9ja0Rpc2FibGVkKCkKK3sKKyAgICBfdG9nZ2xlQ2Fw
c0xvY2tXaXRoQ2FsbGJhY2tBbmRSdW5OZXh0VGVzdChmYWxzZSwgKG9sZFZhbHVlLCBuZXdWYWx1
ZSkgPT4geworICAgICAgICBjb25zb2xlLmFzc2VydChvbGRWYWx1ZSAhPSBuZXdWYWx1ZSk7Cisg
ICAgICAgIHNob3VsZEJlWmVybygiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2Ny
b2xsTGVmdCIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0RmllbGREaWROb3RTY3JvbGxB
ZnRlckNhcHNMb2NrRW5hYmxlZCgpCit7CisgICAgX3RvZ2dsZUNhcHNMb2NrV2l0aENhbGxiYWNr
QW5kUnVuTmV4dFRlc3QodHJ1ZSwgKG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT4geworICAgICAgICBj
b25zb2xlLmFzc2VydChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSk7CisgICAgICAgIHNob3VsZEJlWmVy
bygiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2Nyb2xsTGVmdCIpOworICAgIH0p
OworfQorCitmdW5jdGlvbiB0ZXN0RmllbGREaWROb3RTY3JvbGxBZnRlckNhcHNMb2NrRGlzYWJs
ZWQoKQoreworICAgIF90b2dnbGVDYXBzTG9ja1dpdGhDYWxsYmFja0FuZFJ1bk5leHRUZXN0KGZh
bHNlLCAob2xkVmFsdWUsIG5ld1ZhbHVlKSA9PiB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9s
ZFZhbHVlID09IG5ld1ZhbHVlKTsKKyAgICAgICAgc2hvdWxkQmVaZXJvKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0Iik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RGaWVsZERpZE5vdFNjcm9sbEFmdGVyU2VsZWN0aW5nUHJlZml4KCkKK3sKKyAgICBsZXQg
cHJlZml4TGVuZ3RoID0gTWF0aC5mbG9vcihudW1iZXJPZkNoYXJhY3RlcnNUb092ZXJmbG93Rmll
bGRXaGVuQ2Fwc0xvY2tTaG93biAvIDIpOworICAgIGRlYnVnKGA8YnI+Q2FzZSAzOiBBZnRlciBz
ZWxlY3RpbmcgdGhlIGZpcnN0ICR7cHJlZml4TGVuZ3RofSBjaGFyYWN0ZXJzOmApOworICAgIGlu
cHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIHByZWZpeExlbmd0aCk7CisgICAgc2hvdWxkQmVaZXJv
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0Iik7CisgICAgcnVu
TmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdEZpZWxkRGlkTm90U2Nyb2xsQWZ0ZXJTZWxl
Y3RpbmdTdWZmaXgoKQoreworICAgIGxldCBzdWZmaXhMZW5ndGggPSBNYXRoLmZsb29yKG51bWJl
ck9mQ2hhcmFjdGVyc1RvT3ZlcmZsb3dGaWVsZFdoZW5DYXBzTG9ja1Nob3duIC8gMik7CisgICAg
ZGVidWcoYDxicj5DYXNlIDQ6IEFmdGVyIHNlbGVjdGluZyB0aGUgbGFzdCAke3N1ZmZpeExlbmd0
aH0gY2hhcmFjdGVyczpgKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShpbnB1dC52YWx1
ZS5sZW5ndGggLSBzdWZmaXhMZW5ndGgsIGlucHV0LnZhbHVlLmxlbmd0aCk7CisgICAgc2hvdWxk
QmVaZXJvKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zY3JvbGxMZWZ0Iik7Cisg
ICAgcnVuTmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPGlucHV0IHR5cGU9InBh
c3N3b3JkIiBpZD0iaW5wdXQiIHNpemU9IjUiPgorPHNjcmlwdD4KK2lucHV0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImlucHV0Iik7Citjb25zb2xlLmFzc2VydChpbnB1dC5oYXNBdHRyaWJ1
dGUoInNpemUiKSk7CitudW1iZXJPZkNoYXJhY3RlcnNUb092ZXJmbG93RmllbGRXaGVuQ2Fwc0xv
Y2tTaG93biA9IGlucHV0LnNpemU7Citjb25zb2xlLmFzc2VydChudW1iZXJPZkNoYXJhY3RlcnNU
b092ZXJmbG93RmllbGRXaGVuQ2Fwc0xvY2tTaG93biA+PSAzKTsKKworZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgdGhlIHBhc3N3b3JkIGZpZWxkIGlzIHNjcm9sbGVkIHdoZW4gdGhlIGNhcHMgbG9j
ayBpbmRpY2F0b3IgaXMgdG9nZ2xlZC4iKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGEz
ZDlkYmYzMjJmMzJhYWZiY2U0N2IxYzEzMzAzOTY2YzFlNmFiNTAuLjc2ZmRkYzIzODkzNWE3NTNj
NzYxNWVlNDQ0NjM4NzQ3NDNiNGYzZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY5LDYgKzY5LDcgQEAgd2Via2l0Lm9yZy9iLzE4NDU2
OSBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlv
bi5odG0KIAogWyBNb2phdmUrIF0gZmFzdC9ldmVudHMvZGV0ZWN0LWNhcHMtbG9jay5odG1sIFsg
UGFzcyBdCiBbIE1vamF2ZSsgXSBmYXN0L3JlcGFpbnQvcGxhY2Vob2xkZXItYWZ0ZXItY2Fwcy1s
b2NrLWhpZGRlbi5odG1sIFsgUGFzcyBdCitbIE1vamF2ZSsgXSBmYXN0L2Zvcm1zL3Bhc3N3b3Jk
LXNjcm9sbGVkLWFmdGVyLWNhcHMtbG9jay10b2dnbGVkLmh0bWwgWyBQYXNzIF0KIAogZmFzdC9l
dmVudHMvaW5hY3RpdmUtd2luZG93LW5vLW1vdXNlLWV2ZW50Lmh0bWwgWyBQYXNzIF0KIAo=
</data>
<flag name="review"
          id="372719"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>