<?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>76914</bug_id>
          
          <creation_ts>2012-01-24 07:44:26 -0800</creation_ts>
          <short_desc>[Qt] Implement tap feedback respecting -webkit-tap-highlight-color</short_desc>
          <delta_ts>2012-01-25 10:19:12 -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>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="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Kenneth Rohde Christiansen">kenneth</assigned_to>
          <cc>hausmann</cc>
    
    <cc>noam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541322</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-24 07:44:26 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541332</commentid>
    <comment_count>1</comment_count>
      <attachid>123736</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-24 08:07:25 -0800</bug_when>
    <thetext>Created attachment 123736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541339</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 08:14:39 -0800</bug_when>
    <thetext>Attachment 123736 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;ManualTests/qt/tap-highlight...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/WebPage/TapHighlightController.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/WebPage/TapHighlightController.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/page/GestureTapHighlighter.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/page/GestureTapHighlighter.cpp:48:  Missing space before {  [whitespace/braces] [5]
Total errors found: 6 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541348</commentid>
    <comment_count>3</comment_count>
      <attachid>123740</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-24 08:29:37 -0800</bug_when>
    <thetext>Created attachment 123740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541350</commentid>
    <comment_count>4</comment_count>
      <attachid>123736</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-01-24 08:36:45 -0800</bug_when>
    <thetext>Comment on attachment 123736
Patch

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

nits:

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:100
&gt; +

unneeded new line?

&gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:70
&gt; +        m_webPage-&gt;uninstallPageOverlay(m_overlay, true);

/* what true means */

&gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:81
&gt; +    if (webPage)
&gt; +        return;

just curious: !webPage?

also is it different from m_webpage?

&gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:100
&gt; +bool TapHighlightController::mouseEvent(PageOverlay* pageOverlay, const WebMouseEvent&amp; mouseEvent)

maybe omit the parameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541355</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-24 08:42:44 -0800</bug_when>
    <thetext>Uh this wasnt up for review yet but thanks :-)

(In reply to comment #4)
&gt; (From update of attachment 123736 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123736&amp;action=review
&gt; 
&gt; nits:
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:100
&gt; &gt; +
&gt; 
&gt; unneeded new line?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:70
&gt; &gt; +        m_webPage-&gt;uninstallPageOverlay(m_overlay, true);
&gt; 
&gt; /* what true means */
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:81
&gt; &gt; +    if (webPage)
&gt; &gt; +        return;
&gt; 
&gt; just curious: !webPage?

No it is moving to another page, this code is two other places in webkit2

&gt; also is it different from m_webpage?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:100
&gt; &gt; +bool TapHighlightController::mouseEvent(PageOverlay* pageOverlay, const WebMouseEvent&amp; mouseEvent)
&gt; 
&gt; maybe omit the parameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541370</commentid>
    <comment_count>6</comment_count>
      <attachid>123744</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-24 09:02:08 -0800</bug_when>
    <thetext>Created attachment 123744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541395</commentid>
    <comment_count>7</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-01-24 09:37:41 -0800</bug_when>
    <thetext>question: when you have a link that wraps line, being the beginning of it at the right of the page, and its wrapped content at the left of it at the line below, do you get the bounding box of the link? it would show a very big tap highlight...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541455</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-24 10:34:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; question: when you have a link that wraps line, being the beginning of it at the right of the page, and its wrapped content at the left of it at the line below, do you get the bounding box of the link? it would show a very big tap highlight...

That is not handled yet. There are also a few other things that I would like to treat as follow-ups. You are of course very welcome to help me with that :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542053</commentid>
    <comment_count>9</comment_count>
      <attachid>123744</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-25 00:43:43 -0800</bug_when>
    <thetext>Comment on attachment 123744
Patch

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

I think this is a nice solution! (nicer than what we have in Grob :)

However there&apos;s one thing that was better in Grob compared to the way it&apos;s done here: The fade animation in Grob was just the result of composing the &quot;highlight&quot; pixmap with a different opacity, i.e. the animation required only composition and no re-rendering of content/texture-upload. The current way the page overlay implements the fade animation requires constant re-painting of the tiles AFAICS.

Although outside of the scope of this patch directly, in an ideal world we&apos;d apply the same technique to this: If supported by the overlay (client), the content could be rendered into a layer once and the animation could be implemented via AC.

&gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp:96
&gt; +void TapHighlightController::drawRect(PageOverlay* pageOverlay, GraphicsContext&amp; graphicsContext, const IntRect&amp; dirtyRect)
&gt; +{
&gt; +    if (!m_node)
&gt; +        return;
&gt; +
&gt; +    GestureTapHighlighter::drawHighlight(&amp;graphicsContext, m_node);
&gt; +}

I think for the fade animation to work, you need to respect pageOverlay-&gt;fractionFadedIn();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542126</commentid>
    <comment_count>10</comment_count>
      <attachid>123907</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 02:55:48 -0800</bug_when>
    <thetext>Created attachment 123907
Patch

Now with animations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542127</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 02:57:06 -0800</bug_when>
    <thetext>
&gt; However there&apos;s one thing that was better in Grob compared to the way it&apos;s done here: The fade animation in Grob was just the result of composing the &quot;highlight&quot; pixmap with a different opacity, i.e. the animation required only composition and no re-rendering of content/texture-upload. The current way the page overlay implements the fade animation requires constant re-painting of the tiles AFAICS.
&gt; 
&gt; Although outside of the scope of this patch directly, in an ideal world we&apos;d apply the same technique to this: If supported by the overlay (client), the content could be rendered into a layer once and the animation could be implemented via AC.

Yes, it would be the proper way to do this. Maybe No&apos;am can have a look or help me when we are in Hungary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542182</commentid>
    <comment_count>12</comment_count>
      <attachid>123921</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 04:26:03 -0800</bug_when>
    <thetext>Created attachment 123921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542207</commentid>
    <comment_count>13</comment_count>
      <attachid>123921</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-25 05:26:26 -0800</bug_when>
    <thetext>Comment on attachment 123921
Patch

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

&gt; Source/WebCore/page/GestureTapHighlighter.cpp:153
&gt; +void drawHighlight(GraphicsContext* context, Node* node)

I suggest to change the API to just return you the path for the highlight. Then the caller can call it once on initialization time (the node doesn&apos;t change after all) and then decide how to continously draw the path with the fade animation, instead of calculating the same path for every rendered frame.

&gt; Source/WebKit2/WebProcess/WebPage/TapHighlightController.h:62
&gt; +    WebCore::Node* m_node;

Is it intentional to store the Node as raw pointer instead of RefPtr? It seems the highlight controller will dereference node many times during the animation, and during that time the node could easily get deleted, no?

But I would suggest to avoid storing the Node* altogether and instead calculate the path you need for highlighting once on initialization time and then store that instead.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1434
&gt; +    Node* activationNode = 0;
&gt; +    Frame* mainframe = m_page-&gt;mainFrame();
&gt; +
&gt; +    if (point != IntPoint::zero()) {
&gt; +        HitTestResult result = mainframe-&gt;eventHandler()-&gt;hitTestResultAtPoint(mainframe-&gt;view()-&gt;windowToContents(point), /*allowShadowContent*/ false, /*ignoreClipping*/ true);
&gt; +        activationNode = result.innerNode();

You could add a // ### FIXME to point out that when using touch we need to do touch adjustment here to locate the correct node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542223</commentid>
    <comment_count>14</comment_count>
      <attachid>123929</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 06:21:41 -0800</bug_when>
    <thetext>Created attachment 123929
Patch

Changed to incorporate some of Simon&apos;s ideas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542225</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 06:25:19 -0800</bug_when>
    <thetext>Attachment 123929 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;ManualTests/qt/tap-highlight...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/TapHighlightController.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542254</commentid>
    <comment_count>16</comment_count>
      <attachid>123936</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 07:32:36 -0800</bug_when>
    <thetext>Created attachment 123936
Patch

ChangeLogs method listing will be updated before any commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542269</commentid>
    <comment_count>17</comment_count>
      <attachid>123941</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 07:57:45 -0800</bug_when>
    <thetext>Created attachment 123941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542301</commentid>
    <comment_count>18</comment_count>
      <attachid>123941</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 08:39:20 -0800</bug_when>
    <thetext>Comment on attachment 123941
Patch

Rejecting attachment 123941 from commit-queue.

New failing tests:
media/audio-garbage-collect.html
Full output: http://queues.webkit.org/results/11242819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542362</commentid>
    <comment_count>19</comment_count>
      <attachid>123941</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-25 09:40:13 -0800</bug_when>
    <thetext>Comment on attachment 123941
Patch

Must be flaky, resetting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542414</commentid>
    <comment_count>20</comment_count>
      <attachid>123941</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 10:19:06 -0800</bug_when>
    <thetext>Comment on attachment 123941
Patch

Clearing flags on attachment: 123941

Committed r105893: &lt;http://trac.webkit.org/changeset/105893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542415</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 10:19:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123736</attachid>
            <date>2012-01-24 08:07:25 -0800</date>
            <delta_ts>2012-01-24 08:36:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>28039</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSA5NzMwNGQ1MWU3MjE2MjRkZWY5YTBlMjQ1NmVjOTMxZDgxYzZjNzlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwICAgICAgfCAgMTI1ICsrKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oICAg
ICAgICB8ICAgNDYgKysrKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDM3ICsrKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAxMCArKwogLi4uL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgfCAgICAxICsKIC4uLi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgIHwgIDEwNSArKysrKysrKysrKysr
KysrCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCAgICB8
ICAgNjYgKysrKysrKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwICAgICAgfCAgIDI0ICsrKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggICAgICAgIHwgICAxMSArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gfCAgICAzICsKIDE1IGZpbGVzIGNoYW5nZWQsIDQ3MiBp
bnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1hbnVhbFRl
c3RzL3F0L3RhcC1oaWdobGlnaHRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29u
dHJvbGxlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDE3MjM0NWMuLmZkNmNhOWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJ
bXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNv
bG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njkx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IG1hbnVhbCB0ZXN0LgorCisgICAgICAgICogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGlu
Zy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIG1vdmUgVG9vbHMuZ3lwLCBzd2l0Y2ggYnVp
bGQtd2Via2l0IC0tY2hyb21pdW0gdG8gQWxsLmd5cApkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMv
cXQvdGFwLWhpZ2hsaWdodGluZy5odG1sIGIvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGlu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYWJkZjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9NYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwKQEAgLTAs
MCArMSwxMSBAQAorPGgxPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDox
MHB4OyB0b3A6MTBweDsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNv
bHV0ZTsgbGVmdDowcHg7IHRvcDozMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06c2tldygzMGRlZykg
cm90YXRlKC00MGRlZykgc2NhbGUoMS4yKTsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdw
b3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjEwMHB4OyAtd2Via2l0LXRyYW5zZm9y
bTogcm90YXRlKC0yMGRlZykgc2NhbGUoMS41KTsnIHR5cGU9J2J1dHRvbicgdmFsdWU9J2hlc3Qj
MSc+Cis8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9wOjIwMHB4
OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMyPC9h
PjwvZGl2PgorPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzAwcHg7IHRvcDox
MDBweDsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsnPjxkaXYgc3R5bGU9JyAtd2Vi
a2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMzPC9hPjwvZGl2
PjwvZGl2PgorPGRpdiBzdHlsZT0nLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsgd2lk
dGg6MjAwcHgnPjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6
LTEwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVz
dCM0PC9hPjwvZGl2PjwvZGl2PgorPGRpdj48ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsg
bGVmdDo0MDBweDsgdG9wOjQwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+
PGEgaHJlZj0nIyc+aGVzdCM0YTwvYT48L2Rpdj48L2Rpdj4KKzxhIGhyZWY9JyMnIHN0eWxlPSdw
b3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwMHB4Jz5oZXN0IzU8L2E+Cis8ZGl2IHN0eWxlPSdwb3Np
dGlvbjphYnNvbHV0ZTtsZWZ0OjY0MHB4Jz48YSBocmVmPScjJz5oZXN0IzY8L2E+Cis8L2gxPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDc3ODFkOTQuLjJkOGY3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3Rpbmcg
LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBoaWdobGlnaHRpbmcgb2YgZG9tIG5vZGVzIHdp
dGggYSByb3VuZGVkIHJlY3QsIHJlc3BlY3RpbmcKKyAgICAgICAgdGhlIGNvbG9yIG9mIC13ZWJr
aXQtdGFwLWhpZ2hsaWdodC1jb2xvciBhbmQgYW55IHRyYW5zZm9ybSBhcHBsaWVkCisgICAgICAg
IHRvIHRoZSBlbGVtZW50LgorCisgICAgICAgIFRlc3RlZCB3aXRoIG1hbnVhbCB0ZXN0LgorCisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpk
cmF3SGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBB
ZGRlZC4KKwogMjAxMi0wMS0xOSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4K
IAogICAgICAgICBDYWNoZSBSZW5kZXJTdHlsZSBwb2ludGVyIGFzIGEgbWV0aG9kIHRvIGF2b2lk
IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHJlZ2lvbiBzdHlsaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCA0NTdkYjBjLi40NWQ5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk4NSw2ICs5ODUsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBwYWdlL0ZyYW1lVmlldy5jcHAgXAogICAgIHBhZ2UvR2VvbG9jYXRpb24u
Y3BwIFwKICAgICBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmNwcCBcCiAg
ICAgcGFnZS9IaXN0b3J5LmNwcCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAgXApAQCAtMjA0NCw2
ICsyMDQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9GcmFtZVZpZXcuaCBcCiAgICAgcGFn
ZS9HZW9sb2NhdGlvbi5oIFwKICAgICBwYWdlL0dlb3Bvc2l0aW9uLmggXAorICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmhcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmggXAogICAgIHBh
Z2UvSGlzdG9yeS5oIFwKICAgICBwYWdlL0xvY2F0aW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjg3NTFlYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgi
CisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgi
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2V7CisKK2lubGluZSBMYXlvdXRTaXplIGZy
YW1lVG9NYWluRnJhbWVPZmZzZXQoRnJhbWUqIGZyYW1lKQoreworICAgIExheW91dFBvaW50IG1h
aW5GcmFtZVBvaW50ID0gZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhMYXlvdXRQb2lu
dCgpKSk7CisgICAgcmV0dXJuIHRvTGF5b3V0U2l6ZShtYWluRnJhbWVQb2ludCk7Cit9CisKK30g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVy
IHsKKwordm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTm9kZSog
bm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
KyAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
KworICAgIGlmICghcmVuZGVyZXIgfHwgIWNvbnRhaW5pbmdGcmFtZSB8fCAhY29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0U2l6ZSBtYWluRnJhbWVPZmZzZXQgPSBmcmFtZVRv
TWFpbkZyYW1lT2Zmc2V0KGNvbnRhaW5pbmdGcmFtZSk7CisKKyAgICAvLyBEb24ndCB0cmFuc2xh
dGUgdGhlIGNvbnRleHQgaWYgdGhlIGZyYW1lIGlzIHJlbmRlcmVkIGluIHBhZ2UgY29vcmRpbmF0
ZXMuCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5G
cmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkgewor
ICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxl
UmVjdC55KCkpOworICAgIH0KKworICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSB8fCByZW5kZXJl
ci0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7Cisg
ICAgICAgIExheW91dFJlY3QgcGFkZGluZ0JveDsKKyAgICAgICAgTGF5b3V0UmVjdCBib3JkZXJC
b3g7CisKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKSB7CisgICAgICAgICAgICBSZW5k
ZXJCb3gqIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKTsKKyAgICAgICAgICAgIGNv
bnRlbnRCb3ggPSByZW5kZXJCb3gtPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgICAgICAgICBwYWRk
aW5nQm94ID0gTGF5b3V0UmVjdChjb250ZW50Qm94LngoKSAtIHJlbmRlckJveC0+cGFkZGluZ0xl
ZnQoKSwgY29udGVudEJveC55KCkgLSByZW5kZXJCb3gtPnBhZGRpbmdUb3AoKSwKKyAgICAgICAg
ICAgICAgICAgICAgY29udGVudEJveC53aWR0aCgpICsgcmVuZGVyQm94LT5wYWRkaW5nTGVmdCgp
ICsgcmVuZGVyQm94LT5wYWRkaW5nUmlnaHQoKSwgY29udGVudEJveC5oZWlnaHQoKSArIHJlbmRl
ckJveC0+cGFkZGluZ1RvcCgpICsgcmVuZGVyQm94LT5wYWRkaW5nQm90dG9tKCkpOworICAgICAg
ICAgICAgYm9yZGVyQm94ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSAtIHJlbmRlckJveC0+
Ym9yZGVyTGVmdCgpLCBwYWRkaW5nQm94LnkoKSAtIHJlbmRlckJveC0+Ym9yZGVyVG9wKCksCisg
ICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3gud2lkdGgoKSArIHJlbmRlckJveC0+Ym9yZGVy
TGVmdCgpICsgcmVuZGVyQm94LT5ib3JkZXJSaWdodCgpLCBwYWRkaW5nQm94LmhlaWdodCgpICsg
cmVuZGVyQm94LT5ib3JkZXJUb3AoKSArIHJlbmRlckJveC0+Ym9yZGVyQm90dG9tKCkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmVuZGVySW5saW5lKiByZW5kZXJJbmxpbmUgPSB0
b1JlbmRlcklubGluZShyZW5kZXJlcik7CisgICAgICAgICAgICAvLyBSZW5kZXJJbmxpbmUncyBi
b3VuZGluZyBib3ggaW5jbHVkZXMgcGFkZGluZ3MgYW5kIGJvcmRlcnMsIGV4Y2x1ZGVzIG1hcmdp
bnMuCisgICAgICAgICAgICBib3JkZXJCb3ggPSByZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdC
b3goKTsKKyAgICAgICAgfQorCisgICAgICAgIFJvdW5kZWRSZWN0IHJlY3QoYm9yZGVyQm94KTsK
KyAgICAgICAgcmVjdC5leHBhbmRSYWRpaSgxMCk7CisgICAgICAgIHJlY3QuaW5mbGF0ZVdpdGhS
YWRpaSg1KTsKKworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnM7CisKKyAgICAgICAgTGF5
b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CisgICAgICAgIHdoaWxlIChyZW5kZXJlcikgeworICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXh0Q29udGFpbmVyID0gcmVuZGVyZXItPmNvbnRhaW5l
cigpOworICAgICAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlbmRlcmVy
LT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKKyAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CisgICAgICAgICAgICByZW5kZXJlci0+
Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCBjb250YWluZXJPZmZzZXQs
IHQpOworCisgICAgICAgICAgICB0cmFucyA9IHQudG9BZmZpbmVUcmFuc2Zvcm0oKSAqIHRyYW5z
OworICAgICAgICAgICAgcmVmZXJlbmNlUG9pbnQubW92ZShjb250YWluZXJPZmZzZXQpOworICAg
ICAgICAgICAgcmVuZGVyZXIgPSBuZXh0Q29udGFpbmVyOworICAgICAgICB9CisKKyAgICAgICAg
cmVjdC5tb3ZlKG1haW5GcmFtZU9mZnNldCk7CisKKyAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RN
KHRyYW5zKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIG5vZGUtPnJl
bmRlcmVyKCktPnN0eWxlKCktPnRhcEhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVyCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2VzdHVyZVRhcEhpZ2hsaWdodGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBI
aWdobGlnaHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDkyZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGln
aHRlci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZXN0dXJlVGFw
SGlnaGxpZ2h0ZXJfaAorI2RlZmluZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXJfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgTm9kZTsKKworbmFtZXNwYWNlIEdlc3R1cmVUYXBIaWdobGlnaHRlciB7CisKK3ZvaWQgZHJh
d0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQqLCBOb2RlKik7CisKK30gLy8gbmFtZXNwYWNlIEdl
c3R1cmVUYXBIaWdobGlnaHRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBET01Ob2RlSGlnaGxpZ2h0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzM2ZkYmUuLjhkMWJkZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQg
dGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0YXAg
aGlnaGxpZ2h0aW5nIGZvciBRdC4gV2hlbiBhIHRvdWNoIHByZXNzIGlzIGlzc3VlZCwKKyAgICAg
ICAgd2hpY2ggaXMgbm90IGhhbmRsZWQgYnkgdGhlIHdlYiBwYWdlLCB0aGVuIHdlIGhpZ2hsaWdo
dCBhbnkKKyAgICAgICAgYWN0aXZhdGFibGUgbm9kZSBiZWxvdy4gSW4gYWxsIG90ZWhyIGNhc2Vz
LCB3ZSBoaWRlIGFueSBoaWdobGlnaHRzLgorCisgICAgICAgIFRoZSBoaWdobGlnaHRpbmcgaXRz
ZWxmIGlzIHBhaW50ZWQgb24gYW4gYWNjZWxlcmF0ZWQgUGFnZU92ZXJsYXksCisgICAgICAgIG9u
IHRoZSB3ZWIgcHJvY2VzcyBzaWRlLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxp
Z2h0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRD
b250cm9sbGVyOjpUYXBIaWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGFw
SGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQpOgorICAgICAgICAoV2Vi
S2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6Om1vdXNlRXZlbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhp
Z2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRy
b2xsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDEyLTAxLTE4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bm90aGVyIGJ1aWxkIGZpeCBmb3IgcjEwNTM2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDM1OTgzZjAuLjdk
NmU3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzQ4LDYgKzM0OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xs
ZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaCBcCkBAIC03MDEsNiArNzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVy
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZmY2YzAuLjFjM2YxMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05OTEsNiArOTkxLDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmIGV2ZW50KQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKICAgICB9IGVs
c2UgeworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBJbnRQb2ludCBhY3RpdmF0aW9uUG9pbnQ7
CisgICAgICAgIGlmIChldmVudC50b3VjaFBvaW50cygpLnNpemUoKSA9PSAxKSB7CisgICAgICAg
ICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgcG9pbnQgPSBldmVudC50b3VjaFBvaW50cygpLmF0
KDApOworICAgICAgICAgICAgaWYgKHBvaW50LnN0YXRlKCkgPT0gV2ViUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFByZXNzZWQpCisgICAgICAgICAgICAgICAgYWN0aXZhdGlvblBvaW50ID0gcG9p
bnQucG9zaXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihhY3RpdmF0aW9uUG9p
bnQpLCBtX3BhZ2VJRCk7CisjZW5kaWYKICAgICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgbV9wYWdlQ2xpZW50LT5kb25lV2l0aFRvdWNoRXZlbnQoZXZlbnQsIGlzRXZlbnRI
YW5kbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VFdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZUV2ZW50SGFuZGxlci5jcHAKaW5kZXggZjU1N2VlOS4uYTI3NWQ0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKQEAg
LTk3LDYgKzk3LDcgQEAgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpRdFdlYlBhZ2VFdmVudEhhbmRs
ZXIoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlBhZ2UqIHEKICAgICAsIG1fcG9zdHBvbmVU
ZXh0SW5wdXRTdGF0ZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgY29ubmVjdChxQXBwLT5pbnB1dFBh
bmVsKCksIFNJR05BTCh2aXNpYmxlQ2hhbmdlZCgpKSwgdGhpcywgU0xPVChpbnB1dFBhbmVsVmlz
aWJsZUNoYW5nZWQoKSkpOworCiB9CiAKIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6flF0V2ViUGFn
ZUV2ZW50SGFuZGxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMjY4M2JjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcApAQCAtMCww
ICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUYXBIaWdobGlnaHRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKKyNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0Nv
bnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR2VzdHVyZVRhcEhpZ2hs
aWdodGVyLmg+CisKKyNpbmNsdWRlIDxXZWJDb3JlL0RPTU5vZGVIaWdobGlnaHRlci5oPgorCit1
c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdobGlnaHRDb250cm9s
bGVyKFdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1f
b3ZlcmxheSgwKQorICAgICwgbV9ub2RlKDApCit7Cit9CisKK1RhcEhpZ2hsaWdodENvbnRyb2xs
ZXI6On5UYXBIaWdobGlnaHRDb250cm9sbGVyKCkKK3sKK30KKwordm9pZCBUYXBIaWdobGlnaHRD
b250cm9sbGVyOjpoaWdobGlnaHQoTm9kZSogbm9kZSkKK3sKKyAgICBtX25vZGUgPSBub2RlOwor
CisgICAgaWYgKCFtX292ZXJsYXkpIHsKKyAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBvdmVy
bGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9vdmVybGF5ID0gb3Zl
cmxheS5nZXQoKTsKKyAgICAgICAgbV93ZWJQYWdlLT5pbnN0YWxsUGFnZU92ZXJsYXkob3Zlcmxh
eS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAgICBtX292ZXJsYXktPnNldE5lZWRzRGlz
cGxheSgpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQo
KQoreworICAgIGlmIChtX292ZXJsYXkpCisgICAgICAgIG1fd2ViUGFnZS0+dW5pbnN0YWxsUGFn
ZU92ZXJsYXkobV9vdmVybGF5LCB0cnVlKTsKKyAgICBBU1NFUlQoIW1fb3ZlcmxheSk7Cit9CisK
K3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92
ZXJsYXkqKQoreworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OndpbGxNb3ZlVG9X
ZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBpZiAod2ViUGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHBhZ2Ugb3ZlcmxheSBpcyBtb3Zpbmcg
YXdheSBmcm9tIHRoZSB3ZWIgcGFnZSwgcmVzZXQgaXQuCisgICAgQVNTRVJUKG1fb3ZlcmxheSk7
CisgICAgbV9vdmVybGF5ID0gMDsKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpk
aWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopCit7Cit9CisKK3ZvaWQgVGFw
SGlnaGxpZ2h0Q29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQoreworICAgIGlmICghbV9ub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBHZXN0dXJlVGFw
SGlnaGxpZ2h0ZXI6OmRyYXdIaWdobGlnaHQoJmdyYXBoaWNzQ29udGV4dCwgbV9ub2RlKTsKK30K
KworYm9vbCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjptb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiBw
YWdlT3ZlcmxheSwgY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFiOTJjYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250
cm9sbGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVGFw
SGlnaGxpZ2h0Q29udHJvbGxlcl9oCisjZGVmaW5lIFRhcEhpZ2hsaWdodENvbnRyb2xsZXJfaAor
CisjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlICJUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRnJhbWU7Cisg
ICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBOb2RlOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgVGFwSGlnaGxpZ2h0Q29udHJvbGxlciA6IHBy
aXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFw
SGlnaGxpZ2h0Q29udHJvbGxlcik7CisKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUYXBIaWdobGln
aHRDb250cm9sbGVyKFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5UYXBIaWdobGlnaHRDb250cm9s
bGVyKCk7CisKKyAgICB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CisgICAgdm9pZCBo
aWRlSGlnaGxpZ2h0KCk7CisKK3ByaXZhdGU6CisgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudC4K
KyAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKik7
CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdl
Kik7CisgICAgdmlydHVhbCBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJN
b3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0
KTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlKiBtX3dlYlBhZ2U7CisgICAgUGFnZU92ZXJsYXkq
IG1fb3ZlcmxheTsKKyAgICBXZWJDb3JlOjpOb2RlKiBtX25vZGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFRhcEhpZ2hsaWdodENvbnRyb2xsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM2NWQ1Nzgu
LmNlMjA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTE5Miw2ICsxOTIsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgog
ICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkucnVuTG9v
cCgpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAgICAgLCBt
X2ZpbmRDb250cm9sbGVyKHRoaXMpCisjaWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3RhcEhpZ2hs
aWdodENvbnRyb2xsZXIodGhpcykKKyNlbmRpZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcih0aGlzKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwocGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpCkBAIC0xNDIwLDYgKzE0MjMsMjcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0
b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVG9DdXJyZW50SXRlbShjb25zdCBTZXNzaW9uU3RhdGUmIHNl
c3Npb24KIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oUVQpCit2
b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQm
IHBvaW50KQoreworICAgIE5vZGUqIGFjdGl2YXRpb25Ob2RlID0gMDsKKyAgICBGcmFtZSogbWFp
bmZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKworICAgIGlmIChwb2ludCAhPSBJbnRQb2lu
dDo6emVybygpKSB7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmln
bm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgIGFjdGl2YXRpb25Ob2RlID0gcmVzdWx0Lmlu
bmVyTm9kZSgpOworCisgICAgICAgIGlmICghYWN0aXZhdGlvbk5vZGUtPmlzRm9jdXNhYmxlKCkp
CisgICAgICAgICAgICBhY3RpdmF0aW9uTm9kZSA9IGFjdGl2YXRpb25Ob2RlLT5lbmNsb3NpbmdM
aW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICB9CisKKyAgICBpZiAoYWN0aXZhdGlvbk5vZGUp
CisgICAgICAgIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKS5oaWdobGlnaHQoYWN0aXZhdGlvbk5v
ZGUpOworICAgIGVsc2UKKyAgICAgICAgdGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZGVIaWdo
bGlnaHQoKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0
IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCA0MDA3MmNmLi40NzNkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNp
bmNsdWRlICJUYXBIaWdobGlnaHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgpAQCAtMzE1LDYgKzMxNiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFdlYkV2ZW50
KiBjdXJyZW50RXZlbnQoKTsKIAogICAgIEZpbmRDb250cm9sbGVyJiBmaW5kQ29udHJvbGxlcigp
IHsgcmV0dXJuIG1fZmluZENvbnRyb2xsZXI7IH0KKyNpZiBQTEFURk9STShRVCkKKyAgICBUYXBI
aWdobGlnaHRDb250cm9sbGVyJiB0YXBIaWdobGlnaHRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90
YXBIaWdobGlnaHRDb250cm9sbGVyOyB9CisjZW5kaWYKKwogICAgIEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyJiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICAgICBO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpOwogCkBAIC01MzgsNiArNTQzLDkgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2
ZW50Jik7CiAgICAgdm9pZCB0b3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91Y2hF
dmVudCYsIGJvb2wmIGhhbmRsZWQpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlnaGxp
Z2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlm
CiAjZW5kaWYKICAgICB2b2lkIGNvbnRleHRNZW51SGlkZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRl
eHRNZW51ID0gZmFsc2U7IH0KIApAQCAtNzAwLDYgKzcwOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIEZpbmRDb250cm9sbGVyIG1fZmluZENvbnRyb2xsZXI7CisjaWYgUExBVEZPUk0oUVQp
CisgICAgVGFwSGlnaGxpZ2h0Q29udHJvbGxlciBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXI7Cisj
ZW5kaWYKICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG1fcGFnZU92ZXJsYXk7CiAKICAgICBSZWZQ
dHI8V2ViUGFnZT4gbV91bmRlcmxheVBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDVhM2JiNDUuLjZlZjBi
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC00MCw2ICs0MCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ugewog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNo
RXZlbnQgZXZlbnQpCiAgICAgVG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViVG91
Y2hFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkKKyNpZiBQTEFURk9STShRVCkKKyAgICBI
aWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorI2Vu
ZGlmCiAjZW5kaWYKIAogICAgIENvbnRleHRNZW51SGlkZGVuKCkKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123740</attachid>
            <date>2012-01-24 08:29:37 -0800</date>
            <delta_ts>2012-01-24 09:02:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>28026</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSA0YmQwNDlmZDhiYzFjYmQyOTg0MjM0OThkZGRmZmJhMzA4NWI1OTdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwICAgICAgfCAgMTI0ICsrKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oICAg
ICAgICB8ICAgNDYgKysrKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDM3ICsrKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAxMCArKwogLi4uL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgfCAgICAxICsKIC4uLi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgIHwgIDEwMyArKysrKysrKysrKysr
KysrCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCAgICB8
ICAgNjkgKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCAgICAgIHwgICAyNCArKysrCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oICAgICAgICB8ICAgMTEgKysKIC4uLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIHwgICAgMyArCiAxNSBmaWxlcyBjaGFuZ2VkLCA0NzIg
aW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYW51YWxU
ZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENv
bnRyb2xsZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCAxNzIzNDVjLi5mZDZjYTlhIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMjQgIEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0g
SW1wbGVtZW50IHRhcCBmZWVkYmFjayByZXNwZWN0aW5nIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1j
b2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBtYW51YWwgdGVzdC4KKworICAgICAgICAqIE1hbnVhbFRlc3RzL3F0L3RhcC1oaWdobGlnaHRp
bmcuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBtb3ZlIFRvb2xzLmd5cCwgc3dpdGNoIGJ1
aWxkLXdlYmtpdCAtLWNocm9taXVtIHRvIEFsbC5neXAKZGlmZiAtLWdpdCBhL01hbnVhbFRlc3Rz
L3F0L3RhcC1oaWdobGlnaHRpbmcuaHRtbCBiL01hbnVhbFRlc3RzL3F0L3RhcC1oaWdobGlnaHRp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWFiZGYyCi0tLSAv
ZGV2L251bGwKKysrIGIvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sCkBAIC0w
LDAgKzEsMTEgQEAKKzxoMT4KKzxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6
MTBweDsgdG9wOjEwcHg7JyB0eXBlPSd0ZXh0Jz4KKzxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJz
b2x1dGU7IGxlZnQ6MHB4OyB0b3A6MzAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOnNrZXcoMzBkZWcp
IHJvdGF0ZSgtNDBkZWcpIHNjYWxlKDEuMik7JyB0eXBlPSd0ZXh0Jz4KKzxpbnB1dCBzdHlsZT0n
cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTAwcHg7IHRvcDoxMDBweDsgLXdlYmtpdC10cmFuc2Zv
cm06IHJvdGF0ZSgtMjBkZWcpIHNjYWxlKDEuNSk7JyB0eXBlPSdidXR0b24nIHZhbHVlPSdoZXN0
IzEnPgorPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NDAwcHg7IHRvcDoyMDBw
eDsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEwZGVnKTsnPjxhIGhyZWY9JyMnPmhlc3QjMjwv
YT48L2Rpdj4KKzxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjMwMHB4OyB0b3A6
MTAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg3MGRlZyk7Jz48ZGl2IHN0eWxlPScgLXdl
YmtpdC10cmFuc2Zvcm06cm90YXRlKDEwZGVnKTsnPjxhIGhyZWY9JyMnPmhlc3QjMzwvYT48L2Rp
dj48L2Rpdj4KKzxkaXYgc3R5bGU9Jy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg3MGRlZyk7IHdp
ZHRoOjIwMHB4Jz48ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9w
Oi0xMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEwZGVnKTsnPjxhIGhyZWY9JyMnPmhl
c3QjNDwvYT48L2Rpdj48L2Rpdj4KKzxkaXY+PGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7
IGxlZnQ6NDAwcHg7IHRvcDo0MDBweDsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEwZGVnKTsn
PjxhIGhyZWY9JyMnPmhlc3QjNGE8L2E+PC9kaXY+PC9kaXY+Cis8YSBocmVmPScjJyBzdHlsZT0n
cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MDBweCc+aGVzdCM1PC9hPgorPGRpdiBzdHlsZT0ncG9z
aXRpb246YWJzb2x1dGU7bGVmdDo2NDBweCc+PGEgaHJlZj0nIyc+aGVzdCM2PC9hPgorPC9oMT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzgxZDk0Li4yZDhmN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMDEtMjQgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IHRhcCBmZWVkYmFjayByZXNwZWN0aW5n
IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgaGlnaGxpZ2h0aW5nIG9mIGRvbSBub2RlcyB3
aXRoIGEgcm91bmRlZCByZWN0LCByZXNwZWN0aW5nCisgICAgICAgIHRoZSBjb2xvciBvZiAtd2Vi
a2l0LXRhcC1oaWdobGlnaHQtY29sb3IgYW5kIGFueSB0cmFuc2Zvcm0gYXBwbGllZAorICAgICAg
ICB0byB0aGUgZWxlbWVudC4KKworICAgICAgICBUZXN0ZWQgd2l0aCBtYW51YWwgdGVzdC4KKwor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVUYXBIaWdobGlnaHRlcjo6
ZHJhd0hpZ2hsaWdodCk6CisgICAgICAgICogcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaDog
QWRkZWQuCisKIDIwMTItMDEtMTkgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+
CiAKICAgICAgICAgQ2FjaGUgUmVuZGVyU3R5bGUgcG9pbnRlciBhcyBhIG1ldGhvZCB0byBhdm9p
ZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvciByZWdpb24gc3R5bGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggNDU3ZGIwYy4uNDVkOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05ODUsNiArOTg1LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgcGFnZS9GcmFtZVZpZXcuY3BwIFwKICAgICBwYWdlL0dlb2xvY2F0aW9u
LmNwcCBcCiAgICAgcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKKyAgICBwYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5jcHAgXAogICAgIHBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAog
ICAgIHBhZ2UvSGlzdG9yeS5jcHAgXAogICAgIHBhZ2UvTG9jYXRpb24uY3BwIFwKQEAgLTIwNDQs
NiArMjA0NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBhZ2UvRnJhbWVWaWV3LmggXAogICAgIHBh
Z2UvR2VvbG9jYXRpb24uaCBcCiAgICAgcGFnZS9HZW9wb3NpdGlvbi5oIFwKKyAgICBwYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5oXAogICAgIHBhZ2UvR3JvdXBTZXR0aW5ncy5oIFwKICAgICBw
YWdlL0hpc3RvcnkuaCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44M2JiZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlc3R1cmVUYXBIaWdobGlnaHRlci5o
IgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIK
KyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBMYXlvdXRTaXplIGZy
YW1lVG9NYWluRnJhbWVPZmZzZXQoRnJhbWUqIGZyYW1lKQoreworICAgIExheW91dFBvaW50IG1h
aW5GcmFtZVBvaW50ID0gZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhMYXlvdXRQb2lu
dCgpKSk7CisgICAgcmV0dXJuIHRvTGF5b3V0U2l6ZShtYWluRnJhbWVQb2ludCk7Cit9CisKK30g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVy
IHsKKwordm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTm9kZSog
bm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
KyAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
KworICAgIGlmICghcmVuZGVyZXIgfHwgIWNvbnRhaW5pbmdGcmFtZSB8fCAhY29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0U2l6ZSBtYWluRnJhbWVPZmZzZXQgPSBmcmFtZVRv
TWFpbkZyYW1lT2Zmc2V0KGNvbnRhaW5pbmdGcmFtZSk7CisKKyAgICAvLyBEb24ndCB0cmFuc2xh
dGUgdGhlIGNvbnRleHQgaWYgdGhlIGZyYW1lIGlzIHJlbmRlcmVkIGluIHBhZ2UgY29vcmRpbmF0
ZXMuCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5G
cmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkgewor
ICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxl
UmVjdC55KCkpOworICAgIH0KKworICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSB8fCByZW5kZXJl
ci0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7Cisg
ICAgICAgIExheW91dFJlY3QgcGFkZGluZ0JveDsKKyAgICAgICAgTGF5b3V0UmVjdCBib3JkZXJC
b3g7CisKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKSB7CisgICAgICAgICAgICBSZW5k
ZXJCb3gqIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKTsKKyAgICAgICAgICAgIGNv
bnRlbnRCb3ggPSByZW5kZXJCb3gtPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgICAgICAgICBwYWRk
aW5nQm94ID0gTGF5b3V0UmVjdChjb250ZW50Qm94LngoKSAtIHJlbmRlckJveC0+cGFkZGluZ0xl
ZnQoKSwgY29udGVudEJveC55KCkgLSByZW5kZXJCb3gtPnBhZGRpbmdUb3AoKSwKKyAgICAgICAg
ICAgICAgICAgICAgY29udGVudEJveC53aWR0aCgpICsgcmVuZGVyQm94LT5wYWRkaW5nTGVmdCgp
ICsgcmVuZGVyQm94LT5wYWRkaW5nUmlnaHQoKSwgY29udGVudEJveC5oZWlnaHQoKSArIHJlbmRl
ckJveC0+cGFkZGluZ1RvcCgpICsgcmVuZGVyQm94LT5wYWRkaW5nQm90dG9tKCkpOworICAgICAg
ICAgICAgYm9yZGVyQm94ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSAtIHJlbmRlckJveC0+
Ym9yZGVyTGVmdCgpLCBwYWRkaW5nQm94LnkoKSAtIHJlbmRlckJveC0+Ym9yZGVyVG9wKCksCisg
ICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3gud2lkdGgoKSArIHJlbmRlckJveC0+Ym9yZGVy
TGVmdCgpICsgcmVuZGVyQm94LT5ib3JkZXJSaWdodCgpLCBwYWRkaW5nQm94LmhlaWdodCgpICsg
cmVuZGVyQm94LT5ib3JkZXJUb3AoKSArIHJlbmRlckJveC0+Ym9yZGVyQm90dG9tKCkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmVuZGVySW5saW5lKiByZW5kZXJJbmxpbmUgPSB0
b1JlbmRlcklubGluZShyZW5kZXJlcik7CisgICAgICAgICAgICAvLyBSZW5kZXJJbmxpbmUncyBi
b3VuZGluZyBib3ggaW5jbHVkZXMgcGFkZGluZ3MgYW5kIGJvcmRlcnMsIGV4Y2x1ZGVzIG1hcmdp
bnMuCisgICAgICAgICAgICBib3JkZXJCb3ggPSByZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdC
b3goKTsKKyAgICAgICAgfQorCisgICAgICAgIFJvdW5kZWRSZWN0IHJlY3QoYm9yZGVyQm94KTsK
KyAgICAgICAgcmVjdC5leHBhbmRSYWRpaSgxMCk7CisgICAgICAgIHJlY3QuaW5mbGF0ZVdpdGhS
YWRpaSg1KTsKKworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnM7CisKKyAgICAgICAgTGF5
b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CisgICAgICAgIHdoaWxlIChyZW5kZXJlcikgeworICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXh0Q29udGFpbmVyID0gcmVuZGVyZXItPmNvbnRhaW5l
cigpOworICAgICAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlbmRlcmVy
LT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKKyAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CisgICAgICAgICAgICByZW5kZXJlci0+
Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCBjb250YWluZXJPZmZzZXQs
IHQpOworCisgICAgICAgICAgICB0cmFucyA9IHQudG9BZmZpbmVUcmFuc2Zvcm0oKSAqIHRyYW5z
OworICAgICAgICAgICAgcmVmZXJlbmNlUG9pbnQubW92ZShjb250YWluZXJPZmZzZXQpOworICAg
ICAgICAgICAgcmVuZGVyZXIgPSBuZXh0Q29udGFpbmVyOworICAgICAgICB9CisKKyAgICAgICAg
cmVjdC5tb3ZlKG1haW5GcmFtZU9mZnNldCk7CisKKyAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RN
KHRyYW5zKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIG5vZGUtPnJl
bmRlcmVyKCktPnN0eWxlKCktPnRhcEhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVyCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2VzdHVyZVRhcEhpZ2hsaWdodGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBI
aWdobGlnaHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDkyZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGln
aHRlci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZXN0dXJlVGFw
SGlnaGxpZ2h0ZXJfaAorI2RlZmluZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXJfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgTm9kZTsKKworbmFtZXNwYWNlIEdlc3R1cmVUYXBIaWdobGlnaHRlciB7CisKK3ZvaWQgZHJh
d0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQqLCBOb2RlKik7CisKK30gLy8gbmFtZXNwYWNlIEdl
c3R1cmVUYXBIaWdobGlnaHRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBET01Ob2RlSGlnaGxpZ2h0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzM2ZkYmUuLjhkMWJkZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQg
dGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0YXAg
aGlnaGxpZ2h0aW5nIGZvciBRdC4gV2hlbiBhIHRvdWNoIHByZXNzIGlzIGlzc3VlZCwKKyAgICAg
ICAgd2hpY2ggaXMgbm90IGhhbmRsZWQgYnkgdGhlIHdlYiBwYWdlLCB0aGVuIHdlIGhpZ2hsaWdo
dCBhbnkKKyAgICAgICAgYWN0aXZhdGFibGUgbm9kZSBiZWxvdy4gSW4gYWxsIG90ZWhyIGNhc2Vz
LCB3ZSBoaWRlIGFueSBoaWdobGlnaHRzLgorCisgICAgICAgIFRoZSBoaWdobGlnaHRpbmcgaXRz
ZWxmIGlzIHBhaW50ZWQgb24gYW4gYWNjZWxlcmF0ZWQgUGFnZU92ZXJsYXksCisgICAgICAgIG9u
IHRoZSB3ZWIgcHJvY2VzcyBzaWRlLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxp
Z2h0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRD
b250cm9sbGVyOjpUYXBIaWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGFw
SGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQpOgorICAgICAgICAoV2Vi
S2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6Om1vdXNlRXZlbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhp
Z2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRy
b2xsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDEyLTAxLTE4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bm90aGVyIGJ1aWxkIGZpeCBmb3IgcjEwNTM2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDM1OTgzZjAuLjdk
NmU3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzQ4LDYgKzM0OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xs
ZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaCBcCkBAIC03MDEsNiArNzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVy
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZmY2YzAuLjFjM2YxMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05OTEsNiArOTkxLDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmIGV2ZW50KQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKICAgICB9IGVs
c2UgeworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBJbnRQb2ludCBhY3RpdmF0aW9uUG9pbnQ7
CisgICAgICAgIGlmIChldmVudC50b3VjaFBvaW50cygpLnNpemUoKSA9PSAxKSB7CisgICAgICAg
ICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgcG9pbnQgPSBldmVudC50b3VjaFBvaW50cygpLmF0
KDApOworICAgICAgICAgICAgaWYgKHBvaW50LnN0YXRlKCkgPT0gV2ViUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFByZXNzZWQpCisgICAgICAgICAgICAgICAgYWN0aXZhdGlvblBvaW50ID0gcG9p
bnQucG9zaXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihhY3RpdmF0aW9uUG9p
bnQpLCBtX3BhZ2VJRCk7CisjZW5kaWYKICAgICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgbV9wYWdlQ2xpZW50LT5kb25lV2l0aFRvdWNoRXZlbnQoZXZlbnQsIGlzRXZlbnRI
YW5kbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VFdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZUV2ZW50SGFuZGxlci5jcHAKaW5kZXggZjU1N2VlOS4uYTI3NWQ0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKQEAg
LTk3LDYgKzk3LDcgQEAgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpRdFdlYlBhZ2VFdmVudEhhbmRs
ZXIoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlBhZ2UqIHEKICAgICAsIG1fcG9zdHBvbmVU
ZXh0SW5wdXRTdGF0ZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgY29ubmVjdChxQXBwLT5pbnB1dFBh
bmVsKCksIFNJR05BTCh2aXNpYmxlQ2hhbmdlZCgpKSwgdGhpcywgU0xPVChpbnB1dFBhbmVsVmlz
aWJsZUNoYW5nZWQoKSkpOworCiB9CiAKIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6flF0V2ViUGFn
ZUV2ZW50SGFuZGxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYzljMDcyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcApAQCAtMCww
ICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUYXBIaWdobGlnaHRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKKyNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0Nv
bnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1RhcEhpZ2hsaWdodENvbnRyb2xsZXI6OlRhcEhp
Z2hsaWdodENvbnRyb2xsZXIoV2ViUGFnZSogd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQ
YWdlKQorICAgICwgbV9vdmVybGF5KDApCisgICAgLCBtX25vZGUoMCkKK3sKK30KKworVGFwSGln
aGxpZ2h0Q29udHJvbGxlcjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKQoreworfQorCit2b2lk
IFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZ2hsaWdodChOb2RlKiBub2RlKQoreworICAgIG1f
bm9kZSA9IG5vZGU7CisKKyAgICBpZiAoIW1fb3ZlcmxheSkgeworICAgICAgICBSZWZQdHI8UGFn
ZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMpOworICAgICAgICBt
X292ZXJsYXkgPSBvdmVybGF5LmdldCgpOworICAgICAgICBtX3dlYlBhZ2UtPmluc3RhbGxQYWdl
T3ZlcmxheShvdmVybGF5LnJlbGVhc2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fb3Zlcmxh
eS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6
aGlkZUhpZ2hsaWdodCgpCit7CisgICAgaWYgKG1fb3ZlcmxheSkKKyAgICAgICAgbV93ZWJQYWdl
LT51bmluc3RhbGxQYWdlT3ZlcmxheShtX292ZXJsYXksIHRydWUpOworICAgIEFTU0VSVCghbV9v
dmVybGF5KTsKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpwYWdlT3ZlcmxheURl
c3Ryb3llZChQYWdlT3ZlcmxheSopCit7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxl
cjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKiB3ZWJQYWdlKQorewor
ICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgcGFnZSBvdmVy
bGF5IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIHdlYiBwYWdlLCByZXNldCBpdC4KKyAgICBBU1NF
UlQobV9vdmVybGF5KTsKKyAgICBtX292ZXJsYXkgPSAwOworfQorCit2b2lkIFRhcEhpZ2hsaWdo
dENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikKK3sK
K30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSog
cGFnZU92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKCFtX25vZGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdlc3R1cmVUYXBIaWdobGlnaHRlcjo6ZHJhd0hpZ2hsaWdodCgmZ3JhcGhpY3NDb250ZXh0
LCBtX25vZGUpOworfQorCitib29sIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6Om1vdXNlRXZlbnQo
UGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50
KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdo
dENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWNlMGU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Rh
cEhpZ2hsaWdodENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmbmRlZiBUYXBIaWdobGlnaHRDb250cm9sbGVyX2gKKyNkZWZpbmUgVGFwSGlnaGxpZ2h0
Q29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5jbHVkZSAiUGFn
ZU92ZXJsYXkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgRnJhbWU7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFRhcEhpZ2hsaWdodENvbnRy
b2xsZXIgOiBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOworCitwdWJsaWM6CisgICAgZXhwbGljaXQg
VGFwSGlnaGxpZ2h0Q29udHJvbGxlcihXZWJQYWdlKik7CisgICAgdmlydHVhbCB+VGFwSGlnaGxp
Z2h0Q29udHJvbGxlcigpOworCisgICAgdm9pZCBoaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSopOwor
ICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOworCitwcml2YXRlOgorICAgIC8vIFBhZ2VPdmVybGF5
OjpDbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVy
bGF5Kik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5Kiwg
V2ViUGFnZSopOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5
KiwgV2ViUGFnZSopOworICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5Kiwg
Y29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3Zl
cmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGRpcnR5UmVjdCk7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSogbV93ZWJQYWdlOworICAgIFBh
Z2VPdmVybGF5KiBtX292ZXJsYXk7CisgICAgV2ViQ29yZTo6Tm9kZSogbV9ub2RlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
CisjZW5kaWYgLy8gVGFwSGlnaGxpZ2h0Q29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMzY1ZDU3OC4uY2UyMDRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTky
LDYgKzE5Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAgICAgLCBtX3NldENh
blN0YXJ0TWVkaWFUaW1lcihXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCksIHRoaXMsICZX
ZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICAgICAsIG1fZmluZENvbnRyb2xs
ZXIodGhpcykKKyNpZiBQTEFURk9STShRVCkKKyAgICAsIG1fdGFwSGlnaGxpZ2h0Q29udHJvbGxl
cih0aGlzKQorI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKHRoaXMpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2NhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChwYXJhbWV0ZXJzLmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCkKQEAgLTE0MjAsNiArMTQyMywyNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uQW5k
TmF2aWdhdGVUb0N1cnJlbnRJdGVtKGNvbnN0IFNlc3Npb25TdGF0ZSYgc2Vzc2lvbgogfQogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShRVCkKK3ZvaWQgV2ViUGFnZTo6
aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7Cisg
ICAgTm9kZSogYWN0aXZhdGlvbk5vZGUgPSAwOworICAgIEZyYW1lKiBtYWluZnJhbWUgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpOworCisgICAgaWYgKHBvaW50ICE9IEludFBvaW50Ojp6ZXJvKCkpIHsK
KyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhwb2ludCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcq
LyB0cnVlKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CisK
KyAgICAgICAgaWYgKCFhY3RpdmF0aW9uTm9kZS0+aXNGb2N1c2FibGUoKSkKKyAgICAgICAgICAg
IGFjdGl2YXRpb25Ob2RlID0gYWN0aXZhdGlvbk5vZGUtPmVuY2xvc2luZ0xpbmtFdmVudFBhcmVu
dE9yU2VsZigpOworICAgIH0KKworICAgIGlmIChhY3RpdmF0aW9uTm9kZSkKKyAgICAgICAgdGFw
SGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZ2hsaWdodChhY3RpdmF0aW9uTm9kZSk7CisgICAgZWxz
ZQorICAgICAgICB0YXBIaWdobGlnaHRDb250cm9sbGVyKCkuaGlkZUhpZ2hsaWdodCgpOworfQor
I2VuZGlmCisKIHN0YXRpYyBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVu
dCYgdG91Y2hFdmVudCwgUGFnZSogcGFnZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDQwMDcyY2YuLjQ3M2Q5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlRhcEhp
Z2hsaWdodENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zMTUsNiAr
MzE2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGN1cnJlbnRFdmVu
dCgpOwogCiAgICAgRmluZENvbnRyb2xsZXImIGZpbmRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9m
aW5kQ29udHJvbGxlcjsgfQorI2lmIFBMQVRGT1JNKFFUKQorICAgIFRhcEhpZ2hsaWdodENvbnRy
b2xsZXImIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3RhcEhpZ2hsaWdodENv
bnRyb2xsZXI7IH0KKyNlbmRpZgorCiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXImIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9n
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogICAgIE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlciogbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCk7CiAKQEAgLTUzOCw2ICs1NDMsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICAgICB2
b2lkIHRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYg
aGFuZGxlZCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBoaWdobGlnaHRQb3RlbnRpYWxB
Y3RpdmF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisjZW5kaWYKICNlbmRpZgogICAg
IHZvaWQgY29udGV4dE1lbnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxz
ZTsgfQogCkBAIC03MDAsNiArNzA4LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgRmluZENv
bnRyb2xsZXIgbV9maW5kQ29udHJvbGxlcjsKKyNpZiBQTEFURk9STShRVCkKKyAgICBUYXBIaWdo
bGlnaHRDb250cm9sbGVyIG1fdGFwSGlnaGxpZ2h0Q29udHJvbGxlcjsKKyNlbmRpZgogICAgIFJl
ZlB0cjxQYWdlT3ZlcmxheT4gbV9wYWdlT3ZlcmxheTsKIAogICAgIFJlZlB0cjxXZWJQYWdlPiBt
X3VuZGVybGF5UGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWEzYmI0NS4uNmVmMGI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTQwLDYgKzQwLDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkK
ICAgICBUb3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50
KSAtPiAoYm9vbCBoYW5kbGVkKQorI2lmIFBMQVRGT1JNKFFUKQorICAgIEhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCisjZW5kaWYKICNlbmRpZgog
CiAgICAgQ29udGV4dE1lbnVIaWRkZW4oKQotLSAKMS43LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123744</attachid>
            <date>2012-01-24 09:02:08 -0800</date>
            <delta_ts>2012-01-25 02:55:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>27379</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBhZWNjOWE4MTQzMDgyMmNiODYwMjczNWI3NzRmODA0YzFjNTZmMDA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwICAgICAgfCAgMTI0ICsrKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oICAg
ICAgICB8ICAgNDYgKysrKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDM3ICsrKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAxMCArKwogLi4uL1dlYlByb2Nlc3MvV2Vi
UGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCAgfCAgMTAzICsrKysrKysrKysrKysrKysK
IC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oICAgIHwgICA2
OSArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwICAgICAgfCAgIDI0ICsrKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggICAgICAgIHwgICAxMSArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gfCAgICAzICsKIDE0IGZpbGVzIGNoYW5nZWQsIDQ3MSBpbnNl
cnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1hbnVhbFRlc3Rz
L3F0L3RhcC1oaWdobGlnaHRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDE3MjM0NWMuLmZkNmNhOWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBs
ZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG1h
bnVhbCB0ZXN0LgorCisgICAgICAgICogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIG1vdmUgVG9vbHMuZ3lwLCBzd2l0Y2ggYnVpbGQt
d2Via2l0IC0tY2hyb21pdW0gdG8gQWxsLmd5cApkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvcXQv
dGFwLWhpZ2hsaWdodGluZy5odG1sIGIvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYWJkZjIKLS0tIC9kZXYv
bnVsbAorKysgYi9NYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwKQEAgLTAsMCAr
MSwxMSBAQAorPGgxPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMHB4
OyB0b3A6MTBweDsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTsgbGVmdDowcHg7IHRvcDozMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06c2tldygzMGRlZykgcm90
YXRlKC00MGRlZykgc2NhbGUoMS4yKTsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3Np
dGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjEwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTog
cm90YXRlKC0yMGRlZykgc2NhbGUoMS41KTsnIHR5cGU9J2J1dHRvbicgdmFsdWU9J2hlc3QjMSc+
Cis8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9wOjIwMHB4OyAt
d2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMyPC9hPjwv
ZGl2PgorPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzAwcHg7IHRvcDoxMDBw
eDsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsnPjxkaXYgc3R5bGU9JyAtd2Via2l0
LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMzPC9hPjwvZGl2Pjwv
ZGl2PgorPGRpdiBzdHlsZT0nLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsgd2lkdGg6
MjAwcHgnPjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6LTEw
MHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCM0
PC9hPjwvZGl2PjwvZGl2PgorPGRpdj48ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVm
dDo0MDBweDsgdG9wOjQwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEg
aHJlZj0nIyc+aGVzdCM0YTwvYT48L2Rpdj48L2Rpdj4KKzxhIGhyZWY9JyMnIHN0eWxlPSdwb3Np
dGlvbjphYnNvbHV0ZTtsZWZ0OjUwMHB4Jz5oZXN0IzU8L2E+Cis8ZGl2IHN0eWxlPSdwb3NpdGlv
bjphYnNvbHV0ZTtsZWZ0OjY0MHB4Jz48YSBocmVmPScjJz5oZXN0IzY8L2E+Cis8L2gxPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDc3ODFkOTQuLjJkOGY3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdl
YmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBoaWdobGlnaHRpbmcgb2YgZG9tIG5vZGVzIHdpdGgg
YSByb3VuZGVkIHJlY3QsIHJlc3BlY3RpbmcKKyAgICAgICAgdGhlIGNvbG9yIG9mIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvciBhbmQgYW55IHRyYW5zZm9ybSBhcHBsaWVkCisgICAgICAgIHRv
IHRoZSBlbGVtZW50LgorCisgICAgICAgIFRlc3RlZCB3aXRoIG1hbnVhbCB0ZXN0LgorCisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRl
ZC4KKwogMjAxMi0wMS0xOSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAog
ICAgICAgICBDYWNoZSBSZW5kZXJTdHlsZSBwb2ludGVyIGFzIGEgbWV0aG9kIHRvIGF2b2lkIHBl
cmZvcm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHJlZ2lvbiBzdHlsaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0
NTdkYjBjLi40NWQ5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk4NSw2ICs5ODUsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwYWdlL0ZyYW1lVmlldy5jcHAgXAogICAgIHBhZ2UvR2VvbG9jYXRpb24uY3Bw
IFwKICAgICBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBhZ2UvR2VzdHVy
ZVRhcEhpZ2hsaWdodGVyLmNwcCBcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmNwcCBcCiAgICAg
cGFnZS9IaXN0b3J5LmNwcCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAgXApAQCAtMjA0NCw2ICsy
MDQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9GcmFtZVZpZXcuaCBcCiAgICAgcGFnZS9H
ZW9sb2NhdGlvbi5oIFwKICAgICBwYWdlL0dlb3Bvc2l0aW9uLmggXAorICAgIHBhZ2UvR2VzdHVy
ZVRhcEhpZ2hsaWdodGVyLmhcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmggXAogICAgIHBhZ2Uv
SGlzdG9yeS5oIFwKICAgICBwYWdlL0xvY2F0aW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjgzYmJmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgiCisK
KyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworaW5saW5lIExheW91dFNpemUgZnJhbWVU
b01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCit7CisgICAgTGF5b3V0UG9pbnQgbWFpbkZy
YW1lUG9pbnQgPSBmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5yb290Vmlld1Rv
Q29udGVudHMoZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KExheW91dFBvaW50KCkp
KTsKKyAgICByZXR1cm4gdG9MYXlvdXRTaXplKG1haW5GcmFtZVBvaW50KTsKK30KKworfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIgewor
Cit2b2lkIGRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBOb2RlKiBub2Rl
KQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAg
IEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworCisg
ICAgaWYgKCFyZW5kZXJlciB8fCAhY29udGFpbmluZ0ZyYW1lIHx8ICFjb250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBMYXlvdXRTaXplIG1haW5GcmFtZU9mZnNldCA9IGZyYW1lVG9NYWlu
RnJhbWVPZmZzZXQoY29udGFpbmluZ0ZyYW1lKTsKKworICAgIC8vIERvbid0IHRyYW5zbGF0ZSB0
aGUgY29udGV4dCBpZiB0aGUgZnJhbWUgaXMgcmVuZGVyZWQgaW4gcGFnZSBjb29yZGluYXRlcy4K
KyAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1l
KCktPnZpZXcoKTsKKyAgICBpZiAoIXZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKSB7CisgICAg
ICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwor
ICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXZpc2libGVSZWN0LngoKSwgLXZpc2libGVSZWN0
LnkoKSk7CisgICAgfQorCisgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpIHx8IHJlbmRlcmVyLT5p
c1JlbmRlcklubGluZSgpKSB7CisgICAgICAgIExheW91dFJlY3QgY29udGVudEJveDsKKyAgICAg
ICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94OworICAgICAgICBMYXlvdXRSZWN0IGJvcmRlckJveDsK
KworICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpIHsKKyAgICAgICAgICAgIFJlbmRlckJv
eCogcmVuZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpOworICAgICAgICAgICAgY29udGVu
dEJveCA9IHJlbmRlckJveC0+Y29udGVudEJveFJlY3QoKTsKKyAgICAgICAgICAgIHBhZGRpbmdC
b3ggPSBMYXlvdXRSZWN0KGNvbnRlbnRCb3gueCgpIC0gcmVuZGVyQm94LT5wYWRkaW5nTGVmdCgp
LCBjb250ZW50Qm94LnkoKSAtIHJlbmRlckJveC0+cGFkZGluZ1RvcCgpLAorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50Qm94LndpZHRoKCkgKyByZW5kZXJCb3gtPnBhZGRpbmdMZWZ0KCkgKyBy
ZW5kZXJCb3gtPnBhZGRpbmdSaWdodCgpLCBjb250ZW50Qm94LmhlaWdodCgpICsgcmVuZGVyQm94
LT5wYWRkaW5nVG9wKCkgKyByZW5kZXJCb3gtPnBhZGRpbmdCb3R0b20oKSk7CisgICAgICAgICAg
ICBib3JkZXJCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpIC0gcmVuZGVyQm94LT5ib3Jk
ZXJMZWZ0KCksIHBhZGRpbmdCb3gueSgpIC0gcmVuZGVyQm94LT5ib3JkZXJUb3AoKSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFkZGluZ0JveC53aWR0aCgpICsgcmVuZGVyQm94LT5ib3JkZXJMZWZ0
KCkgKyByZW5kZXJCb3gtPmJvcmRlclJpZ2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgKyByZW5k
ZXJCb3gtPmJvcmRlclRvcCgpICsgcmVuZGVyQm94LT5ib3JkZXJCb3R0b20oKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBSZW5kZXJJbmxpbmUqIHJlbmRlcklubGluZSA9IHRvUmVu
ZGVySW5saW5lKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIC8vIFJlbmRlcklubGluZSdzIGJvdW5k
aW5nIGJveCBpbmNsdWRlcyBwYWRkaW5ncyBhbmQgYm9yZGVycywgZXhjbHVkZXMgbWFyZ2lucy4K
KyAgICAgICAgICAgIGJvcmRlckJveCA9IHJlbmRlcklubGluZS0+bGluZXNCb3VuZGluZ0JveCgp
OworICAgICAgICB9CisKKyAgICAgICAgUm91bmRlZFJlY3QgcmVjdChib3JkZXJCb3gpOworICAg
ICAgICByZWN0LmV4cGFuZFJhZGlpKDEwKTsKKyAgICAgICAgcmVjdC5pbmZsYXRlV2l0aFJhZGlp
KDUpOworCisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuczsKKworICAgICAgICBMYXlvdXRQ
b2ludCByZWZlcmVuY2VQb2ludDsKKyAgICAgICAgd2hpbGUgKHJlbmRlcmVyKSB7CisgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIG5leHRDb250YWluZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7
CisgICAgICAgICAgICBpZiAoIW5leHRDb250YWluZXIpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVuZGVyZXItPm9m
ZnNldEZyb21Db250YWluZXIobmV4dENvbnRhaW5lciwgcmVmZXJlbmNlUG9pbnQpOworICAgICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKKyAgICAgICAgICAgIHJlbmRlcmVyLT5nZXRU
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIGNvbnRhaW5lck9mZnNldCwgdCk7
CisKKyAgICAgICAgICAgIHRyYW5zID0gdC50b0FmZmluZVRyYW5zZm9ybSgpICogdHJhbnM7Cisg
ICAgICAgICAgICByZWZlcmVuY2VQb2ludC5tb3ZlKGNvbnRhaW5lck9mZnNldCk7CisgICAgICAg
ICAgICByZW5kZXJlciA9IG5leHRDb250YWluZXI7CisgICAgICAgIH0KKworICAgICAgICByZWN0
Lm1vdmUobWFpbkZyYW1lT2Zmc2V0KTsKKworICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0odHJh
bnMpOworICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgbm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dGFwSGlnaGxpZ2h0Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hs
aWdodGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwOTJmMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVy
LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlc3R1cmVUYXBIaWdo
bGlnaHRlcl9oCisjZGVmaW5lIEdlc3R1cmVUYXBIaWdobGlnaHRlcl9oCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBO
b2RlOworCituYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVyIHsKKwordm9pZCBkcmF3SGln
aGxpZ2h0KEdyYXBoaWNzQ29udGV4dCosIE5vZGUqKTsKKworfSAvLyBuYW1lc3BhY2UgR2VzdHVy
ZVRhcEhpZ2hsaWdodGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERP
TU5vZGVIaWdobGlnaHRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDMzZmRiZS4uOGQxYmRlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxlbWVudCB0YXAg
ZmVlZGJhY2sgcmVzcGVjdGluZyAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRhcCBoaWdo
bGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91Y2ggcHJlc3MgaXMgaXNzdWVkLAorICAgICAgICB3
aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2UsIHRoZW4gd2UgaGlnaGxpZ2h0IGFu
eQorICAgICAgICBhY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3RlaHIgY2FzZXMsIHdl
IGhpZGUgYW55IGhpZ2hsaWdodHMuCisKKyAgICAgICAgVGhlIGhpZ2hsaWdodGluZyBpdHNlbGYg
aXMgcGFpbnRlZCBvbiBhbiBhY2NlbGVyYXRlZCBQYWdlT3ZlcmxheSwKKyAgICAgICAgb24gdGhl
IHdlYiBwcm9jZXNzIHNpZGUuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpRdFdlYlBhZ2VF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRy
b2xsZXI6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyOjp+VGFwSGlnaGxpZ2h0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6
OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0
OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZCk6CisgICAgICAg
IChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OndpbGxNb3ZlVG9XZWJQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6ZGlkTW92ZVRvV2ViUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlnaGxp
Z2h0UG90ZW50aWFsQWN0aXZhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGFwSGlnaGxpZ2h0Q29udHJvbGxl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMTItMDEtMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIEFub3Ro
ZXIgYnVpbGQgZml4IGZvciByMTA1MzY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMzU5ODNmMC4uN2Q2ZTdi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCkBAIC0zNDgsNiArMzQ4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5o
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oIFwKQEAgLTcwMSw2ICs3MDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9U
aWxlZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTJmZjZjMC4uMWMzZjEzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk5MSw2ICs5OTEsMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYg
ZXZlbnQpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwogICAgIH0gZWxzZSB7
CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIEludFBvaW50IGFjdGl2YXRpb25Qb2ludDsKKyAg
ICAgICAgaWYgKGV2ZW50LnRvdWNoUG9pbnRzKCkuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAg
IFdlYlBsYXRmb3JtVG91Y2hQb2ludCBwb2ludCA9IGV2ZW50LnRvdWNoUG9pbnRzKCkuYXQoMCk7
CisgICAgICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUHJlc3NlZCkKKyAgICAgICAgICAgICAgICBhY3RpdmF0aW9uUG9pbnQgPSBwb2ludC5w
b3NpdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpIaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGFjdGl2YXRpb25Qb2ludCks
IG1fcGFnZUlEKTsKKyNlbmRpZgogICAgICAgICBpZiAobV90b3VjaEV2ZW50UXVldWUuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5kbGVkID0gZmFsc2U7CiAgICAgICAg
ICAgICBtX3BhZ2VDbGllbnQtPmRvbmVXaXRoVG91Y2hFdmVudChldmVudCwgaXNFdmVudEhhbmRs
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhp
Z2hsaWdodENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhZWIzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGFwSGln
aGxpZ2h0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5j
bHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgor
Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdobGlnaHRDb250
cm9sbGVyKFdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAs
IG1fb3ZlcmxheSgwKQorICAgICwgbV9ub2RlKDApCit7Cit9CisKK1RhcEhpZ2hsaWdodENvbnRy
b2xsZXI6On5UYXBIaWdobGlnaHRDb250cm9sbGVyKCkKK3sKK30KKwordm9pZCBUYXBIaWdobGln
aHRDb250cm9sbGVyOjpoaWdobGlnaHQoTm9kZSogbm9kZSkKK3sKKyAgICBtX25vZGUgPSBub2Rl
OworCisgICAgaWYgKCFtX292ZXJsYXkpIHsKKyAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBv
dmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9vdmVybGF5ID0g
b3ZlcmxheS5nZXQoKTsKKyAgICAgICAgbV93ZWJQYWdlLT5pbnN0YWxsUGFnZU92ZXJsYXkob3Zl
cmxheS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAgICBtX292ZXJsYXktPnNldE5lZWRz
RGlzcGxheSgpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZGVIaWdobGln
aHQoKQoreworICAgIGlmIChtX292ZXJsYXkpCisgICAgICAgIG1fd2ViUGFnZS0+dW5pbnN0YWxs
UGFnZU92ZXJsYXkobV9vdmVybGF5LCAvKiBmYWRlb3V0ICovIHRydWUpOworICAgIEFTU0VSVCgh
bV9vdmVybGF5KTsKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpwYWdlT3Zlcmxh
eURlc3Ryb3llZChQYWdlT3ZlcmxheSopCit7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJv
bGxlcjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKiB3ZWJQYWdlKQor
eworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgcGFnZSBv
dmVybGF5IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIHdlYiBwYWdlLCByZXNldCBpdC4KKyAgICBB
U1NFUlQobV9vdmVybGF5KTsKKyAgICBtX292ZXJsYXkgPSAwOworfQorCit2b2lkIFRhcEhpZ2hs
aWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikK
K3sKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSogcGFnZU92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKCFtX25vZGUpCisgICAgICAgIHJldHVybjsK
KworICAgIEdlc3R1cmVUYXBIaWdobGlnaHRlcjo6ZHJhd0hpZ2hsaWdodCgmZ3JhcGhpY3NDb250
ZXh0LCBtX25vZGUpOworfQorCitib29sIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6Om1vdXNlRXZl
bnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjZTBlNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVy
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVGFwSGlnaGxp
Z2h0Q29udHJvbGxlcl9oCisjZGVmaW5lIFRhcEhpZ2hsaWdodENvbnRyb2xsZXJfaAorCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xh
c3MgSW50UmVjdDsKK2NsYXNzIE5vZGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJQYWdlOworCitjbGFzcyBUYXBIaWdobGlnaHRDb250cm9sbGVyIDogcHJpdmF0ZSBQYWdl
T3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXBIaWdobGlnaHRD
b250cm9sbGVyKTsKKworcHVibGljOgorICAgIGV4cGxpY2l0IFRhcEhpZ2hsaWdodENvbnRyb2xs
ZXIoV2ViUGFnZSopOworICAgIHZpcnR1YWwgflRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKTsKKwor
ICAgIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIGhpZGVIaWdobGln
aHQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBQYWdlT3ZlcmxheTo6Q2xpZW50LgorICAgIHZpcnR1
YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOworCitwcml2
YXRlOgorICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKKyAgICBQYWdlT3ZlcmxheSogbV9vdmVybGF5
OworICAgIFdlYkNvcmU6Ok5vZGUqIG1fbm9kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8vIFRhcEhpZ2hs
aWdodENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDM2NWQ1NzguLmNlMjA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5Miw2ICsxOTIsOSBAQCBXZWJQYWdl
OjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRN
ZWRpYVRpbWVyRmlyZWQpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMpCisjaWYgUExBVEZP
Uk0oUVQpCisgICAgLCBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXIodGhpcykKKyNlbmRpZgogICAg
ICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcih0aGlzKQogICAgICwgbV9w
YWdlSUQocGFnZUlEKQogICAgICwgbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwocGFy
YW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCkBAIC0xNDIwLDYgKzE0MjMs
MjcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVG9DdXJyZW50SXRl
bShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb24KIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFj
dGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIE5vZGUqIGFjdGl2YXRpb25O
b2RlID0gMDsKKyAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKwor
ICAgIGlmIChwb2ludCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93U2hh
ZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgIGFj
dGl2YXRpb25Ob2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworCisgICAgICAgIGlmICghYWN0aXZh
dGlvbk5vZGUtPmlzRm9jdXNhYmxlKCkpCisgICAgICAgICAgICBhY3RpdmF0aW9uTm9kZSA9IGFj
dGl2YXRpb25Ob2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICB9CisK
KyAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIo
KS5oaWdobGlnaHQoYWN0aXZhdGlvbk5vZGUpOworICAgIGVsc2UKKyAgICAgICAgdGFwSGlnaGxp
Z2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9v
bCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIFBhZ2Uq
IHBhZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0MDA3MmNmLi40NzNk
OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJUYXBIaWdobGlnaHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzE1LDYgKzMxNiwxMCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQoKTsKIAogICAgIEZpbmRDb250
cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmluZENvbnRyb2xsZXI7IH0KKyNp
ZiBQTEFURk9STShRVCkKKyAgICBUYXBIaWdobGlnaHRDb250cm9sbGVyJiB0YXBIaWdobGlnaHRD
b250cm9sbGVyKCkgeyByZXR1cm4gbV90YXBIaWdobGlnaHRDb250cm9sbGVyOyB9CisjZW5kaWYK
KwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiBnZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI7IH0KICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwogCkBAIC01MzgsNiAr
NTQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgdG91
Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgdm9pZCB0b3VjaEV2ZW50U3luY0Zv
clRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQpOworI2lmIFBMQVRG
T1JNKFFUKQorICAgIHZvaWQgaGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOworI2VuZGlmCiAjZW5kaWYKICAgICB2b2lkIGNvbnRleHRNZW51SGlk
ZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51ID0gZmFsc2U7IH0KIApAQCAtNzAwLDYgKzcw
OCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEZpbmRDb250cm9sbGVyIG1fZmluZENvbnRy
b2xsZXI7CisjaWYgUExBVEZPUk0oUVQpCisgICAgVGFwSGlnaGxpZ2h0Q29udHJvbGxlciBtX3Rh
cEhpZ2hsaWdodENvbnRyb2xsZXI7CisjZW5kaWYKICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG1f
cGFnZU92ZXJsYXk7CiAKICAgICBSZWZQdHI8V2ViUGFnZT4gbV91bmRlcmxheVBhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDVhM2JiNDUuLjZlZjBiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MCw2ICs0MCw5IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgVG91
Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAgICAgVG91Y2hFdmVudFN5bmNG
b3JUZXN0aW5nKFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkK
KyNpZiBQTEFURk9STShRVCkKKyAgICBIaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKFdlYkNv
cmU6OkludFBvaW50IHBvaW50KQorI2VuZGlmCiAjZW5kaWYKIAogICAgIENvbnRleHRNZW51SGlk
ZGVuKCkKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123907</attachid>
            <date>2012-01-25 02:55:48 -0800</date>
            <delta_ts>2012-01-25 04:26:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>27904</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAwMTc3OTczNzNhYzgxMTgxNmYyOGE5MTc5NmIwNmUwYTUzYWQ3MDlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwICAgICAgfCAgMTMwICsrKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oICAg
ICAgICB8ICAgNDYgKysrKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDM3ICsrKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAxMCArKwogLi4uL1dlYlByb2Nlc3MvV2Vi
UGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCAgfCAgMTE3ICsrKysrKysrKysrKysrKysr
KwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmggICAgfCAg
IDY5ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgICAgICB8ICAgMjQgKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCAgICAgICAgfCAgIDExICsrCiAuLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAgIDMgKwogMTQgZmlsZXMgY2hhbmdlZCwgNDkxIGlu
c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFudWFsVGVz
dHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250
cm9sbGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggMTcyMzQ1Yy4uZmQ2Y2E5YSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTI0ICBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIElt
cGxlbWVudCB0YXAgZmVlZGJhY2sgcmVzcGVjdGluZyAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29s
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
bWFudWFsIHRlc3QuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5n
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBUb29scy5neXAsIHN3aXRjaCBidWls
ZC13ZWJraXQgLS1jaHJvbWl1bSB0byBBbGwuZ3lwCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9x
dC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwgYi9NYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5n
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVhYmRmMgotLS0gL2Rl
di9udWxsCisrKyBiL01hbnVhbFRlc3RzL3F0L3RhcC1oaWdobGlnaHRpbmcuaHRtbApAQCAtMCww
ICsxLDExIEBACis8aDE+Cis8aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjEw
cHg7IHRvcDoxMHB4OycgdHlwZT0ndGV4dCc+Cis8aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29s
dXRlOyBsZWZ0OjBweDsgdG9wOjMwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpza2V3KDMwZGVnKSBy
b3RhdGUoLTQwZGVnKSBzY2FsZSgxLjIpOycgdHlwZT0ndGV4dCc+Cis8aW5wdXQgc3R5bGU9J3Bv
c2l0aW9uOmFic29sdXRlOyBsZWZ0OjEwMHB4OyB0b3A6MTAwcHg7IC13ZWJraXQtdHJhbnNmb3Jt
OiByb3RhdGUoLTIwZGVnKSBzY2FsZSgxLjUpOycgdHlwZT0nYnV0dG9uJyB2YWx1ZT0naGVzdCMx
Jz4KKzxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6MjAwcHg7
IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0IzI8L2E+
PC9kaXY+Cis8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDozMDBweDsgdG9wOjEw
MHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNzBkZWcpOyc+PGRpdiBzdHlsZT0nIC13ZWJr
aXQtdHJhbnNmb3JtOnJvdGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0IzM8L2E+PC9kaXY+
PC9kaXY+Cis8ZGl2IHN0eWxlPSctd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNzBkZWcpOyB3aWR0
aDoyMDBweCc+PGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NDAwcHg7IHRvcDot
MTAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0
IzQ8L2E+PC9kaXY+PC9kaXY+Cis8ZGl2PjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBs
ZWZ0OjQwMHB4OyB0b3A6NDAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMGRlZyk7Jz48
YSBocmVmPScjJz5oZXN0IzRhPC9hPjwvZGl2PjwvZGl2PgorPGEgaHJlZj0nIycgc3R5bGU9J3Bv
c2l0aW9uOmFic29sdXRlO2xlZnQ6NTAwcHgnPmhlc3QjNTwvYT4KKzxkaXYgc3R5bGU9J3Bvc2l0
aW9uOmFic29sdXRlO2xlZnQ6NjQwcHgnPjxhIGhyZWY9JyMnPmhlc3QjNjwvYT4KKzwvaDE+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNzc4MWQ5NC4uMmQ4ZjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDEyLTAxLTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxlbWVudCB0YXAgZmVlZGJhY2sgcmVzcGVjdGluZyAt
d2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0
aCBhIHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZworICAgICAgICB0aGUgY29sb3Igb2YgLXdlYmtp
dC10YXAtaGlnaGxpZ2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKKyAgICAgICAg
dG8gdGhlIGVsZW1lbnQuCisKKyAgICAgICAgVGVzdGVkIHdpdGggbWFudWFsIHRlc3QuCisKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlVGFwSGlnaGxpZ2h0ZXI6OmRy
YXdIaWdobGlnaHQpOgorICAgICAgICAqIHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmg6IEFk
ZGVkLgorCiAyMDEyLTAxLTE5ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgog
CiAgICAgICAgIENhY2hlIFJlbmRlclN0eWxlIHBvaW50ZXIgYXMgYSBtZXRob2QgdG8gYXZvaWQg
cGVyZm9ybWFuY2UgcmVncmVzc2lvbiBmb3IgcmVnaW9uIHN0eWxpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDQ1N2RiMGMuLjQ1ZDk4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtOTg1LDYgKzk4NSw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcCBcCiAgICAgcGFnZS9HZW9sb2NhdGlvbi5j
cHAgXAogICAgIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBcCisgICAgcGFnZS9HZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIFwKICAgICBwYWdlL0dyb3VwU2V0dGluZ3MuY3BwIFwKICAg
ICBwYWdlL0hpc3RvcnkuY3BwIFwKICAgICBwYWdlL0xvY2F0aW9uLmNwcCBcCkBAIC0yMDQ0LDYg
KzIwNDUsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL0ZyYW1lVmlldy5oIFwKICAgICBwYWdl
L0dlb2xvY2F0aW9uLmggXAogICAgIHBhZ2UvR2VvcG9zaXRpb24uaCBcCisgICAgcGFnZS9HZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIuaFwKICAgICBwYWdlL0dyb3VwU2V0dGluZ3MuaCBcCiAgICAgcGFn
ZS9IaXN0b3J5LmggXAogICAgIHBhZ2UvTG9jYXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNmM5NjVlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaCIK
KworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCisj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitpbmxpbmUgTGF5b3V0U2l6ZSBmcmFt
ZVRvTWFpbkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBMYXlvdXRQb2ludCBtYWlu
RnJhbWVQb2ludCA9IGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnJvb3RWaWV3
VG9Db250ZW50cyhmcmFtZS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoTGF5b3V0UG9pbnQo
KSkpOworICAgIHJldHVybiB0b0xheW91dFNpemUobWFpbkZyYW1lUG9pbnQpOworfQorCitBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUb0Fic29sdXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlck9iamVjdCog
bykKK3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgIExheW91dFBvaW50IHJl
ZmVyZW5jZVBvaW50OworCisgICAgd2hpbGUgKG8pIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBu
ZXh0Q29udGFpbmVyID0gby0+Y29udGFpbmVyKCk7CisgICAgICAgIGlmICghbmV4dENvbnRhaW5l
cikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zm
c2V0ID0gby0+b2Zmc2V0RnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQb2lu
dCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CisgICAgICAgIG8tPmdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIobmV4dENvbnRhaW5lciwgY29udGFpbmVyT2Zmc2V0LCB0KTsKKwor
ICAgICAgICB0cmFuc2Zvcm0gPSB0LnRvQWZmaW5lVHJhbnNmb3JtKCkgKiB0cmFuc2Zvcm07Cisg
ICAgICAgIHJlZmVyZW5jZVBvaW50Lm1vdmUoY29udGFpbmVyT2Zmc2V0KTsKKyAgICAgICAgbyA9
IG5leHRDb250YWluZXI7CisgICAgfQorCisgICAgcmV0dXJuIHRyYW5zZm9ybTsKK30KKworfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIg
eworCit2b2lkIGRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBOb2RlKiBu
b2RlKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwor
CisgICAgaWYgKCFyZW5kZXJlciB8fCAhY29udGFpbmluZ0ZyYW1lIHx8ICFjb250ZXh0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBMYXlvdXRTaXplIG1haW5GcmFtZU9mZnNldCA9IGZyYW1lVG9N
YWluRnJhbWVPZmZzZXQoY29udGFpbmluZ0ZyYW1lKTsKKworICAgIC8vIERvbid0IHRyYW5zbGF0
ZSB0aGUgY29udGV4dCBpZiB0aGUgZnJhbWUgaXMgcmVuZGVyZWQgaW4gcGFnZSBjb29yZGluYXRl
cy4KKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIXZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKSB7Cisg
ICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCgp
OworICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXZpc2libGVSZWN0LngoKSwgLXZpc2libGVS
ZWN0LnkoKSk7CisgICAgfQorCisgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpIHx8IHJlbmRlcmVy
LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgIExheW91dFJlY3QgY29udGVudEJveDsKKyAg
ICAgICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94OworICAgICAgICBMYXlvdXRSZWN0IGJvcmRlckJv
eDsKKworICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpIHsKKyAgICAgICAgICAgIFJlbmRl
ckJveCogcmVuZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpOworICAgICAgICAgICAgY29u
dGVudEJveCA9IHJlbmRlckJveC0+Y29udGVudEJveFJlY3QoKTsKKyAgICAgICAgICAgIHBhZGRp
bmdCb3ggPSBMYXlvdXRSZWN0KGNvbnRlbnRCb3gueCgpIC0gcmVuZGVyQm94LT5wYWRkaW5nTGVm
dCgpLCBjb250ZW50Qm94LnkoKSAtIHJlbmRlckJveC0+cGFkZGluZ1RvcCgpLAorICAgICAgICAg
ICAgICAgICAgICBjb250ZW50Qm94LndpZHRoKCkgKyByZW5kZXJCb3gtPnBhZGRpbmdMZWZ0KCkg
KyByZW5kZXJCb3gtPnBhZGRpbmdSaWdodCgpLCBjb250ZW50Qm94LmhlaWdodCgpICsgcmVuZGVy
Qm94LT5wYWRkaW5nVG9wKCkgKyByZW5kZXJCb3gtPnBhZGRpbmdCb3R0b20oKSk7CisgICAgICAg
ICAgICBib3JkZXJCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpIC0gcmVuZGVyQm94LT5i
b3JkZXJMZWZ0KCksIHBhZGRpbmdCb3gueSgpIC0gcmVuZGVyQm94LT5ib3JkZXJUb3AoKSwKKyAg
ICAgICAgICAgICAgICAgICAgcGFkZGluZ0JveC53aWR0aCgpICsgcmVuZGVyQm94LT5ib3JkZXJM
ZWZ0KCkgKyByZW5kZXJCb3gtPmJvcmRlclJpZ2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgKyBy
ZW5kZXJCb3gtPmJvcmRlclRvcCgpICsgcmVuZGVyQm94LT5ib3JkZXJCb3R0b20oKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZW5kZXJJbmxpbmUqIHJlbmRlcklubGluZSA9IHRv
UmVuZGVySW5saW5lKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIC8vIFJlbmRlcklubGluZSdzIGJv
dW5kaW5nIGJveCBpbmNsdWRlcyBwYWRkaW5ncyBhbmQgYm9yZGVycywgZXhjbHVkZXMgbWFyZ2lu
cy4KKyAgICAgICAgICAgIGJvcmRlckJveCA9IHJlbmRlcklubGluZS0+bGluZXNCb3VuZGluZ0Jv
eCgpOworICAgICAgICB9CisKKyAgICAgICAgRmxvYXRSZWN0IHJlY3QoYm9yZGVyQm94KTsKKyAg
ICAgICAgcmVjdC5pbmZsYXRlKDUpOworICAgICAgICBQYXRoIHBhdGg7CisgICAgICAgIHBhdGgu
YWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKDEwLCAxMCkpOworCisgICAgICAgIHJlY3Qu
bW92ZShtYWluRnJhbWVPZmZzZXQpOworCisgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShsb2Nh
bFRvQWJzb2x1dGVUcmFuc2Zvcm0ocmVuZGVyZXIpKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFBh
dGgocGF0aCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0
ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVy
ZVRhcEhpZ2hsaWdodGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgw
OTJmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhp
Z2hsaWdodGVyLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlc3R1
cmVUYXBIaWdobGlnaHRlcl9oCisjZGVmaW5lIEdlc3R1cmVUYXBIaWdobGlnaHRlcl9oCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CitjbGFzcyBOb2RlOworCituYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVyIHsKKwordm9p
ZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCosIE5vZGUqKTsKKworfSAvLyBuYW1lc3Bh
Y2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIERPTU5vZGVIaWdobGlnaHRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDMzZmRiZS4uOGQxYmRl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTI0ICBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxl
bWVudCB0YXAgZmVlZGJhY2sgcmVzcGVjdGluZyAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91Y2ggcHJlc3MgaXMgaXNzdWVkLAor
ICAgICAgICB3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2UsIHRoZW4gd2UgaGln
aGxpZ2h0IGFueQorICAgICAgICBhY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3RlaHIg
Y2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCisKKyAgICAgICAgVGhlIGhpZ2hsaWdodGlu
ZyBpdHNlbGYgaXMgcGFpbnRlZCBvbiBhbiBhY2NlbGVyYXRlZCBQYWdlT3ZlcmxheSwKKyAgICAg
ICAgb24gdGhlIHdlYiBwcm9jZXNzIHNpZGUuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VFdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpR
dFdlYlBhZ2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBI
aWdobGlnaHRDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hs
aWdodENvbnRyb2xsZXI6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp+VGFwSGlnaGxpZ2h0Q29udHJvbGxlcik6CisgICAg
ICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZ2hsaWdodCk6CisgICAgICAg
IChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQpOgorICAgICAg
ICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OndpbGxNb3ZlVG9XZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6ZGlkTW92ZVRv
V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRyYXdS
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGFwSGlnaGxpZ2h0
Q29udHJvbGxlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKIDIwMTItMDEtMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFub3RoZXIgYnVpbGQgZml4IGZvciByMTA1MzY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMzU5ODNm
MC4uN2Q2ZTdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zNDgsNiArMzQ4LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29u
dHJvbGxlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oIFwKQEAgLTcwMSw2ICs3MDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRy
b2xsZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9UaWxlZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTJmZjZjMC4uMWMzZjEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk5MSw2ICs5OTEsMTYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91
Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwogICAg
IH0gZWxzZSB7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIEludFBvaW50IGFjdGl2YXRpb25Q
b2ludDsKKyAgICAgICAgaWYgKGV2ZW50LnRvdWNoUG9pbnRzKCkuc2l6ZSgpID09IDEpIHsKKyAg
ICAgICAgICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludCBwb2ludCA9IGV2ZW50LnRvdWNoUG9pbnRz
KCkuYXQoMCk7CisgICAgICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCkKKyAgICAgICAgICAgICAgICBhY3RpdmF0aW9uUG9pbnQg
PSBwb2ludC5wb3NpdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgcHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGFjdGl2YXRp
b25Qb2ludCksIG1fcGFnZUlEKTsKKyNlbmRpZgogICAgICAgICBpZiAobV90b3VjaEV2ZW50UXVl
dWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5kbGVkID0gZmFsc2U7
CiAgICAgICAgICAgICBtX3BhZ2VDbGllbnQtPmRvbmVXaXRoVG91Y2hFdmVudChldmVudCwgaXNF
dmVudEhhbmRsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQxOTJkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKQEAgLTAsMCAr
MSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250
cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcihXZWJQ
YWdlKiB3ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX292ZXJsYXko
MCkKKyAgICAsIG1fbm9kZSgwKQoreworfQorCitUYXBIaWdobGlnaHRDb250cm9sbGVyOjp+VGFw
SGlnaGxpZ2h0Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxl
cjo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCit7CisgICAgbV9ub2RlID0gbm9kZTsKKworICAgIGlm
ICghbV9vdmVybGF5KSB7CisgICAgICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gb3ZlcmxheSA9IFBh
Z2VPdmVybGF5OjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fb3ZlcmxheSA9IG92ZXJsYXkuZ2V0
KCk7CisgICAgICAgIG1fd2ViUGFnZS0+aW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVsZWFz
ZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9vdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsK
K30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KCkKK3sKKyAg
ICBpZiAobV9vdmVybGF5KQorICAgICAgICBtX3dlYlBhZ2UtPnVuaW5zdGFsbFBhZ2VPdmVybGF5
KG1fb3ZlcmxheSwgLyogZmFkZW91dCAqLyB0cnVlKTsKKyAgICBBU1NFUlQoIW1fb3ZlcmxheSk7
Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQo
UGFnZU92ZXJsYXkqKQoreworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OndpbGxN
b3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBpZiAo
d2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHBhZ2Ugb3ZlcmxheSBpcyBt
b3ZpbmcgYXdheSBmcm9tIHRoZSB3ZWIgcGFnZSwgcmVzZXQgaXQuCisgICAgQVNTRVJUKG1fb3Zl
cmxheSk7CisgICAgbV9vdmVybGF5ID0gMDsKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9s
bGVyOjpkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopCit7Cit9CisKK3N0
YXRpYyBDb2xvciBoaWdobGlnaHRDb2xvcihOb2RlKiBub2RlLCBmbG9hdCBmcmFjdGlvbkZhZGVk
SW4pCit7CisgICAgQ29sb3IgY29sb3IgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT50YXBI
aWdobGlnaHRDb2xvcigpOworICAgIHJldHVybiBDb2xvcihjb2xvci5yZWQoKSwgY29sb3IuZ3Jl
ZW4oKSwgY29sb3IuYmx1ZSgpLCBpbnQoY29sb3IuYWxwaGEoKSAqIGZyYWN0aW9uRmFkZWRJbikp
OworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
KiBwYWdlT3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkKK3sKKyAgICBpZiAoIW1fbm9kZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZmxvYXQgZnJhY3Rpb25GYWRlZEluID0gcGFnZU92ZXJsYXktPmZyYWN0aW9uRmFkZWRJ
bigpOworCisgICAgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihoaWdobGlnaHRDb2xvcihtX25vZGUsIGZyYWN0aW9uRmFkZWRJbiksIENvbG9yU3BhY2VTUkdC
KTsKKyAgICAgICAgR2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3SGlnaGxpZ2h0KCZncmFwaGlj
c0NvbnRleHQsIG1fbm9kZSk7CisgICAgfQorfQorCitib29sIFRhcEhpZ2hsaWdodENvbnRyb2xs
ZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50JikKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9s
bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjZTBlNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGln
aHRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5k
ZWYgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcl9oCisjZGVmaW5lIFRhcEhpZ2hsaWdodENvbnRyb2xs
ZXJfaAorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIlBhZ2VPdmVybGF5
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEZyYW1lOworY2xhc3MgSW50UmVjdDsKK2NsYXNzIE5vZGU7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBUYXBIaWdobGlnaHRDb250cm9sbGVyIDog
cHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
YXBIaWdobGlnaHRDb250cm9sbGVyKTsKKworcHVibGljOgorICAgIGV4cGxpY2l0IFRhcEhpZ2hs
aWdodENvbnRyb2xsZXIoV2ViUGFnZSopOworICAgIHZpcnR1YWwgflRhcEhpZ2hsaWdodENvbnRy
b2xsZXIoKTsKKworICAgIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lk
IGhpZGVIaWdobGlnaHQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBQYWdlT3ZlcmxheTo6Q2xpZW50
LgorICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2Uq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBh
Z2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdl
Yk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJl
Y3QpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKKyAgICBQYWdlT3Zlcmxh
eSogbV9vdmVybGF5OworICAgIFdlYkNvcmU6Ok5vZGUqIG1fbm9kZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlm
IC8vIFRhcEhpZ2hsaWdodENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM2NWQ1NzguLmNlMjA0ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5Miw2ICsxOTIs
OSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1l
ZGlhVGltZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgpLCB0aGlzLCAmV2ViUGFnZTo6
c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMp
CisjaWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXIodGhpcykK
KyNlbmRpZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcih0aGlz
KQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwocGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCkBAIC0x
NDIwLDYgKzE0MjMsMjcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRl
VG9DdXJyZW50SXRlbShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb24KIH0KIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdo
dFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIE5vZGUq
IGFjdGl2YXRpb25Ob2RlID0gMDsKKyAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9wYWdlLT5tYWlu
RnJhbWUoKTsKKworICAgIGlmIChwb2ludCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQp
LCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7
CisgICAgICAgIGFjdGl2YXRpb25Ob2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworCisgICAgICAg
IGlmICghYWN0aXZhdGlvbk5vZGUtPmlzRm9jdXNhYmxlKCkpCisgICAgICAgICAgICBhY3RpdmF0
aW9uTm9kZSA9IGFjdGl2YXRpb25Ob2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYo
KTsKKyAgICB9CisKKyAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgIHRhcEhpZ2hsaWdo
dENvbnRyb2xsZXIoKS5oaWdobGlnaHQoYWN0aXZhdGlvbk5vZGUpOworICAgIGVsc2UKKyAgICAg
ICAgdGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKK30KKyNlbmRpZgor
CiBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNo
RXZlbnQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0
MDA3MmNmLi40NzNkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJUYXBIaWdobGlnaHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzE1LDYgKzMxNiwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQoKTsKIAog
ICAgIEZpbmRDb250cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmluZENvbnRy
b2xsZXI7IH0KKyNpZiBQTEFURk9STShRVCkKKyAgICBUYXBIaWdobGlnaHRDb250cm9sbGVyJiB0
YXBIaWdobGlnaHRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90YXBIaWdobGlnaHRDb250cm9sbGVy
OyB9CisjZW5kaWYKKwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiBn
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwog
CkBAIC01MzgsNiArNTQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
ICAgIHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgdm9pZCB0b3Vj
aEV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQp
OworI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlmCiAjZW5kaWYKICAgICB2b2lkIGNv
bnRleHRNZW51SGlkZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51ID0gZmFsc2U7IH0KIApA
QCAtNzAwLDYgKzcwOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEZpbmRDb250cm9sbGVy
IG1fZmluZENvbnRyb2xsZXI7CisjaWYgUExBVEZPUk0oUVQpCisgICAgVGFwSGlnaGxpZ2h0Q29u
dHJvbGxlciBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXI7CisjZW5kaWYKICAgICBSZWZQdHI8UGFn
ZU92ZXJsYXk+IG1fcGFnZU92ZXJsYXk7CiAKICAgICBSZWZQdHI8V2ViUGFnZT4gbV91bmRlcmxh
eVBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDVhM2JiNDUuLjZlZjBiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00
MCw2ICs0MCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAgICAgVG91
Y2hFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkgLT4gKGJv
b2wgaGFuZGxlZCkKKyNpZiBQTEFURk9STShRVCkKKyAgICBIaWdobGlnaHRQb3RlbnRpYWxBY3Rp
dmF0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorI2VuZGlmCiAjZW5kaWYKIAogICAgIENv
bnRleHRNZW51SGlkZGVuKCkKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123921</attachid>
            <date>2012-01-25 04:26:03 -0800</date>
            <delta_ts>2012-01-25 06:21:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>28449</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBmYmIwNGM2NDhhNmY4Mjk0YzYwYjlhMDU4OTMyMjgxNTY5NDZjMGY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysKIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAgICAgICB8ICAxNzUgKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmggICAg
ICAgIHwgICA0NiArKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDM3ICsrKysKIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgMTAgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9U
YXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCAgfCAgMTE3ICsrKysrKysrKysrKysKIC4uLi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oICAgIHwgICA2OSArKysrKysr
KwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAg
IDI0ICsrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICAg
ICAgfCAgIDExICsrCiAuLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiB8ICAgIDMgKwogMTQgZmlsZXMgY2hhbmdlZCwgNTM2IGluc2VydGlvbnMoKyksIDAg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hs
aWdodGluZy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
cGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdo
bGlnaHRDb250cm9sbGVyLmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggMTcyMzQ1Yy4uZmQ2Y2E5YSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
biAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxlbWVudCB0YXAgZmVl
ZGJhY2sgcmVzcGVjdGluZyAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbWFudWFsIHRlc3QuCisK
KyAgICAgICAgKiBNYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTAxLTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gbW92ZSBUb29scy5neXAsIHN3aXRjaCBidWlsZC13ZWJraXQgLS1jaHJv
bWl1bSB0byBBbGwuZ3lwCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0
aW5nLmh0bWwgYi9NYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVhYmRmMgotLS0gL2Rldi9udWxsCisrKyBiL01h
bnVhbFRlc3RzL3F0L3RhcC1oaWdobGlnaHRpbmcuaHRtbApAQCAtMCwwICsxLDExIEBACis8aDE+
Cis8aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjEwcHg7IHRvcDoxMHB4Oycg
dHlwZT0ndGV4dCc+Cis8aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjBweDsg
dG9wOjMwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpza2V3KDMwZGVnKSByb3RhdGUoLTQwZGVnKSBz
Y2FsZSgxLjIpOycgdHlwZT0ndGV4dCc+Cis8aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjEwMHB4OyB0b3A6MTAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTIwZGVn
KSBzY2FsZSgxLjUpOycgdHlwZT0nYnV0dG9uJyB2YWx1ZT0naGVzdCMxJz4KKzxkaXYgc3R5bGU9
J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6MjAwcHg7IC13ZWJraXQtdHJhbnNm
b3JtOnJvdGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0IzI8L2E+PC9kaXY+Cis8ZGl2IHN0
eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDozMDBweDsgdG9wOjEwMHB4OyAtd2Via2l0LXRy
YW5zZm9ybTpyb3RhdGUoNzBkZWcpOyc+PGRpdiBzdHlsZT0nIC13ZWJraXQtdHJhbnNmb3JtOnJv
dGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0IzM8L2E+PC9kaXY+PC9kaXY+Cis8ZGl2IHN0
eWxlPSctd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNzBkZWcpOyB3aWR0aDoyMDBweCc+PGRpdiBz
dHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NDAwcHg7IHRvcDotMTAwcHg7IC13ZWJraXQt
dHJhbnNmb3JtOnJvdGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0IzQ8L2E+PC9kaXY+PC9k
aXY+Cis8ZGl2PjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6
NDAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMGRlZyk7Jz48YSBocmVmPScjJz5oZXN0
IzRhPC9hPjwvZGl2PjwvZGl2PgorPGEgaHJlZj0nIycgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRl
O2xlZnQ6NTAwcHgnPmhlc3QjNTwvYT4KKzxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xl
ZnQ6NjQwcHgnPjxhIGhyZWY9JyMnPmhlc3QjNjwvYT4KKzwvaDE+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4
MWQ5NC4uMmQ4ZjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI0ICBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbUXRdIEltcGxlbWVudCB0YXAgZmVlZGJhY2sgcmVzcGVjdGluZyAtd2Via2l0LXRhcC1oaWdo
bGlnaHQtY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBhIHJvdW5kZWQgcmVj
dCwgcmVzcGVjdGluZworICAgICAgICB0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxpZ2h0
LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKKyAgICAgICAgdG8gdGhlIGVsZW1lbnQu
CisKKyAgICAgICAgVGVzdGVkIHdpdGggbWFudWFsIHRlc3QuCisKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHZXN0dXJlVGFwSGlnaGxpZ2h0ZXI6OmRyYXdIaWdobGlnaHQpOgor
ICAgICAgICAqIHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmg6IEFkZGVkLgorCiAyMDEyLTAx
LTE5ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIENhY2hl
IFJlbmRlclN0eWxlIHBvaW50ZXIgYXMgYSBtZXRob2QgdG8gYXZvaWQgcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbiBmb3IgcmVnaW9uIHN0eWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDQ1N2RiMGMuLjQ1ZDk4
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtOTg1LDYgKzk4NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBh
Z2UvRnJhbWVWaWV3LmNwcCBcCiAgICAgcGFnZS9HZW9sb2NhdGlvbi5jcHAgXAogICAgIHBhZ2Uv
R2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBcCisgICAgcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0
ZXIuY3BwIFwKICAgICBwYWdlL0dyb3VwU2V0dGluZ3MuY3BwIFwKICAgICBwYWdlL0hpc3Rvcnku
Y3BwIFwKICAgICBwYWdlL0xvY2F0aW9uLmNwcCBcCkBAIC0yMDQ0LDYgKzIwNDUsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBwYWdlL0ZyYW1lVmlldy5oIFwKICAgICBwYWdlL0dlb2xvY2F0aW9uLmgg
XAogICAgIHBhZ2UvR2VvcG9zaXRpb24uaCBcCisgICAgcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0
ZXIuaFwKICAgICBwYWdlL0dyb3VwU2V0dGluZ3MuaCBcCiAgICAgcGFnZS9IaXN0b3J5LmggXAog
ICAgIHBhZ2UvTG9jYXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBI
aWdobGlnaHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVjYzY5
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hs
aWdodGVyLmNwcApAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaCIKKworI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNp
bmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckJveE1v
ZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCisjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgeworCitpbmxpbmUgTGF5b3V0U2l6ZSBvd25lckZyYW1lVG9NYWluRnJh
bWVPZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIEFTU0VSVChvLT5ub2RlKCkp
OworICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBvLT5mcmFtZSgpOworICAgIGlmICghY29u
dGFpbmluZ0ZyYW1lKQorICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSgpOworCisgICAgRnJhbWUq
IG1haW5GcmFtZSA9IGNvbnRhaW5pbmdGcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKTsKKworICAg
IExheW91dFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPnJvb3RWaWV3
VG9Db250ZW50cyhjb250YWluaW5nRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KExh
eW91dFBvaW50KCkpKTsKKyAgICByZXR1cm4gdG9MYXlvdXRTaXplKG1haW5GcmFtZVBvaW50KTsK
K30KKworaW5saW5lIExheW91dFNpemUgc2Nyb2xsT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCog
bykKK3sKKyAgICBBU1NFUlQoby0+bm9kZSgpKTsKKyAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1l
ID0gby0+ZnJhbWUoKTsKKyAgICBpZiAoIWNvbnRhaW5pbmdGcmFtZSkKKyAgICAgICAgcmV0dXJu
IExheW91dFNpemUoKTsKKworICAgIEZyYW1lKiBtYWluRnJhbWUgPSBjb250YWluaW5nRnJhbWUt
PnBhZ2UoKS0+bWFpbkZyYW1lKCk7CisKKyAgICAvLyBEb24ndCB0cmFuc2xhdGUgdGhlIGNvbnRl
eHQgaWYgdGhlIGZyYW1lIGlzIHJlbmRlcmVkIGluIHBhZ2UgY29vcmRpbmF0ZXMuCisgICAgRnJh
bWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7CisgICAgaWYgKHZpZXctPmRlbGVnYXRl
c1Njcm9sbGluZygpKQorICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSgpOworCisgICAgRmxvYXRS
ZWN0IHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAgcmV0dXJu
IExheW91dFNpemUoLXZpc2libGVSZWN0LngoKSwgLXZpc2libGVSZWN0LnkoKSk7Cit9CisKK0Fm
ZmluZVRyYW5zZm9ybSBsb2NhbFRvQWJzb2x1dGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyT2JqZWN0
KiBvKQoreworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgTGF5b3V0UG9pbnQg
cmVmZXJlbmNlUG9pbnQ7CisKKyAgICB3aGlsZSAobykgeworICAgICAgICBSZW5kZXJPYmplY3Qq
IG5leHRDb250YWluZXIgPSBvLT5jb250YWluZXIoKTsKKyAgICAgICAgaWYgKCFuZXh0Q29udGFp
bmVyKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJP
ZmZzZXQgPSBvLT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBv
aW50KTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKKyAgICAgICAgby0+Z2V0VHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCBjb250YWluZXJPZmZzZXQsIHQpOwor
CisgICAgICAgIHRyYW5zZm9ybSA9IHQudG9BZmZpbmVUcmFuc2Zvcm0oKSAqIHRyYW5zZm9ybTsK
KyAgICAgICAgcmVmZXJlbmNlUG9pbnQubW92ZShjb250YWluZXJPZmZzZXQpOworICAgICAgICBv
ID0gbmV4dENvbnRhaW5lcjsKKyAgICB9CisKKyAgICByZXR1cm4gdHJhbnNmb3JtOworfQorCitQ
YXRoIHBhdGhGb3JSZW5kZXJCb3goUmVuZGVyQm94KiBvKQoreworICAgIEFTU0VSVChvKTsKKwor
ICAgIExheW91dFJlY3QgY29udGVudEJveDsKKyAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7Cisg
ICAgTGF5b3V0UmVjdCBib3JkZXJCb3g7CisKKyAgICBjb250ZW50Qm94ID0gby0+Y29udGVudEJv
eFJlY3QoKTsKKyAgICBwYWRkaW5nQm94ID0gTGF5b3V0UmVjdCgKKyAgICAgICAgICAgIGNvbnRl
bnRCb3gueCgpIC0gby0+cGFkZGluZ0xlZnQoKSwKKyAgICAgICAgICAgIGNvbnRlbnRCb3gueSgp
IC0gby0+cGFkZGluZ1RvcCgpLAorICAgICAgICAgICAgY29udGVudEJveC53aWR0aCgpICsgby0+
cGFkZGluZ0xlZnQoKSArIG8tPnBhZGRpbmdSaWdodCgpLAorICAgICAgICAgICAgY29udGVudEJv
eC5oZWlnaHQoKSArIG8tPnBhZGRpbmdUb3AoKSArIG8tPnBhZGRpbmdCb3R0b20oKSk7CisgICAg
Ym9yZGVyQm94ID0gTGF5b3V0UmVjdCgKKyAgICAgICAgICAgIHBhZGRpbmdCb3gueCgpIC0gby0+
Ym9yZGVyTGVmdCgpLAorICAgICAgICAgICAgcGFkZGluZ0JveC55KCkgLSBvLT5ib3JkZXJUb3Ao
KSwKKyAgICAgICAgICAgIHBhZGRpbmdCb3gud2lkdGgoKSArIG8tPmJvcmRlckxlZnQoKSArIG8t
PmJvcmRlclJpZ2h0KCksCisgICAgICAgICAgICBwYWRkaW5nQm94LmhlaWdodCgpICsgby0+Ym9y
ZGVyVG9wKCkgKyBvLT5ib3JkZXJCb3R0b20oKSk7CisKKyAgICBGbG9hdFJlY3QgcmVjdChib3Jk
ZXJCb3gpOworICAgIHJlY3QuaW5mbGF0ZSg1KTsKKworICAgIHJlY3QubW92ZShvd25lckZyYW1l
VG9NYWluRnJhbWVPZmZzZXQobykpOworCisgICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkUm91
bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKDEwLCAxMCkpOworCisgICAgcmV0dXJuIHBhdGg7Cit9
CisKK1BhdGggcGF0aEZvclJlbmRlcklubGluZShSZW5kZXJJbmxpbmUqIG8pCit7CisgICAgLy8g
RklYTUU6IEFkYXB0IHRoaXMgdG8gbm90IGp1c3QgdXNlIHRoZSBib3VuZGluZyBib3guCisgICAg
TGF5b3V0UmVjdCBib3JkZXJCb3ggPSBvLT5saW5lc0JvdW5kaW5nQm94KCk7CisKKyAgICBGbG9h
dFJlY3QgcmVjdChib3JkZXJCb3gpOworICAgIHJlY3QuaW5mbGF0ZSg1KTsKKworICAgIHJlY3Qu
bW92ZShvd25lckZyYW1lVG9NYWluRnJhbWVPZmZzZXQobykpOworCisgICAgUGF0aCBwYXRoOwor
ICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKDEwLCAxMCkpOworCisgICAg
cmV0dXJuIHBhdGg7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2Ug
R2VzdHVyZVRhcEhpZ2hsaWdodGVyIHsKKwordm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgTm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIgfHwgIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghcmVuZGVyZXItPmlzQm94KCkgJiYgIXJlbmRlcmVy
LT5pc1JlbmRlcklubGluZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRTaXplIG9m
ZnNldCA9IHNjcm9sbE9mZnNldChyZW5kZXJlcik7CisgICAgY29udGV4dC0+dHJhbnNsYXRlKG9m
ZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCkpOworICAgIGNvbnRleHQtPmNvbmNhdENUTShs
b2NhbFRvQWJzb2x1dGVUcmFuc2Zvcm0ocmVuZGVyZXIpKTsKKworICAgIGlmIChyZW5kZXJlci0+
aXNCb3goKSkKKyAgICAgICAgY29udGV4dC0+ZmlsbFBhdGgocGF0aEZvclJlbmRlckJveCh0b1Jl
bmRlckJveChyZW5kZXJlcikpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPmZpbGxQYXRo
KHBhdGhGb3JSZW5kZXJJbmxpbmUodG9SZW5kZXJJbmxpbmUocmVuZGVyZXIpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEdlc3R1cmVUYXBIaWdobGlnaHRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODA5MmYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VzdHVyZVRhcEhpZ2hsaWdodGVyX2gKKyNkZWZp
bmUgR2VzdHVyZVRhcEhpZ2hsaWdodGVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDb2xvcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIE5vZGU7CisKK25hbWVzcGFj
ZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIgeworCit2b2lkIGRyYXdIaWdobGlnaHQoR3JhcGhpY3ND
b250ZXh0KiwgTm9kZSopOworCit9IC8vIG5hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NTm9kZUhpZ2hsaWdodGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBkMzNmZGJlLi44ZDFiZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMTItMDEtMjQgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IHRhcCBmZWVkYmFjayByZXNwZWN0
aW5nIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGFwIGhpZ2hsaWdodGluZyBmb3IgUXQu
IFdoZW4gYSB0b3VjaCBwcmVzcyBpcyBpc3N1ZWQsCisgICAgICAgIHdoaWNoIGlzIG5vdCBoYW5k
bGVkIGJ5IHRoZSB3ZWIgcGFnZSwgdGhlbiB3ZSBoaWdobGlnaHQgYW55CisgICAgICAgIGFjdGl2
YXRhYmxlIG5vZGUgYmVsb3cuIEluIGFsbCBvdGVociBjYXNlcywgd2UgaGlkZSBhbnkgaGlnaGxp
Z2h0cy4KKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIGl0c2VsZiBpcyBwYWludGVkIG9uIGFu
IGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LAorICAgICAgICBvbiB0aGUgd2ViIHByb2Nlc3Mgc2lk
ZS4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OlF0V2ViUGFnZUV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6VGFwSGlnaGxp
Z2h0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6
On5UYXBIaWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0
Q29udHJvbGxlcjo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29u
dHJvbGxlcjo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6OnBhZ2VPdmVybGF5RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6VGFwSGln
aGxpZ2h0Q29udHJvbGxlcjo6d2lsbE1vdmVUb1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjptb3VzZUV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Oldl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3Rp
dmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp0YXBIaWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMi0wMS0xOCAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgQW5vdGhlciBidWlsZCBmaXggZm9y
IHIxMDUzNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCAzNTk4M2YwLi43ZDZlN2IwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
QEAgLTM0OCw2ICszNDgsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWFJbXBsLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggXAorICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmggXAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29u
dGV4dE1lbnUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggXApAQCAtNzAx
LDYgKzcwMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVy
QWRhcHRlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgXAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Bh
Z2VPdmVybGF5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkQmFja2luZ1N0b3Jl
UmVtb3RlVGlsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA1MmZmNmMwLi4xYzNmMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtOTkxLDYgKzk5MSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRv
dWNoRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CiAgICAgfSBlbHNlIHsKKyNpZiBQTEFURk9STShR
VCkKKyAgICAgICAgSW50UG9pbnQgYWN0aXZhdGlvblBvaW50OworICAgICAgICBpZiAoZXZlbnQu
dG91Y2hQb2ludHMoKS5zaXplKCkgPT0gMSkgeworICAgICAgICAgICAgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50IHBvaW50ID0gZXZlbnQudG91Y2hQb2ludHMoKS5hdCgwKTsKKyAgICAgICAgICAgIGlm
IChwb2ludC5zdGF0ZSgpID09IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkKQor
ICAgICAgICAgICAgICAgIGFjdGl2YXRpb25Qb2ludCA9IHBvaW50LnBvc2l0aW9uKCk7CisgICAg
ICAgIH0KKworICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZ2hs
aWdodFBvdGVudGlhbEFjdGl2YXRpb24oYWN0aXZhdGlvblBvaW50KSwgbV9wYWdlSUQpOworI2Vu
ZGlmCiAgICAgICAgIGlmIChtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIG1fcGFnZUNsaWVu
dC0+ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50LCBpc0V2ZW50SGFuZGxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29u
dHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE5MmQ1Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBI
aWdobGlnaHRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUYXBIaWdobGlnaHRDb250cm9sbGVy
LmgiCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJXS1BhZ2UuaCIK
KyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisKKyNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlck9iamVjdC5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitUYXBIaWdobGlnaHRDb250cm9s
bGVyOjpUYXBIaWdobGlnaHRDb250cm9sbGVyKFdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dl
YlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fb3ZlcmxheSgwKQorICAgICwgbV9ub2RlKDApCit7Cit9
CisKK1RhcEhpZ2hsaWdodENvbnRyb2xsZXI6On5UYXBIaWdobGlnaHRDb250cm9sbGVyKCkKK3sK
K30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQoTm9kZSogbm9kZSkK
K3sKKyAgICBtX25vZGUgPSBub2RlOworCisgICAgaWYgKCFtX292ZXJsYXkpIHsKKyAgICAgICAg
UmVmUHRyPFBhZ2VPdmVybGF5PiBvdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzKTsK
KyAgICAgICAgbV9vdmVybGF5ID0gb3ZlcmxheS5nZXQoKTsKKyAgICAgICAgbV93ZWJQYWdlLT5p
bnN0YWxsUGFnZU92ZXJsYXkob3ZlcmxheS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBtX292ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6OmhpZGVIaWdobGlnaHQoKQoreworICAgIGlmIChtX292ZXJsYXkpCisgICAgICAg
IG1fd2ViUGFnZS0+dW5pbnN0YWxsUGFnZU92ZXJsYXkobV9vdmVybGF5LCAvKiBmYWRlb3V0ICov
IHRydWUpOworICAgIEFTU0VSVCghbV9vdmVybGF5KTsKK30KKwordm9pZCBUYXBIaWdobGlnaHRD
b250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopCit7Cit9CisKK3Zv
aWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkq
LCBXZWJQYWdlKiB3ZWJQYWdlKQoreworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBUaGUgcGFnZSBvdmVybGF5IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIHdlYiBw
YWdlLCByZXNldCBpdC4KKyAgICBBU1NFUlQobV9vdmVybGF5KTsKKyAgICBtX292ZXJsYXkgPSAw
OworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UoUGFn
ZU92ZXJsYXkqLCBXZWJQYWdlKikKK3sKK30KKworc3RhdGljIENvbG9yIGhpZ2hsaWdodENvbG9y
KE5vZGUqIG5vZGUsIGZsb2F0IGZyYWN0aW9uRmFkZWRJbikKK3sKKyAgICBDb2xvciBjb2xvciA9
IG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPnRhcEhpZ2hsaWdodENvbG9yKCk7CisgICAgcmV0
dXJuIENvbG9yKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIGludChj
b2xvci5hbHBoYSgpICogZnJhY3Rpb25GYWRlZEluKSk7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0
Q29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAg
IGlmICghbV9ub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCBmcmFjdGlvbkZhZGVk
SW4gPSBwYWdlT3ZlcmxheS0+ZnJhY3Rpb25GYWRlZEluKCk7CisKKyAgICB7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKG1fbm9kZSwg
ZnJhY3Rpb25GYWRlZEluKSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICBHZXN0dXJlVGFwSGln
aGxpZ2h0ZXI6OmRyYXdIaWdobGlnaHQoJmdyYXBoaWNzQ29udGV4dCwgbV9ub2RlKTsKKyAgICB9
Cit9CisKK2Jvb2wgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVudChQYWdlT3Zlcmxh
eSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40YWNlMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaApAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUYXBIaWdobGlnaHRDb250cm9sbGVy
X2gKKyNkZWZpbmUgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorCisjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7CitjbGFzcyBJbnRSZWN0Owor
Y2xhc3MgTm9kZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisK
K2NsYXNzIFRhcEhpZ2hsaWdodENvbnRyb2xsZXIgOiBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGll
bnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOwor
CitwdWJsaWM6CisgICAgZXhwbGljaXQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcihXZWJQYWdlKik7
CisgICAgdmlydHVhbCB+VGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpOworCisgICAgdm9pZCBoaWdo
bGlnaHQoV2ViQ29yZTo6Tm9kZSopOworICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOworCitwcml2
YXRlOgorICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHBhZ2VP
dmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOworICAgIHZpcnR1YWwgdm9pZCBkaWRN
b3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOworICAgIHZpcnR1YWwgYm9vbCBt
b3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCk7CisKK3ByaXZhdGU6CisgICAgV2Vi
UGFnZSogbV93ZWJQYWdlOworICAgIFBhZ2VPdmVybGF5KiBtX292ZXJsYXk7CisgICAgV2ViQ29y
ZTo6Tm9kZSogbV9ub2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjZW5kaWYgLy8gVGFwSGlnaGxpZ2h0Q29udHJvbGxl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMzY1ZDU3OC4uY2UyMDRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMTkyLDYgKzE5Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0YXJ0TWVkaWFUaW1lcihXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5ydW5Mb29wKCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJl
ZCkKICAgICAsIG1fZmluZENvbnRyb2xsZXIodGhpcykKKyNpZiBQTEFURk9STShRVCkKKyAgICAs
IG1fdGFwSGlnaGxpZ2h0Q29udHJvbGxlcih0aGlzKQorI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKHRoaXMpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQp
CiAgICAgLCBtX2NhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChwYXJhbWV0ZXJzLmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKQEAgLTE0MjAsNiArMTQyMywyNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlc3RvcmVTZXNzaW9uQW5kTmF2aWdhdGVUb0N1cnJlbnRJdGVtKGNvbnN0IFNlc3Np
b25TdGF0ZSYgc2Vzc2lvbgogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBQTEFU
Rk9STShRVCkKK3ZvaWQgV2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25z
dCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgTm9kZSogYWN0aXZhdGlvbk5vZGUgPSAwOworICAg
IEZyYW1lKiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworCisgICAgaWYgKHBvaW50
ICE9IEludFBvaW50Ojp6ZXJvKCkpIHsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBt
YWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8g
ZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vZGUg
PSByZXN1bHQuaW5uZXJOb2RlKCk7CisKKyAgICAgICAgaWYgKCFhY3RpdmF0aW9uTm9kZS0+aXNG
b2N1c2FibGUoKSkKKyAgICAgICAgICAgIGFjdGl2YXRpb25Ob2RlID0gYWN0aXZhdGlvbk5vZGUt
PmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpOworICAgIH0KKworICAgIGlmIChhY3Rp
dmF0aW9uTm9kZSkKKyAgICAgICAgdGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZ2hsaWdodChh
Y3RpdmF0aW9uTm9kZSk7CisgICAgZWxzZQorICAgICAgICB0YXBIaWdobGlnaHRDb250cm9sbGVy
KCkuaGlkZUhpZ2hsaWdodCgpOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIGhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCwgUGFnZSogcGFnZSkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQwMDcyY2YuLjQ3M2Q5M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgorI2luY2x1ZGUgIlRhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQ
bHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCkBAIC0zMTUsNiArMzE2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgV2ViRXZlbnQqIGN1cnJlbnRFdmVudCgpOwogCiAgICAgRmluZENvbnRyb2xsZXImIGZpbmRD
b250cm9sbGVyKCkgeyByZXR1cm4gbV9maW5kQ29udHJvbGxlcjsgfQorI2lmIFBMQVRGT1JNKFFU
KQorICAgIFRhcEhpZ2hsaWdodENvbnRyb2xsZXImIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKSB7
IHJldHVybiBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXI7IH0KKyNlbmRpZgorCiAgICAgR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXImIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjsgfQogICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogbm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7CiAKQEAgLTUzOCw2ICs1NDMsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0
IFdlYlRvdWNoRXZlbnQmKTsKICAgICB2b2lkIHRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhjb25z
dCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAg
dm9pZCBoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CisjZW5kaWYKICNlbmRpZgogICAgIHZvaWQgY29udGV4dE1lbnVIaWRkZW4oKSB7IG1faXNT
aG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogCkBAIC03MDAsNiArNzA4LDkgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgRmluZENvbnRyb2xsZXIgbV9maW5kQ29udHJvbGxlcjsKKyNpZiBQ
TEFURk9STShRVCkKKyAgICBUYXBIaWdobGlnaHRDb250cm9sbGVyIG1fdGFwSGlnaGxpZ2h0Q29u
dHJvbGxlcjsKKyNlbmRpZgogICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gbV9wYWdlT3ZlcmxheTsK
IAogICAgIFJlZlB0cjxXZWJQYWdlPiBtX3VuZGVybGF5UGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWEz
YmI0NS4uNmVmMGI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQwLDYgKzQwLDkgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBUb3VjaEV2ZW50KFdlYktp
dDo6V2ViVG91Y2hFdmVudCBldmVudCkKICAgICBUb3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQorI2lmIFBMQVRGT1JN
KFFUKQorICAgIEhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQpCisjZW5kaWYKICNlbmRpZgogCiAgICAgQ29udGV4dE1lbnVIaWRkZW4oKQotLSAKMS43
LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123929</attachid>
            <date>2012-01-25 06:21:41 -0800</date>
            <delta_ts>2012-01-25 07:32:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>28765</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBiZWJkYjE0ZDgwYWMzOWRhM2VhY2I2OWI0MmJiZjBhY2MzMWRkM2I4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysKIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAgICAgICB8ICAxNzUgKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmggICAg
ICAgIHwgICA0NiArKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDM3ICsrKysKIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgMTAgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9U
YXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCAgfCAgMTE5ICsrKysrKysrKysrKysKIC4uLi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oICAgIHwgICA3NSArKysrKysr
KysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAgIHwg
ICAyNCArKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAg
ICAgIHwgICAxMSArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gfCAgICAzICsKIDE0IGZpbGVzIGNoYW5nZWQsIDU0NCBpbnNlcnRpb25zKCspLCAw
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1hbnVhbFRlc3RzL3F0L3RhcC1oaWdo
bGlnaHRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGln
aGxpZ2h0Q29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDE3MjM0NWMuLmZkNmNhOWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZl
ZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG1hbnVhbCB0ZXN0Lgor
CisgICAgICAgICogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4K
KwogMjAxMi0wMS0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIG1vdmUgVG9vbHMuZ3lwLCBzd2l0Y2ggYnVpbGQtd2Via2l0IC0tY2hy
b21pdW0gdG8gQWxsLmd5cApkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sIGIvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYWJkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9N
YW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGgx
PgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMHB4OyB0b3A6MTBweDsn
IHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7
IHRvcDozMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06c2tldygzMGRlZykgcm90YXRlKC00MGRlZykg
c2NhbGUoMS4yKTsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTsgbGVmdDoxMDBweDsgdG9wOjEwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0yMGRl
Zykgc2NhbGUoMS41KTsnIHR5cGU9J2J1dHRvbicgdmFsdWU9J2hlc3QjMSc+Cis8ZGl2IHN0eWxl
PSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9wOjIwMHB4OyAtd2Via2l0LXRyYW5z
Zm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMyPC9hPjwvZGl2PgorPGRpdiBz
dHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzAwcHg7IHRvcDoxMDBweDsgLXdlYmtpdC10
cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsnPjxkaXYgc3R5bGU9JyAtd2Via2l0LXRyYW5zZm9ybTpy
b3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMzPC9hPjwvZGl2PjwvZGl2PgorPGRpdiBz
dHlsZT0nLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsgd2lkdGg6MjAwcHgnPjxkaXYg
c3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6LTEwMHB4OyAtd2Via2l0
LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCM0PC9hPjwvZGl2Pjwv
ZGl2PgorPGRpdj48ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9w
OjQwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVz
dCM0YTwvYT48L2Rpdj48L2Rpdj4KKzxhIGhyZWY9JyMnIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTtsZWZ0OjUwMHB4Jz5oZXN0IzU8L2E+Cis8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTts
ZWZ0OjY0MHB4Jz48YSBocmVmPScjJz5oZXN0IzY8L2E+Cis8L2gxPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc3
ODFkOTQuLjJkOGY3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wMS0yNCAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGln
aGxpZ2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBoaWdobGlnaHRpbmcgb2YgZG9tIG5vZGVzIHdpdGggYSByb3VuZGVkIHJl
Y3QsIHJlc3BlY3RpbmcKKyAgICAgICAgdGhlIGNvbG9yIG9mIC13ZWJraXQtdGFwLWhpZ2hsaWdo
dC1jb2xvciBhbmQgYW55IHRyYW5zZm9ybSBhcHBsaWVkCisgICAgICAgIHRvIHRoZSBlbGVtZW50
LgorCisgICAgICAgIFRlc3RlZCB3aXRoIG1hbnVhbCB0ZXN0LgorCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3SGlnaGxpZ2h0KToK
KyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KKwogMjAxMi0w
MS0xOSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBDYWNo
ZSBSZW5kZXJTdHlsZSBwb2ludGVyIGFzIGEgbWV0aG9kIHRvIGF2b2lkIHBlcmZvcm1hbmNlIHJl
Z3Jlc3Npb24gZm9yIHJlZ2lvbiBzdHlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0NTdkYjBjLi40NWQ5
ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk4NSw2ICs5ODUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBw
YWdlL0ZyYW1lVmlldy5jcHAgXAogICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwIFwKICAgICBwYWdl
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdo
dGVyLmNwcCBcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmNwcCBcCiAgICAgcGFnZS9IaXN0b3J5
LmNwcCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAgXApAQCAtMjA0NCw2ICsyMDQ1LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgcGFnZS9GcmFtZVZpZXcuaCBcCiAgICAgcGFnZS9HZW9sb2NhdGlvbi5o
IFwKICAgICBwYWdlL0dlb3Bvc2l0aW9uLmggXAorICAgIHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdo
dGVyLmhcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmggXAogICAgIHBhZ2UvSGlzdG9yeS5oIFwK
ICAgICBwYWdlL0xvY2F0aW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9H
ZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFw
SGlnaGxpZ2h0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkN2E0
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgiCisKKyNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisj
aW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJCb3hN
b2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgorI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIHsKKworaW5saW5lIExheW91dFNpemUgb3duZXJGcmFtZVRvTWFpbkZy
YW1lT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICBBU1NFUlQoby0+bm9kZSgp
KTsKKyAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gby0+ZnJhbWUoKTsKKyAgICBpZiAoIWNv
bnRhaW5pbmdGcmFtZSkKKyAgICAgICAgcmV0dXJuIExheW91dFNpemUoKTsKKworICAgIEZyYW1l
KiBtYWluRnJhbWUgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CisKKyAg
ICBMYXlvdXRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5GcmFtZS0+dmlldygpLT5yb290Vmll
d1RvQ29udGVudHMoY29udGFpbmluZ0ZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhM
YXlvdXRQb2ludCgpKSk7CisgICAgcmV0dXJuIHRvTGF5b3V0U2l6ZShtYWluRnJhbWVQb2ludCk7
Cit9CisKK2lubGluZSBMYXlvdXRTaXplIHNjcm9sbE9mZnNldChjb25zdCBSZW5kZXJPYmplY3Qq
IG8pCit7CisgICAgQVNTRVJUKG8tPm5vZGUoKSk7CisgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFt
ZSA9IG8tPmZyYW1lKCk7CisgICAgaWYgKCFjb250YWluaW5nRnJhbWUpCisgICAgICAgIHJldHVy
biBMYXlvdXRTaXplKCk7CisKKyAgICBGcmFtZSogbWFpbkZyYW1lID0gY29udGFpbmluZ0ZyYW1l
LT5wYWdlKCktPm1haW5GcmFtZSgpOworCisgICAgLy8gRG9uJ3QgdHJhbnNsYXRlIHRoZSBjb250
ZXh0IGlmIHRoZSBmcmFtZSBpcyByZW5kZXJlZCBpbiBwYWdlIGNvb3JkaW5hdGVzLgorICAgIEZy
YW1lVmlldyogdmlldyA9IG1haW5GcmFtZS0+dmlldygpOworICAgIGlmICh2aWV3LT5kZWxlZ2F0
ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFNpemUoKTsKKworICAgIEZsb2F0
UmVjdCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOworICAgIHJldHVy
biBMYXlvdXRTaXplKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxlUmVjdC55KCkpOworfQorCitB
ZmZpbmVUcmFuc2Zvcm0gbG9jYWxUb0Fic29sdXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlck9iamVj
dCogbykKK3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgIExheW91dFBvaW50
IHJlZmVyZW5jZVBvaW50OworCisgICAgd2hpbGUgKG8pIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0
KiBuZXh0Q29udGFpbmVyID0gby0+Y29udGFpbmVyKCk7CisgICAgICAgIGlmICghbmV4dENvbnRh
aW5lcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIExheW91dFNpemUgY29udGFpbmVy
T2Zmc2V0ID0gby0+b2Zmc2V0RnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQ
b2ludCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CisgICAgICAgIG8tPmdldFRy
YW5zZm9ybUZyb21Db250YWluZXIobmV4dENvbnRhaW5lciwgY29udGFpbmVyT2Zmc2V0LCB0KTsK
KworICAgICAgICB0cmFuc2Zvcm0gPSB0LnRvQWZmaW5lVHJhbnNmb3JtKCkgKiB0cmFuc2Zvcm07
CisgICAgICAgIHJlZmVyZW5jZVBvaW50Lm1vdmUoY29udGFpbmVyT2Zmc2V0KTsKKyAgICAgICAg
byA9IG5leHRDb250YWluZXI7CisgICAgfQorCisgICAgcmV0dXJuIHRyYW5zZm9ybTsKK30KKwor
UGF0aCBwYXRoRm9yUmVuZGVyQm94KFJlbmRlckJveCogbykKK3sKKyAgICBBU1NFUlQobyk7CisK
KyAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7CisgICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94Owor
ICAgIExheW91dFJlY3QgYm9yZGVyQm94OworCisgICAgY29udGVudEJveCA9IG8tPmNvbnRlbnRC
b3hSZWN0KCk7CisgICAgcGFkZGluZ0JveCA9IExheW91dFJlY3QoCisgICAgICAgICAgICBjb250
ZW50Qm94LngoKSAtIG8tPnBhZGRpbmdMZWZ0KCksCisgICAgICAgICAgICBjb250ZW50Qm94Lnko
KSAtIG8tPnBhZGRpbmdUb3AoKSwKKyAgICAgICAgICAgIGNvbnRlbnRCb3gud2lkdGgoKSArIG8t
PnBhZGRpbmdMZWZ0KCkgKyBvLT5wYWRkaW5nUmlnaHQoKSwKKyAgICAgICAgICAgIGNvbnRlbnRC
b3guaGVpZ2h0KCkgKyBvLT5wYWRkaW5nVG9wKCkgKyBvLT5wYWRkaW5nQm90dG9tKCkpOworICAg
IGJvcmRlckJveCA9IExheW91dFJlY3QoCisgICAgICAgICAgICBwYWRkaW5nQm94LngoKSAtIG8t
PmJvcmRlckxlZnQoKSwKKyAgICAgICAgICAgIHBhZGRpbmdCb3gueSgpIC0gby0+Ym9yZGVyVG9w
KCksCisgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkgKyBvLT5ib3JkZXJMZWZ0KCkgKyBv
LT5ib3JkZXJSaWdodCgpLAorICAgICAgICAgICAgcGFkZGluZ0JveC5oZWlnaHQoKSArIG8tPmJv
cmRlclRvcCgpICsgby0+Ym9yZGVyQm90dG9tKCkpOworCisgICAgRmxvYXRSZWN0IHJlY3QoYm9y
ZGVyQm94KTsKKyAgICByZWN0LmluZmxhdGUoNSk7CisKKyAgICByZWN0Lm1vdmUob3duZXJGcmFt
ZVRvTWFpbkZyYW1lT2Zmc2V0KG8pKTsKKworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZSgxMCwgMTApKTsKKworICAgIHJldHVybiBwYXRoOwor
fQorCitQYXRoIHBhdGhGb3JSZW5kZXJJbmxpbmUoUmVuZGVySW5saW5lKiBvKQoreworICAgIC8v
IEZJWE1FOiBBZGFwdCB0aGlzIHRvIG5vdCBqdXN0IHVzZSB0aGUgYm91bmRpbmcgYm94LgorICAg
IExheW91dFJlY3QgYm9yZGVyQm94ID0gby0+bGluZXNCb3VuZGluZ0JveCgpOworCisgICAgRmxv
YXRSZWN0IHJlY3QoYm9yZGVyQm94KTsKKyAgICByZWN0LmluZmxhdGUoNSk7CisKKyAgICByZWN0
Lm1vdmUob3duZXJGcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KG8pKTsKKworICAgIFBhdGggcGF0aDsK
KyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZSgxMCwgMTApKTsKKworICAg
IHJldHVybiBwYXRoOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNl
IEdlc3R1cmVUYXBIaWdobGlnaHRlciB7CisKK3ZvaWQgcGF0aEFuZFRyYW5zZm9ybUZvck5vZGVI
aWdobGlnaHQoY29uc3QgTm9kZSogbm9kZSwgUGF0aCYgcGF0aCwgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0pCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVy
KCk7CisKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICghcmVuZGVyZXItPmlzQm94KCkgJiYgIXJlbmRl
cmVyLT5pc1JlbmRlcklubGluZSgpKSkgeworICAgICAgICBwYXRoLmNsZWFyKCk7CisgICAgICAg
IHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChyZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcGF0aCA9IHBhdGhGb3JSZW5kZXJCb3go
dG9SZW5kZXJCb3gocmVuZGVyZXIpKTsKKyAgICBlbHNlCisgICAgICAgIHBhdGggPSBwYXRoRm9y
UmVuZGVySW5saW5lKHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKSk7CisKKyAgICBMYXlvdXRTaXpl
IG9mZnNldCA9IHNjcm9sbE9mZnNldChyZW5kZXJlcik7CisgICAgdHJhbnNmb3JtID0gbG9jYWxU
b0Fic29sdXRlVHJhbnNmb3JtKHJlbmRlcmVyKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9m
ZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBHZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjJjYWY4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEdlc3R1cmVUYXBIaWdobGlnaHRlcl9oCisjZGVmaW5lIEdlc3R1cmVUYXBIaWdo
bGlnaHRlcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWZmaW5lVHJhbnNmb3Jt
OworY2xhc3MgUGF0aDsKK2NsYXNzIE5vZGU7CisKK25hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxp
Z2h0ZXIgeworCit2b2lkIHBhdGhBbmRUcmFuc2Zvcm1Gb3JOb2RlSGlnaGxpZ2h0KGNvbnN0IE5v
ZGUqLCBQYXRoJiwgQWZmaW5lVHJhbnNmb3JtJik7CisKK30gLy8gbmFtZXNwYWNlIEdlc3R1cmVU
YXBIaWdobGlnaHRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBET01O
b2RlSGlnaGxpZ2h0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzM2ZkYmUuLjhkMWJkZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZl
ZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0YXAgaGlnaGxp
Z2h0aW5nIGZvciBRdC4gV2hlbiBhIHRvdWNoIHByZXNzIGlzIGlzc3VlZCwKKyAgICAgICAgd2hp
Y2ggaXMgbm90IGhhbmRsZWQgYnkgdGhlIHdlYiBwYWdlLCB0aGVuIHdlIGhpZ2hsaWdodCBhbnkK
KyAgICAgICAgYWN0aXZhdGFibGUgbm9kZSBiZWxvdy4gSW4gYWxsIG90ZWhyIGNhc2VzLCB3ZSBo
aWRlIGFueSBoaWdobGlnaHRzLgorCisgICAgICAgIFRoZSBoaWdobGlnaHRpbmcgaXRzZWxmIGlz
IHBhaW50ZWQgb24gYW4gYWNjZWxlcmF0ZWQgUGFnZU92ZXJsYXksCisgICAgICAgIG9uIHRoZSB3
ZWIgcHJvY2VzcyBzaWRlLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpo
YW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQYWdlRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29u
dHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9s
bGVyOjpUYXBIaWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxp
Z2h0Q29udHJvbGxlcjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6
VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgorICAgICAgICAo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6Om1vdXNlRXZlbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdo
dFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDEyLTAxLTE4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm90aGVy
IGJ1aWxkIGZpeCBmb3IgcjEwNTM2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDM1OTgzZjAuLjdkNmU3YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQpAQCAtMzQ4LDYgKzM0OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmggXAogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb250ZXh0TWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaCBcCkBAIC03MDEsNiArNzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAgXAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVGls
ZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZmY2YzAuLjFjM2YxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05OTEsNiArOTkxLDE2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2
ZW50KQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKICAgICB9IGVsc2Ugewor
I2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBJbnRQb2ludCBhY3RpdmF0aW9uUG9pbnQ7CisgICAg
ICAgIGlmIChldmVudC50b3VjaFBvaW50cygpLnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQgcG9pbnQgPSBldmVudC50b3VjaFBvaW50cygpLmF0KDApOwor
ICAgICAgICAgICAgaWYgKHBvaW50LnN0YXRlKCkgPT0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFByZXNzZWQpCisgICAgICAgICAgICAgICAgYWN0aXZhdGlvblBvaW50ID0gcG9pbnQucG9z
aXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihhY3RpdmF0aW9uUG9pbnQpLCBt
X3BhZ2VJRCk7CisjZW5kaWYKICAgICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwogICAgICAgICAg
ICAgbV9wYWdlQ2xpZW50LT5kb25lV2l0aFRvdWNoRXZlbnQoZXZlbnQsIGlzRXZlbnRIYW5kbGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdo
bGlnaHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9U
YXBIaWdobGlnaHRDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40YTMwYzEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRhcEhpZ2hs
aWdodENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1
ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKwor
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1RhcEhp
Z2hsaWdodENvbnRyb2xsZXI6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXIoV2ViUGFnZSogd2ViUGFn
ZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9vdmVybGF5KDApCit7Cit9CisK
K1RhcEhpZ2hsaWdodENvbnRyb2xsZXI6On5UYXBIaWdobGlnaHRDb250cm9sbGVyKCkKK3sKK30K
Kwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQoTm9kZSogbm9kZSkKK3sK
KyAgICBBU1NFUlQobm9kZSk7CisKKyAgICBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXI6OnBhdGhBbmRU
cmFuc2Zvcm1Gb3JOb2RlSGlnaGxpZ2h0KG5vZGUsIG1fcGF0aCwgbV90cmFuc2Zvcm0pOworICAg
IG1fY29sb3IgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT50YXBIaWdobGlnaHRDb2xvcigp
OworCisgICAgaWYgKCFtX292ZXJsYXkpIHsKKyAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBv
dmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9vdmVybGF5ID0g
b3ZlcmxheS5nZXQoKTsKKyAgICAgICAgbV93ZWJQYWdlLT5pbnN0YWxsUGFnZU92ZXJsYXkob3Zl
cmxheS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAgICBtX292ZXJsYXktPnNldE5lZWRz
RGlzcGxheSgpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZGVIaWdobGln
aHQoKQoreworICAgIGlmIChtX292ZXJsYXkpCisgICAgICAgIG1fd2ViUGFnZS0+dW5pbnN0YWxs
UGFnZU92ZXJsYXkobV9vdmVybGF5LCAvKiBmYWRlb3V0ICovIHRydWUpOworICAgIEFTU0VSVCgh
bV9vdmVybGF5KTsKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpwYWdlT3Zlcmxh
eURlc3Ryb3llZChQYWdlT3ZlcmxheSopCit7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJv
bGxlcjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKiB3ZWJQYWdlKQor
eworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgcGFnZSBv
dmVybGF5IGlzIG1vdmluZyBhd2F5IGZyb20gdGhlIHdlYiBwYWdlLCByZXNldCBpdC4KKyAgICBB
U1NFUlQobV9vdmVybGF5KTsKKyAgICBtX292ZXJsYXkgPSAwOworfQorCit2b2lkIFRhcEhpZ2hs
aWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikK
K3sKK30KKworc3RhdGljIENvbG9yIGhpZ2hsaWdodENvbG9yKENvbG9yIGJhc2VDb2xvciwgZmxv
YXQgZnJhY3Rpb25GYWRlZEluKQoreworICAgIHJldHVybiBDb2xvcihiYXNlQ29sb3IucmVkKCks
IGJhc2VDb2xvci5ncmVlbigpLCBiYXNlQ29sb3IuYmx1ZSgpLCBpbnQoYmFzZUNvbG9yLmFscGhh
KCkgKiBmcmFjdGlvbkZhZGVkSW4pKTsKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVy
OjpkcmF3UmVjdChQYWdlT3ZlcmxheSogcGFnZU92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIGlmIChtX3BhdGguaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCBmcmFjdGlvbkZhZGVkSW4gPSBwYWdl
T3ZlcmxheS0+ZnJhY3Rpb25GYWRlZEluKCk7CisKKyAgICB7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jb25j
YXRDVE0obV90cmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihoaWdobGln
aHRDb2xvcihtX2NvbG9yLCBmcmFjdGlvbkZhZGVkSW4pLCBDb2xvclNwYWNlU1JHQik7CisgICAg
ICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKKyAgICB9Cit9CisKK2Jvb2wgVGFwSGlnaGxp
Z2h0Q29udHJvbGxlcjo6bW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZl
bnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hs
aWdodENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTQ5
ODdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisg
Ki8KKworI2lmbmRlZiBUYXBIaWdobGlnaHRDb250cm9sbGVyX2gKKyNkZWZpbmUgVGFwSGlnaGxp
Z2h0Q29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5jbHVkZSAi
UGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0FmZmluZVRyYW5zZm9ybS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7Citj
bGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2U7CisKK2NsYXNzIFRhcEhpZ2hsaWdodENvbnRyb2xsZXIgOiBwcml2YXRlIFBh
Z2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhcEhpZ2hsaWdo
dENvbnRyb2xsZXIpOworCitwdWJsaWM6CisgICAgZXhwbGljaXQgVGFwSGlnaGxpZ2h0Q29udHJv
bGxlcihXZWJQYWdlKik7CisgICAgdmlydHVhbCB+VGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpOwor
CisgICAgdm9pZCBoaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSopOworICAgIHZvaWQgaGlkZUhpZ2hs
aWdodCgpOworCitwcml2YXRlOgorICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQuCisgICAgdmly
dHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kik7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOworICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOworICAg
IHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVu
dCYpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCk7CisKK3By
aXZhdGU6CisgICAgV2ViUGFnZSogbV93ZWJQYWdlOworICAgIFBhZ2VPdmVybGF5KiBtX292ZXJs
YXk7CisKKyAgICBXZWJDb3JlOjpQYXRoIG1fcGF0aDsKKyAgICBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0gbV90cmFuc2Zvcm07CisgICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKwor
I2VuZGlmIC8vIFRhcEhpZ2hsaWdodENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM2NWQ1NzguLmNlMjA0ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5Miw2
ICsxOTIsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgogICAgICwgbV9zZXRDYW5T
dGFydE1lZGlhVGltZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgpLCB0aGlzLCAmV2Vi
UGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVy
KHRoaXMpCisjaWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXIo
dGhpcykKKyNlbmRpZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cih0aGlzKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwocGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwp
CkBAIC0xNDIwLDYgKzE0MjMsMjcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkFuZE5h
dmlnYXRlVG9DdXJyZW50SXRlbShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb24KIH0KIAogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlBhZ2U6Omhp
Z2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAg
IE5vZGUqIGFjdGl2YXRpb25Ob2RlID0gMDsKKyAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9wYWdl
LT5tYWluRnJhbWUoKTsKKworICAgIGlmIChwb2ludCAhPSBJbnRQb2ludDo6emVybygpKSB7Cisg
ICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
cG9pbnQpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8g
dHJ1ZSk7CisgICAgICAgIGFjdGl2YXRpb25Ob2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworCisg
ICAgICAgIGlmICghYWN0aXZhdGlvbk5vZGUtPmlzRm9jdXNhYmxlKCkpCisgICAgICAgICAgICBh
Y3RpdmF0aW9uTm9kZSA9IGFjdGl2YXRpb25Ob2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRP
clNlbGYoKTsKKyAgICB9CisKKyAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgIHRhcEhp
Z2hsaWdodENvbnRyb2xsZXIoKS5oaWdobGlnaHQoYWN0aXZhdGlvbk5vZGUpOworICAgIGVsc2UK
KyAgICAgICAgdGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKK30KKyNl
bmRpZgorCiBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQm
IHRvdWNoRXZlbnQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA0MDA3MmNmLi40NzNkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJUYXBIaWdo
bGlnaHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzE1LDYgKzMx
NiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQo
KTsKIAogICAgIEZpbmRDb250cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmlu
ZENvbnRyb2xsZXI7IH0KKyNpZiBQTEFURk9STShRVCkKKyAgICBUYXBIaWdobGlnaHRDb250cm9s
bGVyJiB0YXBIaWdobGlnaHRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90YXBIaWdobGlnaHRDb250
cm9sbGVyOyB9CisjZW5kaWYKKwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyJiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICAgICBOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cigpOwogCkBAIC01MzgsNiArNTQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgIHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgdm9p
ZCB0b3VjaEV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhh
bmRsZWQpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlnaGxpZ2h0UG90ZW50aWFsQWN0
aXZhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlmCiAjZW5kaWYKICAgICB2
b2lkIGNvbnRleHRNZW51SGlkZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51ID0gZmFsc2U7
IH0KIApAQCAtNzAwLDYgKzcwOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEZpbmRDb250
cm9sbGVyIG1fZmluZENvbnRyb2xsZXI7CisjaWYgUExBVEZPUk0oUVQpCisgICAgVGFwSGlnaGxp
Z2h0Q29udHJvbGxlciBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXI7CisjZW5kaWYKICAgICBSZWZQ
dHI8UGFnZU92ZXJsYXk+IG1fcGFnZU92ZXJsYXk7CiAKICAgICBSZWZQdHI8V2ViUGFnZT4gbV91
bmRlcmxheVBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDVhM2JiNDUuLjZlZjBiOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC00MCw2ICs0MCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAg
ICAgVG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkg
LT4gKGJvb2wgaGFuZGxlZCkKKyNpZiBQTEFURk9STShRVCkKKyAgICBIaWdobGlnaHRQb3RlbnRp
YWxBY3RpdmF0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorI2VuZGlmCiAjZW5kaWYKIAog
ICAgIENvbnRleHRNZW51SGlkZGVuKCkKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123936</attachid>
            <date>2012-01-25 07:32:36 -0800</date>
            <delta_ts>2012-01-25 07:57:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>30751</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBiNTcyZGQ0NzAyODQ2MjNiYWNhNDI0Njg5MjliYjMzN2FhZDMyMjIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpkcmF3
SGlnaGxpZ2h0KToKKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oOiBBZGRlZC4KClNvdXJj
ZS9XZWJLaXQyOgoKSW1wbGVtZW50IHRhcCBoaWdobGlnaHRpbmcgZm9yIFF0LiBXaGVuIGEgdG91
Y2ggcHJlc3MgaXMgaXNzdWVkLAp3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgd2ViIHBhZ2Us
IHRoZW4gd2UgaGlnaGxpZ2h0IGFueQphY3RpdmF0YWJsZSBub2RlIGJlbG93LiBJbiBhbGwgb3Rl
aHIgY2FzZXMsIHdlIGhpZGUgYW55IGhpZ2hsaWdodHMuCgpUaGUgaGlnaGxpZ2h0aW5nIGl0c2Vs
ZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVybGF5LApvbiB0aGUgd2ViIHBy
b2Nlc3Mgc2lkZS4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhp
Z2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdo
bGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToK
KFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgoo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CihXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgooV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXI6Om1vdXNlRXZlbnQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRD
b250cm9sbGVyLmg6IEFkZGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6
OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMSArKwogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sICAgICAgICAgICAgICAgfCAgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwICAgICAgfCAgMTU0ICsrKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oICAg
ICAgICB8ICAgNDYgKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMzcgKysrKysKIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgIDcgKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICAgICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3MvcXQv
UXRUYXBHZXN0dXJlUmVjb2duaXplci5jcHAgICAgICAgIHwgICAgOSArCiAuLi4vV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCB8ICAgIDYgKwogLi4uL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oICAgfCAgICAxICsKIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgIHwgIDExOCArKysr
KysrKysrKysrKysKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxl
ci5oICAgIHwgICA3MyArKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCAgICAgIHwgICAyNCArKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggICAgICAgIHwgICAxMSArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gfCAgICAzICsKIDE4IGZpbGVzIGNoYW5nZWQs
IDUzNiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1h
bnVhbFRlc3RzL3F0L3RhcC1oaWdobGlnaHRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxp
Z2h0Q29udHJvbGxlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE3MjM0NWMuLmZkNmNhOWEgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yNCAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG1hbnVhbCB0ZXN0LgorCisgICAgICAgICogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hs
aWdodGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIG1vdmUgVG9vbHMuZ3lwLCBzd2l0
Y2ggYnVpbGQtd2Via2l0IC0tY2hyb21pdW0gdG8gQWxsLmd5cApkaWZmIC0tZ2l0IGEvTWFudWFs
VGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sIGIvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hs
aWdodGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYWJkZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPGgxPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsg
bGVmdDoxMHB4OyB0b3A6MTBweDsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlv
bjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDozMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06c2tldygz
MGRlZykgcm90YXRlKC00MGRlZykgc2NhbGUoMS4yKTsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0
eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjEwMHB4OyAtd2Via2l0LXRy
YW5zZm9ybTogcm90YXRlKC0yMGRlZykgc2NhbGUoMS41KTsnIHR5cGU9J2J1dHRvbicgdmFsdWU9
J2hlc3QjMSc+Cis8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9w
OjIwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVz
dCMyPC9hPjwvZGl2PgorPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzAwcHg7
IHRvcDoxMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsnPjxkaXYgc3R5bGU9
JyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMzPC9h
PjwvZGl2PjwvZGl2PgorPGRpdiBzdHlsZT0nLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVn
KTsgd2lkdGg6MjAwcHgnPjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4
OyB0b3A6LTEwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0n
Iyc+aGVzdCM0PC9hPjwvZGl2PjwvZGl2PgorPGRpdj48ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNv
bHV0ZTsgbGVmdDo0MDBweDsgdG9wOjQwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBk
ZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCM0YTwvYT48L2Rpdj48L2Rpdj4KKzxhIGhyZWY9JyMnIHN0
eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwMHB4Jz5oZXN0IzU8L2E+Cis8ZGl2IHN0eWxl
PSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjY0MHB4Jz48YSBocmVmPScjJz5oZXN0IzY8L2E+Cis8
L2gxPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDc3ODFkOTQuLjJkOGY3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRo
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3Bl
Y3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBoaWdobGlnaHRpbmcgb2YgZG9tIG5v
ZGVzIHdpdGggYSByb3VuZGVkIHJlY3QsIHJlc3BlY3RpbmcKKyAgICAgICAgdGhlIGNvbG9yIG9m
IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciBhbmQgYW55IHRyYW5zZm9ybSBhcHBsaWVkCisg
ICAgICAgIHRvIHRoZSBlbGVtZW50LgorCisgICAgICAgIFRlc3RlZCB3aXRoIG1hbnVhbCB0ZXN0
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdo
dGVyOjpkcmF3SGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRl
ci5oOiBBZGRlZC4KKwogMjAxMi0wMS0xOSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2Jl
LmNvbT4KIAogICAgICAgICBDYWNoZSBSZW5kZXJTdHlsZSBwb2ludGVyIGFzIGEgbWV0aG9kIHRv
IGF2b2lkIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHJlZ2lvbiBzdHlsaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCA0NTdkYjBjLi40NWQ5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk4NSw2ICs5ODUsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL0ZyYW1lVmlldy5jcHAgXAogICAgIHBhZ2UvR2VvbG9j
YXRpb24uY3BwIFwKICAgICBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBh
Z2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmNw
cCBcCiAgICAgcGFnZS9IaXN0b3J5LmNwcCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAgXApAQCAt
MjA0NCw2ICsyMDQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9GcmFtZVZpZXcuaCBcCiAg
ICAgcGFnZS9HZW9sb2NhdGlvbi5oIFwKICAgICBwYWdlL0dlb3Bvc2l0aW9uLmggXAorICAgIHBh
Z2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmhcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmggXAog
ICAgIHBhZ2UvSGlzdG9yeS5oIFwKICAgICBwYWdlL0xvY2F0aW9uLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjYyOGE2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VzdHVyZVRhcEhpZ2hsaWdo
dGVyLmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworaW5saW5lIExheW91dFNp
emUgb3duZXJGcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sK
KyAgICBBU1NFUlQoby0+bm9kZSgpKTsKKyAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gby0+
ZnJhbWUoKTsKKyAgICBpZiAoIWNvbnRhaW5pbmdGcmFtZSkKKyAgICAgICAgcmV0dXJuIExheW91
dFNpemUoKTsKKworICAgIEZyYW1lKiBtYWluRnJhbWUgPSBjb250YWluaW5nRnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCk7CisKKyAgICBMYXlvdXRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5G
cmFtZS0+dmlldygpLT5yb290Vmlld1RvQ29udGVudHMoY29udGFpbmluZ0ZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290VmlldyhMYXlvdXRQb2ludCgpKSk7CisgICAgcmV0dXJuIHRvTGF5b3V0
U2l6ZShtYWluRnJhbWVQb2ludCk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSBsb2NhbFRvQWJzb2x1
dGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07CisgICAgTGF5b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CisKKyAgICB3aGls
ZSAobykgeworICAgICAgICBSZW5kZXJPYmplY3QqIG5leHRDb250YWluZXIgPSBvLT5jb250YWlu
ZXIoKTsKKyAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvLT5vZmZzZXRGcm9tQ29udGFp
bmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdDsKKyAgICAgICAgby0+Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihuZXh0Q29u
dGFpbmVyLCBjb250YWluZXJPZmZzZXQsIHQpOworCisgICAgICAgIHRyYW5zZm9ybSA9IHQudG9B
ZmZpbmVUcmFuc2Zvcm0oKSAqIHRyYW5zZm9ybTsKKyAgICAgICAgcmVmZXJlbmNlUG9pbnQubW92
ZShjb250YWluZXJPZmZzZXQpOworICAgICAgICBvID0gbmV4dENvbnRhaW5lcjsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJhbnNmb3JtOworfQorCitQYXRoIHBhdGhGb3JSZW5kZXJCb3goUmVuZGVy
Qm94KiBvKQoreworICAgIEFTU0VSVChvKTsKKworICAgIExheW91dFJlY3QgY29udGVudEJveDsK
KyAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7CisgICAgTGF5b3V0UmVjdCBib3JkZXJCb3g7CisK
KyAgICBjb250ZW50Qm94ID0gby0+Y29udGVudEJveFJlY3QoKTsKKyAgICBwYWRkaW5nQm94ID0g
TGF5b3V0UmVjdCgKKyAgICAgICAgICAgIGNvbnRlbnRCb3gueCgpIC0gby0+cGFkZGluZ0xlZnQo
KSwKKyAgICAgICAgICAgIGNvbnRlbnRCb3gueSgpIC0gby0+cGFkZGluZ1RvcCgpLAorICAgICAg
ICAgICAgY29udGVudEJveC53aWR0aCgpICsgby0+cGFkZGluZ0xlZnQoKSArIG8tPnBhZGRpbmdS
aWdodCgpLAorICAgICAgICAgICAgY29udGVudEJveC5oZWlnaHQoKSArIG8tPnBhZGRpbmdUb3Ao
KSArIG8tPnBhZGRpbmdCb3R0b20oKSk7CisgICAgYm9yZGVyQm94ID0gTGF5b3V0UmVjdCgKKyAg
ICAgICAgICAgIHBhZGRpbmdCb3gueCgpIC0gby0+Ym9yZGVyTGVmdCgpLAorICAgICAgICAgICAg
cGFkZGluZ0JveC55KCkgLSBvLT5ib3JkZXJUb3AoKSwKKyAgICAgICAgICAgIHBhZGRpbmdCb3gu
d2lkdGgoKSArIG8tPmJvcmRlckxlZnQoKSArIG8tPmJvcmRlclJpZ2h0KCksCisgICAgICAgICAg
ICBwYWRkaW5nQm94LmhlaWdodCgpICsgby0+Ym9yZGVyVG9wKCkgKyBvLT5ib3JkZXJCb3R0b20o
KSk7CisKKyAgICBGbG9hdFJlY3QgcmVjdChib3JkZXJCb3gpOworICAgIHJlY3QuaW5mbGF0ZSg1
KTsKKworICAgIHJlY3QubW92ZShvd25lckZyYW1lVG9NYWluRnJhbWVPZmZzZXQobykpOworCisg
ICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKDEw
LCAxMCkpOworCisgICAgcmV0dXJuIHBhdGg7Cit9CisKK1BhdGggcGF0aEZvclJlbmRlcklubGlu
ZShSZW5kZXJJbmxpbmUqIG8pCit7CisgICAgLy8gRklYTUU6IEFkYXB0IHRoaXMgdG8gbm90IGp1
c3QgdXNlIHRoZSBib3VuZGluZyBib3guCisgICAgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSBvLT5s
aW5lc0JvdW5kaW5nQm94KCk7CisKKyAgICBGbG9hdFJlY3QgcmVjdChib3JkZXJCb3gpOworICAg
IHJlY3QuaW5mbGF0ZSg1KTsKKworICAgIHJlY3QubW92ZShvd25lckZyYW1lVG9NYWluRnJhbWVP
ZmZzZXQobykpOworCisgICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVj
dCwgRmxvYXRTaXplKDEwLCAxMCkpOworCisgICAgcmV0dXJuIHBhdGg7Cit9CisKK30gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgR2VzdHVyZVRhcEhpZ2hsaWdodGVyIHsKKwor
dm9pZCBwYXRoRm9yTm9kZUhpZ2hsaWdodChjb25zdCBOb2RlKiBub2RlLCBQYXRoJiBwYXRoKQor
eworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworCisgICAg
aWYgKCFyZW5kZXJlciB8fCAoIXJlbmRlcmVyLT5pc0JveCgpICYmICFyZW5kZXJlci0+aXNSZW5k
ZXJJbmxpbmUoKSkpIHsKKyAgICAgICAgcGF0aC5jbGVhcigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICBwYXRoID0gcGF0aEZv
clJlbmRlckJveCh0b1JlbmRlckJveChyZW5kZXJlcikpOworICAgIGVsc2UKKyAgICAgICAgcGF0
aCA9IHBhdGhGb3JSZW5kZXJJbmxpbmUodG9SZW5kZXJJbmxpbmUocmVuZGVyZXIpKTsKKworICAg
IHBhdGgudHJhbnNmb3JtKGxvY2FsVG9BYnNvbHV0ZVRyYW5zZm9ybShyZW5kZXJlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxp
Z2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEyODVlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlc3R1cmVUYXBIaWdobGlnaHRlcl9oCisj
ZGVmaW5lIEdlc3R1cmVUYXBIaWdobGlnaHRlcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgUGF0aDsKK2NsYXNzIE5vZGU7CisKK25hbWVz
cGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIgeworCit2b2lkIHBhdGhGb3JOb2RlSGlnaGxpZ2h0
KGNvbnN0IE5vZGUqLCBQYXRoJik7CisKK30gLy8gbmFtZXNwYWNlIEdlc3R1cmVUYXBIaWdobGln
aHRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBET01Ob2RlSGlnaGxp
Z2h0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzM2ZkYmUuLjhkMWJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5u
ZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJl
c3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0YXAgaGlnaGxpZ2h0aW5nIGZv
ciBRdC4gV2hlbiBhIHRvdWNoIHByZXNzIGlzIGlzc3VlZCwKKyAgICAgICAgd2hpY2ggaXMgbm90
IGhhbmRsZWQgYnkgdGhlIHdlYiBwYWdlLCB0aGVuIHdlIGhpZ2hsaWdodCBhbnkKKyAgICAgICAg
YWN0aXZhdGFibGUgbm9kZSBiZWxvdy4gSW4gYWxsIG90ZWhyIGNhc2VzLCB3ZSBoaWRlIGFueSBo
aWdobGlnaHRzLgorCisgICAgICAgIFRoZSBoaWdobGlnaHRpbmcgaXRzZWxmIGlzIHBhaW50ZWQg
b24gYW4gYWNjZWxlcmF0ZWQgUGFnZU92ZXJsYXksCisgICAgICAgIG9uIHRoZSB3ZWIgcHJvY2Vz
cyBzaWRlLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3Vj
aEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQYWdlRXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpUYXBI
aWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJv
bGxlcjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdo
bGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGln
aHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6VGFwSGlnaGxp
Z2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpU
YXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6Om1vdXNlRXZlbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlh
bEFjdGl2YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDEyLTAxLTE4
ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm90aGVyIGJ1aWxkIGZp
eCBmb3IgcjEwNTM2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDM1OTgzZjAuLjdkNmU3YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaQpAQCAtMzQ4LDYgKzM0OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlz
cGF0Y2hlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBcCisg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCkBA
IC03MDEsNiArNzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hl
ci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgXAorICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvUGFnZU92ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWRCYWNraW5n
U3RvcmVSZW1vdGVUaWxlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDUyZmY2YzAuLmUwN2U4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NzYsNiArOTc2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShRVCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBsYXlv
dXRQb2ludCkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZ2hs
aWdodFBvdGVudGlhbEFjdGl2YXRpb24obGF5b3V0UG9pbnQpLCBtX3BhZ2VJRCk7Cit9CisjZW5k
aWYKKwogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWRhZGUxZS4uOTdmM2M5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzgxLDYgKzM4MSw5IEBAIHB1Ymxp
YzoKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsKKyNpZiBQTEFURk9STShRVCkKKyAg
ICB2b2lkIGhhbmRsZVBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB2b2lkIHNjcm9sbEJ5KFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VGFwR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VGFwR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDJl
ZDc3M2MuLjQ1YTczZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFRhcEdlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRUYXBHZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTY4LDYgKzY4LDExIEBAIGJvb2wgUXRU
YXBHZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCwg
cWludDY0IGV2ZW50VGltCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV90YXBTdGF0ZSA9
IFNpbmdsZVRhcFN0YXJ0ZWQ7CiAgICAgICAgIG1fdG91Y2hCZWdpbkV2ZW50Rm9yVGFwID0gYWRv
cHRQdHIobmV3IFFUb3VjaEV2ZW50KCpldmVudCkpOworCisgICAgICAgIGlmIChtX3RhcFN0YXRl
ID09IFNpbmdsZVRhcFN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIGNvbnN0IFFUb3VjaEV2ZW50OjpU
b3VjaFBvaW50JiB0b3VjaFBvaW50ID0gZXZlbnQtPnRvdWNoUG9pbnRzKCkuZmlyc3QoKTsKKyAg
ICAgICAgICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVQb3RlbnRpYWxTaW5nbGVUYXBFdmVudCh0
b3VjaFBvaW50KTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6
VG91Y2hVcGRhdGU6CiAgICAgICAgIC8vIElmIHRoZSB0b3VjaCBwb2ludCBtb3ZlcyBmdXJ0aGVy
IHRoYW4gdGhlIHRocmVzaG9sZCwgd2UgY2FuY2VsIHRoZSB0YXAgZ2VzdHVyZS4KQEAgLTExMSw2
ICsxMTYsMTAgQEAgYm9vbCBRdFRhcEdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3Qg
UVRvdWNoRXZlbnQqIGV2ZW50LCBxaW50NjQgZXZlbnRUaW0KICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBpZiAobV90YXBTdGF0ZSA9PSBOb1RhcCkKKyAgICAgICAg
bV9ldmVudEhhbmRsZXItPmhhbmRsZVBvdGVudGlhbFNpbmdsZVRhcEV2ZW50KFFUb3VjaEV2ZW50
OjpUb3VjaFBvaW50KCkpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCmluZGV4
IGY1NTdlZTkuLjA5Zjg5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCkBAIC0yODYsNiArMjg2LDEyIEBAIGJvb2wg
UXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcm9wRXZlbnQoUURyb3BFdmVudCogZXYpCiAg
ICAgcmV0dXJuIGFjY2VwdGVkOwogfQogCit2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFu
ZGxlUG90ZW50aWFsU2luZ2xlVGFwRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQm
IHBvaW50KQoreworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2Ut
PnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVBvdGVudGlh
bEFjdGl2YXRpb24oZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKHBvaW50LnBvcygpKS50b1BvaW50KCkp
OworfQorCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlU2luZ2xlVGFwRXZlbnQo
Y29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQogewogICAgIG1fcG9zdHBvbmVU
ZXh0SW5wdXRTdGF0ZUNoYW5nZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oCmluZGV4IGZkNGFhMGMuLmViZTk1ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRI
YW5kbGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSopOwogCisgICAg
dm9pZCBoYW5kbGVQb3RlbnRpYWxTaW5nbGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6VG91
Y2hQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlU2luZ2xlVGFwRXZlbnQoY29uc3QgUVRvdWNoRXZl
bnQ6OlRvdWNoUG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZURvdWJsZVRhcEV2ZW50KGNvbnN0IFFU
b3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UYXBIaWdobGlnaHRDb250cm9sbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzBlYTg1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIu
Y3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRhcEhpZ2hsaWdodENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR2VzdHVyZVRhcEhp
Z2hsaWdodGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KKworI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1RhcEhpZ2hsaWdodENvbnRyb2xsZXI6OlRhcEhpZ2hsaWdodENv
bnRyb2xsZXIoV2ViUGFnZSogd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAg
ICwgbV9vdmVybGF5KDApCit7Cit9CisKK1RhcEhpZ2hsaWdodENvbnRyb2xsZXI6On5UYXBIaWdo
bGlnaHRDb250cm9sbGVyKCkKK3sKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjpo
aWdobGlnaHQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisKKyAgICBHZXN0dXJl
VGFwSGlnaGxpZ2h0ZXI6OnBhdGhGb3JOb2RlSGlnaGxpZ2h0KG5vZGUsIG1fcGF0aCk7CisgICAg
bV9jb2xvciA9IG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPnRhcEhpZ2hsaWdodENvbG9yKCk7
CisKKyAgICBpZiAoIW1fb3ZlcmxheSkgeworICAgICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92
ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMpOworICAgICAgICBtX292ZXJsYXkgPSBv
dmVybGF5LmdldCgpOworICAgICAgICBtX3dlYlBhZ2UtPmluc3RhbGxQYWdlT3ZlcmxheShvdmVy
bGF5LnJlbGVhc2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fb3ZlcmxheS0+c2V0TmVlZHNE
aXNwbGF5KCk7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6aGlkZUhpZ2hsaWdo
dCgpCit7CisgICAgaWYgKG1fb3ZlcmxheSkKKyAgICAgICAgbV93ZWJQYWdlLT51bmluc3RhbGxQ
YWdlT3ZlcmxheShtX292ZXJsYXksIC8qIGZhZGVvdXQgKi8gdHJ1ZSk7CisgICAgQVNTRVJUKCFt
X292ZXJsYXkpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OnBhZ2VPdmVybGF5
RGVzdHJveWVkKFBhZ2VPdmVybGF5KikKK3sKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9s
bGVyOjp3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqIHdlYlBhZ2UpCit7
CisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBwYWdlIG92
ZXJsYXkgaXMgbW92aW5nIGF3YXkgZnJvbSB0aGUgd2ViIHBhZ2UsIHJlc2V0IGl0LgorICAgIEFT
U0VSVChtX292ZXJsYXkpOworICAgIG1fb3ZlcmxheSA9IDA7Cit9CisKK3ZvaWQgVGFwSGlnaGxp
Z2h0Q29udHJvbGxlcjo6ZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKQor
eworfQorCitzdGF0aWMgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoQ29sb3IgYmFzZUNvbG9yLCBmbG9h
dCBmcmFjdGlvbkZhZGVkSW4pCit7CisgICAgcmV0dXJuIENvbG9yKGJhc2VDb2xvci5yZWQoKSwg
YmFzZUNvbG9yLmdyZWVuKCksIGJhc2VDb2xvci5ibHVlKCksIGludChiYXNlQ29sb3IuYWxwaGEo
KSAqIGZyYWN0aW9uRmFkZWRJbikpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IGZyYWN0aW9uRmFkZWRJbiA9IHBhZ2VP
dmVybGF5LT5mcmFjdGlvbkZhZGVkSW4oKTsKKworICAgIHsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihoaWdobGlnaHRDb2xvcihtX2NvbG9yLCBmcmFjdGlvbkZhZGVkSW4pLCBDb2xvclNw
YWNlU1JHQik7CisgICAgICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKKyAgICB9Cit9CisK
K2Jvb2wgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNv
bnN0IFdlYk1vdXNlRXZlbnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jYjIwODU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUYXBIaWdobGlnaHRDb250cm9sbGVyX2gKKyNk
ZWZpbmUgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorCisjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYXRoLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW50UmVjdDsKK2NsYXNzIE5v
ZGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBU
YXBIaWdobGlnaHRDb250cm9sbGVyIDogcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXBIaWdobGlnaHRDb250cm9sbGVyKTsKKworcHVibGlj
OgorICAgIGV4cGxpY2l0IFRhcEhpZ2hsaWdodENvbnRyb2xsZXIoV2ViUGFnZSopOworICAgIHZp
cnR1YWwgflRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgaGlnaGxpZ2h0KFdl
YkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKKworcHJpdmF0ZToKKyAg
ICAvLyBQYWdlT3ZlcmxheTo6Q2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURl
c3Ryb3llZChQYWdlT3ZlcmxheSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFn
ZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2Vi
UGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2UqIG1f
d2ViUGFnZTsKKyAgICBQYWdlT3ZlcmxheSogbV9vdmVybGF5OworCisgICAgV2ViQ29yZTo6UGF0
aCBtX3BhdGg7CisgICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8v
IFRhcEhpZ2hsaWdodENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM2NWQ1NzguLmNlMjA0ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5Miw2ICsxOTIsOSBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlh
VGltZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgpLCB0aGlzLCAmV2ViUGFnZTo6c2V0
Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMpCisj
aWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXIodGhpcykKKyNl
bmRpZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcih0aGlzKQog
ICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwocGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCkBAIC0xNDIw
LDYgKzE0MjMsMjcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVG9D
dXJyZW50SXRlbShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb24KIH0KIAogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBv
dGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIE5vZGUqIGFj
dGl2YXRpb25Ob2RlID0gMDsKKyAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9wYWdlLT5tYWluRnJh
bWUoKTsKKworICAgIGlmIChwb2ludCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAv
KmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7Cisg
ICAgICAgIGFjdGl2YXRpb25Ob2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworCisgICAgICAgIGlm
ICghYWN0aXZhdGlvbk5vZGUtPmlzRm9jdXNhYmxlKCkpCisgICAgICAgICAgICBhY3RpdmF0aW9u
Tm9kZSA9IGFjdGl2YXRpb25Ob2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsK
KyAgICB9CisKKyAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgIHRhcEhpZ2hsaWdodENv
bnRyb2xsZXIoKS5oaWdobGlnaHQoYWN0aXZhdGlvbk5vZGUpOworICAgIGVsc2UKKyAgICAgICAg
dGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKK30KKyNlbmRpZgorCiBz
dGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZl
bnQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0MDA3
MmNmLi40NzNkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJUYXBIaWdobGlnaHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzE1LDYgKzMxNiwxMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQoKTsKIAogICAg
IEZpbmRDb250cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmluZENvbnRyb2xs
ZXI7IH0KKyNpZiBQTEFURk9STShRVCkKKyAgICBUYXBIaWdobGlnaHRDb250cm9sbGVyJiB0YXBI
aWdobGlnaHRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90YXBIaWdobGlnaHRDb250cm9sbGVyOyB9
CisjZW5kaWYKKwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiBnZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwogCkBA
IC01MzgsNiArNTQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAg
IHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgdm9pZCB0b3VjaEV2
ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQpOwor
I2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlmCiAjZW5kaWYKICAgICB2b2lkIGNvbnRl
eHRNZW51SGlkZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51ID0gZmFsc2U7IH0KIApAQCAt
NzAwLDYgKzcwOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEZpbmRDb250cm9sbGVyIG1f
ZmluZENvbnRyb2xsZXI7CisjaWYgUExBVEZPUk0oUVQpCisgICAgVGFwSGlnaGxpZ2h0Q29udHJv
bGxlciBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXI7CisjZW5kaWYKICAgICBSZWZQdHI8UGFnZU92
ZXJsYXk+IG1fcGFnZU92ZXJsYXk7CiAKICAgICBSZWZQdHI8V2ViUGFnZT4gbV91bmRlcmxheVBh
Z2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDVhM2JiNDUuLjZlZjBiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MCw2
ICs0MCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAgICAgVG91Y2hF
dmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkgLT4gKGJvb2wg
aGFuZGxlZCkKKyNpZiBQTEFURk9STShRVCkKKyAgICBIaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0
aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorI2VuZGlmCiAjZW5kaWYKIAogICAgIENvbnRl
eHRNZW51SGlkZGVuKCkKLS0gCjEuNy41LjQKCg==
</data>
<flag name="commit-queue"
          id="125082"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123941</attachid>
            <date>2012-01-25 07:57:45 -0800</date>
            <delta_ts>2012-01-25 10:19:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Implement-tap-feedback-respecting-webkit-tap-high.patch</filename>
            <type>text/plain</type>
            <size>31198</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAwMmIwOTI2M2Y1OTgxZWVkYjllMDVjZmEyNzU0MzgwYzJkZjRhZDdlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBNb24sIDIzIEphbiAyMDEyIDE2OjA2OjAyICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcKIC13ZWJraXQt
dGFwLWhpZ2hsaWdodC1jb2xvcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2OTE0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCi46CgpBZGQgYSBtYW51YWwg
dGVzdC4KCiogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4KClNv
dXJjZS9XZWJDb3JlOgoKSW1wbGVtZW50IGhpZ2hsaWdodGluZyBvZiBkb20gbm9kZXMgd2l0aCBh
IHJvdW5kZWQgcmVjdCwgcmVzcGVjdGluZwp0aGUgY29sb3Igb2YgLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIGFuZCBhbnkgdHJhbnNmb3JtIGFwcGxpZWQKdG8gdGhlIGVsZW1lbnQuCgpUZXN0
ZWQgd2l0aCBtYW51YWwgdGVzdC4KCiogVGFyZ2V0LnByaToKKiBwYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpwYXRo
Rm9yTm9kZUhpZ2hsaWdodCk6CiogcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaDogQWRkZWQu
CgpTb3VyY2UvV2ViS2l0MjoKCkltcGxlbWVudCB0YXAgaGlnaGxpZ2h0aW5nIGZvciBRdC4gV2hl
biBhIHRvdWNoIHByZXNzIGlzIGlzc3VlZCwKd2hpY2ggaXMgbm90IGhhbmRsZWQgYnkgdGhlIHdl
YiBwYWdlLCB0aGVuIHdlIGhpZ2hsaWdodCBhbnkKYWN0aXZhdGFibGUgbm9kZSBiZWxvdy4gSW4g
YWxsIG90ZWhyIGNhc2VzLCB3ZSBoaWRlIGFueSBoaWdobGlnaHRzLgoKVGhlIGhpZ2hsaWdodGlu
ZyBpdHNlbGYgaXMgcGFpbnRlZCBvbiBhbiBhY2NlbGVyYXRlZCBQYWdlT3ZlcmxheSwKb24gdGhl
IHdlYiBwcm9jZXNzIHNpZGUuCgoqIFRhcmdldC5wcmk6CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlUG90ZW50aWFsQWN0aXZhdGlvbik6
CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFVJUHJvY2Vzcy9xdC9RdFRhcEdlc3R1cmVS
ZWNvZ25pemVyLmNwcDoKKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXpl
KToKKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKFF0V2ViUGFnZUV2
ZW50SGFuZGxlcjo6aGFuZGxlUG90ZW50aWFsU2luZ2xlVGFwRXZlbnQpOgoqIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaDoKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxp
Z2h0Q29udHJvbGxlci5jcHA6IEFkZGVkLgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVy
OjpUYXBIaWdobGlnaHRDb250cm9sbGVyKToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxl
cjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9s
bGVyOjpoaWdobGlnaHQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGln
aGxpZ2h0KToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0
cm95ZWQpOgooV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFn
ZSk6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgoo
V2ViS2l0OjpoaWdobGlnaHRDb2xvcik6CihXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6
OmRyYXdSZWN0KToKKFdlYktpdDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVudCk6
CiogV2ViUHJvY2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaDogQWRkZWQuCiog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgooV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdl
KToKKFdlYktpdDo6V2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbik6CiogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKFdlYktpdDo6V2ViUGFnZTo6dGFwSGlnaGxpZ2h0
Q29udHJvbGxlcik6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Ci0t
LQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDExICsrCiBNYW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwgICAgICAgICAgICAg
ICB8ICAgMTEgKysKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOCArKysKIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdo
bGlnaHRlci5jcHAgICAgICB8ICAxNTQgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmggICAgICAgIHwgICA0NiArKysrKysKIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiAr
KysrKysKIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAg
ICAgICB8ICAgIDcgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAg
ICAgICAgICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3MvcXQvUXRUYXBHZXN0dXJlUmVjb2duaXpl
ci5jcHAgICAgICAgIHwgICAgOSArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RXZlbnRIYW5kbGVyLmNwcCB8ICAgIDYgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUV2ZW50SGFuZGxlci5oICAgfCAgICAxICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFw
SGlnaGxpZ2h0Q29udHJvbGxlci5jcHAgIHwgIDExOCArKysrKysrKysrKysrKysKIC4uLi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oICAgIHwgICA3MyArKysrKysr
KysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAgIHwg
ICAyNCArKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAg
ICAgIHwgICAxMSArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gfCAgICAzICsKIDE4IGZpbGVzIGNoYW5nZWQsIDU0MSBpbnNlcnRpb25zKCspLCAw
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1hbnVhbFRlc3RzL3F0L3RhcC1oaWdo
bGlnaHRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGln
aGxpZ2h0Q29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDE3MjM0NWMuLmZkNmNhOWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZl
ZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG1hbnVhbCB0ZXN0Lgor
CisgICAgICAgICogTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sOiBBZGRlZC4K
KwogMjAxMi0wMS0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIG1vdmUgVG9vbHMuZ3lwLCBzd2l0Y2ggYnVpbGQtd2Via2l0IC0tY2hy
b21pdW0gdG8gQWxsLmd5cApkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdo
dGluZy5odG1sIGIvTWFudWFsVGVzdHMvcXQvdGFwLWhpZ2hsaWdodGluZy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYWJkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9N
YW51YWxUZXN0cy9xdC90YXAtaGlnaGxpZ2h0aW5nLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGgx
PgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMHB4OyB0b3A6MTBweDsn
IHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7
IHRvcDozMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06c2tldygzMGRlZykgcm90YXRlKC00MGRlZykg
c2NhbGUoMS4yKTsnIHR5cGU9J3RleHQnPgorPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTsgbGVmdDoxMDBweDsgdG9wOjEwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0yMGRl
Zykgc2NhbGUoMS41KTsnIHR5cGU9J2J1dHRvbicgdmFsdWU9J2hlc3QjMSc+Cis8ZGl2IHN0eWxl
PSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9wOjIwMHB4OyAtd2Via2l0LXRyYW5z
Zm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMyPC9hPjwvZGl2PgorPGRpdiBz
dHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzAwcHg7IHRvcDoxMDBweDsgLXdlYmtpdC10
cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsnPjxkaXYgc3R5bGU9JyAtd2Via2l0LXRyYW5zZm9ybTpy
b3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCMzPC9hPjwvZGl2PjwvZGl2PgorPGRpdiBz
dHlsZT0nLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDcwZGVnKTsgd2lkdGg6MjAwcHgnPjxkaXYg
c3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjQwMHB4OyB0b3A6LTEwMHB4OyAtd2Via2l0
LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVzdCM0PC9hPjwvZGl2Pjwv
ZGl2PgorPGRpdj48ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo0MDBweDsgdG9w
OjQwMHB4OyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTBkZWcpOyc+PGEgaHJlZj0nIyc+aGVz
dCM0YTwvYT48L2Rpdj48L2Rpdj4KKzxhIGhyZWY9JyMnIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTtsZWZ0OjUwMHB4Jz5oZXN0IzU8L2E+Cis8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTts
ZWZ0OjY0MHB4Jz48YSBocmVmPScjJz5oZXN0IzY8L2E+Cis8L2gxPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc3
ODFkOTQuLmQ2NjJkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wMS0yNSAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNrIHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGln
aGxpZ2h0LWNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBoaWdobGlnaHRpbmcgb2YgZG9tIG5vZGVzIHdpdGggYSByb3VuZGVkIHJl
Y3QsIHJlc3BlY3RpbmcKKyAgICAgICAgdGhlIGNvbG9yIG9mIC13ZWJraXQtdGFwLWhpZ2hsaWdo
dC1jb2xvciBhbmQgYW55IHRyYW5zZm9ybSBhcHBsaWVkCisgICAgICAgIHRvIHRoZSBlbGVtZW50
LgorCisgICAgICAgIFRlc3RlZCB3aXRoIG1hbnVhbCB0ZXN0LgorCisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVRhcEhpZ2hsaWdodGVyOjpwYXRoRm9yTm9kZUhpZ2hs
aWdodCk6CisgICAgICAgICogcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaDogQWRkZWQuCisK
IDIwMTItMDEtMTkgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAg
ICAgQ2FjaGUgUmVuZGVyU3R5bGUgcG9pbnRlciBhcyBhIG1ldGhvZCB0byBhdm9pZCBwZXJmb3Jt
YW5jZSByZWdyZXNzaW9uIGZvciByZWdpb24gc3R5bGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNDU3ZGIw
Yy4uNDVkOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05ODUsNiArOTg1LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcGFnZS9GcmFtZVZpZXcuY3BwIFwKICAgICBwYWdlL0dlb2xvY2F0aW9uLmNwcCBcCiAg
ICAgcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKKyAgICBwYWdlL0dlc3R1cmVUYXBI
aWdobGlnaHRlci5jcHAgXAogICAgIHBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAogICAgIHBhZ2Uv
SGlzdG9yeS5jcHAgXAogICAgIHBhZ2UvTG9jYXRpb24uY3BwIFwKQEAgLTIwNDQsNiArMjA0NSw3
IEBAIEhFQURFUlMgKz0gXAogICAgIHBhZ2UvRnJhbWVWaWV3LmggXAogICAgIHBhZ2UvR2VvbG9j
YXRpb24uaCBcCiAgICAgcGFnZS9HZW9wb3NpdGlvbi5oIFwKKyAgICBwYWdlL0dlc3R1cmVUYXBI
aWdobGlnaHRlci5oXAogICAgIHBhZ2UvR3JvdXBTZXR0aW5ncy5oIFwKICAgICBwYWdlL0hpc3Rv
cnkuaCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wM2M2NmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJl
VGFwSGlnaGxpZ2h0ZXIuY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlc3R1cmVUYXBIaWdobGlnaHRlci5oIgorCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVu
ZGVyQm94TW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBMYXlvdXRTaXplIG93bmVyRnJhbWVU
b01haW5GcmFtZU9mZnNldChjb25zdCBSZW5kZXJPYmplY3QqIG8pCit7CisgICAgQVNTRVJUKG8t
Pm5vZGUoKSk7CisgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG8tPmZyYW1lKCk7CisgICAg
aWYgKCFjb250YWluaW5nRnJhbWUpCisgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CisKKyAg
ICBGcmFtZSogbWFpbkZyYW1lID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgp
OworCisgICAgTGF5b3V0UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+
cm9vdFZpZXdUb0NvbnRlbnRzKGNvbnRhaW5pbmdGcmFtZS0+dmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoTGF5b3V0UG9pbnQoKSkpOworICAgIHJldHVybiB0b0xheW91dFNpemUobWFpbkZyYW1l
UG9pbnQpOworfQorCitBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUb0Fic29sdXRlVHJhbnNmb3JtKGNv
bnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwor
ICAgIExheW91dFBvaW50IHJlZmVyZW5jZVBvaW50OworCisgICAgd2hpbGUgKG8pIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiBuZXh0Q29udGFpbmVyID0gby0+Y29udGFpbmVyKCk7CisgICAgICAg
IGlmICghbmV4dENvbnRhaW5lcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIExheW91
dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gby0+b2Zmc2V0RnJvbUNvbnRhaW5lcihuZXh0Q29udGFp
bmVyLCByZWZlcmVuY2VQb2ludCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7Cisg
ICAgICAgIG8tPmdldFRyYW5zZm9ybUZyb21Db250YWluZXIobmV4dENvbnRhaW5lciwgY29udGFp
bmVyT2Zmc2V0LCB0KTsKKworICAgICAgICB0cmFuc2Zvcm0gPSB0LnRvQWZmaW5lVHJhbnNmb3Jt
KCkgKiB0cmFuc2Zvcm07CisgICAgICAgIHJlZmVyZW5jZVBvaW50Lm1vdmUoY29udGFpbmVyT2Zm
c2V0KTsKKyAgICAgICAgbyA9IG5leHRDb250YWluZXI7CisgICAgfQorCisgICAgcmV0dXJuIHRy
YW5zZm9ybTsKK30KKworUGF0aCBwYXRoRm9yUmVuZGVyQm94KFJlbmRlckJveCogbykKK3sKKyAg
ICBBU1NFUlQobyk7CisKKyAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7CisgICAgTGF5b3V0UmVj
dCBwYWRkaW5nQm94OworICAgIExheW91dFJlY3QgYm9yZGVyQm94OworCisgICAgY29udGVudEJv
eCA9IG8tPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgcGFkZGluZ0JveCA9IExheW91dFJlY3QoCisg
ICAgICAgICAgICBjb250ZW50Qm94LngoKSAtIG8tPnBhZGRpbmdMZWZ0KCksCisgICAgICAgICAg
ICBjb250ZW50Qm94LnkoKSAtIG8tPnBhZGRpbmdUb3AoKSwKKyAgICAgICAgICAgIGNvbnRlbnRC
b3gud2lkdGgoKSArIG8tPnBhZGRpbmdMZWZ0KCkgKyBvLT5wYWRkaW5nUmlnaHQoKSwKKyAgICAg
ICAgICAgIGNvbnRlbnRCb3guaGVpZ2h0KCkgKyBvLT5wYWRkaW5nVG9wKCkgKyBvLT5wYWRkaW5n
Qm90dG9tKCkpOworICAgIGJvcmRlckJveCA9IExheW91dFJlY3QoCisgICAgICAgICAgICBwYWRk
aW5nQm94LngoKSAtIG8tPmJvcmRlckxlZnQoKSwKKyAgICAgICAgICAgIHBhZGRpbmdCb3gueSgp
IC0gby0+Ym9yZGVyVG9wKCksCisgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkgKyBvLT5i
b3JkZXJMZWZ0KCkgKyBvLT5ib3JkZXJSaWdodCgpLAorICAgICAgICAgICAgcGFkZGluZ0JveC5o
ZWlnaHQoKSArIG8tPmJvcmRlclRvcCgpICsgby0+Ym9yZGVyQm90dG9tKCkpOworCisgICAgRmxv
YXRSZWN0IHJlY3QoYm9yZGVyQm94KTsKKyAgICByZWN0LmluZmxhdGUoNSk7CisKKyAgICByZWN0
Lm1vdmUob3duZXJGcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KG8pKTsKKworICAgIFBhdGggcGF0aDsK
KyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZSgxMCwgMTApKTsKKworICAg
IHJldHVybiBwYXRoOworfQorCitQYXRoIHBhdGhGb3JSZW5kZXJJbmxpbmUoUmVuZGVySW5saW5l
KiBvKQoreworICAgIC8vIEZJWE1FOiBBZGFwdCB0aGlzIHRvIG5vdCBqdXN0IHVzZSB0aGUgYm91
bmRpbmcgYm94LgorICAgIExheW91dFJlY3QgYm9yZGVyQm94ID0gby0+bGluZXNCb3VuZGluZ0Jv
eCgpOworCisgICAgRmxvYXRSZWN0IHJlY3QoYm9yZGVyQm94KTsKKyAgICByZWN0LmluZmxhdGUo
NSk7CisKKyAgICByZWN0Lm1vdmUob3duZXJGcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KG8pKTsKKwor
ICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZSgx
MCwgMTApKTsKKworICAgIHJldHVybiBwYXRoOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKKworbmFtZXNwYWNlIEdlc3R1cmVUYXBIaWdobGlnaHRlciB7CisKK1BhdGggcGF0aEZvck5v
ZGVIaWdobGlnaHQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKworICAgIFBhdGggcGF0aDsKKyAgICBpZiAoIXJlbmRl
cmVyIHx8ICghcmVuZGVyZXItPmlzQm94KCkgJiYgIXJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgp
KSkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCisg
ICAgICAgIHBhdGggPSBwYXRoRm9yUmVuZGVyQm94KHRvUmVuZGVyQm94KHJlbmRlcmVyKSk7Cisg
ICAgZWxzZQorICAgICAgICBwYXRoID0gcGF0aEZvclJlbmRlcklubGluZSh0b1JlbmRlcklubGlu
ZShyZW5kZXJlcikpOworCisgICAgcGF0aC50cmFuc2Zvcm0obG9jYWxUb0Fic29sdXRlVHJhbnNm
b3JtKHJlbmRlcmVyKSk7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKK30gLy8gbmFtZXNwYWNlIEdl
c3R1cmVUYXBIaWdobGlnaHRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYTQ3ZDcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgR2VzdHVyZVRhcEhpZ2hsaWdodGVyX2gKKyNkZWZpbmUgR2VzdHVyZVRhcEhp
Z2hsaWdodGVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBZmZpbmVUcmFuc2Zv
cm07CitjbGFzcyBQYXRoOworY2xhc3MgTm9kZTsKKworbmFtZXNwYWNlIEdlc3R1cmVUYXBIaWdo
bGlnaHRlciB7CisKK1BhdGggcGF0aEZvck5vZGVIaWdobGlnaHQoY29uc3QgTm9kZSopOworCit9
IC8vIG5hbWVzcGFjZSBHZXN0dXJlVGFwSGlnaGxpZ2h0ZXIKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRE9NTm9kZUhpZ2hsaWdodGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMzNm
ZGJlLi4yMWNmMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDEtMjUgIEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFtRdF0gSW1wbGVtZW50IHRhcCBmZWVkYmFjayByZXNwZWN0aW5nIC13ZWJraXQtdGFwLWhpZ2hs
aWdodC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzY5MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGFwIGhpZ2hsaWdodGluZyBmb3IgUXQuIFdoZW4gYSB0b3VjaCBwcmVzcyBp
cyBpc3N1ZWQsCisgICAgICAgIHdoaWNoIGlzIG5vdCBoYW5kbGVkIGJ5IHRoZSB3ZWIgcGFnZSwg
dGhlbiB3ZSBoaWdobGlnaHQgYW55CisgICAgICAgIGFjdGl2YXRhYmxlIG5vZGUgYmVsb3cuIElu
IGFsbCBvdGVociBjYXNlcywgd2UgaGlkZSBhbnkgaGlnaGxpZ2h0cy4KKworICAgICAgICBUaGUg
aGlnaGxpZ2h0aW5nIGl0c2VsZiBpcyBwYWludGVkIG9uIGFuIGFjY2VsZXJhdGVkIFBhZ2VPdmVy
bGF5LAorICAgICAgICBvbiB0aGUgd2ViIHByb2Nlc3Mgc2lkZS4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlUG90ZW50aWFsQWN0aXZhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRh
cEdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVj
b2duaXplcjo6cmVjb2duaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZl
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlUG90
ZW50aWFsU2luZ2xlVGFwRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VF
dmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0
Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250
cm9sbGVyOjpUYXBIaWdobGlnaHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGFwSGln
aGxpZ2h0Q29udHJvbGxlcjo6flRhcEhpZ2hsaWdodENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0
OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktp
dDo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpoaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlRh
cEhpZ2hsaWdodENvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYktpdDo6VGFwSGln
aGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dGFwSGlnaGxpZ2h0Q29udHJvbGxlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDEtMTggIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIgYnVpbGQgZml4IGZvciByMTA1
MzY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggMzU5ODNmMC4uN2Q2ZTdiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0z
NDgsNiArMzQ4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIFwKKyAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvUGFnZU92ZXJsYXkuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRN
ZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKQEAgLTcwMSw2ICs3
MDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0
ZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCisgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zl
cmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9UaWxlZEJhY2tpbmdTdG9yZVJlbW90
ZVRpbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNTJmZjZjMC4uZTA3ZThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTk3Niw2ICs5NzYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQmIGxheW91dFBvaW50KQor
eworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlnaGxpZ2h0UG90ZW50
aWFsQWN0aXZhdGlvbihsYXlvdXRQb2ludCksIG1fcGFnZUlEKTsKK30KKyNlbmRpZgorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50
JiBldmVudCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA5ZGFkZTFlLi45N2YzYzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zODEsNiArMzgxLDkgQEAgcHVibGljOgogI2VuZGlm
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoY29u
c3QgTmF0aXZlV2ViVG91Y2hFdmVudCYpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGFu
ZGxlUG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlm
CiAjZW5kaWYKIAogICAgIHZvaWQgc2Nyb2xsQnkoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRUYXBHZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRUYXBHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggMmVkNzczYy4uNDVh
NzNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VGFwR2VzdHVy
ZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRhcEdl
c3R1cmVSZWNvZ25pemVyLmNwcApAQCAtNjgsNiArNjgsMTEgQEAgYm9vbCBRdFRhcEdlc3R1cmVS
ZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50LCBxaW50NjQgZXZl
bnRUaW0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3RhcFN0YXRlID0gU2luZ2xlVGFw
U3RhcnRlZDsKICAgICAgICAgbV90b3VjaEJlZ2luRXZlbnRGb3JUYXAgPSBhZG9wdFB0cihuZXcg
UVRvdWNoRXZlbnQoKmV2ZW50KSk7CisKKyAgICAgICAgaWYgKG1fdGFwU3RhdGUgPT0gU2luZ2xl
VGFwU3RhcnRlZCkgeworICAgICAgICAgICAgY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQm
IHRvdWNoUG9pbnQgPSBldmVudC0+dG91Y2hQb2ludHMoKS5maXJzdCgpOworICAgICAgICAgICAg
bV9ldmVudEhhbmRsZXItPmhhbmRsZVBvdGVudGlhbFNpbmdsZVRhcEV2ZW50KHRvdWNoUG9pbnQp
OworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0
ZToKICAgICAgICAgLy8gSWYgdGhlIHRvdWNoIHBvaW50IG1vdmVzIGZ1cnRoZXIgdGhhbiB0aGUg
dGhyZXNob2xkLCB3ZSBjYW5jZWwgdGhlIHRhcCBnZXN0dXJlLgpAQCAtMTExLDYgKzExNiwxMCBA
QCBib29sIFF0VGFwR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVu
dCogZXZlbnQsIHFpbnQ2NCBldmVudFRpbQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKworICAgIGlmIChtX3RhcFN0YXRlID09IE5vVGFwKQorICAgICAgICBtX2V2ZW50SGFu
ZGxlci0+aGFuZGxlUG90ZW50aWFsU2luZ2xlVGFwRXZlbnQoUVRvdWNoRXZlbnQ6OlRvdWNoUG9p
bnQoKSk7CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKaW5kZXggZjU1N2VlOS4u
MDlmODk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZUV2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUV2ZW50SGFuZGxlci5jcHAKQEAgLTI4Niw2ICsyODYsMTIgQEAgYm9vbCBRdFdlYlBhZ2VF
dmVudEhhbmRsZXI6OmhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50KiBldikKICAgICByZXR1cm4g
YWNjZXB0ZWQ7CiB9CiAKK3ZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVQb3RlbnRp
YWxTaW5nbGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQpCit7
CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3Jt
RnJvbUl0ZW0oKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlUG90ZW50aWFsQWN0aXZhdGlv
bihmcm9tSXRlbVRyYW5zZm9ybS5tYXAocG9pbnQucG9zKCkpLnRvUG9pbnQoKSk7Cit9CisKIHZv
aWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXBFdmVudChjb25zdCBRVG91
Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQpCiB7CiAgICAgbV9wb3N0cG9uZVRleHRJbnB1dFN0
YXRlQ2hhbmdlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgKaW5kZXggZmQ0YWEwYy4uZWJlOTVkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaApA
QCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7CiAKKyAgICB2b2lkIGhhbmRs
ZVBvdGVudGlhbFNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7
CiAgICAgdm9pZCBoYW5kbGVTaW5nbGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQ
b2ludCYpOwogICAgIHZvaWQgaGFuZGxlRG91YmxlVGFwRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6
OlRvdWNoUG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjU0MDgxMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5jcHAKQEAgLTAs
MCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0
bWFwLmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXND
b250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KKwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6VGFwSGlnaGxpZ2h0Q29udHJvbGxlcihX
ZWJQYWdlKiB3ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX292ZXJs
YXkoMCkKK3sKK30KKworVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6flRhcEhpZ2hsaWdodENvbnRy
b2xsZXIoKQoreworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmhpZ2hsaWdodChO
b2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKworICAgIG1fcGF0aCA9IEdlc3R1cmVU
YXBIaWdobGlnaHRlcjo6cGF0aEZvck5vZGVIaWdobGlnaHQobm9kZSk7CisgICAgbV9jb2xvciA9
IG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPnRhcEhpZ2hsaWdodENvbG9yKCk7CisKKyAgICBp
ZiAoIW1fb3ZlcmxheSkgeworICAgICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQ
YWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMpOworICAgICAgICBtX292ZXJsYXkgPSBvdmVybGF5Lmdl
dCgpOworICAgICAgICBtX3dlYlBhZ2UtPmluc3RhbGxQYWdlT3ZlcmxheShvdmVybGF5LnJlbGVh
c2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fb3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7
Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCit7Cisg
ICAgaWYgKG1fb3ZlcmxheSkKKyAgICAgICAgbV93ZWJQYWdlLT51bmluc3RhbGxQYWdlT3Zlcmxh
eShtX292ZXJsYXksIC8qIGZhZGVvdXQgKi8gdHJ1ZSk7CisgICAgQVNTRVJUKCFtX292ZXJsYXkp
OworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OnBhZ2VPdmVybGF5RGVzdHJveWVk
KFBhZ2VPdmVybGF5KikKK3sKK30KKwordm9pZCBUYXBIaWdobGlnaHRDb250cm9sbGVyOjp3aWxs
TW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqIHdlYlBhZ2UpCit7CisgICAgaWYg
KHdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBwYWdlIG92ZXJsYXkgaXMg
bW92aW5nIGF3YXkgZnJvbSB0aGUgd2ViIHBhZ2UsIHJlc2V0IGl0LgorICAgIEFTU0VSVChtX292
ZXJsYXkpOworICAgIG1fb3ZlcmxheSA9IDA7Cit9CisKK3ZvaWQgVGFwSGlnaGxpZ2h0Q29udHJv
bGxlcjo6ZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKQoreworfQorCitz
dGF0aWMgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoQ29sb3IgYmFzZUNvbG9yLCBmbG9hdCBmcmFjdGlv
bkZhZGVkSW4pCit7CisgICAgcmV0dXJuIENvbG9yKGJhc2VDb2xvci5yZWQoKSwgYmFzZUNvbG9y
LmdyZWVuKCksIGJhc2VDb2xvci5ibHVlKCksIGludChiYXNlQ29sb3IuYWxwaGEoKSAqIGZyYWN0
aW9uRmFkZWRJbikpOworfQorCit2b2lkIFRhcEhpZ2hsaWdodENvbnRyb2xsZXI6OmRyYXdSZWN0
KFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZsb2F0IGZyYWN0aW9uRmFkZWRJbiA9IHBhZ2VPdmVybGF5LT5m
cmFjdGlvbkZhZGVkSW4oKTsKKworICAgIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvciho
aWdobGlnaHRDb2xvcihtX2NvbG9yLCBmcmFjdGlvbkZhZGVkSW4pLCBDb2xvclNwYWNlU1JHQik7
CisgICAgICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKKyAgICB9Cit9CisKK2Jvb2wgVGFw
SGlnaGxpZ2h0Q29udHJvbGxlcjo6bW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1v
dXNlRXZlbnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGFwSGln
aGxpZ2h0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Rh
cEhpZ2hsaWdodENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jYjIwODU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1RhcEhpZ2hsaWdodENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2lmbmRlZiBUYXBIaWdobGlnaHRDb250cm9sbGVyX2gKKyNkZWZpbmUgVGFw
SGlnaGxpZ2h0Q29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5j
bHVkZSAiUGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYXRoLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW50UmVjdDsKK2NsYXNzIE5vZGU7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBUYXBIaWdobGln
aHRDb250cm9sbGVyIDogcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShUYXBIaWdobGlnaHRDb250cm9sbGVyKTsKKworcHVibGljOgorICAgIGV4
cGxpY2l0IFRhcEhpZ2hsaWdodENvbnRyb2xsZXIoV2ViUGFnZSopOworICAgIHZpcnR1YWwgflRh
cEhpZ2hsaWdodENvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5v
ZGUqKTsKKyAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBQYWdl
T3ZlcmxheTo6Q2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQ
YWdlT3ZlcmxheSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3Zl
cmxheSosIFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdl
T3ZlcmxheSosIFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3Zl
cmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3Qo
UGFnZU92ZXJsYXkqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBkaXJ0eVJlY3QpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsK
KyAgICBQYWdlT3ZlcmxheSogbV9vdmVybGF5OworCisgICAgV2ViQ29yZTo6UGF0aCBtX3BhdGg7
CisgICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8vIFRhcEhpZ2hs
aWdodENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDM2NWQ1NzguLmNlMjA0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5Miw2ICsxOTIsOSBAQCBXZWJQYWdl
OjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRN
ZWRpYVRpbWVyRmlyZWQpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMpCisjaWYgUExBVEZP
Uk0oUVQpCisgICAgLCBtX3RhcEhpZ2hsaWdodENvbnRyb2xsZXIodGhpcykKKyNlbmRpZgogICAg
ICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcih0aGlzKQogICAgICwgbV9w
YWdlSUQocGFnZUlEKQogICAgICwgbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwocGFy
YW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCkBAIC0xNDIwLDYgKzE0MjMs
MjcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVG9DdXJyZW50SXRl
bShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb24KIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFj
dGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIE5vZGUqIGFjdGl2YXRpb25O
b2RlID0gMDsKKyAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKwor
ICAgIGlmIChwb2ludCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93U2hh
ZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgIGFj
dGl2YXRpb25Ob2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworCisgICAgICAgIGlmICghYWN0aXZh
dGlvbk5vZGUtPmlzRm9jdXNhYmxlKCkpCisgICAgICAgICAgICBhY3RpdmF0aW9uTm9kZSA9IGFj
dGl2YXRpb25Ob2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICB9CisK
KyAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIo
KS5oaWdobGlnaHQoYWN0aXZhdGlvbk5vZGUpOworICAgIGVsc2UKKyAgICAgICAgdGFwSGlnaGxp
Z2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9v
bCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIFBhZ2Uq
IHBhZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0MDA3MmNmLi40NzNk
OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJUYXBIaWdobGlnaHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzE1LDYgKzMxNiwxMCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQoKTsKIAogICAgIEZpbmRDb250
cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmluZENvbnRyb2xsZXI7IH0KKyNp
ZiBQTEFURk9STShRVCkKKyAgICBUYXBIaWdobGlnaHRDb250cm9sbGVyJiB0YXBIaWdobGlnaHRD
b250cm9sbGVyKCkgeyByZXR1cm4gbV90YXBIaWdobGlnaHRDb250cm9sbGVyOyB9CisjZW5kaWYK
KwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiBnZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI7IH0KICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwogCkBAIC01MzgsNiAr
NTQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgdG91
Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgdm9pZCB0b3VjaEV2ZW50U3luY0Zv
clRlc3RpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQpOworI2lmIFBMQVRG
T1JNKFFUKQorICAgIHZvaWQgaGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOworI2VuZGlmCiAjZW5kaWYKICAgICB2b2lkIGNvbnRleHRNZW51SGlk
ZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51ID0gZmFsc2U7IH0KIApAQCAtNzAwLDYgKzcw
OCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEZpbmRDb250cm9sbGVyIG1fZmluZENvbnRy
b2xsZXI7CisjaWYgUExBVEZPUk0oUVQpCisgICAgVGFwSGlnaGxpZ2h0Q29udHJvbGxlciBtX3Rh
cEhpZ2hsaWdodENvbnRyb2xsZXI7CisjZW5kaWYKICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG1f
cGFnZU92ZXJsYXk7CiAKICAgICBSZWZQdHI8V2ViUGFnZT4gbV91bmRlcmxheVBhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDVhM2JiNDUuLjZlZjBiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MCw2ICs0MCw5IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgVG91
Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAgICAgVG91Y2hFdmVudFN5bmNG
b3JUZXN0aW5nKFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkK
KyNpZiBQTEFURk9STShRVCkKKyAgICBIaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKFdlYkNv
cmU6OkludFBvaW50IHBvaW50KQorI2VuZGlmCiAjZW5kaWYKIAogICAgIENvbnRleHRNZW51SGlk
ZGVuKCkKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>