<?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>90577</bug_id>
          
          <creation_ts>2012-07-04 13:19:06 -0700</creation_ts>
          <short_desc>[WK2][EFL] Ewk_View needs to report new resource requests</short_desc>
          <delta_ts>2012-07-05 00:59:51 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>kenneth</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663136</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 13:19:06 -0700</bug_when>
    <thetext>The Ewk_View needs to emit a signal when resource requests are being initiated in order to notify the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663143</commentid>
    <comment_count>1</comment_count>
      <attachid>150839</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 13:31:45 -0700</bug_when>
    <thetext>Created attachment 150839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663239</commentid>
    <comment_count>2</comment_count>
      <attachid>150839</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-04 19:50:35 -0700</bug_when>
    <thetext>Comment on attachment 150839
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp:49
&gt; +    const char* url;
&gt; +    const char* first_party;
&gt; +    const char* http_method;

Can you give me an example of what they are supposed to contain? document? Did you look at the new Qt apis?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp:57
&gt; +#define EWK_URL_REQUEST_WK_GET_OR_RETURN(request, wkRequest_, ...)    \
&gt; +    if (!(request)) {                                           \
&gt; +        EINA_LOG_CRIT(&quot;request is NULL.&quot;);                      \
&gt; +        return __VA_ARGS__;                                    \
&gt; +    }                                                          \
&gt; +    if (!(request)-&gt;wkRequest) {                                 \

Somethings wrong with the \s here?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:34
&gt; +    CString uri;

why uri here and url elsewhere?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:50
&gt; +    delete resource;

free?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:59
&gt; +Ewk_Web_Resource* ewk_web_resource_new(const char* uri, bool isMainResource)

uri?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource_private.h:32
&gt; +
&gt; +Ewk_Web_Resource* ewk_web_resource_new(const char* uri, bool isMainResource);
&gt; +

why dont you name private method differently? They are not easy to see apart.

maybe add a _p at the end or so? or use _q_ like Qt :-) _e_ :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663301</commentid>
    <comment_count>3</comment_count>
      <attachid>150839</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 22:14:09 -0700</bug_when>
    <thetext>Comment on attachment 150839
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp:49
&gt;&gt; +    const char* http_method;
&gt; 
&gt; Can you give me an example of what they are supposed to contain? document? Did you look at the new Qt apis?

What they are supposed to contain? you mean the 3 string members? They are merely used for eina stringsharing of what is returned by ResourceRequest accessors.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp:57
&gt;&gt; +    if (!(request)-&gt;wkRequest) {                                 \
&gt; 
&gt; Somethings wrong with the \s here?

Oops. I&apos;ll fix this.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:34
&gt;&gt; +    CString uri;
&gt; 
&gt; why uri here and url elsewhere?

Right, I&apos;ll fix this.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:50
&gt;&gt; +    delete resource;
&gt; 
&gt; free?

I&apos;m allocating with new.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource_private.h:32
&gt;&gt; +
&gt; 
&gt; why dont you name private method differently? They are not easy to see apart.
&gt; 
&gt; maybe add a _p at the end or so? or use _q_ like Qt :-) _e_ :-)

Well, this is more a port-level decision than relating to this particular patch. I personally don&apos;t have any preference and I followed the style that was used before, for both WK1 and WK2 EFL. What usually helps distinguishing them though is the &quot;@internal&quot; annotation which I mistakenly omitted. I&apos;ll fix this. If we really want to change the private methods naming, I think we should send an email to the webkit-efl mailing list first and the refactoring should take place in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663303</commentid>
    <comment_count>4</comment_count>
      <attachid>150875</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 22:20:25 -0700</bug_when>
    <thetext>Created attachment 150875
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663317</commentid>
    <comment_count>5</comment_count>
      <attachid>150875</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-04 22:42:35 -0700</bug_when>
    <thetext>Comment on attachment 150875
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_request.h:83
&gt; +EAPI const char *ewk_request_first_party_get(const Ewk_Url_Request *request);

first_party_domain? Shouldnt documentation describe these things better? like what it a first-party?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_request.h:86
&gt; + * Query HTTP method for this request.

so this is http, https? spdy?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp:51
&gt; +
&gt; +    if (--resource-&gt;__ref)
&gt; +        return;
&gt; +    free(resource);

generally I would always prefer a newline after a return, or block

&gt; Source/WebKit2/UIProcess/API/efl/ewk_web_resource.h:75
&gt; +EAPI Eina_Bool ewk_web_resource_main_get(const Ewk_Web_Resource *resource);

Isnt this a bit too Yoda? resource main get? :-) why not just main_resource_get ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663326</commentid>
    <comment_count>6</comment_count>
      <attachid>150880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 23:16:22 -0700</bug_when>
    <thetext>Created attachment 150880
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663373</commentid>
    <comment_count>7</comment_count>
      <attachid>150880</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 00:59:45 -0700</bug_when>
    <thetext>Comment on attachment 150880
Patch

Clearing flags on attachment: 150880

Committed r121889: &lt;http://trac.webkit.org/changeset/121889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663374</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 00:59:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150839</attachid>
            <date>2012-07-04 13:31:45 -0700</date>
            <delta_ts>2012-07-04 22:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90577_resource_request.patch</filename>
            <type>text/plain</type>
            <size>31561</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1M2ZhOWI1Li5kMmYxNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMDctMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IG5lZWRzIHRvIHJlcG9ydCBuZXcg
cmVzb3VyY2UgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkwNTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG5ldyAicmVzb3VyY2UscmVxdWVzdCxuZXciIHNpZ25hbCB0byBFd2tfVmll
dyB0bworICAgICAgICBub3RpZnkgY2xpZW50cyBvZiB0aGUgcmVzb3VyY2UgcmVxdWVzdHMgYmVp
bmcgaW5pdGlhdGVkLgorICAgICAgICBOZXcgRXdrX1VybF9SZXF1ZXN0IGFuZCBFd2tfV2ViX1Jl
c291cmNlIHR5cGVzIGFyZQorICAgICAgICBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIHByb3ZpZGUg
dGhlIGNsaWVudHMgd2l0aCB0aGUKKyAgICAgICAgbmVlZGVkIGluZm9ybWF0aW9uIHJlZ2FyZGlu
ZyB0aGUgcmVzb3VyY2UgcmVxdWVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19V
cmxfUmVxdWVzdCk6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVxdWVzdF91bnJlZik6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfdXJsX2dldCk6
CisgICAgICAgIChld2tfcmVxdWVzdF9maXJzdF9wYXJ0eV9nZXQpOgorICAgICAgICAoZXdrX3Vy
bF9yZXF1ZXN0X2h0dHBfbWV0aG9kX2dldCk6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfbmV3
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoZXdrX3ZpZXdfYmFzZV9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9p
bml0aWF0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChld2tfdmll
d19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoX0V3a19XZWJfUmVzb3VyY2UpOgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV9yZWYp
OgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV91bnJlZik6CisgICAgICAgIChld2tfd2ViX3Jl
c291cmNlX3VyaV9nZXQpOgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV9uZXcpOgorICAgICAg
ICAoZXdrX3dlYl9yZXNvdXJjZV9tYWluX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDctMDQgIEpvaG4g
TWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6
IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCAzYzczOGViLi5jNzFhOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMzQsOSArMzQsMTIgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2lu
dGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRl
cl9jbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKyAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNwcAogCiAgICAgVUlQcm9jZXNz
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBjZDhjOWNhLi43OTlkMjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNp
bmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50X3NlcnZpY2UuaCIKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlLmgiCiAKICNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmIzOGNiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApA
QCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUg
IldLVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJVUkxSZXF1ZXN0RWZsLmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKKy8qKgorICogXHN0cnVjdCAgX0V3a19VcmxfUmVxdWVzdAorICogQGJyaWVmICAgQ29udGFp
bnMgdGhlIFVSTCByZXF1ZXN0IGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IHsK
KyAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUg
b2JqZWN0ICovCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1ZXN0UmVmPiB3a1JlcXVlc3Q7Cisg
ICAgY29uc3QgY2hhciogdXJsOworICAgIGNvbnN0IGNoYXIqIGZpcnN0X3BhcnR5OworICAgIGNv
bnN0IGNoYXIqIGh0dHBfbWV0aG9kOworfTsKKworI2RlZmluZSBFV0tfVVJMX1JFUVVFU1RfV0tf
R0VUX09SX1JFVFVSTihyZXF1ZXN0LCB3a1JlcXVlc3RfLCAuLi4pICAgIFwKKyAgICBpZiAoIShy
ZXF1ZXN0KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEVJTkFfTE9HX0NSSVQoInJlcXVlc3QgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKHJlcXVlc3QpLT53a1JlcXVlc3Qp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NS
SVQoInJlcXVlc3QtPndrUmVxdWVzdCBpcyBOVUxMLiIpOyAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBXS1VSTFJlcXVlc3RSZWYgd2tSZXF1ZXN0XyA9IChyZXF1ZXN0KS0+d2tS
ZXF1ZXN0LmdldCgpCisKK3ZvaWQgZXdrX3VybF9yZXF1ZXN0X3JlZihFd2tfVXJsX1JlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocmVxdWVzdCk7Cisg
ICAgKytyZXF1ZXN0LT5fX3JlZjsKK30KKwordm9pZCBld2tfdXJsX3JlcXVlc3RfdW5yZWYoRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHJlcXVlc3QpOworCisgICAgaWYgKC0tcmVxdWVzdC0+X19yZWYpCisgICAgICAgIHJldHVybjsK
KworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHJlcXVlc3QtPnVybCk7CisgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwocmVxdWVzdC0+Zmlyc3RfcGFydHkpOworICAgIGVpbmFfc3RyaW5nc2hhcmVf
ZGVsKHJlcXVlc3QtPmh0dHBfbWV0aG9kKTsKKyAgICBmcmVlKHJlcXVlc3QpOworfQorCitjb25z
dCBjaGFyICpld2tfdXJsX3JlcXVlc3RfdXJsX2dldChjb25zdCBFd2tfVXJsX1JlcXVlc3QgKnJl
cXVlc3QpCit7CisgICAgRVdLX1VSTF9SRVFVRVNUX1dLX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwg
d2tSZXF1ZXN0LCAwKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VybChBZG9wdFdL
LCBXS1VSTFJlcXVlc3RDb3B5VVJMKHdrUmVxdWVzdCkpOworICAgIEV3a19VcmxfUmVxdWVzdCog
ZXdrUmVxdWVzdCA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXF1ZXN0Kj4ocmVxdWVzdCk7CisgICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXF1ZXN0LT51cmwsIHRvSW1wbCh3a1VybC5n
ZXQoKSktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnVy
bDsKK30KKworY29uc3QgY2hhciAqZXdrX3JlcXVlc3RfZmlyc3RfcGFydHlfZ2V0KGNvbnN0IEV3
a19VcmxfUmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBFV0tfVVJMX1JFUVVFU1RfV0tfR0VUX09S
X1JFVFVSTihyZXF1ZXN0LCB3a1JlcXVlc3QsIDApOworCisgICAgRXdrX1VybF9SZXF1ZXN0KiBl
d2tSZXF1ZXN0ID0gY29uc3RfY2FzdDxFd2tfVXJsX1JlcXVlc3QqPihyZXF1ZXN0KTsKKyAgICBl
aW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1JlcXVlc3QtPmZpcnN0X3BhcnR5LCB0b0ltcGwo
d2tSZXF1ZXN0KS0+cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5maXJzdF9wYXJ0eTsK
K30KKworY29uc3QgY2hhciAqZXdrX3VybF9yZXF1ZXN0X2h0dHBfbWV0aG9kX2dldChjb25zdCBF
d2tfVXJsX1JlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgRVdLX1VSTF9SRVFVRVNUX1dLX0dFVF9P
Ul9SRVRVUk4ocmVxdWVzdCwgd2tSZXF1ZXN0LCAwKTsKKworICAgIEV3a19VcmxfUmVxdWVzdCog
ZXdrUmVxdWVzdCA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXF1ZXN0Kj4ocmVxdWVzdCk7CisgICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXF1ZXN0LT5odHRwX21ldGhvZCwgdG9JbXBs
KHdrUmVxdWVzdCktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKS51dGY4KCkuZGF0YSgp
KTsKKworICAgIHJldHVybiByZXF1ZXN0LT5odHRwX21ldGhvZDsKK30KKworRXdrX1VybF9SZXF1
ZXN0KiBld2tfdXJsX3JlcXVlc3RfbmV3KFdLVVJMUmVxdWVzdFJlZiB3a1VybFJlcXVlc3QpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHdrVXJsUmVxdWVzdCwgMCk7CisK
KyAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1VybFJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfVXJs
X1JlcXVlc3QqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19VcmxfUmVxdWVzdCkpKTsKKyAgICBld2tV
cmxSZXF1ZXN0LT5fX3JlZiA9IDE7CisgICAgZXdrVXJsUmVxdWVzdC0+d2tSZXF1ZXN0ID0gd2tV
cmxSZXF1ZXN0OworCisgICAgcmV0dXJuIGV3a1VybFJlcXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZTc3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaApAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfdXJsX3Jl
cXVlc3QuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgVVJMIHJlcXVlc3QgQVBJLgor
ICovCisKKyNpZm5kZWYgZXdrX3VybF9yZXF1ZXN0X2gKKyNkZWZpbmUgZXdrX3VybF9yZXF1ZXN0
X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19VcmxfUmVxdWVz
dCAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7CisK
Ky8qKgorICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVj
dC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCB0aGUgVVJMIHJlcXVlc3Qgb2JqZWN0IHRvIGluY3Jl
YXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxfcmVxdWVzdF9y
ZWYoRXdrX1VybF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBEZWNyZWFzZXMgdGhlIHJl
ZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0Lgor
ICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBpdCdzIHJlYWNoZWQgMCwgdGhlIFVSTCBy
ZXF1ZXN0IGlzIGZyZWVkLgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHRoZSBVUkwgcmVxdWVzdCBv
YmplY3QgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdr
X3VybF9yZXF1ZXN0X3VucmVmKEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICog
UXVlcnkgVVJMIGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVz
dCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgVVJMIHBvaW50ZXIsIHRoYXQg
bWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRv
IGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNh
dmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJp
bmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAg
ICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3VybF9yZXF1ZXN0X3Vy
bF9nZXQoY29uc3QgRXdrX1VybF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyeSBm
aXJzdCBwYXJ0eSBmb3IgY29va2llcyBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSBy
ZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIGZpcnN0
IHBhcnR5IHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICog
ICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBv
c3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UK
KyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hh
ciAqZXdrX3JlcXVlc3RfZmlyc3RfcGFydHlfZ2V0KGNvbnN0IEV3a19VcmxfUmVxdWVzdCAqcmVx
dWVzdCk7CisKKy8qKgorICogUXVlcnkgSFRUUCBtZXRob2QgZm9yIHRoaXMgcmVxdWVzdC4KKyAq
CisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0
dXJuIHRoZSBIVFRQIG1ldGhvZCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBv
aW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBz
byB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5
Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBv
ZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a191cmxfcmVxdWVzdF9odHRwX21ldGhvZF9nZXQoY29uc3QgRXdr
X1VybF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorCisjZW5kaWYgLy8gZXdrX3VybF9yZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdF9wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OGI2ZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3RfcHJpdmF0
ZS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3Vy
bF9yZXF1ZXN0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZV9oCisK
K0V3a19VcmxfUmVxdWVzdCogZXdrX3VybF9yZXF1ZXN0X25ldyhXS1VSTFJlcXVlc3RSZWYpOwor
CisjZW5kaWYgLy8gZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGU3OWJkMzIuLmJkZjJlZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfdmlld19sb2FkZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2
YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTQ5NCw2ICs0OTUsNyBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZh
cyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdQogCiAgICAgcHJp
di0+cGFnZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYp
LCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgZXdrVmlldyk7CiAgICAgZXdrX3ZpZXdfbG9hZGVyX2Ns
aWVudF9hdHRhY2godG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgZXdrVmlldyk7Cisg
ICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKHRvQVBJKHByaXYtPnBhZ2VD
bGllbnQtPnBhZ2UoKSksIGV3a1ZpZXcpOwogCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CkBAIC01
NDcsNiArNTQ5LDIwIEBAIEVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogICAgIHJldHVybiB0cnVlOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICogTG9hZCB3
YXMgaW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNp
Z25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVx
dWVzdC4KKyAqLwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09i
amVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX1Jlc291
cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEV3a19XZWJf
UmVzb3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3R9Owor
ICAgIC8vIEZJWE1FOiBXZSB3aWxsIG5lZWQgdG8gc3RvcmUgdGhlIHJlc291cmNlIGFuZCBpdHMg
aWRlbnRpZmllciBhdCBzb21lIHBvaW50CisgICAgLy8gdG8gZ2V0IHRoZSByZXNvdXJjZSBiYWNr
IGZyb20gdGhlIGlkZW50aWZpZXIgb24gcmVzb3VyY2UgbG9hZCBmaW5pc2guCisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxuZXci
LCAmcmVzb3VyY2VSZXF1ZXN0KTsKK30KKwogY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDM3NTA2YmIuLmRjNTQzMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogICog
LSAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50ZW50X1NlcnZpY2UqOiByZXBvcnRz
IG5ldyBXZWIgaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgogICogLSAibG9hZCxlcnJvciIs
IGNvbnN0IEV3a19XZWJfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQuCiAg
KiAtICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9ncmVzcyBoYXMgY2hhbmdlZCAo
dmFsdWUgZnJvbSAwLjAgdG8gMS4wKS4KKyAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29u
c3QgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0
aWF0ZWQuCiAgKiAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9mIHRoZSBt
YWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICovCiAKQEAgLTQ2LDYgKzQ3LDkgQEAgZXh0ZXJuICJD
IiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9E
YXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0
X0NsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnQgRXdrX0ludGVudDsKK3R5cGVkZWYg
c3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKKwogCiAvLy8gRXdrIHZpZXcncyBj
bGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KIHN0cnVjdCBfRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgewpAQCAtMTMzLDYgKzEzNywxOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0RhdGEgewogICAgIH0gY2hhbmdlZDsKIH07CiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0LgordHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVz
b3VyY2VfUmVxdWVzdCBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3Q7CisKKy8qKgorICogQGJyaWVm
IFN0cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNvdXJjZSByZXF1ZXN0Lgor
ICoKKyAqIERldGFpbHMgZ2l2ZW4gYWJvdXQgYSByZXNvdXJjZSBpcyBsb2FkZWQuCisgKi8KK3N0
cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHsKKyAgICBFd2tfV2ViX1Jlc291cmNlICpy
ZXNvdXJjZTsgLyoqPCByZXNvdXJjZSBiZWluZyByZXF1ZXN0ZWQgKi8KKyAgICBFd2tfVXJsX1Jl
cXVlc3QgKnJlcXVlc3Q7IC8qKjwgVVJMIHJlcXVlc3QgZm9yIHRoZSByZXNvdXJjZSAqLworfTsK
KwogLyoqCiAgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QuCiAgKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CmluZGV4IGI3MmEwYTkuLjlkNGJkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTMwLDcgKzMwLDkgQEAgY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jl
cXVlc3QgRXdrX1VybF9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdr
X1dlYl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIEV3a19XZWJfUmVz
b3VyY2U7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRl
bnQgRXdrX0ludGVudDsKICNlbmRpZgpAQCAtNDMsNiArNDUsNyBAQCB2b2lkIGV3a192aWV3X2lt
YWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0
IFdlYkNvcgogdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3Nf
Y2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIHByb2dyZXNzKTsKIHZvaWQgZXdr
X3ZpZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0
bGUpOwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVjdCog
ZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX1Jlc291cmNlKiBy
ZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KTsKIAogRXZhc19PYmplY3QqIGV3a192
aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42YmUzOWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRnJhbWUuaCIKKyNpbmNsdWRl
ICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLVVJMLmgi
CisjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKKyNpbmNsdWRlICJld2tfd2Vi
X3Jlc291cmNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJl
c291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiB3a0ZyYW1lLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIGJvb2wgcGFnZUlzUHJvdmlzaW9u
YWxseUxvYWRpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXZhc19PYmplY3Qq
IGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlID0gKFdLRnJhbWVJc01haW5GcmFt
ZSh3a0ZyYW1lKSAmJiBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZyk7CisgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHdrVXJsKEFkb3B0V0ssIFdLVVJMUmVxdWVzdENvcHlVUkwod2tSZXF1ZXN0
KSk7CisKKyAgICBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSA9IGV3a193ZWJfcmVzb3VyY2Vf
bmV3KHRvSW1wbCh3a1VybC5nZXQoKSktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlzTWFpblJl
c291cmNlKTsKKyAgICBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QgPSBld2tfdXJsX3JlcXVlc3Rf
bmV3KHdrUmVxdWVzdCk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoZXdr
VmlldywgcmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSwgcmVxdWVzdCk7CisgICAgZXdrX3dl
Yl9yZXNvdXJjZV91bnJlZihyZXNvdXJjZSk7CisgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVmKHJl
cXVlc3QpOworfQorCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChX
S1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgV0tQYWdlUmVz
b3VyY2VMb2FkQ2xpZW50IHdrUmVzb3VyY2VMb2FkQ2xpZW50OworICAgIG1lbXNldCgmd2tSZXNv
dXJjZUxvYWRDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnQpKTsKKyAg
ICB3a1Jlc291cmNlTG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZVJlc291cmNlTG9hZENsaWVu
dEN1cnJlbnRWZXJzaW9uOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmNsaWVudEluZm8gPSBl
d2tWaWV3OworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEluaXRpYXRlTG9hZEZvclJlc291
cmNlID0gZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U7CisKKyAgICBXS1BhZ2VTZXRQYWdlUmVz
b3VyY2VMb2FkQ2xpZW50KHBhZ2VSZWYsICZ3a1Jlc291cmNlTG9hZENsaWVudCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMWY0MDRiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3By
aXZhdGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCisj
ZW5kaWYgLy8gZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NGFmYmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNl
LmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgorCisjaW5jbHVkZSAiZXdrX3dl
Yl9yZXNvdXJjZV9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitz
dHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgeworICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KKyAgICBDU3RyaW5nIHVyaTsKKyAg
ICBib29sIGlzTWFpblJlc291cmNlOworfTsKKwordm9pZCBld2tfd2ViX3Jlc291cmNlX3JlZihF
d2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihyZXNvdXJjZSk7CisgICAgKytyZXNvdXJjZS0+X19yZWY7Cit9CisKK3ZvaWQgZXdrX3dl
Yl9yZXNvdXJjZV91bnJlZihFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXNvdXJjZSk7CisKKyAgICBpZiAoLS1yZXNvdXJjZS0+
X19yZWYpCisgICAgICAgIHJldHVybjsKKyAgICBkZWxldGUgcmVzb3VyY2U7Cit9CisKK2NvbnN0
IGNoYXIqIGV3a193ZWJfcmVzb3VyY2VfdXJpX2dldChjb25zdCBFd2tfV2ViX1Jlc291cmNlKiBy
ZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzb3VyY2Us
IDApOworICAgIHJldHVybiByZXNvdXJjZS0+dXJpLmRhdGEoKTsKK30KKworRXdrX1dlYl9SZXNv
dXJjZSogZXdrX3dlYl9yZXNvdXJjZV9uZXcoY29uc3QgY2hhciogdXJpLCBib29sIGlzTWFpblJl
c291cmNlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cmksIDApOwor
CisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBuZXcgRXdrX1dlYl9SZXNvdXJjZSgp
OworICAgIHJlc291cmNlLT51cmkgPSB1cmk7CisgICAgcmVzb3VyY2UtPmlzTWFpblJlc291cmNl
ID0gaXNNYWluUmVzb3VyY2U7CisgICAgcmVzb3VyY2UtPl9fcmVmID0gMTsKKworICAgIHJldHVy
biByZXNvdXJjZTsKK30KKworRWluYV9Cb29sIGV3a193ZWJfcmVzb3VyY2VfbWFpbl9nZXQoY29u
c3QgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHJlc291cmNlLCBmYWxzZSk7CisgICAgcmV0dXJuIHJlc291cmNlLT5pc01h
aW5SZXNvdXJjZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfcmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a193ZWJfcmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
ZmVmMDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8qKgorICogQGZpbGUgICAgZXdrX3dlYl9yZXNvdXJjZS5oCisgKiBAYnJpZWYgICBEZXNj
cmliZXMgdGhlIFdlYiBSZXNvdXJjZSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfd2ViX3Jlc291
cmNlX2gKKyNkZWZpbmUgZXdrX3dlYl9yZXNvdXJjZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIEV3a19XZWJfUmVzb3VyY2UuICovCit0eXBlZGVmIHN0cnVjdCBf
RXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291cmNlOworCisvKioKKyAqIEluY3JlYXNlcyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJl
c291cmNlIHRoZSByZXNvdXJjZSBvYmplY3QgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3Vu
dAorICovCitFQVBJIHZvaWQgZXdrX3dlYl9yZXNvdXJjZV9yZWYoRXdrX1dlYl9SZXNvdXJjZSAq
cmVzb3VyY2UpOworCisvKioKKyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRo
ZSBnaXZlbiBvYmplY3QsIHBvc3NpYmx5IGZyZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUgcmVm
ZXJlbmNlIGNvdW50IGl0J3MgcmVhY2hlZCAwLCB0aGUgcmVzb3VyY2UgaXMgZnJlZWQuCisgKgor
ICogQHBhcmFtIHJlc291cmNlIHRoZSByZXNvdXJjZSBvYmplY3QgdG8gZGVjcmVhc2UgdGhlIHJl
ZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihFd2tf
V2ViX1Jlc291cmNlICpyZXNvdXJjZSk7CisKKy8qKgorICogUXVlcnkgVVJJIGZvciB0aGlzIHJl
c291cmNlLgorICoKKyAqIEBwYXJhbSByZXNvdXJjZSByZXNvdXJjZSBvYmplY3QgdG8gcXVlcnku
CisgKgorICogQHJldHVybiB0aGUgVVJJIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuCisg
Ki8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3dlYl9yZXNvdXJjZV91cmlfZ2V0KGNvbnN0IEV3a19X
ZWJfUmVzb3VyY2UgKnJlc291cmNlKTsKKworLyoqCisgKiBRdWVyeSBpZiB0aGlzIGlzIHRoZSBt
YWluIHJlc291cmNlLgorICoKKyAqIEBwYXJhbSByZXNvdXJjZSByZXNvdXJjZSBvYmplY3QgdG8g
cXVlcnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhpcyBpcyB0aGUgbWFpbiBy
ZXNvdXJjZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X3dlYl9yZXNvdXJjZV9tYWluX2dldChjb25zdCBFd2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZSk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfd2ViX3Jl
c291cmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWI0NGZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlX2gK
KyNkZWZpbmUgZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlX2gKKwordHlwZWRlZiBzdHJ1Y3QgX0V3
a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKKworRXdrX1dlYl9SZXNvdXJjZSogZXdr
X3dlYl9yZXNvdXJjZV9uZXcoY29uc3QgY2hhciogdXJpLCBib29sIGlzTWFpblJlc291cmNlKTsK
KworI2VuZGlmIC8vIGV3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150875</attachid>
            <date>2012-07-04 22:20:25 -0700</date>
            <delta_ts>2012-07-04 23:16:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90577_resource_request.patch</filename>
            <type>text/plain</type>
            <size>31659</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1M2ZhOWI1Li5kMmYxNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMDctMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IG5lZWRzIHRvIHJlcG9ydCBuZXcg
cmVzb3VyY2UgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkwNTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG5ldyAicmVzb3VyY2UscmVxdWVzdCxuZXciIHNpZ25hbCB0byBFd2tfVmll
dyB0bworICAgICAgICBub3RpZnkgY2xpZW50cyBvZiB0aGUgcmVzb3VyY2UgcmVxdWVzdHMgYmVp
bmcgaW5pdGlhdGVkLgorICAgICAgICBOZXcgRXdrX1VybF9SZXF1ZXN0IGFuZCBFd2tfV2ViX1Jl
c291cmNlIHR5cGVzIGFyZQorICAgICAgICBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIHByb3ZpZGUg
dGhlIGNsaWVudHMgd2l0aCB0aGUKKyAgICAgICAgbmVlZGVkIGluZm9ybWF0aW9uIHJlZ2FyZGlu
ZyB0aGUgcmVzb3VyY2UgcmVxdWVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19V
cmxfUmVxdWVzdCk6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVxdWVzdF91bnJlZik6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfdXJsX2dldCk6
CisgICAgICAgIChld2tfcmVxdWVzdF9maXJzdF9wYXJ0eV9nZXQpOgorICAgICAgICAoZXdrX3Vy
bF9yZXF1ZXN0X2h0dHBfbWV0aG9kX2dldCk6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfbmV3
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoZXdrX3ZpZXdfYmFzZV9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9p
bml0aWF0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChld2tfdmll
d19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoX0V3a19XZWJfUmVzb3VyY2UpOgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV9yZWYp
OgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV91bnJlZik6CisgICAgICAgIChld2tfd2ViX3Jl
c291cmNlX3VyaV9nZXQpOgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV9uZXcpOgorICAgICAg
ICAoZXdrX3dlYl9yZXNvdXJjZV9tYWluX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDctMDQgIEpvaG4g
TWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6
IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCAzYzczOGViLi5jNzFhOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMzQsOSArMzQsMTIgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2lu
dGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRl
cl9jbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKyAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNwcAogCiAgICAgVUlQcm9jZXNz
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBjZDhjOWNhLi43OTlkMjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNp
bmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50X3NlcnZpY2UuaCIKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlLmgiCiAKICNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTk0MzQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApA
QCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUg
IldLVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJVUkxSZXF1ZXN0RWZsLmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKKy8qKgorICogXHN0cnVjdCAgX0V3a19VcmxfUmVxdWVzdAorICogQGJyaWVmICAgQ29udGFp
bnMgdGhlIFVSTCByZXF1ZXN0IGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IHsK
KyAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUg
b2JqZWN0ICovCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1ZXN0UmVmPiB3a1JlcXVlc3Q7CisK
KyAgICBjb25zdCBjaGFyKiB1cmw7CisgICAgY29uc3QgY2hhciogZmlyc3RfcGFydHk7CisgICAg
Y29uc3QgY2hhciogaHR0cF9tZXRob2Q7Cit9OworCisjZGVmaW5lIEVXS19VUkxfUkVRVUVTVF9X
S19HRVRfT1JfUkVUVVJOKHJlcXVlc3QsIHdrUmVxdWVzdF8sIC4uLikgICAgXAorICAgIGlmICgh
KHJlcXVlc3QpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgicmVxdWVzdCBpcyBOVUxMLiIpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBpZiAoIShyZXF1ZXN0KS0+d2tSZXF1ZXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoInJlcXVlc3QtPndrUmVxdWVzdCBp
cyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdF8gPSAocmVxdWVzdCktPndrUmVxdWVz
dC5nZXQoKQorCit2b2lkIGV3a191cmxfcmVxdWVzdF9yZWYoRXdrX1VybF9SZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHJlcXVlc3QpOworICAgICsr
cmVxdWVzdC0+X19yZWY7Cit9CisKK3ZvaWQgZXdrX3VybF9yZXF1ZXN0X3VucmVmKEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1
ZXN0KTsKKworICAgIGlmICgtLXJlcXVlc3QtPl9fcmVmKQorICAgICAgICByZXR1cm47CisKKyAg
ICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXF1ZXN0LT51cmwpOworICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHJlcXVlc3QtPmZpcnN0X3BhcnR5KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChy
ZXF1ZXN0LT5odHRwX21ldGhvZCk7CisgICAgZnJlZShyZXF1ZXN0KTsKK30KKworY29uc3QgY2hh
ciAqZXdrX3VybF9yZXF1ZXN0X3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXF1ZXN0ICpyZXF1ZXN0
KQoreworICAgIEVXS19VUkxfUkVRVUVTVF9XS19HRVRfT1JfUkVUVVJOKHJlcXVlc3QsIHdrUmVx
dWVzdCwgMCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVcmwoQWRvcHRXSywgV0tV
UkxSZXF1ZXN0Q29weVVSTCh3a1JlcXVlc3QpKTsKKyAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1Jl
cXVlc3QgPSBjb25zdF9jYXN0PEV3a19VcmxfUmVxdWVzdCo+KHJlcXVlc3QpOworICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrUmVxdWVzdC0+dXJsLCB0b0ltcGwod2tVcmwuZ2V0KCkp
LT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT51cmw7Cit9
CisKK2NvbnN0IGNoYXIgKmV3a19yZXF1ZXN0X2ZpcnN0X3BhcnR5X2dldChjb25zdCBFd2tfVXJs
X1JlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgRVdLX1VSTF9SRVFVRVNUX1dLX0dFVF9PUl9SRVRV
Uk4ocmVxdWVzdCwgd2tSZXF1ZXN0LCAwKTsKKworICAgIEV3a19VcmxfUmVxdWVzdCogZXdrUmVx
dWVzdCA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXF1ZXN0Kj4ocmVxdWVzdCk7CisgICAgZWluYV9z
dHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXF1ZXN0LT5maXJzdF9wYXJ0eSwgdG9JbXBsKHdrUmVx
dWVzdCktPnJlc291cmNlUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+Zmlyc3RfcGFydHk7Cit9CisK
K2NvbnN0IGNoYXIgKmV3a191cmxfcmVxdWVzdF9odHRwX21ldGhvZF9nZXQoY29uc3QgRXdrX1Vy
bF9SZXF1ZXN0ICpyZXF1ZXN0KQoreworICAgIEVXS19VUkxfUkVRVUVTVF9XS19HRVRfT1JfUkVU
VVJOKHJlcXVlc3QsIHdrUmVxdWVzdCwgMCk7CisKKyAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1Jl
cXVlc3QgPSBjb25zdF9jYXN0PEV3a19VcmxfUmVxdWVzdCo+KHJlcXVlc3QpOworICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrUmVxdWVzdC0+aHR0cF9tZXRob2QsIHRvSW1wbCh3a1Jl
cXVlc3QpLT5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkudXRmOCgpLmRhdGEoKSk7CisK
KyAgICByZXR1cm4gcmVxdWVzdC0+aHR0cF9tZXRob2Q7Cit9CisKK0V3a19VcmxfUmVxdWVzdCog
ZXdrX3VybF9yZXF1ZXN0X25ldyhXS1VSTFJlcXVlc3RSZWYgd2tVcmxSZXF1ZXN0KQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh3a1VybFJlcXVlc3QsIDApOworCisgICAg
RXdrX1VybF9SZXF1ZXN0KiBld2tVcmxSZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX1VybF9SZXF1
ZXN0Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVXJsX1JlcXVlc3QpKSk7CisgICAgZXdrVXJsUmVx
dWVzdC0+X19yZWYgPSAxOworICAgIGV3a1VybFJlcXVlc3QtPndrUmVxdWVzdCA9IHdrVXJsUmVx
dWVzdDsKKworICAgIHJldHVybiBld2tVcmxSZXF1ZXN0OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xNGU3NzRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmgKQEAgLTAsMCArMSwxMDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3VybF9yZXF1ZXN0
LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFVSTCByZXF1ZXN0IEFQSS4KKyAqLwor
CisjaWZuZGVmIGV3a191cmxfcmVxdWVzdF9oCisjZGVmaW5lIGV3a191cmxfcmVxdWVzdF9oCisK
KyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1JlcXVlc3QgKi8K
K3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OworCisvKioK
KyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisg
KgorICogQHBhcmFtIHJlcXVlc3QgdGhlIFVSTCByZXF1ZXN0IG9iamVjdCB0byBpbmNyZWFzZSB0
aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3JlcXVlc3RfcmVmKEV3
a19VcmxfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogRGVjcmVhc2VzIHRoZSByZWZlcmVu
Y2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisg
KiBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgaXQncyByZWFjaGVkIDAsIHRoZSBVUkwgcmVxdWVz
dCBpcyBmcmVlZC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCB0aGUgVVJMIHJlcXVlc3Qgb2JqZWN0
IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxf
cmVxdWVzdF91bnJlZihFd2tfVXJsX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJ5
IFVSTCBmb3IgdGhpcyByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2Jq
ZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBwb2ludGVyLCB0aGF0IG1heSBi
ZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a191cmxfcmVxdWVzdF91cmxfZ2V0
KGNvbnN0IEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogUXVlcnkgZmlyc3Qg
cGFydHkgZm9yIGNvb2tpZXMgZm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVz
dCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBmaXJzdCBwYXJ0
eSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAg
ICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJs
ZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAg
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJl
X2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3
a19yZXF1ZXN0X2ZpcnN0X3BhcnR5X2dldChjb25zdCBFd2tfVXJsX1JlcXVlc3QgKnJlcXVlc3Qp
OworCisvKioKKyAqIFF1ZXJ5IEhUVFAgbWV0aG9kIGZvciB0aGlzIHJlcXVlc3QuCisgKgorICog
QHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0
aGUgSFRUUCBtZXRob2QgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVy
IGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hl
bmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMg
YW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWlu
YV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBj
b25zdCBjaGFyICpld2tfdXJsX3JlcXVlc3RfaHR0cF9tZXRob2RfZ2V0KGNvbnN0IEV3a19Vcmxf
UmVxdWVzdCAqcmVxdWVzdCk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8vIGV3a191cmxfcmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDhiNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaApA
QCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a191cmxfcmVx
dWVzdF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGVfaAorCitFd2tf
VXJsX1JlcXVlc3QqIGV3a191cmxfcmVxdWVzdF9uZXcoV0tVUkxSZXF1ZXN0UmVmKTsKKworI2Vu
ZGlmIC8vIGV3a191cmxfcmVxdWVzdF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBlNzliZDMyLi5iZGYyZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXdfbG9hZGVyX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBA
IC00OTQsNiArNDk1LDcgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNh
bnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3UKIAogICAgIHByaXYtPnBh
Z2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9J
bXBsKHBhZ2VHcm91cFJlZiksIGV3a1ZpZXcpOwogICAgIGV3a192aWV3X2xvYWRlcl9jbGllbnRf
YXR0YWNoKHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSksIGV3a1ZpZXcpOworICAgIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaCh0b0FQSShwcml2LT5wYWdlQ2xpZW50
LT5wYWdlKCkpLCBld2tWaWV3KTsKIAogICAgIHJldHVybiBld2tWaWV3OwogfQpAQCAtNTQ3LDYg
KzU0OSwyMCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIExvYWQgd2FzIGlu
aXRpYXRlZCBmb3IgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6
ICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlcXVlc3Qu
CisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSog
cmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFd2tfV2ViX1Jlc291
cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0fTsKKyAgICAv
LyBGSVhNRTogV2Ugd2lsbCBuZWVkIHRvIHN0b3JlIHRoZSByZXNvdXJjZSBhbmQgaXRzIGlkZW50
aWZpZXIgYXQgc29tZSBwb2ludAorICAgIC8vIHRvIGdldCB0aGUgcmVzb3VyY2UgYmFjayBmcm9t
IHRoZSBpZGVudGlmaWVyIG9uIHJlc291cmNlIGxvYWQgZmluaXNoLgorICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJl
c291cmNlUmVxdWVzdCk7Cit9CisKIGNvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaAppbmRleCAzNzUwNmJiLi5kYzU0MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKICAqIC0gImlu
dGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgRXdrX0ludGVudF9TZXJ2aWNlKjogcmVwb3J0cyBuZXcg
V2ViIGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KICAqIC0gImxvYWQsZXJyb3IiLCBjb25z
dCBFd2tfV2ViX0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgogICogLSAi
bG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaGFzIGNoYW5nZWQgKHZhbHVl
IGZyb20gMC4wIHRvIDEuMCkuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsIGNvbnN0IEV3
a19XZWJfUmVzb3VyY2VfUmVxdWVzdCo6IGEgcmVzb3VyY2UgcmVxdWVzdCB3YXMgaW5pdGlhdGVk
LgogICogLSAidGl0bGUsY2hhbmdlZCIsIGNvbnN0IGNoYXIqOiB0aXRsZSBvZiB0aGUgbWFpbiBm
cmFtZSB3YXMgY2hhbmdlZC4KICAqLwogCkBAIC00Niw2ICs0Nyw5IEBAIGV4dGVybiAiQyIgewog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmlld19TbWFydF9DbGFz
czsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfSW50ZW50IEV3a19JbnRlbnQ7Cit0eXBlZGVmIHN0cnVj
dCBfRXdrX1VybF9SZXF1ZXN0IEV3a19VcmxfUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9Fd2tf
V2ViX1Jlc291cmNlIEV3a19XZWJfUmVzb3VyY2U7CisKIAogLy8vIEV3ayB2aWV3J3MgY2xhc3Ms
IHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKQEAgLTEzMyw2ICsxMzcsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRh
IHsKICAgICB9IGNoYW5nZWQ7CiB9OwogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3
a19XZWJfUmVzb3VyY2VfUmVxdWVzdC4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNl
X1JlcXVlc3QgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0OworCisvKioKKyAqIEBicmllZiBTdHJ1
Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgcmVxdWVzdC4KKyAqCisg
KiBEZXRhaWxzIGdpdmVuIGFib3V0IGEgcmVzb3VyY2UgaXMgbG9hZGVkLgorICovCitzdHJ1Y3Qg
X0V3a19XZWJfUmVzb3VyY2VfUmVxdWVzdCB7CisgICAgRXdrX1dlYl9SZXNvdXJjZSAqcmVzb3Vy
Y2U7IC8qKjwgcmVzb3VyY2UgYmVpbmcgcmVxdWVzdGVkICovCisgICAgRXdrX1VybF9SZXF1ZXN0
ICpyZXF1ZXN0OyAvKio8IFVSTCByZXF1ZXN0IGZvciB0aGUgcmVzb3VyY2UgKi8KK307CisKIC8q
KgogICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IHZpZXcgb2JqZWN0LgogICoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRl
eCBiNzJhMGE5Li45ZDRiZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0zMCw3ICszMCw5IEBAIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBJbnRTaXplOwogfQogCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXF1ZXN0
IEV3a19VcmxfUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJf
RXJyb3I7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291cmNl
OwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIHR5cGVkZWYgc3RydWN0IF9Fd2tfSW50ZW50IEV3
a19JbnRlbnQ7CiAjZW5kaWYKQEAgLTQzLDYgKzQ1LDcgQEAgdm9pZCBld2tfdmlld19pbWFnZV9k
YXRhX3NldChFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJD
b3IKIHZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX1dlYl9FcnJvciogZXJyb3IpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5n
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJsZSBwcm9ncmVzcyk7CiB2b2lkIGV3a192aWV3
X3RpdGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsK
K3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3Vy
Y2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19i
YXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNv
dXJjZV9sb2FkX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmJlMzlhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0ZyYW1lLmgiCisjaW5jbHVkZSAiV0tQ
YWdlLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2lu
Y2x1ZGUgIldLVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgorI2lu
Y2x1ZGUgImV3a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9yZXNv
dXJjZV9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJj
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgd2tGcmFtZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBXS1VSTFJlcXVlc3RSZWYgd2tSZXF1ZXN0LCBib29sIHBhZ2VJc1Byb3Zpc2lvbmFsbHlM
b2FkaW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV2YXNfT2JqZWN0KiBld2tW
aWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7CisgICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IChXS0ZyYW1lSXNNYWluRnJhbWUod2tG
cmFtZSkgJiYgcGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmcpOworICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVmPiB3a1VybChBZG9wdFdLLCBXS1VSTFJlcXVlc3RDb3B5VVJMKHdrUmVxdWVzdCkpOwor
CisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBld2tfd2ViX3Jlc291cmNlX25ldyh0
b0ltcGwod2tVcmwuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpc01haW5SZXNvdXJj
ZSk7CisgICAgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0ID0gZXdrX3VybF9yZXF1ZXN0X25ldyh3
a1JlcXVlc3QpOworICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKGV3a1ZpZXcs
IHJlc291cmNlSWRlbnRpZmllciwgcmVzb3VyY2UsIHJlcXVlc3QpOworICAgIGV3a193ZWJfcmVz
b3VyY2VfdW5yZWYocmVzb3VyY2UpOworICAgIGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0
KTsKK30KKwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2goV0tQYWdl
UmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIFdLUGFnZVJlc291cmNl
TG9hZENsaWVudCB3a1Jlc291cmNlTG9hZENsaWVudDsKKyAgICBtZW1zZXQoJndrUmVzb3VyY2VM
b2FkQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50KSk7CisgICAgd2tS
ZXNvdXJjZUxvYWRDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnRDdXJy
ZW50VmVyc2lvbjsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5jbGllbnRJbmZvID0gZXdrVmll
dzsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSA9
IGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlOworCisgICAgV0tQYWdlU2V0UGFnZVJlc291cmNl
TG9hZENsaWVudChwYWdlUmVmLCAmd2tSZXNvdXJjZUxvYWRDbGllbnQpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9jbGllbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFmNDA0YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRl
LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdmll
d19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3ZpZXdfcmVzb3Vy
Y2VfbG9hZF9jbGllbnRfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9h
dHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworI2VuZGlm
IC8vIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmUyOGRmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHAK
QEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKKworI2luY2x1ZGUgImV3a193ZWJfcmVz
b3VyY2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworc3RydWN0
IF9Fd2tfV2ViX1Jlc291cmNlIHsKKyAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJl
ZmVyZW5jZSBjb3VudCBvZiB0aGUgb2JqZWN0ICovCisgICAgQ1N0cmluZyB1cmw7CisgICAgYm9v
bCBpc01haW5SZXNvdXJjZTsKK307CisKK3ZvaWQgZXdrX3dlYl9yZXNvdXJjZV9yZWYoRXdrX1dl
Yl9SZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
cmVzb3VyY2UpOworCisgICAgKytyZXNvdXJjZS0+X19yZWY7Cit9CisKK3ZvaWQgZXdrX3dlYl9y
ZXNvdXJjZV91bnJlZihFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihyZXNvdXJjZSk7CisKKyAgICBpZiAoLS1yZXNvdXJjZS0+X19y
ZWYpCisgICAgICAgIHJldHVybjsKKyAgICBmcmVlKHJlc291cmNlKTsKK30KKworY29uc3QgY2hh
ciogZXdrX3dlYl9yZXNvdXJjZV91cmxfZ2V0KGNvbnN0IEV3a19XZWJfUmVzb3VyY2UqIHJlc291
cmNlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXNvdXJjZSwgMCk7
CisgICAgcmV0dXJuIHJlc291cmNlLT51cmwuZGF0YSgpOworfQorCitFd2tfV2ViX1Jlc291cmNl
KiBld2tfd2ViX3Jlc291cmNlX25ldyhjb25zdCBjaGFyKiB1cmwsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CisKKyAg
ICBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PEV3a19XZWJfUmVzb3Vy
Y2UqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19XZWJfUmVzb3VyY2UpKSk7CisgICAgcmVzb3VyY2Ut
PnVybCA9IHVybDsKKyAgICByZXNvdXJjZS0+aXNNYWluUmVzb3VyY2UgPSBpc01haW5SZXNvdXJj
ZTsKKyAgICByZXNvdXJjZS0+X19yZWYgPSAxOworCisgICAgcmV0dXJuIHJlc291cmNlOworfQor
CitFaW5hX0Jvb2wgZXdrX3dlYl9yZXNvdXJjZV9tYWluX2dldChjb25zdCBFd2tfV2ViX1Jlc291
cmNlKiByZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVz
b3VyY2UsIGZhbHNlKTsKKyAgICByZXR1cm4gcmVzb3VyY2UtPmlzTWFpblJlc291cmNlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNv
dXJjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YTM4ZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291
cmNlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfd2ViX3Jlc291cmNlLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgV2ViIFJl
c291cmNlIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a193ZWJfcmVzb3VyY2VfaAorI2RlZmluZSBl
d2tfd2ViX3Jlc291cmNlX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
QGEgRXdrX1dlYl9SZXNvdXJjZS4gKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNl
IEV3a19XZWJfUmVzb3VyY2U7CisKKy8qKgorICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291
bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcmVzb3VyY2UgdGhlIHJlc291
cmNlIG9iamVjdCB0byBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9p
ZCBld2tfd2ViX3Jlc291cmNlX3JlZihFd2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZSk7CisKKy8q
KgorICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdCwg
cG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgaXQn
cyByZWFjaGVkIDAsIHRoZSByZXNvdXJjZSBpcyBmcmVlZC4KKyAqCisgKiBAcGFyYW0gcmVzb3Vy
Y2UgdGhlIHJlc291cmNlIG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50Cisg
Ki8KK0VBUEkgdm9pZCBld2tfd2ViX3Jlc291cmNlX3VucmVmKEV3a19XZWJfUmVzb3VyY2UgKnJl
c291cmNlKTsKKworLyoqCisgKiBRdWVyeSBVUkwgZm9yIHRoaXMgcmVzb3VyY2UuCisgKgorICog
QHBhcmFtIHJlc291cmNlIHJlc291cmNlIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJu
IHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4KKyAqLworRUFQSSBjb25zdCBj
aGFyICpld2tfd2ViX3Jlc291cmNlX3VybF9nZXQoY29uc3QgRXdrX1dlYl9SZXNvdXJjZSAqcmVz
b3VyY2UpOworCisvKioKKyAqIFF1ZXJ5IGlmIHRoaXMgaXMgdGhlIG1haW4gcmVzb3VyY2UuCisg
KgorICogQHBhcmFtIHJlc291cmNlIHJlc291cmNlIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGlzIGlzIHRoZSBtYWluIHJlc291cmNlLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfd2ViX3Jlc291cmNlX21h
aW5fZ2V0KGNvbnN0IEV3a19XZWJfUmVzb3VyY2UgKnJlc291cmNlKTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a193ZWJfcmVzb3VyY2VfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZV9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291
cmNlX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjQ0ZmUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3dlYl9yZXNvdXJjZV9wcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBld2tfd2ViX3Jlc291cmNlX3ByaXZhdGVfaAorI2RlZmluZSBld2tfd2Vi
X3Jlc291cmNlX3ByaXZhdGVfaAorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZSBF
d2tfV2ViX1Jlc291cmNlOworCitFd2tfV2ViX1Jlc291cmNlKiBld2tfd2ViX3Jlc291cmNlX25l
dyhjb25zdCBjaGFyKiB1cmksIGJvb2wgaXNNYWluUmVzb3VyY2UpOworCisjZW5kaWYgLy8gZXdr
X3dlYl9yZXNvdXJjZV9wcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150880</attachid>
            <date>2012-07-04 23:16:22 -0700</date>
            <delta_ts>2012-07-05 00:59:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90577_resource_request.patch</filename>
            <type>text/plain</type>
            <size>32143</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1M2ZhOWI1Li5kMmYxNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMDctMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IG5lZWRzIHRvIHJlcG9ydCBuZXcg
cmVzb3VyY2UgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkwNTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG5ldyAicmVzb3VyY2UscmVxdWVzdCxuZXciIHNpZ25hbCB0byBFd2tfVmll
dyB0bworICAgICAgICBub3RpZnkgY2xpZW50cyBvZiB0aGUgcmVzb3VyY2UgcmVxdWVzdHMgYmVp
bmcgaW5pdGlhdGVkLgorICAgICAgICBOZXcgRXdrX1VybF9SZXF1ZXN0IGFuZCBFd2tfV2ViX1Jl
c291cmNlIHR5cGVzIGFyZQorICAgICAgICBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIHByb3ZpZGUg
dGhlIGNsaWVudHMgd2l0aCB0aGUKKyAgICAgICAgbmVlZGVkIGluZm9ybWF0aW9uIHJlZ2FyZGlu
ZyB0aGUgcmVzb3VyY2UgcmVxdWVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19V
cmxfUmVxdWVzdCk6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVxdWVzdF91bnJlZik6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfdXJsX2dldCk6
CisgICAgICAgIChld2tfcmVxdWVzdF9maXJzdF9wYXJ0eV9nZXQpOgorICAgICAgICAoZXdrX3Vy
bF9yZXF1ZXN0X2h0dHBfbWV0aG9kX2dldCk6CisgICAgICAgIChld2tfdXJsX3JlcXVlc3RfbmV3
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoZXdrX3ZpZXdfYmFzZV9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9p
bml0aWF0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChld2tfdmll
d19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoX0V3a19XZWJfUmVzb3VyY2UpOgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV9yZWYp
OgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV91bnJlZik6CisgICAgICAgIChld2tfd2ViX3Jl
c291cmNlX3VyaV9nZXQpOgorICAgICAgICAoZXdrX3dlYl9yZXNvdXJjZV9uZXcpOgorICAgICAg
ICAoZXdrX3dlYl9yZXNvdXJjZV9tYWluX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDctMDQgIEpvaG4g
TWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6
IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCAzYzczOGViLi5jNzFhOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMzQsOSArMzQsMTIgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2lu
dGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRl
cl9jbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKyAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNwcAogCiAgICAgVUlQcm9jZXNz
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBjZDhjOWNhLi43OTlkMjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNp
bmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50X3NlcnZpY2UuaCIKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlLmgiCiAKICNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWE4NzRiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcApA
QCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUg
IldLVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJVUkxSZXF1ZXN0RWZsLmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKKy8qKgorICogXHN0cnVjdCAgX0V3a19VcmxfUmVxdWVzdAorICogQGJyaWVmICAgQ29udGFp
bnMgdGhlIFVSTCByZXF1ZXN0IGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IHsK
KyAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUg
b2JqZWN0ICovCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1ZXN0UmVmPiB3a1JlcXVlc3Q7CisK
KyAgICBjb25zdCBjaGFyKiB1cmw7CisgICAgY29uc3QgY2hhciogZmlyc3RfcGFydHk7CisgICAg
Y29uc3QgY2hhciogaHR0cF9tZXRob2Q7Cit9OworCisjZGVmaW5lIEVXS19VUkxfUkVRVUVTVF9X
S19HRVRfT1JfUkVUVVJOKHJlcXVlc3QsIHdrUmVxdWVzdF8sIC4uLikgICAgXAorICAgIGlmICgh
KHJlcXVlc3QpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgicmVxdWVzdCBpcyBOVUxMLiIpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBpZiAoIShyZXF1ZXN0KS0+d2tSZXF1ZXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoInJlcXVlc3QtPndrUmVxdWVzdCBp
cyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdF8gPSAocmVxdWVzdCktPndrUmVxdWVz
dC5nZXQoKQorCit2b2lkIGV3a191cmxfcmVxdWVzdF9yZWYoRXdrX1VybF9SZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHJlcXVlc3QpOworICAgICsr
cmVxdWVzdC0+X19yZWY7Cit9CisKK3ZvaWQgZXdrX3VybF9yZXF1ZXN0X3VucmVmKEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1
ZXN0KTsKKworICAgIGlmICgtLXJlcXVlc3QtPl9fcmVmKQorICAgICAgICByZXR1cm47CisKKyAg
ICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXF1ZXN0LT51cmwpOworICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHJlcXVlc3QtPmZpcnN0X3BhcnR5KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChy
ZXF1ZXN0LT5odHRwX21ldGhvZCk7CisgICAgZnJlZShyZXF1ZXN0KTsKK30KKworY29uc3QgY2hh
ciogZXdrX3VybF9yZXF1ZXN0X3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIEVXS19VUkxfUkVRVUVTVF9XS19HRVRfT1JfUkVUVVJOKHJlcXVlc3QsIHdrUmVx
dWVzdCwgMCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVcmwoQWRvcHRXSywgV0tV
UkxSZXF1ZXN0Q29weVVSTCh3a1JlcXVlc3QpKTsKKyAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1Jl
cXVlc3QgPSBjb25zdF9jYXN0PEV3a19VcmxfUmVxdWVzdCo+KHJlcXVlc3QpOworICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrUmVxdWVzdC0+dXJsLCB0b0ltcGwod2tVcmwuZ2V0KCkp
LT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT51cmw7Cit9
CisKK2NvbnN0IGNoYXIqIGV3a19yZXF1ZXN0X2Nvb2tpZXNfZmlyc3RfcGFydHlfZ2V0KGNvbnN0
IEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFV0tfVVJMX1JFUVVFU1RfV0tfR0VU
X09SX1JFVFVSTihyZXF1ZXN0LCB3a1JlcXVlc3QsIDApOworCisgICAgRXdrX1VybF9SZXF1ZXN0
KiBld2tSZXF1ZXN0ID0gY29uc3RfY2FzdDxFd2tfVXJsX1JlcXVlc3QqPihyZXF1ZXN0KTsKKyAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1JlcXVlc3QtPmZpcnN0X3BhcnR5LCB0b0lt
cGwod2tSZXF1ZXN0KS0+cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5maXJzdF9wYXJ0
eTsKK30KKworY29uc3QgY2hhciogZXdrX3VybF9yZXF1ZXN0X2h0dHBfbWV0aG9kX2dldChjb25z
dCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRVdLX1VSTF9SRVFVRVNUX1dLX0dF
VF9PUl9SRVRVUk4ocmVxdWVzdCwgd2tSZXF1ZXN0LCAwKTsKKworICAgIEV3a19VcmxfUmVxdWVz
dCogZXdrUmVxdWVzdCA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXF1ZXN0Kj4ocmVxdWVzdCk7Cisg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXF1ZXN0LT5odHRwX21ldGhvZCwgdG9J
bXBsKHdrUmVxdWVzdCktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5odHRwX21ldGhvZDsKK30KKworLyoqCisgKiBA
aW50ZXJuYWwKKyAqIENvbnN0cnVjdHMgYSBFd2tfVXJsX1JlcXVlc3QgZnJvbSBhIFdLVVJMUmVx
dWVzdC4KKyAqLworRXdrX1VybF9SZXF1ZXN0KiBld2tfdXJsX3JlcXVlc3RfbmV3KFdLVVJMUmVx
dWVzdFJlZiB3a1VybFJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHdrVXJsUmVxdWVzdCwgMCk7CisKKyAgICBFd2tfVXJsX1JlcXVlc3QqIGV3a1VybFJlcXVl
c3QgPSBzdGF0aWNfY2FzdDxFd2tfVXJsX1JlcXVlc3QqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19V
cmxfUmVxdWVzdCkpKTsKKyAgICBld2tVcmxSZXF1ZXN0LT5fX3JlZiA9IDE7CisgICAgZXdrVXJs
UmVxdWVzdC0+d2tSZXF1ZXN0ID0gd2tVcmxSZXF1ZXN0OworCisgICAgcmV0dXJuIGV3a1VybFJl
cXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfcmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNTBiODkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dXJsX3JlcXVlc3QuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoq
CisgKiBAZmlsZSAgICBld2tfdXJsX3JlcXVlc3QuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRo
ZSBFd2sgVVJMIHJlcXVlc3QgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3VybF9yZXF1ZXN0X2gK
KyNkZWZpbmUgZXdrX3VybF9yZXF1ZXN0X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUg
bmFtZSBmb3IgX0V3a19VcmxfUmVxdWVzdCAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVx
dWVzdCBFd2tfVXJsX1JlcXVlc3Q7CisKKy8qKgorICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2Ug
Y291bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCB0aGUgVVJM
IHJlcXVlc3Qgb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQ
SSB2b2lkIGV3a191cmxfcmVxdWVzdF9yZWYoRXdrX1VybF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
LyoqCisgKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0
LCBwb3NzaWJseSBmcmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBp
dCdzIHJlYWNoZWQgMCwgdGhlIFVSTCByZXF1ZXN0IGlzIGZyZWVkLgorICoKKyAqIEBwYXJhbSBy
ZXF1ZXN0IHRoZSBVUkwgcmVxdWVzdCBvYmplY3QgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBj
b3VudAorICovCitFQVBJIHZvaWQgZXdrX3VybF9yZXF1ZXN0X3VucmVmKEV3a19VcmxfUmVxdWVz
dCAqcmVxdWVzdCk7CisKKy8qKgorICogUXVlcnkgVVJMIGZvciB0aGlzIHJlcXVlc3QuCisgKgor
ICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVy
biB0aGUgVVJMIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwor
ICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVy
IHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1
c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3Qg
Y2hhciAqZXdrX3VybF9yZXF1ZXN0X3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXF1ZXN0ICpyZXF1
ZXN0KTsKKworLyoqCisgKiBRdWVyeSBmaXJzdCBwYXJ0eSBmb3IgY29va2llcyBmb3IgdGhpcyBy
ZXF1ZXN0LgorICoKKyAqIElmIHNldCwgdGhpcyBmaXJzdCBwYXJ0eSBVUkwgaXMgdXNlZCB0byBk
aXN0aW5ndWlzaCBmaXJzdCBwYXJ0eSBjb29raWVzCisgKiBmcm9tIHRoaXJkIHBhcnR5IG9uZXMu
IFRoaXMgaXMgdXN1YWxseSBzZXQgdG8gdGhlIFVSTCBvZiB0aGUgbWFpbiBkb2N1bWVudC4KKyAq
CisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0
dXJuIHRoZSBmaXJzdCBwYXJ0eSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBv
aW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBz
byB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5
Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBv
ZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a19yZXF1ZXN0X2Nvb2tpZXNfZmlyc3RfcGFydHlfZ2V0KGNvbnN0
IEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogUXVlcnkgSFRUUCBtZXRob2Qg
Zm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBIVFRQIG1ldGhvZHMgYXJlIGRlZmluZWQgYnk6Cisg
KiBodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzkuaHRtbAor
ICoKKyAqIEV4YW1wbGVzIG9mIEhUVFAgbWV0aG9kcyBhcmUgIkdFVCIsICJQT1NUIi4KKyAqCisg
KiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJu
IHRoZSBIVFRQIG1ldGhvZCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50
ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3
aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xl
cyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBl
aW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJ
IGNvbnN0IGNoYXIgKmV3a191cmxfcmVxdWVzdF9odHRwX21ldGhvZF9nZXQoY29uc3QgRXdrX1Vy
bF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLy8gZXdrX3VybF9yZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdF9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OGI2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3VybF9y
ZXF1ZXN0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZV9oCisKK0V3
a19VcmxfUmVxdWVzdCogZXdrX3VybF9yZXF1ZXN0X25ldyhXS1VSTFJlcXVlc3RSZWYpOworCisj
ZW5kaWYgLy8gZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGU3OWJkMzIuLmJkZjJlZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dmlld19sb2FkZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
QEAgLTQ5NCw2ICs0OTUsNyBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyog
Y2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdQogCiAgICAgcHJpdi0+
cGFnZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0
b0ltcGwocGFnZUdyb3VwUmVmKSwgZXdrVmlldyk7CiAgICAgZXdrX3ZpZXdfbG9hZGVyX2NsaWVu
dF9hdHRhY2godG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgZXdrVmlldyk7CisgICAg
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKHRvQVBJKHByaXYtPnBhZ2VDbGll
bnQtPnBhZ2UoKSksIGV3a1ZpZXcpOwogCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CkBAIC01NDcs
NiArNTQ5LDIwIEBAIEVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogICAgIHJldHVybiB0cnVlOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICogTG9hZCB3YXMg
aW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25h
bDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVxdWVz
dC4KKyAqLwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVj
dCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX1Jlc291cmNl
KiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEV3a19XZWJfUmVz
b3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3R9OworICAg
IC8vIEZJWE1FOiBXZSB3aWxsIG5lZWQgdG8gc3RvcmUgdGhlIHJlc291cmNlIGFuZCBpdHMgaWRl
bnRpZmllciBhdCBzb21lIHBvaW50CisgICAgLy8gdG8gZ2V0IHRoZSByZXNvdXJjZSBiYWNrIGZy
b20gdGhlIGlkZW50aWZpZXIgb24gcmVzb3VyY2UgbG9hZCBmaW5pc2guCisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAm
cmVzb3VyY2VSZXF1ZXN0KTsKK30KKwogY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCmluZGV4IDM3NTA2YmIuLmRjNTQzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogICogLSAi
aW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50ZW50X1NlcnZpY2UqOiByZXBvcnRzIG5l
dyBXZWIgaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgogICogLSAibG9hZCxlcnJvciIsIGNv
bnN0IEV3a19XZWJfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQuCiAgKiAt
ICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9ncmVzcyBoYXMgY2hhbmdlZCAodmFs
dWUgZnJvbSAwLjAgdG8gMS4wKS4KKyAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29uc3Qg
RXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0aWF0
ZWQuCiAgKiAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9mIHRoZSBtYWlu
IGZyYW1lIHdhcyBjaGFuZ2VkLgogICovCiAKQEAgLTQ2LDYgKzQ3LDkgQEAgZXh0ZXJuICJDIiB7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRh
OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnQgRXdrX0ludGVudDsKK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX0V3
a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKKwogCiAvLy8gRXdrIHZpZXcncyBjbGFz
cywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgewpAQCAtMTMzLDYgKzEzNywxOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Rh
dGEgewogICAgIH0gY2hhbmdlZDsKIH07CiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBf
RXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0LgordHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3Vy
Y2VfUmVxdWVzdCBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3Q7CisKKy8qKgorICogQGJyaWVmIFN0
cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNvdXJjZSByZXF1ZXN0LgorICoK
KyAqIERldGFpbHMgZ2l2ZW4gYWJvdXQgYSByZXNvdXJjZSBpcyBsb2FkZWQuCisgKi8KK3N0cnVj
dCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHsKKyAgICBFd2tfV2ViX1Jlc291cmNlICpyZXNv
dXJjZTsgLyoqPCByZXNvdXJjZSBiZWluZyByZXF1ZXN0ZWQgKi8KKyAgICBFd2tfVXJsX1JlcXVl
c3QgKnJlcXVlc3Q7IC8qKjwgVVJMIHJlcXVlc3QgZm9yIHRoZSByZXNvdXJjZSAqLworfTsKKwog
LyoqCiAgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QuCiAgKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmlu
ZGV4IGI3MmEwYTkuLjlkNGJkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTMwLDcgKzMwLDkgQEAgY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVl
c3QgRXdrX1VybF9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dl
Yl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIEV3a19XZWJfUmVzb3Vy
Y2U7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnQg
RXdrX0ludGVudDsKICNlbmRpZgpAQCAtNDMsNiArNDUsNyBAQCB2b2lkIGV3a192aWV3X2ltYWdl
X2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdl
YkNvcgogdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hh
bmdlZChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIHByb2dyZXNzKTsKIHZvaWQgZXdrX3Zp
ZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUp
Owordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVjdCogZXdr
VmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX1Jlc291cmNlKiByZXNv
dXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KTsKIAogRXZhc19PYmplY3QqIGV3a192aWV3
X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jl
c291cmNlX2xvYWRfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42YmUzOWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRnJhbWUuaCIKKyNpbmNsdWRlICJX
S1BhZ2UuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLVVJMLmgiCisj
aW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCisj
aW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0
ZS5oIgorI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKKyNpbmNsdWRlICJld2tfd2ViX3Jl
c291cmNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJlc291
cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiB3a0ZyYW1lLCB1aW50NjRfdCByZXNvdXJjZUlkZW50
aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIGJvb2wgcGFnZUlzUHJvdmlzaW9uYWxs
eUxvYWRpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXZhc19PYmplY3QqIGV3
a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlID0gKFdLRnJhbWVJc01haW5GcmFtZSh3
a0ZyYW1lKSAmJiBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZyk7CisgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IHdrVXJsKEFkb3B0V0ssIFdLVVJMUmVxdWVzdENvcHlVUkwod2tSZXF1ZXN0KSk7
CisKKyAgICBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSA9IGV3a193ZWJfcmVzb3VyY2VfbmV3
KHRvSW1wbCh3a1VybC5nZXQoKSktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlzTWFpblJlc291
cmNlKTsKKyAgICBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QgPSBld2tfdXJsX3JlcXVlc3RfbmV3
KHdrUmVxdWVzdCk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoZXdrVmll
dywgcmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSwgcmVxdWVzdCk7CisgICAgZXdrX3dlYl9y
ZXNvdXJjZV91bnJlZihyZXNvdXJjZSk7CisgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVmKHJlcXVl
c3QpOworfQorCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChXS1Bh
Z2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgV0tQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50IHdrUmVzb3VyY2VMb2FkQ2xpZW50OworICAgIG1lbXNldCgmd2tSZXNvdXJj
ZUxvYWRDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnQpKTsKKyAgICB3
a1Jlc291cmNlTG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZVJlc291cmNlTG9hZENsaWVudEN1
cnJlbnRWZXJzaW9uOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmNsaWVudEluZm8gPSBld2tW
aWV3OworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEluaXRpYXRlTG9hZEZvclJlc291cmNl
ID0gZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U7CisKKyAgICBXS1BhZ2VTZXRQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50KHBhZ2VSZWYsICZ3a1Jlc291cmNlTG9hZENsaWVudCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9s
b2FkX2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWY0MDRiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZh
dGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdmlld19yZXNv
dXJjZV9sb2FkX2NsaWVudF9wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCisjZW5k
aWYgLy8gZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMWRkZGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNw
cApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgorCisjaW5jbHVkZSAiZXdrX3dlYl9y
ZXNvdXJjZV9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1
Y3QgX0V3a19XZWJfUmVzb3VyY2UgeworICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUg
cmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KKyAgICBDU3RyaW5nIHVybDsKKyAgICBi
b29sIGlzTWFpblJlc291cmNlOworfTsKKwordm9pZCBld2tfd2ViX3Jlc291cmNlX3JlZihFd2tf
V2ViX1Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihyZXNvdXJjZSk7CisKKyAgICArK3Jlc291cmNlLT5fX3JlZjsKK30KKwordm9pZCBld2tfd2Vi
X3Jlc291cmNlX3VucmVmKEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHJlc291cmNlKTsKKworICAgIGlmICgtLXJlc291cmNlLT5f
X3JlZikKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJlZShyZXNvdXJjZSk7Cit9CisKK2NvbnN0
IGNoYXIqIGV3a193ZWJfcmVzb3VyY2VfdXJsX2dldChjb25zdCBFd2tfV2ViX1Jlc291cmNlKiBy
ZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzb3VyY2Us
IDApOworCisgICAgcmV0dXJuIHJlc291cmNlLT51cmwuZGF0YSgpOworfQorCisvKioKKyAqIEBp
bnRlcm5hbAorICogQ29uc3RydWN0cyBhIEV3a19XZWJfUmVzb3VyY2UuCisgKi8KK0V3a19XZWJf
UmVzb3VyY2UqIGV3a193ZWJfcmVzb3VyY2VfbmV3KGNvbnN0IGNoYXIqIHVybCwgYm9vbCBpc01h
aW5SZXNvdXJjZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAw
KTsKKworICAgIEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0gc3RhdGljX2Nhc3Q8RXdrX1dl
Yl9SZXNvdXJjZSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1dlYl9SZXNvdXJjZSkpKTsKKyAgICBy
ZXNvdXJjZS0+dXJsID0gdXJsOworICAgIHJlc291cmNlLT5pc01haW5SZXNvdXJjZSA9IGlzTWFp
blJlc291cmNlOworICAgIHJlc291cmNlLT5fX3JlZiA9IDE7CisKKyAgICByZXR1cm4gcmVzb3Vy
Y2U7Cit9CisKK0VpbmFfQm9vbCBld2tfd2ViX3Jlc291cmNlX21haW5fcmVzb3VyY2VfZ2V0KGNv
bnN0IEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChyZXNvdXJjZSwgZmFsc2UpOworCisgICAgcmV0dXJuIHJlc291cmNlLT5p
c01haW5SZXNvdXJjZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfcmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42YTNiMDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3dlYl9yZXNvdXJjZS5oCisgKiBAYnJpZWYgICBE
ZXNjcmliZXMgdGhlIFdlYiBSZXNvdXJjZSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfd2ViX3Jl
c291cmNlX2gKKyNkZWZpbmUgZXdrX3dlYl9yZXNvdXJjZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19XZWJfUmVzb3VyY2UuICovCit0eXBlZGVmIHN0cnVj
dCBfRXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291cmNlOworCisvKioKKyAqIEluY3JlYXNl
cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFt
IHJlc291cmNlIHRoZSByZXNvdXJjZSBvYmplY3QgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBj
b3VudAorICovCitFQVBJIHZvaWQgZXdrX3dlYl9yZXNvdXJjZV9yZWYoRXdrX1dlYl9SZXNvdXJj
ZSAqcmVzb3VyY2UpOworCisvKioKKyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9m
IHRoZSBnaXZlbiBvYmplY3QsIHBvc3NpYmx5IGZyZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUg
cmVmZXJlbmNlIGNvdW50IGl0J3MgcmVhY2hlZCAwLCB0aGUgcmVzb3VyY2UgaXMgZnJlZWQuCisg
KgorICogQHBhcmFtIHJlc291cmNlIHRoZSByZXNvdXJjZSBvYmplY3QgdG8gZGVjcmVhc2UgdGhl
IHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihF
d2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZSk7CisKKy8qKgorICogUXVlcnkgVVJMIGZvciB0aGlz
IHJlc291cmNlLgorICoKKyAqIEBwYXJhbSByZXNvdXJjZSByZXNvdXJjZSBvYmplY3QgdG8gcXVl
cnkuCisgKgorICogQHJldHVybiB0aGUgVVJMIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwu
CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3dlYl9yZXNvdXJjZV91cmxfZ2V0KGNvbnN0IEV3
a19XZWJfUmVzb3VyY2UgKnJlc291cmNlKTsKKworLyoqCisgKiBRdWVyeSBpZiB0aGlzIGlzIHRo
ZSBtYWluIHJlc291cmNlLgorICoKKyAqIEBwYXJhbSByZXNvdXJjZSByZXNvdXJjZSBvYmplY3Qg
dG8gcXVlcnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhpcyBpcyB0aGUgbWFp
biByZXNvdXJjZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wg
ZXdrX3dlYl9yZXNvdXJjZV9tYWluX3Jlc291cmNlX2dldChjb25zdCBFd2tfV2ViX1Jlc291cmNl
ICpyZXNvdXJjZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAv
LyBld2tfd2ViX3Jlc291cmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWI0NGZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3dlYl9yZXNvdXJj
ZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlX2gKKwordHlwZWRl
ZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKKworRXdrX1dlYl9S
ZXNvdXJjZSogZXdrX3dlYl9yZXNvdXJjZV9uZXcoY29uc3QgY2hhciogdXJpLCBib29sIGlzTWFp
blJlc291cmNlKTsKKworI2VuZGlmIC8vIGV3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>