<?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>85588</bug_id>
          
          <creation_ts>2012-05-04 01:00:36 -0700</creation_ts>
          <short_desc>[EFL] Refactor ewk_view_context_paint code.</short_desc>
          <delta_ts>2012-06-04 01:46:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</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>0</everconfirmed>
          <reporter name="Tomasz Morawski">t.morawski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>616023</commentid>
    <comment_count>0</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-04 01:00:36 -0700</bug_when>
    <thetext>The main purpose of this change is reduce size of ewk_view.h/cpp files and make use of 
ewk_view_context_paint object by ewk_view_single and ewk_view_tiled instead of direct 
operations on cairo. The code is more objective and looks very simple now. Remove 
ewk_view_context_paint code from ewk_view h/cpp file and move it to separate new 
ewk_context_paint file. The ewk_view_context_paint has been renamed to 
ewk_context_paint and it is not binded to view on creation time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616026</commentid>
    <comment_count>1</comment_count>
      <attachid>140176</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-04 01:07:18 -0700</bug_when>
    <thetext>Created attachment 140176
ewk_view_context_paint related changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616027</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 01:10:09 -0700</bug_when>
    <thetext>Attachment 140176 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;Source/WebKit/ChangeLog&apos;, u&apos;...&quot; exit_code: 1
Source/WebKit/efl/ewk/ewk_paint_context_private.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/efl/ewk/ewk_paint_context.cpp:23:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/efl/ewk/ewk_paint_context.cpp:47:  Declaration has space between type name and * in Ewk_Paint_Context *context  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_paint_context.cpp:171:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 4 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>616034</commentid>
    <comment_count>3</comment_count>
      <attachid>140178</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-04 01:21:20 -0700</bug_when>
    <thetext>Created attachment 140178
ewk_view_context_paint related changes 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617486</commentid>
    <comment_count>4</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-05-07 03:45:29 -0700</bug_when>
    <thetext>Generally I&apos;m fine with those changes. We should be aware that this patch introduces a new private file for paint_context component.

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

&gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:30
&gt; +    Ewk_Paint_Context* context = new Ewk_Paint_Context;

What about using smart pointers here?
OwnPtr&lt;Ewk_Paint_Context&gt; context = adoptPtr(new Ewk_Paint_Context)

&gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:103
&gt; +    if (context-&gt;image &amp;&amp; context-&gt;pixels)

Braces should be added here:
if (condition) {
    // Some comment
    doIt();
}

&gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:153
&gt; +    WebCore::IntRect rect(*area);

Can you use a more descriptive variable for example, areaToPaint?

&gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:166
&gt; +    WebCore::IntRect rect(*area);

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:23
&gt; + * @brief   Describes the paint context API.

I wouldn&apos;t rather mention about API here. It&apos;s an internal file that won&apos;t be exported to an application layer. Please use different name: functions, internals etc.

&gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:41
&gt; + * @internal

In my opinion all definitions in this file should have @internal tag in first line of documentation.

&gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:67
&gt; +EAPI Ewk_Paint_Context* ewk_paint_context_new(cairo_t* cairo);

EAPI doesn&apos;t looks well in private files. We need to find better way before landing this patch.

&gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:72
&gt; + * @param image to use as paint destination

Please mention that it must not be 0.

&gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:85
&gt; + * @param pixel pointer to pixel buffer

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_private.h:180
&gt; +EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data* priv, Ewk_Paint_Context* context, const Eina_Rectangle* area);

I understand that those functions are used by DumpRenderTree. Is there any better way to use them internally and remove EAPI prefix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617528</commentid>
    <comment_count>5</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-07 05:01:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Generally I&apos;m fine with those changes. We should be aware that this patch introduces a new private file for paint_context component.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140178&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:30
&gt; &gt; +    Ewk_Paint_Context* context = new Ewk_Paint_Context;
&gt; 
&gt; What about using smart pointers here?
&gt; OwnPtr&lt;Ewk_Paint_Context&gt; context = adoptPtr(new Ewk_Paint_Context)
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:103
&gt; &gt; +    if (context-&gt;image &amp;&amp; context-&gt;pixels)
&gt; 
&gt; Braces should be added here:
&gt; if (condition) {
&gt;     // Some comment
&gt;     doIt();
&gt; }
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:153
&gt; &gt; +    WebCore::IntRect rect(*area);
&gt; 
&gt; Can you use a more descriptive variable for example, areaToPaint?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context.cpp:166
&gt; &gt; +    WebCore::IntRect rect(*area);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:23
&gt; &gt; + * @brief   Describes the paint context API.
&gt; 
&gt; I wouldn&apos;t rather mention about API here. It&apos;s an internal file that won&apos;t be exported to an application layer. Please use different name: functions, internals etc.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:41
&gt; &gt; + * @internal
&gt; 
&gt; In my opinion all definitions in this file should have @internal tag in first line of documentation.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:67
&gt; &gt; +EAPI Ewk_Paint_Context* ewk_paint_context_new(cairo_t* cairo);
&gt; 
&gt; EAPI doesn&apos;t looks well in private files. We need to find better way before landing this patch.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:72
&gt; &gt; + * @param image to use as paint destination
&gt; 
&gt; Please mention that it must not be 0.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_paint_context_private.h:85
&gt; &gt; + * @param pixel pointer to pixel buffer
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:180
&gt; &gt; +EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data* priv, Ewk_Paint_Context* context, const Eina_Rectangle* area);
&gt; 
&gt; I understand that those functions are used by DumpRenderTree. Is there any better way to use them internally and remove EAPI prefix?

Thank you for your review. I will try to remove EAPI prefix from that function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618489</commentid>
    <comment_count>6</comment_count>
      <attachid>140711</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-08 07:00:32 -0700</bug_when>
    <thetext>Created attachment 140711
ewk_view_context_paint related changes 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619197</commentid>
    <comment_count>7</comment_count>
      <attachid>140711</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-08 23:25:11 -0700</bug_when>
    <thetext>Comment on attachment 140711
ewk_view_context_paint related changes 3

Looks fantastic !! Though this patch is a little huge, I think efl port needs to land this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619204</commentid>
    <comment_count>8</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-05-08 23:54:53 -0700</bug_when>
    <thetext>LGTM from my side. CC&apos;ing backing store developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639134</commentid>
    <comment_count>9</comment_count>
      <attachid>145252</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-06-01 02:53:34 -0700</bug_when>
    <thetext>Created attachment 145252
ewk_view_context_paint related changes 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639142</commentid>
    <comment_count>10</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-06-01 03:02:01 -0700</bug_when>
    <thetext>Patch rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640375</commentid>
    <comment_count>11</comment_count>
      <attachid>145252</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-04 00:36:00 -0700</bug_when>
    <thetext>Comment on attachment 145252
ewk_view_context_paint related changes 4

Rubberstamping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640410</commentid>
    <comment_count>12</comment_count>
      <attachid>145252</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 01:45:54 -0700</bug_when>
    <thetext>Comment on attachment 145252
ewk_view_context_paint related changes 4

Clearing flags on attachment: 145252

Committed r119374: &lt;http://trac.webkit.org/changeset/119374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640411</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 01:46:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140176</attachid>
            <date>2012-05-04 01:07:18 -0700</date>
            <delta_ts>2012-05-04 01:21:20 -0700</delta_ts>
            <desc>ewk_view_context_paint related changes</desc>
            <filename>ewk_paint_context.patch</filename>
            <type>text/plain</type>
            <size>47073</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwZTA0MDk5Li4zOTY1MGVh
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDUtMDQgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gUmVmYWN0b3IgZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnRzIG5ldyBz
eW1ib2xzIHJlbGVhdGVkIHRvIGV3a19wYWludF9jb250ZXh0LgorCisgICAgICAgICogU291cmNl
L2NtYWtlL2VmbHN5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA1LTAzICBSYXBoYWVsIEt1Ym8gZGEg
Q29zdGEgIDxyYWt1Y29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIFJld3JpdGUgRmlu
ZENhaXJvLmNtYWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YmE5NjlhLi5mNzZlMzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTA1LTA0ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192aWV3X2NvbnRleHRfcGFp
bnQgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbmV3IGV3a19wYWludF9jb250ZXh0LmNwcCBmaWxlIHRvIHNvdXJjZSBsaXN0LgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMDUtMDMgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gUmV3cml0ZSBG
aW5kQ2Fpcm8uY21ha2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBjNGQyMGNjLi5kNTBi
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEwNyw2ICsxMDcsNyBAQCBMSVNUKEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2pzLmNwcAogICAgIGVmbC9ld2sv
ZXdrX21haW4uY3BwCiAgICAgZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKyAgICBlZmwvZXdrL2V3
a19wYWludF9jb250ZXh0LmNwcAogICAgIGVmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAK
ICAgICBlZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNWE2MWQwYi4uOWY5MTMwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTA0ICBUb21hc3ogTW9yYXdza2kgIDx0
Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192aWV3
X2NvbnRleHRfcGFpbnQgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIGNoYW5nZSBpcyByZWR1Y2Ugc2l6
ZSBvZiBld2tfdmlldy5oL2NwcCBmaWxlcyBhbmQgbWFrZSB1c2Ugb2YgZXdrX3ZpZXdfY29udGV4
dF9wYWludAorICAgICAgICBvYmplY3QgYnkgZXdrX3ZpZXdfc2luZ2xlIGFuZCBld2tfdmlld190
aWxlZCBpbnN0ZWFkIG9mIGRpcmVjdCBvcGVyYXRpb25zIG9uIGNhaXJvLgorICAgICAgICBUaGUg
Y29kZSBpcyBtb3JlIG9iamVjdGl2ZSBhbmQgbG9va3MgdmVyeSBzaW1wbGUgbm93LgorICAgICAg
ICBSZW1vdmUgZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlIGZyb20gZXdrX3ZpZXcgaC9jcHAg
ZmlsZSBhbmQgbW92ZSBpdCB0byBzZXBhcmF0ZSBuZXcgZXdrX2NvbnRleHRfcGFpbnQgZmlsZS4K
KyAgICAgICAgVGhlIGV3a192aWV3X2NvbnRleHRfcGFpbnQgaGFzIGJlZW4gcmVuYW1lZCB0byBl
d2tfY29udGV4dF9wYWludCBhbmQgaXQgaXMgbm90IGJpbmRlZCB0byB2aWV3IG9uIGNyZWF0aW9u
IHRpbWUuCisKKyAgICAgICAgKiBld2svZXdrX3BhaW50X2NvbnRleHQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgRnVuY3Rpb25zIHJlbmFtZWQgYW5kIG1vdmVkIGZyb20gZXdrX3ZpZXcgdG8gZXdrX3Bh
aW50X2NvbnRleHQgZmlsZS4KKyAgICAgICAgKGV3a19wYWludF9jb250ZXh0X25ldyk6CisgICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX25ldyk6IE5ldyBmdW5jdGlvbi4KKyAg
ICAgICAgKGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfZGF0YV9uZXcpOiBOZXcgZnVuY3Rp
b24uCisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF9mcmVlKToKKyAgICAgICAgKGV3a19wYWlu
dF9jb250ZXh0X3NhdmUpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZSk6Cisg
ICAgICAgIChld2tfcGFpbnRfY29udGV4dF9jbGlwKToKKyAgICAgICAgKGV3a19wYWludF9jb250
ZXh0X3NjYWxlKToKKyAgICAgICAgKGV3a19wYWludF9jb250ZXh0X3RyYW5zbGF0ZSk6CisgICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9wYWludCk6IEFkZGVkIEZyYW1lVmlldyBwYXJhbWV0ZXIu
CisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6IEFkZGVkIEZyYW1l
VmlldyBwYXJhbWV0ZXIuCisgICAgICAgICogZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgIChfRXdrX1BhaW50X0NvbnRleHQpOgorICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOiBGdW5jdGlvbnMgZXdrX3ZpZXdfcGFpbnQgYW5kIGV3a192aWV3X3BhaW50
X2NvbnRlbnRzIG1vdmVkIGZyb20gZXdrX3ZpZXcuaC4KKyAgICAgICAgKiBld2svZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmUuaDogUmVtb3ZlZCB1bnVzZWQgaW5jbHVkZS4KKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOiBNb3ZlZCBhbGwgZnVuY3Rpb24gcmVsZWF0ZWQgdG8gcGFpbnQgY29udGV4
dCBvYmplY3QgdG8gbmV3IGV3a19wYWludF9jb250ZXh0IGZpbGUuCisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50KTogQ2hhbmdlZCBmdW5j
dGlvbiBhY2NvcmRpbmcgY2hhbmdlIGluIGV3a19wYWludF9jb250ZXh0X3BhaW50IGZ1bmN0aW9u
LgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGVudHMpOiBDaGFuZ2VkIGZ1bmN0aW9uIGFj
Y29yZGluZyBjaGFuZ2UgaW4gZXdrX3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMgZnVuY3Rp
b24uCisgICAgICAgICogZXdrL2V3a192aWV3Lmg6IFJlbW92ZWQgYWxsIHBhaW50IGNvbnRleHQg
ZnVuY3Rpb25zIGFuZCBld2tfdmlld19wYWludCwgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMgZnVu
Y3Rpb24gZnJvbQorICAgICAgICBwdWJsaWMgQVBJLgorICAgICAgICAqIGV3ay9ld2tfdmlld19z
aW5nbGUuY3BwOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9j
ZXNzKToKKyAgICAgICAgUmVmYWN0b3Igb2YgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50
c19wcm9jZXNzIGZ1bmN0aW9uLgorICAgICAgICBSZW1vdmVkIGdvdG8gc3RhdGVtZW50cy4KKyAg
ICAgICAgUmVtb3ZlZCB2YXJpYWJsZXMgZGVjbGFyYXRpb24gZnJvbSBmdW5jdGlvbiBiZWdpbm5p
bmcuCisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmll
d190aWxlZF9yZW5kZXJfY2IpOiBNYWtlIHVzZSBvZiBld2tfcGFpbnRfY29udGV4dCBvYmplY3Qg
aW5zdGVhZCBvZiBkaXJlY3Rpb24gb3BlcmF0aW9uIG9uIGNhaXJvLgorICAgICAgICBMb29rcyBz
aW1wbGVyIGFuZCBtb3JlIG9iamVjdGl2ZS4KKwogMjAxMi0wNS0wMyAgRmFkeSBTYW11ZWwgIDxm
c2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmluZyBsaW5lIGluIGNvbXB1dGVW
aWV3cG9ydEF0dHJpYnV0ZXMgdGhhdCBlbmZvcmNlcyBhIG1pbmltdW0gc2NhbGUgZmFjdG9yIHRv
IG5ldmVyIGFsbG93IHpvb21pbmcgb3V0IG1vcmUgdGhhbiB2aWV3cG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTQ4ZjYyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaCIKKworI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCisKK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4
dF9uZXcoY2Fpcm9fdCogY2Fpcm8pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNhaXJvLCAwKTsKKworICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gbmV3IEV3
a19QYWludF9Db250ZXh0OworICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0ID0gYWRvcHRQdHIo
bmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dChjYWlybykpOworICAgIGNvbnRleHQtPmNhaXJv
ID0gYWRvcHRSZWYoY2Fpcm9fcmVmZXJlbmNlKGNhaXJvKSk7CisgICAgY29udGV4dC0+aW1hZ2Ug
PSAwOworICAgIGNvbnRleHQtPnBpeGVscyA9IDA7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30K
KworRXdrX1BhaW50X0NvbnRleHQqIGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KEV2
YXNfT2JqZWN0KiBpbWFnZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
aW1hZ2UsIDApOworCisgICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OworICAgIHVpbnQ4X3Qq
IHBpeGVscyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihldmFzX29iamVjdF9pbWFnZV9kYXRhX2dl
dChpbWFnZSwgdHJ1ZSkpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGltYWdlLCAm
d2lkdGgsICZoZWlnaHQpOworCisgICAgRXdrX1BhaW50X0NvbnRleHQgKmNvbnRleHQgPSBld2tf
cGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHBpeGVscywgd2lkdGgsIGhlaWdodCwg
RVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4KTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgICBj
b250ZXh0LT5waXhlbHMgPSBwaXhlbHM7CisgICAgICAgIGNvbnRleHQtPmltYWdlID0gaW1hZ2U7
CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK0V3a19QYWludF9Db250ZXh0KiBl
d2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHVpbnQ4X3QqIHBpeGVscywgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgY29sb3JTcGFjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocGl4ZWxzLCAwKTsKKworICAgIE93blB0cjxFd2tfUGFpbnRfQ29u
dGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBFd2tfUGFpbnRfQ29udGV4dCk7CisgICAgY29u
dGV4dC0+cGl4ZWxzID0gcGl4ZWxzOworICAgIGNvbnRleHQtPmltYWdlID0gMDsKKworICAgIGNh
aXJvX2Zvcm1hdF90IGZvcm1hdDsKKyAgICBpbnQgc3RyaWRlOworICAgIHN3aXRjaCAoY29sb3JT
cGFjZSkgeworICAgIGNhc2UgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4OgorICAgICAgICBzdHJp
ZGUgPSB3aWR0aCAqIDQ7CisgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRVZBU19DT0xPUlNQQUNFX1JHQjU2NV9BNVA6CisgICAg
ICAgIHN0cmlkZSA9IHdpZHRoICogMjsKKyAgICAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX1JH
QjE2XzU2NTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgRVJSKCJ1bmtu
b3duIGNvbG9yIHNwYWNlOiAlZCIsIGNvbG9yU3BhY2UpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBjb250ZXh0LT5zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEocGl4ZWxzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSkp
OworICAgIGNhaXJvX3N0YXR1c190IHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGNvbnRl
eHQtPnN1cmZhY2UuZ2V0KCkpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NF
U1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVk
eCVkOiAlcyIsIHdpZHRoLCBoZWlnaHQsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGNvbnRleHQtPmNhaXJvID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKGNvbnRleHQtPnN1cmZhY2UuZ2V0KCkpKTsKKyAgICBzdGF0dXMgPSBj
YWlyb19zdGF0dXMoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIGNhaXJv
IGZyb20gc3VyZmFjZSAlZHglZDogJXMiLCB3aWR0aCwgaGVpZ2h0LCBjYWlyb19zdGF0dXNfdG9f
c3RyaW5nKHN0YXR1cykpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250ZXh0
LT5ncmFwaGljQ29udGV4dCA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQo
Y29udGV4dC0+Y2Fpcm8uZ2V0KCkpKTsKKworICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKS5s
ZWFrUHRyKCk7Cit9CisKK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfZnJlZShFd2tfUGFpbnRfQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0
KTsKKworICAgIGlmIChjb250ZXh0LT5pbWFnZSAmJiBjb250ZXh0LT5waXhlbHMpCisgICAgICAg
IC8vIERlY3JlYXNlIHJlZmNvdW50IGluc2lkZSBpbWFnZSBvYmplY3QuCisgICAgICAgIGV2YXNf
b2JqZWN0X2ltYWdlX2RhdGFfc2V0KGNvbnRleHQtPmltYWdlLCBjb250ZXh0LT5waXhlbHMpOwor
ICAgIGRlbGV0ZSBjb250ZXh0OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NhdmUoRXdr
X1BhaW50X0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oY29udGV4dCk7CisKKyAgICBjYWlyb19zYXZlKGNvbnRleHQtPmNhaXJvLmdldCgpKTsKKyAg
ICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+c2F2ZSgpOworfQorCit2b2lkIGV3a19wYWludF9j
b250ZXh0X3Jlc3RvcmUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29u
dGV4dC0+cmVzdG9yZSgpOworICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dC0+Y2Fpcm8uZ2V0KCkp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X2NsaXAoRXdrX1BhaW50X0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFy
ZWEpOworCisgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPmNsaXAoV2ViQ29yZTo6SW50UmVj
dCgqYXJlYSkpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NjYWxlKEV3a19QYWludF9D
b250ZXh0KiBjb250ZXh0LCBmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxlWSkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKKworICAgIGNvbnRleHQtPmdyYXBoaWND
b250ZXh0LT5zY2FsZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGVYLCBzY2FsZVkpKTsKK30KKwor
dm9pZCBld2tfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
Y29udGV4dCk7CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKHgsIHkp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50KEV3a19QYWludF9Db250ZXh0KiBj
b250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBh
cmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHZpZXcpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGFyZWEpOworCisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KCphcmVhKTsKKworICAg
IGlmICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCisgICAgICAgIGNvbnRleHQtPmdyYXBoaWNDb250
ZXh0LT5jbGVhclJlY3QocmVjdCk7CisgICAgdmlldy0+cGFpbnQoY29udGV4dC0+Z3JhcGhpY0Nv
bnRleHQuZ2V0KCksIHJlY3QpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50X2Nv
bnRlbnRzKEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZp
ZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHZpZXcp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0KCphcmVhKTsKKworICAgIGlmICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCisg
ICAgICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7CisgICAgdmll
dy0+cGFpbnRDb250ZW50cyhjb250ZXh0LT5ncmFwaGljQ29udGV4dC5nZXQoKSwgcmVjdCk7Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfcGFpbnRfY29udGV4dF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTIwMDUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfcGFpbnRfY29udGV4dF9wcml2YXRlLmgKQEAgLTAsMCArMSwyMTAgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBA
ZmlsZSAgICBld2tfcGFpbnRfY29udGV4dF9wcml2YXRlLmgKKyAqIEBicmllZiAgIERlc2NyaWJl
cyB0aGUgcGFpbnQgY29udGV4dCBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcGFpbnRfY29udGV4
dF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8RXZhcy5oPgor
CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19QYWludF9Db250ZXh0LgordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19QYWludF9Db250ZXh0IEV3a19QYWludF9Db250ZXh0OworCisvKioK
KyAqIEBicmllZiBTdHJ1Y3R1cmUgdGhhdCBrZWVwcyB0aGUgcGFpbnQgY29udGV4dC4KKyAqCisg
KiBAaW50ZXJuYWwKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0
IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIg
b3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK3N0cnVjdCBfRXdrX1BhaW50X0NvbnRleHQgeworICAg
IE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNDb250ZXh0OworICAgIFJl
ZlB0cjxjYWlyb190PiBjYWlybzsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNl
OyAvKio8IHN1cmZhY2UgdXNlZCB0byBjcmVhdGUgY2Fpcm8gb2JqZWN0ICovCisgICAgRXZhc19P
YmplY3QqIGltYWdlOyAvKio8IGltYWdlIHVzZWQgdG8gY3JlYXRlIGNhaXJvIHN1cmZhY2UgKi8K
KyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHM7IC8qKjwgcGl4ZWxzIGZvcm0gaW1hZ2UgKi8KK307
CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBwYWludCBjb250ZXh0IHVzaW5nIGEgY2Fpcm8gYXMg
b3V0cHV0LgorICoKKyAqIEBwYXJhbSBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0
aW5hdGlvbiwgYSBuZXcKKyAqICAgICAgICByZWZlcmVuY2UgaXMgdGFrZW4sIHNvIGl0J3Mgc2Fm
ZSB0byBjYWxsIEBjIGNhaXJvX2Rlc3Ryb3koKQorICogICAgICAgIGFmdGVyIHRoaXMgZnVuY3Rp
b24gcmV0dXJucy4KKyAqCisgKiBAcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGluc3RhbmNlIG9m
IEBjIEV3a19QYWludF9Db250ZXh0IG9uIHN1Y2Nlc3MsCisgKiAgICAgICAgIG9yIEBjIDAgb24g
ZmFpbHVyZQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVz
dCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24g
YmFja2luZyBzdG9yZS4KKyAqLworRUFQSSBFd2tfUGFpbnRfQ29udGV4dCogZXdrX3BhaW50X2Nv
bnRleHRfbmV3KGNhaXJvX3QqIGNhaXJvKTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IHBhaW50
IGNvbnRleHQgdXNpbmcgYW4gaW1hZ2UgYXMgb3V0cHV0LgorICoKKyAqIEBwYXJhbSBpbWFnZSB0
byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24KKyAqCisgKiBAcmV0dXJuIGEgbmV3bHkgYWxsb2Nh
dGVkIGluc3RhbmNlIG9mIEBjIEV3a19QYWludF9Db250ZXh0IG9uIHN1Y2Nlc3MsCisgKiAgICAg
ICAgIG9yIEBjIDAgb24gZmFpbHVyZQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5l
cmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRl
ZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLworRXdrX1BhaW50X0NvbnRleHQqIGV3
a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KEV2YXNfT2JqZWN0KiBpbWFnZSk7CisKKy8q
KgorICogQ3JlYXRlcyBhIG5ldyBwYWludCBjb250ZXh0IHVzaW5nIGFuIGltYWdlIGFzIG91dHB1
dC4KKyAqCisgKiBAcGFyYW0gcGl4ZWwgcG9pbnRlciB0byBwaXhlbCBidWZmZXIKKyAqIEBwYXJh
bSB3aWR0aCBzaXplIG9mIHBpeGVsIGJ1ZmZlcgorICogQHBhcmFtIGhlaWdodCBzaXplIG9mIHBp
eGVsIGJ1ZmZlcgorICogQHBhcmFtIGNvbG9yU3BhY2UgRXZhc19Db2xvcnNwYWNlIG9mIHBpeGVs
IGJ1ZmZlcgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW5zdGFuY2Ugb2YgQGMg
RXdrX1BhaW50X0NvbnRleHQgb24gc3VjY2VzcywKKyAqICAgICAgICAgb3IgQGMgMCBvbiBmYWls
dXJlCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZv
ciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNr
aW5nIHN0b3JlLgorICovCitFd2tfUGFpbnRfQ29udGV4dCogZXdrX3BhaW50X2NvbnRleHRfZnJv
bV9pbWFnZV9kYXRhX25ldyh1aW50OF90KiBwaXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCwg
aW50IGNvbG9yU3BhY2UpOworCisvKioKKyAqIERlc3Ryb3lzIHRoZSBwcmV2aW91c2x5IGNyZWF0
ZWQgdGhlIHBhaW50IGNvbnRleHQuCisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNv
bnRleHQgdG8gZGVzdHJveSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICoKKyAqIEBub3RlIFRoaXMg
aXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQK
KyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLworRUFQSSB2
b2lkIGV3a19wYWludF9jb250ZXh0X2ZyZWUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQpOwor
CisvKioKKyAqIFNhdmVzIChwdXNoIHRvIHN0YWNrKSB0aGUgcGFpbnQgY29udGV4dCBzdGF0dXMu
CisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8gc2F2ZSwgbXVzdCBA
YiBub3QgYmUgQGMgMAorICoKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZSgpCisg
KgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJj
bGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0
b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NhdmUoRXdrX1BhaW50X0NvbnRleHQq
IGNvbnRleHQpOworCisvKioKKyAqIFJlc3RvcmVzIChwb3AgZnJvbSBzdGFjaykgdGhlIHBhaW50
IGNvbnRleHQgc3RhdHVzLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IHRoZSBwYWludCBjb250ZXh0
IHRvIHJlc3RvcmUsIG11c3QgQGIgbm90IGJlIEBjIDAKKyAqCisgKiBAc2VlIGV3a19wYWludF9j
b250ZXh0X3NhdmUoKQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBi
dXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVp
ciBvd24gYmFja2luZyBzdG9yZS4KKyAqLwordm9pZCBld2tfcGFpbnRfY29udGV4dF9yZXN0b3Jl
KEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0KTsKKworLyoqCisgKiBDbGlwcyB0aGUgcGFpbnQg
Y29udGV4dCBkcmF3aW5ncyB0byB0aGUgZ2l2ZW4gYXJlYS4KKyAqCisgKiBAcGFyYW0gY29udGV4
dCB0aGUgcGFpbnQgY29udGV4dCB0byBjbGlwLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFy
YW0gYXJlYSBjbGlwIGFyZWEgdG8gdXNlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQHNl
ZSBld2tfcGFpbnRfY29udGV4dF9zYXZlKCkKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfcmVz
dG9yZSgpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0
IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBi
YWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X2NsaXAoRXdrX1BhaW50
X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKTsKKworLyoqCisg
KiBTY2FsZXMgdGhlIGNvbnRlbnRzIGJ5IHRoZSBnaXZlbiBmYWN0b3JzLgorICoKKyAqIFRoaXMg
ZnVuY3Rpb24gYXBwbGllcyBhIHNjYWxpbmcgdHJhbnNmb3JtYXRpb24gdXNpbmcgQ2Fpcm8uCisg
KgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8gc2NhbGUsIG11c3QgQGIg
bm90IGJlIEBjIDAKKyAqIEBwYXJhbSBzY2FsZV94IHRoZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBY
IGRpbWVuc2lvbgorICogQHBhcmFtIHNjYWxlX3kgdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIFkg
ZGltZW5zaW9uCisgKi8KK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1BhaW50X0Nv
bnRleHQqIGNvbnRleHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpOworCisvKioKKyAq
IFBlcmZvcm1zIGEgdHJhbnNsYXRpb24gb2YgdGhlIG9yaWdpbiBjb29yZGluYXRlcy4KKyAqCisg
KiBUaGlzIGZ1bmN0aW9uIG1vdmVzIHRoZSBvcmlnaW4gY29vcmRpbmF0ZXMgYnkgQGEgeCBhbmQg
QGEgeSBwaXhlbHMuCisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8g
dHJhbnNsYXRlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFyYW0geCBhbW91bnQgb2YgcGl4
ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWCBkaW1lbnNpb24KKyAqIEBwYXJhbSB5IGFtb3VudCBv
ZiBwaXhlbHMgdG8gdHJhbnNsYXRlIGluIHRoZSBZIGRpbWVuc2lvbgorICovCit2b2lkIGV3a19w
YWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgZmxvYXQg
eCwgZmxvYXQgeSk7CisKKy8qKgorICogUGFpbnRzIHRoZSBjb250ZXh0IHVzaW5nIGdpdmVuIGFy
ZWEuCisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11
c3QgQGIgbm90IGJlIEBjIDAKKyAqIEBwYXJhbSB2aWV3IHRoZSB2aWV3IHRvIHBhaW50CisgKiBA
cGFyYW0gYXJlYSB0aGUgcGFpbnQgYXJlYSB0byB1c2UsIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2
ZSB0byBjdXJyZW50IHZpZXdwb3J0LAorICogICAgICAgIHRodXMgInNjcm9sbGVkIiwgbXVzdCBA
YiBub3QgYmUgQGMgMAorICoKKyAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJvIGZ1bmN0aW9ucyBv
biB0aGUgY2Fpcm8gY29udGV4dCB0bworICogICAgICAgdHJhbnNsYXRlLCBzY2FsZSBvciBhbnkg
bW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAqCisgKiBAc2VlIGV3a19w
YWludF9jb250ZXh0X2NsaXAoKQorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9wYWludF9jb250
ZW50cygpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0
IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBi
YWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50KEV3a19QYWlu
dF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlKiBhcmVhKTsKKworLyoqCisgKiBQYWludHMganVzdCBjb250ZW50cyB1c2luZyBj
b250ZXh0IHVzaW5nIGdpdmVuIGFyZWEuCisgKgorICogVW5saWtlIGV3a19wYWludF9jb250ZXh0
X3BhaW50KCksIHRoaXMgZnVuY3Rpb24gcGFpbnQganVzdAorICogYmFyZSBjb250ZW50cyBhbmQg
aWdub3JlcyBhbnkgc2Nyb2xsaW5nLCBzY3JvbGxiYXJzIGFuZCBleHRyYXMuIEl0CisgKiB3aWxs
IHdhbGsgdGhlIHJlbmRlcmluZyB0cmVlIGFuZCBwYWludCBjb250ZW50cyBpbnNpZGUgdGhlIGdp
dmVuCisgKiBhcmVhIHRvIHRoZSBjYWlybyBjb250ZXh0IHNwZWNpZmllZCBpbiBAYSBjb250ZXh0
LgorICoKKyAqIEBwYXJhbSBjb250ZXh0IHRoZSBwYWludCBjb250ZXh0IHRvIHBhaW50LCBtdXN0
IEBiIG5vdCBiZSBAYyAwLgorICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgdG8gcGFpbnQKKyAqIEBw
YXJhbSBhcmVhIHRoZSBwYWludCBhcmVhIHRvIHVzZSwgY29vcmRpbmF0ZXMgYXJlIGFic29sdXRl
IHRvIHBhZ2UsIG11c3QgQGIgbm90IGJlIEBjIDAKKyAqCisgKiBAbm90ZSBPbmUgbWF5IHVzZSBj
YWlybyBmdW5jdGlvbnMgb24gdGhlIGNhaXJvIGNvbnRleHQgdG8KKyAqICAgICAgIHRyYW5zbGF0
ZSwgc2NhbGUgb3IgYW55IG1vZGlmaWNhdGlvbiB0aGF0IG1heSBmaXQgaGlzIGRlc2lyZXMuCisg
KgorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9jbGlwKCkKKyAqIEBzZWUgZXdrX3BhaW50X2Nv
bnRleHRfcGFpbnQoKQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBi
dXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVp
ciBvd24gYmFja2luZyBzdG9yZS4KKyAqLwordm9pZCBld2tfcGFpbnRfY29udGV4dF9wYWludF9j
b250ZW50cyhFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgV2ViQ29yZTo6RnJhbWVWaWV3KiB2
aWV3LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSk7CisKKyNlbmRpZiAvLyBld2tfcGFpbnRf
Y29udGV4dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggYjVj
NTFjMC4uNWZjZTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgog
I2luY2x1ZGUgImV3a19qcy5oIgorI2luY2x1ZGUgImV3a19wYWludF9jb250ZXh0X3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0xNzYsNiArMTc3LDkgQEAgdm9pZCBld2tfdmlld19l
ZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJv
b2wgZXdrX3ZpZXdfZm9jdXNfY2FuX2N5Y2xlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9j
dXNfRGlyZWN0aW9uIGRpcmVjdGlvbik7CiB2b2lkIGV3a192aWV3X2ZyYW1lX3ZpZXdfY3JlYXRp
b25fbm90aWZ5KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAorRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFd2tfUGFpbnRfQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpOworRUFQSSBFaW5hX0Jvb2wgZXdr
X3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFd2tfUGFp
bnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpOworCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmpl
Y3RfY2xlYXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgK
aW5kZXggOWU1YTA0OC4uZDBiYWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmgKQEAgLTQzLDcgKzQzLDYgQEAgY29uc3QgZmxvYXQgem9v
bVN0ZXBNaW5pbXVtID0gMC4wMTsKICNkZWZpbmUgUk9VTkRFRF9aT09NKFNJWkUsIFpPT00pICgo
ZmxvYXQpKFNJWkUpIC8gKGZsb2F0KSgoKGludClyb3VuZGYoKFNJWkUpIC8gKFpPT00pKSkpKQog
CiAjaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPGNhaXJvLmg+CiAKIHR5cGVkZWYgc3RydWN0
IF9Fd2tfVGlsZSAgICAgICAgICAgICAgICAgICAgIEV3a19UaWxlOwogdHlwZWRlZiBzdHJ1Y3Qg
X0V3a19UaWxlX1N0YXRzICAgICAgICAgICAgICAgRXdrX1RpbGVfU3RhdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcAppbmRleCA3OTUyYmJjLi45ZmI0ZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKICNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1
ZGUgImV3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8RWluYS5oPgpAQCAtMjY1MSwxNTQgKzI2
NTIsOTYgQEAgdm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHByaXYpOwogfQogCisv
KiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCiAvKioKLSAqIEBicmllZiBTdHJ1Y3R1cmUgdGhhdCBrZWVwcyB0aGUg
cGFpbnQgY29udGV4dC4KLSAqCiAgKiBAaW50ZXJuYWwKKyAqIFBhaW50cyB1c2luZyBnaXZlbiBn
cmFwaGljcyBjb250ZXh0IHRoZSBnaXZlbiBhcmVhLgorICoKKyAqIFRoaXMgdXNlcyB2aWV3cG9y
dCByZWxhdGl2ZSBhcmVhIGFuZCB3aWxsIGFsc28gaGFuZGxlIHNjcm9sbGJhcnMKKyAqIGFuZCBv
dGhlciBleHRyYSBlbGVtZW50cy4gU2VlIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKCkgZm9yIHRo
ZQorICogYWx0ZXJuYXRpdmUgZnVuY3Rpb24uCisgKgorICogQHBhcmFtIHByaXYgdGhlIHBvaW50
ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0byB1c2UgYXMgcGFpbnQgc291cmNl
CisgKiBAcGFyYW0gY3IgdGhlIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBhaW50IGRlc3RpbmF0
aW9uLCBpdHMgc3RhdGUgd2lsbAorICogICAgICAgIGJlIHNhdmVkIGJlZm9yZSBvcGVyYXRpb24g
YW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMKKyAqIEBwYXJhbSBhcmVhIHZpZXdwb3J0IHJlbGF0aXZl
IGdlb21ldHJ5IHRvIHBhaW50CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlzIGlzIGFuIGVh
c3kgdG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZQorICogICAgICAg
YWx3YXlzIGNyZWF0ZWQsIHRoZW4gZ3JhcGhpY3MgY29udGV4dCBpcyBjbGlwcGVkLCB0aGVuCisg
KiAgICAgICBwYWludGVkLCByZXN0b3JlZCBhbmQgZGVzdHJveWVkLiBUaGlzIG1pZ2h0IG5vdCBi
ZSBvcHRpbXVtLAorICogICAgICAgc28gdXNpbmcgQGEgRXdrX1BhaW50X0NvbnRleHQgbWF5IGJl
IGEgYmV0dGVyIHNvbHV0aW9ucworICogICAgICAgZm9yIGxhcmdlIG51bWJlciBvZiBvcGVyYXRp
b25zLgorICoKKyAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoKQorICogQHNlZSBld2tf
cGFpbnRfY29udGV4dF9wYWludCgpCiAgKgogICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVy
YWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVm
aW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi1zdHJ1Y3QgX0V3a19WaWV3X1BhaW50
X0NvbnRleHQgewotICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldzsKLSAgICBPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljQ29udGV4dDsKLSAgICBSZWZQdHI8Y2Fpcm9f
dD4gY2Fpcm87Ci19OwotCi1Fd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWludF9j
b250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNhaXJvKQot
ewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCAwKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2Fpcm8sIDApOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChwcml2LT5tYWluRnJhbWUsIDApOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChwcml2LT5tYWluRnJhbWUtPnZpZXcoKSwgMCk7Ci0KLSAgICBFd2tf
Vmlld19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gbmV3IEV3a19WaWV3X1BhaW50X0NvbnRleHQ7
Ci0gICAgY29udGV4dC0+dmlldyA9IHByaXYtPm1haW5GcmFtZS0+dmlldygpOwotICAgIGNvbnRl
eHQtPmdyYXBoaWNDb250ZXh0ID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dChjYWlybykpOwotICAgIGNvbnRleHQtPmNhaXJvID0gYWRvcHRSZWYoY2Fpcm9fcmVmZXJlbmNl
KGNhaXJvKSk7Ci0KLSAgICByZXR1cm4gY29udGV4dDsKLX0KLQotdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKLQotICAgIGRlbGV0ZSBjb250ZXh0
OwotfQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShFd2tfVmlld19QYWludF9D
b250ZXh0KiBjb250ZXh0KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRl
eHQpOwotCi0gICAgY2Fpcm9fc2F2ZShjb250ZXh0LT5jYWlyby5nZXQoKSk7Ci0gICAgY29udGV4
dC0+Z3JhcGhpY0NvbnRleHQtPnNhdmUoKTsKLX0KLQotdm9pZCBld2tfdmlld19wYWludF9jb250
ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKLQotICAgIGNvbnRleHQtPmdyYXBoaWND
b250ZXh0LT5yZXN0b3JlKCk7Ci0gICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0LT5jYWlyby5nZXQo
KSk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKEV3a19WaWV3X1BhaW50
X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQotewotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOwotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGFyZWEpOwotICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5jbGlwKFdlYkNv
cmU6OkludFJlY3QoKmFyZWEpKTsKLX0KLQotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3Bh
aW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
KiBhcmVhKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOwotCi0gICAgV2ViQ29yZTo6SW50UmVj
dCByZWN0KCphcmVhKTsKLQotICAgIGlmIChjb250ZXh0LT52aWV3LT5pc1RyYW5zcGFyZW50KCkp
Ci0gICAgICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAg
Y29udGV4dC0+dmlldy0+cGFpbnQoY29udGV4dC0+Z3JhcGhpY0NvbnRleHQuZ2V0KCksIHJlY3Qp
OwotfQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCi17
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoKmFy
ZWEpOwotCi0gICAgaWYgKGNvbnRleHQtPnZpZXctPmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAg
Y29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKLQotICAgIGNvbnRleHQt
PnZpZXctPnBhaW50Q29udGVudHMoY29udGV4dC0+Z3JhcGhpY0NvbnRleHQuZ2V0KCksIHJlY3Qp
OwotfQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpCi17Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0KLSAgICBjb250ZXh0LT5ncmFwaGlj
Q29udGV4dC0+c2NhbGUoV2ViQ29yZTo6RmxvYXRTaXplKHNjYWxlWCwgc2NhbGVZKSk7Ci19Ci0K
LXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29u
dGV4dCogY29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihjb250ZXh0KTsKLQotICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT50cmFu
c2xhdGUoeCwgeSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2
YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkK
K0VpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV3
a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgZmFsc2UpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChjb250ZXh0LCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGFyZWEsIGZhbHNlKTsKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZp
ZXcgPSBwcml2LT5tYWluRnJhbWUtPnZpZXcoKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwodmlldywgZmFsc2UpOwogCiAgICAgaWYgKHZpZXctPm5lZWRzTGF5b3V0KCkpCiAg
ICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
IGdyYXBoaWNzQ29udGV4dChjcik7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KCphcmVhKTsK
LQotICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LmNsaXAocmVjdCk7Ci0gICAgaWYgKHZpZXctPmlzVHJhbnNwYXJlbnQo
KSkKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKLSAgICB2aWV3LT5w
YWludCgmZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQucmVzdG9y
ZSgpOwotICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworCisgICAgZXdrX3BhaW50X2NvbnRleHRfc2F2
ZShjb250ZXh0KTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9jbGlwKGNvbnRleHQsIGFyZWEpOwor
ICAgIGV3a19wYWludF9jb250ZXh0X3BhaW50KGNvbnRleHQsIHZpZXcsIGFyZWEpOworICAgIGV3
a19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQorLyoqCisg
KiBAaW50ZXJuYWwKKyAqIFBhaW50cyBqdXN0IGNvbnRlbnRzIHVzaW5nIGdpdmVuIGdyYXBoaWNz
IGNvbnRleHQgdGhlIGdpdmVuIGFyZWEuCisgKgorICogVGhpcyB1c2VzIGFic29sdXRlIGNvb3Jk
aW5hdGVzIGZvciBhcmVhIGFuZCB3aWxsIGp1c3QgaGFuZGxlCisgKiBjb250ZW50cywgbm8gc2Ny
b2xsYmFycyBvciBleHRyYXMuIFNlZSBld2tfdmlld19wYWludCgpIGZvciB0aGUKKyAqIGFsdGVy
bmF0aXZlIHNvbHV0aW9uLgorICoKKyAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBw
cml2YXRlIGRhdGEgb2YgdGhlIHZpZXcgdG8gdXNlIGFzIHBhaW50IHNvdXJjZQorICogQHBhcmFt
IGNyIHRoZSBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbiwgaXRzIHN0
YXRlIHdpbGwKKyAqICAgICAgICBiZSBzYXZlZCBiZWZvcmUgb3BlcmF0aW9uIGFuZCByZXN0b3Jl
ZCBhZnRlcndhcmRzCisgKiBAcGFyYW0gYXJlYSBhYnNvbHV0ZSBnZW9tZXRyeSB0byBwYWludAor
ICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCisgKgorICogQG5vdGUgVGhpcyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9uLCBi
dXQgaW50ZXJuYWwgc3RydWN0dXJlcyBhcmUKKyAqICAgICAgIGFsd2F5cyBjcmVhdGVkLCB0aGVu
IGdyYXBoaWNzIGNvbnRleHQgaXMgY2xpcHBlZCwgdGhlbgorICogICAgICAgcGFpbnRlZCwgcmVz
dG9yZWQgYW5kIGRlc3Ryb3llZC4gVGhpcyBtaWdodCBub3QgYmUgb3B0aW11bSwKKyAqICAgICAg
IHNvIHVzaW5nIEBhIEV3a19QYWludF9Db250ZXh0IG1heSBiZSBhIGJldHRlciBzb2x1dGlvbnMK
KyAqICAgICAgIGZvciBsYXJnZSBudW1iZXIgb2Ygb3BlcmF0aW9ucy4KKyAqCisgKiBAc2VlIGV3
a192aWV3X3BhaW50KCkKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMo
KQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Ig
c3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2lu
ZyBzdG9yZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdiwgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChwcml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQsIGZhbHNl
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJlYSwgZmFsc2UpOwogICAg
IFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5GcmFtZS0+dmlldygpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKLSAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNyKTsKLSAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QoKmFyZWEpOwotCi0gICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LnNhdmUoKTsKLSAgICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKLSAgICBpZiAo
dmlldy0+aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0
KHJlY3QpOwotICAgIHZpZXctPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgIHJlY3Qp
OwotICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7
CisgICAgZXdrX3BhaW50X2NvbnRleHRfc2F2ZShjb250ZXh0KTsKKyAgICBld2tfcGFpbnRfY29u
dGV4dF9jbGlwKGNvbnRleHQsIGFyZWEpOworICAgIGV3a19wYWludF9jb250ZXh0X3BhaW50X2Nv
bnRlbnRzKGNvbnRleHQsIHZpZXcsIGFyZWEpOworICAgIGV3a19wYWludF9jb250ZXh0X3Jlc3Rv
cmUoY29udGV4dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCi0vKiBpbnRlcm5hbCBtZXRo
b2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CiAvKioKICAqIEBpbnRlcm5hbAogICogUmVwb3J0cyB0aGUgdmlldyBpcyByZWFkeSB0byBiZSBk
aXNwbGF5ZWQgYXMgYWxsIGVsZW1lbnRzIGFyZSBhcmVhZHkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5oCmluZGV4IGJiYjVjODMuLmQ1ODUwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBA
IC0yMDk1LDE5MSArMjA5NSw2IEBAIEVBUEkgRXdrX1ZpZXdfU21hcnRfRGF0YSAqZXdrX3ZpZXdf
c21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogICovCiBFQVBJIHZvaWQgZXdr
X3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKIAotLy8vIENy
ZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19QYWludF9Db250ZXh0LgotdHlwZWRl
ZiBzdHJ1Y3QgX0V3a19WaWV3X1BhaW50X0NvbnRleHQgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dDsK
LQotLyoqCi0gKiBDcmVhdGVzIGEgbmV3IHBhaW50IGNvbnRleHQgdXNpbmcgdGhlIHZpZXcgYXMg
c291cmNlIGFuZCBjYWlybyBhcyBvdXRwdXQuCi0gKgotICogQHBhcmFtIHByaXYgdGhlIHBvaW50
ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0byB1c2UgYXMgcGFpbnQgc291cmNl
Ci0gKiBAcGFyYW0gY3IgY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24s
IGEgbmV3Ci0gKiAgICAgICAgcmVmZXJlbmNlIGlzIHRha2VuLCBzbyBpdCdzIHNhZmUgdG8gY2Fs
bCBAYyBjYWlyb19kZXN0cm95KCkKLSAqICAgICAgICBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMuCi0gKgotICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbnN0YW5jZSBvZiBAYyBFd2tf
Vmlld19QYWludF9Db250ZXh0IG9uIHN1Y2Nlc3MsCi0gKiAgICAgICAgIG9yIEBjIDAgb24gZmFp
bHVyZQotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBm
b3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFj
a2luZyBzdG9yZS4KLSAqLwotRUFQSSBFd2tfVmlld19QYWludF9Db250ZXh0ICpld2tfdmlld19w
YWludF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNy
KTsKLQotLyoqCi0gKiBEZXN0cm95cyB0aGUgcHJldmlvdXNseSBjcmVhdGVkIHRoZSBwYWludCBj
b250ZXh0LgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIGRlc3Ryb3ks
IG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJh
bCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Ci0gKiAgICAgICB0byBkZWZp
bmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCk7Ci0KLS8qKgotICog
U2F2ZXMgKHB1c2ggdG8gc3RhY2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1cy4KLSAqCi0gKiBA
cGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBzYXZlLCBtdXN0IEBiIG5vdCBiZSBAYyAw
Ci0gKgotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoKQotICoKLSAqIEBu
b3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0
aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAq
LwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShFd2tfVmlld19QYWludF9D
b250ZXh0ICpjdHh0KTsKLQotLyoqCi0gKiBSZXN0b3JlcyAocG9wIGZyb20gc3RhY2spIHRoZSBw
YWludCBjb250ZXh0IHN0YXR1cy4KLSAqCi0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4
dCB0byByZXN0b3JlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0gKgotICogQHNlZSBld2tfdmlld19w
YWludF9jb250ZXh0X3NhdmUoKQotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFs
IHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmlu
ZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50
X2NvbnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KTsKLQotLyoqCi0g
KiBDbGlwcyB0aGUgcGFpbnQgY29udGV4dCBkcmF3aW5ncyB0byB0aGUgZ2l2ZW4gYXJlYS4KLSAq
Ci0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBjbGlwLCBtdXN0IEBiIG5vdCBi
ZSBAYyAwCi0gKiBAcGFyYW0gYXJlYSBjbGlwIGFyZWEgdG8gdXNlLCBtdXN0IEBiIG5vdCBiZSBA
YyAwCi0gKgotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoKQotICogQHNlZSBl
d2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoKQotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQSSB2b2lkIGV3
a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBj
b25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7Ci0KLS8qKgotICogUGFpbnRzIHRoZSBjb250ZXh0
IHVzaW5nIGdpdmVuIGFyZWEuCi0gKgotICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQg
dG8gcGFpbnQsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqIEBwYXJhbSBhcmVhIHRoZSBwYWludCBh
cmVhIHRvIHVzZSwgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgdmlld3BvcnQs
Ci0gKiAgICAgICAgdGh1cyAic2Nyb2xsZWQiLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0gKgotICog
QG5vdGUgT25lIG1heSB1c2UgY2Fpcm8gZnVuY3Rpb25zIG9uIHRoZSBjYWlybyBjb250ZXh0IHRv
Ci0gKiAgICAgICB0cmFuc2xhdGUsIHNjYWxlIG9yIGFueSBtb2RpZmljYXRpb24gdGhhdCBtYXkg
Zml0IGhpcyBkZXNpcmVzLgotICoKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlw
KCkKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cygpCi0gKgot
ICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFz
c2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3Jl
LgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludChFd2tfVmlld19Q
YWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7Ci0KLS8qKgot
ICogUGFpbnRzIGp1c3QgY29udGVudHMgdXNpbmcgY29udGV4dCB1c2luZyBnaXZlbiBhcmVhLgot
ICoKLSAqIFVubGlrZSBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KCksIHRoaXMgZnVuY3Rp
b24gcGFpbnQganVzdAotICogYmFyZSBjb250ZW50cyBhbmQgaWdub3JlcyBhbnkgc2Nyb2xsaW5n
LCBzY3JvbGxiYXJzIGFuZCBleHRyYXMuIEl0Ci0gKiB3aWxsIHdhbGsgdGhlIHJlbmRlcmluZyB0
cmVlIGFuZCBwYWludCBjb250ZW50cyBpbnNpZGUgdGhlIGdpdmVuCi0gKiBhcmVhIHRvIHRoZSBj
YWlybyBjb250ZXh0IHNwZWNpZmllZCBpbiBAYSBjdHh0LgotICoKLSAqIEBwYXJhbSBjdHh0IHRo
ZSBwYWludCBjb250ZXh0IHRvIHBhaW50LCBtdXN0IEBiIG5vdCBiZSBAYyAwLgotICogQHBhcmFt
IGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBjb29yZGluYXRlcyBhcmUgYWJzb2x1dGUgdG8g
cGFnZSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICoKLSAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJv
IGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bwotICogICAgICAgdHJhbnNsYXRlLCBz
Y2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KLSAqCi0g
KiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcCgpCi0gKiBAc2VlIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfcGFpbnQoKQotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFs
IHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmlu
ZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50
X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29u
c3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwotCi0vKioKLSAqIFNjYWxlcyB0aGUgY29udGVudHMg
YnkgdGhlIGdpdmVuIGZhY3RvcnMuCi0gKgotICogVGhpcyBmdW5jdGlvbiBhcHBsaWVzIGEgc2Nh
bGluZyB0cmFuc2Zvcm1hdGlvbiB1c2luZyBDYWlyby4KLSAqCi0gKiBAcGFyYW0gY3R4dCB0aGUg
cGFpbnQgY29udGV4dCB0byBzY2FsZSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICogQHBhcmFtIHNj
YWxlX3ggdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIFggZGltZW5zaW9uCi0gKiBAcGFyYW0gc2Nh
bGVfeSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWSBkaW1lbnNpb24KLSAqLwotRUFQSSB2b2lk
IGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4
dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSk7Ci0KLS8qKgotICogUGVyZm9ybXMgYSB0
cmFuc2xhdGlvbiBvZiB0aGUgb3JpZ2luIGNvb3JkaW5hdGVzLgotICoKLSAqIFRoaXMgZnVuY3Rp
b24gbW92ZXMgdGhlIG9yaWdpbiBjb29yZGluYXRlcyBieSBAYSB4IGFuZCBAYSB5IHBpeGVscy4K
LSAqCi0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byB0cmFuc2xhdGUsIG11c3Qg
QGIgbm90IGJlIEBjIDAKLSAqIEBwYXJhbSB4IGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNsYXRl
IGluIHRoZSBYIGRpbWVuc2lvbgotICogQHBhcmFtIHkgYW1vdW50IG9mIHBpeGVscyB0byB0cmFu
c2xhdGUgaW4gdGhlIFkgZGltZW5zaW9uCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19wYWludF9j
b250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBmbG9hdCB4LCBm
bG9hdCB5KTsKLQotLyoqCi0gKiBQYWludHMgdXNpbmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0
aGUgZ2l2ZW4gYXJlYS4KLSAqCi0gKiBUaGlzIHVzZXMgdmlld3BvcnQgcmVsYXRpdmUgYXJlYSBh
bmQgd2lsbCBhbHNvIGhhbmRsZSBzY3JvbGxiYXJzCi0gKiBhbmQgb3RoZXIgZXh0cmEgZWxlbWVu
dHMuIFNlZSBld2tfdmlld19wYWludF9jb250ZW50cygpIGZvciB0aGUKLSAqIGFsdGVybmF0aXZl
IGZ1bmN0aW9uLgotICoKLSAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRl
IGRhdGEgb2YgdGhlIHZpZXcgdG8gdXNlIGFzIHBhaW50IHNvdXJjZQotICogQHBhcmFtIGNyIHRo
ZSBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbiwgaXRzIHN0YXRlIHdp
bGwKLSAqICAgICAgICBiZSBzYXZlZCBiZWZvcmUgb3BlcmF0aW9uIGFuZCByZXN0b3JlZCBhZnRl
cndhcmRzCi0gKiBAcGFyYW0gYXJlYSB2aWV3cG9ydCByZWxhdGl2ZSBnZW9tZXRyeSB0byBwYWlu
dAotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlCi0gKgotICogQG5vdGUgVGhpcyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9u
LCBidXQgaW50ZXJuYWwgc3RydWN0dXJlcyBhcmUKLSAqICAgICAgIGFsd2F5cyBjcmVhdGVkLCB0
aGVuIGdyYXBoaWNzIGNvbnRleHQgaXMgY2xpcHBlZCwgdGhlbgotICogICAgICAgcGFpbnRlZCwg
cmVzdG9yZWQgYW5kIGRlc3Ryb3llZC4gVGhpcyBtaWdodCBub3QgYmUgb3B0aW11bSwKLSAqICAg
ICAgIHNvIHVzaW5nIEBhIEV3a19WaWV3X1BhaW50X0NvbnRleHQgbWF5IGJlIGEgYmV0dGVyIHNv
bHV0aW9ucwotICogICAgICAgZm9yIGxhcmdlIG51bWJlciBvZiBvcGVyYXRpb25zLgotICoKLSAq
IEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoKQotICogQHNlZSBld2tfdmlld19wYWludF9j
b250ZXh0X3BhaW50KCkKLSAqCi0gKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Ci0gKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlICphcmVhKTsKLQotLyoqCi0gKiBQYWludHMganVzdCBjb250ZW50cyB1c2luZyBnaXZl
biBncmFwaGljcyBjb250ZXh0IHRoZSBnaXZlbiBhcmVhLgotICoKLSAqIFRoaXMgdXNlcyBhYnNv
bHV0ZSBjb29yZGluYXRlcyBmb3IgYXJlYSBhbmQgd2lsbCBqdXN0IGhhbmRsZQotICogY29udGVu
dHMsIG5vIHNjcm9sbGJhcnMgb3IgZXh0cmFzLiBTZWUgZXdrX3ZpZXdfcGFpbnQoKSBmb3IgdGhl
Ci0gKiBhbHRlcm5hdGl2ZSBzb2x1dGlvbi4KLSAqCi0gKiBAcGFyYW0gcHJpdiB0aGUgcG9pbnRl
ciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UK
LSAqIEBwYXJhbSBjciB0aGUgY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRp
b24sIGl0cyBzdGF0ZSB3aWxsCi0gKiAgICAgICAgYmUgc2F2ZWQgYmVmb3JlIG9wZXJhdGlvbiBh
bmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcwotICogQHBhcmFtIGFyZWEgYWJzb2x1dGUgZ2VvbWV0cnkg
dG8gcGFpbnQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJ
TkFfRkFMU0Ugb24gZmFpbHVyZQotICoKLSAqIEBub3RlIFRoaXMgaXMgYW4gZWFzeSB0byB1c2Ug
dmVyc2lvbiwgYnV0IGludGVybmFsIHN0cnVjdHVyZXMgYXJlCi0gKiAgICAgICBhbHdheXMgY3Jl
YXRlZCwgdGhlbiBncmFwaGljcyBjb250ZXh0IGlzIGNsaXBwZWQsIHRoZW4KLSAqICAgICAgIHBh
aW50ZWQsIHJlc3RvcmVkIGFuZCBkZXN0cm95ZWQuIFRoaXMgbWlnaHQgbm90IGJlIG9wdGltdW0s
Ci0gKiAgICAgICBzbyB1c2luZyBAYSBFd2tfVmlld19QYWludF9Db250ZXh0IG1heSBiZSBhIGJl
dHRlciBzb2x1dGlvbnMKLSAqICAgICAgIGZvciBsYXJnZSBudW1iZXIgb2Ygb3BlcmF0aW9ucy4K
LSAqCi0gKiBAc2VlIGV3a192aWV3X3BhaW50KCkKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9wYWludF9jb250ZW50cygpCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVy
YWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVm
aW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmll
d19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNy
LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7Ci0KIC8qKgogICogR2V0cyB0aGUgYXR0cmli
dXRlcyBvZiB0aGUgdmlld3BvcnQgbWV0YSB0YWcuCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCAxZGVjZTA2Li40ZTU0YTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtMjEyLDEyNSArMjEyLDczIEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hCiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Npbmds
ZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
IHsKLSAgICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0OwotICAgIEV2YXNfQ29vcmQg
b3csIG9oOwotICAgIHZvaWQqIHBpeGVsczsKLSAgICBFaW5hX1JlY3RhbmdsZSogcmVjdDsKLSAg
ICBjb25zdCBFaW5hX1JlY3RhbmdsZSogcGFpbnRSZXF1ZXN0OwotICAgIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBwYWludFJlcXVlc3RFbmQ7Ci0gICAgRWluYV9UaWxlciogdGlsZXI7Ci0gICAgRWlu
YV9JdGVyYXRvciogaXRlcmF0b3I7Ci0gICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzOwotICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZTsKLSAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7Ci0gICAg
Y2Fpcm9fdCogY2Fpcm87Ci0gICAgc2l6ZV90IGNvdW50OwotICAgIEVpbmFfQm9vbCByZXN1bHQg
PSB0cnVlOwotCiAgICAgaWYgKHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQg
PCAwLjAwMDAxKSB7CiAgICAgICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gZXZhc19vYmplY3RfY2xp
cF9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKLSAgICAgICAgRXZhc19Db29yZCB3aWR0
aCwgaGVpZ2h0LCBjZW50ZXJXaWR0aCwgY2VudGVySGVpZ2h0OworCiAgICAgICAgIC8vIHJlc2V0
IGVmZmVjdHMgb2Ygem9vbV93ZWFrX3NldCgpCi0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Zp
bGxfc2V0Ci0gICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAwLCAwLCBzbWFy
dERhdGEtPnZpZXcudywgc21hcnREYXRhLT52aWV3LmgpOworICAgICAgICBldmFzX29iamVjdF9p
bWFnZV9maWxsX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHNtYXJ0RGF0YS0+
dmlldy53LCBzbWFydERhdGEtPnZpZXcuaCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoY2xp
cCwgc21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55KTsKIAotICAgICAgICB3aWR0
aCA9IHNtYXJ0RGF0YS0+dmlldy53OwotICAgICAgICBoZWlnaHQgPSBzbWFydERhdGEtPnZpZXcu
aDsKKyAgICAgICAgRXZhc19Db29yZCB3aWR0aCA9IHNtYXJ0RGF0YS0+dmlldy53OworICAgICAg
ICBFdmFzX0Nvb3JkIGhlaWdodCA9IHNtYXJ0RGF0YS0+dmlldy5oOwogCisgICAgICAgIEV2YXNf
Q29vcmQgY2VudGVyV2lkdGgsIGNlbnRlckhlaWdodDsKICAgICAgICAgZXdrX2ZyYW1lX2NvbnRl
bnRzX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNlbnRlcldpZHRoLCAmY2VudGVy
SGVpZ2h0KTsKICAgICAgICAgaWYgKHdpZHRoID4gY2VudGVyV2lkdGgpCiAgICAgICAgICAgICB3
aWR0aCA9IGNlbnRlcldpZHRoOworCiAgICAgICAgIGlmIChoZWlnaHQgPiBjZW50ZXJIZWlnaHQp
CiAgICAgICAgICAgICBoZWlnaHQgPSBjZW50ZXJIZWlnaHQ7Ci0gICAgICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZShjbGlwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9CiAKLSAgICBwaXhlbHMgPSBldmFz
X29iamVjdF9pbWFnZV9kYXRhX2dldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIDEpOwotICAg
IGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJm93
LCAmb2gpOwotICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7Ci0KLSAgICBzdXJmYWNl
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEKLSAgICAgICAgICAgICAgICAg
IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocGl4ZWxzKSwgZm9ybWF0LCBvdywgb2gsIG93
ICogNCk7Ci0gICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSk7Ci0gICAg
aWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewotICAgICAgICBFUlIoImNvdWxk
IG5vdCBjcmVhdGUgc3VyZmFjZSBmcm9tIGRhdGEgJWR4JWQ6ICVzIiwKLSAgICAgICAgICAgIG93
LCBvaCwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAgICAgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJyb3JfY2Fpcm9fc3VyZmFjZTsKLSAgICB9Ci0gICAgY2Fp
cm8gPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7Ci0gICAgc3RhdHVzID0gY2Fpcm9fc3RhdHVzKGNh
aXJvKTsKLSAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAg
IEVSUigiY291bGQgbm90IGNyZWF0ZSBjYWlybyBmcm9tIHN1cmZhY2UgJWR4JWQ6ICVzIiwKLSAg
ICAgICAgICAgIG93LCBvaCwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAg
ICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJyb3JfY2Fpcm87CisgICAgICAgIGV2
YXNfb2JqZWN0X3Jlc2l6ZShjbGlwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiAKLSAgICBjb250
ZXh0ID0gZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoc21hcnREYXRhLT5fcHJpdiwgY2Fpcm8p
OwotICAgIGlmICghY29udGV4dCkgewotICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgcGFp
bnQgY29udGV4dCIpOwotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgZ290byBlcnJv
cl9wYWludF9jb250ZXh0OwotICAgIH0KKyAgICBFdmFzX0Nvb3JkIGltYWdlV2lkdGgsIGltYWdl
SGVpZ2h0OworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgJmltYWdlV2lkdGgsICZpbWFnZUhlaWdodCk7CiAKLSAgICB0aWxlciA9IGVpbmFf
dGlsZXJfbmV3KG93LCBvaCk7CisgICAgRWluYV9UaWxlciogdGlsZXIgPSBlaW5hX3RpbGVyX25l
dyhpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7CiAgICAgaWYgKCF0aWxlcikgewotICAgICAgICBF
UlIoImNvdWxkIG5vdCBjcmVhdGUgdGlsZXIgJWR4JWQiLCBvdywgb2gpOwotICAgICAgICByZXN1
bHQgPSBmYWxzZTsKLSAgICAgICAgZ290byBlcnJvcl90aWxlcjsKKyAgICAgICAgRVJSKCJjb3Vs
ZCBub3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRl
ZF9yZWN1cnNpdmUoc21hcnREYXRhLT5fcHJpdik7CiAKLSAgICBwYWludFJlcXVlc3QgPSBld2tf
dmlld19yZXBhaW50c19wb3Aoc21hcnREYXRhLT5fcHJpdiwgJmNvdW50KTsKLSAgICBwYWludFJl
cXVlc3RFbmQgPSBwYWludFJlcXVlc3QgKyBjb3VudDsKKyAgICBzaXplX3QgY291bnQ7CisgICAg
Y29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdCA9IGV3a192aWV3X3JlcGFpbnRzX3Bv
cChzbWFydERhdGEtPl9wcml2LCAmY291bnQpOworICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBw
YWludFJlcXVlc3RFbmQgPSBwYWludFJlcXVlc3QgKyBjb3VudDsKICAgICBmb3IgKDsgcGFpbnRS
ZXF1ZXN0IDwgcGFpbnRSZXF1ZXN0RW5kOyBwYWludFJlcXVlc3QrKykKICAgICAgICAgZWluYV90
aWxlcl9yZWN0X2FkZCh0aWxlciwgcGFpbnRSZXF1ZXN0KTsKIAotICAgIGl0ZXJhdG9yID0gZWlu
YV90aWxlcl9pdGVyYXRvcl9uZXcodGlsZXIpOworICAgIEVpbmFfSXRlcmF0b3IqIGl0ZXJhdG9y
ID0gZWluYV90aWxlcl9pdGVyYXRvcl9uZXcodGlsZXIpOwogICAgIGlmICghaXRlcmF0b3IpIHsK
ICAgICAgICAgRVJSKCJjb3VsZCBub3QgZ2V0IGl0ZXJhdG9yIGZvciB0aWxlciIpOwotICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgZ290byBlcnJvcl9pdGVyYXRvcjsKKyAgICAgICAg
ZWluYV90aWxlcl9mcmVlKHRpbGVyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor
ICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRleHRfZnJvbV9p
bWFnZV9uZXcoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKKyAgICBld2tfcGFpbnRfY29udGV4
dF9zYXZlKGNvbnRleHQpOworCiAgICAgaW50IHNjcm9sbFgsIHNjcm9sbFk7CiAgICAgZXdrX2Zy
YW1lX3Njcm9sbF9wb3NfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJnNjcm9sbFgsICZzY3Jv
bGxZKTsKKyAgICBpZiAoc2Nyb2xsWCB8fCBzY3JvbGxZKQorICAgICAgICBld2tfcGFpbnRfY29u
dGV4dF90cmFuc2xhdGUoY29udGV4dCwgLXNjcm9sbFgsIC1zY3JvbGxZKTsKIAorICAgIEVpbmFf
UmVjdGFuZ2xlKiByZWN0OwogICAgIEVJTkFfSVRFUkFUT1JfRk9SRUFDSChpdGVyYXRvciwgcmVj
dCkgewotICAgICAgICBFaW5hX1JlY3RhbmdsZSBzY3JvbGxlZF9yZWN0ID0gewotICAgICAgICAg
ICAgcmVjdC0+eCArIHNjcm9sbFgsIHJlY3QtPnkgKyBzY3JvbGxZLAotICAgICAgICAgICAgcmVj
dC0+dywgcmVjdC0+aAotICAgICAgICB9OwotCi0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfc2F2ZShjb250ZXh0KTsKLQotICAgICAgICBpZiAoKHNjcm9sbFgpIHx8IChzY3JvbGxZKSkK
LSAgICAgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKGNvbnRleHQsIC1z
Y3JvbGxYLCAtc2Nyb2xsWSk7CisgICAgICAgIEVpbmFfUmVjdGFuZ2xlIHNjcm9sbGVkUmVjdCA9
IHsgcmVjdC0+eCArIHNjcm9sbFgsIHJlY3QtPnkgKyBzY3JvbGxZLCByZWN0LT53LCByZWN0LT5o
IH07CisgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKHNtYXJ0RGF0YS0+X3ByaXYsIGNv
bnRleHQsICZzY3JvbGxlZFJlY3QpOworICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3Vw
ZGF0ZV9hZGQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCByZWN0LT54LCByZWN0LT55LCByZWN0
LT53LCByZWN0LT5oKTsKKyAgICB9CiAKLSAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9j
bGlwKGNvbnRleHQsICZzY3JvbGxlZF9yZWN0KTsKLSAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9wYWludF9jb250ZW50cyhjb250ZXh0LCAmc2Nyb2xsZWRfcmVjdCk7CisgICAgZXdrX3Bh
aW50X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9mcmVl
KGNvbnRleHQpOwogCi0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZShjb250
ZXh0KTsKLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAg
ICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCByZWN0LT54LCByZWN0LT55LCByZWN0LT53
LCByZWN0LT5oKTsKLSAgICB9CisgICAgZWluYV90aWxlcl9mcmVlKHRpbGVyKTsKICAgICBlaW5h
X2l0ZXJhdG9yX2ZyZWUoaXRlcmF0b3IpOwogCi1lcnJvcl9pdGVyYXRvcjoKLSAgICBlaW5hX3Rp
bGVyX2ZyZWUodGlsZXIpOwotZXJyb3JfdGlsZXI6Ci0gICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9mcmVlKGNvbnRleHQpOwotZXJyb3JfcGFpbnRfY29udGV4dDoKLSAgICBjYWlyb19kZXN0cm95
KGNhaXJvKTsKLWVycm9yX2NhaXJvOgotICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNl
KTsKLWVycm9yX2NhaXJvX3N1cmZhY2U6Ci0gICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQo
c21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBwaXhlbHMpOyAvKiBkZWMgcmVmY291bnQgKi8KLQot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3Jk
IGNlbnRlclkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGls
ZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCAz
NDJjYzRlLi41MjJiM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5j
cHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCiAjaW5jbHVk
ZSA8RXZhcy5oPgotI2luY2x1ZGUgPFJlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZl
dHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaD4KIApAQCAt
MzQsNDQgKzMzLDE3IEBAIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0g
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfdGlsZWRfcmVuZGVyX2NiKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlLCBjb25zdCBFaW5h
X1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBz
dGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKLSAgICBFaW5hX1JlY3Rh
bmdsZSByZWN0ID0ge2FyZWEtPnggKyB0aWxlLT54LCBhcmVhLT55ICsgdGlsZS0+eSwgYXJlYS0+
dywgYXJlYS0+aH07ICAgIAotICAgIGludCBzdHJpZGU7Ci0gICAgY2Fpcm9fZm9ybWF0X3QgZm9y
bWF0OwotCi0gICAgaWYgKHRpbGUtPmNzcGFjZSA9PSBFVkFTX0NPTE9SU1BBQ0VfQVJHQjg4ODgp
IHsKLSAgICAgICAgc3RyaWRlID0gdGlsZS0+d2lkdGggKiA0OwotICAgICAgICBmb3JtYXQgPSBD
QUlST19GT1JNQVRfQVJHQjMyOwotICAgIH0gZWxzZSBpZiAodGlsZS0+Y3NwYWNlID09IEVWQVNf
Q09MT1JTUEFDRV9SR0I1NjVfQTVQKSB7Ci0gICAgICAgIHN0cmlkZSA9IHRpbGUtPndpZHRoICog
MjsKLSAgICAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX1JHQjE2XzU2NTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBFUlIoInVua25vd24gY29sb3Igc3BhY2U6ICVkIiwgdGlsZS0+Y3NwYWNlKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBFaW5hX1JlY3RhbmdsZSByZWN0ID0g
e2FyZWEtPnggKyB0aWxlLT54LCBhcmVhLT55ICsgdGlsZS0+eSwgYXJlYS0+dywgYXJlYS0+aH07
CiAKICAgICB1aW50OF90KiBwaXhlbHMgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXZhc19vYmpl
Y3RfaW1hZ2VfZGF0YV9nZXQodGlsZS0+aW1hZ2UsIHRydWUpKTsKLSAgICBpZiAoIXBpeGVscykg
ewotICAgICAgICBFUlIoImZhaWwgdG8gZ2V0IHRoZSBwaXhlbCBkYXRhIGZyb20gdGhlIGltYWdl
IG9iamVjdCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZV9mb3JfZGF0YShwaXhlbHMsIGZvcm1hdCwgdGlsZS0+d2lkdGgsIHRpbGUtPmhlaWdodCwgc3Ry
aWRlKSk7Ci0gICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMo
c3VyZmFjZS5nZXQoKSk7Ci0gICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykg
ewotICAgICAgICBFUlIoImZhaWxlZCB0byBjcmVhdGUgY2Fpcm8gc3VyZmFjZTogJXMiLCBjYWly
b19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRleHRfZnJv
bV9pbWFnZV9kYXRhX25ldyhwaXhlbHMsIHRpbGUtPndpZHRoLCB0aWxlLT5oZWlnaHQsIHRpbGUt
PmNzcGFjZSk7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY2Fpcm8gPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUoc3VyZmFjZS5nZXQoKSkpOwotICAgIHN0YXR1cyA9IGNhaXJvX3N0YXR1cyhjYWlyby5n
ZXQoKSk7Ci0gICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewotICAgICAg
ICBFUlIoImZhaWxlZCB0byBjcmVhdGUgY2Fpcm86ICVzIiwgY2Fpcm9fc3RhdHVzX3RvX3N0cmlu
ZyhzdGF0dXMpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBld2tfcGFpbnRf
Y29udGV4dF90cmFuc2xhdGUoY29udGV4dCwgLXRpbGUtPngsIC10aWxlLT55KTsKKyAgICBFaW5h
X0Jvb2wgcmVzdWx0ID0gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMocHJpdiwgY29udGV4dCwgJnJl
Y3QpOworICAgIGV3a19wYWludF9jb250ZXh0X2ZyZWUoY29udGV4dCk7CiAKLSAgICBjYWlyb190
cmFuc2xhdGUoY2Fpcm8uZ2V0KCksIC10aWxlLT54LCAtdGlsZS0+eSk7Ci0KLSAgICBib29sIHJl
c3VsdCA9IGV3a192aWV3X3BhaW50X2NvbnRlbnRzKHByaXYsIGNhaXJvLmdldCgpLCAmcmVjdCk7
CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQodGlsZS0+aW1hZ2UsIHBpeGVscyk7CisK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvZWZsc3lt
Ym9scy5maWx0ZXIgYi9Tb3VyY2UvY21ha2UvZWZsc3ltYm9scy5maWx0ZXIKaW5kZXggMmJjYjNj
ZS4uZjc2MDlhYiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL2VmbHN5bWJvbHMuZmlsdGVyCisr
KyBiL1NvdXJjZS9jbWFrZS9lZmxzeW1ib2xzLmZpbHRlcgpAQCAtNCw2ICs0LDggQEAKIAogICAg
ICAgICAgICAgICAgIGV4dGVybiAiQysrIiB7CiAgICAgICAgICAgICAgICAgICAgICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbCo7CisgICAgICAgICAgICAgICAgICAgICAgIGV3a192aWV3X3Bh
aW50KjsKKyAgICAgICAgICAgICAgICAgICAgICAgZXdrX3BhaW50X2NvbnRleHRfKjsKICAgICAg
ICAgICAgICAgICB9OwogCiAgICAgICAgIGxvY2FsOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIyYzcxZWQuLmYxNDE3ZTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wNS0wNCAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBSZWZhY3RvciBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZWZsL0NNYWtlTGlzdHMudHh0OiBBZGRlZCBpbmNsdWRlIGRpcmVjdG9yeS4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVmbC5jcHA6IEFkanVzdCB0byBB
UEkgY2hhbmdlLgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKwog
MjAxMi0wNS0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdIERSVCBzaG91bGQgb2JleSBsYXlvdXRUZXN0Q29udHJvbGxlcidz
IGFkZFVSTFRvUmVkaXJlY3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
CmluZGV4IGFkMGFlMmQuLjU1MDA3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VM
aXN0cy50eHQKQEAgLTU5LDYgKzU5LDcgQEAgU0VUKER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0CiAgICAgJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlybworICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrCiAgICAgJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbmV0d29yay9zb3VwCiAgICAgJHtXRUJDT1JFX0RJUn0vcGx1Z2lucwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1cHBvcnRFZmwuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1cHBvcnRFZmwuY3BwCmluZGV4
IDEwOTM3NGUuLjRjYTJiMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Q
aXhlbER1bXBTdXBwb3J0RWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4
ZWxEdW1wU3VwcG9ydEVmbC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQaXhlbER1
bXBTdXBwb3J0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgIldl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgorI2luY2x1ZGUgImV3a19w
YWludF9jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCiBQYXNz
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29s
LCBib29sLCBib29sLCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQpAQCAtNTEsMTAgKzUyLDE1IEBA
IFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3
KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRf
QVJHQjMyLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGNvbnRleHQgPSBh
ZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkpOworICAgIEV3a19QYWludF9Db250
ZXh0KiBncmFwaGljQ29udGV4dCA9IGV3a19wYWludF9jb250ZXh0X25ldyhjb250ZXh0LmdldCgp
KTsKIAogICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlIHJlY3QgPSB7IHgsIHksIHdpZHRoLCBoZWln
aHQgfTsKLSAgICBpZiAoIWV3a192aWV3X3BhaW50KHByaXZhdGVEYXRhLCBjb250ZXh0LmdldCgp
LCAmcmVjdCkpCisgICAgaWYgKCFld2tfdmlld19wYWludChwcml2YXRlRGF0YSwgZ3JhcGhpY0Nv
bnRleHQsICZyZWN0KSkgeworICAgICAgICBld2tfcGFpbnRfY29udGV4dF9mcmVlKGdyYXBoaWND
b250ZXh0KTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZXdrX3BhaW50X2NvbnRl
eHRfZnJlZShncmFwaGljQ29udGV4dCk7CiAKICAgICBpZiAoZHJhd1NlbGVjdGlvblJlY3QpIHsK
ICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0ID0gRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpzZWxlY3Rpb25SZWN0YW5nbGUobWFpbkZyYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140178</attachid>
            <date>2012-05-04 01:21:20 -0700</date>
            <delta_ts>2012-05-07 05:02:31 -0700</delta_ts>
            <desc>ewk_view_context_paint related changes 2</desc>
            <filename>ewk_paint_context.patch</filename>
            <type>text/plain</type>
            <size>47045</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwZTA0MDk5Li4zOTY1MGVh
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDUtMDQgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gUmVmYWN0b3IgZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnRzIG5ldyBz
eW1ib2xzIHJlbGVhdGVkIHRvIGV3a19wYWludF9jb250ZXh0LgorCisgICAgICAgICogU291cmNl
L2NtYWtlL2VmbHN5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA1LTAzICBSYXBoYWVsIEt1Ym8gZGEg
Q29zdGEgIDxyYWt1Y29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIFJld3JpdGUgRmlu
ZENhaXJvLmNtYWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YmE5NjlhLi5mNzZlMzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTA1LTA0ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192aWV3X2NvbnRleHRfcGFp
bnQgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbmV3IGV3a19wYWludF9jb250ZXh0LmNwcCBmaWxlIHRvIHNvdXJjZSBsaXN0LgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMDUtMDMgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gUmV3cml0ZSBG
aW5kQ2Fpcm8uY21ha2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBjNGQyMGNjLi5kNTBi
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEwNyw2ICsxMDcsNyBAQCBMSVNUKEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2pzLmNwcAogICAgIGVmbC9ld2sv
ZXdrX21haW4uY3BwCiAgICAgZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKyAgICBlZmwvZXdrL2V3
a19wYWludF9jb250ZXh0LmNwcAogICAgIGVmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAK
ICAgICBlZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNWE2MWQwYi4uOWY5MTMwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTA0ICBUb21hc3ogTW9yYXdza2kgIDx0
Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192aWV3
X2NvbnRleHRfcGFpbnQgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIGNoYW5nZSBpcyByZWR1Y2Ugc2l6
ZSBvZiBld2tfdmlldy5oL2NwcCBmaWxlcyBhbmQgbWFrZSB1c2Ugb2YgZXdrX3ZpZXdfY29udGV4
dF9wYWludAorICAgICAgICBvYmplY3QgYnkgZXdrX3ZpZXdfc2luZ2xlIGFuZCBld2tfdmlld190
aWxlZCBpbnN0ZWFkIG9mIGRpcmVjdCBvcGVyYXRpb25zIG9uIGNhaXJvLgorICAgICAgICBUaGUg
Y29kZSBpcyBtb3JlIG9iamVjdGl2ZSBhbmQgbG9va3MgdmVyeSBzaW1wbGUgbm93LgorICAgICAg
ICBSZW1vdmUgZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlIGZyb20gZXdrX3ZpZXcgaC9jcHAg
ZmlsZSBhbmQgbW92ZSBpdCB0byBzZXBhcmF0ZSBuZXcgZXdrX2NvbnRleHRfcGFpbnQgZmlsZS4K
KyAgICAgICAgVGhlIGV3a192aWV3X2NvbnRleHRfcGFpbnQgaGFzIGJlZW4gcmVuYW1lZCB0byBl
d2tfY29udGV4dF9wYWludCBhbmQgaXQgaXMgbm90IGJpbmRlZCB0byB2aWV3IG9uIGNyZWF0aW9u
IHRpbWUuCisKKyAgICAgICAgKiBld2svZXdrX3BhaW50X2NvbnRleHQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgRnVuY3Rpb25zIHJlbmFtZWQgYW5kIG1vdmVkIGZyb20gZXdrX3ZpZXcgdG8gZXdrX3Bh
aW50X2NvbnRleHQgZmlsZS4KKyAgICAgICAgKGV3a19wYWludF9jb250ZXh0X25ldyk6CisgICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX25ldyk6IE5ldyBmdW5jdGlvbi4KKyAg
ICAgICAgKGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfZGF0YV9uZXcpOiBOZXcgZnVuY3Rp
b24uCisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF9mcmVlKToKKyAgICAgICAgKGV3a19wYWlu
dF9jb250ZXh0X3NhdmUpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZSk6Cisg
ICAgICAgIChld2tfcGFpbnRfY29udGV4dF9jbGlwKToKKyAgICAgICAgKGV3a19wYWludF9jb250
ZXh0X3NjYWxlKToKKyAgICAgICAgKGV3a19wYWludF9jb250ZXh0X3RyYW5zbGF0ZSk6CisgICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9wYWludCk6IEFkZGVkIEZyYW1lVmlldyBwYXJhbWV0ZXIu
CisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6IEFkZGVkIEZyYW1l
VmlldyBwYXJhbWV0ZXIuCisgICAgICAgICogZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgIChfRXdrX1BhaW50X0NvbnRleHQpOgorICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOiBGdW5jdGlvbnMgZXdrX3ZpZXdfcGFpbnQgYW5kIGV3a192aWV3X3BhaW50
X2NvbnRlbnRzIG1vdmVkIGZyb20gZXdrX3ZpZXcuaC4KKyAgICAgICAgKiBld2svZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmUuaDogUmVtb3ZlZCB1bnVzZWQgaW5jbHVkZS4KKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOiBNb3ZlZCBhbGwgZnVuY3Rpb24gcmVsZWF0ZWQgdG8gcGFpbnQgY29udGV4
dCBvYmplY3QgdG8gbmV3IGV3a19wYWludF9jb250ZXh0IGZpbGUuCisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50KTogQ2hhbmdlZCBmdW5j
dGlvbiBhY2NvcmRpbmcgY2hhbmdlIGluIGV3a19wYWludF9jb250ZXh0X3BhaW50IGZ1bmN0aW9u
LgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGVudHMpOiBDaGFuZ2VkIGZ1bmN0aW9uIGFj
Y29yZGluZyBjaGFuZ2UgaW4gZXdrX3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMgZnVuY3Rp
b24uCisgICAgICAgICogZXdrL2V3a192aWV3Lmg6IFJlbW92ZWQgYWxsIHBhaW50IGNvbnRleHQg
ZnVuY3Rpb25zIGFuZCBld2tfdmlld19wYWludCwgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMgZnVu
Y3Rpb24gZnJvbQorICAgICAgICBwdWJsaWMgQVBJLgorICAgICAgICAqIGV3ay9ld2tfdmlld19z
aW5nbGUuY3BwOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9j
ZXNzKToKKyAgICAgICAgUmVmYWN0b3Igb2YgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50
c19wcm9jZXNzIGZ1bmN0aW9uLgorICAgICAgICBSZW1vdmVkIGdvdG8gc3RhdGVtZW50cy4KKyAg
ICAgICAgUmVtb3ZlZCB2YXJpYWJsZXMgZGVjbGFyYXRpb24gZnJvbSBmdW5jdGlvbiBiZWdpbm5p
bmcuCisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmll
d190aWxlZF9yZW5kZXJfY2IpOiBNYWtlIHVzZSBvZiBld2tfcGFpbnRfY29udGV4dCBvYmplY3Qg
aW5zdGVhZCBvZiBkaXJlY3Rpb24gb3BlcmF0aW9uIG9uIGNhaXJvLgorICAgICAgICBMb29rcyBz
aW1wbGVyIGFuZCBtb3JlIG9iamVjdGl2ZS4KKwogMjAxMi0wNS0wMyAgRmFkeSBTYW11ZWwgIDxm
c2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmluZyBsaW5lIGluIGNvbXB1dGVW
aWV3cG9ydEF0dHJpYnV0ZXMgdGhhdCBlbmZvcmNlcyBhIG1pbmltdW0gc2NhbGUgZmFjdG9yIHRv
IG5ldmVyIGFsbG93IHpvb21pbmcgb3V0IG1vcmUgdGhhbiB2aWV3cG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDVkZjIzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfcGFpbnRf
Y29udGV4dF9wcml2YXRlLmgiCisKK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4
dF9uZXcoY2Fpcm9fdCogY2Fpcm8pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNhaXJvLCAwKTsKKworICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gbmV3IEV3
a19QYWludF9Db250ZXh0OworICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0ID0gYWRvcHRQdHIo
bmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dChjYWlybykpOworICAgIGNvbnRleHQtPmNhaXJv
ID0gYWRvcHRSZWYoY2Fpcm9fcmVmZXJlbmNlKGNhaXJvKSk7CisgICAgY29udGV4dC0+aW1hZ2Ug
PSAwOworICAgIGNvbnRleHQtPnBpeGVscyA9IDA7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30K
KworRXdrX1BhaW50X0NvbnRleHQqIGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KEV2
YXNfT2JqZWN0KiBpbWFnZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
aW1hZ2UsIDApOworCisgICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OworICAgIHVpbnQ4X3Qq
IHBpeGVscyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihldmFzX29iamVjdF9pbWFnZV9kYXRhX2dl
dChpbWFnZSwgdHJ1ZSkpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGltYWdlLCAm
d2lkdGgsICZoZWlnaHQpOworCisgICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tf
cGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHBpeGVscywgd2lkdGgsIGhlaWdodCwg
RVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4KTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgICBj
b250ZXh0LT5waXhlbHMgPSBwaXhlbHM7CisgICAgICAgIGNvbnRleHQtPmltYWdlID0gaW1hZ2U7
CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK0V3a19QYWludF9Db250ZXh0KiBl
d2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHVpbnQ4X3QqIHBpeGVscywgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgY29sb3JTcGFjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocGl4ZWxzLCAwKTsKKworICAgIE93blB0cjxFd2tfUGFpbnRfQ29u
dGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBFd2tfUGFpbnRfQ29udGV4dCk7CisgICAgY29u
dGV4dC0+cGl4ZWxzID0gcGl4ZWxzOworICAgIGNvbnRleHQtPmltYWdlID0gMDsKKworICAgIGNh
aXJvX2Zvcm1hdF90IGZvcm1hdDsKKyAgICBpbnQgc3RyaWRlOworICAgIHN3aXRjaCAoY29sb3JT
cGFjZSkgeworICAgIGNhc2UgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4OgorICAgICAgICBzdHJp
ZGUgPSB3aWR0aCAqIDQ7CisgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRVZBU19DT0xPUlNQQUNFX1JHQjU2NV9BNVA6CisgICAg
ICAgIHN0cmlkZSA9IHdpZHRoICogMjsKKyAgICAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX1JH
QjE2XzU2NTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgRVJSKCJ1bmtu
b3duIGNvbG9yIHNwYWNlOiAlZCIsIGNvbG9yU3BhY2UpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBjb250ZXh0LT5zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEocGl4ZWxzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSkp
OworICAgIGNhaXJvX3N0YXR1c190IHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGNvbnRl
eHQtPnN1cmZhY2UuZ2V0KCkpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NF
U1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVk
eCVkOiAlcyIsIHdpZHRoLCBoZWlnaHQsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGNvbnRleHQtPmNhaXJvID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKGNvbnRleHQtPnN1cmZhY2UuZ2V0KCkpKTsKKyAgICBzdGF0dXMgPSBj
YWlyb19zdGF0dXMoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIGNhaXJv
IGZyb20gc3VyZmFjZSAlZHglZDogJXMiLCB3aWR0aCwgaGVpZ2h0LCBjYWlyb19zdGF0dXNfdG9f
c3RyaW5nKHN0YXR1cykpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250ZXh0
LT5ncmFwaGljQ29udGV4dCA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQo
Y29udGV4dC0+Y2Fpcm8uZ2V0KCkpKTsKKworICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKS5s
ZWFrUHRyKCk7Cit9CisKK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfZnJlZShFd2tfUGFpbnRfQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0
KTsKKworICAgIGlmIChjb250ZXh0LT5pbWFnZSAmJiBjb250ZXh0LT5waXhlbHMpCisgICAgICAg
IC8vIERlY3JlYXNlIHJlZmNvdW50IGluc2lkZSBpbWFnZSBvYmplY3QuCisgICAgICAgIGV2YXNf
b2JqZWN0X2ltYWdlX2RhdGFfc2V0KGNvbnRleHQtPmltYWdlLCBjb250ZXh0LT5waXhlbHMpOwor
ICAgIGRlbGV0ZSBjb250ZXh0OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NhdmUoRXdr
X1BhaW50X0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oY29udGV4dCk7CisKKyAgICBjYWlyb19zYXZlKGNvbnRleHQtPmNhaXJvLmdldCgpKTsKKyAg
ICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+c2F2ZSgpOworfQorCit2b2lkIGV3a19wYWludF9j
b250ZXh0X3Jlc3RvcmUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29u
dGV4dC0+cmVzdG9yZSgpOworICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dC0+Y2Fpcm8uZ2V0KCkp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X2NsaXAoRXdrX1BhaW50X0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFy
ZWEpOworCisgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPmNsaXAoV2ViQ29yZTo6SW50UmVj
dCgqYXJlYSkpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NjYWxlKEV3a19QYWludF9D
b250ZXh0KiBjb250ZXh0LCBmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxlWSkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKKworICAgIGNvbnRleHQtPmdyYXBoaWND
b250ZXh0LT5zY2FsZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGVYLCBzY2FsZVkpKTsKK30KKwor
dm9pZCBld2tfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
Y29udGV4dCk7CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKHgsIHkp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50KEV3a19QYWludF9Db250ZXh0KiBj
b250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBh
cmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHZpZXcpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGFyZWEpOworCisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KCphcmVhKTsKKworICAg
IGlmICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCisgICAgICAgIGNvbnRleHQtPmdyYXBoaWNDb250
ZXh0LT5jbGVhclJlY3QocmVjdCk7CisgICAgdmlldy0+cGFpbnQoY29udGV4dC0+Z3JhcGhpY0Nv
bnRleHQuZ2V0KCksIHJlY3QpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50X2Nv
bnRlbnRzKEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZp
ZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHZpZXcp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0KCphcmVhKTsKKworICAgIGlmICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCisg
ICAgICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7CisgICAgdmll
dy0+cGFpbnRDb250ZW50cyhjb250ZXh0LT5ncmFwaGljQ29udGV4dC5nZXQoKSwgcmVjdCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3BhaW50X2NvbnRleHRfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYThhY2FkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUu
aApAQCAtMCwwICsxLDIxMCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19wYWludF9jb250ZXh0X3By
aXZhdGUuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBwYWludCBjb250ZXh0IEFQSS4KKyAq
LworCisjaWZuZGVmIGV3a19wYWludF9jb250ZXh0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfcGFp
bnRfY29udGV4dF9wcml2YXRlX2gKKworI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSA8
RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBAYSBfRXdrX1BhaW50X0NvbnRleHQuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1BhaW50X0NvbnRl
eHQgRXdrX1BhaW50X0NvbnRleHQ7CisKKy8qKgorICogQGJyaWVmIFN0cnVjdHVyZSB0aGF0IGtl
ZXBzIHRoZSBwYWludCBjb250ZXh0LgorICoKKyAqIEBpbnRlcm5hbAorICoKKyAqIEBub3RlIFRo
aXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdh
bnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLworc3Ry
dWN0IF9Fd2tfUGFpbnRfQ29udGV4dCB7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dD4gZ3JhcGhpY0NvbnRleHQ7CisgICAgUmVmUHRyPGNhaXJvX3Q+IGNhaXJvOworICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2U7IC8qKjwgc3VyZmFjZSB1c2VkIHRvIGNyZWF0
ZSBjYWlybyBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCogaW1hZ2U7IC8qKjwgaW1hZ2UgdXNl
ZCB0byBjcmVhdGUgY2Fpcm8gc3VyZmFjZSAqLworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsczsg
LyoqPCBwaXhlbHMgZm9ybSBpbWFnZSAqLworfTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IHBh
aW50IGNvbnRleHQgdXNpbmcgYSBjYWlybyBhcyBvdXRwdXQuCisgKgorICogQHBhcmFtIGNhaXJv
IGNvbnRleHQgdG8gdXNlIGFzIHBhaW50IGRlc3RpbmF0aW9uLCBhIG5ldworICogICAgICAgIHJl
ZmVyZW5jZSBpcyB0YWtlbiwgc28gaXQncyBzYWZlIHRvIGNhbGwgQGMgY2Fpcm9fZGVzdHJveSgp
CisgKiAgICAgICAgYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zLgorICoKKyAqIEByZXR1cm4g
YSBuZXdseSBhbGxvY2F0ZWQgaW5zdGFuY2Ugb2YgQGMgRXdrX1BhaW50X0NvbnRleHQgb24gc3Vj
Y2VzcywKKyAqICAgICAgICAgb3IgQGMgMCBvbiBmYWlsdXJlCisgKgorICogQG5vdGUgVGhpcyBp
cyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAor
ICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCitFQVBJIEV3
a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9uZXcoY2Fpcm9fdCogY2Fpcm8pOwor
CisvKioKKyAqIENyZWF0ZXMgYSBuZXcgcGFpbnQgY29udGV4dCB1c2luZyBhbiBpbWFnZSBhcyBv
dXRwdXQuCisgKgorICogQHBhcmFtIGltYWdlIHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbgor
ICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW5zdGFuY2Ugb2YgQGMgRXdrX1BhaW50
X0NvbnRleHQgb24gc3VjY2VzcywKKyAqICAgICAgICAgb3IgQGMgMCBvbiBmYWlsdXJlCisgKgor
ICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFz
c2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3Jl
LgorICovCitFd2tfUGFpbnRfQ29udGV4dCogZXdrX3BhaW50X2NvbnRleHRfZnJvbV9pbWFnZV9u
ZXcoRXZhc19PYmplY3QqIGltYWdlKTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IHBhaW50IGNv
bnRleHQgdXNpbmcgYW4gaW1hZ2UgYXMgb3V0cHV0LgorICoKKyAqIEBwYXJhbSBwaXhlbCBwb2lu
dGVyIHRvIHBpeGVsIGJ1ZmZlcgorICogQHBhcmFtIHdpZHRoIHNpemUgb2YgcGl4ZWwgYnVmZmVy
CisgKiBAcGFyYW0gaGVpZ2h0IHNpemUgb2YgcGl4ZWwgYnVmZmVyCisgKiBAcGFyYW0gY29sb3JT
cGFjZSBFdmFzX0NvbG9yc3BhY2Ugb2YgcGl4ZWwgYnVmZmVyCisgKgorICogQHJldHVybiBhIG5l
d2x5IGFsbG9jYXRlZCBpbnN0YW5jZSBvZiBAYyBFd2tfUGFpbnRfQ29udGV4dCBvbiBzdWNjZXNz
LAorICogICAgICAgICBvciBAYyAwIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5v
dCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAg
ICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK0V3a19QYWludF9D
b250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHVpbnQ4X3QqIHBp
eGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgY29sb3JTcGFjZSk7CisKKy8qKgorICog
RGVzdHJveXMgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCB0aGUgcGFpbnQgY29udGV4dC4KKyAqCisg
KiBAcGFyYW0gY29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byBkZXN0cm95LCBtdXN0IEBiIG5v
dCBiZSBAYyAwCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBq
dXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93
biBiYWNraW5nIHN0b3JlLgorICovCitFQVBJIHZvaWQgZXdrX3BhaW50X2NvbnRleHRfZnJlZShF
d2tfUGFpbnRfQ29udGV4dCogY29udGV4dCk7CisKKy8qKgorICogU2F2ZXMgKHB1c2ggdG8gc3Rh
Y2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUg
cGFpbnQgY29udGV4dCB0byBzYXZlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQHNlZSBl
d2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKCkKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3Ig
Z2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0
byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdrX3BhaW50X2Nv
bnRleHRfc2F2ZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCk7CisKKy8qKgorICogUmVzdG9y
ZXMgKHBvcCBmcm9tIHN0YWNrKSB0aGUgcGFpbnQgY29udGV4dCBzdGF0dXMuCisgKgorICogQHBh
cmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcmVzdG9yZSwgbXVzdCBAYiBub3QgYmUg
QGMgMAorICoKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfc2F2ZSgpCisgKgorICogQG5vdGUg
VGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQg
d2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCit2
b2lkIGV3a19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQp
OworCisvKioKKyAqIENsaXBzIHRoZSBwYWludCBjb250ZXh0IGRyYXdpbmdzIHRvIHRoZSBnaXZl
biBhcmVhLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IHRoZSBwYWludCBjb250ZXh0IHRvIGNsaXAs
IG11c3QgQGIgbm90IGJlIEBjIDAKKyAqIEBwYXJhbSBhcmVhIGNsaXAgYXJlYSB0byB1c2UsIG11
c3QgQGIgbm90IGJlIEBjIDAKKyAqCisgKiBAc2VlIGV3a19wYWludF9jb250ZXh0X3NhdmUoKQor
ICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKCkKKyAqCisgKiBAbm90ZSBUaGlzIGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Cisg
KiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdr
X3BhaW50X2NvbnRleHRfY2xpcChFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWlu
YV9SZWN0YW5nbGUqIGFyZWEpOworCisvKioKKyAqIFNjYWxlcyB0aGUgY29udGVudHMgYnkgdGhl
IGdpdmVuIGZhY3RvcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBhcHBsaWVzIGEgc2NhbGluZyB0
cmFuc2Zvcm1hdGlvbiB1c2luZyBDYWlyby4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFp
bnQgY29udGV4dCB0byBzY2FsZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBhcmFtIHNjYWxl
X3ggdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIFggZGltZW5zaW9uCisgKiBAcGFyYW0gc2NhbGVf
eSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWSBkaW1lbnNpb24KKyAqLwordm9pZCBld2tfcGFp
bnRfY29udGV4dF9zY2FsZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2NhbGVf
eCwgZmxvYXQgc2NhbGVfeSk7CisKKy8qKgorICogUGVyZm9ybXMgYSB0cmFuc2xhdGlvbiBvZiB0
aGUgb3JpZ2luIGNvb3JkaW5hdGVzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbW92ZXMgdGhlIG9y
aWdpbiBjb29yZGluYXRlcyBieSBAYSB4IGFuZCBAYSB5IHBpeGVscy4KKyAqCisgKiBAcGFyYW0g
Y29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byB0cmFuc2xhdGUsIG11c3QgQGIgbm90IGJlIEBj
IDAKKyAqIEBwYXJhbSB4IGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNsYXRlIGluIHRoZSBYIGRp
bWVuc2lvbgorICogQHBhcmFtIHkgYW1vdW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUgaW4gdGhl
IFkgZGltZW5zaW9uCisgKi8KK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19Q
YWludF9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5KTsKKworLyoqCisgKiBQYWlu
dHMgdGhlIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0
aGUgcGFpbnQgY29udGV4dCB0byBwYWludCwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBhcmFt
IHZpZXcgdGhlIHZpZXcgdG8gcGFpbnQKKyAqIEBwYXJhbSBhcmVhIHRoZSBwYWludCBhcmVhIHRv
IHVzZSwgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgdmlld3BvcnQsCisgKiAg
ICAgICAgdGh1cyAic2Nyb2xsZWQiLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQG5vdGUg
T25lIG1heSB1c2UgY2Fpcm8gZnVuY3Rpb25zIG9uIHRoZSBjYWlybyBjb250ZXh0IHRvCisgKiAg
ICAgICB0cmFuc2xhdGUsIHNjYWxlIG9yIGFueSBtb2RpZmljYXRpb24gdGhhdCBtYXkgZml0IGhp
cyBkZXNpcmVzLgorICoKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfY2xpcCgpCisgKiBAc2Vl
IGV3a19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKCkKKyAqCisgKiBAbm90ZSBUaGlzIGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Cisg
KiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdr
X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIFdlYkNvcmU6
OkZyYW1lVmlldyogdmlldywgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpOworCisvKioKKyAq
IFBhaW50cyBqdXN0IGNvbnRlbnRzIHVzaW5nIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KKyAq
CisgKiBVbmxpa2UgZXdrX3BhaW50X2NvbnRleHRfcGFpbnQoKSwgdGhpcyBmdW5jdGlvbiBwYWlu
dCBqdXN0CisgKiBiYXJlIGNvbnRlbnRzIGFuZCBpZ25vcmVzIGFueSBzY3JvbGxpbmcsIHNjcm9s
bGJhcnMgYW5kIGV4dHJhcy4gSXQKKyAqIHdpbGwgd2FsayB0aGUgcmVuZGVyaW5nIHRyZWUgYW5k
IHBhaW50IGNvbnRlbnRzIGluc2lkZSB0aGUgZ2l2ZW4KKyAqIGFyZWEgdG8gdGhlIGNhaXJvIGNv
bnRleHQgc3BlY2lmaWVkIGluIEBhIGNvbnRleHQuCisgKgorICogQHBhcmFtIGNvbnRleHQgdGhl
IHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJlIEBjIDAuCisgKiBAcGFyYW0g
dmlldyB0aGUgdmlldyB0byBwYWludAorICogQHBhcmFtIGFyZWEgdGhlIHBhaW50IGFyZWEgdG8g
dXNlLCBjb29yZGluYXRlcyBhcmUgYWJzb2x1dGUgdG8gcGFnZSwgbXVzdCBAYiBub3QgYmUgQGMg
MAorICoKKyAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8g
Y29udGV4dCB0bworICogICAgICAgdHJhbnNsYXRlLCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9u
IHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAqCisgKiBAc2VlIGV3a19wYWludF9jb250ZXh0
X2NsaXAoKQorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9wYWludCgpCisgKgorICogQG5vdGUg
VGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQg
d2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCit2
b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19QYWludF9Db250ZXh0KiBj
b250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBh
cmVhKTsKKworI2VuZGlmIC8vIGV3a19wYWludF9jb250ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCBiNWM1MWMwLi41ZmNlOTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldpZGdldC5o
IgogI2luY2x1ZGUgImV3a19oaXN0b3J5LmgiCiAjaW5jbHVkZSAiZXdrX2pzLmgiCisjaW5jbHVk
ZSAiZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAj
aW5jbHVkZSA8RXZhcy5oPgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTE3
Niw2ICsxNzcsOSBAQCB2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5n
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19mb2N1c19jYW5fY3ljbGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb2N1c19EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIHZv
aWQgZXdrX3ZpZXdfZnJhbWVfdmlld19jcmVhdGlvbl9ub3RpZnkoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpOwogCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIHByaXYsIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBFaW5hX1JlY3Rhbmds
ZSogYXJlYSk7CitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYsIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBF
aW5hX1JlY3RhbmdsZSogYXJlYSk7CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
IHZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhcihFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaAppbmRleCA5ZTVhMDQ4Li5kMGJhYTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaApAQCAt
NDMsNyArNDMsNiBAQCBjb25zdCBmbG9hdCB6b29tU3RlcE1pbmltdW0gPSAwLjAxOwogI2RlZmlu
ZSBST1VOREVEX1pPT00oU0laRSwgWk9PTSkgKChmbG9hdCkoU0laRSkgLyAoZmxvYXQpKCgoaW50
KXJvdW5kZigoU0laRSkgLyAoWk9PTSkpKSkpCiAKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVk
ZSA8Y2Fpcm8uaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlICAgICAgICAgICAgICAgICAg
ICAgRXdrX1RpbGU7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGVfU3RhdHMgICAgICAgICAgICAg
ICBFd2tfVGlsZV9TdGF0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDc5NTJi
YmMuLjlmYjRlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNTYsNiArNTYs
NyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgogI2lu
Y2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNs
dWRlIDxFaW5hLmg+CkBAIC0yNjUxLDE1NCArMjY1Miw5NiBAQCB2b2lkIGV3a192aWV3X3Njcm9s
bHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgX2V3a192aWV3
X3Njcm9sbHNfZmx1c2gocHJpdik7CiB9CiAKKy8qIGludGVybmFsIG1ldGhvZHMgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgotICogQGJy
aWVmIFN0cnVjdHVyZSB0aGF0IGtlZXBzIHRoZSBwYWludCBjb250ZXh0LgotICoKICAqIEBpbnRl
cm5hbAorICogUGFpbnRzIHVzaW5nIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQgdGhlIGdpdmVuIGFy
ZWEuCisgKgorICogVGhpcyB1c2VzIHZpZXdwb3J0IHJlbGF0aXZlIGFyZWEgYW5kIHdpbGwgYWxz
byBoYW5kbGUgc2Nyb2xsYmFycworICogYW5kIG90aGVyIGV4dHJhIGVsZW1lbnRzLiBTZWUgZXdr
X3ZpZXdfcGFpbnRfY29udGVudHMoKSBmb3IgdGhlCisgKiBhbHRlcm5hdGl2ZSBmdW5jdGlvbi4K
KyAqCisgKiBAcGFyYW0gcHJpdiB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRo
ZSB2aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UKKyAqIEBwYXJhbSBjciB0aGUgY2Fpcm8gY29u
dGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24sIGl0cyBzdGF0ZSB3aWxsCisgKiAgICAg
ICAgYmUgc2F2ZWQgYmVmb3JlIG9wZXJhdGlvbiBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcworICog
QHBhcmFtIGFyZWEgdmlld3BvcnQgcmVsYXRpdmUgZ2VvbWV0cnkgdG8gcGFpbnQKKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZQorICoKKyAqIEBub3RlIFRoaXMgaXMgYW4gZWFzeSB0byB1c2UgdmVyc2lvbiwgYnV0IGludGVy
bmFsIHN0cnVjdHVyZXMgYXJlCisgKiAgICAgICBhbHdheXMgY3JlYXRlZCwgdGhlbiBncmFwaGlj
cyBjb250ZXh0IGlzIGNsaXBwZWQsIHRoZW4KKyAqICAgICAgIHBhaW50ZWQsIHJlc3RvcmVkIGFu
ZCBkZXN0cm95ZWQuIFRoaXMgbWlnaHQgbm90IGJlIG9wdGltdW0sCisgKiAgICAgICBzbyB1c2lu
ZyBAYSBFd2tfUGFpbnRfQ29udGV4dCBtYXkgYmUgYSBiZXR0ZXIgc29sdXRpb25zCisgKiAgICAg
ICBmb3IgbGFyZ2UgbnVtYmVyIG9mIG9wZXJhdGlvbnMuCisgKgorICogQHNlZSBld2tfdmlld19w
YWludF9jb250ZW50cygpCisgKiBAc2VlIGV3a19wYWludF9jb250ZXh0X3BhaW50KCkKICAqCiAg
KiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNz
ZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUu
CiAgKi8KLXN0cnVjdCBfRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCB7Ci0gICAgV2ViQ29yZTo6RnJh
bWVWaWV3KiB2aWV3OwotICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBo
aWNDb250ZXh0OwotICAgIFJlZlB0cjxjYWlyb190PiBjYWlybzsKLX07Ci0KLUV3a19WaWV3X1Bh
aW50X0NvbnRleHQqIGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgY2Fpcm9fdCogY2Fpcm8pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHByaXYsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChj
YWlybywgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1haW5G
cmFtZSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1haW5G
cmFtZS0+dmlldygpLCAwKTsKLQotICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQg
PSBuZXcgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dDsKLSAgICBjb250ZXh0LT52aWV3ID0gcHJpdi0+
bWFpbkZyYW1lLT52aWV3KCk7Ci0gICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQgPSBhZG9wdFB0
cihuZXcgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KGNhaXJvKSk7Ci0gICAgY29udGV4dC0+Y2Fp
cm8gPSBhZG9wdFJlZihjYWlyb19yZWZlcmVuY2UoY2Fpcm8pKTsKLQotICAgIHJldHVybiBjb250
ZXh0OwotfQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWlu
dF9Db250ZXh0KiBjb250ZXh0KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNv
bnRleHQpOwotCi0gICAgZGVsZXRlIGNvbnRleHQ7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0KLSAgICBjYWlyb19zYXZlKGNvbnRl
eHQtPmNhaXJvLmdldCgpKTsKLSAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+c2F2ZSgpOwot
fQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9D
b250ZXh0KiBjb250ZXh0KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRl
eHQpOwotCi0gICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPnJlc3RvcmUoKTsKLSAgICBjYWly
b19yZXN0b3JlKGNvbnRleHQtPmNhaXJvLmdldCgpKTsKLX0KLQotdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWlu
YV9SZWN0YW5nbGUqIGFyZWEpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29u
dGV4dCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7Ci0gICAgY29udGV4
dC0+Z3JhcGhpY0NvbnRleHQtPmNsaXAoV2ViQ29yZTo6SW50UmVjdCgqYXJlYSkpOwotfQotCi12
b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCi17Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
YXJlYSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoKmFyZWEpOwotCi0gICAgaWYgKGNv
bnRleHQtPnZpZXctPmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAgY29udGV4dC0+Z3JhcGhpY0Nv
bnRleHQtPmNsZWFyUmVjdChyZWN0KTsKLSAgICBjb250ZXh0LT52aWV3LT5wYWludChjb250ZXh0
LT5ncmFwaGljQ29udGV4dC5nZXQoKSwgcmVjdCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihjb250ZXh0KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKLQot
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgqYXJlYSk7Ci0KLSAgICBpZiAoY29udGV4dC0+dmll
dy0+aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+Y2xl
YXJSZWN0KHJlY3QpOwotCi0gICAgY29udGV4dC0+dmlldy0+cGFpbnRDb250ZW50cyhjb250ZXh0
LT5ncmFwaGljQ29udGV4dC5nZXQoKSwgcmVjdCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9zY2FsZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzY2Fs
ZVgsIGZsb2F0IHNjYWxlWSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250
ZXh0KTsKLQotICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5zY2FsZShXZWJDb3JlOjpGbG9h
dFNpemUoc2NhbGVYLCBzY2FsZVkpKTsKLX0KLQotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOwotCi0gICAg
Y29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPnRyYW5zbGF0ZSh4LCB5KTsKLX0KLQotRWluYV9Cb29s
IGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3Is
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQorRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChwcml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGNyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQs
IGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJlYSwgZmFsc2Up
OwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5GcmFtZS0+dmlldygp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAg
ICBpZiAodmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsK
LSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNyKTsKLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QoKmFyZWEpOwotCi0gICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAgICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsK
LSAgICBpZiAodmlldy0+aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBncmFwaGljc0NvbnRleHQu
Y2xlYXJSZWN0KHJlY3QpOwotICAgIHZpZXctPnBhaW50KCZncmFwaGljc0NvbnRleHQsIHJlY3Qp
OwotICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7
CisKKyAgICBld2tfcGFpbnRfY29udGV4dF9zYXZlKGNvbnRleHQpOworICAgIGV3a19wYWludF9j
b250ZXh0X2NsaXAoY29udGV4dCwgYXJlYSk7CisgICAgZXdrX3BhaW50X2NvbnRleHRfcGFpbnQo
Y29udGV4dCwgdmlldywgYXJlYSk7CisgICAgZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZShjb250
ZXh0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRf
Y29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3Qg
RWluYV9SZWN0YW5nbGUqIGFyZWEpCisvKioKKyAqIEBpbnRlcm5hbAorICogUGFpbnRzIGp1c3Qg
Y29udGVudHMgdXNpbmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0aGUgZ2l2ZW4gYXJlYS4KKyAq
CisgKiBUaGlzIHVzZXMgYWJzb2x1dGUgY29vcmRpbmF0ZXMgZm9yIGFyZWEgYW5kIHdpbGwganVz
dCBoYW5kbGUKKyAqIGNvbnRlbnRzLCBubyBzY3JvbGxiYXJzIG9yIGV4dHJhcy4gU2VlIGV3a192
aWV3X3BhaW50KCkgZm9yIHRoZQorICogYWx0ZXJuYXRpdmUgc29sdXRpb24uCisgKgorICogQHBh
cmFtIHByaXYgdGhlIHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0byB1
c2UgYXMgcGFpbnQgc291cmNlCisgKiBAcGFyYW0gY3IgdGhlIGNhaXJvIGNvbnRleHQgdG8gdXNl
IGFzIHBhaW50IGRlc3RpbmF0aW9uLCBpdHMgc3RhdGUgd2lsbAorICogICAgICAgIGJlIHNhdmVk
IGJlZm9yZSBvcGVyYXRpb24gYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMKKyAqIEBwYXJhbSBhcmVh
IGFic29sdXRlIGdlb21ldHJ5IHRvIHBhaW50CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlz
IGlzIGFuIGVhc3kgdG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZQor
ICogICAgICAgYWx3YXlzIGNyZWF0ZWQsIHRoZW4gZ3JhcGhpY3MgY29udGV4dCBpcyBjbGlwcGVk
LCB0aGVuCisgKiAgICAgICBwYWludGVkLCByZXN0b3JlZCBhbmQgZGVzdHJveWVkLiBUaGlzIG1p
Z2h0IG5vdCBiZSBvcHRpbXVtLAorICogICAgICAgc28gdXNpbmcgQGEgRXdrX1BhaW50X0NvbnRl
eHQgbWF5IGJlIGEgYmV0dGVyIHNvbHV0aW9ucworICogICAgICAgZm9yIGxhcmdlIG51bWJlciBv
ZiBvcGVyYXRpb25zLgorICoKKyAqIEBzZWUgZXdrX3ZpZXdfcGFpbnQoKQorICogQHNlZSBld2tf
cGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cygpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3Qg
Zm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAg
ICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFd2tfUGFp
bnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIGZhbHNlKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoY29udGV4dCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChhcmVhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0g
cHJpdi0+bWFpbkZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHZpZXcsIGZhbHNlKTsKIAotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCBncmFwaGlj
c0NvbnRleHQoY3IpOwotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgqYXJlYSk7Ci0KLSAgICBj
YWlyb19zYXZlKGNyKTsKLSAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgIGdyYXBoaWNz
Q29udGV4dC5jbGlwKHJlY3QpOwotICAgIGlmICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCi0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclJlY3QocmVjdCk7Ci0gICAgdmlldy0+cGFpbnRDb250
ZW50cygmZ3JhcGhpY3NDb250ZXh0LCAgcmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnJlc3Rv
cmUoKTsKLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9zYXZl
KGNvbnRleHQpOworICAgIGV3a19wYWludF9jb250ZXh0X2NsaXAoY29udGV4dCwgYXJlYSk7Cisg
ICAgZXdrX3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoY29udGV4dCwgdmlldywgYXJlYSk7
CisgICAgZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIAogICAgIHJldHVybiB0
cnVlOwogfQogCi0KLS8qIGludGVybmFsIG1ldGhvZHMgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgogICogQGludGVybmFsCiAgKiBSZXBv
cnRzIHRoZSB2aWV3IGlzIHJlYWR5IHRvIGJlIGRpc3BsYXllZCBhcyBhbGwgZWxlbWVudHMgYXJl
IGFyZWFkeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggYmJiNWM4My4uZDU4NTAyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTIwOTUsMTkxICsyMDk1LDYgQEAgRUFQSSBF
d2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7CiAgKi8KIEVBUEkgdm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QpOwogCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3
a19WaWV3X1BhaW50X0NvbnRleHQuCi10eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUGFpbnRfQ29u
dGV4dCBFd2tfVmlld19QYWludF9Db250ZXh0OwotCi0vKioKLSAqIENyZWF0ZXMgYSBuZXcgcGFp
bnQgY29udGV4dCB1c2luZyB0aGUgdmlldyBhcyBzb3VyY2UgYW5kIGNhaXJvIGFzIG91dHB1dC4K
LSAqCi0gKiBAcGFyYW0gcHJpdiB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRo
ZSB2aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UKLSAqIEBwYXJhbSBjciBjYWlybyBjb250ZXh0
IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbiwgYSBuZXcKLSAqICAgICAgICByZWZlcmVuY2Ug
aXMgdGFrZW4sIHNvIGl0J3Mgc2FmZSB0byBjYWxsIEBjIGNhaXJvX2Rlc3Ryb3koKQotICogICAg
ICAgIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KLSAqCi0gKiBAcmV0dXJuIGEgbmV3bHkg
YWxsb2NhdGVkIGluc3RhbmNlIG9mIEBjIEV3a19WaWV3X1BhaW50X0NvbnRleHQgb24gc3VjY2Vz
cywKLSAqICAgICAgICAgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKgotICogQG5vdGUgVGhpcyBpcyBu
b3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICog
ICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIEV3a19W
aWV3X1BhaW50X0NvbnRleHQgKmV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1By
aXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IpOwotCi0vKioKLSAqIERlc3Ryb3lzIHRoZSBw
cmV2aW91c2x5IGNyZWF0ZWQgdGhlIHBhaW50IGNvbnRleHQuCi0gKgotICogQHBhcmFtIGN0eHQg
dGhlIHBhaW50IGNvbnRleHQgdG8gZGVzdHJveSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICoKLSAq
IEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3Nl
cyB0aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4K
LSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWlu
dF9Db250ZXh0ICpjdHh0KTsKLQotLyoqCi0gKiBTYXZlcyAocHVzaCB0byBzdGFjaykgdGhlIHBh
aW50IGNvbnRleHQgc3RhdHVzLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0
IHRvIHNhdmUsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAc2VlIGV3a192aWV3X3BhaW50
X2NvbnRleHRfcmVzdG9yZSgpCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwg
dXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5l
IHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpOwotCi0vKioKLSAqIFJl
c3RvcmVzIChwb3AgZnJvbSBzdGFjaykgdGhlIHBhaW50IGNvbnRleHQgc3RhdHVzLgotICoKLSAq
IEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIHJlc3RvcmUsIG11c3QgQGIgbm90IGJl
IEBjIDAKLSAqCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSgpCi0gKgotICog
QG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2Vz
IHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgot
ICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQgKmN0eHQpOwotCi0vKioKLSAqIENsaXBzIHRoZSBwYWludCBjb250ZXh0IGRy
YXdpbmdzIHRvIHRoZSBnaXZlbiBhcmVhLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBj
b250ZXh0IHRvIGNsaXAsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqIEBwYXJhbSBhcmVhIGNsaXAg
YXJlYSB0byB1c2UsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAc2VlIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfc2F2ZSgpCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9y
ZSgpCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZv
ciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNr
aW5nIHN0b3JlLgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKEV3
a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsK
LQotLyoqCi0gKiBQYWludHMgdGhlIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KLSAqCi0gKiBA
cGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBwYWludCwgbXVzdCBAYiBub3QgYmUgQGMg
MAotICogQHBhcmFtIGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBjb29yZGluYXRlcyBhcmUg
cmVsYXRpdmUgdG8gY3VycmVudCB2aWV3cG9ydCwKLSAqICAgICAgICB0aHVzICJzY3JvbGxlZCIs
IG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAbm90ZSBPbmUgbWF5IHVzZSBjYWlybyBmdW5j
dGlvbnMgb24gdGhlIGNhaXJvIGNvbnRleHQgdG8KLSAqICAgICAgIHRyYW5zbGF0ZSwgc2NhbGUg
b3IgYW55IG1vZGlmaWNhdGlvbiB0aGF0IG1heSBmaXQgaGlzIGRlc2lyZXMuCi0gKgotICogQHNl
ZSBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoKQotICogQHNlZSBld2tfdmlld19wYWludF9j
b250ZXh0X3BhaW50X2NvbnRlbnRzKCkKLSAqCi0gKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2Vu
ZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Ci0gKiAgICAgICB0byBk
ZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19w
YWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVp
bmFfUmVjdGFuZ2xlICphcmVhKTsKLQotLyoqCi0gKiBQYWludHMganVzdCBjb250ZW50cyB1c2lu
ZyBjb250ZXh0IHVzaW5nIGdpdmVuIGFyZWEuCi0gKgotICogVW5saWtlIGV3a192aWV3X3BhaW50
X2NvbnRleHRfcGFpbnQoKSwgdGhpcyBmdW5jdGlvbiBwYWludCBqdXN0Ci0gKiBiYXJlIGNvbnRl
bnRzIGFuZCBpZ25vcmVzIGFueSBzY3JvbGxpbmcsIHNjcm9sbGJhcnMgYW5kIGV4dHJhcy4gSXQK
LSAqIHdpbGwgd2FsayB0aGUgcmVuZGVyaW5nIHRyZWUgYW5kIHBhaW50IGNvbnRlbnRzIGluc2lk
ZSB0aGUgZ2l2ZW4KLSAqIGFyZWEgdG8gdGhlIGNhaXJvIGNvbnRleHQgc3BlY2lmaWVkIGluIEBh
IGN0eHQuCi0gKgotICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11
c3QgQGIgbm90IGJlIEBjIDAuCi0gKiBAcGFyYW0gYXJlYSB0aGUgcGFpbnQgYXJlYSB0byB1c2Us
IGNvb3JkaW5hdGVzIGFyZSBhYnNvbHV0ZSB0byBwYWdlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0g
KgotICogQG5vdGUgT25lIG1heSB1c2UgY2Fpcm8gZnVuY3Rpb25zIG9uIHRoZSBjYWlybyBjb250
ZXh0IHRvCi0gKiAgICAgICB0cmFuc2xhdGUsIHNjYWxlIG9yIGFueSBtb2RpZmljYXRpb24gdGhh
dCBtYXkgZml0IGhpcyBkZXNpcmVzLgotICoKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9jbGlwKCkKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludCgpCi0gKgotICog
QG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2Vz
IHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgot
ICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tf
Vmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7Ci0K
LS8qKgotICogU2NhbGVzIHRoZSBjb250ZW50cyBieSB0aGUgZ2l2ZW4gZmFjdG9ycy4KLSAqCi0g
KiBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgYSBzY2FsaW5nIHRyYW5zZm9ybWF0aW9uIHVzaW5nIENh
aXJvLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIHNjYWxlLCBtdXN0
IEBiIG5vdCBiZSBAYyAwCi0gKiBAcGFyYW0gc2NhbGVfeCB0aGUgc2NhbGUgZmFjdG9yIGZvciB0
aGUgWCBkaW1lbnNpb24KLSAqIEBwYXJhbSBzY2FsZV95IHRoZSBzY2FsZSBmYWN0b3IgZm9yIHRo
ZSBZIGRpbWVuc2lvbgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zY2Fs
ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBmbG9hdCBzY2FsZV94LCBmbG9hdCBzY2Fs
ZV95KTsKLQotLyoqCi0gKiBQZXJmb3JtcyBhIHRyYW5zbGF0aW9uIG9mIHRoZSBvcmlnaW4gY29v
cmRpbmF0ZXMuCi0gKgotICogVGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3JpZ2luIGNvb3JkaW5h
dGVzIGJ5IEBhIHggYW5kIEBhIHkgcGl4ZWxzLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWlu
dCBjb250ZXh0IHRvIHRyYW5zbGF0ZSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICogQHBhcmFtIHgg
YW1vdW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUgaW4gdGhlIFggZGltZW5zaW9uCi0gKiBAcGFy
YW0geSBhbW91bnQgb2YgcGl4ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWSBkaW1lbnNpb24KLSAq
LwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQgKmN0eHQsIGZsb2F0IHgsIGZsb2F0IHkpOwotCi0vKioKLSAqIFBhaW50cyB1
c2luZyBnaXZlbiBncmFwaGljcyBjb250ZXh0IHRoZSBnaXZlbiBhcmVhLgotICoKLSAqIFRoaXMg
dXNlcyB2aWV3cG9ydCByZWxhdGl2ZSBhcmVhIGFuZCB3aWxsIGFsc28gaGFuZGxlIHNjcm9sbGJh
cnMKLSAqIGFuZCBvdGhlciBleHRyYSBlbGVtZW50cy4gU2VlIGV3a192aWV3X3BhaW50X2NvbnRl
bnRzKCkgZm9yIHRoZQotICogYWx0ZXJuYXRpdmUgZnVuY3Rpb24uCi0gKgotICogQHBhcmFtIHBy
aXYgdGhlIHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0byB1c2UgYXMg
cGFpbnQgc291cmNlCi0gKiBAcGFyYW0gY3IgdGhlIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBh
aW50IGRlc3RpbmF0aW9uLCBpdHMgc3RhdGUgd2lsbAotICogICAgICAgIGJlIHNhdmVkIGJlZm9y
ZSBvcGVyYXRpb24gYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMKLSAqIEBwYXJhbSBhcmVhIHZpZXdw
b3J0IHJlbGF0aXZlIGdlb21ldHJ5IHRvIHBhaW50Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKLSAqCi0gKiBAbm90ZSBU
aGlzIGlzIGFuIGVhc3kgdG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFy
ZQotICogICAgICAgYWx3YXlzIGNyZWF0ZWQsIHRoZW4gZ3JhcGhpY3MgY29udGV4dCBpcyBjbGlw
cGVkLCB0aGVuCi0gKiAgICAgICBwYWludGVkLCByZXN0b3JlZCBhbmQgZGVzdHJveWVkLiBUaGlz
IG1pZ2h0IG5vdCBiZSBvcHRpbXVtLAotICogICAgICAgc28gdXNpbmcgQGEgRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCBtYXkgYmUgYSBiZXR0ZXIgc29sdXRpb25zCi0gKiAgICAgICBmb3IgbGFyZ2Ug
bnVtYmVyIG9mIG9wZXJhdGlvbnMuCi0gKgotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZW50
cygpCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoKQotICoKLSAqIEBub3Rl
IFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0
IHdhbnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwot
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2
LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwotCi0vKioKLSAqIFBh
aW50cyBqdXN0IGNvbnRlbnRzIHVzaW5nIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQgdGhlIGdpdmVu
IGFyZWEuCi0gKgotICogVGhpcyB1c2VzIGFic29sdXRlIGNvb3JkaW5hdGVzIGZvciBhcmVhIGFu
ZCB3aWxsIGp1c3QgaGFuZGxlCi0gKiBjb250ZW50cywgbm8gc2Nyb2xsYmFycyBvciBleHRyYXMu
IFNlZSBld2tfdmlld19wYWludCgpIGZvciB0aGUKLSAqIGFsdGVybmF0aXZlIHNvbHV0aW9uLgot
ICoKLSAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgb2YgdGhl
IHZpZXcgdG8gdXNlIGFzIHBhaW50IHNvdXJjZQotICogQHBhcmFtIGNyIHRoZSBjYWlybyBjb250
ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbiwgaXRzIHN0YXRlIHdpbGwKLSAqICAgICAg
ICBiZSBzYXZlZCBiZWZvcmUgb3BlcmF0aW9uIGFuZCByZXN0b3JlZCBhZnRlcndhcmRzCi0gKiBA
cGFyYW0gYXJlYSBhYnNvbHV0ZSBnZW9tZXRyeSB0byBwYWludAotICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKgotICog
QG5vdGUgVGhpcyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9uLCBidXQgaW50ZXJuYWwgc3RydWN0
dXJlcyBhcmUKLSAqICAgICAgIGFsd2F5cyBjcmVhdGVkLCB0aGVuIGdyYXBoaWNzIGNvbnRleHQg
aXMgY2xpcHBlZCwgdGhlbgotICogICAgICAgcGFpbnRlZCwgcmVzdG9yZWQgYW5kIGRlc3Ryb3ll
ZC4gVGhpcyBtaWdodCBub3QgYmUgb3B0aW11bSwKLSAqICAgICAgIHNvIHVzaW5nIEBhIEV3a19W
aWV3X1BhaW50X0NvbnRleHQgbWF5IGJlIGEgYmV0dGVyIHNvbHV0aW9ucwotICogICAgICAgZm9y
IGxhcmdlIG51bWJlciBvZiBvcGVyYXRpb25zLgotICoKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnQo
KQotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKCkKLSAqCi0g
KiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNz
ZXMgdGhhdCB3YW50Ci0gKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUu
Ci0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1By
aXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVh
KTsKLQogLyoqCiAgKiBHZXRzIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSB2aWV3cG9ydCBtZXRhIHRh
Zy4KICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCmluZGV4IDFk
ZWNlMDYuLjRlNTRhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d19zaW5nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUu
Y3BwCkBAIC0yMTIsMTI1ICsyMTIsNzMgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWEKIAogc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewotICAgIEV3a19WaWV3X1BhaW50X0NvbnRl
eHQqIGNvbnRleHQ7Ci0gICAgRXZhc19Db29yZCBvdywgb2g7Ci0gICAgdm9pZCogcGl4ZWxzOwot
ICAgIEVpbmFfUmVjdGFuZ2xlKiByZWN0OwotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBwYWlu
dFJlcXVlc3Q7Ci0gICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdEVuZDsKLSAg
ICBFaW5hX1RpbGVyKiB0aWxlcjsKLSAgICBFaW5hX0l0ZXJhdG9yKiBpdGVyYXRvcjsKLSAgICBj
YWlyb19zdGF0dXNfdCBzdGF0dXM7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOwotICAg
IGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsKLSAgICBjYWlyb190KiBjYWlybzsKLSAgICBzaXplX3Qg
Y291bnQ7Ci0gICAgRWluYV9Cb29sIHJlc3VsdCA9IHRydWU7Ci0KICAgICBpZiAoc21hcnREYXRh
LT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA8IDAuMDAwMDEpIHsKICAgICAgICAgRXZhc19P
YmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzbWFydERhdGEtPmJhY2tpbmdfc3Rv
cmUpOwotICAgICAgICBFdmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQsIGNlbnRlcldpZHRoLCBjZW50
ZXJIZWlnaHQ7CisKICAgICAgICAgLy8gcmVzZXQgZWZmZWN0cyBvZiB6b29tX3dlYWtfc2V0KCkK
LSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQKLSAgICAgICAgICAgIChzbWFydERh
dGEtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHNtYXJ0RGF0YS0+dmlldy53LCBzbWFydERhdGEtPnZp
ZXcuaCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSwgMCwgMCwgc21hcnREYXRhLT52aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsK
ICAgICAgICAgZXZhc19vYmplY3RfbW92ZShjbGlwLCBzbWFydERhdGEtPnZpZXcueCwgc21hcnRE
YXRhLT52aWV3LnkpOwogCi0gICAgICAgIHdpZHRoID0gc21hcnREYXRhLT52aWV3Lnc7Ci0gICAg
ICAgIGhlaWdodCA9IHNtYXJ0RGF0YS0+dmlldy5oOworICAgICAgICBFdmFzX0Nvb3JkIHdpZHRo
ID0gc21hcnREYXRhLT52aWV3Lnc7CisgICAgICAgIEV2YXNfQ29vcmQgaGVpZ2h0ID0gc21hcnRE
YXRhLT52aWV3Lmg7CiAKKyAgICAgICAgRXZhc19Db29yZCBjZW50ZXJXaWR0aCwgY2VudGVySGVp
Z2h0OwogICAgICAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc21hcnREYXRhLT5tYWlu
X2ZyYW1lLCAmY2VudGVyV2lkdGgsICZjZW50ZXJIZWlnaHQpOwogICAgICAgICBpZiAod2lkdGgg
PiBjZW50ZXJXaWR0aCkKICAgICAgICAgICAgIHdpZHRoID0gY2VudGVyV2lkdGg7CisKICAgICAg
ICAgaWYgKGhlaWdodCA+IGNlbnRlckhlaWdodCkKICAgICAgICAgICAgIGhlaWdodCA9IGNlbnRl
ckhlaWdodDsKLSAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHdpZHRoLCBoZWlnaHQp
OwotICAgIH0KIAotICAgIHBpeGVscyA9IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KHNtYXJ0
RGF0YS0+YmFja2luZ19zdG9yZSwgMSk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9nZXQo
c21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAmb3csICZvaCk7Ci0gICAgZm9ybWF0ID0gQ0FJUk9f
Rk9STUFUX0FSR0IzMjsKLQotICAgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZV9mb3JfZGF0YQotICAgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihwaXhlbHMpLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKLSAgICBzdGF0dXMgPSBjYWlyb19z
dXJmYWNlX3N0YXR1cyhzdXJmYWNlKTsKLSAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19T
VUNDRVNTKSB7Ci0gICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBzdXJmYWNlIGZyb20gZGF0
YSAlZHglZDogJXMiLAotICAgICAgICAgICAgb3csIG9oLCBjYWlyb19zdGF0dXNfdG9fc3RyaW5n
KHN0YXR1cykpOwotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgZ290byBlcnJvcl9j
YWlyb19zdXJmYWNlOwotICAgIH0KLSAgICBjYWlybyA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsK
LSAgICBzdGF0dXMgPSBjYWlyb19zdGF0dXMoY2Fpcm8pOwotICAgIGlmIChzdGF0dXMgIT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIGNhaXJv
IGZyb20gc3VyZmFjZSAlZHglZDogJXMiLAotICAgICAgICAgICAgb3csIG9oLCBjYWlyb19zdGF0
dXNfdG9fc3RyaW5nKHN0YXR1cykpOwotICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAg
Z290byBlcnJvcl9jYWlybzsKKyAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHdpZHRo
LCBoZWlnaHQpOwogICAgIH0KIAotICAgIGNvbnRleHQgPSBld2tfdmlld19wYWludF9jb250ZXh0
X25ldyhzbWFydERhdGEtPl9wcml2LCBjYWlybyk7Ci0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAg
ICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBwYWludCBjb250ZXh0Iik7Ci0gICAgICAgIHJlc3Vs
dCA9IGZhbHNlOwotICAgICAgICBnb3RvIGVycm9yX3BhaW50X2NvbnRleHQ7Ci0gICAgfQorICAg
IEV2YXNfQ29vcmQgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQ7CisgICAgZXZhc19vYmplY3RfaW1h
Z2Vfc2l6ZV9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAmaW1hZ2VXaWR0aCwgJmltYWdl
SGVpZ2h0KTsKIAotICAgIHRpbGVyID0gZWluYV90aWxlcl9uZXcob3csIG9oKTsKKyAgICBFaW5h
X1RpbGVyKiB0aWxlciA9IGVpbmFfdGlsZXJfbmV3KGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KTsK
ICAgICBpZiAoIXRpbGVyKSB7Ci0gICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAl
ZHglZCIsIG93LCBvaCk7Ci0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBnb3RvIGVy
cm9yX3RpbGVyOworICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgdGlsZXIgJWR4JWQiLCBp
bWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShzbWFydERhdGEtPl9wcml2
KTsKIAotICAgIHBhaW50UmVxdWVzdCA9IGV3a192aWV3X3JlcGFpbnRzX3BvcChzbWFydERhdGEt
Pl9wcml2LCAmY291bnQpOwotICAgIHBhaW50UmVxdWVzdEVuZCA9IHBhaW50UmVxdWVzdCArIGNv
dW50OworICAgIHNpemVfdCBjb3VudDsKKyAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSogcGFpbnRS
ZXF1ZXN0ID0gZXdrX3ZpZXdfcmVwYWludHNfcG9wKHNtYXJ0RGF0YS0+X3ByaXYsICZjb3VudCk7
CisgICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdEVuZCA9IHBhaW50UmVxdWVz
dCArIGNvdW50OwogICAgIGZvciAoOyBwYWludFJlcXVlc3QgPCBwYWludFJlcXVlc3RFbmQ7IHBh
aW50UmVxdWVzdCsrKQogICAgICAgICBlaW5hX3RpbGVyX3JlY3RfYWRkKHRpbGVyLCBwYWludFJl
cXVlc3QpOwogCi0gICAgaXRlcmF0b3IgPSBlaW5hX3RpbGVyX2l0ZXJhdG9yX25ldyh0aWxlcik7
CisgICAgRWluYV9JdGVyYXRvciogaXRlcmF0b3IgPSBlaW5hX3RpbGVyX2l0ZXJhdG9yX25ldyh0
aWxlcik7CiAgICAgaWYgKCFpdGVyYXRvcikgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBnZXQg
aXRlcmF0b3IgZm9yIHRpbGVyIik7Ci0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBn
b3RvIGVycm9yX2l0ZXJhdG9yOworICAgICAgICBlaW5hX3RpbGVyX2ZyZWUodGlsZXIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRl
eHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX25ldyhzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUpOworICAgIGV3a19wYWludF9jb250ZXh0X3NhdmUoY29udGV4dCk7CisKICAgICBpbnQg
c2Nyb2xsWCwgc2Nyb2xsWTsKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc21hcnREYXRh
LT5tYWluX2ZyYW1lLCAmc2Nyb2xsWCwgJnNjcm9sbFkpOworICAgIGlmIChzY3JvbGxYIHx8IHNj
cm9sbFkpCisgICAgICAgIGV3a19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShjb250ZXh0LCAtc2Ny
b2xsWCwgLXNjcm9sbFkpOwogCisgICAgRWluYV9SZWN0YW5nbGUqIHJlY3Q7CiAgICAgRUlOQV9J
VEVSQVRPUl9GT1JFQUNIKGl0ZXJhdG9yLCByZWN0KSB7Ci0gICAgICAgIEVpbmFfUmVjdGFuZ2xl
IHNjcm9sbGVkX3JlY3QgPSB7Ci0gICAgICAgICAgICByZWN0LT54ICsgc2Nyb2xsWCwgcmVjdC0+
eSArIHNjcm9sbFksCi0gICAgICAgICAgICByZWN0LT53LCByZWN0LT5oCi0gICAgICAgIH07Ci0K
LSAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKGNvbnRleHQpOwotCi0gICAgICAg
IGlmICgoc2Nyb2xsWCkgfHwgKHNjcm9sbFkpKQotICAgICAgICAgICAgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF90cmFuc2xhdGUoY29udGV4dCwgLXNjcm9sbFgsIC1zY3JvbGxZKTsKKyAgICAgICAg
RWluYV9SZWN0YW5nbGUgc2Nyb2xsZWRSZWN0ID0geyByZWN0LT54ICsgc2Nyb2xsWCwgcmVjdC0+
eSArIHNjcm9sbFksIHJlY3QtPncsIHJlY3QtPmggfTsKKyAgICAgICAgZXdrX3ZpZXdfcGFpbnRf
Y29udGVudHMoc21hcnREYXRhLT5fcHJpdiwgY29udGV4dCwgJnNjcm9sbGVkUmVjdCk7CisgICAg
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUsIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPncsIHJlY3QtPmgpOworICAgIH0KIAotICAg
ICAgICBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoY29udGV4dCwgJnNjcm9sbGVkX3JlY3Qp
OwotICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKGNvbnRleHQs
ICZzY3JvbGxlZF9yZWN0KTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKGNvbnRleHQp
OworICAgIGV3a19wYWludF9jb250ZXh0X2ZyZWUoY29udGV4dCk7CiAKLSAgICAgICAgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwotICAgICAgICBldmFzX29iamVjdF9p
bWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgIChzbWFydERhdGEtPmJhY2tpbmdfc3Rv
cmUsIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPncsIHJlY3QtPmgpOwotICAgIH0KKyAgICBlaW5h
X3RpbGVyX2ZyZWUodGlsZXIpOwogICAgIGVpbmFfaXRlcmF0b3JfZnJlZShpdGVyYXRvcik7CiAK
LWVycm9yX2l0ZXJhdG9yOgotICAgIGVpbmFfdGlsZXJfZnJlZSh0aWxlcik7Ci1lcnJvcl90aWxl
cjoKLSAgICBld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUoY29udGV4dCk7Ci1lcnJvcl9wYWlu
dF9jb250ZXh0OgotICAgIGNhaXJvX2Rlc3Ryb3koY2Fpcm8pOwotZXJyb3JfY2Fpcm86Ci0gICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwotZXJyb3JfY2Fpcm9fc3VyZmFjZToKLSAg
ICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHBp
eGVscyk7IC8qIGRlYyByZWZjb3VudCAqLwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pv
b21fd2Vha19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBmbG9hdCB6b29tLCBF
dmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDM0MmNjNGUuLjUyMmIzYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCiAKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8UmVmUHRy
Q2Fpcm8uaD4KICNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KICNpbmNsdWRlIDxld2tf
dGlsZWRfYmFja2luZ19zdG9yZS5oPgogCkBAIC0zNCw0NCArMzMsMTcgQEAgc3RhdGljIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05V
TEw7CiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Iodm9pZCogZGF0
YSwgRXdrX1RpbGUqIHRpbGUsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1ByaXZhdGVf
RGF0YSo+KGRhdGEpOwotICAgIEVpbmFfUmVjdGFuZ2xlIHJlY3QgPSB7YXJlYS0+eCArIHRpbGUt
PngsIGFyZWEtPnkgKyB0aWxlLT55LCBhcmVhLT53LCBhcmVhLT5ofTsgICAgCi0gICAgaW50IHN0
cmlkZTsKLSAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7Ci0KLSAgICBpZiAodGlsZS0+Y3NwYWNl
ID09IEVWQVNfQ09MT1JTUEFDRV9BUkdCODg4OCkgewotICAgICAgICBzdHJpZGUgPSB0aWxlLT53
aWR0aCAqIDQ7Ci0gICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7Ci0gICAgfSBl
bHNlIGlmICh0aWxlLT5jc3BhY2UgPT0gRVZBU19DT0xPUlNQQUNFX1JHQjU2NV9BNVApIHsKLSAg
ICAgICAgc3RyaWRlID0gdGlsZS0+d2lkdGggKiAyOwotICAgICAgICBmb3JtYXQgPSBDQUlST19G
T1JNQVRfUkdCMTZfNTY1OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEVSUigidW5rbm93biBjb2xv
ciBzcGFjZTogJWQiLCB0aWxlLT5jc3BhY2UpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIEVpbmFfUmVjdGFuZ2xlIHJlY3QgPSB7YXJlYS0+eCArIHRpbGUtPngsIGFyZWEtPnkg
KyB0aWxlLT55LCBhcmVhLT53LCBhcmVhLT5ofTsKIAogICAgIHVpbnQ4X3QqIHBpeGVscyA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihldmFzX29iamVjdF9pbWFnZV9kYXRhX2dldCh0aWxlLT5pbWFn
ZSwgdHJ1ZSkpOwotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIEVSUigiZmFpbCB0byBnZXQg
dGhlIHBpeGVsIGRhdGEgZnJvbSB0aGUgaW1hZ2Ugb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0
UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKHBpeGVscywgZm9ybWF0LCB0
aWxlLT53aWR0aCwgdGlsZS0+aGVpZ2h0LCBzdHJpZGUpKTsKLSAgICBjYWlyb19zdGF0dXNfdCBz
dGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKTsKLSAgICBpZiAoc3Rh
dHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAgIEVSUigiZmFpbGVkIHRvIGNy
ZWF0ZSBjYWlybyBzdXJmYWNlOiAlcyIsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgRXdrX1BhaW50X0NvbnRleHQqIGNv
bnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHBpeGVscywgdGls
ZS0+d2lkdGgsIHRpbGUtPmhlaWdodCwgdGlsZS0+Y3NwYWNlKTsKIAotICAgIFJlZlB0cjxjYWly
b190PiBjYWlybyA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlLmdldCgpKSk7Ci0gICAg
c3RhdHVzID0gY2Fpcm9fc3RhdHVzKGNhaXJvLmdldCgpKTsKLSAgICBpZiAoc3RhdHVzICE9IENB
SVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAgIEVSUigiZmFpbGVkIHRvIGNyZWF0ZSBjYWly
bzogJXMiLCBjYWlyb19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQorICAgIGV3a19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShjb250ZXh0LCAt
dGlsZS0+eCwgLXRpbGUtPnkpOworICAgIEVpbmFfQm9vbCByZXN1bHQgPSBld2tfdmlld19wYWlu
dF9jb250ZW50cyhwcml2LCBjb250ZXh0LCAmcmVjdCk7CisgICAgZXdrX3BhaW50X2NvbnRleHRf
ZnJlZShjb250ZXh0KTsKIAotICAgIGNhaXJvX3RyYW5zbGF0ZShjYWlyby5nZXQoKSwgLXRpbGUt
PngsIC10aWxlLT55KTsKLQotICAgIGJvb2wgcmVzdWx0ID0gZXdrX3ZpZXdfcGFpbnRfY29udGVu
dHMocHJpdiwgY2Fpcm8uZ2V0KCksICZyZWN0KTsKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRh
X3NldCh0aWxlLT5pbWFnZSwgcGl4ZWxzKTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9lZmxzeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9jbWFrZS9l
ZmxzeW1ib2xzLmZpbHRlcgppbmRleCAyYmNiM2NlLi5mNzYwOWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvZWZsc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2NtYWtlL2VmbHN5bWJvbHMu
ZmlsdGVyCkBAIC00LDYgKzQsOCBAQAogCiAgICAgICAgICAgICAgICAgZXh0ZXJuICJDKysiIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsKjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgZXdrX3ZpZXdfcGFpbnQqOworICAgICAgICAgICAgICAgICAgICAg
ICBld2tfcGFpbnRfY29udGV4dF8qOwogICAgICAgICAgICAgICAgIH07CiAKICAgICAgICAgbG9j
YWw6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YjJjNzFlZC4uZjE0MTdlMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1LTA0ICBUb21hc3ogTW9yYXdza2kg
IDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlZmFjdG9yIGV3a192
aWV3X2NvbnRleHRfcGFpbnQgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg1NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQ6IEFkZGVk
IGluY2x1ZGUgZGlyZWN0b3J5LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9QaXhlbER1
bXBTdXBwb3J0RWZsLmNwcDogQWRqdXN0IHRvIEFQSSBjaGFuZ2UuCisgICAgICAgIChjcmVhdGVC
aXRtYXBDb250ZXh0RnJvbVdlYlZpZXcpOgorCiAyMDEyLTA1LTAzICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRFJUIHNob3Vs
ZCBvYmV5IGxheW91dFRlc3RDb250cm9sbGVyJ3MgYWRkVVJMVG9SZWRpcmVjdCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKaW5kZXggYWQwYWUyZC4uNTUwMDcwZSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtNTksNiArNTksNyBAQCBT
RVQoRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL3RleHQKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcwogICAg
ICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvCisgICAgJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAKICAg
ICAke1dFQkNPUkVfRElSfS9wbHVnaW5zCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
UGl4ZWxEdW1wU3VwcG9ydEVmbC5jcHAKaW5kZXggMTA5Mzc0ZS4uNGNhMmIyMyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1cHBvcnRFZmwuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9QaXhlbER1bXBTdXBwb3J0RWZsLmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnRDYWlyby5oIgogI2luY2x1ZGUg
IlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmgiCisjaW5jbHVkZSAiZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgImV3a19wcml2YXRlLmgiCiAKIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRl
Qml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wgZHJhd1NlbGVj
dGlvblJlY3QpCkBAIC01MSwxMCArNTIsMTUgQEAgUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBj
cmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbAogCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoLCBoZWlnaHQpKTsKICAg
ICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNl
LmdldCgpKSk7CisgICAgRXdrX1BhaW50X0NvbnRleHQqIGdyYXBoaWNDb250ZXh0ID0gZXdrX3Bh
aW50X2NvbnRleHRfbmV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgY29uc3QgRWluYV9SZWN0YW5n
bGUgcmVjdCA9IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9OwotICAgIGlmICghZXdrX3ZpZXdfcGFp
bnQocHJpdmF0ZURhdGEsIGNvbnRleHQuZ2V0KCksICZyZWN0KSkKKyAgICBpZiAoIWV3a192aWV3
X3BhaW50KHByaXZhdGVEYXRhLCBncmFwaGljQ29udGV4dCwgJnJlY3QpKSB7CisgICAgICAgIGV3
a19wYWludF9jb250ZXh0X2ZyZWUoZ3JhcGhpY0NvbnRleHQpOwogICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBld2tfcGFpbnRfY29udGV4dF9mcmVlKGdyYXBoaWNDb250ZXh0KTsKIAog
ICAgIGlmIChkcmF3U2VsZWN0aW9uUmVjdCkgewogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0IHNlbGVjdGlvblJlY3QgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGlvblJl
Y3RhbmdsZShtYWluRnJhbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140711</attachid>
            <date>2012-05-08 07:00:32 -0700</date>
            <delta_ts>2012-06-01 02:53:34 -0700</delta_ts>
            <desc>ewk_view_context_paint related changes 3</desc>
            <filename>ewk_paint_context3.patch</filename>
            <type>text/plain</type>
            <size>43229</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYzc0YWIwMi4uMjZiYThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wNS0wOCAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBSZWZhY3RvciBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyBld2tf
cGFpbnRfY29udGV4dC5jcHAgZmlsZSB0byBzb3VyY2UgbGlzdC4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorCiAyMDEyLTA1LTA4ICBKb25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9u
Z0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEF1dG9maWxsTWFu
YWdlciBpbXBsZW1lbnRhdGlvbiB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
YzRkMjBjYy4uZDUwYjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMDcsNiArMTA3
LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19qcy5jcHAK
ICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9ld2svZXdrX25ldHdvcmsuY3BwCisg
ICAgZWZsL2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKICAgICBlZmwvZXdrL2V3a19zZWN1cml0
eV9vcmlnaW4uY3BwCiAgICAgZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAogICAgIGVm
bC9ld2svZXdrX3NldHRpbmdzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDM0ZjMxOWMuLmQwYjI0
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0wNS0wOCAgVG9tYXN6
IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZWZh
Y3RvciBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBjaGFuZ2Ug
aXMgcmVkdWNlIHNpemUgb2YgZXdrX3ZpZXcuaC9jcHAgZmlsZXMgYW5kIG1ha2UgdXNlIG9mIGV3
a192aWV3X2NvbnRleHRfcGFpbnQKKyAgICAgICAgb2JqZWN0IGJ5IGV3a192aWV3X3NpbmdsZSBh
bmQgZXdrX3ZpZXdfdGlsZWQgaW5zdGVhZCBvZiBkaXJlY3Qgb3BlcmF0aW9ucyBvbiBjYWlyby4K
KyAgICAgICAgVGhlIGNvZGUgaXMgbW9yZSBvYmplY3RpdmUgYW5kIGxvb2tzIHZlcnkgc2ltcGxl
IG5vdy4KKyAgICAgICAgUmVtb3ZlIGV3a192aWV3X2NvbnRleHRfcGFpbnQgY29kZSBmcm9tIGV3
a192aWV3IGgvY3BwIGZpbGUgYW5kIG1vdmUgaXQgdG8gc2VwYXJhdGUgbmV3IGV3a19jb250ZXh0
X3BhaW50IGZpbGUuCisgICAgICAgIFRoZSBld2tfdmlld19jb250ZXh0X3BhaW50IGhhcyBiZWVu
IHJlbmFtZWQgdG8gZXdrX2NvbnRleHRfcGFpbnQgYW5kIGl0IGlzIG5vdCBiaW5kZWQgdG8gdmll
dyBvbiBjcmVhdGlvbiB0aW1lLgorCisgICAgICAgICogZXdrL2V3a19wYWludF9jb250ZXh0LmNw
cDogQWRkZWQuCisgICAgICAgIEZ1bmN0aW9ucyByZW5hbWVkIGFuZCBtb3ZlZCBmcm9tIGV3a192
aWV3IHRvIGV3a19wYWludF9jb250ZXh0IGZpbGUuCisgICAgICAgIChld2tfcGFpbnRfY29udGV4
dF9uZXcpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfZnJvbV9pbWFnZV9uZXcpOiBOZXcg
ZnVuY3Rpb24uCisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3
KTogTmV3IGZ1bmN0aW9uLgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfZnJlZSk6CisgICAg
ICAgIChld2tfcGFpbnRfY29udGV4dF9zYXZlKToKKyAgICAgICAgKGV3a19wYWludF9jb250ZXh0
X3Jlc3RvcmUpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfY2xpcCk6CisgICAgICAgIChl
d2tfcGFpbnRfY29udGV4dF9zY2FsZSk6CisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF90cmFu
c2xhdGUpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfcGFpbnQpOiBBZGRlZCBGcmFtZVZp
ZXcgcGFyYW1ldGVyLgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMp
OiBBZGRlZCBGcmFtZVZpZXcgcGFyYW1ldGVyLgorICAgICAgICAqIGV3ay9ld2tfcGFpbnRfY29u
dGV4dF9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoX0V3a19QYWludF9Db250ZXh0KToKKyAg
ICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDogRnVuY3Rpb25zIGV3a192aWV3X3BhaW50IGFuZCBl
d2tfdmlld19wYWludF9jb250ZW50cyBtb3ZlZCBmcm9tIGV3a192aWV3LmguCisgICAgICAgICog
ZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmg6IFJlbW92ZWQgdW51c2VkIGluY2x1ZGUuCisg
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDogTW92ZWQgYWxsIGZ1bmN0aW9uIHJlbGVhdGVkIHRv
IHBhaW50IGNvbnRleHQgb2JqZWN0IHRvIG5ldyBld2tfcGFpbnRfY29udGV4dCBmaWxlLgorICAg
ICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmlld19wYWludCk6
IENoYW5nZWQgZnVuY3Rpb24gYWNjb3JkaW5nIGNoYW5nZSBpbiBld2tfcGFpbnRfY29udGV4dF9w
YWludCBmdW5jdGlvbi4KKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRlbnRzKTogQ2hhbmdl
ZCBmdW5jdGlvbiBhY2NvcmRpbmcgY2hhbmdlIGluIGV3a19wYWludF9jb250ZXh0X3BhaW50X2Nv
bnRlbnRzIGZ1bmN0aW9uLgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBSZW1vdmVkIGFsbCBw
YWludCBjb250ZXh0IGZ1bmN0aW9ucyBhbmQgZXdrX3ZpZXdfcGFpbnQsIGV3a192aWV3X3BhaW50
X2NvbnRlbnRzIGZ1bmN0aW9uIGZyb20KKyAgICAgICAgcHVibGljIEFQSS4KKyAgICAgICAgKiBl
d2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRf
cmVwYWludHNfcHJvY2Vzcyk6CisgICAgICAgIFJlZmFjdG9yIG9mIF9ld2tfdmlld19zaW5nbGVf
c21hcnRfcmVwYWludHNfcHJvY2VzcyBmdW5jdGlvbi4KKyAgICAgICAgUmVtb3ZlZCBnb3RvIHN0
YXRlbWVudHMuCisgICAgICAgIFJlbW92ZWQgdmFyaWFibGVzIGRlY2xhcmF0aW9uIGZyb20gZnVu
Y3Rpb24gYmVnaW5uaW5nLgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKTogTWFrZSB1c2Ugb2YgZXdrX3BhaW50X2Nv
bnRleHQgb2JqZWN0IGluc3RlYWQgb2YgZGlyZWN0aW9uIG9wZXJhdGlvbiBvbiBjYWlyby4KKyAg
ICAgICAgTG9va3Mgc2ltcGxlciBhbmQgbW9yZSBvYmplY3RpdmUuCisKIDIwMTItMDUtMDggIEty
enlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVXBk
YXRlIGRvY3VtZW50YXRpb24gb2YgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQgYW5k
IGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wYWludF9jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcGFp
bnRfY29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdlYmYx
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcGFpbnRfY29u
dGV4dC5jcHAKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZV
U0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfcGFpbnRfY29udGV4dF9wcml2YXRlLmgi
CisKK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9uZXcoY2Fpcm9fdCogY2Fp
cm8pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhaXJvLCAwKTsKKwor
ICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gbmV3IEV3a19QYWludF9Db250ZXh0Owor
ICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0ID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dChjYWlybykpOworICAgIGNvbnRleHQtPmNhaXJvID0gYWRvcHRSZWYoY2Fpcm9f
cmVmZXJlbmNlKGNhaXJvKSk7CisgICAgY29udGV4dC0+aW1hZ2UgPSAwOworICAgIGNvbnRleHQt
PnBpeGVscyA9IDA7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworRXdrX1BhaW50X0NvbnRl
eHQqIGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KEV2YXNfT2JqZWN0KiBpbWFnZSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW1hZ2UsIDApOworCisgICAg
RXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OworICAgIHVpbnQ4X3QqIHBpeGVscyA9IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihldmFzX29iamVjdF9pbWFnZV9kYXRhX2dldChpbWFnZSwgdHJ1ZSkpOwor
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGltYWdlLCAmd2lkdGgsICZoZWlnaHQpOwor
CisgICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9t
X2ltYWdlX2RhdGFfbmV3KHBpeGVscywgd2lkdGgsIGhlaWdodCwgRVZBU19DT0xPUlNQQUNFX0FS
R0I4ODg4KTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgICBjb250ZXh0LT5waXhlbHMgPSBw
aXhlbHM7CisgICAgICAgIGNvbnRleHQtPmltYWdlID0gaW1hZ2U7CisgICAgfQorCisgICAgcmV0
dXJuIGNvbnRleHQ7Cit9CisKK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9m
cm9tX2ltYWdlX2RhdGFfbmV3KHVpbnQ4X3QqIHBpeGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBpbnQgY29sb3JTcGFjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
cGl4ZWxzLCAwKTsKKworICAgIE93blB0cjxFd2tfUGFpbnRfQ29udGV4dD4gY29udGV4dCA9IGFk
b3B0UHRyKG5ldyBFd2tfUGFpbnRfQ29udGV4dCk7CisgICAgY29udGV4dC0+cGl4ZWxzID0gcGl4
ZWxzOworICAgIGNvbnRleHQtPmltYWdlID0gMDsKKworICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1h
dDsKKyAgICBpbnQgc3RyaWRlOworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2Ug
RVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4OgorICAgICAgICBzdHJpZGUgPSB3aWR0aCAqIDQ7Cisg
ICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRVZBU19DT0xPUlNQQUNFX1JHQjU2NV9BNVA6CisgICAgICAgIHN0cmlkZSA9IHdpZHRo
ICogMjsKKyAgICAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX1JHQjE2XzU2NTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgRVJSKCJ1bmtub3duIGNvbG9yIHNwYWNlOiAl
ZCIsIGNvbG9yU3BhY2UpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250ZXh0
LT5zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEo
cGl4ZWxzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSkpOworICAgIGNhaXJvX3N0YXR1
c190IHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGNvbnRleHQtPnN1cmZhY2UuZ2V0KCkp
OworICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgRVJS
KCJjb3VsZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsIHdpZHRoLCBo
ZWlnaHQsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIGNvbnRleHQtPmNhaXJvID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGNv
bnRleHQtPnN1cmZhY2UuZ2V0KCkpKTsKKyAgICBzdGF0dXMgPSBjYWlyb19zdGF0dXMoY29udGV4
dC0+Y2Fpcm8uZ2V0KCkpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1Mp
IHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIGNhaXJvIGZyb20gc3VyZmFjZSAlZHgl
ZDogJXMiLCB3aWR0aCwgaGVpZ2h0LCBjYWlyb19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dCA9
IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQoY29udGV4dC0+Y2Fpcm8uZ2V0
KCkpKTsKKworICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKS5sZWFrUHRyKCk7Cit9CisKK3Zv
aWQgZXdrX3BhaW50X2NvbnRleHRfZnJlZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKKworICAgIGlmIChjb250
ZXh0LT5pbWFnZSAmJiBjb250ZXh0LT5waXhlbHMpIHsKKyAgICAgICAgLy8gRGVjcmVhc2UgcmVm
Y291bnQgaW5zaWRlIGltYWdlIG9iamVjdC4KKyAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV9zZXQoY29udGV4dC0+aW1hZ2UsIGNvbnRleHQtPnBpeGVscyk7CisgICAgfQorICAgIGRlbGV0
ZSBjb250ZXh0OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NhdmUoRXdrX1BhaW50X0Nv
bnRleHQqIGNvbnRleHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4
dCk7CisKKyAgICBjYWlyb19zYXZlKGNvbnRleHQtPmNhaXJvLmdldCgpKTsKKyAgICBjb250ZXh0
LT5ncmFwaGljQ29udGV4dC0+c2F2ZSgpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3Jl
c3RvcmUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oY29udGV4dCk7CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+cmVz
dG9yZSgpOworICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpOworfQorCit2
b2lkIGV3a19wYWludF9jb250ZXh0X2NsaXAoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisg
ICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPmNsaXAoV2ViQ29yZTo6SW50UmVjdCgqYXJlYSkp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3NjYWxlKEV3a19QYWludF9Db250ZXh0KiBj
b250ZXh0LCBmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxlWSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihjb250ZXh0KTsKKworICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5z
Y2FsZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGVYLCBzY2FsZVkpKTsKK30KKwordm9pZCBld2tf
cGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHgsIGZsb2F0IHkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7
CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKHgsIHkpOworfQorCit2
b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50KEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBX
ZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQorewor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHZpZXcpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFy
ZWEpOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBwYWludEFyZWEoKmFyZWEpOworCisgICAgaWYg
KHZpZXctPmlzVHJhbnNwYXJlbnQoKSkKKyAgICAgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQt
PmNsZWFyUmVjdChwYWludEFyZWEpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQtPmdyYXBoaWND
b250ZXh0LmdldCgpLCBwYWludEFyZWEpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3Bh
aW50X2NvbnRlbnRzKEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZp
ZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHZpZXcpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgV2Vi
Q29yZTo6SW50UmVjdCBwYWludEFyZWEoKmFyZWEpOworCisgICAgaWYgKHZpZXctPmlzVHJhbnNw
YXJlbnQoKSkKKyAgICAgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChwYWlu
dEFyZWEpOworICAgIHZpZXctPnBhaW50Q29udGVudHMoY29udGV4dC0+Z3JhcGhpY0NvbnRleHQu
Z2V0KCksIHBhaW50QXJlYSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
YWludF9jb250ZXh0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41NzI3YjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
YWludF9jb250ZXh0X3ByaXZhdGUuaApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAg
IGV3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBw
YWludCBjb250ZXh0IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19wYWludF9jb250ZXh0X3ByaXZh
dGVfaAorI2RlZmluZSBld2tfcGFpbnRfY29udGV4dF9wcml2YXRlX2gKKworI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKy8vLyBD
cmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1BhaW50X0NvbnRleHQuCit0eXBlZGVmIHN0
cnVjdCBfRXdrX1BhaW50X0NvbnRleHQgRXdrX1BhaW50X0NvbnRleHQ7CisKKy8qKgorICogQGJy
aWVmIFN0cnVjdHVyZSB0aGF0IGtlZXBzIHRoZSBwYWludCBjb250ZXh0LgorICoKKyAqIEBpbnRl
cm5hbAorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBm
b3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFj
a2luZyBzdG9yZS4KKyAqLworc3RydWN0IF9Fd2tfUGFpbnRfQ29udGV4dCB7CisgICAgT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY0NvbnRleHQ7CisgICAgUmVmUHRyPGNh
aXJvX3Q+IGNhaXJvOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2U7IC8qKjwg
c3VyZmFjZSB1c2VkIHRvIGNyZWF0ZSBjYWlybyBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCog
aW1hZ2U7IC8qKjwgaW1hZ2UgdXNlZCB0byBjcmVhdGUgY2Fpcm8gc3VyZmFjZSAqLworICAgIHVu
c2lnbmVkIGNoYXIqIHBpeGVsczsgLyoqPCBwaXhlbHMgZm9ybSBpbWFnZSAqLworfTsKKworLyoq
CisgKiBAaW50ZXJuYWwKKyAqIENyZWF0ZXMgYSBuZXcgcGFpbnQgY29udGV4dCB1c2luZyBhIGNh
aXJvIGFzIG91dHB1dC4KKyAqCisgKiBAcGFyYW0gY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFp
bnQgZGVzdGluYXRpb24sIGEgbmV3CisgKiAgICAgICAgcmVmZXJlbmNlIGlzIHRha2VuLCBzbyBp
dCdzIHNhZmUgdG8gY2FsbCBAYyBjYWlyb19kZXN0cm95KCkKKyAqICAgICAgICBhZnRlciB0aGlz
IGZ1bmN0aW9uIHJldHVybnMuCisgKgorICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbnN0
YW5jZSBvZiBAYyBFd2tfUGFpbnRfQ29udGV4dCBvbiBzdWNjZXNzLAorICogICAgICAgICBvciBA
YyAwIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRf
Y29udGV4dF9uZXcoY2Fpcm9fdCogY2Fpcm8pOworCisvKioKKyAqIEBpbnRlcm5hbAorICogQ3Jl
YXRlcyBhIG5ldyBwYWludCBjb250ZXh0IHVzaW5nIGFuIGltYWdlIGFzIG91dHB1dC4KKyAqCisg
KiBAcGFyYW0gaW1hZ2UgdG8gdXNlIGFzIHBhaW50IGRlc3RpbmF0aW9uCisgKgorICogQHJldHVy
biBhIG5ld2x5IGFsbG9jYXRlZCBpbnN0YW5jZSBvZiBAYyBFd2tfUGFpbnRfQ29udGV4dCBvbiBz
dWNjZXNzLAorICogICAgICAgICBvciBAYyAwIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlz
IGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50
CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK0V3a19Q
YWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX25ldyhFdmFzX09iamVj
dCogaW1hZ2UpOworCisvKioKKyAqIEBpbnRlcm5hbAorICogQ3JlYXRlcyBhIG5ldyBwYWludCBj
b250ZXh0IHVzaW5nIGFuIGltYWdlIGFzIG91dHB1dC4KKyAqCisgKiBAcGFyYW0gcGl4ZWwgcG9p
bnRlciB0byBwaXhlbCBidWZmZXIKKyAqIEBwYXJhbSB3aWR0aCBzaXplIG9mIHBpeGVsIGJ1ZmZl
cgorICogQHBhcmFtIGhlaWdodCBzaXplIG9mIHBpeGVsIGJ1ZmZlcgorICogQHBhcmFtIGNvbG9y
U3BhY2UgRXZhc19Db2xvcnNwYWNlIG9mIHBpeGVsIGJ1ZmZlcgorICoKKyAqIEByZXR1cm4gYSBu
ZXdseSBhbGxvY2F0ZWQgaW5zdGFuY2Ugb2YgQGMgRXdrX1BhaW50X0NvbnRleHQgb24gc3VjY2Vz
cywKKyAqICAgICAgICAgb3IgQGMgMCBvbiBmYWlsdXJlCisgKgorICogQG5vdGUgVGhpcyBpcyBu
b3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICog
ICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCitFd2tfUGFpbnRf
Q29udGV4dCogZXdrX3BhaW50X2NvbnRleHRfZnJvbV9pbWFnZV9kYXRhX25ldyh1aW50OF90KiBw
aXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGNvbG9yU3BhY2UpOworCisvKioKKyAq
IEBpbnRlcm5hbAorICogRGVzdHJveXMgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCB0aGUgcGFpbnQg
Y29udGV4dC4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byBkZXN0
cm95LCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdl
bmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8g
ZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250
ZXh0X2ZyZWUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQpOworCisvKioKKyAqIEBpbnRlcm5h
bAorICogU2F2ZXMgKHB1c2ggdG8gc3RhY2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAq
CisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byBzYXZlLCBtdXN0IEBiIG5v
dCBiZSBAYyAwCisgKgorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKCkKKyAqCisg
KiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNz
ZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUu
CisgKi8KK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfc2F2ZShFd2tfUGFpbnRfQ29udGV4dCogY29u
dGV4dCk7CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXN0b3JlcyAocG9wIGZyb20gc3RhY2sp
IHRoZSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFp
bnQgY29udGV4dCB0byByZXN0b3JlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQHNlZSBl
d2tfcGFpbnRfY29udGV4dF9zYXZlKCkKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2Vu
ZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBk
ZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdrX3BhaW50X2NvbnRl
eHRfcmVzdG9yZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCk7CisKKy8qKgorICogQGludGVy
bmFsCisgKiBDbGlwcyB0aGUgcGFpbnQgY29udGV4dCBkcmF3aW5ncyB0byB0aGUgZ2l2ZW4gYXJl
YS4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byBjbGlwLCBtdXN0
IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFyYW0gYXJlYSBjbGlwIGFyZWEgdG8gdXNlLCBtdXN0IEBi
IG5vdCBiZSBAYyAwCisgKgorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9zYXZlKCkKKyAqIEBz
ZWUgZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZSgpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3Qg
Zm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAg
ICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWlu
dF9jb250ZXh0X2NsaXAoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFNjYWxlcyB0aGUgY29udGVu
dHMgYnkgdGhlIGdpdmVuIGZhY3RvcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBhcHBsaWVzIGEg
c2NhbGluZyB0cmFuc2Zvcm1hdGlvbiB1c2luZyBDYWlyby4KKyAqCisgKiBAcGFyYW0gY29udGV4
dCB0aGUgcGFpbnQgY29udGV4dCB0byBzY2FsZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBh
cmFtIHNjYWxlX3ggdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIFggZGltZW5zaW9uCisgKiBAcGFy
YW0gc2NhbGVfeSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWSBkaW1lbnNpb24KKyAqLwordm9p
ZCBld2tfcGFpbnRfY29udGV4dF9zY2FsZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgZmxv
YXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSk7CisKKy8qKgorICogQGludGVybmFsCisgKiBQZXJm
b3JtcyBhIHRyYW5zbGF0aW9uIG9mIHRoZSBvcmlnaW4gY29vcmRpbmF0ZXMuCisgKgorICogVGhp
cyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3JpZ2luIGNvb3JkaW5hdGVzIGJ5IEBhIHggYW5kIEBhIHkg
cGl4ZWxzLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IHRoZSBwYWludCBjb250ZXh0IHRvIHRyYW5z
bGF0ZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBhcmFtIHggYW1vdW50IG9mIHBpeGVscyB0
byB0cmFuc2xhdGUgaW4gdGhlIFggZGltZW5zaW9uCisgKiBAcGFyYW0geSBhbW91bnQgb2YgcGl4
ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWSBkaW1lbnNpb24KKyAqLwordm9pZCBld2tfcGFpbnRf
Y29udGV4dF90cmFuc2xhdGUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHgsIGZs
b2F0IHkpOworCisvKioKKyAqIEBpbnRlcm5hbAorICogUGFpbnRzIHRoZSBjb250ZXh0IHVzaW5n
IGdpdmVuIGFyZWEuCisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8g
cGFpbnQsIG11c3QgQGIgbm90IGJlIEBjIDAKKyAqIEBwYXJhbSB2aWV3IHRoZSB2aWV3IHRvIHBh
aW50CisgKiBAcGFyYW0gYXJlYSB0aGUgcGFpbnQgYXJlYSB0byB1c2UsIGNvb3JkaW5hdGVzIGFy
ZSByZWxhdGl2ZSB0byBjdXJyZW50IHZpZXdwb3J0LAorICogICAgICAgIHRodXMgInNjcm9sbGVk
IiwgbXVzdCBAYiBub3QgYmUgQGMgMAorICoKKyAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJvIGZ1
bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bworICogICAgICAgdHJhbnNsYXRlLCBzY2Fs
ZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAqCisgKiBA
c2VlIGV3a19wYWludF9jb250ZXh0X2NsaXAoKQorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9w
YWludF9jb250ZW50cygpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNl
IGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRo
ZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50
KEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFBhaW50
cyBqdXN0IGNvbnRlbnRzIHVzaW5nIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KKyAqCisgKiBV
bmxpa2UgZXdrX3BhaW50X2NvbnRleHRfcGFpbnQoKSwgdGhpcyBmdW5jdGlvbiBwYWludCBqdXN0
CisgKiBiYXJlIGNvbnRlbnRzIGFuZCBpZ25vcmVzIGFueSBzY3JvbGxpbmcsIHNjcm9sbGJhcnMg
YW5kIGV4dHJhcy4gSXQKKyAqIHdpbGwgd2FsayB0aGUgcmVuZGVyaW5nIHRyZWUgYW5kIHBhaW50
IGNvbnRlbnRzIGluc2lkZSB0aGUgZ2l2ZW4KKyAqIGFyZWEgdG8gdGhlIGNhaXJvIGNvbnRleHQg
c3BlY2lmaWVkIGluIEBhIGNvbnRleHQuCisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50
IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJlIEBjIDAuCisgKiBAcGFyYW0gdmlldyB0
aGUgdmlldyB0byBwYWludAorICogQHBhcmFtIGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBj
b29yZGluYXRlcyBhcmUgYWJzb2x1dGUgdG8gcGFnZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICoK
KyAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4
dCB0bworICogICAgICAgdHJhbnNsYXRlLCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQg
bWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAqCisgKiBAc2VlIGV3a19wYWludF9jb250ZXh0X2NsaXAo
KQorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9wYWludCgpCisgKgorICogQG5vdGUgVGhpcyBp
cyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAor
ICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3
a19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0
LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKTsK
KworI2VuZGlmIC8vIGV3a19wYWludF9jb250ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAppbmRleCAyNmQ0NDhkLi5jYmVkN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldpZGdldC5oIgogI2lu
Y2x1ZGUgImV3a19oaXN0b3J5LmgiCiAjaW5jbHVkZSAiZXdrX2pzLmgiCisjaW5jbHVkZSAiZXdr
X3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVk
ZSA8RXZhcy5oPgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTE3Niw2ICsx
NzcsOSBAQCB2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19mb2N1c19jYW5fY3ljbGUoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV3a19Gb2N1c19EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIHZvaWQgZXdr
X3ZpZXdfZnJhbWVfdmlld19jcmVhdGlvbl9ub3RpZnkoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwog
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBF
d2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpOwor
RWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBh
cmVhKTsKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogdm9pZCBld2tfdmlld19q
c193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCog
ZnJhbWUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5oCmluZGV4IDllNWEwNDguLmQwYmFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCkBAIC00Myw3ICs0Myw2IEBAIGNv
bnN0IGZsb2F0IHpvb21TdGVwTWluaW11bSA9IDAuMDE7CiAjZGVmaW5lIFJPVU5ERURfWk9PTShT
SVpFLCBaT09NKSAoKGZsb2F0KShTSVpFKSAvIChmbG9hdCkoKChpbnQpcm91bmRmKChTSVpFKSAv
IChaT09NKSkpKSkKIAogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxjYWlyby5oPgogCiB0
eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGUgICAgICAgICAgICAgICAgICAgICBFd2tfVGlsZTsKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyAgICAgICAgICAgICAgIEV3a19UaWxlX1N0YXRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggN2EwZWUxZS4uZWEzMGUzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dp
bmcuaCIKKyNpbmNsdWRlICJld2tfcGFpbnRfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEuaD4KQEAg
LTI2NzIsMTU0ICsyNjczLDExOCBAQCB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgX2V3a192aWV3X3Njcm9sbHNfZmx1c2go
cHJpdik7CiB9CiAKLS8qKgotICogQGJyaWVmIFN0cnVjdHVyZSB0aGF0IGtlZXBzIHRoZSBwYWlu
dCBjb250ZXh0LgotICoKLSAqIEBpbnRlcm5hbAotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90IGZv
ciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAgICAg
IHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotc3RydWN0IF9Fd2tfVmll
d19QYWludF9Db250ZXh0IHsKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXc7Ci0gICAgT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY0NvbnRleHQ7Ci0gICAgUmVmUHRy
PGNhaXJvX3Q+IGNhaXJvOwotfTsKLQotRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBj
YWlybykKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgMCk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhaXJvLCAwKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+bWFpbkZyYW1lLCAwKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+bWFpbkZyYW1lLT52aWV3KCksIDApOwotCi0g
ICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCA9IG5ldyBFd2tfVmlld19QYWludF9D
b250ZXh0OwotICAgIGNvbnRleHQtPnZpZXcgPSBwcml2LT5tYWluRnJhbWUtPnZpZXcoKTsKLSAg
ICBjb250ZXh0LT5ncmFwaGljQ29udGV4dCA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQoY2Fpcm8pKTsKLSAgICBjb250ZXh0LT5jYWlybyA9IGFkb3B0UmVmKGNhaXJvX3Jl
ZmVyZW5jZShjYWlybykpOwotCi0gICAgcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLXZvaWQgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0KLSAgICBkZWxldGUg
Y29udGV4dDsKLX0KLQotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tihjb250ZXh0KTsKLQotICAgIGNhaXJvX3NhdmUoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpOwotICAg
IGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5zYXZlKCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQpCi17Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0KLSAgICBjb250ZXh0LT5n
cmFwaGljQ29udGV4dC0+cmVzdG9yZSgpOwotICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dC0+Y2Fp
cm8uZ2V0KCkpOwotfQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmll
d19QYWludF9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKLXsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKLSAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+Y2xp
cChXZWJDb3JlOjpJbnRSZWN0KCphcmVhKSk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9wYWludChFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBFaW5hX1Jl
Y3RhbmdsZSogYXJlYSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKLQotICAgIFdlYkNvcmU6
OkludFJlY3QgcmVjdCgqYXJlYSk7Ci0KLSAgICBpZiAoY29udGV4dC0+dmlldy0+aXNUcmFuc3Bh
cmVudCgpKQotICAgICAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3Qp
OwotICAgIGNvbnRleHQtPnZpZXctPnBhaW50KGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LmdldCgp
LCByZWN0KTsKLX0KLQotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRz
KEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBh
cmVhKQorRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJp
diwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGFyZWEpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KCphcmVhKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIGZhbHNlKTsKIAotICAgIGlmIChjb250
ZXh0LT52aWV3LT5pc1RyYW5zcGFyZW50KCkpCi0gICAgICAgIGNvbnRleHQtPmdyYXBoaWNDb250
ZXh0LT5jbGVhclJlY3QocmVjdCk7CisgICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBl
d2tfcGFpbnRfY29udGV4dF9uZXcoY3IpOworICAgIGJvb2wgcmVzdWx0ID0gZXdrX3ZpZXdfcGFp
bnQocHJpdiwgY29udGV4dCwgYXJlYSk7CisgICAgZXdrX3BhaW50X2NvbnRleHRfZnJlZShjb250
ZXh0KTsKIAotICAgIGNvbnRleHQtPnZpZXctPnBhaW50Q29udGVudHMoY29udGV4dC0+Z3JhcGhp
Y0NvbnRleHQuZ2V0KCksIHJlY3QpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9zY2FsZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxlWSkKK0VpbmFfQm9vbCBld2tfdmlld19wYWludF9j
b250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyLCBjb25zdCBF
aW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihj
b250ZXh0KTsKLQotICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5zY2FsZShXZWJDb3JlOjpG
bG9hdFNpemUoc2NhbGVYLCBzY2FsZVkpKTsKLX0KKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoY3IsIGZhbHNlKTsKIAotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5z
bGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5KQot
ewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEV3a19QYWlu
dF9Db250ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRleHRfbmV3KGNyKTsKKyAgICBib29s
IHJlc3VsdCA9IGV3a192aWV3X3BhaW50X2NvbnRlbnRzKHByaXYsIGNvbnRleHQsIGFyZWEpOwor
ICAgIGV3a19wYWludF9jb250ZXh0X2ZyZWUoY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5ncmFw
aGljQ29udGV4dC0+dHJhbnNsYXRlKHgsIHkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJv
X3QqIGNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKKy8qIGludGVybmFsIG1ldGhvZHMg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q
KgorICogQGludGVybmFsCisgKiBQYWludHMgdXNpbmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0
aGUgZ2l2ZW4gYXJlYS4KKyAqCisgKiBUaGlzIHVzZXMgdmlld3BvcnQgcmVsYXRpdmUgYXJlYSBh
bmQgd2lsbCBhbHNvIGhhbmRsZSBzY3JvbGxiYXJzCisgKiBhbmQgb3RoZXIgZXh0cmEgZWxlbWVu
dHMuIFNlZSBld2tfdmlld19wYWludF9jb250ZW50cygpIGZvciB0aGUKKyAqIGFsdGVybmF0aXZl
IGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRl
IGRhdGEgb2YgdGhlIHZpZXcgdG8gdXNlIGFzIHBhaW50IHNvdXJjZQorICogQHBhcmFtIGNyIHRo
ZSBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbiwgaXRzIHN0YXRlIHdp
bGwKKyAqICAgICAgICBiZSBzYXZlZCBiZWZvcmUgb3BlcmF0aW9uIGFuZCByZXN0b3JlZCBhZnRl
cndhcmRzCisgKiBAcGFyYW0gYXJlYSB2aWV3cG9ydCByZWxhdGl2ZSBnZW9tZXRyeSB0byBwYWlu
dAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlCisgKgorICogQG5vdGUgVGhpcyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9u
LCBidXQgaW50ZXJuYWwgc3RydWN0dXJlcyBhcmUKKyAqICAgICAgIGFsd2F5cyBjcmVhdGVkLCB0
aGVuIGdyYXBoaWNzIGNvbnRleHQgaXMgY2xpcHBlZCwgdGhlbgorICogICAgICAgcGFpbnRlZCwg
cmVzdG9yZWQgYW5kIGRlc3Ryb3llZC4gVGhpcyBtaWdodCBub3QgYmUgb3B0aW11bSwKKyAqICAg
ICAgIHNvIHVzaW5nIEBhIEV3a19QYWludF9Db250ZXh0IG1heSBiZSBhIGJldHRlciBzb2x1dGlv
bnMKKyAqICAgICAgIGZvciBsYXJnZSBudW1iZXIgb2Ygb3BlcmF0aW9ucy4KKyAqCisgKiBAc2Vl
IGV3a192aWV3X3BhaW50X2NvbnRlbnRzKCkKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfcGFp
bnQoKQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBm
b3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFj
a2luZyBzdG9yZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdiwgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2
LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRleHQsIGZhbHNlKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJlYSwgZmFsc2UpOwogICAgIFdlYkNv
cmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5GcmFtZS0+dmlldygpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBpZiAodmlldy0+
bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKLSAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNyKTsKLSAgICBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QoKmFyZWEpOwotCi0gICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LnNhdmUoKTsKLSAgICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKLSAgICBpZiAodmll
dy0+aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0KHJl
Y3QpOwotICAgIHZpZXctPnBhaW50KCZncmFwaGljc0NvbnRleHQsIHJlY3QpOwotICAgIGdyYXBo
aWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7CisKKyAgICBld2tf
cGFpbnRfY29udGV4dF9zYXZlKGNvbnRleHQpOworICAgIGV3a19wYWludF9jb250ZXh0X2NsaXAo
Y29udGV4dCwgYXJlYSk7CisgICAgZXdrX3BhaW50X2NvbnRleHRfcGFpbnQoY29udGV4dCwgdmll
dywgYXJlYSk7CisgICAgZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5n
bGUqIGFyZWEpCisvKioKKyAqIEBpbnRlcm5hbAorICogUGFpbnRzIGp1c3QgY29udGVudHMgdXNp
bmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0aGUgZ2l2ZW4gYXJlYS4KKyAqCisgKiBUaGlzIHVz
ZXMgYWJzb2x1dGUgY29vcmRpbmF0ZXMgZm9yIGFyZWEgYW5kIHdpbGwganVzdCBoYW5kbGUKKyAq
IGNvbnRlbnRzLCBubyBzY3JvbGxiYXJzIG9yIGV4dHJhcy4gU2VlIGV3a192aWV3X3BhaW50KCkg
Zm9yIHRoZQorICogYWx0ZXJuYXRpdmUgc29sdXRpb24uCisgKgorICogQHBhcmFtIHByaXYgdGhl
IHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0byB1c2UgYXMgcGFpbnQg
c291cmNlCisgKiBAcGFyYW0gY3IgdGhlIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBhaW50IGRl
c3RpbmF0aW9uLCBpdHMgc3RhdGUgd2lsbAorICogICAgICAgIGJlIHNhdmVkIGJlZm9yZSBvcGVy
YXRpb24gYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMKKyAqIEBwYXJhbSBhcmVhIGFic29sdXRlIGdl
b21ldHJ5IHRvIHBhaW50CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBv
ciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlzIGlzIGFuIGVhc3kg
dG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZQorICogICAgICAgYWx3
YXlzIGNyZWF0ZWQsIHRoZW4gZ3JhcGhpY3MgY29udGV4dCBpcyBjbGlwcGVkLCB0aGVuCisgKiAg
ICAgICBwYWludGVkLCByZXN0b3JlZCBhbmQgZGVzdHJveWVkLiBUaGlzIG1pZ2h0IG5vdCBiZSBv
cHRpbXVtLAorICogICAgICAgc28gdXNpbmcgQGEgRXdrX1BhaW50X0NvbnRleHQgbWF5IGJlIGEg
YmV0dGVyIHNvbHV0aW9ucworICogICAgICAgZm9yIGxhcmdlIG51bWJlciBvZiBvcGVyYXRpb25z
LgorICoKKyAqIEBzZWUgZXdrX3ZpZXdfcGFpbnQoKQorICogQHNlZSBld2tfcGFpbnRfY29udGV4
dF9wYWludF9jb250ZW50cygpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwg
dXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5l
IHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRf
Y29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFd2tfUGFpbnRfQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoY3IsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoY29udGV4dCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChh
cmVhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbkZy
YW1lLT52aWV3KCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIGZh
bHNlKTsKIAotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY3Ip
OwotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgqYXJlYSk7Ci0KLSAgICBjYWlyb19zYXZlKGNy
KTsKLSAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgIGdyYXBoaWNzQ29udGV4dC5jbGlw
KHJlY3QpOwotICAgIGlmICh2aWV3LT5pc1RyYW5zcGFyZW50KCkpCi0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC5jbGVhclJlY3QocmVjdCk7Ci0gICAgdmlldy0+cGFpbnRDb250ZW50cygmZ3JhcGhp
Y3NDb250ZXh0LCAgcmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKLSAgICBj
YWlyb19yZXN0b3JlKGNyKTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9zYXZlKGNvbnRleHQpOwor
ICAgIGV3a19wYWludF9jb250ZXh0X2NsaXAoY29udGV4dCwgYXJlYSk7CisgICAgZXdrX3BhaW50
X2NvbnRleHRfcGFpbnRfY29udGVudHMoY29udGV4dCwgdmlldywgYXJlYSk7CisgICAgZXdrX3Bh
aW50X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi0K
LS8qIGludGVybmFsIG1ldGhvZHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KIC8qKgogICogQGludGVybmFsCiAgKiBSZXBvcnRzIHRoZSB2aWV3
IGlzIHJlYWR5IHRvIGJlIGRpc3BsYXllZCBhcyBhbGwgZWxlbWVudHMgYXJlIGFyZWFkeS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggOTgyMTBmOC4uZWY0YjY3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKQEAgLTIxMTYsMTM1ICsyMTE2LDYgQEAgRUFQSSBFd2tfVmlld19TbWFy
dF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAg
Ki8KIEVBUEkgdm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpOwogCi0vLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3X1BhaW50
X0NvbnRleHQuCi10eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCBFd2tfVmll
d19QYWludF9Db250ZXh0OwotCi0vKioKLSAqIENyZWF0ZXMgYSBuZXcgcGFpbnQgY29udGV4dCB1
c2luZyB0aGUgdmlldyBhcyBzb3VyY2UgYW5kIGNhaXJvIGFzIG91dHB1dC4KLSAqCi0gKiBAcGFy
YW0gcHJpdiB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IHRvIHVz
ZSBhcyBwYWludCBzb3VyY2UKLSAqIEBwYXJhbSBjciBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBw
YWludCBkZXN0aW5hdGlvbiwgYSBuZXcKLSAqICAgICAgICByZWZlcmVuY2UgaXMgdGFrZW4sIHNv
IGl0J3Mgc2FmZSB0byBjYWxsIEBjIGNhaXJvX2Rlc3Ryb3koKQotICogICAgICAgIGFmdGVyIHRo
aXMgZnVuY3Rpb24gcmV0dXJucy4KLSAqCi0gKiBAcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGlu
c3RhbmNlIG9mIEBjIEV3a19WaWV3X1BhaW50X0NvbnRleHQgb24gc3VjY2VzcywKLSAqICAgICAg
ICAgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVy
YWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVm
aW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIEV3a19WaWV3X1BhaW50X0Nv
bnRleHQgKmV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiwgY2Fpcm9fdCAqY3IpOwotCi0vKioKLSAqIERlc3Ryb3lzIHRoZSBwcmV2aW91c2x5IGNy
ZWF0ZWQgdGhlIHBhaW50IGNvbnRleHQuCi0gKgotICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNv
bnRleHQgdG8gZGVzdHJveSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICoKLSAqIEBub3RlIFRoaXMg
aXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQK
LSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQSSB2
b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0ICpj
dHh0KTsKLQotLyoqCi0gKiBTYXZlcyAocHVzaCB0byBzdGFjaykgdGhlIHBhaW50IGNvbnRleHQg
c3RhdHVzLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIHNhdmUsIG11
c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVz
dG9yZSgpCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0
IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBi
YWNraW5nIHN0b3JlLgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZl
KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQpOwotCi0vKioKLSAqIFJlc3RvcmVzIChwb3Ag
ZnJvbSBzdGFjaykgdGhlIHBhaW50IGNvbnRleHQgc3RhdHVzLgotICoKLSAqIEBwYXJhbSBjdHh0
IHRoZSBwYWludCBjb250ZXh0IHRvIHJlc3RvcmUsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0g
KiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSgpCi0gKgotICogQG5vdGUgVGhpcyBp
cyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAot
ICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIHZv
aWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQg
KmN0eHQpOwotCi0vKioKLSAqIENsaXBzIHRoZSBwYWludCBjb250ZXh0IGRyYXdpbmdzIHRvIHRo
ZSBnaXZlbiBhcmVhLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIGNs
aXAsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqIEBwYXJhbSBhcmVhIGNsaXAgYXJlYSB0byB1c2Us
IG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRf
c2F2ZSgpCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZSgpCi0gKgotICog
QG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2Vz
IHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgot
ICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKEV3a19WaWV3X1BhaW50
X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKLQotLyoqCi0gKiBQ
YWludHMgdGhlIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KLSAqCi0gKiBAcGFyYW0gY3R4dCB0
aGUgcGFpbnQgY29udGV4dCB0byBwYWludCwgbXVzdCBAYiBub3QgYmUgQGMgMAotICogQHBhcmFt
IGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBjb29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8g
Y3VycmVudCB2aWV3cG9ydCwKLSAqICAgICAgICB0aHVzICJzY3JvbGxlZCIsIG11c3QgQGIgbm90
IGJlIEBjIDAKLSAqCi0gKiBAbm90ZSBPbmUgbWF5IHVzZSBjYWlybyBmdW5jdGlvbnMgb24gdGhl
IGNhaXJvIGNvbnRleHQgdG8KLSAqICAgICAgIHRyYW5zbGF0ZSwgc2NhbGUgb3IgYW55IG1vZGlm
aWNhdGlvbiB0aGF0IG1heSBmaXQgaGlzIGRlc2lyZXMuCi0gKgotICogQHNlZSBld2tfdmlld19w
YWludF9jb250ZXh0X2NsaXAoKQotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50
X2NvbnRlbnRzKCkKLSAqCi0gKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0
IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Ci0gKiAgICAgICB0byBkZWZpbmUgdGhlaXIg
b3duIGJhY2tpbmcgc3RvcmUuCi0gKi8KLUVBUEkgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3BhaW50KEV3a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
ICphcmVhKTsKLQotLyoqCi0gKiBQYWludHMganVzdCBjb250ZW50cyB1c2luZyBjb250ZXh0IHVz
aW5nIGdpdmVuIGFyZWEuCi0gKgotICogVW5saWtlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFp
bnQoKSwgdGhpcyBmdW5jdGlvbiBwYWludCBqdXN0Ci0gKiBiYXJlIGNvbnRlbnRzIGFuZCBpZ25v
cmVzIGFueSBzY3JvbGxpbmcsIHNjcm9sbGJhcnMgYW5kIGV4dHJhcy4gSXQKLSAqIHdpbGwgd2Fs
ayB0aGUgcmVuZGVyaW5nIHRyZWUgYW5kIHBhaW50IGNvbnRlbnRzIGluc2lkZSB0aGUgZ2l2ZW4K
LSAqIGFyZWEgdG8gdGhlIGNhaXJvIGNvbnRleHQgc3BlY2lmaWVkIGluIEBhIGN0eHQuCi0gKgot
ICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJl
IEBjIDAuCi0gKiBAcGFyYW0gYXJlYSB0aGUgcGFpbnQgYXJlYSB0byB1c2UsIGNvb3JkaW5hdGVz
IGFyZSBhYnNvbHV0ZSB0byBwYWdlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0gKgotICogQG5vdGUg
T25lIG1heSB1c2UgY2Fpcm8gZnVuY3Rpb25zIG9uIHRoZSBjYWlybyBjb250ZXh0IHRvCi0gKiAg
ICAgICB0cmFuc2xhdGUsIHNjYWxlIG9yIGFueSBtb2RpZmljYXRpb24gdGhhdCBtYXkgZml0IGhp
cyBkZXNpcmVzLgotICoKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKCkKLSAq
IEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludCgpCi0gKgotICogQG5vdGUgVGhpcyBp
cyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAot
ICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIHZv
aWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9D
b250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7Ci0KLS8qKgotICogU2Nh
bGVzIHRoZSBjb250ZW50cyBieSB0aGUgZ2l2ZW4gZmFjdG9ycy4KLSAqCi0gKiBUaGlzIGZ1bmN0
aW9uIGFwcGxpZXMgYSBzY2FsaW5nIHRyYW5zZm9ybWF0aW9uIHVzaW5nIENhaXJvLgotICoKLSAq
IEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIHNjYWxlLCBtdXN0IEBiIG5vdCBiZSBA
YyAwCi0gKiBAcGFyYW0gc2NhbGVfeCB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWCBkaW1lbnNp
b24KLSAqIEBwYXJhbSBzY2FsZV95IHRoZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBZIGRpbWVuc2lv
bgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zY2FsZShFd2tfVmlld19Q
YWludF9Db250ZXh0ICpjdHh0LCBmbG9hdCBzY2FsZV94LCBmbG9hdCBzY2FsZV95KTsKLQotLyoq
Ci0gKiBQZXJmb3JtcyBhIHRyYW5zbGF0aW9uIG9mIHRoZSBvcmlnaW4gY29vcmRpbmF0ZXMuCi0g
KgotICogVGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3JpZ2luIGNvb3JkaW5hdGVzIGJ5IEBhIHgg
YW5kIEBhIHkgcGl4ZWxzLgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRv
IHRyYW5zbGF0ZSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICogQHBhcmFtIHggYW1vdW50IG9mIHBp
eGVscyB0byB0cmFuc2xhdGUgaW4gdGhlIFggZGltZW5zaW9uCi0gKiBAcGFyYW0geSBhbW91bnQg
b2YgcGl4ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWSBkaW1lbnNpb24KLSAqLwotRUFQSSB2b2lk
IGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQg
KmN0eHQsIGZsb2F0IHgsIGZsb2F0IHkpOwotCiAvKioKICAqIFBhaW50cyB1c2luZyBnaXZlbiBn
cmFwaGljcyBjb250ZXh0IHRoZSBnaXZlbiBhcmVhLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXggMWRlY2UwNi4uNGU1NGE4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKQEAgLTIxMiwxMjUgKzIxMiw3MyBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEp
CiB7Ci0gICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dDsKLSAgICBFdmFzX0Nvb3Jk
IG93LCBvaDsKLSAgICB2b2lkKiBwaXhlbHM7Ci0gICAgRWluYV9SZWN0YW5nbGUqIHJlY3Q7Ci0g
ICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdDsKLSAgICBjb25zdCBFaW5hX1Jl
Y3RhbmdsZSogcGFpbnRSZXF1ZXN0RW5kOwotICAgIEVpbmFfVGlsZXIqIHRpbGVyOwotICAgIEVp
bmFfSXRlcmF0b3IqIGl0ZXJhdG9yOwotICAgIGNhaXJvX3N0YXR1c190IHN0YXR1czsKLSAgICBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7Ci0gICAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0OwotICAg
IGNhaXJvX3QqIGNhaXJvOwotICAgIHNpemVfdCBjb3VudDsKLSAgICBFaW5hX0Jvb2wgcmVzdWx0
ID0gdHJ1ZTsKLQogICAgIGlmIChzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50
IDwgMC4wMDAwMSkgewogICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2Ns
aXBfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0gICAgICAgIEV2YXNfQ29vcmQgd2lk
dGgsIGhlaWdodCwgY2VudGVyV2lkdGgsIGNlbnRlckhlaWdodDsKKwogICAgICAgICAvLyByZXNl
dCBlZmZlY3RzIG9mIHpvb21fd2Vha19zZXQoKQotICAgICAgICBldmFzX29iamVjdF9pbWFnZV9m
aWxsX3NldAotICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgMCwgMCwgc21h
cnREYXRhLT52aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsKKyAgICAgICAgZXZhc19vYmplY3Rf
aW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAwLCAwLCBzbWFydERhdGEt
PnZpZXcudywgc21hcnREYXRhLT52aWV3LmgpOwogICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNs
aXAsIHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueSk7CiAKLSAgICAgICAgd2lk
dGggPSBzbWFydERhdGEtPnZpZXcudzsKLSAgICAgICAgaGVpZ2h0ID0gc21hcnREYXRhLT52aWV3
Lmg7CisgICAgICAgIEV2YXNfQ29vcmQgd2lkdGggPSBzbWFydERhdGEtPnZpZXcudzsKKyAgICAg
ICAgRXZhc19Db29yZCBoZWlnaHQgPSBzbWFydERhdGEtPnZpZXcuaDsKIAorICAgICAgICBFdmFz
X0Nvb3JkIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQ7CiAgICAgICAgIGV3a19mcmFtZV9jb250
ZW50c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjZW50ZXJXaWR0aCwgJmNlbnRl
ckhlaWdodCk7CiAgICAgICAgIGlmICh3aWR0aCA+IGNlbnRlcldpZHRoKQogICAgICAgICAgICAg
d2lkdGggPSBjZW50ZXJXaWR0aDsKKwogICAgICAgICBpZiAoaGVpZ2h0ID4gY2VudGVySGVpZ2h0
KQogICAgICAgICAgICAgaGVpZ2h0ID0gY2VudGVySGVpZ2h0OwotICAgICAgICBldmFzX29iamVj
dF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQogCi0gICAgcGl4ZWxzID0gZXZh
c19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAxKTsKLSAg
ICBldmFzX29iamVjdF9pbWFnZV9zaXplX2dldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsICZv
dywgJm9oKTsKLSAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwotCi0gICAgc3VyZmFj
ZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhCi0gICAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyksIGZvcm1hdCwgb3csIG9oLCBv
dyAqIDQpOwotICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOwotICAg
IGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKLSAgICAgICAgRVJSKCJjb3Vs
ZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsCi0gICAgICAgICAgICBv
dywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7Ci0gICAgICAgIHJlc3VsdCA9
IGZhbHNlOwotICAgICAgICBnb3RvIGVycm9yX2NhaXJvX3N1cmZhY2U7Ci0gICAgfQotICAgIGNh
aXJvID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwotICAgIHN0YXR1cyA9IGNhaXJvX3N0YXR1cyhj
YWlybyk7Ci0gICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewotICAgICAg
ICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgY2Fpcm8gZnJvbSBzdXJmYWNlICVkeCVkOiAlcyIsCi0g
ICAgICAgICAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7Ci0gICAg
ICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBnb3RvIGVycm9yX2NhaXJvOworICAgICAgICBl
dmFzX29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogCi0gICAgY29u
dGV4dCA9IGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KHNtYXJ0RGF0YS0+X3ByaXYsIGNhaXJv
KTsKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHBh
aW50IGNvbnRleHQiKTsKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJy
b3JfcGFpbnRfY29udGV4dDsKLSAgICB9CisgICAgRXZhc19Db29yZCBpbWFnZVdpZHRoLCBpbWFn
ZUhlaWdodDsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX2dldChzbWFydERhdGEtPmJhY2tp
bmdfc3RvcmUsICZpbWFnZVdpZHRoLCAmaW1hZ2VIZWlnaHQpOwogCi0gICAgdGlsZXIgPSBlaW5h
X3RpbGVyX25ldyhvdywgb2gpOworICAgIEVpbmFfVGlsZXIqIHRpbGVyID0gZWluYV90aWxlcl9u
ZXcoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOwogICAgIGlmICghdGlsZXIpIHsKLSAgICAgICAg
RVJSKCJjb3VsZCBub3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgb3csIG9oKTsKLSAgICAgICAgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJyb3JfdGlsZXI7CisgICAgICAgIEVSUigiY291
bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGV3a192aWV3X2xheW91dF9pZl9uZWVk
ZWRfcmVjdXJzaXZlKHNtYXJ0RGF0YS0+X3ByaXYpOwogCi0gICAgcGFpbnRSZXF1ZXN0ID0gZXdr
X3ZpZXdfcmVwYWludHNfcG9wKHNtYXJ0RGF0YS0+X3ByaXYsICZjb3VudCk7Ci0gICAgcGFpbnRS
ZXF1ZXN0RW5kID0gcGFpbnRSZXF1ZXN0ICsgY291bnQ7CisgICAgc2l6ZV90IGNvdW50OworICAg
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBwYWludFJlcXVlc3QgPSBld2tfdmlld19yZXBhaW50c19w
b3Aoc21hcnREYXRhLT5fcHJpdiwgJmNvdW50KTsKKyAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSog
cGFpbnRSZXF1ZXN0RW5kID0gcGFpbnRSZXF1ZXN0ICsgY291bnQ7CiAgICAgZm9yICg7IHBhaW50
UmVxdWVzdCA8IHBhaW50UmVxdWVzdEVuZDsgcGFpbnRSZXF1ZXN0KyspCiAgICAgICAgIGVpbmFf
dGlsZXJfcmVjdF9hZGQodGlsZXIsIHBhaW50UmVxdWVzdCk7CiAKLSAgICBpdGVyYXRvciA9IGVp
bmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKKyAgICBFaW5hX0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGVpbmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKICAgICBpZiAoIWl0ZXJhdG9yKSB7
CiAgICAgICAgIEVSUigiY291bGQgbm90IGdldCBpdGVyYXRvciBmb3IgdGlsZXIiKTsKLSAgICAg
ICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJyb3JfaXRlcmF0b3I7CisgICAgICAg
IGVpbmFfdGlsZXJfZnJlZSh0aWxlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCA9IGV3a19wYWludF9jb250ZXh0X2Zyb21f
aW1hZ2VfbmV3KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7CisgICAgZXdrX3BhaW50X2NvbnRl
eHRfc2F2ZShjb250ZXh0KTsKKwogICAgIGludCBzY3JvbGxYLCBzY3JvbGxZOwogICAgIGV3a19m
cmFtZV9zY3JvbGxfcG9zX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZzY3JvbGxYLCAmc2Ny
b2xsWSk7CisgICAgaWYgKHNjcm9sbFggfHwgc2Nyb2xsWSkKKyAgICAgICAgZXdrX3BhaW50X2Nv
bnRleHRfdHJhbnNsYXRlKGNvbnRleHQsIC1zY3JvbGxYLCAtc2Nyb2xsWSk7CiAKKyAgICBFaW5h
X1JlY3RhbmdsZSogcmVjdDsKICAgICBFSU5BX0lURVJBVE9SX0ZPUkVBQ0goaXRlcmF0b3IsIHJl
Y3QpIHsKLSAgICAgICAgRWluYV9SZWN0YW5nbGUgc2Nyb2xsZWRfcmVjdCA9IHsKLSAgICAgICAg
ICAgIHJlY3QtPnggKyBzY3JvbGxYLCByZWN0LT55ICsgc2Nyb2xsWSwKLSAgICAgICAgICAgIHJl
Y3QtPncsIHJlY3QtPmgKLSAgICAgICAgfTsKLQotICAgICAgICBld2tfdmlld19wYWludF9jb250
ZXh0X3NhdmUoY29udGV4dCk7Ci0KLSAgICAgICAgaWYgKChzY3JvbGxYKSB8fCAoc2Nyb2xsWSkp
Ci0gICAgICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShjb250ZXh0LCAt
c2Nyb2xsWCwgLXNjcm9sbFkpOworICAgICAgICBFaW5hX1JlY3RhbmdsZSBzY3JvbGxlZFJlY3Qg
PSB7IHJlY3QtPnggKyBzY3JvbGxYLCByZWN0LT55ICsgc2Nyb2xsWSwgcmVjdC0+dywgcmVjdC0+
aCB9OworICAgICAgICBld2tfdmlld19wYWludF9jb250ZW50cyhzbWFydERhdGEtPl9wcml2LCBj
b250ZXh0LCAmc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91
cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcmVjdC0+eCwgcmVjdC0+eSwgcmVj
dC0+dywgcmVjdC0+aCk7CisgICAgfQogCi0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRf
Y2xpcChjb250ZXh0LCAmc2Nyb2xsZWRfcmVjdCk7Ci0gICAgICAgIGV3a192aWV3X3BhaW50X2Nv
bnRleHRfcGFpbnRfY29udGVudHMoY29udGV4dCwgJnNjcm9sbGVkX3JlY3QpOworICAgIGV3a19w
YWludF9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CisgICAgZXdrX3BhaW50X2NvbnRleHRfZnJl
ZShjb250ZXh0KTsKIAotICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29u
dGV4dCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAotICAgICAg
ICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+
dywgcmVjdC0+aCk7Ci0gICAgfQorICAgIGVpbmFfdGlsZXJfZnJlZSh0aWxlcik7CiAgICAgZWlu
YV9pdGVyYXRvcl9mcmVlKGl0ZXJhdG9yKTsKIAotZXJyb3JfaXRlcmF0b3I6Ci0gICAgZWluYV90
aWxlcl9mcmVlKHRpbGVyKTsKLWVycm9yX3RpbGVyOgotICAgIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfZnJlZShjb250ZXh0KTsKLWVycm9yX3BhaW50X2NvbnRleHQ6Ci0gICAgY2Fpcm9fZGVzdHJv
eShjYWlybyk7Ci1lcnJvcl9jYWlybzoKLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFj
ZSk7Ci1lcnJvcl9jYWlyb19zdXJmYWNlOgotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0
KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcGl4ZWxzKTsgLyogZGVjIHJlZmNvdW50ICovCi0K
LSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29y
ZCBjZW50ZXJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Rp
bGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5kZXgg
MzQyY2M0ZS4uNTIyYjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQu
Y3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKIAogI2luY2x1
ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxSZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGVpbmFfc2Fm
ZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUgPGV3a190aWxlZF9iYWNraW5nX3N0b3JlLmg+CiAKQEAg
LTM0LDQ0ICszMywxNyBAQCBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWlu
YV9SZWN0YW5nbGUqIGFyZWEpCiB7CiAgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0g
c3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oZGF0YSk7Ci0gICAgRWluYV9SZWN0
YW5nbGUgcmVjdCA9IHthcmVhLT54ICsgdGlsZS0+eCwgYXJlYS0+eSArIHRpbGUtPnksIGFyZWEt
PncsIGFyZWEtPmh9OyAgICAKLSAgICBpbnQgc3RyaWRlOwotICAgIGNhaXJvX2Zvcm1hdF90IGZv
cm1hdDsKLQotICAgIGlmICh0aWxlLT5jc3BhY2UgPT0gRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4
KSB7Ci0gICAgICAgIHN0cmlkZSA9IHRpbGUtPndpZHRoICogNDsKLSAgICAgICAgZm9ybWF0ID0g
Q0FJUk9fRk9STUFUX0FSR0IzMjsKLSAgICB9IGVsc2UgaWYgKHRpbGUtPmNzcGFjZSA9PSBFVkFT
X0NPTE9SU1BBQ0VfUkdCNTY1X0E1UCkgewotICAgICAgICBzdHJpZGUgPSB0aWxlLT53aWR0aCAq
IDI7Ci0gICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9SR0IxNl81NjU7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgRVJSKCJ1bmtub3duIGNvbG9yIHNwYWNlOiAlZCIsIHRpbGUtPmNzcGFjZSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgRWluYV9SZWN0YW5nbGUgcmVjdCA9
IHthcmVhLT54ICsgdGlsZS0+eCwgYXJlYS0+eSArIHRpbGUtPnksIGFyZWEtPncsIGFyZWEtPmh9
OwogCiAgICAgdWludDhfdCogcGl4ZWxzID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV2YXNfb2Jq
ZWN0X2ltYWdlX2RhdGFfZ2V0KHRpbGUtPmltYWdlLCB0cnVlKSk7Ci0gICAgaWYgKCFwaXhlbHMp
IHsKLSAgICAgICAgRVJSKCJmYWlsIHRvIGdldCB0aGUgcGl4ZWwgZGF0YSBmcm9tIHRoZSBpbWFn
ZSBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVh
dGVfZm9yX2RhdGEocGl4ZWxzLCBmb3JtYXQsIHRpbGUtPndpZHRoLCB0aWxlLT5oZWlnaHQsIHN0
cmlkZSkpOwotICAgIGNhaXJvX3N0YXR1c190IHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVz
KHN1cmZhY2UuZ2V0KCkpOwotICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1Mp
IHsKLSAgICAgICAgRVJSKCJmYWlsZWQgdG8gY3JlYXRlIGNhaXJvIHN1cmZhY2U6ICVzIiwgY2Fp
cm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICBFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCA9IGV3a19wYWludF9jb250ZXh0X2Zy
b21faW1hZ2VfZGF0YV9uZXcocGl4ZWxzLCB0aWxlLT53aWR0aCwgdGlsZS0+aGVpZ2h0LCB0aWxl
LT5jc3BhY2UpOwogCi0gICAgUmVmUHRyPGNhaXJvX3Q+IGNhaXJvID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKHN1cmZhY2UuZ2V0KCkpKTsKLSAgICBzdGF0dXMgPSBjYWlyb19zdGF0dXMoY2Fpcm8u
Z2V0KCkpOwotICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKLSAgICAg
ICAgRVJSKCJmYWlsZWQgdG8gY3JlYXRlIGNhaXJvOiAlcyIsIGNhaXJvX3N0YXR1c190b19zdHJp
bmcoc3RhdHVzKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgZXdrX3BhaW50
X2NvbnRleHRfdHJhbnNsYXRlKGNvbnRleHQsIC10aWxlLT54LCAtdGlsZS0+eSk7CisgICAgRWlu
YV9Cb29sIHJlc3VsdCA9IGV3a192aWV3X3BhaW50X2NvbnRlbnRzKHByaXYsIGNvbnRleHQsICZy
ZWN0KTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9mcmVlKGNvbnRleHQpOwogCi0gICAgY2Fpcm9f
dHJhbnNsYXRlKGNhaXJvLmdldCgpLCAtdGlsZS0+eCwgLXRpbGUtPnkpOwotCi0gICAgYm9vbCBy
ZXN1bHQgPSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBjYWlyby5nZXQoKSwgJnJlY3Qp
OwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KHRpbGUtPmltYWdlLCBwaXhlbHMpOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVmZmU2NTMuLmI4M2FiNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0w
NS0wOCAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBSZWZhY3RvciBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU4OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZs
L0NNYWtlTGlzdHMudHh0OiBBZGRlZCBpbmNsdWRlIGRpcmVjdG9yeS4KKwogMjAxMi0wNS0wOCAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbd2Via2l0LXBh
dGNoXSBBZGQgbmV3IGNocm9tZS1jaGFubmVscyBjb21tYW5kIHRvIHRyYWNrIGRvd24gY3VycmVu
dCBjaHJvbWUgcmVsZWFzZSBjaGFubmVscyBmb3IgYSBjb21taXR0ZWQgYnVnLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CmluZGV4IGFkMGFlMmQuLjU1MDA3MGUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKQEAgLTU5LDYgKzU5LDcgQEAgU0VU
KER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS90ZXh0CiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MKICAgICAk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybworICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9uZXR3b3JrCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwCiAgICAg
JHtXRUJDT1JFX0RJUn0vcGx1Z2lucwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145252</attachid>
            <date>2012-06-01 02:53:34 -0700</date>
            <delta_ts>2012-06-04 01:45:54 -0700</delta_ts>
            <desc>ewk_view_context_paint related changes 4</desc>
            <filename>paint4.patch</filename>
            <type>text/plain</type>
            <size>43222</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYWU2N2UzMy4uODdmNzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wNi0wMSAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBSZWZhY3RvciBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyBld2tf
cGFpbnRfY29udGV4dC5jcHAgZmlsZSB0byBzb3VyY2UgbGlzdC4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorCiAyMDEyLTA1LTMxICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtFXVtFRkxdIFJlbW92ZSB1bm5lZWRlZCBpbmNs
dWRlIHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDU0NjYzY2QuLjM4ZGM1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTEwLDYgKzExMCw3IEBAIExJU1QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiAgICAgZWZsL2V3ay9ld2tfbWFp
bi5jcHAKICAgICBlZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorICAgIGVmbC9ld2svZXdrX3BhaW50
X2NvbnRleHQuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAogICAgIGVm
bC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAKICAgICBlZmwvZXdrL2V3a19zZXR0aW5ncy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwppbmRleCA3Njg1NDQ2Li5hN2UxZWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDggQEAKKzIwMTItMDYtMDEgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdz
a2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVmYWN0b3IgZXdrX3ZpZXdfY29udGV4
dF9wYWludCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODU1ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlIGlzIHJlZHVjZSBzaXplIG9mIGV3
a192aWV3LmgvY3BwIGZpbGVzIGFuZCBtYWtlIHVzZSBvZiBld2tfdmlld19jb250ZXh0X3BhaW50
CisgICAgICAgIG9iamVjdCBieSBld2tfdmlld19zaW5nbGUgYW5kIGV3a192aWV3X3RpbGVkIGlu
c3RlYWQgb2YgZGlyZWN0IG9wZXJhdGlvbnMgb24gY2Fpcm8uCisgICAgICAgIFRoZSBjb2RlIGlz
IG1vcmUgb2JqZWN0aXZlIGFuZCBsb29rcyB2ZXJ5IHNpbXBsZSBub3cuCisgICAgICAgIFJlbW92
ZSBld2tfdmlld19jb250ZXh0X3BhaW50IGNvZGUgZnJvbSBld2tfdmlldyBoL2NwcCBmaWxlIGFu
ZCBtb3ZlIGl0IHRvIHNlcGFyYXRlIG5ldyBld2tfY29udGV4dF9wYWludCBmaWxlLgorICAgICAg
ICBUaGUgZXdrX3ZpZXdfY29udGV4dF9wYWludCBoYXMgYmVlbiByZW5hbWVkIHRvIGV3a19jb250
ZXh0X3BhaW50IGFuZCBpdCBpcyBub3QgYmluZGVkIHRvIHZpZXcgb24gY3JlYXRpb24gdGltZS4K
KworICAgICAgICAqIGV3ay9ld2tfcGFpbnRfY29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICBG
dW5jdGlvbnMgcmVuYW1lZCBhbmQgbW92ZWQgZnJvbSBld2tfdmlldyB0byBld2tfcGFpbnRfY29u
dGV4dCBmaWxlLgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfbmV3KToKKyAgICAgICAgKGV3
a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KTogTmV3IGZ1bmN0aW9uLgorICAgICAgICAo
ZXdrX3BhaW50X2NvbnRleHRfZnJvbV9pbWFnZV9kYXRhX25ldyk6IE5ldyBmdW5jdGlvbi4KKyAg
ICAgICAgKGV3a19wYWludF9jb250ZXh0X2ZyZWUpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRl
eHRfc2F2ZSk6CisgICAgICAgIChld2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKToKKyAgICAgICAg
KGV3a19wYWludF9jb250ZXh0X2NsaXApOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfc2Nh
bGUpOgorICAgICAgICAoZXdrX3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKToKKyAgICAgICAgKGV3
a19wYWludF9jb250ZXh0X3BhaW50KTogQWRkZWQgRnJhbWVWaWV3IHBhcmFtZXRlci4KKyAgICAg
ICAgKGV3a19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKTogQWRkZWQgRnJhbWVWaWV3IHBh
cmFtZXRlci4KKyAgICAgICAgKiBld2svZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKF9Fd2tfUGFpbnRfQ29udGV4dCk6CisgICAgICAgICogZXdrL2V3a19wcml2
YXRlLmg6IEZ1bmN0aW9ucyBld2tfdmlld19wYWludCBhbmQgZXdrX3ZpZXdfcGFpbnRfY29udGVu
dHMgbW92ZWQgZnJvbSBld2tfdmlldy5oLgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS5oOiBSZW1vdmVkIHVudXNlZCBpbmNsdWRlLgorICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6IE1vdmVkIGFsbCBmdW5jdGlvbiByZWxlYXRlZCB0byBwYWludCBjb250ZXh0IG9iamVj
dCB0byBuZXcgZXdrX3BhaW50X2NvbnRleHQgZmlsZS4KKyAgICAgICAgKF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnQpOiBDaGFuZ2VkIGZ1bmN0aW9uIGFj
Y29yZGluZyBjaGFuZ2UgaW4gZXdrX3BhaW50X2NvbnRleHRfcGFpbnQgZnVuY3Rpb24uCisgICAg
ICAgIChld2tfdmlld19wYWludF9jb250ZW50cyk6IENoYW5nZWQgZnVuY3Rpb24gYWNjb3JkaW5n
IGNoYW5nZSBpbiBld2tfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyBmdW5jdGlvbi4KKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuaDogUmVtb3ZlZCBhbGwgcGFpbnQgY29udGV4dCBmdW5jdGlv
bnMgYW5kIGV3a192aWV3X3BhaW50LCBld2tfdmlld19wYWludF9jb250ZW50cyBmdW5jdGlvbiBm
cm9tCisgICAgICAgIHB1YmxpYyBBUEkuCisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgor
ICAgICAgICBSZWZhY3RvciBvZiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nl
c3MgZnVuY3Rpb24uCisgICAgICAgIFJlbW92ZWQgZ290byBzdGF0ZW1lbnRzLgorICAgICAgICBS
ZW1vdmVkIHZhcmlhYmxlcyBkZWNsYXJhdGlvbiBmcm9tIGZ1bmN0aW9uIGJlZ2lubmluZy4KKyAg
ICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgorICAgICAgICAoX2V3a192aWV3X3RpbGVk
X3JlbmRlcl9jYik6IE1ha2UgdXNlIG9mIGV3a19wYWludF9jb250ZXh0IG9iamVjdCBpbnN0ZWFk
IG9mIGRpcmVjdGlvbiBvcGVyYXRpb24gb24gY2Fpcm8uCisgICAgICAgIExvb2tzIHNpbXBsZXIg
YW5kIG1vcmUgb2JqZWN0aXZlLgorCiAyMDEyLTA1LTMxICBIYWppbWUgTW9ycml0YSAgPG1vcnJp
dGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNzU3Mik6IGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbCBjcmFzaGVzIG9uIE1h
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU1N2YwMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcGFpbnRfY29udGV4dC5jcHAKQEAgLTAsMCArMSwxNzIg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiZXdrX3BhaW50X2NvbnRleHRfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisKK0V3a19QYWludF9Db250ZXh0KiBl
d2tfcGFpbnRfY29udGV4dF9uZXcoY2Fpcm9fdCogY2Fpcm8pCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGNhaXJvLCAwKTsKKworICAgIEV3a19QYWludF9Db250ZXh0KiBj
b250ZXh0ID0gbmV3IEV3a19QYWludF9Db250ZXh0OworICAgIGNvbnRleHQtPmdyYXBoaWNDb250
ZXh0ID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dChjYWlybykpOworICAg
IGNvbnRleHQtPmNhaXJvID0gYWRvcHRSZWYoY2Fpcm9fcmVmZXJlbmNlKGNhaXJvKSk7CisgICAg
Y29udGV4dC0+aW1hZ2UgPSAwOworICAgIGNvbnRleHQtPnBpeGVscyA9IDA7CisKKyAgICByZXR1
cm4gY29udGV4dDsKK30KKworRXdrX1BhaW50X0NvbnRleHQqIGV3a19wYWludF9jb250ZXh0X2Zy
b21faW1hZ2VfbmV3KEV2YXNfT2JqZWN0KiBpbWFnZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoaW1hZ2UsIDApOworCisgICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0
OworICAgIHVpbnQ4X3QqIHBpeGVscyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihldmFzX29iamVj
dF9pbWFnZV9kYXRhX2dldChpbWFnZSwgdHJ1ZSkpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Np
emVfZ2V0KGltYWdlLCAmd2lkdGgsICZoZWlnaHQpOworCisgICAgRXdrX1BhaW50X0NvbnRleHQq
IGNvbnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHBpeGVscywg
d2lkdGgsIGhlaWdodCwgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4KTsKKyAgICBpZiAoY29udGV4
dCkgeworICAgICAgICBjb250ZXh0LT5waXhlbHMgPSBwaXhlbHM7CisgICAgICAgIGNvbnRleHQt
PmltYWdlID0gaW1hZ2U7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK0V3a19Q
YWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHVpbnQ4
X3QqIHBpeGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgY29sb3JTcGFjZSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGl4ZWxzLCAwKTsKKworICAgIE93blB0
cjxFd2tfUGFpbnRfQ29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBFd2tfUGFpbnRfQ29u
dGV4dCk7CisgICAgY29udGV4dC0+cGl4ZWxzID0gcGl4ZWxzOworICAgIGNvbnRleHQtPmltYWdl
ID0gMDsKKworICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsKKyAgICBpbnQgc3RyaWRlOworICAg
IHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2UgRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4
OgorICAgICAgICBzdHJpZGUgPSB3aWR0aCAqIDQ7CisgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZP
Uk1BVF9BUkdCMzI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVZBU19DT0xPUlNQQUNFX1JH
QjU2NV9BNVA6CisgICAgICAgIHN0cmlkZSA9IHdpZHRoICogMjsKKyAgICAgICAgZm9ybWF0ID0g
Q0FJUk9fRk9STUFUX1JHQjE2XzU2NTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgRVJSKCJ1bmtub3duIGNvbG9yIHNwYWNlOiAlZCIsIGNvbG9yU3BhY2UpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250ZXh0LT5zdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEocGl4ZWxzLCBmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIHN0cmlkZSkpOworICAgIGNhaXJvX3N0YXR1c190IHN0YXR1cyA9IGNhaXJvX3N1cmZh
Y2Vfc3RhdHVzKGNvbnRleHQtPnN1cmZhY2UuZ2V0KCkpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHN1cmZh
Y2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsIHdpZHRoLCBoZWlnaHQsIGNhaXJvX3N0YXR1c190b19z
dHJpbmcoc3RhdHVzKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGNvbnRleHQt
PmNhaXJvID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGNvbnRleHQtPnN1cmZhY2UuZ2V0KCkpKTsK
KyAgICBzdGF0dXMgPSBjYWlyb19zdGF0dXMoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpOworICAgIGlm
IChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBu
b3QgY3JlYXRlIGNhaXJvIGZyb20gc3VyZmFjZSAlZHglZDogJXMiLCB3aWR0aCwgaGVpZ2h0LCBj
YWlyb19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dCA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpKTsKKworICAgIHJldHVybiBjb250
ZXh0LnJlbGVhc2UoKS5sZWFrUHRyKCk7Cit9CisKK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfZnJl
ZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihjb250ZXh0KTsKKworICAgIGlmIChjb250ZXh0LT5pbWFnZSAmJiBjb250ZXh0LT5w
aXhlbHMpIHsKKyAgICAgICAgLy8gRGVjcmVhc2UgcmVmY291bnQgaW5zaWRlIGltYWdlIG9iamVj
dC4KKyAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoY29udGV4dC0+aW1hZ2UsIGNv
bnRleHQtPnBpeGVscyk7CisgICAgfQorICAgIGRlbGV0ZSBjb250ZXh0OworfQorCit2b2lkIGV3
a19wYWludF9jb250ZXh0X3NhdmUoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7CisKKyAgICBjYWlyb19zYXZlKGNv
bnRleHQtPmNhaXJvLmdldCgpKTsKKyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+c2F2ZSgp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1BhaW50X0NvbnRleHQq
IGNvbnRleHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7CisK
KyAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+cmVzdG9yZSgpOworICAgIGNhaXJvX3Jlc3Rv
cmUoY29udGV4dC0+Y2Fpcm8uZ2V0KCkpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X2Ns
aXAoRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVh
KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRl
eHQtPmNsaXAoV2ViQ29yZTo6SW50UmVjdCgqYXJlYSkpOworfQorCit2b2lkIGV3a19wYWludF9j
b250ZXh0X3NjYWxlKEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzY2FsZVgsIGZs
b2F0IHNjYWxlWSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsK
KworICAgIGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LT5zY2FsZShXZWJDb3JlOjpGbG9hdFNpemUo
c2NhbGVYLCBzY2FsZVkpKTsKK30KKwordm9pZCBld2tfcGFpbnRfY29udGV4dF90cmFuc2xhdGUo
RXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7CisKKyAgICBjb250ZXh0LT5ncmFwaGlj
Q29udGV4dC0+dHJhbnNsYXRlKHgsIHkpOworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3Bh
aW50KEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcs
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGNvbnRleHQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHZpZXcpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgV2ViQ29yZTo6SW50
UmVjdCBwYWludEFyZWEoKmFyZWEpOworCisgICAgaWYgKHZpZXctPmlzVHJhbnNwYXJlbnQoKSkK
KyAgICAgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChwYWludEFyZWEpOwor
ICAgIHZpZXctPnBhaW50KGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LmdldCgpLCBwYWludEFyZWEp
OworfQorCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3a19QYWludF9D
b250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHZpZXcpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGFyZWEpOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBwYWludEFyZWEo
KmFyZWEpOworCisgICAgaWYgKHZpZXctPmlzVHJhbnNwYXJlbnQoKSkKKyAgICAgICAgY29udGV4
dC0+Z3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChwYWludEFyZWEpOworICAgIHZpZXctPnBhaW50
Q29udGVudHMoY29udGV4dC0+Z3JhcGhpY0NvbnRleHQuZ2V0KCksIHBhaW50QXJlYSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI3YjA3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wYWludF9jb250ZXh0X3ByaXZhdGUuaApA
QCAtMCwwICsxLDIyMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19wYWludF9jb250ZXh0X3ByaXZh
dGUuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBwYWludCBjb250ZXh0IEFQSS4KKyAqLwor
CisjaWZuZGVmIGV3a19wYWludF9jb250ZXh0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfcGFpbnRf
Y29udGV4dF9wcml2YXRlX2gKKworI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSA8RXZh
cy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBA
YSBfRXdrX1BhaW50X0NvbnRleHQuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1BhaW50X0NvbnRleHQg
RXdrX1BhaW50X0NvbnRleHQ7CisKKy8qKgorICogQGJyaWVmIFN0cnVjdHVyZSB0aGF0IGtlZXBz
IHRoZSBwYWludCBjb250ZXh0LgorICoKKyAqIEBpbnRlcm5hbAorICoKKyAqIEBub3RlIFRoaXMg
aXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQK
KyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLworc3RydWN0
IF9Fd2tfUGFpbnRfQ29udGV4dCB7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4gZ3JhcGhpY0NvbnRleHQ7CisgICAgUmVmUHRyPGNhaXJvX3Q+IGNhaXJvOworICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2U7IC8qKjwgc3VyZmFjZSB1c2VkIHRvIGNyZWF0ZSBj
YWlybyBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCogaW1hZ2U7IC8qKjwgaW1hZ2UgdXNlZCB0
byBjcmVhdGUgY2Fpcm8gc3VyZmFjZSAqLworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsczsgLyoq
PCBwaXhlbHMgZm9ybSBpbWFnZSAqLworfTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENyZWF0
ZXMgYSBuZXcgcGFpbnQgY29udGV4dCB1c2luZyBhIGNhaXJvIGFzIG91dHB1dC4KKyAqCisgKiBA
cGFyYW0gY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24sIGEgbmV3Cisg
KiAgICAgICAgcmVmZXJlbmNlIGlzIHRha2VuLCBzbyBpdCdzIHNhZmUgdG8gY2FsbCBAYyBjYWly
b19kZXN0cm95KCkKKyAqICAgICAgICBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMuCisgKgor
ICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbnN0YW5jZSBvZiBAYyBFd2tfUGFpbnRfQ29u
dGV4dCBvbiBzdWNjZXNzLAorICogICAgICAgICBvciBAYyAwIG9uIGZhaWx1cmUKKyAqCisgKiBA
bm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMg
dGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisg
Ki8KK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRfY29udGV4dF9uZXcoY2Fpcm9fdCogY2Fp
cm8pOworCisvKioKKyAqIEBpbnRlcm5hbAorICogQ3JlYXRlcyBhIG5ldyBwYWludCBjb250ZXh0
IHVzaW5nIGFuIGltYWdlIGFzIG91dHB1dC4KKyAqCisgKiBAcGFyYW0gaW1hZ2UgdG8gdXNlIGFz
IHBhaW50IGRlc3RpbmF0aW9uCisgKgorICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbnN0
YW5jZSBvZiBAYyBFd2tfUGFpbnRfQ29udGV4dCBvbiBzdWNjZXNzLAorICogICAgICAgICBvciBA
YyAwIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK0V3a19QYWludF9Db250ZXh0KiBld2tfcGFpbnRf
Y29udGV4dF9mcm9tX2ltYWdlX25ldyhFdmFzX09iamVjdCogaW1hZ2UpOworCisvKioKKyAqIEBp
bnRlcm5hbAorICogQ3JlYXRlcyBhIG5ldyBwYWludCBjb250ZXh0IHVzaW5nIGFuIGltYWdlIGFz
IG91dHB1dC4KKyAqCisgKiBAcGFyYW0gcGl4ZWwgcG9pbnRlciB0byBwaXhlbCBidWZmZXIKKyAq
IEBwYXJhbSB3aWR0aCBzaXplIG9mIHBpeGVsIGJ1ZmZlcgorICogQHBhcmFtIGhlaWdodCBzaXpl
IG9mIHBpeGVsIGJ1ZmZlcgorICogQHBhcmFtIGNvbG9yU3BhY2UgRXZhc19Db2xvcnNwYWNlIG9m
IHBpeGVsIGJ1ZmZlcgorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW5zdGFuY2Ug
b2YgQGMgRXdrX1BhaW50X0NvbnRleHQgb24gc3VjY2VzcywKKyAqICAgICAgICAgb3IgQGMgMCBv
biBmYWlsdXJlCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBq
dXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93
biBiYWNraW5nIHN0b3JlLgorICovCitFd2tfUGFpbnRfQ29udGV4dCogZXdrX3BhaW50X2NvbnRl
eHRfZnJvbV9pbWFnZV9kYXRhX25ldyh1aW50OF90KiBwaXhlbHMsIGludCB3aWR0aCwgaW50IGhl
aWdodCwgaW50IGNvbG9yU3BhY2UpOworCisvKioKKyAqIEBpbnRlcm5hbAorICogRGVzdHJveXMg
dGhlIHByZXZpb3VzbHkgY3JlYXRlZCB0aGUgcGFpbnQgY29udGV4dC4KKyAqCisgKiBAcGFyYW0g
Y29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byBkZXN0cm95LCBtdXN0IEBiIG5vdCBiZSBAYyAw
CisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBz
dWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5n
IHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X2ZyZWUoRXdrX1BhaW50X0NvbnRl
eHQqIGNvbnRleHQpOworCisvKioKKyAqIEBpbnRlcm5hbAorICogU2F2ZXMgKHB1c2ggdG8gc3Rh
Y2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUg
cGFpbnQgY29udGV4dCB0byBzYXZlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQHNlZSBl
d2tfcGFpbnRfY29udGV4dF9yZXN0b3JlKCkKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3Ig
Z2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0
byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisgKi8KK3ZvaWQgZXdrX3BhaW50X2Nv
bnRleHRfc2F2ZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCk7CisKKy8qKgorICogQGludGVy
bmFsCisgKiBSZXN0b3JlcyAocG9wIGZyb20gc3RhY2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1
cy4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byByZXN0b3JlLCBt
dXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9zYXZlKCkK
KyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1
YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcg
c3RvcmUuCisgKi8KK3ZvaWQgZXdrX3BhaW50X2NvbnRleHRfcmVzdG9yZShFd2tfUGFpbnRfQ29u
dGV4dCogY29udGV4dCk7CisKKy8qKgorICogQGludGVybmFsCisgKiBDbGlwcyB0aGUgcGFpbnQg
Y29udGV4dCBkcmF3aW5ncyB0byB0aGUgZ2l2ZW4gYXJlYS4KKyAqCisgKiBAcGFyYW0gY29udGV4
dCB0aGUgcGFpbnQgY29udGV4dCB0byBjbGlwLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFy
YW0gYXJlYSBjbGlwIGFyZWEgdG8gdXNlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKgorICogQHNl
ZSBld2tfcGFpbnRfY29udGV4dF9zYXZlKCkKKyAqIEBzZWUgZXdrX3BhaW50X2NvbnRleHRfcmVz
dG9yZSgpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0
IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBi
YWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X2NsaXAoRXdrX1BhaW50
X0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKTsKKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIFNjYWxlcyB0aGUgY29udGVudHMgYnkgdGhlIGdpdmVuIGZhY3RvcnMu
CisgKgorICogVGhpcyBmdW5jdGlvbiBhcHBsaWVzIGEgc2NhbGluZyB0cmFuc2Zvcm1hdGlvbiB1
c2luZyBDYWlyby4KKyAqCisgKiBAcGFyYW0gY29udGV4dCB0aGUgcGFpbnQgY29udGV4dCB0byBz
Y2FsZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBhcmFtIHNjYWxlX3ggdGhlIHNjYWxlIGZh
Y3RvciBmb3IgdGhlIFggZGltZW5zaW9uCisgKiBAcGFyYW0gc2NhbGVfeSB0aGUgc2NhbGUgZmFj
dG9yIGZvciB0aGUgWSBkaW1lbnNpb24KKyAqLwordm9pZCBld2tfcGFpbnRfY29udGV4dF9zY2Fs
ZShFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVf
eSk7CisKKy8qKgorICogQGludGVybmFsCisgKiBQZXJmb3JtcyBhIHRyYW5zbGF0aW9uIG9mIHRo
ZSBvcmlnaW4gY29vcmRpbmF0ZXMuCisgKgorICogVGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3Jp
Z2luIGNvb3JkaW5hdGVzIGJ5IEBhIHggYW5kIEBhIHkgcGl4ZWxzLgorICoKKyAqIEBwYXJhbSBj
b250ZXh0IHRoZSBwYWludCBjb250ZXh0IHRvIHRyYW5zbGF0ZSwgbXVzdCBAYiBub3QgYmUgQGMg
MAorICogQHBhcmFtIHggYW1vdW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUgaW4gdGhlIFggZGlt
ZW5zaW9uCisgKiBAcGFyYW0geSBhbW91bnQgb2YgcGl4ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUg
WSBkaW1lbnNpb24KKyAqLwordm9pZCBld2tfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1Bh
aW50X0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHkpOworCisvKioKKyAqIEBpbnRl
cm5hbAorICogUGFpbnRzIHRoZSBjb250ZXh0IHVzaW5nIGdpdmVuIGFyZWEuCisgKgorICogQHBh
cmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJlIEBj
IDAKKyAqIEBwYXJhbSB2aWV3IHRoZSB2aWV3IHRvIHBhaW50CisgKiBAcGFyYW0gYXJlYSB0aGUg
cGFpbnQgYXJlYSB0byB1c2UsIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byBjdXJyZW50IHZp
ZXdwb3J0LAorICogICAgICAgIHRodXMgInNjcm9sbGVkIiwgbXVzdCBAYiBub3QgYmUgQGMgMAor
ICoKKyAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29u
dGV4dCB0bworICogICAgICAgdHJhbnNsYXRlLCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRo
YXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAqCisgKiBAc2VlIGV3a19wYWludF9jb250ZXh0X2Ns
aXAoKQorICogQHNlZSBld2tfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cygpCisgKgorICog
QG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2Vz
IHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgor
ICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50KEV3a19QYWludF9Db250ZXh0KiBjb250
ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVh
KTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFBhaW50cyBqdXN0IGNvbnRlbnRzIHVzaW5nIGNv
bnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KKyAqCisgKiBVbmxpa2UgZXdrX3BhaW50X2NvbnRleHRf
cGFpbnQoKSwgdGhpcyBmdW5jdGlvbiBwYWludCBqdXN0CisgKiBiYXJlIGNvbnRlbnRzIGFuZCBp
Z25vcmVzIGFueSBzY3JvbGxpbmcsIHNjcm9sbGJhcnMgYW5kIGV4dHJhcy4gSXQKKyAqIHdpbGwg
d2FsayB0aGUgcmVuZGVyaW5nIHRyZWUgYW5kIHBhaW50IGNvbnRlbnRzIGluc2lkZSB0aGUgZ2l2
ZW4KKyAqIGFyZWEgdG8gdGhlIGNhaXJvIGNvbnRleHQgc3BlY2lmaWVkIGluIEBhIGNvbnRleHQu
CisgKgorICogQHBhcmFtIGNvbnRleHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3Qg
QGIgbm90IGJlIEBjIDAuCisgKiBAcGFyYW0gdmlldyB0aGUgdmlldyB0byBwYWludAorICogQHBh
cmFtIGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBjb29yZGluYXRlcyBhcmUgYWJzb2x1dGUg
dG8gcGFnZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICoKKyAqIEBub3RlIE9uZSBtYXkgdXNlIGNh
aXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bworICogICAgICAgdHJhbnNsYXRl
LCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KKyAq
CisgKiBAc2VlIGV3a19wYWludF9jb250ZXh0X2NsaXAoKQorICogQHNlZSBld2tfcGFpbnRfY29u
dGV4dF9wYWludCgpCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1
dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWly
IG93biBiYWNraW5nIHN0b3JlLgorICovCit2b2lkIGV3a19wYWludF9jb250ZXh0X3BhaW50X2Nv
bnRlbnRzKEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpGcmFtZVZpZXcqIHZp
ZXcsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKTsKKworI2VuZGlmIC8vIGV3a19wYWludF9j
b250ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgKaW5kZXggNDM1YWM3Yi4uMmFhMGIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJpdmF0ZS5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJFV2ViS2l0LmgiCiAj
aW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPGNhaXJvLmg+CiAKIC8qIEVuYWJsZSBhY2NvdW50
aW5nIG9mIHJlbmRlciB0aW1lIGluIHRpbGUgc3RhdGlzdGljcyAqLwogLy8gI2RlZmluZSBUSUxF
X1NUQVRTX0FDQ09VTlRfUkVOREVSX1RJTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmlu
ZGV4IDFlYzVmOTcuLjJhZWJiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAt
NjAsNiArNjAsNyBAQAogI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19qc19wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3BhaW50X2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCkBAIC0yNzYxLDE1NCArMjc2MiwxMTkgQEAgdm9pZCBld2tfdmlld19zY3Jv
bGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIF9ld2tfdmll
d19zY3JvbGxzX2ZsdXNoKHByaXYpOwogfQogCi0vKioKLSAqIEBicmllZiBTdHJ1Y3R1cmUgdGhh
dCBrZWVwcyB0aGUgcGFpbnQgY29udGV4dC4KLSAqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBAbm90
ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhh
dCB3YW50Ci0gKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCi0gKi8K
LXN0cnVjdCBfRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCB7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3
KiB2aWV3OwotICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNDb250
ZXh0OwotICAgIFJlZlB0cjxjYWlyb190PiBjYWlybzsKLX07Ci0KLUV3a19WaWV3X1BhaW50X0Nv
bnRleHQqIGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgY2Fpcm9fdCogY2Fpcm8pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHByaXYsIDApOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYWlybywg
MCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1haW5GcmFtZSwg
MCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPm1haW5GcmFtZS0+
dmlldygpLCAwKTsKLQotICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBuZXcg
RXdrX1ZpZXdfUGFpbnRfQ29udGV4dDsKLSAgICBjb250ZXh0LT52aWV3ID0gcHJpdi0+bWFpbkZy
YW1lLT52aWV3KCk7Ci0gICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQgPSBhZG9wdFB0cihuZXcg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KGNhaXJvKSk7Ci0gICAgY29udGV4dC0+Y2Fpcm8gPSBh
ZG9wdFJlZihjYWlyb19yZWZlcmVuY2UoY2Fpcm8pKTsKLQotICAgIHJldHVybiBjb250ZXh0Owot
fQotCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250
ZXh0KiBjb250ZXh0KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQp
OwotCi0gICAgZGVsZXRlIGNvbnRleHQ7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0KLSAgICBjYWlyb19zYXZlKGNvbnRleHQtPmNh
aXJvLmdldCgpKTsKLSAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+c2F2ZSgpOwotfQotCi12
b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9Db250ZXh0
KiBjb250ZXh0KQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNvbnRleHQpOwot
Ci0gICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPnJlc3RvcmUoKTsKLSAgICBjYWlyb19yZXN0
b3JlKGNvbnRleHQtPmNhaXJvLmdldCgpKTsKLX0KLQotdm9pZCBld2tfdmlld19wYWludF9jb250
ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCwgY29uc3QgRWluYV9SZWN0
YW5nbGUqIGFyZWEpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7Ci0gICAgY29udGV4dC0+Z3Jh
cGhpY0NvbnRleHQtPmNsaXAoV2ViQ29yZTo6SW50UmVjdCgqYXJlYSkpOwotfQotCi12b2lkIGV3
a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4
dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oY29udGV4dCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7
Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoKmFyZWEpOwotCi0gICAgaWYgKGNvbnRleHQt
PnZpZXctPmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQt
PmNsZWFyUmVjdChyZWN0KTsKLSAgICBjb250ZXh0LT52aWV3LT5wYWludChjb250ZXh0LT5ncmFw
aGljQ29udGV4dC5nZXQoKSwgcmVjdCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4
dF9wYWludF9jb250ZW50cyhFd2tfVmlld19QYWludF9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBF
aW5hX1JlY3RhbmdsZSogYXJlYSkKK0VpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3QqIGNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJl
YSkKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0KTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcmVhKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgcmVj
dCgqYXJlYSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBmYWxzZSk7
CiAKLSAgICBpZiAoY29udGV4dC0+dmlldy0+aXNUcmFuc3BhcmVudCgpKQotICAgICAgICBjb250
ZXh0LT5ncmFwaGljQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOworICAgIEV3a19QYWludF9Db250
ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRleHRfbmV3KGNyKTsKKyAgICBib29sIHJlc3Vs
dCA9IGV3a192aWV3X3BhaW50KHByaXYsIGNvbnRleHQsIGFyZWEpOworICAgIGV3a19wYWludF9j
b250ZXh0X2ZyZWUoY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT52aWV3LT5wYWludENvbnRlbnRz
KGNvbnRleHQtPmdyYXBoaWNDb250ZXh0LmdldCgpLCByZWN0KTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWly
b190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oY29udGV4dCk7Ci0KLSAgICBjb250ZXh0LT5ncmFwaGljQ29udGV4dC0+
c2NhbGUoV2ViQ29yZTo6RmxvYXRTaXplKHNjYWxlWCwgc2NhbGVZKSk7Ci19CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBmYWxzZSk7CiAKLXZvaWQgZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4dCwgZmxv
YXQgeCwgZmxvYXQgeSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250ZXh0
KTsKKyAgICBFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCA9IGV3a19wYWludF9jb250ZXh0X25l
dyhjcik7CisgICAgYm9vbCByZXN1bHQgPSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBj
b250ZXh0LCBhcmVhKTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9mcmVlKGNvbnRleHQpOwogCi0g
ICAgY29udGV4dC0+Z3JhcGhpY0NvbnRleHQtPnRyYW5zbGF0ZSh4LCB5KTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCisvKiBp
bnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCisvKioKKyAqIEBpbnRlcm5hbAorICogUGFpbnRzIHVzaW5nIGdpdmVuIGdy
YXBoaWNzIGNvbnRleHQgdGhlIGdpdmVuIGFyZWEuCisgKgorICogVGhpcyB1c2VzIHZpZXdwb3J0
IHJlbGF0aXZlIGFyZWEgYW5kIHdpbGwgYWxzbyBoYW5kbGUgc2Nyb2xsYmFycworICogYW5kIG90
aGVyIGV4dHJhIGVsZW1lbnRzLiBTZWUgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoKSBmb3IgdGhl
CisgKiBhbHRlcm5hdGl2ZSBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gcHJpdiB0aGUgcG9pbnRl
ciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UK
KyAqIEBwYXJhbSBjciB0aGUgY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRp
b24sIGl0cyBzdGF0ZSB3aWxsCisgKiAgICAgICAgYmUgc2F2ZWQgYmVmb3JlIG9wZXJhdGlvbiBh
bmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcworICogQHBhcmFtIGFyZWEgdmlld3BvcnQgcmVsYXRpdmUg
Z2VvbWV0cnkgdG8gcGFpbnQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBub3RlIFRoaXMgaXMgYW4gZWFz
eSB0byB1c2UgdmVyc2lvbiwgYnV0IGludGVybmFsIHN0cnVjdHVyZXMgYXJlCisgKiAgICAgICBh
bHdheXMgY3JlYXRlZCwgdGhlbiBncmFwaGljcyBjb250ZXh0IGlzIGNsaXBwZWQsIHRoZW4KKyAq
ICAgICAgIHBhaW50ZWQsIHJlc3RvcmVkIGFuZCBkZXN0cm95ZWQuIFRoaXMgbWlnaHQgbm90IGJl
IG9wdGltdW0sCisgKiAgICAgICBzbyB1c2luZyBAYSBFd2tfUGFpbnRfQ29udGV4dCBtYXkgYmUg
YSBiZXR0ZXIgc29sdXRpb25zCisgKiAgICAgICBmb3IgbGFyZ2UgbnVtYmVyIG9mIG9wZXJhdGlv
bnMuCisgKgorICogQHNlZSBld2tfdmlld19wYWludF9jb250ZW50cygpCisgKiBAc2VlIGV3a19w
YWludF9jb250ZXh0X3BhaW50KCkKKyAqCisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJh
bCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiAgICAgICB0byBkZWZp
bmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCisqLworRWluYV9Cb29sIGV3a192aWV3X3BhaW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChwcml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRl
eHQsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJlYSwgZmFs
c2UpOwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5GcmFtZS0+dmll
dygpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAK
ICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci0gICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjcik7Ci0gICAgV2ViQ29y
ZTo6SW50UmVjdCByZWN0KCphcmVhKTsKLQotICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIGdyYXBo
aWNzQ29udGV4dC5zYXZlKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAocmVjdCk7Ci0gICAg
aWYgKHZpZXctPmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFy
UmVjdChyZWN0KTsKLSAgICB2aWV3LT5wYWludCgmZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKLSAg
ICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwotICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworCisg
ICAgZXdrX3BhaW50X2NvbnRleHRfc2F2ZShjb250ZXh0KTsKKyAgICBld2tfcGFpbnRfY29udGV4
dF9jbGlwKGNvbnRleHQsIGFyZWEpOworICAgIGV3a19wYWludF9jb250ZXh0X3BhaW50KGNvbnRl
eHQsIHZpZXcsIGFyZWEpOworICAgIGV3a19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRl
bnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlKiBhcmVhKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFBhaW50cyBqdXN0IGNvbnRl
bnRzIHVzaW5nIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQgdGhlIGdpdmVuIGFyZWEuCisgKgorICog
VGhpcyB1c2VzIGFic29sdXRlIGNvb3JkaW5hdGVzIGZvciBhcmVhIGFuZCB3aWxsIGp1c3QgaGFu
ZGxlCisgKiBjb250ZW50cywgbm8gc2Nyb2xsYmFycyBvciBleHRyYXMuIFNlZSBld2tfdmlld19w
YWludCgpIGZvciB0aGUKKyAqIGFsdGVybmF0aXZlIHNvbHV0aW9uLgorICoKKyAqIEBwYXJhbSBw
cml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgb2YgdGhlIHZpZXcgdG8gdXNlIGFz
IHBhaW50IHNvdXJjZQorICogQHBhcmFtIGNyIHRoZSBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBw
YWludCBkZXN0aW5hdGlvbiwgaXRzIHN0YXRlIHdpbGwKKyAqICAgICAgICBiZSBzYXZlZCBiZWZv
cmUgb3BlcmF0aW9uIGFuZCByZXN0b3JlZCBhZnRlcndhcmRzCisgKiBAcGFyYW0gYXJlYSBhYnNv
bHV0ZSBnZW9tZXRyeSB0byBwYWludAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQG5vdGUgVGhpcyBpcyBh
biBlYXN5IHRvIHVzZSB2ZXJzaW9uLCBidXQgaW50ZXJuYWwgc3RydWN0dXJlcyBhcmUKKyAqICAg
ICAgIGFsd2F5cyBjcmVhdGVkLCB0aGVuIGdyYXBoaWNzIGNvbnRleHQgaXMgY2xpcHBlZCwgdGhl
bgorICogICAgICAgcGFpbnRlZCwgcmVzdG9yZWQgYW5kIGRlc3Ryb3llZC4gVGhpcyBtaWdodCBu
b3QgYmUgb3B0aW11bSwKKyAqICAgICAgIHNvIHVzaW5nIEBhIEV3a19QYWludF9Db250ZXh0IG1h
eSBiZSBhIGJldHRlciBzb2x1dGlvbnMKKyAqICAgICAgIGZvciBsYXJnZSBudW1iZXIgb2Ygb3Bl
cmF0aW9ucy4KKyAqCisgKiBAc2VlIGV3a192aWV3X3BhaW50KCkKKyAqIEBzZWUgZXdrX3BhaW50
X2NvbnRleHRfcGFpbnRfY29udGVudHMoKQorICoKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBn
ZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqICAgICAgIHRv
IGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3
X3BhaW50X2NvbnRlbnRzKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXdrX1BhaW50X0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGNyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGNvbnRleHQsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoYXJlYSwgZmFsc2UpOwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYt
Pm1haW5GcmFtZS0+dmlldygpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2
aWV3LCBmYWxzZSk7CiAKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250
ZXh0KGNyKTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoKmFyZWEpOwotCiAgICAgdmlldy0+
dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwotICAgIGNhaXJvX3NhdmUo
Y3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAocmVjdCk7Ci0gICAgaWYgKHZpZXctPmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKLSAgICB2aWV3LT5wYWludENvbnRlbnRzKCZncmFw
aGljc0NvbnRleHQsICByZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwotICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOworCisgICAgZXdrX3BhaW50X2NvbnRleHRfc2F2ZShjb250ZXh0
KTsKKyAgICBld2tfcGFpbnRfY29udGV4dF9jbGlwKGNvbnRleHQsIGFyZWEpOworICAgIGV3a19w
YWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKGNvbnRleHQsIHZpZXcsIGFyZWEpOworICAgIGV3
a19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotCi0vKiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCiAvKioKICAqIEBpbnRlcm5hbAogICogUmVwb3J0cyB0aGUg
dmlldyBpcyByZWFkeSB0byBiZSBkaXNwbGF5ZWQgYXMgYWxsIGVsZW1lbnRzIGFyZSBhcmVhZHku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGNjNjUwMzguLjdmZWI2Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCkBAIC0yMTk5LDEzNSArMjE5OSw2IEBAIEVBUEkgRXdrX1ZpZXdf
U21hcnRfRGF0YSAqZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwogICovCiBFQVBJIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKTsKIAotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19Q
YWludF9Db250ZXh0LgotdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1BhaW50X0NvbnRleHQgRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dDsKLQotLyoqCi0gKiBDcmVhdGVzIGEgbmV3IHBhaW50IGNvbnRl
eHQgdXNpbmcgdGhlIHZpZXcgYXMgc291cmNlIGFuZCBjYWlybyBhcyBvdXRwdXQuCi0gKgotICog
QHBhcmFtIHByaXYgdGhlIHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0
byB1c2UgYXMgcGFpbnQgc291cmNlCi0gKiBAcGFyYW0gY3IgY2Fpcm8gY29udGV4dCB0byB1c2Ug
YXMgcGFpbnQgZGVzdGluYXRpb24sIGEgbmV3Ci0gKiAgICAgICAgcmVmZXJlbmNlIGlzIHRha2Vu
LCBzbyBpdCdzIHNhZmUgdG8gY2FsbCBAYyBjYWlyb19kZXN0cm95KCkKLSAqICAgICAgICBhZnRl
ciB0aGlzIGZ1bmN0aW9uIHJldHVybnMuCi0gKgotICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRl
ZCBpbnN0YW5jZSBvZiBAYyBFd2tfVmlld19QYWludF9Db250ZXh0IG9uIHN1Y2Nlc3MsCi0gKiAg
ICAgICAgIG9yIEBjIDAgb24gZmFpbHVyZQotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBn
ZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAgICAgIHRv
IGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQSSBFd2tfVmlld19QYWlu
dF9Db250ZXh0ICpld2tfdmlld19wYWludF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKnByaXYsIGNhaXJvX3QgKmNyKTsKLQotLyoqCi0gKiBEZXN0cm95cyB0aGUgcHJldmlvdXNs
eSBjcmVhdGVkIHRoZSBwYWludCBjb250ZXh0LgotICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWlu
dCBjb250ZXh0IHRvIGRlc3Ryb3ksIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqCi0gKiBAbm90ZSBU
aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3
YW50Ci0gKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCi0gKi8KLUVB
UEkgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X2ZyZWUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCAqY3R4dCk7Ci0KLS8qKgotICogU2F2ZXMgKHB1c2ggdG8gc3RhY2spIHRoZSBwYWludCBjb250
ZXh0IHN0YXR1cy4KLSAqCi0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBzYXZl
LCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0gKgotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0
X3Jlc3RvcmUoKQotICoKLSAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQg
anVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBv
d24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRf
c2F2ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KTsKLQotLyoqCi0gKiBSZXN0b3JlcyAo
cG9wIGZyb20gc3RhY2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1cy4KLSAqCi0gKiBAcGFyYW0g
Y3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byByZXN0b3JlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0g
KgotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoKQotICoKLSAqIEBub3RlIFRo
aXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdh
bnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQ
SSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9Db250
ZXh0ICpjdHh0KTsKLQotLyoqCi0gKiBDbGlwcyB0aGUgcGFpbnQgY29udGV4dCBkcmF3aW5ncyB0
byB0aGUgZ2l2ZW4gYXJlYS4KLSAqCi0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0
byBjbGlwLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0gKiBAcGFyYW0gYXJlYSBjbGlwIGFyZWEgdG8g
dXNlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCi0gKgotICogQHNlZSBld2tfdmlld19wYWludF9jb250
ZXh0X3NhdmUoKQotICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoKQotICoK
LSAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xh
c3NlcyB0aGF0IHdhbnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9y
ZS4KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmlld19Q
YWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7Ci0KLS8qKgot
ICogUGFpbnRzIHRoZSBjb250ZXh0IHVzaW5nIGdpdmVuIGFyZWEuCi0gKgotICogQHBhcmFtIGN0
eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqIEBw
YXJhbSBhcmVhIHRoZSBwYWludCBhcmVhIHRvIHVzZSwgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZl
IHRvIGN1cnJlbnQgdmlld3BvcnQsCi0gKiAgICAgICAgdGh1cyAic2Nyb2xsZWQiLCBtdXN0IEBi
IG5vdCBiZSBAYyAwCi0gKgotICogQG5vdGUgT25lIG1heSB1c2UgY2Fpcm8gZnVuY3Rpb25zIG9u
IHRoZSBjYWlybyBjb250ZXh0IHRvCi0gKiAgICAgICB0cmFuc2xhdGUsIHNjYWxlIG9yIGFueSBt
b2RpZmljYXRpb24gdGhhdCBtYXkgZml0IGhpcyBkZXNpcmVzLgotICoKLSAqIEBzZWUgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9jbGlwKCkKLSAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9w
YWludF9jb250ZW50cygpCi0gKgotICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNl
IGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAotICogICAgICAgdG8gZGVmaW5lIHRo
ZWlyIG93biBiYWNraW5nIHN0b3JlLgotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9wYWludChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1JlY3Rh
bmdsZSAqYXJlYSk7Ci0KLS8qKgotICogUGFpbnRzIGp1c3QgY29udGVudHMgdXNpbmcgY29udGV4
dCB1c2luZyBnaXZlbiBhcmVhLgotICoKLSAqIFVubGlrZSBld2tfdmlld19wYWludF9jb250ZXh0
X3BhaW50KCksIHRoaXMgZnVuY3Rpb24gcGFpbnQganVzdAotICogYmFyZSBjb250ZW50cyBhbmQg
aWdub3JlcyBhbnkgc2Nyb2xsaW5nLCBzY3JvbGxiYXJzIGFuZCBleHRyYXMuIEl0Ci0gKiB3aWxs
IHdhbGsgdGhlIHJlbmRlcmluZyB0cmVlIGFuZCBwYWludCBjb250ZW50cyBpbnNpZGUgdGhlIGdp
dmVuCi0gKiBhcmVhIHRvIHRoZSBjYWlybyBjb250ZXh0IHNwZWNpZmllZCBpbiBAYSBjdHh0Lgot
ICoKLSAqIEBwYXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIHBhaW50LCBtdXN0IEBiIG5v
dCBiZSBAYyAwLgotICogQHBhcmFtIGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBjb29yZGlu
YXRlcyBhcmUgYWJzb2x1dGUgdG8gcGFnZSwgbXVzdCBAYiBub3QgYmUgQGMgMAotICoKLSAqIEBu
b3RlIE9uZSBtYXkgdXNlIGNhaXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bwot
ICogICAgICAgdHJhbnNsYXRlLCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZp
dCBoaXMgZGVzaXJlcy4KLSAqCi0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcCgp
Ci0gKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoKQotICoKLSAqIEBub3RlIFRo
aXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdh
bnQKLSAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KLSAqLwotRUFQ
SSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwotCi0vKioKLSAq
IFNjYWxlcyB0aGUgY29udGVudHMgYnkgdGhlIGdpdmVuIGZhY3RvcnMuCi0gKgotICogVGhpcyBm
dW5jdGlvbiBhcHBsaWVzIGEgc2NhbGluZyB0cmFuc2Zvcm1hdGlvbiB1c2luZyBDYWlyby4KLSAq
Ci0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBzY2FsZSwgbXVzdCBAYiBub3Qg
YmUgQGMgMAotICogQHBhcmFtIHNjYWxlX3ggdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIFggZGlt
ZW5zaW9uCi0gKiBAcGFyYW0gc2NhbGVfeSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWSBkaW1l
bnNpb24KLSAqLwotRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSk7Ci0K
LS8qKgotICogUGVyZm9ybXMgYSB0cmFuc2xhdGlvbiBvZiB0aGUgb3JpZ2luIGNvb3JkaW5hdGVz
LgotICoKLSAqIFRoaXMgZnVuY3Rpb24gbW92ZXMgdGhlIG9yaWdpbiBjb29yZGluYXRlcyBieSBA
YSB4IGFuZCBAYSB5IHBpeGVscy4KLSAqCi0gKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4
dCB0byB0cmFuc2xhdGUsIG11c3QgQGIgbm90IGJlIEBjIDAKLSAqIEBwYXJhbSB4IGFtb3VudCBv
ZiBwaXhlbHMgdG8gdHJhbnNsYXRlIGluIHRoZSBYIGRpbWVuc2lvbgotICogQHBhcmFtIHkgYW1v
dW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUgaW4gdGhlIFkgZGltZW5zaW9uCi0gKi8KLUVBUEkg
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250
ZXh0ICpjdHh0LCBmbG9hdCB4LCBmbG9hdCB5KTsKLQogLyoqCiAgKiBQYWludHMgdXNpbmcgZ2l2
ZW4gZ3JhcGhpY3MgY29udGV4dCB0aGUgZ2l2ZW4gYXJlYS4KICAqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCAxZDQxNDlkLi41MmZjMDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNp
bmNsdWRlICJld2tfcGFpbnRfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTIwLDYgKzEyMSw5IEBAIHZvaWQgZXdrX3Zp
ZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7
CiBib29sIGV3a192aWV3X2ZvY3VzX2Nhbl9jeWNsZShFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0ZvY3VzX0RpcmVjdGlvbiBkaXJlY3Rpb24pOwogdm9pZCBld2tfdmlld19mcmFtZV92aWV3X2Ny
ZWF0aW9uX25vdGlmeShFdmFzX09iamVjdCogZXdrVmlldyk7CiAKK0VpbmFfQm9vbCBld2tfdmll
d19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV3a19QYWludF9Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSk7CitFaW5hX0Jvb2wgZXdrX3ZpZXdf
cGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFd2tfUGFpbnRfQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpOworCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIGV3a192aWV3X2pzX3dpbmRvd19vYmplY3RfY2xl
YXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXggOWMxODkzNi4uNDE5
NDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKQEAgLTIx
MiwxMjUgKzIxMiw3MyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
c2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYQogCiBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEpCiB7Ci0gICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY29udGV4
dDsKLSAgICBFdmFzX0Nvb3JkIG93LCBvaDsKLSAgICB2b2lkKiBwaXhlbHM7Ci0gICAgRWluYV9S
ZWN0YW5nbGUqIHJlY3Q7Ci0gICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdDsK
LSAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSogcGFpbnRSZXF1ZXN0RW5kOwotICAgIEVpbmFfVGls
ZXIqIHRpbGVyOwotICAgIEVpbmFfSXRlcmF0b3IqIGl0ZXJhdG9yOwotICAgIGNhaXJvX3N0YXR1
c190IHN0YXR1czsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7Ci0gICAgY2Fpcm9fZm9y
bWF0X3QgZm9ybWF0OwotICAgIGNhaXJvX3QqIGNhaXJvOwotICAgIHNpemVfdCBjb3VudDsKLSAg
ICBFaW5hX0Jvb2wgcmVzdWx0ID0gdHJ1ZTsKLQogICAgIGlmIChzbWFydERhdGEtPmFuaW1hdGVk
X3pvb20uem9vbS5jdXJyZW50IDwgMC4wMDAwMSkgewogICAgICAgICBFdmFzX09iamVjdCogY2xp
cCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0gICAg
ICAgIEV2YXNfQ29vcmQgd2lkdGgsIGhlaWdodCwgY2VudGVyV2lkdGgsIGNlbnRlckhlaWdodDsK
KwogICAgICAgICAvLyByZXNldCBlZmZlY3RzIG9mIHpvb21fd2Vha19zZXQoKQotICAgICAgICBl
dmFzX29iamVjdF9pbWFnZV9maWxsX3NldAotICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgMCwgMCwgc21hcnREYXRhLT52aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsKKyAg
ICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3Jl
LCAwLCAwLCBzbWFydERhdGEtPnZpZXcudywgc21hcnREYXRhLT52aWV3LmgpOwogICAgICAgICBl
dmFzX29iamVjdF9tb3ZlKGNsaXAsIHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcu
eSk7CiAKLSAgICAgICAgd2lkdGggPSBzbWFydERhdGEtPnZpZXcudzsKLSAgICAgICAgaGVpZ2h0
ID0gc21hcnREYXRhLT52aWV3Lmg7CisgICAgICAgIEV2YXNfQ29vcmQgd2lkdGggPSBzbWFydERh
dGEtPnZpZXcudzsKKyAgICAgICAgRXZhc19Db29yZCBoZWlnaHQgPSBzbWFydERhdGEtPnZpZXcu
aDsKIAorICAgICAgICBFdmFzX0Nvb3JkIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQ7CiAgICAg
ICAgIGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZj
ZW50ZXJXaWR0aCwgJmNlbnRlckhlaWdodCk7CiAgICAgICAgIGlmICh3aWR0aCA+IGNlbnRlcldp
ZHRoKQogICAgICAgICAgICAgd2lkdGggPSBjZW50ZXJXaWR0aDsKKwogICAgICAgICBpZiAoaGVp
Z2h0ID4gY2VudGVySGVpZ2h0KQogICAgICAgICAgICAgaGVpZ2h0ID0gY2VudGVySGVpZ2h0Owot
ICAgICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQog
Ci0gICAgcGl4ZWxzID0gZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoc21hcnREYXRhLT5iYWNr
aW5nX3N0b3JlLCAxKTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX2dldChzbWFydERhdGEt
PmJhY2tpbmdfc3RvcmUsICZvdywgJm9oKTsKLSAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJH
QjMyOwotCi0gICAgc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRh
Ci0gICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyks
IGZvcm1hdCwgb3csIG9oLCBvdyAqIDQpOwotICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3Rh
dHVzKHN1cmZhY2UpOwotICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsK
LSAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAl
cyIsCi0gICAgICAgICAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7
Ci0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBnb3RvIGVycm9yX2NhaXJvX3N1cmZh
Y2U7Ci0gICAgfQotICAgIGNhaXJvID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwotICAgIHN0YXR1
cyA9IGNhaXJvX3N0YXR1cyhjYWlybyk7Ci0gICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNf
U1VDQ0VTUykgewotICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgY2Fpcm8gZnJvbSBzdXJm
YWNlICVkeCVkOiAlcyIsCi0gICAgICAgICAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJp
bmcoc3RhdHVzKSk7Ci0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBnb3RvIGVycm9y
X2NhaXJvOworICAgICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7
CiAgICAgfQogCi0gICAgY29udGV4dCA9IGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KHNtYXJ0
RGF0YS0+X3ByaXYsIGNhaXJvKTsKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgRVJSKCJj
b3VsZCBub3QgY3JlYXRlIHBhaW50IGNvbnRleHQiKTsKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgICAgIGdvdG8gZXJyb3JfcGFpbnRfY29udGV4dDsKLSAgICB9CisgICAgRXZhc19Db29y
ZCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodDsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX2dl
dChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsICZpbWFnZVdpZHRoLCAmaW1hZ2VIZWlnaHQpOwog
Ci0gICAgdGlsZXIgPSBlaW5hX3RpbGVyX25ldyhvdywgb2gpOworICAgIEVpbmFfVGlsZXIqIHRp
bGVyID0gZWluYV90aWxlcl9uZXcoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOwogICAgIGlmICgh
dGlsZXIpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgb3cs
IG9oKTsKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJyb3JfdGlsZXI7
CisgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIsIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGV3a192
aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKHNtYXJ0RGF0YS0+X3ByaXYpOwogCi0gICAg
cGFpbnRSZXF1ZXN0ID0gZXdrX3ZpZXdfcmVwYWludHNfcG9wKHNtYXJ0RGF0YS0+X3ByaXYsICZj
b3VudCk7Ci0gICAgcGFpbnRSZXF1ZXN0RW5kID0gcGFpbnRSZXF1ZXN0ICsgY291bnQ7CisgICAg
c2l6ZV90IGNvdW50OworICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBwYWludFJlcXVlc3QgPSBl
d2tfdmlld19yZXBhaW50c19wb3Aoc21hcnREYXRhLT5fcHJpdiwgJmNvdW50KTsKKyAgICBjb25z
dCBFaW5hX1JlY3RhbmdsZSogcGFpbnRSZXF1ZXN0RW5kID0gcGFpbnRSZXF1ZXN0ICsgY291bnQ7
CiAgICAgZm9yICg7IHBhaW50UmVxdWVzdCA8IHBhaW50UmVxdWVzdEVuZDsgcGFpbnRSZXF1ZXN0
KyspCiAgICAgICAgIGVpbmFfdGlsZXJfcmVjdF9hZGQodGlsZXIsIHBhaW50UmVxdWVzdCk7CiAK
LSAgICBpdGVyYXRvciA9IGVpbmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKKyAgICBFaW5h
X0l0ZXJhdG9yKiBpdGVyYXRvciA9IGVpbmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKICAg
ICBpZiAoIWl0ZXJhdG9yKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGdldCBpdGVyYXRvciBm
b3IgdGlsZXIiKTsKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIGdvdG8gZXJyb3Jf
aXRlcmF0b3I7CisgICAgICAgIGVpbmFfdGlsZXJfZnJlZSh0aWxlcik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICBFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCA9IGV3a19w
YWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Cisg
ICAgZXdrX3BhaW50X2NvbnRleHRfc2F2ZShjb250ZXh0KTsKKwogICAgIGludCBzY3JvbGxYLCBz
Y3JvbGxZOwogICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChzbWFydERhdGEtPm1haW5fZnJh
bWUsICZzY3JvbGxYLCAmc2Nyb2xsWSk7CisgICAgaWYgKHNjcm9sbFggfHwgc2Nyb2xsWSkKKyAg
ICAgICAgZXdrX3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKGNvbnRleHQsIC1zY3JvbGxYLCAtc2Ny
b2xsWSk7CiAKKyAgICBFaW5hX1JlY3RhbmdsZSogcmVjdDsKICAgICBFSU5BX0lURVJBVE9SX0ZP
UkVBQ0goaXRlcmF0b3IsIHJlY3QpIHsKLSAgICAgICAgRWluYV9SZWN0YW5nbGUgc2Nyb2xsZWRf
cmVjdCA9IHsKLSAgICAgICAgICAgIHJlY3QtPnggKyBzY3JvbGxYLCByZWN0LT55ICsgc2Nyb2xs
WSwKLSAgICAgICAgICAgIHJlY3QtPncsIHJlY3QtPmgKLSAgICAgICAgfTsKLQotICAgICAgICBl
d2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoY29udGV4dCk7Ci0KLSAgICAgICAgaWYgKChzY3Jv
bGxYKSB8fCAoc2Nyb2xsWSkpCi0gICAgICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X3Ry
YW5zbGF0ZShjb250ZXh0LCAtc2Nyb2xsWCwgLXNjcm9sbFkpOworICAgICAgICBFaW5hX1JlY3Rh
bmdsZSBzY3JvbGxlZFJlY3QgPSB7IHJlY3QtPnggKyBzY3JvbGxYLCByZWN0LT55ICsgc2Nyb2xs
WSwgcmVjdC0+dywgcmVjdC0+aCB9OworICAgICAgICBld2tfdmlld19wYWludF9jb250ZW50cyhz
bWFydERhdGEtPl9wcml2LCBjb250ZXh0LCAmc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcmVj
dC0+eCwgcmVjdC0+eSwgcmVjdC0+dywgcmVjdC0+aCk7CisgICAgfQogCi0gICAgICAgIGV3a192
aWV3X3BhaW50X2NvbnRleHRfY2xpcChjb250ZXh0LCAmc2Nyb2xsZWRfcmVjdCk7Ci0gICAgICAg
IGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoY29udGV4dCwgJnNjcm9sbGVk
X3JlY3QpOworICAgIGV3a19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CisgICAgZXdr
X3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKIAotICAgICAgICBld2tfdmlld19wYWludF9j
b250ZXh0X3Jlc3RvcmUoY29udGV4dCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFf
dXBkYXRlX2FkZAotICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcmVjdC0+
eCwgcmVjdC0+eSwgcmVjdC0+dywgcmVjdC0+aCk7Ci0gICAgfQorICAgIGVpbmFfdGlsZXJfZnJl
ZSh0aWxlcik7CiAgICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0ZXJhdG9yKTsKIAotZXJyb3JfaXRl
cmF0b3I6Ci0gICAgZWluYV90aWxlcl9mcmVlKHRpbGVyKTsKLWVycm9yX3RpbGVyOgotICAgIGV3
a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKLWVycm9yX3BhaW50X2NvbnRleHQ6
Ci0gICAgY2Fpcm9fZGVzdHJveShjYWlybyk7Ci1lcnJvcl9jYWlybzoKLSAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3koc3VyZmFjZSk7Ci1lcnJvcl9jYWlyb19zdXJmYWNlOgotICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX2RhdGFfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcGl4ZWxzKTsgLyog
ZGVjIHJlZmNvdW50ICovCi0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Nl
dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d190aWxlZC5jcHAKaW5kZXggNTVhNThlMy4uNzYxNTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXdfdGlsZWQuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUu
aCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8UmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRl
IDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KIAogc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9w
YXJlbnRfc2MgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEw7CkBAIC0zMyw0NCArMzIs
MTcgQEAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05VTEw7CiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9y
ZW5kZXJfY2Iodm9pZCogZGF0YSwgRXdrX1RpbGUqIHRpbGUsIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
KiBhcmVhKQogewogICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19jYXN0
PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGRhdGEpOwotICAgIEVpbmFfUmVjdGFuZ2xlIHJlY3Qg
PSB7YXJlYS0+eCArIHRpbGUtPngsIGFyZWEtPnkgKyB0aWxlLT55LCBhcmVhLT53LCBhcmVhLT5o
fTsgICAgCi0gICAgaW50IHN0cmlkZTsKLSAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7Ci0KLSAg
ICBpZiAodGlsZS0+Y3NwYWNlID09IEVWQVNfQ09MT1JTUEFDRV9BUkdCODg4OCkgewotICAgICAg
ICBzdHJpZGUgPSB0aWxlLT53aWR0aCAqIDQ7Ci0gICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1B
VF9BUkdCMzI7Ci0gICAgfSBlbHNlIGlmICh0aWxlLT5jc3BhY2UgPT0gRVZBU19DT0xPUlNQQUNF
X1JHQjU2NV9BNVApIHsKLSAgICAgICAgc3RyaWRlID0gdGlsZS0+d2lkdGggKiAyOwotICAgICAg
ICBmb3JtYXQgPSBDQUlST19GT1JNQVRfUkdCMTZfNTY1OwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IEVSUigidW5rbm93biBjb2xvciBzcGFjZTogJWQiLCB0aWxlLT5jc3BhY2UpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIEVpbmFfUmVjdGFuZ2xlIHJlY3QgPSB7YXJlYS0+eCAr
IHRpbGUtPngsIGFyZWEtPnkgKyB0aWxlLT55LCBhcmVhLT53LCBhcmVhLT5ofTsKIAogICAgIHVp
bnQ4X3QqIHBpeGVscyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihldmFzX29iamVjdF9pbWFnZV9k
YXRhX2dldCh0aWxlLT5pbWFnZSwgdHJ1ZSkpOwotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAg
IEVSUigiZmFpbCB0byBnZXQgdGhlIHBpeGVsIGRhdGEgZnJvbSB0aGUgaW1hZ2Ugb2JqZWN0Iik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRh
KHBpeGVscywgZm9ybWF0LCB0aWxlLT53aWR0aCwgdGlsZS0+aGVpZ2h0LCBzdHJpZGUpKTsKLSAg
ICBjYWlyb19zdGF0dXNfdCBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdl
dCgpKTsKLSAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAg
IEVSUigiZmFpbGVkIHRvIGNyZWF0ZSBjYWlybyBzdXJmYWNlOiAlcyIsIGNhaXJvX3N0YXR1c190
b19zdHJpbmcoc3RhdHVzKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgRXdr
X1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2Rh
dGFfbmV3KHBpeGVscywgdGlsZS0+d2lkdGgsIHRpbGUtPmhlaWdodCwgdGlsZS0+Y3NwYWNlKTsK
IAotICAgIFJlZlB0cjxjYWlyb190PiBjYWlybyA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJm
YWNlLmdldCgpKSk7Ci0gICAgc3RhdHVzID0gY2Fpcm9fc3RhdHVzKGNhaXJvLmdldCgpKTsKLSAg
ICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAgIEVSUigiZmFp
bGVkIHRvIGNyZWF0ZSBjYWlybzogJXMiLCBjYWlyb19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGV3a19wYWludF9jb250ZXh0X3Ry
YW5zbGF0ZShjb250ZXh0LCAtdGlsZS0+eCwgLXRpbGUtPnkpOworICAgIEVpbmFfQm9vbCByZXN1
bHQgPSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBjb250ZXh0LCAmcmVjdCk7CisgICAg
ZXdrX3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKIAotICAgIGNhaXJvX3RyYW5zbGF0ZShj
YWlyby5nZXQoKSwgLXRpbGUtPngsIC10aWxlLT55KTsKLQotICAgIGJvb2wgcmVzdWx0ID0gZXdr
X3ZpZXdfcGFpbnRfY29udGVudHMocHJpdiwgY2Fpcm8uZ2V0KCksICZyZWN0KTsKICAgICBldmFz
X29iamVjdF9pbWFnZV9kYXRhX3NldCh0aWxlLT5pbWFnZSwgcGl4ZWxzKTsKKwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA2M2FmODEzLi5hZjQ1MTcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDYtMDEgIFRvbWFz
eiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVm
YWN0b3IgZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1ODgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3Rz
LnR4dDogQWRkZWQgaW5jbHVkZSBkaXJlY3RvcnkuCisKIDIwMTItMDYtMDEgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHB1YmxpYyBwYWdlIGxvYWRpbmcg
cGVyZm9ybWFuY2UgdGVzdHMgdXNpbmcgd2ViLXBhZ2UtcmVwbGF5CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvQ01ha2VMaXN0cy50eHQKaW5kZXggMDZjZWYzYS4uMzJhMzMxMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtNjIsNiArNjIsNyBAQCBTRVQoRHVtcFJl
bmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L3RleHQKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcwogICAgICR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvCisgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3JtcwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdv
cmsKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAKICAgICAke1dFQkNP
UkVfRElSfS9wbHVnaW5zCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>