<?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>166632</bug_id>
          
          <creation_ts>2016-12-31 14:06:34 -0800</creation_ts>
          <short_desc>[GTK] Expose WebKitSecurityOrigin API</short_desc>
          <delta_ts>2017-01-03 04:00:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>166624</dependson>
          <blocked>163366</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263215</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 14:06:34 -0800</bug_when>
    <thetext>Expose WebKitSecurityOrigin API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263217</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 14:09:50 -0800</bug_when>
    <thetext>Note that discussion for this is mostly in bug #163366.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263219</commentid>
    <comment_count>2</comment_count>
      <attachid>297871</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-31 14:21:40 -0800</bug_when>
    <thetext>Created attachment 297871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263227</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-01 01:57:48 -0800</bug_when>
    <thetext>I&apos;m not going to use SecurityOrigin for website data api in the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263228</commentid>
    <comment_count>4</comment_count>
      <attachid>297871</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-01 02:23:27 -0800</bug_when>
    <thetext>Comment on attachment 297871
Patch

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

Thanks!

&gt; Source/WebKit2/ChangeLog:9
&gt; +        permissions and exposing new functionality of WebKitWebsiteDataManager.

I&apos;m not going to use this in WebKitWebsiteDataManager in the end.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:61
&gt; +    int referenceCount = 1;

I&apos;ve never seen this = 1 initialization, shouldn&apos;t it be { 1 }?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:77
&gt; +WebCore::SecurityOrigin&amp; webkitSecurityOriginGetSecurityOrigin(WebKitSecurityOrigin* origin)
&gt; +{
&gt; +    ASSERT(origin);
&gt; +    return origin-&gt;securityOrigin.get();
&gt; +}

As I said in the other review if you use to_string/as_string we don&apos;t need this.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:179
&gt; +    if (origin-&gt;securityOrigin-&gt;protocol().isEmpty())
&gt; +        return nullptr;

You should document that this can return %NULL. There&apos;s allow-none annotation, but we should explain in which cases a security origin can have a null protocol.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:201
&gt; +    if (origin-&gt;securityOrigin-&gt;host().isEmpty())
&gt; +        return nullptr;

Ditoo.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:216
&gt; + * #WebKitSecurityOrigin constructed from either string.

string -&gt; URI

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:2
&gt; + * Copyright (C) 2016 Igalia S.L.

Happy new year!

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:30
&gt; +    GUniquePtr&lt;char&gt; asString(webkit_security_origin_to_string(origin));

I still think as_string could be a good name and return const char*, but I don&apos;t have a strong opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263230</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-01 08:09:30 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        permissions and exposing new functionality of WebKitWebsiteDataManager.
&gt; 
&gt; I&apos;m not going to use this in WebKitWebsiteDataManager in the end.

OK.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:61
&gt; &gt; +    int referenceCount = 1;
&gt; 
&gt; I&apos;ve never seen this = 1 initialization, shouldn&apos;t it be { 1 }?

Good point, that is WebKit style. I usually use = in my own projects.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:77
&gt; &gt; +WebCore::SecurityOrigin&amp; webkitSecurityOriginGetSecurityOrigin(WebKitSecurityOrigin* origin)
&gt; &gt; +{
&gt; &gt; +    ASSERT(origin);
&gt; &gt; +    return origin-&gt;securityOrigin.get();
&gt; &gt; +}
&gt; 
&gt; As I said in the other review if you use to_string/as_string we don&apos;t need
&gt; this.

Oops, missed that.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:179
&gt; &gt; +    if (origin-&gt;securityOrigin-&gt;protocol().isEmpty())
&gt; &gt; +        return nullptr;
&gt; 
&gt; You should document that this can return %NULL. There&apos;s allow-none
&gt; annotation, but we should explain in which cases a security origin can have
&gt; a null protocol.

I did and then removed it, because it can only return NULL if the security origin is opaque, but I decided not to expose opaqueness in the API. I guess I have to briefly explain that here.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:201
&gt; &gt; +    if (origin-&gt;securityOrigin-&gt;host().isEmpty())
&gt; &gt; +        return nullptr;
&gt; 
&gt; Ditoo.

This case is easier to explain, since some protocols like file just don&apos;t have hosts.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:216
&gt; &gt; + * #WebKitSecurityOrigin constructed from either string.
&gt; 
&gt; string -&gt; URI

OK

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:2
&gt; &gt; + * Copyright (C) 2016 Igalia S.L.
&gt; 
&gt; Happy new year!

Apparently.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:30
&gt; &gt; +    GUniquePtr&lt;char&gt; asString(webkit_security_origin_to_string(origin));
&gt; 
&gt; I still think as_string could be a good name and return const char*, but I
&gt; don&apos;t have a strong opinion.

I only see two uses of _as_string in devhelp, g_file_info_get_attribute_as_string, and g_mime_message_get_date_as_string, and they&apos;re both transfer full, so I think we should stick with _to_string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263237</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-01 08:51:03 -0800</bug_when>
    <thetext>I will expose _is_opaque but not any of the other methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263238</commentid>
    <comment_count>7</comment_count>
      <attachid>297874</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-01 09:55:26 -0800</bug_when>
    <thetext>Created attachment 297874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263258</commentid>
    <comment_count>8</comment_count>
      <attachid>297874</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-02 00:15:30 -0800</bug_when>
    <thetext>Comment on attachment 297874
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:34
&gt; +using WebCore::URL;

What is this for?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:163
&gt; + * Gets the protocol of @origin, or %NULL if @origin is opaque.

opaque? why not unique?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:185
&gt; + * Gets the hostname of @origin, or %NULL if @origin is opaque or if its

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:230
&gt; + * Gets whether @origin is an opaque security origin.

As I said in previous reviews, we should explain here what a unique origin is.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:238
&gt; +    g_return_val_if_fail(origin, FALSE);

I would return TRUE in this case.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:118
&gt; +static void testSecurityOriginDataURI(Test*, gconstpointer)

Now that we expose unique origins, I would call this testSecurityOriginUnique, since what we want to test here is unique origins,m not data URIs specifically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263302</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-02 07:27:58 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 297874 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297874&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:34
&gt; &gt; +using WebCore::URL;
&gt; 
&gt; What is this for?

To make the URL constructor simpler:

URL(URL(), ...)

instead of:

WebCore::URL(WebCore::URL(), ...)

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:163
&gt; &gt; + * Gets the protocol of @origin, or %NULL if @origin is opaque.
&gt; 
&gt; opaque? why not unique?

To match the terminology that is used by HTML, which developers might already be familiar with. Our &quot;unique&quot; security origins are the same as HTML opaque origins, while an HTML unique opaque origin would be an opaque origin that is equivalent to no other opaque origin.

At least, I think so. :)

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:230
&gt; &gt; + * Gets whether @origin is an opaque security origin.
&gt; 
&gt; As I said in previous reviews, we should explain here what a unique origin
&gt; is.

I explained it in the section block; that&apos;s probably enough, right?

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:238
&gt; &gt; +    g_return_val_if_fail(origin, FALSE);
&gt; 
&gt; I would return TRUE in this case.

Hm, we normally always return FALSE from these assertion failures, but you&apos;re right, that does seem safer to do here.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:118
&gt; &gt; +static void testSecurityOriginDataURI(Test*, gconstpointer)
&gt; 
&gt; Now that we expose unique origins, I would call this
&gt; testSecurityOriginUnique, since what we want to test here is unique
&gt; origins,m not data URIs specifically.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263322</commentid>
    <comment_count>10</comment_count>
      <attachid>297902</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-02 10:08:06 -0800</bug_when>
    <thetext>Created attachment 297902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263325</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-02 10:09:14 -0800</bug_when>
    <thetext>I think we could rename WebCore::SecurityOrigin::isUnique to isOpaque if you doesn&apos;t like the terminology mismatch, but I don&apos;t think it&apos;s terribly unusual to have different terminology for the public API than the internal API. We surely don&apos;t want to rename WebKitWebContext to WebKitWebProcessPool, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263404</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-03 00:08:43 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 297874 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=297874&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:34
&gt; &gt; &gt; +using WebCore::URL;
&gt; &gt; 
&gt; &gt; What is this for?
&gt; 
&gt; To make the URL constructor simpler:
&gt; 
&gt; URL(URL(), ...)
&gt; 
&gt; instead of:
&gt; 
&gt; WebCore::URL(WebCore::URL(), ...)

You can do that also with using namespace WebCore which is what we usually do.

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:163
&gt; &gt; &gt; + * Gets the protocol of @origin, or %NULL if @origin is opaque.
&gt; &gt; 
&gt; &gt; opaque? why not unique?
&gt; 
&gt; To match the terminology that is used by HTML, which developers might
&gt; already be familiar with. Our &quot;unique&quot; security origins are the same as HTML
&gt; opaque origins, while an HTML unique opaque origin would be an opaque origin
&gt; that is equivalent to no other opaque origin.
&gt; 
&gt; At least, I think so. :)

Maybe I&apos;m too used to WebKit terminology. The RFC-6454 refers to &quot;globally unique identifier&quot;. In HTML5 docs I&apos;ve seen &quot;unique opaque origin&quot;. If people are used to opaque, it&apos;s ok then.

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:230
&gt; &gt; &gt; + * Gets whether @origin is an opaque security origin.
&gt; &gt; 
&gt; &gt; As I said in previous reviews, we should explain here what a unique origin
&gt; &gt; is.
&gt; 
&gt; I explained it in the section block; that&apos;s probably enough, right?

I missed that.

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp:238
&gt; &gt; &gt; +    g_return_val_if_fail(origin, FALSE);
&gt; &gt; 
&gt; &gt; I would return TRUE in this case.
&gt; 
&gt; Hm, we normally always return FALSE from these assertion failures, but
&gt; you&apos;re right, that does seem safer to do here.

Because normally FALSE prevents from doing more things with the object or taking further actions, in this case, that happens with TRUE.

&gt; &gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp:118
&gt; &gt; &gt; +static void testSecurityOriginDataURI(Test*, gconstpointer)
&gt; &gt; 
&gt; &gt; Now that we expose unique origins, I would call this
&gt; &gt; testSecurityOriginUnique, since what we want to test here is unique
&gt; &gt; origins,m not data URIs specifically.
&gt; 
&gt; OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263430</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-03 03:59:25 -0800</bug_when>
    <thetext>Seems commit-queue is stuck on flaky tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263431</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-03 04:00:26 -0800</bug_when>
    <thetext>Committed r210238: &lt;http://trac.webkit.org/changeset/210238&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297871</attachid>
            <date>2016-12-31 14:21:40 -0800</date>
            <delta_ts>2017-01-01 09:55:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166632-20161231162020.patch</filename>
            <type>text/plain</type>
            <size>27966</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjRhYWYwNGM4YWVhM2M0
NzA5ZTBhMjM2MzI0NzdkNDUwYjQ5YWE2ZC4uZTJmNWE0MGQ4ZWVlZjdlZTViYjRlNjQ0ZGVlMDRk
ODU3MjA0ZTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEyLTMxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4gYW5kIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEV4cG9zZSBXZWJL
aXRTZWN1cml0eU9yaWdpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NjYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgQVBJIHdpbGwgYmUgdXNlZnVsIHRvIGhhdmUgZm9yIHZhcmlvdXMg
cHVycG9zZXMsIHN1Y2ggYXMgc2V0dGluZyBpbml0aWFsIG5vdGlmaWNhdGlvbgorICAgICAgICBw
ZXJtaXNzaW9ucyBhbmQgZXhwb3NpbmcgbmV3IGZ1bmN0aW9uYWxpdHkgb2YgV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9X
ZWJLaXRTZWN1cml0eU9yaWdpbjo6X1dlYktpdFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKHdl
YmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFNlY3VyaXR5T3JpZ2lu
R2V0U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcp
OgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSk6CisgICAgICAg
ICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3JlZik6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX3VucmVmKToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3Rv
Y29sKToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3QpOgorICAgICAg
ICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydCk6CisgICAgICAgICh3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3RvX3N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorCiAyMDE2LTEyLTMwICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSB0aGUg
ImRvbSIgZGlyZWN0b3J5LCByZWxhdGVkIGNsZWFudXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggMGE1ZTRkNGFlM2ZmOTA3MmFiZmQyNTlkNTM2ZjdiYzFjODljMWVmMy4uNDgzODQ3ODMx
NDliZDA5MjE3MjhiOGJmZmI3ZTI0NGI0NzFjZmQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTIyMCw2ICsyMjAsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2
YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3NQcml2YXRlLmgKQEAgLTUzNCw2ICs1MzcsNyBAQCBzZXQoV2ViS2l0MkdUS19J
TlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNjcmlwdERpYWxvZy5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmgKKyAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmgKaW5kZXggZjg3
MmYzMDY4MTBjMTFhYWJkMjg0NGEwZjgzYzE1YWZmNTYwYmMzZi4uN2IwN2U4OTViMGJjNzZjNjc0
NGZiMmRjYWMwMzgxOTc4ZmVmNDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmgKQEAgLTc1LDYgKzc1LDcgQEAgR19E
RUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdENyZWRlbnRpYWwsIHdlYmtpdF9jcmVk
ZW50aWFsX2ZyZWUpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKQogR19ERUZJTkVfQVVU
T1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdE1pbWVJbmZvLCB3ZWJraXRfbWltZV9pbmZvX3VucmVm
KQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdE5hdmlnYXRpb25BY3Rpb24s
IHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9mcmVlKQorR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQ
X0ZVTkMgKFdlYktpdFNlY3VyaXR5T3JpZ2luLCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVm
KQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdFVzZXJTY3JpcHQsIHdlYmtp
dF91c2VyX3NjcmlwdF91bnJlZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJL
aXRVc2VyU3R5bGVTaGVldCwgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYpCiBHX0RFRklO
RV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSwgd2Via2l0
X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfdW5yZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWQ2MTg3M2QxYjAyYWU4YWIwMDA2N2NjNzNjY2UyMzZhYzJlZmM3MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3Jp
Z2luLmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaCIKKworI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViQ29yZTo6VVJMOworCisv
KioKKyAqIFNFQ1RJT046IFdlYktpdFNlY3VyaXR5T3JpZ2luCisgKiBAU2hvcnRfZGVzY3JpcHRp
b246IEEgc2VjdXJpdHkgYm91bmRhcnkgZm9yIHdlYnNpdGVzCisgKiBAVGl0bGU6IFdlYktpdFNl
Y3VyaXR5T3JpZ2luCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIsICNX
ZWJLaXRTZWN1cml0eU1hbmFnZXIKKyAqCisgKiBXZWJLaXRTZWN1cml0eU9yaWdpbiBpcyBhIHJl
cHJlc2VudGF0aW9uIG9mIGEgc2VjdXJpdHkgZG9tYWluIGRlZmluZWQKKyAqIGJ5IHdlYnNpdGVz
LiBBIHNlY3VyaXR5IG9yaWdpbiBjb25zaXN0cyBvZiBhIHByb3RvY29sLCBhIGhvc3RuYW1lLAor
ICogYW5kIGEgcG9ydCBudW1iZXIuCisgKgorICogV2Vic2l0ZXMgd2l0aCB0aGUgc2FtZSBzZWN1
cml0eSBvcmlnaW4gY2FuIGFjY2VzcyBlYWNoIG90aGVyJ3MKKyAqIHJlc291cmNlcyBmb3IgY2xp
ZW50LXNpZGUgc2NyaXB0aW5nIG9yIGRhdGFiYXNlIGFjY2Vzcy4KKyAqCisgKiBTaW5jZTogMi4x
NgorICovCisKK3N0cnVjdCBfV2ViS2l0U2VjdXJpdHlPcmlnaW4geworICAgIF9XZWJLaXRTZWN1
cml0eU9yaWdpbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgY29yZVNlY3VyaXR5T3Jp
Z2luKQorICAgICAgICA6IHNlY3VyaXR5T3JpZ2luKFdURk1vdmUoY29yZVNlY3VyaXR5T3JpZ2lu
KSkKKyAgICB7CisgICAgfQorCisgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbjsKKyAgICBDU3RyaW5nIHByb3RvY29sOworICAgIENTdHJpbmcgaG9zdDsKKyAg
ICBpbnQgcmVmZXJlbmNlQ291bnQgPSAxOworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJL
aXRTZWN1cml0eU9yaWdpbiwgd2Via2l0X3NlY3VyaXR5X29yaWdpbiwgd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9yZWYsIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYpCisKK1dlYktpdFNlY3Vy
aXR5T3JpZ2luKiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShSZWY8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+JiYgY29yZVNlY3VyaXR5T3JpZ2luKQoreworICAgIFdlYktpdFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9yaWdpbio+KGZhc3RNYWxs
b2Moc2l6ZW9mKFdlYktpdFNlY3VyaXR5T3JpZ2luKSkpOworICAgIG5ldyAob3JpZ2luKSBXZWJL
aXRTZWN1cml0eU9yaWdpbihXVEZNb3ZlKGNvcmVTZWN1cml0eU9yaWdpbikpOworICAgIHJldHVy
biBvcmlnaW47Cit9CisKK1dlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB3ZWJraXRTZWN1cml0eU9y
aWdpbkdldFNlY3VyaXR5T3JpZ2luKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7Cisg
ICAgQVNTRVJUKG9yaWdpbik7CisgICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0
KCk7Cit9CisKKy8qKgorICogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXc6CisgKiBAcHJvdG9j
b2w6IFRoZSBwcm90b2NvbCBmb3IgdGhlIG5ldyBvcmlnaW4KKyAqIEBob3N0OiBUaGUgaG9zdCBm
b3IgdGhlIG5ldyBvcmlnaW4KKyAqIEBwb3J0OiBUaGUgcG9ydCBudW1iZXIgZm9yIHRoZSBuZXcg
b3JpZ2luLCBvciAwIHRvIGluZGljYXRlIHRoZQorICogICAgICAgIGRlZmF1bHQgcG9ydCBmb3Ig
QHByb3RvY29sCisgKgorICogQ3JlYXRlIGEgbmV3IHNlY3VyaXR5IG9yaWdpbiBmcm9tIHRoZSBw
cm92aWRlZCBwcm90b2NvbCwgaG9zdCBhbmQKKyAqIHBvcnQuCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRTZWN1cml0eU9yaWdpbi4KKyAqCisgKiBTaW5jZTogMi4x
NgorICovCitXZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXco
Y29uc3QgZ2NoYXIqIHByb3RvY29sLCBjb25zdCBnY2hhciogaG9zdCwgZ3VpbnQxNiBwb3J0KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByb3RvY29sLCBudWxscHRyKTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChob3N0LCBudWxscHRyKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IG9wdGlvbmFsUG9ydDsKKyAgICBpZiAocG9ydCkKKyAgICAgICAgb3B0aW9uYWxQb3J0
ID0gcG9ydDsKKworICAgIHJldHVybiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpLCBTdHJp
bmc6OmZyb21VVEY4KGhvc3QpLCBvcHRpb25hbFBvcnQpKTsKK30KKworLyoqCisgKiB3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpOgorICogQHVyaTogVGhlIFVSSSBmb3IgdGhlIG5l
dyBvcmlnaW4KKyAqCisgKiBDcmVhdGUgYSBuZXcgc2VjdXJpdHkgb3JpZ2luIGZyb20gdGhlIHBy
b3ZpZGVkIFVSSS4gQ29tcG9uZW50cyBvZgorICogQHVyaSBvdGhlciB0aGFuIHByb3RvY29sLCBo
b3N0LCBhbmQgcG9ydCBkbyBub3QgYWZmZWN0IHRoZSBjcmVhdGVkCisgKiAjV2ViS2l0U2VjdXJp
dHlPcmlnaW4uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRTZWN1
cml0eU9yaWdpbi4KKyAqCisgKiBTaW5jZTogMi4xNgorICovCitXZWJLaXRTZWN1cml0eU9yaWdp
biogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaShjb25zdCBnY2hhciogdXJpKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHVyaSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4g
d2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX3JlZjoKKyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5T3Jp
Z2luCisgKgorICogQXRvbWljYWxseSBpbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2Yg
QG9yaWdpbiBieSBvbmUuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZSBj
YWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFJldHVybnM6IFRoZSBwYXNzZWQgI1dlYktp
dFNlY3VyaXR5T3JpZ2luCisgKgorICogU2luY2U6IDIuMTYKKyAqLworV2ViS2l0U2VjdXJpdHlP
cmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCBudWxscHRyKTsKKwor
ICAgIGdfYXRvbWljX2ludF9pbmMoJm9yaWdpbi0+cmVmZXJlbmNlQ291bnQpOworICAgIHJldHVy
biBvcmlnaW47Cit9CisKKy8qKgorICogd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZjoKKyAq
IEBvcmlnaW46IEEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICogQXRvbWljYWxseSBkZWNy
ZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQG9yaWdpbiBieSBvbmUuCisgKiBJZiB0aGUg
cmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIDAsIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5CisgKiAj
V2ViS2l0U2VjdXJpdHlPcmlnaW4gaXMgcmVsZWFzZWQuIFRoaXMgZnVuY3Rpb24gaXMgTVQtc2Fm
ZSBhbmQgbWF5IGJlCisgKiBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFNpbmNlOiAy
LjE2CisgKi8KK3ZvaWQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihXZWJLaXRTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwob3JpZ2luKTsKKworICAg
IGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZvcmlnaW4tPnJlZmVyZW5jZUNvdW50KSkg
eworICAgICAgICBvcmlnaW4tPn5XZWJLaXRTZWN1cml0eU9yaWdpbigpOworICAgICAgICBmYXN0
RnJlZShvcmlnaW4pOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wcm90b2NvbDoKKyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgor
ICogR2V0cyB0aGUgcHJvdG9jb2wgb2YgQG9yaWdpbi4KKyAqCisgKiBSZXR1cm5zIChhbGxvdy1u
b25lKTogVGhlIHByb3RvY29sIG9mIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqCisgKiBT
aW5jZTogMi4xNgorICovCitjb25zdCBnY2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
cHJvdG9jb2woV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChvcmlnaW4sIG51bGxwdHIpOworCisgICAgaWYgKG9yaWdpbi0+c2VjdXJpdHlP
cmlnaW4tPnByb3RvY29sKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGlmIChvcmlnaW4tPnByb3RvY29sLmlzTnVsbCgpKQorICAgICAgICBvcmlnaW4tPnByb3Rv
Y29sID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+cHJvdG9jb2woKS51dGY4KCk7CisgICAgcmV0
dXJuIG9yaWdpbi0+cHJvdG9jb2wuZGF0YSgpOworfQorCisvKioKKyAqIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X2hvc3Q6CisgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgor
ICoKKyAqIEdldHMgdGhlIGhvc3Qgb2YgQG9yaWdpbi4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ct
bm9uZSk6IFRoZSBob3N0IG9mIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqCisgKiBTaW5j
ZTogMi4xNgorICovCitjb25zdCBnY2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9z
dChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKG9yaWdpbiwgbnVsbHB0cik7CisKKyAgICBpZiAob3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+
aG9zdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAob3Jp
Z2luLT5ob3N0LmlzTnVsbCgpKQorICAgICAgICBvcmlnaW4tPmhvc3QgPSBvcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luLT5ob3N0KCkudXRmOCgpOworICAgIHJldHVybiBvcmlnaW4tPmhvc3QuZGF0YSgp
OworfQorCisvKioKKyAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQ6CisgKiBAb3Jp
Z2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgorICoKKyAqIEdldHMgdGhlIHBvcnQgb2YgQG9y
aWdpbi4gVGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gMCBpZiB0aGUKKyAqIHBvcnQg
aXMgdGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIGdpdmVuIHByb3RvY29sLiBGb3IgZXhhbXBsZSwK
KyAqIGh0dHA6Ly9leGFtcGxlLmNvbSBoYXMgdGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luIGFzCisg
KiBodHRwOi8vZXhhbXBsZS5jb206ODAsIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAg
Zm9yIGEKKyAqICNXZWJLaXRTZWN1cml0eU9yaWdpbiBjb25zdHJ1Y3RlZCBmcm9tIGVpdGhlciBz
dHJpbmcuCisgKgorICogUmV0dXJuczogVGhlIHBvcnQgb2YgdGhlICNXZWJLaXRTZWN1cml0eU9y
aWdpbi4KKyAqCisgKiBTaW5jZTogMi4xNgorICovCitndWludDE2IHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3BvcnQoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChvcmlnaW4sIDApOworCisgICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJp
dHlPcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3RvX3N0cmluZzoKKyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2lu
CisgKgorICogR2V0cyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBAb3JpZ2luLiBUaGUgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uCisgKiBpcyBhIHZhbGlkIFVSSSB3aXRoIG9ubHkgcHJvdG9jb2ws
IGhvc3QsIGFuZCBwb3J0IGNvbXBvbmVudHMuCisgKgorICogUmV0dXJuczogKGFsbG93LW5vbmUp
ICh0cmFuc2ZlciBmdWxsKTogYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgQG9yaWdpbi4KKyAq
CisgKiBTaW5jZTogMi4xNgorICovCitnY2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19z
dHJpbmcoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvcmlnaW4sIG51bGxwdHIpOworCisgICAgQ1N0cmluZyBjc3RyaW5nID0gb3JpZ2lu
LT5zZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKS51dGY4KCk7CisgICAgcmV0dXJuIGNzdHJpbmcg
PT0gIm51bGwiID8gbnVsbHB0ciA6IGdfc3RyZHVwIChjc3RyaW5nLmRhdGEoKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9y
aWdpbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlP
cmlnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZWNmMzljYzJiMGMzN2U5ZjVhY2QwYTFjYTU3Y2FlMTUwNWZj
MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2VjdXJpdHlPcmlnaW4uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25s
eSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYK
KworI2lmbmRlZiBXZWJLaXRTZWN1cml0eU9yaWdpbl9oCisjZGVmaW5lIFdlYktpdFNlY3VyaXR5
T3JpZ2luX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9T
RUNVUklUWV9PUklHSU4gKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3R5cGUoKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFNlY3VyaXR5T3JpZ2luIFdlYktpdFNlY3VyaXR5T3JpZ2luOwor
CitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF90eXBlICAgICAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKgord2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9uZXcgICAgICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAg
ICAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2ICAg
ICAgICAgICAgICAgcG9ydCk7CisKK1dFQktJVF9BUEkgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKgor
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSAgKGNvbnN0IGdjaGFyICAgICAgICAg
ICp1cmkpOworCitXRUJLSVRfQVBJIFdlYktpdFNlY3VyaXR5T3JpZ2luICoKK3dlYmtpdF9zZWN1
cml0eV9vcmlnaW5fcmVmICAgICAgICAgIChXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmICAgICAgICAo
V2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIg
Kgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wgKFdlYktpdFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4pOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X2hvc3QgICAgIChXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKwor
V0VCS0lUX0FQSSBndWludDE2Cit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0ICAgICAo
V2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7CisKK1dFQktJVF9BUEkgZ2NoYXIgKgord2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpv
cmlnaW4pOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0U2VjdXJpdHlPcmlnaW5f
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGU0YTA1MThhZTcx
OWYyNmU3NDY3ZTc0OTc0MzY1OTBjOTY3MGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJLaXRTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KKworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3Jl
YXRlKFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CitXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihXZWJLaXRTZWN1cml0
eU9yaWdpbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAwMTMwM2Y2
ODkzOWU1YzQ1NTUzNmFjMzQxZjI3Zjg4MGIyODBlZjU3Li4wYWU3NTRmOTdmZTkxZGI1ZGRkYTlj
YmZiMGM5NWQyYmZmNDgzYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApA
QCAtMTIxMSw2ICsxMjExLDI1IEBAIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX2dldF90eXBlCiA8
L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0U2VjdXJpdHlPcmlnaW48L0ZJTEU+
CitXZWJLaXRTZWN1cml0eU9yaWdpbgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcKK3dlYmtp
dF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVm
Cit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9wcm90b2NvbAord2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdAord2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfcG9ydAord2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcKKwor
PFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9TRUNVUklUWV9PUklHSU4KKworPFNV
QlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3R5cGUKKzwvU0VD
VElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI8L0ZJTEU+
CiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9u
ZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IGY4ZjQyZGNkOTJkNmQ4YTdkMGVjYzQxZWNkNjZm
OWE1MjA2MmI0NWEuLjAyNGU5YjhlMjMwODhmYmQyMzM0ZWFlMTVjY2UwMTcxNTViYzYzNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTEsNiArNTEsNyBAQAogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRVc2VyQ29udGVudC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0Tm90aWZpY2F0aW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXROb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlPcmlnaW4ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci54bWwiLz4KICAgPC9jaGFwdGVyPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggM2U0NGQ2
MDk0NGFmNDBjNjRkN2Q1NzEyYjQ2ZGQ0NGFjMDdiNzYwZi4uZmMwZmE0ZWJhNTBmNjc1N2YyYWMz
ODk1MGUzYTZhOGJhMGIwYmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlh
bG9nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9uc2UuaD4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZjAwNzk3OGNhZTE3YjAyM2I5MmIy
ZDI4NTE3YTg2MDQ0NTYxMGVhLi5kODIzZjIxNjUyOWM5M2Q1ZWJkZjhhOTkzYzgxMWJiODg2MDAy
MzAzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTYtMTItMzEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFy
b0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEV4cG9zZSBXZWJLaXRTZWN1cml0eU9yaWdp
biBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkJhc2ljQ29uc3RydWN0b3Ip
OgorICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luVVJJQ29uc3RydWN0b3IpOgorICAgICAgICAo
dGVzdFNlY3VyaXR5T3JpZ2luRGVmYXVsdFBvcnQpOgorICAgICAgICAodGVzdFNlY3VyaXR5T3Jp
Z2luRmlsZVVSSSk6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5EYXRhVVJJKToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisKIDIwMTYtMTItMzAgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIElt
cHJvdmUgdXNlciBhZ2VudCBjb25zdHJ1Y3Rpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAppbmRleCA5NDY3NzRlODlmODEzOTE4
Y2M1YWU4YjMwYmQ2ZDlkZTg5NjI4YzFlLi4yNTg0ZGYyNmViNGQ4YTFiYzgwNWNhNWE4NjMyZjk3
YTdlYjg0NDhmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL0NNYWtlTGlzdHMudHh0CkBAIC0xMTgsNiArMTE4LDcgQEAgQUREX1dLMl9URVNUKFRlc3RT
U0wgVGVzdFNTTC5jcHApCiBBRERfV0syX1RFU1QoVGVzdFVJQ2xpZW50IFRlc3RVSUNsaWVudC5j
cHApCiBBRERfV0syX1RFU1QoVGVzdFdlYkV4dGVuc2lvbnMgVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRQb2xpY3lDbGllbnQgVGVzdFdlYktpdFBvbGljeUNs
aWVudC5jcHApCitBRERfV0syX1RFU1QoVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luIFRlc3RXZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFNldHRpbmdzIFRl
c3RXZWJLaXRTZXR0aW5ncy5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFZlcnNpb24gVGVz
dFdlYktpdFZlcnNpb24uY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJWaWV3RWRpdG9yIFRlc3RX
ZWJWaWV3RWRpdG9yLmNwcCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzg1OTVlMmZmYTA3ZTI1YjI3ZTE0NmZiNDMwMjE0OTExMjllMTczZgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0
TWFpbi5oIgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KKworc3RhdGljIHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luQmFzaWNDb25z
dHJ1Y3RvcihUZXN0KiwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZWN1cml0eU9yaWdp
biogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAiMTI3LjAuMC4x
IiwgMTIzNCk7CisgICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFz
U3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdf
YXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjEyMzQi
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9j
b2wob3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwg
MTIzNCk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOworfQorCitz
dGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5VUklDb25zdHJ1Y3RvcihUZXN0KiwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgiaHR0cDovLzEyNy4wLjAuMToxMjM0Iik7CisgICAg
Z19hc3NlcnQob3JpZ2luKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihh
c1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0s
ICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0
X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMTIzNCk7CisgICAgd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOworCisgICAgb3JpZ2luID0gd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgiaHR0cDovLzEyNy4wLjAuMToxMjM0L3RoaXMv
cGF0aC8/c2hvdWxkPWJlI2lnbm9yZWQiKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGFz
U3RyaW5nLnJlc2V0KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4x
OjEyMzQiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
cHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4p
LCA9PSwgMTIzNCk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0UG9ydChUZXN0KiwgZ2Nv
bnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAiMTI3LjAuMC4xIiwgMCk7CisgICAgZ19hc3Nl
cnQob3JpZ2luKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmlu
Zy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdp
biksID09LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOworICAgIHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fdW5yZWYob3JpZ2luKTsKKworICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fbmV3KCJodHRwIiwgIjEyNy4wLjAuMSIsIDgwKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOwor
ICAgIGFzU3RyaW5nLnJlc2V0KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdp
bikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3
LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0
X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7Cisg
ICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2lu
KSwgPT0sIDApOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKKwor
ICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8x
MjcuMC4wLjEiKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGFzU3RyaW5nLnJlc2V0KHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09
LCAiaHR0cCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50KHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOworICAgIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKKworICAgIG9yaWdpbiA9IHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8xMjcuMC4wLjE6ODAiKTsKKyAgICBn
X2Fzc2VydChvcmlnaW4pOworICAgIGFzU3RyaW5nLnJlc2V0KHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQo
KSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOworICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09
LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
dW5yZWYob3JpZ2luKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luRmlsZVVS
SShUZXN0KiwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3Jp
Z2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgiZmlsZTovLy9hYmNkZWZn
Iik7CisgICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5n
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0
X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJmaWxlOi8vIik7CisgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiZmls
ZSIpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdp
bikpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0
KG9yaWdpbiksID09LCAwKTsKKyAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdp
bik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkRhdGFVUkkoVGVzdCosIGdj
b25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImRhdGE6TGFsaSBobyEiKTsKKyAgICBnX2Fz
c2VydChvcmlnaW4pOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7CisgICAgZ19hc3NlcnQoIWFzU3RyaW5nKTsK
KyAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2lu
KSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2lu
KSk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQo
b3JpZ2luKSwgPT0sIDApOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2lu
KTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJp
dHlPcmlnaW4iLCAiYmFzaWMtY29uc3RydWN0b3IiLCB0ZXN0U2VjdXJpdHlPcmlnaW5CYXNpY0Nv
bnN0cnVjdG9yKTsKKyAgICBUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5T3JpZ2luIiwgInVyaS1j
b25zdHJ1Y3RvciIsIHRlc3RTZWN1cml0eU9yaWdpblVSSUNvbnN0cnVjdG9yKTsKKyAgICBUZXN0
OjphZGQoIldlYktpdFNlY3J1aXR5T3JpZ2luIiwgImRlZmF1bHQtcG9ydCIsIHRlc3RTZWN1cml0
eU9yaWdpbkRlZmF1bHRQb3J0KTsKKyAgICBUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5T3JpZ2lu
IiwgImZpbGUtdXJpIiwgdGVzdFNlY3VyaXR5T3JpZ2luRmlsZVVSSSk7CisgICAgVGVzdDo6YWRk
KCJXZWJLaXRTZWNydWl0eU9yaWdpbiIsICJkYXRhLXVyaSIsIHRlc3RTZWN1cml0eU9yaWdpbkRh
dGFVUkkpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297874</attachid>
            <date>2017-01-01 09:55:26 -0800</date>
            <delta_ts>2017-01-02 10:08:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166632-20170101115404.patch</filename>
            <type>text/plain</type>
            <size>29046</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjRhYWYwNGM4YWVhM2M0
NzA5ZTBhMjM2MzI0NzdkNDUwYjQ5YWE2ZC4uMTQ3YWIxYmQzZTFiYjRhMWE0NDZmNDFiMzY4ZGNi
MmRlYzhkNmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAxLTAxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4gYW5kIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEV4cG9zZSBXZWJL
aXRTZWN1cml0eU9yaWdpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NjYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEg
Q2FtcG9zLgorCisgICAgICAgIFRoaXMgQVBJIHdpbGwgYmUgdXNlZnVsIHRvIGhhdmUgZm9yIHZh
cmlvdXMgcHVycG9zZXMsIHN1Y2ggYXMgc2V0dGluZyBpbml0aWFsIG5vdGlmaWNhdGlvbgorICAg
ICAgICBwZXJtaXNzaW9ucy4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDogQWRkZWQuCisgICAgICAg
IChfV2ViS2l0U2VjdXJpdHlPcmlnaW46Ol9XZWJLaXRTZWN1cml0eU9yaWdpbik6CisgICAgICAg
ICh3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX25ldyk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJp
KToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmKToKKyAgICAgICAgKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcHJvdG9jb2wpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9z
dCk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KToKKyAgICAgICAg
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKToKKyAgICAgICAgKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fdG9fc3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZWN1cml0eU9yaWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisKIDIwMTYtMTItMzAgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIHVzZSBmcm9tIHRoZSAi
ZG9tIiBkaXJlY3RvcnksIHJlbGF0ZWQgY2xlYW51cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCAwYTVlNGQ0YWUzZmY5MDcyYWJmZDI1OWQ1MzZmN2JjMWM4OWMxZWYzLi40ODM4NDc4MzE0
OWJkMDkyMTcyOGI4YmZmYjdlMjQ0YjQ3MWNmZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtMjIwLDYgKzIyMCw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5TWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZh
dGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZXR0aW5nc1ByaXZhdGUuaApAQCAtNTM0LDYgKzUzNyw3IEBAIHNldChXZWJLaXQyR1RLX0lO
U1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2NyaXB0RGlhbG9nLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaAppbmRleCBmODcy
ZjMwNjgxMGMxMWFhYmQyODQ0YTBmODNjMTVhZmY1NjBiYzNmLi43YjA3ZTg5NWIwYmM3NmM2NzQ0
ZmIyZGNhYzAzODE5NzhmZWY0MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaApAQCAtNzUsNiArNzUsNyBAQCBHX0RF
RklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0Q3JlZGVudGlhbCwgd2Via2l0X2NyZWRl
bnRpYWxfZnJlZSkKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpCiBHX0RFRklORV9BVVRP
UFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0TWltZUluZm8sIHdlYmtpdF9taW1lX2luZm9fdW5yZWYp
CiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiwg
d2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2ZyZWUpCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBf
RlVOQyAoV2ViS2l0U2VjdXJpdHlPcmlnaW4sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYp
CiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0VXNlclNjcmlwdCwgd2Via2l0
X3VzZXJfc2NyaXB0X3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktp
dFVzZXJTdHlsZVNoZWV0LCB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZikKIEdfREVGSU5F
X0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLCB3ZWJraXRf
d2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV91bnJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNzJlNTYzYjY1MjA2Mjg5NjM1NGQ1ZjQ1NzBlMThjYmE0NDViZTRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmln
aW4uY3BwCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRT
ZWN1cml0eU9yaWdpbi5oIgorCisjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJDb3JlOjpVUkw7CisKKy8q
KgorICogU0VDVElPTjogV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBTaG9ydF9kZXNjcmlwdGlv
bjogQSBzZWN1cml0eSBib3VuZGFyeSBmb3Igd2Vic2l0ZXMKKyAqIEBUaXRsZTogV2ViS2l0U2Vj
dXJpdHlPcmlnaW4KKyAqCisgKiAjV2ViS2l0U2VjdXJpdHlPcmlnaW4gaXMgYSByZXByZXNlbnRh
dGlvbiBvZiBhIHNlY3VyaXR5IGRvbWFpbgorICogZGVmaW5lZCBieSB3ZWJzaXRlcy4gQSBzZWN1
cml0eSBvcmlnaW4gbm9ybWFsbHkgY29uc2lzdHMgb2YgYQorICogcHJvdG9jb2wsIGEgaG9zdG5h
bWUsIGFuZCBhIHBvcnQgbnVtYmVyLiBJdCBpcyBhbHNvIHBvc3NpYmxlIGZvciBhCisgKiBzZWN1
cml0eSBvcmlnaW4gdG8gYmUgb3BhcXVlLCBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHN0YW5kYXJk
LCBpbgorICogd2hpY2ggY2FzZSBpdCBoYXMgbm8gYXNzb2NpYXRlZCBwcm90b2NvbCwgaG9zdCwg
b3IgcG9ydC4KKyAqCisgKiBXZWJzaXRlcyB3aXRoIHRoZSBzYW1lIHNlY3VyaXR5IG9yaWdpbiBj
YW4gYWNjZXNzIGVhY2ggb3RoZXIncworICogcmVzb3VyY2VzIGZvciBjbGllbnQtc2lkZSBzY3Jp
cHRpbmcgb3IgZGF0YWJhc2UgYWNjZXNzLgorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KKworc3Ry
dWN0IF9XZWJLaXRTZWN1cml0eU9yaWdpbiB7CisgICAgX1dlYktpdFNlY3VyaXR5T3JpZ2luKFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBjb3JlU2VjdXJpdHlPcmlnaW4pCisgICAgICAg
IDogc2VjdXJpdHlPcmlnaW4oV1RGTW92ZShjb3JlU2VjdXJpdHlPcmlnaW4pKQorICAgIHsKKyAg
ICB9CisKKyAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwor
ICAgIENTdHJpbmcgcHJvdG9jb2w7CisgICAgQ1N0cmluZyBob3N0OworICAgIGludCByZWZlcmVu
Y2VDb3VudCB7IDEgfTsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0U2VjdXJpdHlP
cmlnaW4sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW4sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVm
LCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKQorCitXZWJLaXRTZWN1cml0eU9yaWdpbiog
d2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
IGNvcmVTZWN1cml0eU9yaWdpbikKK3sKKyAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2lu
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0U2VjdXJpdHlPcmlnaW4qPihmYXN0TWFsbG9jKHNpemVvZihX
ZWJLaXRTZWN1cml0eU9yaWdpbikpKTsKKyAgICBuZXcgKG9yaWdpbikgV2ViS2l0U2VjdXJpdHlP
cmlnaW4oV1RGTW92ZShjb3JlU2VjdXJpdHlPcmlnaW4pKTsKKyAgICByZXR1cm4gb3JpZ2luOwor
fQorCisvKioKKyAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3OgorICogQHByb3RvY29sOiBU
aGUgcHJvdG9jb2wgZm9yIHRoZSBuZXcgb3JpZ2luCisgKiBAaG9zdDogVGhlIGhvc3QgZm9yIHRo
ZSBuZXcgb3JpZ2luCisgKiBAcG9ydDogVGhlIHBvcnQgbnVtYmVyIGZvciB0aGUgbmV3IG9yaWdp
biwgb3IgMCB0byBpbmRpY2F0ZSB0aGUKKyAqICAgICAgICBkZWZhdWx0IHBvcnQgZm9yIEBwcm90
b2NvbAorICoKKyAqIENyZWF0ZSBhIG5ldyBzZWN1cml0eSBvcmlnaW4gZnJvbSB0aGUgcHJvdmlk
ZWQgcHJvdG9jb2wsIGhvc3QgYW5kCisgKiBwb3J0LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2Zl
ciBmdWxsKTogQSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4uCisgKgorICogU2luY2U6IDIuMTYKKyAq
LworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3KGNvbnN0
IGdjaGFyKiBwcm90b2NvbCwgY29uc3QgZ2NoYXIqIGhvc3QsIGd1aW50MTYgcG9ydCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChwcm90b2NvbCwgbnVsbHB0cik7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoaG9zdCwgbnVsbHB0cik7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBvcHRpb25hbFBvcnQ7CisgICAgaWYgKHBvcnQpCisgICAgICAgIG9wdGlvbmFsUG9ydCA9IHBv
cnQ7CisKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHByb3RvY29sKSwgU3RyaW5nOjpm
cm9tVVRGOChob3N0KSwgb3B0aW9uYWxQb3J0KSk7Cit9CisKKy8qKgorICogd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9uZXdfZm9yX3VyaToKKyAqIEB1cmk6IFRoZSBVUkkgZm9yIHRoZSBuZXcgb3Jp
Z2luCisgKgorICogQ3JlYXRlIGEgbmV3IHNlY3VyaXR5IG9yaWdpbiBmcm9tIHRoZSBwcm92aWRl
ZCBVUkkuIENvbXBvbmVudHMgb2YKKyAqIEB1cmkgb3RoZXIgdGhhbiBwcm90b2NvbCwgaG9zdCwg
YW5kIHBvcnQgZG8gbm90IGFmZmVjdCB0aGUgY3JlYXRlZAorICogI1dlYktpdFNlY3VyaXR5T3Jp
Z2luLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0U2VjdXJpdHlP
cmlnaW4uCisgKgorICogU2luY2U6IDIuMTYKKyAqLworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIpOworCisgICAgcmV0dXJuIHdlYmtp
dFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJM
KFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7Cit9CisKKy8qKgorICogd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9yZWY6CisgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgor
ICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIEBvcmln
aW4gYnkgb25lLgorICogVGhpcyBmdW5jdGlvbiBpcyBNVC1zYWZlIGFuZCBtYXkgYmUgY2FsbGVk
IGZyb20gYW55IHRocmVhZC4KKyAqCisgKiBSZXR1cm5zOiBUaGUgcGFzc2VkICNXZWJLaXRTZWN1
cml0eU9yaWdpbgorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KK1dlYktpdFNlY3VyaXR5T3JpZ2lu
KiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3JlZihXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgbnVsbHB0cik7CisKKyAgICBn
X2F0b21pY19pbnRfaW5jKCZvcmlnaW4tPnJlZmVyZW5jZUNvdW50KTsKKyAgICByZXR1cm4gb3Jp
Z2luOworfQorCisvKioKKyAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWY6CisgKiBAb3Jp
Z2luOiBBICNXZWJLaXRTZWN1cml0eU9yaWdpbgorICoKKyAqIEF0b21pY2FsbHkgZGVjcmVtZW50
cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIEBvcmlnaW4gYnkgb25lLgorICogSWYgdGhlIHJlZmVy
ZW5jZSBjb3VudCBkcm9wcyB0byAwLCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogI1dlYktp
dFNlY3VyaXR5T3JpZ2luIGlzIHJlbGVhc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5k
IG1heSBiZQorICogY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAqCisgKiBTaW5jZTogMi4xNgor
ICovCit2b2lkIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYoV2ViS2l0U2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKG9yaWdpbik7CisKKyAgICBpZiAo
Z19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmb3JpZ2luLT5yZWZlcmVuY2VDb3VudCkpIHsKKyAg
ICAgICAgb3JpZ2luLT5+V2ViS2l0U2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAgZmFzdEZyZWUo
b3JpZ2luKTsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
cHJvdG9jb2w6CisgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgorICoKKyAqIEdl
dHMgdGhlIHByb3RvY29sIG9mIEBvcmlnaW4sIG9yICVOVUxMIGlmIEBvcmlnaW4gaXMgb3BhcXVl
LgorICoKKyAqIFJldHVybnMgKGFsbG93LW5vbmUpOiBUaGUgcHJvdG9jb2wgb2YgdGhlICNXZWJL
aXRTZWN1cml0eU9yaWdpbgorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KK2NvbnN0IGdjaGFyKiB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChXZWJLaXRTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgbnVsbHB0cik7CisK
KyAgICBpZiAob3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+cHJvdG9jb2woKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG9yaWdpbi0+cHJvdG9jb2wuaXNOdWxs
KCkpCisgICAgICAgIG9yaWdpbi0+cHJvdG9jb2wgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5w
cm90b2NvbCgpLnV0ZjgoKTsKKyAgICByZXR1cm4gb3JpZ2luLT5wcm90b2NvbC5kYXRhKCk7Cit9
CisKKy8qKgorICogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdDoKKyAqIEBvcmlnaW46
IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICogR2V0cyB0aGUgaG9zdG5hbWUgb2YgQG9y
aWdpbiwgb3IgJU5VTEwgaWYgQG9yaWdpbiBpcyBvcGFxdWUgb3IgaWYgaXRzCisgKiBwcm90b2Nv
bCBkb2VzIG5vdCByZXF1aXJlIGEgaG9zdCBjb21wb25lbnQuCisgKgorICogUmV0dXJuczogKGFs
bG93LW5vbmUpOiBUaGUgaG9zdCBvZiB0aGUgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICog
U2luY2U6IDIuMTYKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0
X2hvc3QoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvcmlnaW4sIG51bGxwdHIpOworCisgICAgaWYgKG9yaWdpbi0+c2VjdXJpdHlPcmln
aW4tPmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KG9yaWdpbi0+aG9zdC5pc051bGwoKSkKKyAgICAgICAgb3JpZ2luLT5ob3N0ID0gb3JpZ2luLT5z
ZWN1cml0eU9yaWdpbi0+aG9zdCgpLnV0ZjgoKTsKKyAgICByZXR1cm4gb3JpZ2luLT5ob3N0LmRh
dGEoKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0OgorICog
QG9yaWdpbjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqCisgKiBHZXRzIHRoZSBwb3J0IG9m
IEBvcmlnaW4uIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIDAgaWYgdGhlCisgKiBw
b3J0IGlzIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBnaXZlbiBwcm90b2NvbC4gRm9yIGV4YW1w
bGUsCisgKiBodHRwOi8vZXhhbXBsZS5jb20gaGFzIHRoZSBzYW1lIHNlY3VyaXR5IG9yaWdpbiBh
cworICogaHR0cDovL2V4YW1wbGUuY29tOjgwLCBhbmQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy
biAwIGZvciBhCisgKiAjV2ViS2l0U2VjdXJpdHlPcmlnaW4gY29uc3RydWN0ZWQgZnJvbSBlaXRo
ZXIgVVJJLiBJdCB3aWxsIGFsc28KKyAqIHJldHVybiAwIGlmIEBvcmlnaW4gaXMgb3BhcXVlLgor
ICoKKyAqIFJldHVybnM6IFRoZSBwb3J0IG9mIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4uCisg
KgorICogU2luY2U6IDIuMTYKKyAqLworZ3VpbnQxNiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9wb3J0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwob3JpZ2luLCAwKTsKKworICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
LT5wb3J0KCkudmFsdWVfb3IoMCk7Cit9CisKKy8qKgorICogd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9pc19vcGFxdWU6CisgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgorICoKKyAq
IEdldHMgd2hldGhlciBAb3JpZ2luIGlzIGFuIG9wYXF1ZSBzZWN1cml0eSBvcmlnaW4uCisgKgor
ICogUmV0dXJuczogJVRSVUUgaWYgQG9yaWdpbiBpcyBvcGFxdWUuCisgKgorICogU2luY2U6IDIu
MTYKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUoV2ViS2l0
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmln
aW4sIEZBTFNFKTsKKworICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5pc1VuaXF1
ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nOgorICog
QG9yaWdpbjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqCisgKiBHZXRzIGEgc3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mIEBvcmlnaW4uIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KKyAqIGlz
IGEgdmFsaWQgVVJJIHdpdGggb25seSBwcm90b2NvbCwgaG9zdCwgYW5kIHBvcnQgY29tcG9uZW50
cy4gSXQgbWF5CisgKiBiZSAlTlVMTCwgYnV0IHVzdWFsbHkgb25seSBpZiBAb3JpZ2luIGlzIG9w
YXF1ZS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSkgKHRyYW5zZmVyIGZ1bGwpOiBhIFVS
SSByZXByZXNlbnRpbmcgQG9yaWdpbi4KKyAqCisgKiBTaW5jZTogMi4xNgorICovCitnY2hhciog
d2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmlnaW4sIG51bGxwdHIpOworCisg
ICAgQ1N0cmluZyBjc3RyaW5nID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKS51
dGY4KCk7CisgICAgcmV0dXJuIGNzdHJpbmcgPT0gIm51bGwiID8gbnVsbHB0ciA6IGdfc3RyZHVw
IChjc3RyaW5nLmRhdGEoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTA3MjNlODdj
ZmY3MjFlMjViYmMxZmMzZTc2ZDMwMzQ3ZmZkN2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lU
Ml9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBp
bmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRTZWN1cml0eU9yaWdp
bl9oCisjZGVmaW5lIFdlYktpdFNlY3VyaXR5T3JpZ2luX2gKKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9TRUNVUklUWV9PUklHSU4gKHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNlY3VyaXR5T3Jp
Z2luIFdlYktpdFNlY3VyaXR5T3JpZ2luOworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF90eXBlICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0U2Vj
dXJpdHlPcmlnaW4gKgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcgICAgICAgICAgKGNvbnN0
IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndWludDE2ICAgICAgICAgICAgICAgcG9ydCk7CisKK1dFQktJVF9B
UEkgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9y
X3VyaSAgKGNvbnN0IGdjaGFyICAgICAgICAgICp1cmkpOworCitXRUJLSVRfQVBJIFdlYktpdFNl
Y3VyaXR5T3JpZ2luICoKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmICAgICAgICAgIChXZWJL
aXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3VucmVmICAgICAgICAoV2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7
CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
cHJvdG9jb2wgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOworCitXRUJLSVRfQVBJIGNv
bnN0IGdjaGFyICoKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3QgICAgIChXZWJLaXRT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKworV0VCS0lUX0FQSSBndWludDE2Cit3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9wb3J0ICAgICAoV2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7
CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVl
ICAgIChXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKworV0VCS0lUX0FQSSBnY2hhciAq
Cit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyAgICAoV2ViS2l0U2VjdXJpdHlPcmln
aW4gKm9yaWdpbik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJLaXRTZWN1cml0eU9y
aWdpbl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYjNlMzc3
MTBkYzczZmM5M2FkZjVlZGU2MmVlYjRmYzhhYzliYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUu
aApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgorCitXZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0U2VjdXJpdHlPcmln
aW5DcmVhdGUoUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKaW5kZXggMDEzMDNmNjg5MzllNWM0NTU1MzZhYzM0MWYyN2Y4ODBi
MjgwZWY1Ny4uZWUzYWZiYmQxN2U5ODYxNzUwYWJkZTNkMmYwMmVlYzNiYmQ0MmViMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTEyMTEsNiArMTIxMSwyNiBAQCB3ZWJr
aXRfc2VjdXJpdHlfbWFuYWdlcl9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxG
SUxFPldlYktpdFNlY3VyaXR5T3JpZ2luPC9GSUxFPgorV2ViS2l0U2VjdXJpdHlPcmlnaW4KK3dl
YmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3Cit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3Jf
dXJpCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3JlZgord2Via2l0X3NlY3VyaXR5X29yaWdpbl91
bnJlZgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wKK3dlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X2hvc3QKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQKK3dlYmtp
dF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0
cmluZworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX1NFQ1VSSVRZX09SSUdJ
TgorCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfdHlw
ZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdFdlYnNpdGVEYXRhTWFuYWdl
cjwvRklMRT4KIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX25ldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggZjhmNDJkY2Q5MmQ2ZDhhN2QwZWNj
NDFlY2Q2NmY5YTUyMDYyYjQ1YS4uMDI0ZTliOGUyMzA4OGZiZDIzMzRlYWUxNWNjZTAxNzE1NWJj
NjM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC01MSw2ICs1MSw3IEBACiAgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVzZXJDb250ZW50LnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXROb3RpZmljYXRpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgorICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRTZWN1cml0eU9yaWdpbi54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLnhtbCIvPgogICA8L2No
YXB0ZXI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRl
eCAzZTQ0ZDYwOTQ0YWY0MGM2NGQ3ZDU3MTJiNDZkZDQ0YWMwN2I3NjBmLi5mYzBmYTRlYmE1MGY2
NzU3ZjJhYzM4OTUwZTNhNmE4YmEwYjBiZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRT
Y3JpcHREaWFsb2cuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5TWFuYWdlci5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM2NzE5ZmI1NDdmNmJi
OTVhOTFhNmFiY2ZhYjI5NDlmNTFjZTY1YTkuLmFlMTRmMjgxYTUwNmUwNzRkMTFjNjc1MjczYzY2
NWRlM2RhNmQyYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wMS0wMSAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRXhwb3NlIFdlYktpdFNlY3Vy
aXR5T3JpZ2luIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY2NjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3Mu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRT
ZWN1cml0eU9yaWdpbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luQmFz
aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5VUklDb25zdHJ1Y3Rv
cik6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0UG9ydCk6CisgICAgICAgICh0
ZXN0U2VjdXJpdHlPcmlnaW5GaWxlVVJJKToKKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkRh
dGFVUkkpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ni0xMi0zMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSB0cmlwbGV0IGNvbnN0cnVjdG9yIGRvZXMgbm90
IGNhbm9uaWNhbGl6ZSBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggOTQ2Nzc0ZTg5ZjgxMzkxOGNjNWFlOGIzMGJk
NmQ5ZGU4OTYyOGMxZS4uMjU4NGRmMjZlYjRkOGExYmM4MDVjYTVhODYzMmY5N2E3ZWI4NDQ4ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxp
c3RzLnR4dApAQCAtMTE4LDYgKzExOCw3IEBAIEFERF9XSzJfVEVTVChUZXN0U1NMIFRlc3RTU0wu
Y3BwKQogQUREX1dLMl9URVNUKFRlc3RVSUNsaWVudCBUZXN0VUlDbGllbnQuY3BwKQogQUREX1dL
Ml9URVNUKFRlc3RXZWJFeHRlbnNpb25zIFRlc3RXZWJFeHRlbnNpb25zLmNwcCkKIEFERF9XSzJf
VEVTVChUZXN0V2ViS2l0UG9saWN5Q2xpZW50IFRlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwKQor
QUREX1dLMl9URVNUKFRlc3RXZWJLaXRTZWN1cml0eU9yaWdpbiBUZXN0V2ViS2l0U2VjdXJpdHlP
cmlnaW4uY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRTZXR0aW5ncyBUZXN0V2ViS2l0U2V0
dGluZ3MuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRWZXJzaW9uIFRlc3RXZWJLaXRWZXJz
aW9uLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViVmlld0VkaXRvciBUZXN0V2ViVmlld0VkaXRv
ci5jcHApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzYmQy
YWFlYWQzM2IxZDU4NTk1MjNhMjhmZjVlZTBmMjAyM2VmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFNlY3VyaXR5T3Jp
Z2luLmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdE1haW4uaCIKKyNp
bmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CisKK3N0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkJhc2ljQ29uc3RydWN0b3IoVGVz
dCosIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9
IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3KCJodHRwIiwgIjEyNy4wLjAuMSIsIDEyMzQpOwor
ICAgIGdfYXNzZXJ0KG9yaWdpbik7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBhc1N0cmluZyh3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIoYXNTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMToxMjM0Iik7CisgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiks
ID09LCAiaHR0cCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDEyMzQpOworICAg
IGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAg
ICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RTZWN1cml0eU9yaWdpblVSSUNvbnN0cnVjdG9yKFRlc3QqLCBnY29uc3Rwb2ludGVyKQor
eworICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsKKyAgICBnX2Fzc2VydChv
cmlnaW4pOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29y
aWdpbl90b19zdHJpbmcob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdl
dCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4wLjE6MTIzNCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmln
aW4pLCA9PSwgIjEyNy4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAxMjM0KTsKKyAgICBnX2Fzc2VydCghd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl91bnJlZihvcmlnaW4pOworCisgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9uZXdfZm9yX3VyaSgiaHR0cDovLzEyNy4wLjAuMToxMjM0L3RoaXMvcGF0aC8/c2hv
dWxkPWJlI2lnbm9yZWQiKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGFzU3RyaW5nLnJl
c2V0KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wo
b3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMTIz
NCk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdp
bikpOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luRGVmYXVsdFBvcnQoVGVzdCosIGdjb25zdHBvaW50
ZXIpCit7CisgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fbmV3KCJodHRwIiwgIjEyNy4wLjAuMSIsIDApOworICAgIGdfYXNzZXJ0KG9yaWdp
bik7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBhc1N0cmluZyh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X3RvX3N0cmluZyhvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCks
ID09LCAiaHR0cDovLzEyNy4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwg
IjEyNy4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91
bnJlZihvcmlnaW4pOworCisgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXco
Imh0dHAiLCAiMTI3LjAuMC4xIiwgODApOworICAgIGdfYXNzZXJ0KG9yaWdpbik7CisgICAgYXNT
dHJpbmcucmVzZXQod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4wLjEi
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9j
b2wob3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwg
MCk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdp
bikpOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKKworICAgIG9y
aWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8xMjcuMC4w
LjEiKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGFzU3RyaW5nLnJlc2V0KHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihh
c1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0
cCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0
KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOworICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICB3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CisKKyAgICBvcmlnaW4gPSB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xOjgwIik7CisgICAgZ19hc3Nl
cnQob3JpZ2luKTsKKyAgICBhc1N0cmluZy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3Rv
X3N0cmluZyhvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCksID09
LCAiaHR0cDovLzEyNy4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEy
Ny4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9wb3J0KG9yaWdpbiksID09LCAwKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJl
ZihvcmlnaW4pOworfQorCitzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5GaWxlVVJJKFRl
c3QqLCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4g
PSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJmaWxlOi8vL2FiY2RlZmciKTsK
KyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImZpbGU6Ly8iKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJmaWxlIik7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7
CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3Jp
Z2luKSwgPT0sIDApOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29w
YXF1ZShvcmlnaW4pKTsKKyAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkRhdGFVUkkoVGVzdCosIGdjb25z
dHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImRhdGE6TGFsaSBobyEiKTsKKyAgICBnX2Fzc2Vy
dChvcmlnaW4pOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5
X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7CisgICAgZ19hc3NlcnQoIWFzU3RyaW5nKTsKKyAg
ICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7
CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3Jp
Z2luKSwgPT0sIDApOworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3Bh
cXVlKG9yaWdpbikpOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsK
K30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlP
cmlnaW4iLCAiYmFzaWMtY29uc3RydWN0b3IiLCB0ZXN0U2VjdXJpdHlPcmlnaW5CYXNpY0NvbnN0
cnVjdG9yKTsKKyAgICBUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5T3JpZ2luIiwgInVyaS1jb25z
dHJ1Y3RvciIsIHRlc3RTZWN1cml0eU9yaWdpblVSSUNvbnN0cnVjdG9yKTsKKyAgICBUZXN0Ojph
ZGQoIldlYktpdFNlY3J1aXR5T3JpZ2luIiwgImRlZmF1bHQtcG9ydCIsIHRlc3RTZWN1cml0eU9y
aWdpbkRlZmF1bHRQb3J0KTsKKyAgICBUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5T3JpZ2luIiwg
ImZpbGUtdXJpIiwgdGVzdFNlY3VyaXR5T3JpZ2luRmlsZVVSSSk7CisgICAgVGVzdDo6YWRkKCJX
ZWJLaXRTZWNydWl0eU9yaWdpbiIsICJkYXRhLXVyaSIsIHRlc3RTZWN1cml0eU9yaWdpbkRhdGFV
UkkpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297902</attachid>
            <date>2017-01-02 10:08:06 -0800</date>
            <delta_ts>2017-01-03 00:10:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166632-20170102120642.patch</filename>
            <type>text/plain</type>
            <size>29083</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjg5NWRjMjc4YTNhZTAw
MzcxMWVlMDMzYWI5N2EyZGMyMzAxMWI4Yy4uNjIxMTQ5NDk2ZDA5YTk1MDJjNGMwOTRjOTIzZDVh
MmNiNWU0NDJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAxLTAyICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4gYW5kIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEV4cG9zZSBXZWJL
aXRTZWN1cml0eU9yaWdpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NjYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEg
Q2FtcG9zLgorCisgICAgICAgIFRoaXMgQVBJIHdpbGwgYmUgdXNlZnVsIHRvIGhhdmUgZm9yIHZh
cmlvdXMgcHVycG9zZXMsIHN1Y2ggYXMgc2V0dGluZyBpbml0aWFsIG5vdGlmaWNhdGlvbgorICAg
ICAgICBwZXJtaXNzaW9ucy4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDogQWRkZWQuCisgICAgICAg
IChfV2ViS2l0U2VjdXJpdHlPcmlnaW46Ol9XZWJLaXRTZWN1cml0eU9yaWdpbik6CisgICAgICAg
ICh3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX25ldyk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJp
KToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmKToKKyAgICAgICAgKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcHJvdG9jb2wpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9z
dCk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KToKKyAgICAgICAg
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKToKKyAgICAgICAgKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fdG9fc3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZWN1cml0eU9yaWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisKIDIwMTctMDEtMDEgIEplZmYgTWlsbGVyICA8amVm
Zm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2VyLXZpc2libGUgY29weXJpZ2h0IHN0
cmluZ3MgdG8gaW5jbHVkZSAyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDBhNWU0
ZDRhZTNmZjkwNzJhYmZkMjU5ZDUzNmY3YmMxYzg5YzFlZjMuLjQ4Mzg0NzgzMTQ5YmQwOTIxNzI4
YjhiZmZiN2UyNDRiNDcxY2ZkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMjAs
NiArMjIwLDkgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNlY3VyaXR5TWFuYWdlci5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJp
dHlNYW5hZ2VyUHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlP
cmlnaW4uY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAor
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCiAgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdz
UHJpdmF0ZS5oCkBAIC01MzQsNiArNTM3LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hF
QURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25z
ZVBvbGljeURlY2lzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTY3JpcHREaWFsb2cuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNlY3VyaXR5TWFuYWdlci5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCmluZGV4IGY4NzJmMzA2ODEwYzEx
YWFiZDI4NDRhMGY4M2MxNWFmZjU2MGJjM2YuLjdiMDdlODk1YjBiYzc2YzY3NDRmYjJkY2FjMDM4
MTk3OGZlZjQzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dG9jbGVhbnVwcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCkBAIC03NSw2ICs3NSw3IEBAIEdfREVGSU5FX0FVVE9Q
VFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRDcmVkZW50aWFsLCB3ZWJraXRfY3JlZGVudGlhbF9mcmVl
KQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQs
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXRNaW1lSW5mbywgd2Via2l0X21pbWVfaW5mb191bnJlZikKIEdfREVGSU5F
X0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXROYXZpZ2F0aW9uQWN0aW9uLCB3ZWJraXRfbmF2
aWdhdGlvbl9hY3Rpb25fZnJlZSkKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJL
aXRTZWN1cml0eU9yaWdpbiwgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZikKIEdfREVGSU5F
X0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRVc2VyU2NyaXB0LCB3ZWJraXRfdXNlcl9zY3Jp
cHRfdW5yZWYpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0VXNlclN0eWxl
U2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9D
TEVBTlVQX0ZVTkMgKFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUsIHdlYmtpdF93ZWJfdmlld19z
ZXNzaW9uX3N0YXRlX3VucmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMzRjY2Mz
ZjdkNjFiYzZhNzg4OTY0ZDYzYjA5NjU4Mzc5MmVkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKQEAg
LTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3Jp
Z2luLmgiCisKKyNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRTZWN1cml0eU9y
aWdpbgorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHNlY3VyaXR5IGJvdW5kYXJ5IGZvciB3ZWJz
aXRlcworICogQFRpdGxlOiBXZWJLaXRTZWN1cml0eU9yaWdpbgorICoKKyAqICNXZWJLaXRTZWN1
cml0eU9yaWdpbiBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGEgc2VjdXJpdHkgZG9tYWluCisgKiBk
ZWZpbmVkIGJ5IHdlYnNpdGVzLiBBIHNlY3VyaXR5IG9yaWdpbiBub3JtYWxseSBjb25zaXN0cyBv
ZiBhCisgKiBwcm90b2NvbCwgYSBob3N0bmFtZSwgYW5kIGEgcG9ydCBudW1iZXIuIEl0IGlzIGFs
c28gcG9zc2libGUgZm9yIGEKKyAqIHNlY3VyaXR5IG9yaWdpbiB0byBiZSBvcGFxdWUsIGFzIGRl
ZmluZWQgYnkgdGhlIEhUTUwgc3RhbmRhcmQsIGluCisgKiB3aGljaCBjYXNlIGl0IGhhcyBubyBh
c3NvY2lhdGVkIHByb3RvY29sLCBob3N0LCBvciBwb3J0LgorICoKKyAqIFdlYnNpdGVzIHdpdGgg
dGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luIGNhbiBhY2Nlc3MgZWFjaCBvdGhlcidzCisgKiByZXNv
dXJjZXMgZm9yIGNsaWVudC1zaWRlIHNjcmlwdGluZyBvciBkYXRhYmFzZSBhY2Nlc3MuCisgKgor
ICogU2luY2U6IDIuMTYKKyAqLworCitzdHJ1Y3QgX1dlYktpdFNlY3VyaXR5T3JpZ2luIHsKKyAg
ICBfV2ViS2l0U2VjdXJpdHlPcmlnaW4oUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIGNv
cmVTZWN1cml0eU9yaWdpbikKKyAgICAgICAgOiBzZWN1cml0eU9yaWdpbihXVEZNb3ZlKGNvcmVT
ZWN1cml0eU9yaWdpbikpCisgICAgeworICAgIH0KKworICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47CisgICAgQ1N0cmluZyBwcm90b2NvbDsKKyAgICBDU3Ry
aW5nIGhvc3Q7CisgICAgaW50IHJlZmVyZW5jZUNvdW50IHsgMSB9OworfTsKKworR19ERUZJTkVf
Qk9YRURfVFlQRShXZWJLaXRTZWN1cml0eU9yaWdpbiwgd2Via2l0X3NlY3VyaXR5X29yaWdpbiwg
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9yZWYsIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYp
CisKK1dlYktpdFNlY3VyaXR5T3JpZ2luKiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgY29yZVNlY3VyaXR5T3JpZ2luKQoreworICAgIFdl
YktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9y
aWdpbio+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktpdFNlY3VyaXR5T3JpZ2luKSkpOworICAgIG5l
dyAob3JpZ2luKSBXZWJLaXRTZWN1cml0eU9yaWdpbihXVEZNb3ZlKGNvcmVTZWN1cml0eU9yaWdp
bikpOworICAgIHJldHVybiBvcmlnaW47Cit9CisKKy8qKgorICogd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9uZXc6CisgKiBAcHJvdG9jb2w6IFRoZSBwcm90b2NvbCBmb3IgdGhlIG5ldyBvcmlnaW4K
KyAqIEBob3N0OiBUaGUgaG9zdCBmb3IgdGhlIG5ldyBvcmlnaW4KKyAqIEBwb3J0OiBUaGUgcG9y
dCBudW1iZXIgZm9yIHRoZSBuZXcgb3JpZ2luLCBvciAwIHRvIGluZGljYXRlIHRoZQorICogICAg
ICAgIGRlZmF1bHQgcG9ydCBmb3IgQHByb3RvY29sCisgKgorICogQ3JlYXRlIGEgbmV3IHNlY3Vy
aXR5IG9yaWdpbiBmcm9tIHRoZSBwcm92aWRlZCBwcm90b2NvbCwgaG9zdCBhbmQKKyAqIHBvcnQu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRTZWN1cml0eU9yaWdp
bi4KKyAqCisgKiBTaW5jZTogMi4xNgorICovCitXZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9uZXcoY29uc3QgZ2NoYXIqIHByb3RvY29sLCBjb25zdCBnY2hhciog
aG9zdCwgZ3VpbnQxNiBwb3J0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByb3RvY29s
LCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChob3N0LCBudWxscHRyKTsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IG9wdGlvbmFsUG9ydDsKKyAgICBpZiAocG9ydCkK
KyAgICAgICAgb3B0aW9uYWxQb3J0ID0gcG9ydDsKKworICAgIHJldHVybiB3ZWJraXRTZWN1cml0
eU9yaWdpbkNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFN0cmluZzo6ZnJv
bVVURjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBvcHRpb25hbFBvcnQpKTsK
K30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpOgorICogQHVy
aTogVGhlIFVSSSBmb3IgdGhlIG5ldyBvcmlnaW4KKyAqCisgKiBDcmVhdGUgYSBuZXcgc2VjdXJp
dHkgb3JpZ2luIGZyb20gdGhlIHByb3ZpZGVkIFVSSS4gQ29tcG9uZW50cyBvZgorICogQHVyaSBv
dGhlciB0aGFuIHByb3RvY29sLCBob3N0LCBhbmQgcG9ydCBkbyBub3QgYWZmZWN0IHRoZSBjcmVh
dGVkCisgKiAjV2ViS2l0U2VjdXJpdHlPcmlnaW4uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IGZ1bGwpOiBBICNXZWJLaXRTZWN1cml0eU9yaWdpbi4KKyAqCisgKiBTaW5jZTogMi4xNgorICov
CitXZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3Vy
aShjb25zdCBnY2hhciogdXJpKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHVyaSwgbnVs
bHB0cik7CisKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgodXJpKSkpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X3JlZjoKKyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICogQXRvbWlj
YWxseSBpbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQG9yaWdpbiBieSBvbmUuCisg
KiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZSBjYWxsZWQgZnJvbSBhbnkgdGhy
ZWFkLgorICoKKyAqIFJldHVybnM6IFRoZSBwYXNzZWQgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisg
KgorICogU2luY2U6IDIuMTYKKyAqLworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fcmVmKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCBudWxscHRyKTsKKworICAgIGdfYXRvbWljX2ludF9p
bmMoJm9yaWdpbi0+cmVmZXJlbmNlQ291bnQpOworICAgIHJldHVybiBvcmlnaW47Cit9CisKKy8q
KgorICogd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZjoKKyAqIEBvcmlnaW46IEEgI1dlYktp
dFNlY3VyaXR5T3JpZ2luCisgKgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVu
Y2UgY291bnQgb2YgQG9yaWdpbiBieSBvbmUuCisgKiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IGRy
b3BzIHRvIDAsIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5CisgKiAjV2ViS2l0U2VjdXJpdHlPcmln
aW4gaXMgcmVsZWFzZWQuIFRoaXMgZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlCisgKiBj
YWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KK3ZvaWQgd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwob3JpZ2luKTsKKworICAgIGlmIChnX2F0b21pY19pbnRf
ZGVjX2FuZF90ZXN0KCZvcmlnaW4tPnJlZmVyZW5jZUNvdW50KSkgeworICAgICAgICBvcmlnaW4t
Pn5XZWJLaXRTZWN1cml0eU9yaWdpbigpOworICAgICAgICBmYXN0RnJlZShvcmlnaW4pOworICAg
IH0KK30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbDoKKyAq
IEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICogR2V0cyB0aGUgcHJvdG9j
b2wgb2YgQG9yaWdpbiwgb3IgJU5VTEwgaWYgQG9yaWdpbiBpcyBvcGFxdWUuCisgKgorICogUmV0
dXJucyAoYWxsb3ctbm9uZSk6IFRoZSBwcm90b2NvbCBvZiB0aGUgI1dlYktpdFNlY3VyaXR5T3Jp
Z2luCisgKgorICogU2luY2U6IDIuMTYKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X3Byb3RvY29sKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCBudWxscHRyKTsKKworICAgIGlmIChvcmln
aW4tPnNlY3VyaXR5T3JpZ2luLT5wcm90b2NvbCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBpZiAob3JpZ2luLT5wcm90b2NvbC5pc051bGwoKSkKKyAgICAgICAg
b3JpZ2luLT5wcm90b2NvbCA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnByb3RvY29sKCkudXRm
OCgpOworICAgIHJldHVybiBvcmlnaW4tPnByb3RvY29sLmRhdGEoKTsKK30KKworLyoqCisgKiB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0OgorICogQG9yaWdpbjogYSAjV2ViS2l0U2Vj
dXJpdHlPcmlnaW4KKyAqCisgKiBHZXRzIHRoZSBob3N0bmFtZSBvZiBAb3JpZ2luLCBvciAlTlVM
TCBpZiBAb3JpZ2luIGlzIG9wYXF1ZSBvciBpZiBpdHMKKyAqIHByb3RvY29sIGRvZXMgbm90IHJl
cXVpcmUgYSBob3N0IGNvbXBvbmVudC4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IFRo
ZSBob3N0IG9mIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqCisgKiBTaW5jZTogMi4xNgor
ICovCitjb25zdCBnY2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChXZWJLaXRT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdp
biwgbnVsbHB0cik7CisKKyAgICBpZiAob3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+aG9zdCgpLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAob3JpZ2luLT5ob3N0
LmlzTnVsbCgpKQorICAgICAgICBvcmlnaW4tPmhvc3QgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
LT5ob3N0KCkudXRmOCgpOworICAgIHJldHVybiBvcmlnaW4tPmhvc3QuZGF0YSgpOworfQorCisv
KioKKyAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQ6CisgKiBAb3JpZ2luOiBhICNX
ZWJLaXRTZWN1cml0eU9yaWdpbgorICoKKyAqIEdldHMgdGhlIHBvcnQgb2YgQG9yaWdpbi4gVGhp
cyBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gMCBpZiB0aGUKKyAqIHBvcnQgaXMgdGhlIGRl
ZmF1bHQgcG9ydCBmb3IgdGhlIGdpdmVuIHByb3RvY29sLiBGb3IgZXhhbXBsZSwKKyAqIGh0dHA6
Ly9leGFtcGxlLmNvbSBoYXMgdGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luIGFzCisgKiBodHRwOi8v
ZXhhbXBsZS5jb206ODAsIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAgZm9yIGEKKyAq
ICNXZWJLaXRTZWN1cml0eU9yaWdpbiBjb25zdHJ1Y3RlZCBmcm9tIGVpdGhlciBVUkkuIEl0IHdp
bGwgYWxzbworICogcmV0dXJuIDAgaWYgQG9yaWdpbiBpcyBvcGFxdWUuCisgKgorICogUmV0dXJu
czogVGhlIHBvcnQgb2YgdGhlICNXZWJLaXRTZWN1cml0eU9yaWdpbi4KKyAqCisgKiBTaW5jZTog
Mi4xNgorICovCitndWludDE2IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQoV2ViS2l0
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmln
aW4sIDApOworCisgICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1
ZV9vcigwKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZToK
KyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICogR2V0cyB3aGV0aGVy
IEBvcmlnaW4gaXMgYW4gb3BhcXVlIHNlY3VyaXR5IG9yaWdpbiwgd2hpY2ggZG9lcyBub3QKKyAq
IHBvc3Nlc3MgYW4gYXNzb2NpYXRlZCBwcm90b2NvbCwgaG9zdCwgb3IgcG9ydC4KKyAqCisgKiBS
ZXR1cm5zOiAlVFJVRSBpZiBAb3JpZ2luIGlzIG9wYXF1ZS4KKyAqCisgKiBTaW5jZTogMi4xNgor
ICovCitnYm9vbGVhbiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShXZWJLaXRTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwg
VFJVRSk7CisKKyAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+aXNVbmlxdWUoKTsK
K30KKworLyoqCisgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZzoKKyAqIEBvcmln
aW46IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKgorICogR2V0cyBhIHN0cmluZyByZXByZXNl
bnRhdGlvbiBvZiBAb3JpZ2luLiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uCisgKiBpcyBhIHZh
bGlkIFVSSSB3aXRoIG9ubHkgcHJvdG9jb2wsIGhvc3QsIGFuZCBwb3J0IGNvbXBvbmVudHMuIEl0
IG1heQorICogYmUgJU5VTEwsIGJ1dCB1c3VhbGx5IG9ubHkgaWYgQG9yaWdpbiBpcyBvcGFxdWUu
CisgKgorICogUmV0dXJuczogKGFsbG93LW5vbmUpICh0cmFuc2ZlciBmdWxsKTogYSBVUkkgcmVw
cmVzZW50aW5nIEBvcmlnaW4uCisgKgorICogU2luY2U6IDIuMTYKKyAqLworZ2NoYXIqIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCBudWxscHRyKTsKKworICAgIENT
dHJpbmcgY3N0cmluZyA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkudXRmOCgp
OworICAgIHJldHVybiBjc3RyaW5nID09ICJudWxsIiA/IG51bGxwdHIgOiBnX3N0cmR1cCAoY3N0
cmluZy5kYXRhKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUwNzIzZTg3Y2ZmNzIx
ZTI1YmJjMWZjM2U3NmQzMDM0N2ZmZDdiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0U2VjdXJpdHlPcmlnaW5faAor
I2RlZmluZSBXZWJLaXRTZWN1cml0eU9yaWdpbl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisK
KyNkZWZpbmUgV0VCS0lUX1RZUEVfU0VDVVJJVFlfT1JJR0lOICh3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZWN1cml0eU9yaWdpbiBX
ZWJLaXRTZWN1cml0eU9yaWdpbjsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfdHlwZSAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFNlY3VyaXR5
T3JpZ2luICoKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3ICAgICAgICAgIChjb25zdCBnY2hh
ciAgICAgICAgICAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAgICAgICAgIHBvcnQpOworCitXRUJLSVRfQVBJIFdl
YktpdFNlY3VyaXR5T3JpZ2luICoKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkg
IChjb25zdCBnY2hhciAgICAgICAgICAqdXJpKTsKKworV0VCS0lUX0FQSSBXZWJLaXRTZWN1cml0
eU9yaWdpbiAqCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3JlZiAgICAgICAgICAoV2ViS2l0U2Vj
dXJpdHlPcmlnaW4gKm9yaWdpbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NlY3VyaXR5
X29yaWdpbl91bnJlZiAgICAgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOworCitX
RUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3Rv
Y29sIChXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKworV0VCS0lUX0FQSSBjb25zdCBn
Y2hhciAqCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0ICAgICAoV2ViS2l0U2VjdXJp
dHlPcmlnaW4gKm9yaWdpbik7CisKK1dFQktJVF9BUEkgZ3VpbnQxNgord2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfcG9ydCAgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOworCitX
RUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZSAgICAo
V2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7CisKK1dFQktJVF9BUEkgZ2NoYXIgKgord2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpv
cmlnaW4pOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0U2VjdXJpdHlPcmlnaW5f
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGIzZTM3NzEwZGM3
M2ZjOTNhZGY1ZWRlNjJlZWI0ZmM4YWM5YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJLaXRTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KKworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3Jl
YXRlKFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CmluZGV4IDAxMzAzZjY4OTM5ZTVjNDU1NTM2YWMzNDFmMjdmODgwYjI4MGVm
NTcuLmVlM2FmYmJkMTdlOTg2MTc1MGFiZGUzZDJmMDJlZWMzYmJkNDJlYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xMjExLDYgKzEyMTEsMjYgQEAgd2Via2l0X3Nl
Y3VyaXR5X21hbmFnZXJfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5X
ZWJLaXRTZWN1cml0eU9yaWdpbjwvRklMRT4KK1dlYktpdFNlY3VyaXR5T3JpZ2luCit3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX25ldword2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaQor
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9yZWYKK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYK
K3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sCit3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9ob3N0Cit3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0Cit3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2lzX29wYXF1ZQord2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcK
KworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9TRUNVUklUWV9PUklHSU4KKwor
PFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3R5cGUKKzwv
U0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI8L0ZJ
TEU+CiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9uZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IGY4ZjQyZGNkOTJkNmQ4YTdkMGVjYzQxZWNk
NjZmOWE1MjA2MmI0NWEuLjAyNGU5YjhlMjMwODhmYmQyMzM0ZWFlMTVjY2UwMTcxNTViYzYzNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTEsNiArNTEsNyBAQAogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRVc2VyQ29udGVudC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0Tm90aWZpY2F0aW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXROb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KKyAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlPcmlnaW4ueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci54bWwiLz4KICAgPC9jaGFwdGVy
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggM2U0
NGQ2MDk0NGFmNDBjNjRkN2Q1NzEyYjQ2ZGQ0NGFjMDdiNzYwZi4uZmMwZmE0ZWJhNTBmNjc1N2Yy
YWMzODk1MGUzYTZhOGJhMGIwYmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0
RGlhbG9nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9uc2UuaD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNGJlZmVlOTM3YzRmMjExZjRh
OTEyYTIwMTU0ZjIwMDk5NjIxYzAwLi5hZDJjMzhhYWRhOGRiYjlkOGI0NTBmMzcwMGZjNzFlNTkz
ZmYwOTk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDEtMDIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFu
emFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEV4cG9zZSBXZWJLaXRTZWN1cml0eU9y
aWdpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NjYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkJhc2ljQ29u
c3RydWN0b3IpOgorICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luVVJJQ29uc3RydWN0b3IpOgor
ICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luRGVmYXVsdFBvcnQpOgorICAgICAgICAodGVzdFNl
Y3VyaXR5T3JpZ2luRmlsZVVSSSk6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5EYXRhVVJJ
KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisKIDIwMTctMDEt
MDIgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gV2ViQ29yZS9DU1NQYXJzZXIgdW5pdCB0ZXN0IGlzIG5vdCBiZWluZyBidWlsdApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMu
dHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0
CmluZGV4IDk0Njc3NGU4OWY4MTM5MThjYzVhZThiMzBiZDZkOWRlODk2MjhjMWUuLjI1ODRkZjI2
ZWI0ZDhhMWJjODA1Y2E1YTg2MzJmOTdhN2ViODQ0OGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKQEAgLTExOCw2ICsxMTgs
NyBAQCBBRERfV0syX1RFU1QoVGVzdFNTTCBUZXN0U1NMLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0
VUlDbGllbnQgVGVzdFVJQ2xpZW50LmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViRXh0ZW5zaW9u
cyBUZXN0V2ViRXh0ZW5zaW9ucy5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFBvbGljeUNs
aWVudCBUZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0V2ViS2l0
U2VjdXJpdHlPcmlnaW4gVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCkKIEFERF9XSzJfVEVT
VChUZXN0V2ViS2l0U2V0dGluZ3MgVGVzdFdlYktpdFNldHRpbmdzLmNwcCkKIEFERF9XSzJfVEVT
VChUZXN0V2ViS2l0VmVyc2lvbiBUZXN0V2ViS2l0VmVyc2lvbi5jcHApCiBBRERfV0syX1RFU1Qo
VGVzdFdlYlZpZXdFZGl0b3IgVGVzdFdlYlZpZXdFZGl0b3IuY3BwKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdp
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFNl
Y3VyaXR5T3JpZ2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2M5ZTc3MDllZmNiOTdlNjIzOTg2NzFkOTkz
OTcxMDIwNTZhNTUxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTAsMCArMSwxNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQy
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCitzdGF0aWMgdm9pZCB0ZXN0
U2VjdXJpdHlPcmlnaW5CYXNpY0NvbnN0cnVjdG9yKFRlc3QqLCBnY29uc3Rwb2ludGVyKQorewor
ICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X25ldygiaHR0cCIsICIxMjcuMC4wLjEiLCAxMjM0KTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19z
dHJpbmcob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwg
Imh0dHA6Ly8xMjcuMC4wLjE6MTIzNCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwg
IjEyNy4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wb3J0KG9yaWdpbiksID09LCAxMjM0KTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdp
bl91bnJlZihvcmlnaW4pOworfQorCitzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5VUklD
b25zdHJ1Y3RvcihUZXN0KiwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZWN1cml0eU9y
aWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgiaHR0cDov
LzEyNy4wLjAuMToxMjM0Iik7CisgICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikp
OworICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAu
MC4xOjEyMzQiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmln
aW4pLCA9PSwgMTIzNCk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNf
b3BhcXVlKG9yaWdpbikpOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2lu
KTsKKworICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0
dHA6Ly8xMjcuMC4wLjE6MTIzNC90aGlzL3BhdGgvP3Nob3VsZD1iZSNpZ25vcmVkIik7CisgICAg
Z19hc3NlcnQob3JpZ2luKTsKKyAgICBhc1N0cmluZy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX3RvX3N0cmluZyhvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0
KCksID09LCAiaHR0cDovLzEyNy4wLjAuMToxMjM0Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdp
biksID09LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDEyMzQpOworICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3VucmVmKG9yaWdpbik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9y
aWdpbkRlZmF1bHRQb3J0KFRlc3QqLCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ldygiaHR0cCIsICIx
MjcuMC4wLjEiLCAwKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4wLjEi
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9j
b2wob3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwg
MCk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdp
bikpOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKKworICAgIG9y
aWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3KCJodHRwIiwgIjEyNy4wLjAuMSIsIDgw
KTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGFzU3RyaW5nLnJlc2V0KHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0
cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIp
OworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9y
aWdpbiksID09LCAiMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOworICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CisKKyAgICBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xIik7CisgICAgZ19hc3NlcnQob3Jp
Z2luKTsKKyAgICBhc1N0cmluZy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmlu
ZyhvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCksID09LCAiaHR0
cDovLzEyNy4wLjAuMSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEyNy4wLjAu
MSIpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0
KG9yaWdpbiksID09LCAwKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdpbl9p
c19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmln
aW4pOworCisgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgi
aHR0cDovLzEyNy4wLjAuMTo4MCIpOworICAgIGdfYXNzZXJ0KG9yaWdpbik7CisgICAgYXNTdHJp
bmcucmVzZXQod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7CisgICAg
Z19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4wLjEiKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wo
b3JpZ2luKSwgPT0sICJodHRwIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikp
OworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luRmlsZVVSSShUZXN0KiwgZ2NvbnN0cG9pbnRlcikKK3sK
KyAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9uZXdfZm9yX3VyaSgiZmlsZTovLy9hYmNkZWZnIik7CisgICAgZ19hc3NlcnQob3JpZ2luKTsK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9f
c3RyaW5nKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0s
ICJmaWxlOi8vIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
Z2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiZmlsZSIpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2NtcGludCh3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKKyAgICBnX2Fz
c2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
T3BhcXVlU2VjdXJpdHlPcmlnaW4oVGVzdCosIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91
cmkoImRhdGE6TGFsaSBobyEiKTsKKyAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2lu
KSk7CisgICAgZ19hc3NlcnQoIWFzU3RyaW5nKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfY21waW50KHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQor
eworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlPcmlnaW4iLCAiYmFzaWMtY29uc3RydWN0
b3IiLCB0ZXN0U2VjdXJpdHlPcmlnaW5CYXNpY0NvbnN0cnVjdG9yKTsKKyAgICBUZXN0OjphZGQo
IldlYktpdFNlY3VyaXR5T3JpZ2luIiwgInVyaS1jb25zdHJ1Y3RvciIsIHRlc3RTZWN1cml0eU9y
aWdpblVSSUNvbnN0cnVjdG9yKTsKKyAgICBUZXN0OjphZGQoIldlYktpdFNlY3J1aXR5T3JpZ2lu
IiwgImRlZmF1bHQtcG9ydCIsIHRlc3RTZWN1cml0eU9yaWdpbkRlZmF1bHRQb3J0KTsKKyAgICBU
ZXN0OjphZGQoIldlYktpdFNlY3VyaXR5T3JpZ2luIiwgImZpbGUtdXJpIiwgdGVzdFNlY3VyaXR5
T3JpZ2luRmlsZVVSSSk7CisgICAgVGVzdDo6YWRkKCJXZWJLaXRTZWNydWl0eU9yaWdpbiIsICJv
cGFxdWUtb3JpZ2luIiwgdGVzdE9wYXF1ZVNlY3VyaXR5T3JpZ2luKTsKK30KKwordm9pZCBhZnRl
ckFsbCgpCit7Cit9Cg==
</data>
<flag name="commit-queue"
          id="320167"
          type_id="3"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>