<?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>132033</bug_id>
          
          <creation_ts>2014-04-22 17:46:08 -0700</creation_ts>
          <short_desc>[iOS][WK2] Split iOS touch event dispatch for the regular touch event dispatch</short_desc>
          <delta_ts>2014-04-22 22:53:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003132</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-22 17:46:08 -0700</bug_when>
    <thetext>[iOS][WK2] Split iOS touch event dispatch for the regular touch event dispatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003140</commentid>
    <comment_count>1</comment_count>
      <attachid>229936</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-22 18:12:38 -0700</bug_when>
    <thetext>Created attachment 229936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003142</commentid>
    <comment_count>2</comment_count>
      <attachid>229936</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-22 18:27:38 -0700</bug_when>
    <thetext>Comment on attachment 229936
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1515
&gt; +    m_process-&gt;responsivenessTimer()-&gt;start();
&gt; +    bool handled = false;
&gt; +    m_process-&gt;sendSync(Messages::WebPage::TouchEventSync(event), Messages::WebPage::TouchEventSync::Reply(handled), m_pageID);
&gt; +    didReceiveEvent(event.type(), handled);
&gt; +    m_pageClient.doneWithTouchEvent(event, handled);
&gt; +    m_process-&gt;responsivenessTimer()-&gt;stop();

Would be nice to have a RAII class for start/stop.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1531
&gt; +    m_process-&gt;send(Messages::EventDispatcher::TouchEvent(m_pageID, event), 0);

What is the last param?

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:698
&gt; +    void handleSynchronousTouchEvent(const NativeWebTouchEvent&amp;);

handleTouchEventSynchronously?

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:699
&gt; +    void sendAsynchronousTouchEvent(const NativeWebTouchEvent&amp;);

handleTouchEventAsynchronously?

&gt; Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp:177
&gt; +            TouchEventQueue&amp; queuedEvents = addResult.iterator-&gt;value;
&gt; +            ASSERT(!queuedEvents.isEmpty());
&gt; +            const WebTouchEvent&amp; lastTouchEvent = queuedEvents.last();
&gt; +            WebEvent::Type type = lastTouchEvent.type();
&gt; +            if (type == WebEvent::TouchMove)
&gt; +                queuedEvents.last() = touchEvent;

Not quite sure what you are doing here. Coalescing move events? Can you add a comment or name the variables to clarify?

&gt; Source/WebKit2/WebProcess/WebPage/EventDispatcher.h:77
&gt; +    void touchEvent(uint64_t pageID, const WebTouchEvent&amp;);

I wish we had a typedef for pageID

&gt; Source/WebKit2/WebProcess/WebPage/EventDispatcher.h:100
&gt; +    // FIXME: verify what is the right value for the inline capacity.

Do this?

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:2062
&gt; +void WebPage::dispatchAsynchronousTouchEventsQueue(const Vector&lt;WebTouchEvent, 5&gt;&amp; queue)

You don&apos;t dispatch a queue, so dispatchAsynchronousTouchEventsInQueue or dispatchAsynchronousTouchEvents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003171</commentid>
    <comment_count>3</comment_count>
      <attachid>229950</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-22 20:58:58 -0700</bug_when>
    <thetext>Created attachment 229950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003193</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-22 22:51:09 -0700</bug_when>
    <thetext>Thanks for the review!

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1531
&gt; &gt; +    m_process-&gt;send(Messages::EventDispatcher::TouchEvent(m_pageID, event), 0);
&gt; 
&gt; What is the last param?

The target, but in this case it is on a different queue.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/EventDispatcher.h:100
&gt; &gt; +    // FIXME: verify what is the right value for the inline capacity.
&gt; 
&gt; Do this?

Oops :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003194</commentid>
    <comment_count>5</comment_count>
      <attachid>229950</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-22 22:53:27 -0700</bug_when>
    <thetext>Comment on attachment 229950
Patch

Clearing flags on attachment: 229950

Committed r167698: &lt;http://trac.webkit.org/changeset/167698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003195</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-22 22:53:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229936</attachid>
            <date>2014-04-22 18:12:38 -0700</date>
            <delta_ts>2014-04-22 20:58:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132033-20140422181213.patch</filename>
            <type>text/plain</type>
            <size>23397</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTE5ZWYxMWZmYmVlZTMw
OWU3NjJjMmRhMWFlMzI2ZDEyYTZlNGIxYS4uOWZhNWJkMzQzOTFkMDUzMTgyODMyNzc3NjQwMmI5
YmE2MmZkNGFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE0LTA0LTIyICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
U3BsaXQgaU9TIHRvdWNoIGV2ZW50IGRpc3BhdGNoIGZvciB0aGUgcmVndWxhciB0b3VjaCBldmVu
dCBkaXNwYXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMyMDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGdlbmVyaWMgdG91Y2ggZXZlbnQgZGlzcGF0Y2hpbmcgZG9lcyBub3Qgd29yayB3ZWxs
IHdpdGggaU9TIGdlc3R1cmUgcmVjb2duaXplcnMuCisgICAgICAgIFNvbWUgZXZlbnRzIGFyZSBy
ZXF1aXJlZCB0byBiZSBzeW5jaHJvbm91cywgd2hpbGUgb3RoZXIgbmVlZHMgY2FuIGJlIGFzeW5j
aHJvbm91cyBhbmQKKyAgICAgICAgY2FuIGV2ZW4gdXNlIGV2ZW50IGNvYWxlc2NpbmcuIFdlIG9u
bHkgbmVlZCBVSSBjYWxsYmFjayBmb3IgdGhlIHN5bmNocm9ub3VzIGV2ZW50cy4KKworICAgICAg
ICBQcmV2aW91c2x5LCB0aGF0IHdhcyBpbXBsZW1lbnRlZCBieSBjaGFuZ2luZyB0aGUgcHJvcGVy
dHkgU2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkKKyAgICAgICAgb24gV2ViUGFnZVByb3h5
LiBUaGF0IGlzIGNhdXNpbmcgaXNzdWVzIHdoZW4gc3luY2hyb25vdXMgZXZlbnRzIGFyZSBzZW50
IHJpZ2h0IGFmdGVyIGFzeW5jaHJvbm91cworICAgICAgICBldmVudHMgYmVjYXVzZSB0aGUgcmVz
cG9uc2VzIGluIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KCkgZWFzaWx5IGdldCBvdXQg
b2Ygb3JkZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjb21wbGV0ZWx5IHNwbGl0IHRoZSBVSUdl
c3R1cmVSZWNvZ25pemVyRGlzcGF0Y2hpbmcgZnJvbSB0aGUgbm9ybWFsIGFzeW5jaHJvbm91cyBl
dmVudCBkaXNwYXRjaGluZy4KKworICAgICAgICBTeW5jaHJvbm91cyBldmVudHMgYXJlIHNlbnQg
ZGlyZWN0bHkgdG8gdGhlIFdlYlByb2Nlc3MgYW5kIHJlcG9ydCB0aGUgcmVzdWx0IHRvIHRoZSBQ
YWdlQ2xpZW50IHJpZ2h0IGF3YXkuCisKKyAgICAgICAgQXN5bmNocm9ub3VzIGV2ZW50cyBhcmUg
c2VudCB0byB0aGUgRXZlbnREaXNwYXRjaGVyIHdoZXJlIHRoZXkgYXJlIGNvYWxlc2NlZCB1bnRp
bCB0aGUgbWFpbiB0aHJlYWQgaXMgZnJlZQorICAgICAgICB0byBwcm9jZXNzIGV2ZW50cy4KKwor
ICAgICAgICBUaGVyZSBjYW4gYmUgYSByYWNlIHdoZXJlIGEgc3luY2hyb25vdXMgZXZlbnQgY29t
ZXMgYmVmb3JlIHRoZSBhc3luY2hyb25vdXMgZXZlbnRzIGFyZSBwcm9jZXNzZWQuIEluIHRoYXQg
Y2FzZSwKKyAgICAgICAgdGhlIHN5bmNocm9ub3VzIGV2ZW50IGhhbmRsZXIgc3RhcnRzIGJ5IGdl
dHRpbmcgdGhlIGV2ZW50cyBvdXQgb2YgdGhlIEV2ZW50RGlzcGF0Y2hlciBhbmQgZGlzcGF0Y2gg
dGhlbSBmaXJzdC4KKworICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6OnVuaXF1ZUlkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTaGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW06CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2VuZEFzeW5jaHJvbm91c1RvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRvdWNoRXZlbnRz
UmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2ViVG91Y2hFdmVudDpX
ZWJLaXQ6OnByZXZlbnRzTmF0aXZlR2VzdHVyZXM6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6RXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVy
OjpjbGVhclF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50
RGlzcGF0Y2hlcjo6Z2V0UXVldWVkVG91Y2hFdmVudHNGb3JQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6RXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6RXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvRXZlbnREaXNwYXRjaGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoVG91Y2hFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRvdWNoRXZlbnRTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRp
ZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzUXVldWUpOgorCiAyMDE0
LTA0LTIxICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICB0b3BDb250
ZW50SW5zZXQgZG9lcyBub3QgcGxheSB3ZWxsIHdpdGggZnVsbHNjcmVlbiBlbGVtZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKaW5kZXggYzQyMDBlYjNk
ZjVlMWY0MGY0Y2UzNTMwNGMwZjIwNTk1MzJjNzE2ZS4uZmRiZWZjNjNiNDM1ZDVkZGIwZWE1NWFi
NjhlNDhmZjBkYThjNDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91
Y2hFdmVudC5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIE5hdGl2ZVdlYlRvdWNoRXZlbnQgOiBw
dWJsaWMgV2ViVG91Y2hFdmVudCB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGV4
cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25p
emVyICopOwotICAgIHVuc2lnbmVkIHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJ
RDsgfQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYpOwogICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoR2RrRXZlbnQq
LCBXZWJDb3JlOjpHdGtUb3VjaENvbnRleHRIZWxwZXImKTsKQEAgLTYwLDkgKzU5LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHVuc2lnbmVk
IG1fdW5pcXVlSUQ7Ci0jZWxpZiBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oR1RLKQogICAg
IEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAgICAgY29uc3QgV2ViQ29yZTo6
R3RrVG91Y2hDb250ZXh0SGVscGVyJiBtX3RvdWNoQ29udGV4dDsKICNlbGlmIFBMQVRGT1JNKEVG
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hF
dmVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVu
dElPUy5tbQppbmRleCBlNWZjMzI0NDg3ODA0OGFhY2MzMjhhN2ZiMDBiZGQ2ZDUzZTU1MTljLi41
YjVkNzQyMTFlOGI4MTg5ZmZhNGJhMjYxZTk3NmRkOTM4MTBlZWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tCkBAIC0zNyw4
ICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdW5zaWduZWQgdW5pcXVl
VG91Y2hFdmVudElkSW5kZXggPSAwOwotCiBzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHdl
YkV2ZW50VHlwZUZvclVJV2ViVG91Y2hFdmVudFR5cGUoVUlXZWJUb3VjaEV2ZW50VHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtOTksNyArOTcsNiBAQCBzdGF0aWMgaW5saW5l
IFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IGV4dHJhY3RXZWJUb3VjaFBvaW50KFVJV2Vi
VG91Y2hFdmVudAogCiBOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KFVJ
V2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqZ2VzdHVyZVJlY29nbml6ZXIpCiAgICAg
OiBXZWJUb3VjaEV2ZW50KHdlYkV2ZW50VHlwZUZvclVJV2ViVG91Y2hFdmVudFR5cGUoZ2VzdHVy
ZVJlY29nbml6ZXIudHlwZSksIHN0YXRpY19jYXN0PE1vZGlmaWVycz4oMCksIFdURjo6Y3VycmVu
dFRpbWUoKSwgZXh0cmFjdFdlYlRvdWNoUG9pbnQoZ2VzdHVyZVJlY29nbml6ZXIpLCBwb3NpdGlv
bkZvckNHUG9pbnQoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb25JbldpbmRvdyksIGdlc3R1cmVS
ZWNvZ25pemVyLmluSmF2YVNjcmlwdEdlc3R1cmUsIGdlc3R1cmVSZWNvZ25pemVyLnNjYWxlLCBn
ZXN0dXJlUmVjb2duaXplci5yb3RhdGlvbikKLSAgICAsIG1fdW5pcXVlSUQodW5pcXVlVG91Y2hF
dmVudElkSW5kZXgrKykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBhODU4MDYxMzkxNDkwYjE5ZDA1ODBkNTU3YmQzYWYxMmRkOTM5MjE0Li4z
YTgzNzI2YmMwYTY3ZDRlNmE2MjRkNTI3Y2ZhZmE2OWYwYWNkNjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTQ5Myw3ICsxNDkzLDQ4IEBAIGJvb2wg
V2ViUGFnZVByb3h5OjpzaG91bGRTdGFydFRyYWNraW5nVG91Y2hFdmVudHMoY29uc3QgV2ViVG91
Y2hFdmVudCYgdG91Y2hTdGFyCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNUb3VjaEV2ZW50KGNvbnN0IE5h
dGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpUb3VjaFN0YXJ0
KQorICAgICAgICBtX2lzVHJhY2tpbmdUb3VjaEV2ZW50cyA9IHNob3VsZFN0YXJ0VHJhY2tpbmdU
b3VjaEV2ZW50cyhldmVudCk7CisKKyAgICBpZiAoIW1faXNUcmFja2luZ1RvdWNoRXZlbnRzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+
c3RhcnQoKTsKKyAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICBtX3Byb2Nlc3MtPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKKyAgICBk
aWRSZWNlaXZlRXZlbnQoZXZlbnQudHlwZSgpLCBoYW5kbGVkKTsKKyAgICBtX3BhZ2VDbGllbnQu
ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50LCBoYW5kbGVkKTsKKyAgICBtX3Byb2Nlc3MtPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOworCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJF
dmVudDo6VG91Y2hFbmQgfHwgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpUb3VjaENhbmNlbCkK
KyAgICAgICAgbV9pc1RyYWNraW5nVG91Y2hFdmVudHMgPSBmYWxzZTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRBc3luY2hyb25vdXNUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNo
RXZlbnQmIGV2ZW50KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQoZXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpUb3VjaFN0YXJ0KTsKKworICAg
IGlmICghbV9pc1RyYWNraW5nVG91Y2hFdmVudHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fcGFn
ZUlELCBldmVudCksIDApOwogCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6VG91
Y2hFbmQgfHwgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpUb3VjaENhbmNlbCkKKyAgICAgICAg
bV9pc1RyYWNraW5nVG91Y2hFdmVudHMgPSBmYWxzZTsKK30KKworI2VsaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2
ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogewogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMzc5Nyw3
ICszODM4LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qg
b3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICAgICAgbV91aUNsaWVudC0+ZGlkTm90
SGFuZGxlS2V5RXZlbnQodGhpcywgZXZlbnQpOwogICAgICAgICBicmVhazsKICAgICB9Ci0jaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKKyAgICBj
YXNlIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OgorICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoTW92ZToK
KyAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaEVuZDoKKyAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaENh
bmNlbDoKKyAgICAgICAgYnJlYWs7CisjZWxpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNh
c2UgV2ViRXZlbnQ6OlRvdWNoU3RhcnQ6CiAgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hNb3ZlOgog
ICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoRW5kOgpAQCAtNDE1Myw3ICs0MjAwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKQogCiAgICAgbV9wcm9j
ZXNzaW5nTW91c2VNb3ZlRXZlbnQgPSBmYWxzZTsKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIG1fdG91Y2hFdmVudFF1ZXVlLmNsZWFyKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRhMGJiZDdjNWM2YWI5NDdlNGE3OTQ5MTRhYjk4
NGE5ZGFiYmFiNzEuLjU5ZmE4OTc2MDUyNzJkNTkzYzRhNTA3NTkxODRhMmYzYTQzZGY5MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY5NCw3ICs2OTQsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3Vz
ZUV2ZW50Jik7CiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVs
RXZlbnQmKTsKICAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCisgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91c1RvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYpOworICAgIHZvaWQgc2VuZEFzeW5jaHJvbm91c1RvdWNoRXZl
bnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYpOworI2VsaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYp
OwogI2VuZGlmCiAKQEAgLTE1NjMsOCArMTU2NiwxMSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBib29sIG1faXNUcmFja2luZ1RvdWNoRXZlbnRzOworI2VuZGlm
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIERlcXVlPFF1ZXVlZFRvdWNoRXZlbnRzPiBtX3RvdWNoRXZlbnRRdWV1ZTsKICNlbmRpZgor
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgUmVmUHRyPFdlYkNvbG9yUGlja2Vy
PiBtX2NvbG9yUGlja2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBlMzk5ZTU2ZjQxYTBk
ODA5MDU0YzgyNTczZTk5MzEwMjgxMmIzMTZlLi4yZWEwMGIyZmZjMDE2ZjVkY2JiNDJmNDkxZmZi
MWRlNGExYzViNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTgwLDcgKzgwLDYgQEAgc3RydWN0IFdL
QXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1
cmVSZWNvZ25pemVyPiBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyOwogCiAgICAgQk9PTCBf
Y2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHk7Ci0gICAgdW5zaWduZWQgX25hdGl2ZVdl
YlRvdWNoRXZlbnRVbmlxdWVJZEJlaW5nU2VudFN5bmNocm9ub3VzbHk7CiAKICAgICBSZXRhaW5Q
dHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwog
ICAgIFJldGFpblB0cjxfVUlXZWJIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcj4g
X2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCA1NjkwZDg0NmY3YjJhMWE3YTRhMDQzYjA4ZGFhM2UyODRmMTljNzg2Li45Mjc0NGEwY2Y2MzY0
OWZjNTZhOWNjMDEyOGRlNjAwMjgwZjVkZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMjkxLDE2
ICsyOTEsMTMgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRhcEFuZEhvbGREZWxheSAgPSAwLjc1Owog
LSAodm9pZClfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVkOihVSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIE5hdGl2ZVdlYlRvdWNoRXZl
bnQgbmF0aXZlV2ViVG91Y2hFdmVudChnZXN0dXJlUmVjb2duaXplcik7Ci0KICAgICBpZiAobmF0
aXZlV2ViVG91Y2hFdmVudC50eXBlKCkgPT0gV2ViS2l0OjpXZWJFdmVudDo6VG91Y2hTdGFydCkK
ICAgICAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5ID0gTk87CiAKLSAgICBp
ZiAoIV9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSkKLSAgICAgICAgX25hdGl2ZVdl
YlRvdWNoRXZlbnRVbmlxdWVJZEJlaW5nU2VudFN5bmNocm9ub3VzbHkgPSBuYXRpdmVXZWJUb3Vj
aEV2ZW50LnVuaXF1ZUlkKCk7Ci0KLSAgICBfcGFnZS0+c2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNo
cm9ub3VzbHkoIV9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSk7Ci0gICAgX3BhZ2Ut
PmhhbmRsZVRvdWNoRXZlbnQobmF0aXZlV2ViVG91Y2hFdmVudCk7Ci0gICAgX3BhZ2UtPnNldFNo
b3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KGZhbHNlKTsKKyAgICBpZiAoX2NhblNlbmRUb3Vj
aEV2ZW50c0FzeW5jaHJvbm91c2x5KQorICAgICAgICBfcGFnZS0+c2VuZEFzeW5jaHJvbm91c1Rv
dWNoRXZlbnQobmF0aXZlV2ViVG91Y2hFdmVudCk7CisgICAgZWxzZQorICAgICAgICBfcGFnZS0+
aGFuZGxlU3luY2hyb25vdXNUb3VjaEV2ZW50KG5hdGl2ZVdlYlRvdWNoRXZlbnQpOwogfQogCiBz
dGF0aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgZmxvYXQg
aW5mbGF0ZVNpemUpCkBAIC0zNDMsMTIgKzM0MCw2IEBAIHN0YXRpYyBGbG9hdFF1YWQgaW5mbGF0
ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBmbG9hdCBpbmZsYXRlU2l6ZSkKIC0gKHZvaWQp
X3dlYlRvdWNoRXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudCYpdG91Y2hF
dmVudCBwcmV2ZW50c05hdGl2ZUdlc3R1cmVzOihCT09MKXByZXZlbnRzTmF0aXZlR2VzdHVyZQog
ewogICAgIGlmIChwcmV2ZW50c05hdGl2ZUdlc3R1cmUpIHsKLSAgICAgICAgLy8gSWYgd2UgYXJl
IGRpc3BhdGNoaW5nIGV2ZW50cyBzeW5jaHJvbm91c2x5IGFuZCB0aGUgZXZlbnQgY29taW5nIGJh
Y2sgaXMgbm90IHRoZSBvbmUgd2UgYXJlIHNlbmRpbmcsIGl0IGlzIGEgY2FsbGJhY2sKLSAgICAg
ICAgLy8gZnJvbSBhbiBldmVudCBzZW50IGFzeW5jaHJvbm91c2x5IHByaW9yIHRvIHRoZSBzeW5j
aHJvbm91cyBldmVudC4gSW4gdGhhdCBjYXNlLCBpdCBzaG91bGQgbm90IHVzZSB0aGF0IGluZm9y
bWF0aW9uCi0gICAgICAgIC8vIHRvIHVwZGF0ZSBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29n
bml6ZXIuCi0gICAgICAgIGlmICghX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5ICYm
IF9uYXRpdmVXZWJUb3VjaEV2ZW50VW5pcXVlSWRCZWluZ1NlbnRTeW5jaHJvbm91c2x5ICE9IHRv
dWNoRXZlbnQudW5pcXVlSWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICBfY2Fu
U2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgPSBZRVM7CiAgICAgICAgIFtfdG91Y2hFdmVu
dEdlc3R1cmVSZWNvZ25pemVyIHNldERlZmF1bHRQcmV2ZW50ZWQ6WUVTXTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIu
Y3BwCmluZGV4IDIxYTAyNTY3MTJjYWQwNWM2NmIzOTAwNDMwYjQ4ODg3MzIwMGZjNmMuLmNjMTUy
ZjMxOTE2OWFmNGVmMzIwYmVmOTE1NGNhY2E4Y2QzYWJiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1
NCw5IEBAIFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaGVyPiBFdmVudERpc3BhdGNoZXI6OmNyZWF0
ZSgpCiBFdmVudERpc3BhdGNoZXI6OkV2ZW50RGlzcGF0Y2hlcigpCiAgICAgOiBtX3F1ZXVlKFdv
cmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkV2ZW50RGlzcGF0Y2hlciIpKQogICAg
ICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyKGFkb3B0UHRyKG5ldyBXaGVlbEV2ZW50
RGVsdGFUcmFja2VyKSkKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91
Y2hFdmVudHNMb2NrKFNQSU5MT0NLX0lOSVRJQUxJWkVSKQorI2VuZGlmCiB7CiB9CiAKQEAgLTE0
Myw2ICsxNDYsNTcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goYmluZCgmRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQsIHRo
aXMsIHBhZ2VJRCwgd2hlZWxFdmVudCkpOwogfQogCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Y2xlYXJRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2Uo
Y29uc3QgV2ViUGFnZSYgd2ViUGFnZSkKK3sKKyAgICBTcGluTG9ja0hvbGRlciBsb2NrZXIoJm1f
dG91Y2hFdmVudHNMb2NrKTsKKyAgICBtX3RvdWNoRXZlbnRzLnJlbW92ZSh3ZWJQYWdlLnBhZ2VJ
RCgpKTsKK30KKwordm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9y
UGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEV2ZW50UXVldWUmIGRlc3RpbmF0aW9u
UXVldWUpCit7CisgICAgU3BpbkxvY2tIb2xkZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7
CisgICAgZGVzdGluYXRpb25RdWV1ZSA9IHN0ZDo6bW92ZShtX3RvdWNoRXZlbnRzLnRha2Uod2Vi
UGFnZS5wYWdlSUQoKSkpOworfQorCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkK
K3sKKyAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKKyAgICB7CisgICAgICAgIFNwaW5Mb2Nr
SG9sZGVyIGxvY2tlcigmbV90b3VjaEV2ZW50c0xvY2spOworICAgICAgICB1cGRhdGVMaXN0V2Fz
RW1wdHkgPSBtX3RvdWNoRXZlbnRzLmlzRW1wdHkoKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3RvdWNoRXZlbnRzLmFkZChwYWdlSUQsIHN0ZDo6bW92ZShUb3VjaEV2ZW50UXVldWUoKSkp
OworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZCh0b3VjaEV2ZW50KTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBUb3VjaEV2ZW50UXVldWUmIHF1ZXVlZEV2ZW50cyA9IGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CisgICAgICAgICAgICBBU1NFUlQoIXF1ZXVlZEV2ZW50cy5pc0VtcHR5KCkp
OworICAgICAgICAgICAgY29uc3QgV2ViVG91Y2hFdmVudCYgbGFzdFRvdWNoRXZlbnQgPSBxdWV1
ZWRFdmVudHMubGFzdCgpOworICAgICAgICAgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSA9IGxhc3RU
b3VjaEV2ZW50LnR5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkV2ZW50OjpUb3Vj
aE1vdmUpCisgICAgICAgICAgICAgICAgcXVldWVkRXZlbnRzLmxhc3QoKSA9IHRvdWNoRXZlbnQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodXBkYXRlTGlzdFdhc0VtcHR5KQorICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgmRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFRvdWNoRXZlbnRzLCB0aGlzKSk7Cit9CisKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFRvdWNoRXZlbnRzKCkKK3sKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+
IGxvY2FsQ29weTsKKyAgICB7CisgICAgICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tlcigmbV90b3Vj
aEV2ZW50c0xvY2spOworICAgICAgICBsb2NhbENvcHkuc3dhcChtX3RvdWNoRXZlbnRzKTsKKyAg
ICB9CisKKyAgICBmb3IgKGF1dG8mIHNsb3QgOiBsb2NhbENvcHkpIHsKKyAgICAgICAgaWYgKFdl
YlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKHNsb3Qua2V5KSkK
KyAgICAgICAgICAgIHdlYlBhZ2UtPmRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVudHNRdWV1
ZShzbG90LnZhbHVlKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAppbmRl
eCAyNzRjYWJiYzA5MWI3NTYxZmVlNDdjMmY1OTM3MGIzZDU2NjM3YmQ5Li4wZTMyN2I2NmVjNGIw
ZGM1MTFiNGNjMTk4OGM3YWY1ZmMxMzNiNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvV2hlZWxFdmVudERlbHRh
VHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkV2ZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1RDU3BpbkxvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1NiwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZShXZWJQYWdlKik7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQorICAgIHR5cGVkZWYgVmVjdG9yPFdl
YlRvdWNoRXZlbnQsIDU+IFRvdWNoRXZlbnRRdWV1ZTsKKworICAgIHZvaWQgY2xlYXJRdWV1ZWRU
b3VjaEV2ZW50c0ZvclBhZ2UoY29uc3QgV2ViUGFnZSYpOworICAgIHZvaWQgZ2V0UXVldWVkVG91
Y2hFdmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmLCBUb3VjaEV2ZW50UXVldWUmKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIAog
cHJpdmF0ZToKQEAgLTY0LDkgKzczLDE2IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCiAgICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hl
ZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRS
aWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9t
KTsKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKKyAgICB2b2lkIHRvdWNoRXZlbnQodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisjZW5kaWYKKwogCiAgICAgLy8g
VGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgZGlzcGF0Y2hXaGVl
bEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworI2lmIEVOQUJM
RShJT1NfVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50cygpOworI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIHZvaWQgc2VuZERpZFJlY2Vp
dmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVF
dmVudCk7CkBAIC03OSw2ICs5NSwxMSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVz
OwogI2VuZGlmCiAgICAgT3duUHRyPFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YVRyYWNrZXI+IG1f
cmVjZW50V2hlZWxFdmVudERlbHRhVHJhY2tlcjsKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKKyAgICBTcGluTG9jayBtX3RvdWNoRXZlbnRzTG9jazsKKyAgICAvLyBGSVhNRTogdmVyaWZ5
IHdoYXQgaXMgdGhlIHJpZ2h0IHZhbHVlIGZvciB0aGUgaW5saW5lIGNhcGFjaXR5LgorICAgIEhh
c2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRl
eCBkYmNmNGJkNWM4YzA3NmU4MzFkZjNiNDFjODg2N2RiOTY4NjM2NzUwLi4zMDc5NGFkYjM0MzNl
OTFkYjEwZDEwNzljOGFkMWU3NjE4ZmJmZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4K
QEAgLTIyLDQgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsKICAgICBX
aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBi
b29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKKyNpZiBFTkFC
TEUoSU9TX1RPVUNIX0VWRU5UUykKKyAgICBUb3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYmRiZDU1OGFjNDM1Njg0ZTQ3MWY2
YWVkMmI0NGYwNDMyOWU1NWY1YS4uYjQ4NzhiMzE1NDNhNjc1ZDU5YjAxYTMwMjc5YTZkOTZjNDcw
ZjdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTk0OCwxMiArMTk0OCwyOCBAQCBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIFBhZ2UqIHBhZ2UpCiAKICAgICByZXR1cm4g
cGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlVG91Y2hFdmVudChwbGF0Zm9y
bSh0b3VjaEV2ZW50KSk7CiB9CisjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCit2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50
JiB0b3VjaEV2ZW50LCBib29sJiBoYW5kbGVkKQogewotI2lmIFBMQVRGT1JNKElPUykKICAgICBt
X2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gdG91Y2hFdmVudC5wb3NpdGlvbigpOwotI2VuZGlm
CisgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudCh0b3VjaEV2ZW50KTsKKyAgICBoYW5kbGVk
ID0gaGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBtX3BhZ2UuZ2V0KCkpOworfQorCit2b2lk
IFdlYlBhZ2U6OnRvdWNoRXZlbnRTeW5jKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQs
IGJvb2wmIGhhbmRsZWQpCit7CisgICAgRXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50UXVldWUg
cXVldWVkRXZlbnRzOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmV2ZW50RGlzcGF0Y2hlcigp
LmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZSgqdGhpcywgcXVldWVkRXZlbnRzKTsKKyAgICBk
aXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzUXVldWUocXVldWVkRXZlbnRzKTsKKworICAg
IGRpc3BhdGNoVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBoYW5kbGVkKTsKK30KKyNlbGlmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCit2b2lkIFdlYlBhZ2U6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hF
dmVudCYgdG91Y2hFdmVudCkKK3sKKwogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogICAgIGlm
IChjYW5IYW5kbGVVc2VyRXZlbnRzKCkpIHsKICAgICAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRF
dmVudCh0b3VjaEV2ZW50KTsKQEAgLTE5NjUsOSArMTk4MSw2IEBAIHZvaWQgV2ViUGFnZTo6dG91
Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogCiB2b2lkIFdlYlBhZ2U6
OnRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50
LCBib29sJiBoYW5kbGVkKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBtX2xhc3RJbnRlcmFj
dGlvbkxvY2F0aW9uID0gdG91Y2hFdmVudC5wb3NpdGlvbigpOwotI2VuZGlmCiAgICAgQ3VycmVu
dEV2ZW50IGN1cnJlbnRFdmVudCh0b3VjaEV2ZW50KTsKICAgICBoYW5kbGVkID0gaGFuZGxlVG91
Y2hFdmVudCh0b3VjaEV2ZW50LCBtX3BhZ2UuZ2V0KCkpOwogfQpAQCAtNDIzOSw2ICs0MjUyLDgg
QEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICBtX2hh
c1JlY2VpdmVkVmlzaWJsZUNvbnRlbnRSZWN0c0FmdGVyRGlkQ29tbWl0TG9hZCA9IGZhbHNlOwog
ICAgIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IgPSBmYWxzZTsKIAorICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmV2ZW50RGlzcGF0Y2hlcigpLmNsZWFyUXVldWVkVG91Y2hFdmVudHNG
b3JQYWdlKCp0aGlzKTsKKwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5jb3JlRnJh
bWUoKS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzSW1hZ2VEb2N1bWVudCgpKQog
ICAgICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXREZWZhdWx0Q29uZmlndXJhdGlvbihW
aWV3cG9ydENvbmZpZ3VyYXRpb246OmltYWdlRG9jdW1lbnRQYXJhbWV0ZXJzKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDY4ZDJjNzcwYzcw
OWFmOGU3ZTVjYjhiNzhhOTI5MWUyYjIxMWIzNS4uODgwZTkxMTIyNTI3MjdkY2YyMWJiN2MwNTg4
YzU4Yzc0NjI2MDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC00NzgsNiArNDc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNzaXN0ZWRO
b2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0
aW9uKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJbnRlcmFjdGlvbkxv
Y2F0aW9uKCk7CiAKKyAgICB2b2lkIGRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVudHNRdWV1
ZShjb25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgNT4mIHF1ZXVlKTsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKTsKICAgICB2b2lkIGhp
ZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CkBAIC03MDUsNiArNzA2LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAgICAgdm9pZCBhcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogICAgIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9h
dFJlY3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOworICAgIHZv
aWQgZGlzcGF0Y2hUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVk
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CkBAIC04NTUsNyArODU3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdoZWVsRXZlbnRTeW5jRm9y
VGVzdGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCYpOwogICAgIHZvaWQga2V5RXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQga2V5RXZlbnRTeW5jRm9yVGVzdGlu
Zyhjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCYpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCisgICAgdm9pZCB0b3VjaEV2ZW50U3lu
Yyhjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7CisjZWxpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAg
ICAgdm9pZCB0b3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJv
b2wmIGhhbmRsZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNiMGFlNzdjNWZlNTdiMzUzNGY1
ZDc5OGY4MWIzMWE3ZWU2MDgwMmIuLjI4NjZlMGFjZDRkODZiMjdkOWU4OTA2ZGVmMGJhNmIxYWE0
ZjE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC04MSw3ICs4MSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wgYWxs
b3cpCiAjZW5kaWYKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCisgICAgVG91Y2hFdmVudFN5bmMoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2
ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQorI2VuZGlmCisjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJU
b3VjaEV2ZW50IGV2ZW50KQogICAgIFRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAy
YmMwZDhhNTNhZTE4YTZiNjIwMGVhNjYyOTRkMTJkZTVjNWFlZjI3Li4yYjQ1MGM2ZDk5ZDdjOTVk
MTA3NGNjYWQ1OGRjNTRjOWYxM2FiMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMDU5LDYgKzIwNTksMTMgQEAg
dm9pZCBXZWJQYWdlOjp6b29tVG9SZWN0KEZsb2F0UmVjdCByZWN0LCBkb3VibGUgbWluaW11bVNj
YWxlLCBkb3VibGUgbWF4aW11bVNjYWwKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Olpvb21Ub1JlY3QocmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpKTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpkaXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzUXVldWUoY29uc3QgVmVj
dG9yPFdlYlRvdWNoRXZlbnQsIDU+JiBxdWV1ZSkKK3sKKyAgICBib29sIGlnbm9yZWQ7CisgICAg
Zm9yIChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCA6IHF1ZXVlKQorICAgICAgICBkaXNwYXRj
aFRvdWNoRXZlbnQoZXZlbnQsIGlnbm9yZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229950</attachid>
            <date>2014-04-22 20:58:58 -0700</date>
            <delta_ts>2014-04-22 22:53:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132033-20140422205834.patch</filename>
            <type>text/plain</type>
            <size>23437</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWM5MjM4MTUyMWI1NGVh
NmExNDM2MWZkMzYyY2YyMmM0MTdlZDRkYS4uMzc1OWViYzg2OTJhYzBmNDgxNzNkODA5YWUwN2Yy
Zjg1YWIzYmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE0LTA0LTIyICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
U3BsaXQgaU9TIHRvdWNoIGV2ZW50IGRpc3BhdGNoIGZvciB0aGUgcmVndWxhciB0b3VjaCBldmVu
dCBkaXNwYXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMyMDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IFRoZSBnZW5lcmljIHRvdWNoIGV2ZW50IGRpc3BhdGNoaW5nIGRvZXMgbm90IHdvcmsgd2VsbCB3
aXRoIGlPUyBnZXN0dXJlIHJlY29nbml6ZXJzLgorICAgICAgICBTb21lIGV2ZW50cyBhcmUgcmVx
dWlyZWQgdG8gYmUgc3luY2hyb25vdXMsIHdoaWxlIG90aGVyIG5lZWRzIGNhbiBiZSBhc3luY2hy
b25vdXMgYW5kCisgICAgICAgIGNhbiBldmVuIHVzZSBldmVudCBjb2FsZXNjaW5nLiBXZSBvbmx5
IG5lZWQgVUkgY2FsbGJhY2sgZm9yIHRoZSBzeW5jaHJvbm91cyBldmVudHMuCisKKyAgICAgICAg
UHJldmlvdXNseSwgdGhhdCB3YXMgaW1wbGVtZW50ZWQgYnkgY2hhbmdpbmcgdGhlIHByb3BlcnR5
IFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5CisgICAgICAgIG9uIFdlYlBhZ2VQcm94eS4g
VGhhdCBpcyBjYXVzaW5nIGlzc3VlcyB3aGVuIHN5bmNocm9ub3VzIGV2ZW50cyBhcmUgc2VudCBy
aWdodCBhZnRlciBhc3luY2hyb25vdXMKKyAgICAgICAgZXZlbnRzIGJlY2F1c2UgdGhlIHJlc3Bv
bnNlcyBpbiBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCgpIGVhc2lseSBnZXQgb3V0IG9m
IG9yZGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY29tcGxldGVseSBzcGxpdCB0aGUgVUlHZXN0
dXJlUmVjb2duaXplckRpc3BhdGNoaW5nIGZyb20gdGhlIG5vcm1hbCBhc3luY2hyb25vdXMgZXZl
bnQgZGlzcGF0Y2hpbmcuCisKKyAgICAgICAgU3luY2hyb25vdXMgZXZlbnRzIGFyZSBzZW50IGRp
cmVjdGx5IHRvIHRoZSBXZWJQcm9jZXNzIGFuZCByZXBvcnQgdGhlIHJlc3VsdCB0byB0aGUgUGFn
ZUNsaWVudCByaWdodCBhd2F5LgorCisgICAgICAgIEFzeW5jaHJvbm91cyBldmVudHMgYXJlIHNl
bnQgdG8gdGhlIEV2ZW50RGlzcGF0Y2hlciB3aGVyZSB0aGV5IGFyZSBjb2FsZXNjZWQgdW50aWwg
dGhlIG1haW4gdGhyZWFkIGlzIGZyZWUKKyAgICAgICAgdG8gcHJvY2VzcyBldmVudHMuCisKKyAg
ICAgICAgVGhlcmUgY2FuIGJlIGEgcmFjZSB3aGVyZSBhIHN5bmNocm9ub3VzIGV2ZW50IGNvbWVz
IGJlZm9yZSB0aGUgYXN5bmNocm9ub3VzIGV2ZW50cyBhcmUgcHJvY2Vzc2VkLiBJbiB0aGF0IGNh
c2UsCisgICAgICAgIHRoZSBzeW5jaHJvbm91cyBldmVudCBoYW5kbGVyIHN0YXJ0cyBieSBnZXR0
aW5nIHRoZSBldmVudHMgb3V0IG9mIHRoZSBFdmVudERpc3BhdGNoZXIgYW5kIGRpc3BhdGNoIHRo
ZW0gZmlyc3QuCisKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50Ojp1bmlxdWVJZCk6IERlbGV0ZWQuCisg
ICAgICAgICogU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpoYW5kbGVTeW5jaHJvbm91c1RvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbmRBc3luY2hyb25vdXNUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93ZWJUb3VjaEV2ZW50c1Jl
Y29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRvdWNoRXZlbnQ6V2Vi
S2l0OjpwcmV2ZW50c05hdGl2ZUdlc3R1cmVzOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNo
ZXI6OkV2ZW50RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6
Y2xlYXJRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpFdmVudERp
c3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OkV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0V2ZW50RGlzcGF0Y2hlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRjaFRvdWNoRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0b3VjaEV2ZW50U3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0
b3VjaEV2ZW50U3luY0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRD
b21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50c1F1ZXVlKToKKwogMjAxNC0w
NC0yMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFY
OiBpT1MgaGl0LXRlc3RpbmcgZG9lcyBub3Qgd29yayB3aGVuIHBhZ2UgaXMgem9vbWVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCBjNDIwMGViM2Rm
NWUxZjQwZjRjZTM1MzA0YzBmMjA1OTUzMmM3MTZlLi5mZGJlZmM2M2I0MzVkNWRkYjBlYTU1YWI2
OGU0OGZmMGRhOGM0NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3Vj
aEV2ZW50LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgTmF0aXZlV2ViVG91Y2hFdmVudCA6IHB1
YmxpYyBXZWJUb3VjaEV2ZW50IHsKIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgZXhw
bGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6
ZXIgKik7Ci0gICAgdW5zaWduZWQgdW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlE
OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50Jik7CiAgICAgTmF0aXZlV2ViVG91Y2hFdmVudChHZGtFdmVudCos
IFdlYkNvcmU6Okd0a1RvdWNoQ29udGV4dEhlbHBlciYpOwpAQCAtNjAsOSArNTksNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSNpZiBQTEFURk9STShJT1MpCi0gICAgdW5zaWduZWQg
bV91bmlxdWVJRDsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShHVEspCiAgICAg
R1VuaXF1ZVB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKICAgICBjb25zdCBXZWJDb3JlOjpH
dGtUb3VjaENvbnRleHRIZWxwZXImIG1fdG91Y2hDb250ZXh0OwogI2VsaWYgUExBVEZPUk0oRUZM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2
ZW50SU9TLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50
SU9TLm1tCmluZGV4IGU1ZmMzMjQ0ODc4MDQ4YWFjYzMyOGE3ZmIwMGJkZDZkNTNlNTUxOWMuLjVi
NWQ3NDIxMWU4YjgxODlmZmE0YmEyNjFlOTc2ZGQ5MzgxMGVlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0KQEAgLTM3LDgg
KzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB1bnNpZ25lZCB1bmlxdWVU
b3VjaEV2ZW50SWRJbmRleCA9IDA7Ci0KIHN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUgd2Vi
RXZlbnRUeXBlRm9yVUlXZWJUb3VjaEV2ZW50VHlwZShVSVdlYlRvdWNoRXZlbnRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC05OSw3ICs5Nyw2IEBAIHN0YXRpYyBpbmxpbmUg
VmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gZXh0cmFjdFdlYlRvdWNoUG9pbnQoVUlXZWJU
b3VjaEV2ZW50CiAKIE5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoVUlX
ZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICpnZXN0dXJlUmVjb2duaXplcikKICAgICA6
IFdlYlRvdWNoRXZlbnQod2ViRXZlbnRUeXBlRm9yVUlXZWJUb3VjaEV2ZW50VHlwZShnZXN0dXJl
UmVjb2duaXplci50eXBlKSwgc3RhdGljX2Nhc3Q8TW9kaWZpZXJzPigwKSwgV1RGOjpjdXJyZW50
VGltZSgpLCBleHRyYWN0V2ViVG91Y2hQb2ludChnZXN0dXJlUmVjb2duaXplciksIHBvc2l0aW9u
Rm9yQ0dQb2ludChnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbkluV2luZG93KSwgZ2VzdHVyZVJl
Y29nbml6ZXIuaW5KYXZhU2NyaXB0R2VzdHVyZSwgZ2VzdHVyZVJlY29nbml6ZXIuc2NhbGUsIGdl
c3R1cmVSZWNvZ25pemVyLnJvdGF0aW9uKQotICAgICwgbV91bmlxdWVJRCh1bmlxdWVUb3VjaEV2
ZW50SWRJbmRleCsrKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGE4NTgwNjEzOTE0OTBiMTlkMDU4MGQ1NTdiZDNhZjEyZGQ5MzkyMTQuLjcw
N2E2ZjZiZjkwMzkyNzljMzMyODdjYjJkNDhkYWQ0NDBhNzBhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNDkzLDcgKzE0OTMsNDggQEAgYm9vbCBX
ZWJQYWdlUHJveHk6OnNob3VsZFN0YXJ0VHJhY2tpbmdUb3VjaEV2ZW50cyhjb25zdCBXZWJUb3Vj
aEV2ZW50JiB0b3VjaFN0YXIKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAg
IHJldHVybiB0cnVlOwogfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50U3luY2hyb25vdXNseShjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6VG91Y2hTdGFy
dCkKKyAgICAgICAgbV9pc1RyYWNraW5nVG91Y2hFdmVudHMgPSBzaG91bGRTdGFydFRyYWNraW5n
VG91Y2hFdmVudHMoZXZlbnQpOworCisgICAgaWYgKCFtX2lzVHJhY2tpbmdUb3VjaEV2ZW50cykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkt
PnN0YXJ0KCk7CisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgbV9wcm9jZXNzLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6OlJlcGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCk7CisgICAg
ZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7CisgICAgbV9wYWdlQ2xpZW50
LmRvbmVXaXRoVG91Y2hFdmVudChldmVudCwgaGFuZGxlZCk7CisgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKKworICAgIGlmIChldmVudC50eXBlKCkgPT0gV2Vi
RXZlbnQ6OlRvdWNoRW5kIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6VG91Y2hDYW5jZWwp
CisgICAgICAgIG1faXNUcmFja2luZ1RvdWNoRXZlbnRzID0gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50QXN5bmNocm9ub3VzbHkoY29uc3QgTmF0aXZlV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChldmVudC50eXBlKCkgIT0gV2ViRXZlbnQ6OlRvdWNoU3RhcnQpOwor
CisgICAgaWYgKCFtX2lzVHJhY2tpbmdUb3VjaEV2ZW50cykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OlRvdWNoRXZlbnQo
bV9wYWdlSUQsIGV2ZW50KSwgMCk7CiAKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50
OjpUb3VjaEVuZCB8fCBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OlRvdWNoQ2FuY2VsKQorICAg
ICAgICBtX2lzVHJhY2tpbmdUb3VjaEV2ZW50cyA9IGZhbHNlOworfQorCisjZWxpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0z
Nzk3LDcgKzM4MzgsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50
MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgICAgICAgICBtX3VpQ2xpZW50LT5k
aWROb3RIYW5kbGVLZXlFdmVudCh0aGlzLCBldmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQor
ICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hN
b3ZlOgorICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoRW5kOgorICAgIGNhc2UgV2ViRXZlbnQ6OlRv
dWNoQ2FuY2VsOgorICAgICAgICBicmVhazsKKyNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAg
ICAgY2FzZSBXZWJFdmVudDo6VG91Y2hTdGFydDoKICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaE1v
dmU6CiAgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hFbmQ6CkBAIC00MTUzLDcgKzQyMDAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAKICAgICBt
X3Byb2Nlc3NpbmdNb3VzZU1vdmVFdmVudCA9IGZhbHNlOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCiAgICAgbV90b3VjaEV2ZW50UXVldWUuY2xlYXIoKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNGEwYmJkN2M1YzZhYjk0N2U0YTc5NDkx
NGFiOTg0YTlkYWJiYWI3MS4uZmQ5NjdhODJmNWQyZDUwY2RmYTE1ZWUyNGM4YjYyNzJiYTBjZDE3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjk0LDcgKzY5
NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdl
Yk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2Vi
V2hlZWxFdmVudCYpOwogICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50Jik7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKKyAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnRTeW5jaHJvbm91c2x5
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsKKyAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnRB
c3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jik7CisjZWxpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgaGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50Jik7CiAjZW5kaWYKIApAQCAtMTU2Myw4ICsxNTY2LDExIEBAIHByaXZhdGU6CiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGJvb2wgbV9pc1RyYWNraW5nVG91Y2hFdmVu
dHM7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19UT1VD
SF9FVkVOVFMpCiAgICAgRGVxdWU8UXVldWVkVG91Y2hFdmVudHM+IG1fdG91Y2hFdmVudFF1ZXVl
OwogI2VuZGlmCisKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBSZWZQdHI8V2Vi
Q29sb3JQaWNrZXI+IG1fY29sb3JQaWNrZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGUz
OTllNTZmNDFhMGQ4MDkwNTRjODI1NzNlOTkzMTAyODEyYjMxNmUuLjJlYTAwYjJmZmMwMTZmNWRj
YmI0MmY0OTFmZmIxZGU0YTFjNWI3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtODAsNyArODAsNiBA
QCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxVSVdlYlRvdWNo
RXZlbnRzR2VzdHVyZVJlY29nbml6ZXI+IF90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXI7CiAK
ICAgICBCT09MIF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseTsKLSAgICB1bnNpZ25l
ZCBfbmF0aXZlV2ViVG91Y2hFdmVudFVuaXF1ZUlkQmVpbmdTZW50U3luY2hyb25vdXNseTsKIAog
ICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfc2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXI7CiAgICAgUmV0YWluUHRyPF9VSVdlYkhpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVS
ZWNvZ25pemVyPiBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDU2OTBkODQ2ZjdiMmExYTdhNGEwNDNiMDhkYWEzZTI4NGYxOWM3ODYuLmM1
ODhlZTQxYTU2ZDNhZmI5YzA0NDNiYmJkMWYzNThjMjNmYmE4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC0yOTEsMTYgKzI5MSwxMyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5
ICA9IDAuNzU7CiAtICh2b2lkKV93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6KFVJV2ViVG91Y2hF
dmVudHNHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgTmF0aXZl
V2ViVG91Y2hFdmVudCBuYXRpdmVXZWJUb3VjaEV2ZW50KGdlc3R1cmVSZWNvZ25pemVyKTsKLQog
ICAgIGlmIChuYXRpdmVXZWJUb3VjaEV2ZW50LnR5cGUoKSA9PSBXZWJLaXQ6OldlYkV2ZW50OjpU
b3VjaFN0YXJ0KQogICAgICAgICBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgPSBO
TzsKIAotICAgIGlmICghX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5KQotICAgICAg
ICBfbmF0aXZlV2ViVG91Y2hFdmVudFVuaXF1ZUlkQmVpbmdTZW50U3luY2hyb25vdXNseSA9IG5h
dGl2ZVdlYlRvdWNoRXZlbnQudW5pcXVlSWQoKTsKLQotICAgIF9wYWdlLT5zZXRTaG91bGRTZW5k
RXZlbnRzU3luY2hyb25vdXNseSghX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5KTsK
LSAgICBfcGFnZS0+aGFuZGxlVG91Y2hFdmVudChuYXRpdmVXZWJUb3VjaEV2ZW50KTsKLSAgICBf
cGFnZS0+c2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkoZmFsc2UpOworICAgIGlmIChf
Y2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkpCisgICAgICAgIF9wYWdlLT5oYW5kbGVU
b3VjaEV2ZW50QXN5bmNocm9ub3VzbHkobmF0aXZlV2ViVG91Y2hFdmVudCk7CisgICAgZWxzZQor
ICAgICAgICBfcGFnZS0+aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3VzbHkobmF0aXZlV2ViVG91
Y2hFdmVudCk7CiB9CiAKIHN0YXRpYyBGbG9hdFF1YWQgaW5mbGF0ZVF1YWQoY29uc3QgRmxvYXRR
dWFkJiBxdWFkLCBmbG9hdCBpbmZsYXRlU2l6ZSkKQEAgLTM0MywxMiArMzQwLDYgQEAgc3RhdGlj
IEZsb2F0UXVhZCBpbmZsYXRlUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGZsb2F0IGluZmxh
dGVTaXplKQogLSAodm9pZClfd2ViVG91Y2hFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJU
b3VjaEV2ZW50Jil0b3VjaEV2ZW50IHByZXZlbnRzTmF0aXZlR2VzdHVyZXM6KEJPT0wpcHJldmVu
dHNOYXRpdmVHZXN0dXJlCiB7CiAgICAgaWYgKHByZXZlbnRzTmF0aXZlR2VzdHVyZSkgewotICAg
ICAgICAvLyBJZiB3ZSBhcmUgZGlzcGF0Y2hpbmcgZXZlbnRzIHN5bmNocm9ub3VzbHkgYW5kIHRo
ZSBldmVudCBjb21pbmcgYmFjayBpcyBub3QgdGhlIG9uZSB3ZSBhcmUgc2VuZGluZywgaXQgaXMg
YSBjYWxsYmFjawotICAgICAgICAvLyBmcm9tIGFuIGV2ZW50IHNlbnQgYXN5bmNocm9ub3VzbHkg
cHJpb3IgdG8gdGhlIHN5bmNocm9ub3VzIGV2ZW50LiBJbiB0aGF0IGNhc2UsIGl0IHNob3VsZCBu
b3QgdXNlIHRoYXQgaW5mb3JtYXRpb24KLSAgICAgICAgLy8gdG8gdXBkYXRlIFVJV2ViVG91Y2hF
dmVudHNHZXN0dXJlUmVjb2duaXplci4KLSAgICAgICAgaWYgKCFfY2FuU2VuZFRvdWNoRXZlbnRz
QXN5bmNocm9ub3VzbHkgJiYgX25hdGl2ZVdlYlRvdWNoRXZlbnRVbmlxdWVJZEJlaW5nU2VudFN5
bmNocm9ub3VzbHkgIT0gdG91Y2hFdmVudC51bmlxdWVJZCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotCiAgICAgICAgIF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSA9IFlFUzsKICAg
ICAgICAgW190b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIgc2V0RGVmYXVsdFByZXZlbnRlZDpZ
RVNdOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMjFhMDI1NjcxMmNhZDA1YzY2YjM5MDA0MzBiNDg4
ODczMjAwZmM2Yy4uMDk5MjI1MjlkNDRhZTAwNWEyNTA1NWRmNDBmNjIyMDM2NmFhYzFiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0
Y2hlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU0LDYgKzU0LDkgQEAgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoZXI+IEV2ZW50
RGlzcGF0Y2hlcjo6Y3JlYXRlKCkKIEV2ZW50RGlzcGF0Y2hlcjo6RXZlbnREaXNwYXRjaGVyKCkK
ICAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuRXZlbnRE
aXNwYXRjaGVyIikpCiAgICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXIoYWRvcHRQ
dHIobmV3IFdoZWVsRXZlbnREZWx0YVRyYWNrZXIpKQorI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQorICAgICwgbV90b3VjaEV2ZW50c0xvY2soU1BJTkxPQ0tfSU5JVElBTElaRVIpCisjZW5k
aWYKIHsKIH0KIApAQCAtMTQzLDYgKzE0Niw2MSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgog
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoV2hlZWxFdmVudCwgdGhpcywgcGFnZUlELCB3aGVlbEV2ZW50KSk7CiB9CiAKKyNpZiBFTkFC
TEUoSU9TX1RPVUNIX0VWRU5UUykKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpjbGVhclF1ZXVlZFRv
dWNoRXZlbnRzRm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlKQoreworICAgIFNwaW5Mb2Nr
SG9sZGVyIGxvY2tlcigmbV90b3VjaEV2ZW50c0xvY2spOworICAgIG1fdG91Y2hFdmVudHMucmVt
b3ZlKHdlYlBhZ2UucGFnZUlEKCkpOworfQorCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2V0UXVl
dWVkVG91Y2hFdmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmIHdlYlBhZ2UsIFRvdWNoRXZlbnRR
dWV1ZSYgZGVzdGluYXRpb25RdWV1ZSkKK3sKKyAgICBTcGluTG9ja0hvbGRlciBsb2NrZXIoJm1f
dG91Y2hFdmVudHNMb2NrKTsKKyAgICBkZXN0aW5hdGlvblF1ZXVlID0gc3RkOjptb3ZlKG1fdG91
Y2hFdmVudHMudGFrZSh3ZWJQYWdlLnBhZ2VJRCgpKSk7Cit9CisKK3ZvaWQgRXZlbnREaXNwYXRj
aGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2
ZW50JiB0b3VjaEV2ZW50KQoreworICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OworICAgIHsK
KyAgICAgICAgU3BpbkxvY2tIb2xkZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7CisgICAg
ICAgIHVwZGF0ZUxpc3RXYXNFbXB0eSA9IG1fdG91Y2hFdmVudHMuaXNFbXB0eSgpOworICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fdG91Y2hFdmVudHMuYWRkKHBhZ2VJRCwgc3RkOjptb3ZlKFRv
dWNoRXZlbnRRdWV1ZSgpKSk7CisgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHRvdWNoRXZlbnQpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFRvdWNoRXZlbnRRdWV1ZSYgcXVldWVkRXZlbnRz
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIEFTU0VSVCghcXVldWVk
RXZlbnRzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBjb25zdCBXZWJUb3VjaEV2ZW50JiBsYXN0
VG91Y2hFdmVudCA9IHF1ZXVlZEV2ZW50cy5sYXN0KCk7CisKKyAgICAgICAgICAgIC8vIENvYWxl
c2NlIHRvdWNoIG1vdmUgZXZlbnRzLgorICAgICAgICAgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSA9
IGxhc3RUb3VjaEV2ZW50LnR5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkV2ZW50
OjpUb3VjaE1vdmUpCisgICAgICAgICAgICAgICAgcXVldWVkRXZlbnRzLmxhc3QoKSA9IHRvdWNo
RXZlbnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcXVldWVkRXZlbnRzLmFw
cGVuZCh0b3VjaEV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh1cGRhdGVMaXN0
V2FzRW1wdHkpCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoVG91Y2hFdmVudHMsIHRoaXMpKTsKK30KKwordm9pZCBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoVG91Y2hFdmVudHMoKQoreworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFRvdWNoRXZlbnRRdWV1ZT4gbG9jYWxDb3B5OworICAgIHsKKyAgICAgICAgU3BpbkxvY2tIb2xk
ZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7CisgICAgICAgIGxvY2FsQ29weS5zd2FwKG1f
dG91Y2hFdmVudHMpOworICAgIH0KKworICAgIGZvciAoYXV0byYgc2xvdCA6IGxvY2FsQ29weSkg
eworICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndl
YlBhZ2Uoc2xvdC5rZXkpKQorICAgICAgICAgICAgd2ViUGFnZS0+ZGlzcGF0Y2hBc3luY2hyb25v
dXNUb3VjaEV2ZW50cyhzbG90LnZhbHVlKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3Bh
dGNoZXIuaAppbmRleCAyNzRjYWJiYzA5MWI3NTYxZmVlNDdjMmY1OTM3MGIzZDU2NjM3YmQ5Li5j
NWFiYmIzYzBhMzYwODc0MTY4NjBlOGFlNDc3MjRjNGYwNjM2ODVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw5ICsy
OSwxMSBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvV2hl
ZWxFdmVudERlbHRhVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkV2ZW50Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RDU3BpbkxvY2suaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1
NiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZShXZWJQ
YWdlKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQorICAgIHR5cGVk
ZWYgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+IFRvdWNoRXZlbnRRdWV1ZTsKKworICAgIHZvaWQg
Y2xlYXJRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2UoY29uc3QgV2ViUGFnZSYpOworICAgIHZvaWQg
Z2V0UXVldWVkVG91Y2hFdmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmLCBUb3VjaEV2ZW50UXVl
dWUmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24qKTsKIAogcHJpdmF0ZToKQEAgLTY0LDkgKzczLDE2IEBAIHByaXZhdGU6CiAKICAgICAv
LyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVy
QmFuZEF0Qm90dG9tKTsKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKKyAgICB2b2lkIHRv
dWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisjZW5kaWYK
KwogCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQg
ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYp
OworI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2
ZW50cygpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIHZvaWQg
c2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiwgYm9v
bCBkaWRIYW5kbGVFdmVudCk7CkBAIC03OSw2ICs5NSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Nj
cm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgT3duUHRyPFdlYkNvcmU6OldoZWVsRXZlbnREZWx0
YVRyYWNrZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhVHJhY2tlcjsKKyNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKKyAgICBTcGluTG9jayBtX3RvdWNoRXZlbnRzTG9jazsKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hFdmVudHM7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KaW5kZXgg
ZGJjZjRiZDVjOGMwNzZlODMxZGYzYjQxYzg4NjdkYjk2ODYzNjc1MC4uMzA3OTRhZGIzNDMzZTkx
ZGIxMGQxMDc5YzhhZDFlNzYxOGZiZmQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBA
IC0yMiw0ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IEV2ZW50RGlzcGF0Y2hlciB7CiAgICAgV2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNh
blJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCisjaWYgRU5BQkxF
KElPU19UT1VDSF9FVkVOVFMpCisgICAgVG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktp
dDo6V2ViVG91Y2hFdmVudCBldmVudCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJkYmQ1NThhYzQzNTY4NGU0NzFmNmFl
ZDJiNDRmMDQzMjllNTVmNWEuLmE4OTRkYWMzZDQzNmQ5NzYzM2ZiNTY1Y2RmZjQwZDY1MzQ5YTU2
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTE5NDgsMTIgKzE5NDgsMjggQEAgc3RhdGljIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBQYWdlKiBwYWdlKQogCiAgICAgcmV0dXJuIHBh
Z2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVRvdWNoRXZlbnQocGxhdGZvcm0o
dG91Y2hFdmVudCkpOwogfQorI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQorI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQordm9pZCBXZWJQYWdlOjpkaXNwYXRjaFRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYg
dG91Y2hFdmVudCwgYm9vbCYgaGFuZGxlZCkKIHsKLSNpZiBQTEFURk9STShJT1MpCiAgICAgbV9s
YXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IHRvdWNoRXZlbnQucG9zaXRpb24oKTsKLSNlbmRpZgor
ICAgIEN1cnJlbnRFdmVudCBjdXJyZW50RXZlbnQodG91Y2hFdmVudCk7CisgICAgaGFuZGxlZCA9
IGhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudCwgbV9wYWdlLmdldCgpKTsKK30KKwordm9pZCBX
ZWJQYWdlOjp0b3VjaEV2ZW50U3luYyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBi
b29sJiBoYW5kbGVkKQoreworICAgIEV2ZW50RGlzcGF0Y2hlcjo6VG91Y2hFdmVudFF1ZXVlIHF1
ZXVlZEV2ZW50czsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ldmVudERpc3BhdGNoZXIoKS5n
ZXRRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2UoKnRoaXMsIHF1ZXVlZEV2ZW50cyk7CisgICAgZGlz
cGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhxdWV1ZWRFdmVudHMpOworCisgICAgZGlzcGF0
Y2hUb3VjaEV2ZW50KHRvdWNoRXZlbnQsIGhhbmRsZWQpOworfQorI2VsaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK3ZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiB0
b3VjaEV2ZW50KQoreworCiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKGNhbkhh
bmRsZVVzZXJFdmVudHMoKSkgewogICAgICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50KHRv
dWNoRXZlbnQpOwpAQCAtMTk2NSw5ICsxOTgxLDYgQEAgdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50
KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAKIHZvaWQgV2ViUGFnZTo6dG91Y2hF
dmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIGJvb2wm
IGhhbmRsZWQpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIG1fbGFzdEludGVyYWN0aW9uTG9j
YXRpb24gPSB0b3VjaEV2ZW50LnBvc2l0aW9uKCk7Ci0jZW5kaWYKICAgICBDdXJyZW50RXZlbnQg
Y3VycmVudEV2ZW50KHRvdWNoRXZlbnQpOwogICAgIGhhbmRsZWQgPSBoYW5kbGVUb3VjaEV2ZW50
KHRvdWNoRXZlbnQsIG1fcGFnZS5nZXQoKSk7CiB9CkBAIC00MjM5LDYgKzQyNTIsOCBAQCB2b2lk
IFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIG1faGFzUmVjZWl2
ZWRWaXNpYmxlQ29udGVudFJlY3RzQWZ0ZXJEaWRDb21taXRMb2FkID0gZmFsc2U7CiAgICAgbV91
c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3RvciA9IGZhbHNlOwogCisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuZXZlbnREaXNwYXRjaGVyKCkuY2xlYXJRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2Uo
KnRoaXMpOworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAg
IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldERlZmF1bHRDb25maWd1cmF0aW9uKFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6aW1hZ2VEb2N1bWVudFBhcmFtZXRlcnMoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkNjhkMmM3NzBjNzA5YWY4ZTdl
NWNiOGI3OGE5MjkxZTJiMjExYjM1Li45OWY5ZWI1ZTNkYTIwZjYxOGM4MDk5YTkzYmZkYzQ4NTVi
YWQxZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTQ3OCw2ICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVTZWxl
Y3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pOwog
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZvckVsZW1lbnRBdEludGVyYWN0aW9uTG9jYXRpb24o
KTsKIAorICAgIHZvaWQgZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0
b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1ZXVlKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKTsKICAgICB2b2lkIGhpZGVJbnNwZWN0b3JJ
bmRpY2F0aW9uKCk7CkBAIC03MDUsNiArNzA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpOwogICAgIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJs
ZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOworICAgIHZvaWQgZGlzcGF0Y2hU
b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCkBAIC04NTUsNyAr
ODU3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdoZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhjb25z
dCBXZWJXaGVlbEV2ZW50JiwgYm9vbCYpOwogICAgIHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5
Ym9hcmRFdmVudCYpOwogICAgIHZvaWQga2V5RXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCYpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5B
QkxFKElPU19UT1VDSF9FVkVOVFMpCisgICAgdm9pZCB0b3VjaEV2ZW50U3luYyhjb25zdCBXZWJU
b3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7CisjZWxpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
ICAgIHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgdm9pZCB0b3Vj
aEV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNiMGFlNzdjNWZlNTdiMzUzNGY1ZDc5OGY4MWIzMWE3
ZWU2MDgwMmIuLjI4NjZlMGFjZDRkODZiMjdkOWU4OTA2ZGVmMGJhNmIxYWE0ZjE4M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC04MSw3ICs4MSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wgYWxsb3cpCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CisgICAgVG91Y2hFdmVudFN5bmMoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KSAtPiAoYm9v
bCBoYW5kbGVkKQorI2VuZGlmCisjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKSAmJiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2
ZW50KQogICAgIFRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6OldlYlRvdWNoRXZlbnQg
ZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyYmMwZDhhNTNhZTE4
YTZiNjIwMGVhNjYyOTRkMTJkZTVjNWFlZjI3Li4xOWE1YjZmZDNkYjRhMTc5NjM3OTNmMjQxOTc3
YzQ4ZDhiYTc5ZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMDU5LDYgKzIwNTksMTMgQEAgdm9pZCBXZWJQYWdl
Ojp6b29tVG9SZWN0KEZsb2F0UmVjdCByZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUg
bWF4aW11bVNjYWwKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Olpvb21Ub1JlY3Qo
cmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpk
aXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2ZW50
LCAxPiYgcXVldWUpCit7CisgICAgYm9vbCBpZ25vcmVkOworICAgIGZvciAoY29uc3QgV2ViVG91
Y2hFdmVudCYgZXZlbnQgOiBxdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50
LCBpZ25vcmVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>