<?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>125667</bug_id>
          
          <creation_ts>2013-12-12 16:40:39 -0800</creation_ts>
          <short_desc>WK2: Add support for inline candidates on iOS</short_desc>
          <delta_ts>2013-12-13 14:08:48 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>benjamin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959402</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-12-12 16:40:39 -0800</bug_when>
    <thetext>We need to support the equivalent of input methods on iOS using WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959405</commentid>
    <comment_count>1</comment_count>
      <attachid>219135</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-12-12 16:51:22 -0800</bug_when>
    <thetext>Created attachment 219135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959414</commentid>
    <comment_count>2</comment_count>
      <attachid>219135</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-12-12 17:36:27 -0800</bug_when>
    <thetext>Comment on attachment 219135
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:1124
&gt; +    void revealSelection();

What about renaming this to notifyRevealedSelection, and renaming WebChromeClient::notifyRevealedSelectionByScrollingFrame to WebChromeClient::notifyRevealedSelection()?

&gt; Source/WebKit2/UIProcess/API/ios/WKInteractionView.mm:1413
&gt; +    _markedText = (_page-&gt;editorState().hasComposition) ? _page-&gt;editorState().markedText : String();

String() -&gt; nil?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:634
&gt; +            result.lastMarkedRect = compositionRects[compositionRects.size() - 1].rect();

I think you can just use compositionRects.last().rect() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959609</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-12-13 11:46:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
Thanks for the review.
&gt; (From update of attachment 219135 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219135&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:1124
&gt; &gt; +    void revealSelection();
&gt; 
&gt; What about renaming this to notifyRevealedSelection, and renaming WebChromeClient::notifyRevealedSelectionByScrollingFrame to WebChromeClient::notifyRevealedSelection()?
Yes, I&apos;ll do that.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/ios/WKInteractionView.mm:1413
&gt; &gt; +    _markedText = (_page-&gt;editorState().hasComposition) ? _page-&gt;editorState().markedText : String();
&gt; 
&gt; String() -&gt; nil?
the compiler complains. Not sure I understand why....
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:634
&gt; &gt; +            result.lastMarkedRect = compositionRects[compositionRects.size() - 1].rect();
&gt; 
&gt; I think you can just use compositionRects.last().rect() here.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959610</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-12-13 11:50:16 -0800</bug_when>
    <thetext>Actually I will rename the WebChromeClient method in a later patch.
I also want to remove the WebFrame parameter that is unused in both WebKit2 and WebKit1 implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959674</commentid>
    <comment_count>5</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-12-13 14:08:48 -0800</bug_when>
    <thetext>Committed revision 160566.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219135</attachid>
            <date>2013-12-12 16:51:22 -0800</date>
            <delta_ts>2013-12-12 17:36:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>inline-candidate-webkit.txt</filename>
            <type>text/plain</type>
            <size>16526</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDUxNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEyLTEyICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV0syOiBBZGQgc3VwcG9ydCBm
b3IgaW5saW5lIGNhbmRpZGF0ZXMgb24gaU9TLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIHN0YXRlIHJlcXVpcmVkIHRvIHN1cHBvcnQgaW5saW5l
IGNhbmRpZGF0ZXMgaXMgY2FjaGVkIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICBBc3luY2hy
b25vdXMgbWVzc2FnZXMgYXJlIHVzZWQgdG8gc2V0IGFuZCBjb25maXJtIHRoZSBjb21wb3NpdGlv
bi4KKworICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvclN0YXRlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbToKKyAgICAgICAgKC1bV0tJbnRlcmFjdGlv
blZpZXcgdGV4dEZpcnN0UmVjdF0pOgorICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmlldyB0ZXh0
TGFzdFJlY3RdKToKKyAgICAgICAgKC1bV0tJbnRlcmFjdGlvblZpZXcgaGFzTWFya2VkVGV4dF0p
OgorICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmlldyBtYXJrZWRUZXh0XSk6CisgICAgICAgICgt
W1dLSW50ZXJhY3Rpb25WaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpdKToKKyAgICAg
ICAgKC1bV0tJbnRlcmFjdGlvblZpZXcgdW5tYXJrVGV4dF0pOgorICAgICAgICAoLVtXS0ludGVy
YWN0aW9uVmlldyBfc2VsZWN0aW9uQ2hhbmdlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJldmVhbFNlbGVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6Om5vdGlmeVJldmVhbGVkU2VsZWN0aW9uQnlTY3JvbGxpbmdGcmFtZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKToKKwogMjAxMy0xMi0xMiAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGF0YWJhc2VQcm9jZXNzIEluZGV4ZWRE
QjogRXN0YWJsaXNoIGEgbWV0YWRhdGEgYmFja2luZyBzdG9yZSBvbiBkaXNrCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAJKHJldmlzaW9uIDE2MDUwOCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYg
KzUyLDkgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZQogICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uUmVjdHM7CiAgICAgZW5jb2RlciA8PCBzZWxlY3RlZFRleHRMZW5n
dGg7CiAgICAgZW5jb2RlciA8PCB3b3JkQXRTZWxlY3Rpb247CisgICAgZW5jb2RlciA8PCBmaXJz
dE1hcmtlZFJlY3Q7CisgICAgZW5jb2RlciA8PCBsYXN0TWFya2VkUmVjdDsKKyAgICBlbmNvZGVy
IDw8IG1hcmtlZFRleHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTk2LDYgKzk5
LDEyIEBAIGJvb2wgRWRpdG9yU3RhdGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWUKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndvcmRBdFNlbGVj
dGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5maXJzdE1hcmtlZFJlY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubGFzdE1hcmtlZFJlY3QpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWFya2VkVGV4dCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0VkaXRvclN0YXRlLmgJKHJldmlzaW9uIDE2MDUwOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw5IEBA
IHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+
IHNlbGVjdGlvblJlY3RzOwogICAgIHVpbnQ2NF90IHNlbGVjdGVkVGV4dExlbmd0aDsKICAgICBT
dHJpbmcgd29yZEF0U2VsZWN0aW9uOworICAgIFdlYkNvcmU6OkludFJlY3QgZmlyc3RNYXJrZWRS
ZWN0OworICAgIFdlYkNvcmU6OkludFJlY3QgbGFzdE1hcmtlZFJlY3Q7CisgICAgU3RyaW5nIG1h
cmtlZFRleHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE2MDUwOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyMSw2
ICsxMTIxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBib29sIGhhc05leHRGb2N1c2FibGUsIGJvb2wgaGFzUHJldmlv
dXNGb2N1c2FibGUpOwogICAgIHZvaWQgc3RvcEFzc2lzdGluZ05vZGUoKTsKKyAgICB2b2lkIHJl
dmVhbFNlbGVjdGlvbigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lmIFVTRShTT1VQ
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAxNjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMDgsNiArMzA4LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIFN0YXJ0QXNzaXN0aW5nTm9kZShX
ZWJDb3JlOjpJbnRSZWN0IHNjcm9sbFJlY3QsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwgYm9vbCBo
YXNQcmV2aW91c0ZvY3VzYWJsZSkKICAgICBTdG9wQXNzaXN0aW5nTm9kZSgpCisgICAgUmV2ZWFs
U2VsZWN0aW9uKCkKICNlbmRpZgogCiAgICAgIyBTZWFyY2ggcG9wdXAgbWVudXMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25W
aWV3Lm1tCShyZXZpc2lvbiAxNjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3
IEBAIEBpbnRlcmZhY2UgV0tJbnRlcmFjdGlvblZpZXcgKFByaXZhdGUpCiAgICAgdWludDY0X3Qg
X2xhdGVzdFRhcEhpZ2hsaWdodElEOwogICAgIEJPT0wgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZDsK
ICAgICBXS0F1dG9Db3JyZWN0aW9uRGF0YSBfYXV0b2NvcnJlY3Rpb25EYXRhOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX21hcmtlZFRleHQ7CiB9CiAKIEBzeW50aGVzaXplIGlucHV0RGVsZWdh
dGUgPSBfaW5wdXREZWxlZ2F0ZTsKQEAgLTgyMCwxMSArODIxLDYgQEAgc3RhdGljIHZvaWQgYXV0
b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFZlYwogICAgIGF1dG9jb3JyZWN0aW9uRGF0YS0+Y29tcGxl
dGlvbkhhbmRsZXIgPSBuaWw7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCB3
aGVuIHdlIG1ha2UgcmVxdWVzdEF1dG9jb3JyZWN0aW9uUmVjdHNGb3JTdHJpbmcgbm9uIG9wdGlv
bmFsLgotLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhOihOU1N0cmluZyAqKXRleHQg
d2l0aENvcnJlY3Rpb246KE5TU3RyaW5nICopY29ycmVjdGlvbgotewotfQotCiAvLyBUaGUgY29t
cGxldGlvbiBoYW5kbGVyIGNhbiBwYXNzIG5pbCBpZiBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUg
YWN0dWFsIHRleHQgcHJlY2VkaW5nIHRoZSBpbnNlcnRpb24gcG9pbnQuCiAtICh2b2lkKXJlcXVl
c3RBdXRvY29ycmVjdGlvblJlY3RzRm9yU3RyaW5nOihOU1N0cmluZyAqKWlucHV0IHdpdGhDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9y
SW5wdXQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CkBAIC04MzgsMTIgKzgzNCwxMiBAQCAtICh2b2lk
KXJlcXVlc3RBdXRvY29ycmVjdGlvblJlY3RzRm9yU3RyCiAKIC0gKENHUmVjdCl0ZXh0Rmlyc3RS
ZWN0CiB7Ci0gICAgcmV0dXJuIF9hdXRvY29ycmVjdGlvbkRhdGEudGV4dEZpcnN0UmVjdDsKKyAg
ICByZXR1cm4gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uKSA/IF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLmZpcnN0TWFya2VkUmVjdCA6IF9hdXRvY29ycmVjdGlvbkRhdGEudGV4dEZp
cnN0UmVjdDsKIH0KIAogLSAoQ0dSZWN0KXRleHRMYXN0UmVjdAogewotICAgIHJldHVybiBfYXV0
b2NvcnJlY3Rpb25EYXRhLnRleHRMYXN0UmVjdDsKKyAgICByZXR1cm4gKF9wYWdlLT5lZGl0b3JT
dGF0ZSgpLmhhc0NvbXBvc2l0aW9uKSA/IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmxhc3RNYXJrZWRS
ZWN0IDogX2F1dG9jb3JyZWN0aW9uRGF0YS50ZXh0TGFzdFJlY3Q7CiB9CiAKIHN0YXRpYyB2b2lk
IGF1dG9jb3JyZWN0aW9uUmVzdWx0KFdLU3RyaW5nUmVmIGNvcnJlY3Rpb24sIFdLRXJyb3JSZWYg
ZXJyb3IsIHZvaWQqIGNvbnRleHQpCkBAIC04NTcsMTEgKzg1Myw2IEBAIHN0YXRpYyB2b2lkIGF1
dG9jb3JyZWN0aW9uUmVzdWx0KFdLU3RyaW4KICAgICBhdXRvY29ycmVjdGlvbkRhdGEtPmNvbXBs
ZXRpb25IYW5kbGVyID0gbmlsOwogfQogCi0vLyBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQg
d2hlbiB3ZSBtYWtlIGFwcGx5QXV0b2NvcnJlY3Rpb246KE5TU3RyaW5nICopY29ycmVjdGlvbiB0
b1N0cmluZzooTlNTdHJpbmcgKilpbnB1dCB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KFVJV0tBdXRvY29ycmVjdGlvblJlY3RzICpyZWN0c0ZvckNvcnJlY3Rpb24pKWNvbXBsZXRpb25I
YW5kbGVyIG5vbiBvcHRpb25hbC4KLS0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJp
bmcgKiluZXdUZXh0IHRvU3RyaW5nOihOU1N0cmluZyAqKWlucHV0IHdpdGhSZWN0OihDR1JlY3Qp
YXV0b2NvcnJlY3RSZWN0Ci17Ci19Ci0KIC8vIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgc2hvdWxk
IHBhc3MgdGhlIHJlY3Qgb2YgdGhlIGNvcnJlY3Rpb24gdGV4dCBhZnRlciByZXBsYWNpbmcgdGhl
IGlucHV0IHRleHQsIG9yIG5pbCBpZiB0aGUgcmVwbGFjZW1lbnQgY291bGQgbm90IGJlIHBlcmZv
cm1lZC4KIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiljb3JyZWN0aW9u
IHRvU3RyaW5nOihOU1N0cmluZyAqKWlucHV0IHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9yQ29ycmVjdGlvbikpY29tcGxldGlv
bkhhbmRsZXIKIHsKQEAgLTk1OSw2ICs5NTAsMTYgQEAgLSAodm9pZClzZXRTZWxlY3RlZFRleHRS
YW5nZTooVUlUZXh0UmFuZwogewogfQogCistIChCT09MKWhhc01hcmtlZFRleHQKK3sKKyAgICBy
ZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb24gfHwgW19tYXJrZWRUZXh0
IGxlbmd0aF07Cit9CisKKy0gKE5TU3RyaW5nICopbWFya2VkVGV4dAoreworICAgIHJldHVybiBf
bWFya2VkVGV4dC5nZXQoKTsKK30KKwogLSAoVUlUZXh0UmFuZ2UgKiltYXJrZWRUZXh0UmFuZ2UK
IHsKICAgICByZXR1cm4gbmlsOwpAQCAtOTc1LDEwICs5NzYsMTQgQEAgLSAodm9pZClzZXRNYXJr
ZWRUZXh0U3R5bGU6KE5TRGljdGlvbmFyeQogCiAtICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3Ry
aW5nICopbWFya2VkVGV4dCBzZWxlY3RlZFJhbmdlOihOU1JhbmdlKXNlbGVjdGVkUmFuZ2UKIHsK
KyAgICBfbWFya2VkVGV4dCA9IG1hcmtlZFRleHQ7CisgICAgX3BhZ2UtPnNldENvbXBvc2l0aW9u
KG1hcmtlZFRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4oKSwgc2Vs
ZWN0ZWRSYW5nZS5sb2NhdGlvbiwgc2VsZWN0ZWRSYW5nZS5sZW5ndGgsIDAsIDApOwogfQogCiAt
ICh2b2lkKXVubWFya1RleHQKIHsKKyAgICBfbWFya2VkVGV4dCA9IG5pbDsKKyAgICBfcGFnZS0+
Y29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIC0gKFVJVGV4dFBvc2l0aW9uICopYmVnaW5uaW5n
T2ZEb2N1bWVudApAQCAtMTMwMSwxMSArMTMwNiw2IEBAIC0gKERPTVJhbmdlICopd29yZFJhbmdl
Q29udGFpbmluZ0NhcmV0U2UKICAgICByZXR1cm4gbmlsOwogfQogCi0tIChOU1N0cmluZyAqKW1h
cmtlZFRleHQKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCiAtICh2b2lkKXNldE1hcmtlZFRleHQ6
KE5TU3RyaW5nICopdGV4dAogewogfQpAQCAtMTQxMCw2ICsxNDEwLDcgQEAgLSAodm9pZClfc3Rv
cEFzc2lzdGluZ05vZGUKIAogLSAodm9pZClfc2VsZWN0aW9uQ2hhbmdlZAogeworICAgIF9tYXJr
ZWRUZXh0ID0gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uKSA/IF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLm1hcmtlZFRleHQgOiBTdHJpbmcoKTsKICAgICAvLyBGSVhNRTogV2UgbmVl
ZCB0byBmaWd1cmUgb3V0IHdoYXQgdG8gZG8gaWYgdGhlIHNlbGVjdGlvbiBpcyBjaGFuZ2VkIGJ5
IEphdmFzY3JpcHQuCiAgICAgaWYgKCFfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnMpCiAgICAgICAg
IFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzZWxlY3Rpb25DaGFuZ2VkXTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lv
biAxNjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsMTUgKzgzLDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3aW5kb3dBbmRWaWV3RnJhbWVzQ2gKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgVmVjdG9yPENvbXBv
c2l0aW9uVW5kZXJsaW5lPiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3Qp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZSwgdWludDY0X3Qgc2VsZWN0aW9u
U3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCwgdWludDY0X3QsIHVpbnQ2NF90KQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsK
IAorICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0
ZXh0LCB1bmRlcmxpbmUsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpLCBtX3BhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24o
KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24o
KQpAQCAtMjY0LDYgKzI2OSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1Rv
dWNoZXMoCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRo
VHdvVG91Y2hlcyhmcm9tLCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJldmVhbFNlbGVjdGlvbigp
Cit7CisgICAgbV9wYWdlQ2xpZW50LnNlbGVjdGlvbkRpZENoYW5nZSgpOworfQorCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSkKIHsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVu
ZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpKSwgbV9wYWdlSUQp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbQkocmV2aXNpb24gMTYw
NTA4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpjbGVhckNvbnRlbnRDaGFuZ2UKIAogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6Om5vdGlmeVJldmVhbGVkU2VsZWN0aW9uQnlTY3JvbGxpbmdGcmFtZShXZWJDb3JlOjpGcmFt
ZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmV2ZWFsU2VsZWN0aW9uKCkpOwogfQogCiBib29sIFdlYkNocm9tZUNs
aWVudDo6aXNTdG9wcGluZygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNCw2ICs2
MjQsMTggQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxl
Y3Rpb24oKTsKKyAgICBpZiAoZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgeworICAg
ICAgICBSZWZQdHI8UmFuZ2U+IGNvbXBvc2l0aW9uUmFuZ2UgPSBmcmFtZS5lZGl0b3IoKS5jb21w
b3NpdGlvblJhbmdlKCk7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBj
b21wb3NpdGlvblJlY3RzOworICAgICAgICBjb21wb3NpdGlvblJhbmdlLT5jb2xsZWN0U2VsZWN0
aW9uUmVjdHMoY29tcG9zaXRpb25SZWN0cyk7CisgICAgICAgIGlmIChjb21wb3NpdGlvblJlY3Rz
LnNpemUoKSkKKyAgICAgICAgICAgIHJlc3VsdC5maXJzdE1hcmtlZFJlY3QgPSBjb21wb3NpdGlv
blJlY3RzWzBdLnJlY3QoKTsKKyAgICAgICAgaWYgKGNvbXBvc2l0aW9uUmVjdHMuc2l6ZSgpID4g
MSkKKyAgICAgICAgICAgIHJlc3VsdC5sYXN0TWFya2VkUmVjdCA9IGNvbXBvc2l0aW9uUmVjdHNb
Y29tcG9zaXRpb25SZWN0cy5zaXplKCkgLSAxXS5yZWN0KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJlc3VsdC5sYXN0TWFya2VkUmVjdCA9IHJlc3VsdC5maXJzdE1hcmtlZFJlY3Q7Cisg
ICAgICAgIHJlc3VsdC5tYXJrZWRUZXh0ID0gcGxhaW5UZXh0KGNvbXBvc2l0aW9uUmFuZ2UuZ2V0
KCkpOworICAgIH0KICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewogICAgICAgICByZXN1
bHQuY2FyZXRSZWN0QXRTdGFydCA9IHNlbGVjdGlvbi5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAg
ICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdEVuZCA9IHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0OwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZp
c2lvbiAxNjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsNiArNDEwLDggQEAgcHVibGljOgogICAgIHZvaWQg
cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVj
dGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9u
KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZUVuZCk7CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZl
Y3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qg
c2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCk7CisgICAgdm9pZCBjb25maXJt
Q29tcG9zaXRpb24oKTsKICNlbmRpZgogCiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKiBub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKTsKQEAgLTQ3
OSwxMSArNDgxLDExIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElu
cHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdGV4dElucHV0KTsKIAotICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVp
bnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVu
ZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKTsKLSAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihF
ZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oRWRpdG9y
U3RhdGUmIG5ld1N0YXRlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZvaWQgaW5zZXJ0VGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5l
d1N0YXRlKTsKKyAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBz
ZWxlY3Rpb25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNlbWVu
dFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIEVkaXRvclN0YXRlJiBu
ZXdTdGF0ZSk7CisgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oRWRpdG9yU3RhdGUmIG5ld1N0
YXRlKTsKICNlbmRpZgogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9u
LCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3Qm
IGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAx
NjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmlu
ZyB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgQXBwbHlB
dXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKICAgICBJbnNlcnRUZXh0KFN0cmluZyB0ZXh0LCB1aW50NjRfdCBy
ZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpCisgICAg
U2V0Q29tcG9zaXRpb24oU3RyaW5nIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNl
bGVjdGlvbkVuZCkKKyAgICBDb25maXJtQ29tcG9zaXRpb24oKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQpAQCAtMjcxLDggKzI3Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIFJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChib29sIHJlc3VsdCkKIAogICAgICMgVGV4dCBpbnB1dC4KLSAg
ICBTZXRDb21wb3NpdGlvbihTdHJpbmcgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9u
VW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rpb25TdGFydCwgdWludDY0X3Qg
c2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJl
cGxhY2VtZW50UmFuZ2VFbmQpIC0+IChXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQotICAg
IENvbmZpcm1Db21wb3NpdGlvbigpIC0+IChXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQog
ICAgIENhbmNlbENvbXBvc2l0aW9uKCkgLT4gKFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUp
CiAgICAgR2V0TWFya2VkUmFuZ2UoKSAtPiAodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxl
bmd0aCkKICAgICBHZXRTZWxlY3RlZFJhbmdlKCkgLT4gKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50
NjRfdCBsZW5ndGgpCkBAIC0yODYsNiArMjg2LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1Mp
CiAgICAgSW5zZXJ0VGV4dChTdHJpbmcgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0
YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKSAtPiAoYm9vbCBoYW5kbGVkLCBXZWJL
aXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQorICAgIFNldENvbXBvc2l0aW9uKFN0cmluZyB0ZXh0
LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2
NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2NF90IHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkgLT4gKFdlYktp
dDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCisgICAgQ29uZmlybUNvbXBvc2l0aW9uKCkgLT4gKFdl
YktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAjZW5kaWYKICAgICBTZXRNaW5pbXVtTGF5b3V0
U2l6ZShXZWJDb3JlOjpJbnRTaXplIG1pbmltdW1MYXlvdXRTaXplKQogICAgIFNldEF1dG9TaXpp
bmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCBzaG91bGRFeHBhbmQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CShyZXZpc2lvbiAxNjA1MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTg3LDE0ICs4NywxOCBAQCB2b2lk
IFdlYlBhZ2U6OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90LCB1
aW50NjRfdCwgRWRpdG9yU3RhdGUmKQordm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5k
ZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisKKyAgICBpZiAoZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuc2V0
Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKEVkaXRvclN0YXRlJikK
K3ZvaWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CisgICAgZnJhbWUuZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24oRWRpdG9yU3RhdGUmKQo=
</data>
<flag name="review"
          id="242724"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>