<?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>59121</bug_id>
          
          <creation_ts>2011-04-21 11:18:07 -0700</creation_ts>
          <short_desc>WebKit2: Text input is largely broken when there are subframes loading</short_desc>
          <delta_ts>2013-05-17 13:17:46 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>japhet</cc>
    
    <cc>naofumi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390171</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-21 11:18:07 -0700</bug_when>
    <thetext>We reset text input state on frame load, failing to recognize that there is only one WKView per page, but multiple frames.

Steps to reproduce:
1. Open attach test case.
2. Try to type and edit text using any non-trivial features (inline input, dictionary pop-up, possibly accessibility).

Observe that it&apos;s obviously and mightily broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390394</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-21 15:22:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/9320468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390395</commentid>
    <comment_count>2</comment_count>
      <attachid>90614</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-21 15:24:42 -0700</bug_when>
    <thetext>Created attachment 90614
test case (open from a local file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458105</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-29 00:36:32 -0700</bug_when>
    <thetext>*** Bug 67105 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890089</commentid>
    <comment_count>4</comment_count>
      <attachid>202008</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-16 18:16:57 -0700</bug_when>
    <thetext>Created attachment 202008
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890429</commentid>
    <comment_count>5</comment_count>
      <attachid>202008</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-17 09:20:45 -0700</bug_when>
    <thetext>Comment on attachment 202008
proposed fix

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        Added a hook taht gets invoked right before transitioning to committed state starts.

s/taht/that/

&gt; LayoutTests/platform/mac-wk2/TestExpectations:321
&gt; +# textInputController.hasMarkedText is implemented, but gives a wrong result for some reason.
&gt; +platform/mac/editing/input/unconfirmed-text-navigation-with-page-cache.html

Kind of troubling that the test doesn&apos;t cover the port where the most changes took place.  =/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890452</commentid>
    <comment_count>6</comment_count>
      <attachid>202008</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-17 09:45:35 -0700</bug_when>
    <thetext>Comment on attachment 202008
proposed fix

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

&gt;&gt; LayoutTests/platform/mac-wk2/TestExpectations:321
&gt;&gt; +platform/mac/editing/input/unconfirmed-text-navigation-with-page-cache.html
&gt; 
&gt; Kind of troubling that the test doesn&apos;t cover the port where the most changes took place.  =/

Currently, many text input tests are failing or skipped because or WTR deficiencies, and there are many aspects of text input that can&apos;t be tested on any platform. It&apos;s unfortunate that text input test coverage is so spotty, but I guess it&apos;s better than nothing.

In WebKit2, driving tests from WebProcess makes it particularly tricky to test anything that deals with user actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890500</commentid>
    <comment_count>7</comment_count>
      <attachid>202008</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-17 10:16:11 -0700</bug_when>
    <thetext>Comment on attachment 202008
proposed fix

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

review+ as long as you do not add a member function to Frame!

&gt; Source/WebCore/page/Frame.h:110
&gt; +        void willTransitionToCommitted();

We should not add a function to Frame for this. The code should be in FrameLoader. It’s completely reasonable for FrameLoader to make Editor calls. You can put this new function in either FrameLoader or Editor, but not in Frame.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:3070
&gt; +    // This is a temporary state when editing. Flipping secure input state too quickly can expose race conditions.
&gt; +    if (couldChangeSecureInputState &amp;&amp; !editorState.selectionIsNone)
&gt; +        m_pageClient-&gt;updateSecureInputState();

I don’t understand the comment. It doesn’t say what it’s referring to. What is a temporary state when editing? What does “too quickly” mean? It seems like you moved this comment here, but I don’t understand it in its original location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890614</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-17 13:04:32 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r150291&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890626</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-17 13:17:46 -0700</bug_when>
    <thetext>Build fix in &lt;http://trac.webkit.org/r150293&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>90614</attachid>
            <date>2011-04-21 15:24:42 -0700</date>
            <delta_ts>2011-04-21 15:25:39 -0700</delta_ts>
            <desc>test case (open from a local file)</desc>
            <filename>load-and-editing.html</filename>
            <type>text/html</type>
            <size>302</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGRpdiBjb250ZW50ZWRpdGFibGU+PC9kaXY+CjxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCwi
PjwvaWZyYW1lPgo8c2NyaXB0Pgpkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iilb
MF0uZm9jdXMoKTsKdmFyIGkgPSAwOwpzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgIGZyYW1l
c1swXS5kb2N1bWVudC5vcGVuKCk7CiAgICBmcmFtZXNbMF0uZG9jdW1lbnQud3JpdGUoIjxpZnJh
bWUgc3JjPSdkYXRhOnRleHQvaHRtbCwiICsgaSArICInPjwvaWZyYW1lPiIpOwogICAgKytpOwp9
LCA1MDApOwo8L3NjcmlwdD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202008</attachid>
            <date>2013-05-16 18:16:57 -0700</date>
            <delta_ts>2013-05-17 10:16:11 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>InlineInputVSFrames.txt</filename>
            <type>text/plain</type>
            <size>23722</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA1LTE2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgaW5wdXQgaXMgbGFy
Z2VseSBicm9rZW4gd2hlbiB0aGVyZSBhcmUgc3ViZnJhbWVzIGxvYWRpbmcKKyAgICAgICAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxMjEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzkzMjA0Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBhZGRyZXNzZXMgdGV4dCBpbnB1dCBiZWluZyBhYmFuZG9uZWQgd2hl
biBhbm90aGVyIGZyYW1lIGluIGEgcGFnZSBpcyBuYXZpZ2F0ZWQuCisKKyAgICAgICAgVGhlcmUg
YXJlIHN0aWxsIG1hbnkgb3Bwb3J0dW5pdGllcyBmb3IgaW1wcm92ZW1lbnQ6CisgICAgICAgIC0g
VHJhY2sgb3RoZXIgY2FzZXMgd2hlcmUgV2ViQ29yZSBpbnRlcmZlcmVzIG1heSB3YW50IHRvIGNh
bmNlbCBpbnB1dCB3aXRob3V0CisgICAgICAgIGRpcmVjdCB1c2VyIGFjdGlvbiAoZS5nLiBkZWxl
dGluZyB0aGUgd2hvbGUgZWRpdGFibGUgZWxlbWVudCBvbiBhIHRpbWVyKS4KKyAgICAgICAgLSBG
aXggaG93IGRpY3Rpb25hcnkgcGFuZWwgYW5kIGF1dG9jb3JyZWN0aW9uIGFyZSBkaXNtaXNzZWQg
KHRoZXkgc3RpbGwgaGF2ZSB0aGUKKyAgICAgICAgc2FtZSBpc3N1ZSwgYW5kIGdldCBkaXNtaXNz
ZWQgd2l0aCBhbnkgZnJhbWUgbmF2aWdhdGlvbikuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvdW5jb25maXJtZWQtdGV4dC1uYXZpZ2F0aW9uLXdpdGgtcGFnZS1j
YWNoZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIEFkZGVkIGEgaG9v
ayB0YWh0IGdldHMgaW52b2tlZCByaWdodCBiZWZvcmUgdHJhbnNpdGlvbmluZyB0byBjb21taXR0
ZWQgc3RhdGUgc3RhcnRzLgorICAgICAgICBXZSBtYXkgd2FudCB0byBtb3ZlIG1vcmUgY29kZSBo
ZXJlIGV2ZW50dWFsbHksIGUuZy4gZnJvbSBGcmFtZTo6c2V0Vmlldy4KKworICAgICAgICAqIHBh
Z2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDogKFdlYkNvcmU6OkZyYW1lOjp3
aWxsVHJhbnNpdGlvblRvQ29tbWl0dGVkKTogTWFrZSBzdXJlIHRoYXQgd2UKKyAgICAgICAgZG8g
bm90IGtlZXAgYW4gaW5saW5lIHNlc3Npb24gaW4gYSBmcmFtZSB0aGF0J3Mgbm8gbG9uZ2VyIGFj
dGl2ZSwgYXMgV2ViS2l0MiBubworICAgICAgICBsb25nZXIgdGFrZXMgY2FyZSBvZiB0aGlzIGNh
c2UgKGFuZCBtb3JlIG9mIHRoZSBsb2dpYyBzaG91bGQgYmUgaW4gV2ViQ29yZSBhbnl3YXkpLgor
CiAyMDEzLTA1LTE2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBE
byBub3QgaW5kZWZpbml0ZWx5IGNhY2hlIHJlc291cmNlcyBmcm9tIGJsb2IgVVJMcy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTUwMDkxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY4MSw2ICsxNjgxLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2Fk
KAogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuZWxpZGVkU3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiLAogICAgICAgICBwZGwgPyBwZGwt
PnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiPG5vIHByb3Zpc2lvbmFsIERv
Y3VtZW50TG9hZGVyPiIpOwogCisgICAgbV9mcmFtZS0+d2lsbFRyYW5zaXRpb25Ub0NvbW1pdHRl
ZCgpOworCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8gY2FjaGUgdGhlIHBhZ2Ug
d2UgYXJlIG5hdmlnYXRpbmcgYXdheSBmcm9tIGludG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4K
ICAgICAvLyBXZSBhcmUgZG9pbmcgdGhpcyBoZXJlIGJlY2F1c2Ugd2Uga25vdyBmb3Igc3VyZSB0
aGF0IGEgbmV3IHBhZ2UgaXMgYWJvdXQgdG8gYmUgbG9hZGVkLgogICAgIEhpc3RvcnlJdGVtKiBp
dGVtID0gaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJ
KHJldmlzaW9uIDE1MDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OTQsNiArNjk0LDE1IEBAIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25l
ckVsZW1lbnQoKQogICAgIG1fb3duZXJFbGVtZW50ID0gMDsKIH0KIAordm9pZCBGcmFtZTo6d2ls
bFRyYW5zaXRpb25Ub0NvbW1pdHRlZCgpCit7CisgICAgaWYgKG1fZWRpdG9yLT5oYXNDb21wb3Np
dGlvbigpKSB7CisgICAgICAgIC8vIFRoZSB0ZXh0IHdhcyBhbHJlYWR5IHByZXNlbnQgaW4gRE9N
LCBzbyBpdCdzIGJldHRlciB0byBjb25maXJtIHRoYW4gdG8gY2FuY2VsIHRoZSBjb21wb3NpdGlv
bi4KKyAgICAgICAgbV9lZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgICAgICBtX2Vk
aXRvci0+Y2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24odGhpcyk7CisgICAgfQor
fQorCiBTdHJpbmcgRnJhbWU6OmRvY3VtZW50VHlwZVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KERvY3VtZW50VHlwZSogZG9jdHlwZSA9IGRvY3VtZW50KCktPmRvY3R5cGUoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgJKHJldmlzaW9uIDE1MDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOwogICAgICAgICB2b2lkIGRpc2Nvbm5l
Y3RPd25lckVsZW1lbnQoKTsKIAorICAgICAgICB2b2lkIHdpbGxUcmFuc2l0aW9uVG9Db21taXR0
ZWQoKTsKKwogICAgICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgICAgIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE1MDIxMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQyIEBACisyMDEzLTA1LTE2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgorCisgICAgICAgIFRleHQgaW5wdXQgaXMgbGFyZ2VseSBicm9rZW4gd2hlbiB0aGVy
ZSBhcmUgc3ViZnJhbWVzIGxvYWRpbmcKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTkxMjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkzMjA0Njg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKTog
U2VwYXJhdGVkIHNlY3VyZSBpbnB1dCBzdGF0ZQorICAgICAgICB1cGRhdGluZyBpbnRvIGEgc2Vw
YXJhdGUgZnVuY3Rpb24uIFJlbW92ZWQgdXBkYXRlVGV4dElucHV0U3RhdGUsIHdlIGRvbid0IG5l
ZWQKKyAgICAgICAgdG8gZ28gdGhyb3VnaCBQYWdlQ2xpZW50IHRvIGltcGxlbWVudCBpdHMgYmVo
YXZpb3IgYXQgYWxsLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0Rp
Y3Rpb25hcnlMb29rdXBQYW5lbCk6IEFkZGVkIGEgRklYTUUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaDoKKyAgICAgICAgUmVtb3ZlZCBfdXBkYXRlVGV4dElucHV0U3RhdGVJbmNsdWRp
bmdTZWN1cmVJbnB1dFN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OiBBZGRlZCBtX3RlbXBvcmFyaWx5Q2xvc2VkQ29tcG9zaXRpb24sIHdoaWNoIGhlbHBzCisgICAg
ICAgIHRvIGZpZ3VyZSBvdXQgdGhhdCBXZWJDb3JlIGRlY2lkZWQgdG8gY2xvc2UgYSBjb21wb3Np
dGlvbi4gVGhlIGlzc3VlIGlzIHRoYXQgV2ViQ29yZQorICAgICAgICB3b3VsZCBmaXJzdCBzZW5k
IGFuIEVkaXRvclN0YXRlIHdpdGggaGFzQ29tcG9zaXRpb24gc2V0IHRvIGZhbHNlLCBhbmQgd2l0
aAorICAgICAgICBzaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSBzZXQgdG8g
dHJ1ZSwgYXQgd2hpY2ggdGltZSB3ZSBmb3JnZXQgdGhlCisgICAgICAgIHByZXZpb3VzIG1fZWRp
dG9yU3RhdGUsIGJ1dCBjYW4ndCBtYWtlIGFueSBkZWNpc2lvbnMgYmFzZWQgb24gdGhpcyB0cmFu
c2llbnQgc3RhdGUuCisgICAgICAgIFdlIHNob3VsZCBmaW5kIGEgd2F5IHRvIHNpbXBsaWZ5IHRo
aXMgKG1heWJlIG5vdCBzZW5kIHRoZXNlIHVwZGF0ZXMgd2l0aAorICAgICAgICBzaG91bGRJZ25v
cmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSBhdCBhbGw/KQorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KTogSW5pdGlhbGl6ZSBtX3RlbXBvcmFyaWx5Q2xvc2VkQ29tcG9zaXRpb24uCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTogUmVt
b3ZlZCB0aGUgY29kZSB0byBraWxsIGEgY29tcG9zaXRpb24KKyAgICAgICAgd2hlbiBhbnkgZnJh
bWUgY29tbWl0cyBhIGxvYWQsIHdoaWNoIG1hZGUgbm8gc2Vuc2UgKGFsb25nIHdpdGggc3Vycm91
bmRpbmcgY29kZSwKKyAgICAgICAgd2hpY2ggd2lsbCB1bmZvcnR1bmF0ZWx5IHN1cnZpdmUgbG9u
Z2VyKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQp
OiBJbXBsZW1lbnRlZCBzdGF0ZSB1cGRhdGluZyBoZXJlLAorICAgICAgICB3ZSBkb24ndCBuZWVk
IHRvIGdvIHRvIFdLVmlldy5tbSB0byBpbXBsZW1lbnQgdGhpcyBsb2dpYy4gRmlndXJlIG91dCB3
aGVuIFdlYkNvcmUKKyAgICAgICAgZGlzY2FyZHMgYSBjb21wb3NpdGlvbiwgYW5kIG5vdGlmeSBp
bnB1dCBtZXRob2RzIGFib3V0IHRoaXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6IFJlc2V0IG1fdGVtcG9yYXJpbHlDbG9zZWRD
b21wb3NpdGlvbi4KKyAgICAgICAgQWRkZWQgc29tZSBGSVhNRXMuCisKIDIwMTMtMDUtMTYgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHN2Zy9hcy1pbWFnZS9p
bWctem9vbS1zdmctc3R5bGVzaGVldC5odG1sIGNyYXNoZXMgd2l0aCBOZXR3b3JrUHJvY2VzcyBl
bmFibGVkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAxNTAxMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
bnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgVmVjdG9yPFdl
YkNvcmU6OktleXByZXNzQ29tbWFuZD4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVT
YXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwgYm9vbCBpc0xp
bmtEcmFnKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKGJvb2wg
dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1
cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3Rh
dGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2Fy
ZGVkQ29tcG9zaXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRl
cigpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CShyZXZpc2lvbiAxNTAxMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIFdlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHAKICAgICAsIG1faXNWaXNpYmxlKG1fcGFnZUNsaWVu
dC0+aXNWaWV3VmlzaWJsZSgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0Zvcndh
cmRMaXN0OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2xvYWRTdGF0ZUF0UHJvY2Vzc0V4aXQoV2Vi
RnJhbWVQcm94eTo6TG9hZFN0YXRlRmluaXNoZWQpCisgICAgLCBtX3RlbXBvcmFyaWx5Q2xvc2Vk
Q29tcG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX3RleHRab29tRmFjdG9yKDEpCiAgICAgLCBtX3Bh
Z2Vab29tRmFjdG9yKDEpCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQpAQCAtMjI0OSw4ICsy
MjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FIChidWcgNTkxMTEpOiBkaWRDb21taXRMb2FkRm9y
RnJhbWUgY29tZXMgdG9vIGxhdGUgd2hlbiByZXN0b3JpbmcgYSBwYWdlIGZyb20gYi9mIGNhY2hl
LCBtYWtpbmcgdXMgZGlzYWJsZSBzZWN1cmUgZXZlbnQgbW9kZSBpbiBwYXNzd29yZCBmaWVsZHMu
Ci0gICAgLy8gRklYTUUgKGJ1ZyA1OTEyMSk6IEEgbG9hZCBnb2luZyBvbiBpbiBvbmUgZnJhbWUg
c2hvdWxkbid0IGFmZmVjdCB0eXBpbmcgaW4gc2libGluZyBmcmFtZXMuCi0gICAgbV9wYWdlQ2xp
ZW50LT5ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCk7CisgICAg
Ly8gRklYTUU6IEEgbG9hZCBnb2luZyBvbiBpbiBvbmUgZnJhbWUgc2hvdWxkbid0IGFmZmVjdCB0
ZXh0IGVkaXRpbmcgaW4gb3RoZXIgZnJhbWVzIG9uIHRoZSBwYWdlLgogICAgIG1fcGFnZUNsaWVu
dC0+cmVzZXRTZWN1cmVJbnB1dFN0YXRlKCk7CiAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChS
ZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7CiAgICAgbV9wYWdlQ2xp
ZW50LT5kaXNtaXNzRGljdGlvbmFyeUxvb2t1cFBhbmVsKCk7CkBAIC0zMDU4LDEyICszMDU4LDI4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY28KIHsKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgYm9vbCBjb3VsZENoYW5nZVNlY3VyZUlucHV0U3RhdGUgPSBtX2VkaXRv
clN0YXRlLmlzSW5QYXNzd29yZEZpZWxkICE9IGVkaXRvclN0YXRlLmlzSW5QYXNzd29yZEZpZWxk
IHx8IG1fZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNOb25lOworICAgIGJvb2wgY2xvc2VkQ29tcG9z
aXRpb24gPSAhZWRpdG9yU3RhdGUuc2hvdWxkSWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFu
Z2UgJiYgIWVkaXRvclN0YXRlLmhhc0NvbXBvc2l0aW9uICYmIChtX2VkaXRvclN0YXRlLmhhc0Nv
bXBvc2l0aW9uIHx8IG1fdGVtcG9yYXJpbHlDbG9zZWRDb21wb3NpdGlvbik7CisgICAgbV90ZW1w
b3JhcmlseUNsb3NlZENvbXBvc2l0aW9uID0gZWRpdG9yU3RhdGUuc2hvdWxkSWdub3JlQ29tcG9z
aXRpb25TZWxlY3Rpb25DaGFuZ2UgJiYgKG1fdGVtcG9yYXJpbHlDbG9zZWRDb21wb3NpdGlvbiB8
fCBtX2VkaXRvclN0YXRlLmhhc0NvbXBvc2l0aW9uKSAmJiAhZWRpdG9yU3RhdGUuaGFzQ29tcG9z
aXRpb247CiAjZW5kaWYKIAogICAgIG1fZWRpdG9yU3RhdGUgPSBlZGl0b3JTdGF0ZTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBtX3BhZ2VDbGllbnQtPnVwZGF0ZVRleHRJbnB1dFN0YXRlKGNv
dWxkQ2hhbmdlU2VjdXJlSW5wdXRTdGF0ZSk7CisgICAgLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBz
dGF0ZSB3aGVuIGVkaXRpbmcuIEZsaXBwaW5nIHNlY3VyZSBpbnB1dCBzdGF0ZSB0b28gcXVpY2ts
eSBjYW4gZXhwb3NlIHJhY2UgY29uZGl0aW9ucy4KKyAgICBpZiAoY291bGRDaGFuZ2VTZWN1cmVJ
bnB1dFN0YXRlICYmICFlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc05vbmUpCisgICAgICAgIG1fcGFn
ZUNsaWVudC0+dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOworCisgICAgaWYgKGVkaXRvclN0YXRl
LnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoY2xvc2VkQ29tcG9zaXRpb24pCisgICAgICAgIG1fcGFnZUNsaWVudC0+bm90
aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpOworICAgIGlmIChlZGl0
b3JTdGF0ZS5oYXNDb21wb3NpdGlvbikgeworICAgICAgICAvLyBBYmFuZG9uIHRoZSBjdXJyZW50
IGlubGluZSBpbnB1dCBzZXNzaW9uIGlmIHNlbGVjdGlvbiBjaGFuZ2VkIGZvciBhbnkgb3RoZXIg
cmVhc29uIGJ1dCBhbiBpbnB1dCBtZXRob2QgY2hhbmdpbmcgdGhlIGNvbXBvc2l0aW9uLgorICAg
ICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBzaG91bGQgYmUgaW4gV2ViQ29yZSwgbm8gbmVlZCB0
byByb3VuZC10cmlwIHRvIFVJIHByb2Nlc3MgdG8gY2FuY2VsIHRoZSBjb21wb3NpdGlvbi4KKyAg
ICAgICAgY2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICAgICAgbV9wYWdlQ2xpZW50LT5ub3RpZnlJ
bnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCk7CisgICAgfQogI2VsaWYgUExB
VEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQogICAgIG1fcGFnZUNs
aWVudC0+dXBkYXRlVGV4dElucHV0U3RhdGUoKTsKICNlbmRpZgpAQCAtMzkwNSw2ICszOTIxLDEw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXMKICAgICBtX3RvdWNo
RXZlbnRRdWV1ZS5jbGVhcigpOwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogUmVzZXQgbV9lZGl0
b3JTdGF0ZS4KKyAgICAvLyBGSVhNRTogTm90aWZ5IGlucHV0IG1ldGhvZHMgYWJvdXQgYWJhbmRv
bmVkIGNvbXBvc2l0aW9uLgorICAgIG1fdGVtcG9yYXJpbHlDbG9zZWRDb21wb3NpdGlvbiA9IGZh
bHNlOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVh
c29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQpOwogICAgIG1fcGFnZUNsaWVu
dC0+ZGlzbWlzc0RpY3Rpb25hcnlMb29rdXBQYW5lbCgpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTUwMDkxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMwLDYgKzEx
MzAsNyBAQCBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZSBtX2xvYWRTdGF0
ZUF0UHJvY2Vzc0V4aXQ7CiAKICAgICBFZGl0b3JTdGF0ZSBtX2VkaXRvclN0YXRlOworICAgIGJv
b2wgbV90ZW1wb3JhcmlseUNsb3NlZENvbXBvc2l0aW9uOyAvLyBFZGl0b3Igc3RhdGUgY2hhbmdl
ZCBmcm9tIGhhc0NvbXBvc2l0aW9uIHRvICFoYXNDb21wb3NpdGlvbiwgYnV0IHRoYXQgd2FzIG9u
bHkgd2l0aCBzaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSB5ZXQuCiAKICAg
ICBkb3VibGUgbV90ZXh0Wm9vbUZhY3RvcjsKICAgICBkb3VibGUgbV9wYWdlWm9vbUZhY3RvcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gMTUwMTMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0lt
YWdlLCBib29sIGlzTGlua0RyYWcpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGEo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVcmwsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlVGV4dElucHV0U3RhdGUoYm9vbCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigp
IE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTUwMTMyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMyOCw5ICszMjgsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGEoY29u
CiAgICAgW21fd2tWaWV3IF9zZXRQcm9taXNlZERhdGE6aW1hZ2UuZ2V0KCkgd2l0aEZpbGVOYW1l
OmZpbGVuYW1lIHdpdGhFeHRlbnNpb246ZXh0ZW5zaW9uIHdpdGhUaXRsZTp0aXRsZSB3aXRoVVJM
OnVybCB3aXRoVmlzaWJsZVVSTDp2aXNpYmxlVXJsIHdpdGhBcmNoaXZlOmFyY2hpdmVCdWZmZXIu
Z2V0KCkgZm9yUGFzdGVib2FyZDpwYXN0ZWJvYXJkTmFtZV07CiB9CiAKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKGJvb2wgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSkK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKQogewotICAgIFtt
X3drVmlldyBfdXBkYXRlVGV4dElucHV0U3RhdGVJbmNsdWRpbmdTZWN1cmVJbnB1dFN0YXRlOnVw
ZGF0ZVNlY3VyZUlucHV0U3RhdGVdOworICAgIFttX3drVmlldyBfdXBkYXRlU2VjdXJlSW5wdXRT
dGF0ZV07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgp
CkBAIC01MDQsNiArNTA0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rp
b25hcgogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzRGljdGlvbmFyeUxvb2t1cFBhbmVs
KCkKIHsKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3Qga25vdyB3aGljaCBwYW5lbCB3ZSBhcmUgZGlz
bWlzc2luZywgaXQgbWF5IG5vdCBldmVuIGJlIGluIHRoZSBjdXJyZW50IHBhZ2UgKHNlZSA8cmRh
cjovL3Byb2JsZW0vMTM4NzU3NjY+KS4KICAgICBXS0hpZGVXb3JkRGVmaW5pdGlvbldpbmRvdygp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CShyZXZpc2lvbiAxNTAxMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MDAsMjMgKzI5MDAsNiBAQCAtICh2b2lkKV91
cGRhdGVTZWN1cmVJbnB1dFN0YXRlCiAgICAgX2RhdGEtPl9pblNlY3VyZUlucHV0U3RhdGUgPSBp
c0luUGFzc3dvcmRGaWVsZDsKIH0KIAotLSAodm9pZClfdXBkYXRlVGV4dElucHV0U3RhdGVJbmNs
dWRpbmdTZWN1cmVJbnB1dFN0YXRlOihCT09MKXVwZGF0ZVNlY3VyZUlucHV0U3RhdGUKLXsKLSAg
ICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0
YXRlKCk7Ci0gICAgaWYgKHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUpIHsKLSAgICAgICAgLy8gVGhp
cyBpcyBhIHRlbXBvcmFyeSBzdGF0ZSB3aGVuIGVkaXRpbmcuIEZsaXBwaW5nIHNlY3VyZSBpbnB1
dCBzdGF0ZSB0b28gcXVpY2tseSBjYW4gZXhwb3NlIHJhY2UgY29uZGl0aW9ucy4KLSAgICAgICAg
aWYgKCFlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc05vbmUpCi0gICAgICAgICAgICBbc2VsZiBfdXBk
YXRlU2VjdXJlSW5wdXRTdGF0ZV07Ci0gICAgfQotCi0gICAgaWYgKCFlZGl0b3JTdGF0ZS5oYXND
b21wb3NpdGlvbiB8fCBlZGl0b3JTdGF0ZS5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlv
bkNoYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2RhdGEtPl9wYWdlLT5jYW5jZWxDb21w
b3NpdGlvbigpOwotCi0gICAgW3NlbGYgX25vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVk
Q29tcG9zaXRpb25dOwotfQotCiAtICh2b2lkKV9yZXNldFNlY3VyZUlucHV0U3RhdGUKIHsKICAg
ICBpZiAoX2RhdGEtPl9pblNlY3VyZUlucHV0U3RhdGUpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTUw
MTMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwu
aAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNiBAQCBAaW50ZXJmYWNlIFdLVmlldyAoSW50
ZXJuYWwpCiAtICh2b2lkKV91cGRhdGVTZWN1cmVJbnB1dFN0YXRlOwogLSAodm9pZClfcmVzZXRT
ZWN1cmVJbnB1dFN0YXRlOwogLSAodm9pZClfbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJk
ZWRDb21wb3NpdGlvbjsKLS0gKHZvaWQpX3VwZGF0ZVRleHRJbnB1dFN0YXRlSW5jbHVkaW5nU2Vj
dXJlSW5wdXRTdGF0ZTooQk9PTCl1cGRhdGVTZWN1cmVJbnB1dFN0YXRlOwogCiAtIChXZWJLaXQ6
OkNvbG9yU3BhY2VEYXRhKV9jb2xvclNwYWNlOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTAxMjQpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAxMy0wNS0xNSAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBBZGQgdGVz
dHMgZm9yIHNlY3VyZSBldmVudCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MTIxCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbWFjX3VuaXR0ZXN0LnB5OiAodGVzdF9zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIpOgorICAg
ICAgICBVcGRhdGVkIGV4cGVjdGVkIHJlc3VsdHMuCisKIDIwMTMtMDUtMTUgIEFsYmVydG8gR2Fy
Y2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZhaWxzIHRvIGJ1aWxk
IHdoaWxlIGdlbmVyYXRpbmcgZ3RrZG9jCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTAyMTApCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
My0wNS0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBU
ZXh0IGlucHV0IGlzIGxhcmdlbHkgYnJva2VuIHdoZW4gdGhlcmUgYXJlIHN1YmZyYW1lcyBsb2Fk
aW5nCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTIx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MzIwNDY4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgdGVzdCdzIHJlc3VsdCBhcmUgYWZm
ZWN0ZWQgYnkgRFJUIGFuZCBXVFIgZGVmaWNpZW5jaWVzLCBidXQgaXQgc3RpbGwKKyAgICAgICAg
dmVyaWZpZXMgdGhhdCBhIHRyaWNreSBjcmFzaCBJIGhhZCBkdXJpbmcgZGV2ZWxvcG1lbnQgZG9l
c24ndCBzdGFydCB0byBoYXBwZW4gYWdhaW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
cmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9y
ZXNvdXJjZXMvZmlyc3QtcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZWRpdGluZy9pbnB1dC9yZXNvdXJjZXMvb3RoZXItcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC91bmNvbmZpcm1lZC10ZXh0LW5hdmlnYXRpb24t
d2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvdW5jb25maXJtZWQtdGV4dC1uYXZpZ2F0aW9uLXdpdGgtcGFnZS1j
YWNoZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wNS0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbCBmYWlscwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTUwMDkxKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTcsNiArMzE3LDkgQEAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfMjE4L1M3
LjZfQTUuMl9UMQogIyBVbmNsZWFyIHlldCB3aHkgdGhpcyB0ZXN0IGZhaWxzLgogZWRpdGluZy9z
ZWN1cmUtaW5wdXQvcGFzc3dvcmQtaW5wdXQtZm9jdXNpbmctdG8tZGlmZmVyZW50LWZyYW1lLmh0
bWwgWyBGYWlsdXJlIF0KIAorIyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc01hcmtlZFRleHQgaXMg
aW1wbGVtZW50ZWQsIGJ1dCBnaXZlcyBhIHdyb25nIHJlc3VsdCBmb3Igc29tZSByZWFzb24uCitw
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC91bmNvbmZpcm1lZC10ZXh0LW5hdmlnYXRpb24td2l0
aC1wYWdlLWNhY2hlLmh0bWwKKwogIyMjIEVORCBPRiAoMykgVW5jbGFzc2lmaWVkIGZhaWx1cmVz
CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3VuY29uZmlybWVkLXRleHQtbmF2aWdh
dGlvbi13aXRoLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3VuY29uZmlybWVkLXRleHQtbmF2aWdhdGlv
bi13aXRoLXBhZ2UtY2FjaGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvdW5jb25maXJtZWQtdGV4dC1uYXZpZ2F0aW9u
LXdpdGgtcGFnZS1jYWNoZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
IEBACitBZGRpbmcgdW5jb25maXJtZWQgaW5saW5lIHRleHQuLi4KK1BBU1MgZXZlbnQuZGF0YSBp
cyAnaGFzLW1hcmtlZC10ZXh0OiAxJworTmF2aWdhdGluZyBhd2F5IGZyb20gYSBwYWdlIHdpdGgg
dW5jb25maXJtZWQgaW5saW5lIGlucHV0Li4uCitOYXZpZ2F0aW5nIGJhY2sgdG8gdGhlIGZpcnN0
IHBhZ2UuLi4KK0ZBSUwgZXZlbnQuZGF0YSBzaG91bGQgYmUgaGFzLW1hcmtlZC10ZXh0OiAwLiBX
YXMgaGFzLW1hcmtlZC10ZXh0OiBSZWZlcmVuY2VFcnJvcjogVHJ5aW5nIHRvIGFjY2VzcyBvYmpl
Y3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvdW5jb25maXJtZWQtdGV4dC1uYXZpZ2F0aW9uLXdp
dGgtcGFnZS1jYWNoZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMCwwICsxICMjCit0ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2lucHV0L3VuY29uZmlybWVkLXRleHQtbmF2aWdhdGlvbi13aXRoLXBhZ2UtY2FjaGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC91
bmNvbmZpcm1lZC10ZXh0LW5hdmlnYXRpb24td2l0aC1wYWdlLWNhY2hlLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC91bmNvbmZpcm1l
ZC10ZXh0LW5hdmlnYXRpb24td2l0aC1wYWdlLWNhY2hlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IHdoYXQgaGFwcGVucyB3
aGVuIG5hdmlnYXRpbmcgZnJvbSBhIHBhZ2Ugd2l0aCB1bmNvbmZpcm1lZCBpbmxpbmUgaW5wdXQg
d2hlbiB0aGUgcGFnZSBpcyBjYWNoZWFibGU8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5IiwgMSk7Cit9CisKKy8vIFdpbmRvdyB3ZSB3aWxsIGJlIGNvbnRyb2xsaW5nLgordmFyIHRh
cmdldDsKKworLy8gQ291bnRlciBmb3IgdmlzaXRzIHRvIGZpcnN0IHBhZ2UuCit2YXIgZmlyc3RQ
YWdlVmlzaXRzID0gMDsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5j
dGlvbihldmVudCkgeworCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdmaXJzdC1wYWdlJykgewor
ICAgICAgICBmaXJzdFBhZ2VWaXNpdHMrKzsKKyAgICAgICAgaWYgKGZpcnN0UGFnZVZpc2l0cyA9
PSAxKSB7CisgICAgICAgICAgICBkZWJ1ZygiQWRkaW5nIHVuY29uZmlybWVkIGlubGluZSB0ZXh0
Li4uIik7CisgICAgICAgICAgICB0YXJnZXQucG9zdE1lc3NhZ2UoJ2FkZC11bmNvbmZpcm1lZC10
ZXh0JywgJyonKTsKKyAgICAgICAgICAgIHRhcmdldC5wb3N0TWVzc2FnZSgnaGFzLW1hcmtlZC10
ZXh0JywgJyonKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRhcmdldC5wb3N0TWVz
c2FnZSgnaGFzLW1hcmtlZC10ZXh0JywgJyonKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZignaGFzLW1hcmtlZC10ZXh0OiAn
KSA9PSAwKSB7CisgICAgICAgIGlmIChmaXJzdFBhZ2VWaXNpdHMgPT0gMSkgeworICAgICAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAiJ2hhcy1tYXJrZWQtdGV4dDogMSciKTsKKyAgICAg
ICAgICAgIGRlYnVnKCJOYXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHBhZ2Ugd2l0aCB1bmNvbmZpcm1l
ZCBpbmxpbmUgaW5wdXQuLi4iKTsKKyAgICAgICAgICAgIHRhcmdldC5wb3N0TWVzc2FnZSgnbmF2
aWdhdGUtb3RoZXItcGFnZScsICcqJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBz
aG91bGRCZSgiZXZlbnQuZGF0YSIsICInaGFzLW1hcmtlZC10ZXh0OiAwJyIpOworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChldmVudC5kYXRhID09PSAnb3RoZXItcGFnZScpIHsKKyAgICAgICAgZGVidWcoIk5h
dmlnYXRpbmcgYmFjayB0byB0aGUgZmlyc3QgcGFnZS4uLiIpOworICAgICAgICB0YXJnZXQucG9z
dE1lc3NhZ2UoJ25hdmlnYXRlLWJhY2snLCAnKicpOworICAgICAgICByZXR1cm47CisgICAgfQor
Cit9LCBmYWxzZSk7CisKKy8vIE9wZW4gdGhlIHRhcmdldCB3aW5kb3cgYW5kIHdlIHdpbGwgc3Rh
cnQgdG8gZXhjaGFuZ2UgbWVzc2FnZXMuCitvbmxvYWQgPSBmdW5jdGlvbigpIHsgdGFyZ2V0ID0g
d2luZG93Lm9wZW4oJ3Jlc291cmNlcy9maXJzdC1wYWdlLmh0bWwnKTsgfQorCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvdW5jb25maXJtZWQtdGV4dC1uYXZp
Z2F0aW9uLXdpdGgtcGFnZS1jYWNoZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTAsMCArMSAjIwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3Jlc291cmNl
cy9maXJzdC1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvcmVzb3VyY2VzL2ZpcnN0LXBhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3Jlc291cmNlcy9maXJzdC1w
YWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgY29udGVudGVkaXRhYmxlPjwvZGl2PgorCis8c2NyaXB0PgorLy8gTm90aWZ5IG9wZW5l
ci4KK3dpbmRvdy5vbnBhZ2VzaG93ID0gZnVuY3Rpb24oKSB7IG9wZW5lci5wb3N0TWVzc2FnZSgn
Zmlyc3QtcGFnZScsICcqJyk7IH0KKworLy8gT3VyIG9wZW5lciB3aWxsIHRlbGwgdXMgdG8gcGVy
Zm9ybSB2YXJpb3VzIGxvYWRzLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBm
dW5jdGlvbihldmVudCkgeworCisgICAgLy8gTmF2aWdhdGUgdG8gb3RoZXIgcGFnZS4KKyAgICBp
ZiAoZXZlbnQuZGF0YSA9PT0gJ25hdmlnYXRlLW90aGVyLXBhZ2UnKSB7CisgICAgICAgIHdpbmRv
dy5sb2NhdGlvbiA9ICdvdGhlci1wYWdlLmh0bWwnOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdhZGQtdW5jb25maXJtZWQtdGV4dCcpIHsKKyAgICAg
ICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCJ0ZXN0IiwgMCwgNCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZXZlbnQuZGF0YSA9PT0gJ2hhcy1tYXJrZWQt
dGV4dCcpIHsKKyAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgLy8gRHVtcFJlbmRlclRyZWUg
ZG9lcyBub3QgcmVzdG9yZSB0ZXh0SW5wdXRDb250cm9sbGVyIGFmdGVyIG5hdmlnYXRpbmcgYmFj
ay4KKyAgICAgICAgLy8gRklYTUU6IEZpeCB0ZXh0SW5wdXRDb250cm9sbGVyIHRvIHdvcmsgaW4g
cmVzdG9yZWQgcGFnZXMuIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gV29ya2Fyb3Vu
ZCBmb3IgYSBEUlQgdnMuIFdUUiBkaWZmZXJlbmNlIC0gb25lIHJldHVybnMgYSBudW1iZXIsIGFu
ZCBhbm90aGVyIGEgYm9vbGVhbi4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBGaXggdGhlIHRvb2xz
IGluc3RlYWQgb2Ygd29ya2luZyBhcm91bmQgdGhlIGRpZmZlcmVuY2UuCisgICAgICAgICAgICBy
ZXN1bHQgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc01hcmtlZFRleHQoKSA/ICIxIiA6ICIwIjsK
KyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGV4OworICAgICAg
ICB9CisgICAgICAgIG9wZW5lci5wb3N0TWVzc2FnZSgnaGFzLW1hcmtlZC10ZXh0OiAnICsgcmVz
dWx0LCAnKicpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9LCBmYWxzZSk7CisKK3ZhciBp
bnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVswXTsKK2lucHV0LmZv
Y3VzKCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvcmVzb3VyY2VzL2ZpcnN0
LXBhZ2UuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMK
K3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9yZXNvdXJjZXMvb3RoZXItcGFnZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3Jl
c291cmNlcy9vdGhlci1wYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9yZXNvdXJjZXMvb3RoZXItcGFnZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgorLy8gTm90
aWZ5IG9wZW5lci4KK3dpbmRvdy5vbnBhZ2VzaG93ID0gZnVuY3Rpb24oKSB7IG9wZW5lci5wb3N0
TWVzc2FnZSgnb3RoZXItcGFnZScsICcqJyk7IH0KKworLy8gT3VyIG9wZW5lciB3aWxsIHRlbGwg
dXMgdG8gcGVyZm9ybSB2YXJpb3VzIGxvYWRzLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21l
c3NhZ2UnLCBmdW5jdGlvbihldmVudCkgeworCisgICAgLy8gTmF2aWdhdGUgZmlyc3QgcmVzb3Vy
Y2UuCisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICduYXZpZ2F0ZS1maXJzdC1wYWdlJykgeworICAg
ICAgICB3aW5kb3cubG9jYXRpb24gPSAnZmlyc3QtcGFnZS5odG1sJzsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIE5hdmlnYXRlIGJhY2suCisgICAgaWYgKGV2ZW50LmRhdGEgPT09
ICduYXZpZ2F0ZS1iYWNrJykgeworICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvcmVzb3VyY2VzL290aGVyLXBhZ2UuaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5Cg==
</data>
<flag name="review"
          id="223426"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="223527"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>