<?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>203993</bug_id>
          
          <creation_ts>2019-11-08 05:47:45 -0800</creation_ts>
          <short_desc>Add FuzzerAgents that narrow and widen number predictions</short_desc>
          <delta_ts>2020-01-08 15:42:21 -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>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tuomas Karkkainen">tuomas.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588609</commentid>
    <comment_count>0</comment_count>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-11-08 05:47:45 -0800</bug_when>
    <thetext>Add FuzzerAgents that narrow and widen number predictions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588610</commentid>
    <comment_count>1</comment_count>
      <attachid>383121</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-11-08 05:55:37 -0800</bug_when>
    <thetext>Created attachment 383121
proposed patch

proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588649</commentid>
    <comment_count>2</comment_count>
      <attachid>383126</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-11-08 08:10:51 -0800</bug_when>
    <thetext>Created attachment 383126
updated patch

added m_lock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588739</commentid>
    <comment_count>3</comment_count>
      <attachid>383126</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-08 11:29:36 -0800</bug_when>
    <thetext>Comment on attachment 383126
updated patch

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

&gt; Source/JavaScriptCore/ChangeLog:5
&gt; +        Add two FuzzerAgents such that for any predictions that are originally subsets of SpecFullNumber:
&gt; +        - one adds more number types to the prediction
&gt; +        - the other removes some of the number types from the prediction

You should put this txt that explains what&apos;s changed in the region below &quot;Reviewed by ...&quot; but above the list of changed files.  Here, you should have a 1 line title instead e.g. &quot;Add FuzzerAgents that narrow and widen number predictions.&quot; from the bug title.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Move the above &quot;what&apos;s changed&quot; text here after the &quot;Reviewed by ...&quot; line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588744</commentid>
    <comment_count>4</comment_count>
      <attachid>383149</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-11-08 11:40:21 -0800</bug_when>
    <thetext>Created attachment 383149
fix ChangeLog as per review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589789</commentid>
    <comment_count>5</comment_count>
      <attachid>383437</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-11-13 00:09:39 -0800</bug_when>
    <thetext>Created attachment 383437
proposed patch

replaces SpecFullNumber with SpecBytecodeNumber as the superset of number types included in the speculation.

also simplifies a couple of things.

previous patches returned &apos;original&apos; from the narrowing fuzzer agent, as opposed to the intended &apos;generated&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594536</commentid>
    <comment_count>6</comment_count>
      <attachid>384604</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-12-02 02:11:39 -0800</bug_when>
    <thetext>Created attachment 384604
proposed patch

updated to address changes from other FuzzerAgent patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594537</commentid>
    <comment_count>7</comment_count>
      <attachid>384605</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-12-02 02:13:57 -0800</bug_when>
    <thetext>Created attachment 384605
proposed patch

remove extra whitespace change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594924</commentid>
    <comment_count>8</comment_count>
      <attachid>384692</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-12-02 22:58:40 -0800</bug_when>
    <thetext>Created attachment 384692
proposed patch

update patch to account for external changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595586</commentid>
    <comment_count>9</comment_count>
      <attachid>384692</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-04 14:26:41 -0800</bug_when>
    <thetext>Comment on attachment 384692
proposed patch

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

I have question about how narrowing and widening types.

&gt; Source/JavaScriptCore/runtime/NarrowingNumberPredictionFuzzerAgent.cpp:49
&gt; +    unsigned numberOfTypesToKeep = m_random.getUint32(numberTypesThatCouldBePartOfSpeculation.size() + 1);

This means that, we could see SpeculateType sets in the same ratio for each count. Let&apos;s consider the case that is having 5 SpeculatedTypes. So,

0 =&gt; 1/6
1 =&gt; 1/6
...
4 =&gt; 1/6
5 =&gt; 1/6

We have 5 combination when &quot;4&quot; is picked. And each one gets 1/24, which is 1/4 when comparing to SpecNone. Is it intentional?

&gt; Source/JavaScriptCore/runtime/WideningNumberPredictionFuzzerAgent.cpp:61
&gt; +    unsigned numberOfTypesToAdd = m_random.getUint32(numberTypesNotIncludedInSpeculation.size() + 1);
&gt; +    if (!numberOfTypesToAdd)
&gt; +        return original;
&gt; +
&gt; +    SpeculatedType generated = original;
&gt; +    for (unsigned i = 0; i &lt; numberOfTypesToAdd; i++) {
&gt; +        unsigned indexOfNewType = m_random.getUint32(numberTypesNotIncludedInSpeculation.size());
&gt; +        mergeSpeculation(generated, numberTypesNotIncludedInSpeculation[indexOfNewType]);
&gt; +        numberTypesNotIncludedInSpeculation.remove(indexOfNewType);
&gt; +    }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595789</commentid>
    <comment_count>10</comment_count>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-12-05 06:47:52 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #9)
&gt; Comment on attachment 384692 [details]
&gt; proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384692&amp;action=review
&gt; 
&gt; I have question about how narrowing and widening types.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/NarrowingNumberPredictionFuzzerAgent.cpp:49
&gt; &gt; +    unsigned numberOfTypesToKeep = m_random.getUint32(numberTypesThatCouldBePartOfSpeculation.size() + 1);
&gt; 
&gt; This means that, we could see SpeculateType sets in the same ratio for each
&gt; count. Let&apos;s consider the case that is having 5 SpeculatedTypes. So,
&gt; 
&gt; 0 =&gt; 1/6
&gt; 1 =&gt; 1/6
&gt; ...
&gt; 4 =&gt; 1/6
&gt; 5 =&gt; 1/6
&gt; 
&gt; We have 5 combination when &quot;4&quot; is picked. And each one gets 1/24, which is
&gt; 1/4 when comparing to SpecNone. Is it intentional?

For the widening FuzzerAgent I think this is fine. For the narrowing FuzzerAgent I don&apos;t like how often it returns SpecNone. I think it would probably be better to move the &quot;+ 1&quot; outside of the parentheses, which would mean that it never returned SpecNone, and single number type predictions were always left unchanged.

The real answer depends on how the speculations affect the machine code, and I don&apos;t have an answer for that.

&gt; &gt; Source/JavaScriptCore/runtime/WideningNumberPredictionFuzzerAgent.cpp:61
&gt; &gt; +    unsigned numberOfTypesToAdd = m_random.getUint32(numberTypesNotIncludedInSpeculation.size() + 1);
&gt; &gt; +    if (!numberOfTypesToAdd)
&gt; &gt; +        return original;
&gt; &gt; +
&gt; &gt; +    SpeculatedType generated = original;
&gt; &gt; +    for (unsigned i = 0; i &lt; numberOfTypesToAdd; i++) {
&gt; &gt; +        unsigned indexOfNewType = m_random.getUint32(numberTypesNotIncludedInSpeculation.size());
&gt; &gt; +        mergeSpeculation(generated, numberTypesNotIncludedInSpeculation[indexOfNewType]);
&gt; &gt; +        numberTypesNotIncludedInSpeculation.remove(indexOfNewType);
&gt; &gt; +    }
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596769</commentid>
    <comment_count>11</comment_count>
      <attachid>385135</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2019-12-08 23:41:49 -0800</bug_when>
    <thetext>Created attachment 385135
proposed patch

Changes the narrowing fuzzer agent to always keep at least one number type. This means it never returns SpecNone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604303</commentid>
    <comment_count>12</comment_count>
      <attachid>385135</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-08 14:54:30 -0800</bug_when>
    <thetext>Comment on attachment 385135
proposed patch

OK, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604319</commentid>
    <comment_count>13</comment_count>
      <attachid>385135</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-08 15:41:37 -0800</bug_when>
    <thetext>Comment on attachment 385135
proposed patch

Clearing flags on attachment: 385135

Committed r254230: &lt;https://trac.webkit.org/changeset/254230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604320</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-08 15:41:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604321</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-08 15:42:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/58424588&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383121</attachid>
            <date>2019-11-08 05:55:37 -0800</date>
            <delta_ts>2019-11-08 08:10:51 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_203993.patch</filename>
            <type>text/plain</type>
            <size>24798</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZiYzRiZTk1YjE1Li4xMmNkZDA5MGZjNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMTEtMDggIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHR3
byBGdXp6ZXJBZ2VudHMgc3VjaCB0aGF0IGZvciBhbnkgcHJlZGljdGlvbnMgdGhhdCBhcmUgb3Jp
Z2luYWxseSBzdWJzZXRzIG9mIFNwZWNGdWxsTnVtYmVyOgorICAgICAgICAtIG9uZSBhZGRzIG1v
cmUgbnVtYmVyIHR5cGVzIHRvIHRoZSBwcmVkaWN0aW9uCisgICAgICAgIC0gdGhlIG90aGVyIHJl
bW92ZXMgc29tZSBvZiB0aGUgbnVtYmVyIHR5cGVzIGZyb20gdGhlIHByZWRpY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzk5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQ6Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCk6CisgICAgICAgIChKU0M6
Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDog
QWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQ6Om51bWJlclR5cGVzKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6Cisg
ICAgICAgICogcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dDo6V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQpOgorICAgICAgICAoSlNDOjpX
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbik6CisgICAg
ICAgICogcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOiBBZGRl
ZC4KKwogMjAxOS0xMS0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgZmV3ZXIgdmlydHVhbCByZWdpc3RlcnMgaW4gV2FzbSBMTEludApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDA3ZjY4MGFiNi4uMjg2MTkwYTE5MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODI1LDYgKzQ4MjUsMTIgQEAKIAkJQzRGNEI2
RDYxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1l
bnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzRGNEI2RDcxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJv
dG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY0QjZEODFBMDVDNzZGMDA1Q0FCNzYg
Lyogb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0Ez
RDYyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDcyMzc1OUJBQzAw
ODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyog
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjdBM0RBMjM3NUE2REMw
MDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb252
ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMDAwMzkwMTlEOEJFNkYw
MDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgcGF0aCA9IGRmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03Mzg3LDYgKzczOTMsOCBAQAogCQkJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5p
bXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovLAogCQkJCTE0NzM0MUREMURDMkNFOTYwMEFBMjlCQSAv
KiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDUxREMwMkVCOTAw
QUEyOUJBIC8qIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggKi8sCisJCQkJQ0UyN0EzRDcyMzc1
OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAg
Ki8sCisJCQkJQ0UyN0EzRDgyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIwMDBGOTI5NyAvKiBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjky
OTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIw
MDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8sCkBAIC03NDA0LDYgKzc0MTIs
OCBAQAogCQkJCUJDMjY4MEMzMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5o
ICovLAogCQkJCUY2OTJBODcwMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuY3BwICov
LAogCQkJCUY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAqLywKKwkJ
CQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
LmNwcCAqLywKKwkJCQlDRTI3QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50LmggKi8sCiAJCQkJQkMyNjgwQzQwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJl
clByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMyNjgwQzUwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJl
clByb3RvdHlwZS5oICovLAogCQkJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmlj
U3RyaW5ncy5oICovLApAQCAtNzYwNyw2ICs3NjE3LDggQEAKIAkJCQk3MDlGQjg2NDFBRTMzNUM2
MDAzOUQwNjkgLyogV2Vha1NldENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzA5RkI4NjUxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovLAogCQkJCTcwOUZCODY2MUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8sCisJCQkJQ0UyN0EzRDYyMzc1OUJB
QzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLywK
KwkJCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVC
YXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmll
cklubGluZXMuaCAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNTE5
MjFkNzE4NjAuLjNmZjY0OTFmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04
ODksNiArODg5LDcgQEAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogcnVudGltZS9NYXRoT2JqZWN0
LmNwcAogcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogcnVudGltZS9Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5jcHAKK3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcAogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTg5
Nyw2ICs4OTgsNyBAQCBydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvTnVs
bFNldHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvTnVtYmVyT2JqZWN0LmNwcAorcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwCiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC05NzUsNiAr
OTc3LDcgQEAgcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL1dl
YWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuY3BwCiAKIC8vIERlcml2ZWQgU291cmNlcwogLy8gRklYTUU6IFdl
IHNob3VsZCBtb3ZlIHRoaXMgdG8gcnVudGltZSBidXQgaXQga2VwdCBicmVha2luZyB0aGUgV2lu
ZG93cyBidWlsZCBpbiB3ZWlyZCB3YXlzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzc0ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNGUyZWY1NmMwYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgTmFycm93
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBv
cmlnaW5hbCkKK3sKKyAgICBib29sIG9yaWdpbmFsU3BlY3VsYXRpb25Jc0FOdW1iZXIgPSBvcmln
aW5hbCAmJiBzcGVjdWxhdGlvbkNoZWNrZWQob3JpZ2luYWwsIFNwZWNGdWxsTnVtYmVyKTsKKyAg
ICBpZiAoIW9yaWdpbmFsU3BlY3VsYXRpb25Jc0FOdW1iZXIpCisgICAgICAgIHJldHVybiBvcmln
aW5hbDsKKworICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbnVtYmVyVHlwZXNUaGF0Q291bGRC
ZVBhcnRPZlNwZWN1bGF0aW9uOworICAgIGZvciAoYXV0byBudW1iZXJUeXBlIDogbnVtYmVyVHlw
ZXMoKSkgeworICAgICAgICBpZiAobnVtYmVyVHlwZSAmIG9yaWdpbmFsKQorICAgICAgICAgICAg
bnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLmFwcGVuZChudW1iZXJUeXBl
KTsKKyAgICB9CisKKyAgICBpZiAobnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0
aW9uLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICB1bnNpZ25l
ZCBudW1iZXJPZlR5cGVzVG9LZWVwID0gMSArIG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBl
c1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICBpZiAobnVtYmVyT2ZU
eXBlc1RvS2VlcCA9PSBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6
ZSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5l
cmF0ZWQgPSBTcGVjTm9uZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZU
eXBlc1RvS2VlcDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4T2ZUeXBlVG9LZWVwID0g
bV9yYW5kb20uZ2V0VWludDMyKG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlv
bi5zaXplKCkpOworICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVtYmVyVHlw
ZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uW2luZGV4T2ZUeXBlVG9LZWVwXSk7CisgICAg
ICAgIG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5yZW1vdmUoaW5kZXhP
ZlR5cGVUb0tlZXApOworICAgIH0KKworICAgIGlmIChPcHRpb25zOjpkdW1wUmFuZG9taXppbmdG
dXp6ZXJBZ2VudFByZWRpY3Rpb25zKCkpCisgICAgICAgIGRhdGFMb2dMbigiTmFycm93aW5nTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uIG5hbWU6KCIsIGNvZGVCbG9j
ay0+aW5mZXJyZWROYW1lKCksICIjIiwgY29kZUJsb2NrLT5oYXNoQXNTdHJpbmdJZlBvc3NpYmxl
KCksICIpLGJ5dGVjb2RlSW5kZXg6KCIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpLCAiKSxv
cmlnaW5hbDooIiwgU3BlY3VsYXRpb25EdW1wKG9yaWdpbmFsKSwgIiksZ2VuZXJhdGVkOigiLCBT
cGVjdWxhdGlvbkR1bXAoZ2VuZXJhdGVkKSwgIikiKTsKKworICAgIHJldHVybiBvcmlnaW5hbDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OWE2Yjc5Nzc4
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJv
d2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgVk07CisKK2NsYXNzIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudCBmaW5hbCA6IHB1YmxpYyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0
aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJp
ZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YTlhODM5MWI3YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJO
dW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK051bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJikK
KyAgICA6IG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQoKSkK
K3sKK30KKworVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQ6Om51bWJlclR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFNw
ZWN1bGF0ZWRUeXBlPj4gc19udW1iZXJUeXBlcyA9IFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4oewor
ICAgICAgICBTcGVjQm9vbEludDMyLAorICAgICAgICBTcGVjTm9uQm9vbEludDMyLAorICAgICAg
ICBTcGVjSW50MzJBc0ludDUyLAorICAgICAgICBTcGVjTm9uSW50MzJBc0ludDUyLAorICAgICAg
ICBTcGVjQW55SW50QXNEb3VibGUsCisgICAgICAgIFNwZWNOb25JbnRBc0RvdWJsZSwKKyAgICAg
ICAgU3BlY0RvdWJsZVB1cmVOYU4sCisgICAgICAgIFNwZWNEb3VibGVJbXB1cmVOYU4sCisgICAg
fSk7CisgICAgcmV0dXJuIHNfbnVtYmVyVHlwZXM7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
Ljg3YWY1NmIyNDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiRnV6emVyQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IDogcHVibGlj
IEZ1enplckFnZW50IHsKKworcHVibGljOgorICAgIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dChWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsKKyAgICBzdGF0
aWMgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBudW1iZXJUeXBlcygpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCA1MzIwZmMxMjBmMC4uZjNiMTIxZTIxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtMzc1LDYgKzM3NSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHYoVW5zaWduZWQsIHNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQsIDEsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZHVtcFJhbmRvbWl6aW5nRnV6emVyQWdlbnRQcmVk
aWN0aW9ucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlRG91Ymxl
UHJlZGljdGlvbkZ1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihC
b29sLCB1c2VOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQsIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9vbCwg
bG9nUGhhc2VUaW1lcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoRG91YmxlLCBy
YXJlQmxvY2tQZW5hbHR5LCAwLjAwMSwgTm9ybWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggM2E2Y2RlODIyNGQuLjg2ODJjMDFjMTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTEsNiArMTExLDcgQEAKICNpbmNsdWRl
ICJNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUg
Ik5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIk5hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCkBAIC0xNTEsNiArMTUyLDcgQEAKICNpbmNs
dWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgi
CisjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0ZUxvY2suaD4KICNp
bmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KQEAgLTQ0Niw2ICs0NDgsMTAgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICAgICBzZXRGdXp6ZXJBZ2VudCht
YWtlVW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAo
T3B0aW9uczo6dXNlRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50KCkpCiAgICAgICAgIHNldEZ1
enplckFnZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykp
OworICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudCgpKQorICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPE5hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICBlbHNlIGlmIChPcHRpb25z
Ojp1c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQorICAgICAgICBzZXRG
dXp6ZXJBZ2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmln
aW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTlkYThiNzE1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXaWRlbmlu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OldpZGVuaW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2
bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9yaWdpbmFsKQoreworICAgIGJvb2wgb3Jp
Z2luYWxTcGVjdWxhdGlvbklzQU51bWJlciA9IG9yaWdpbmFsICYmIHNwZWN1bGF0aW9uQ2hlY2tl
ZChvcmlnaW5hbCwgU3BlY0Z1bGxOdW1iZXIpOworICAgIGlmICghb3JpZ2luYWxTcGVjdWxhdGlv
bklzQU51bWJlcikKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisgICAgaWYgKG9yaWdpbmFs
ID09IFNwZWNGdWxsTnVtYmVyKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBWZWN0
b3I8U3BlY3VsYXRlZFR5cGU+IG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uOwor
ICAgIGZvciAoYXV0byBudW1iZXJUeXBlIDogbnVtYmVyVHlwZXMoKSkgeworICAgICAgICBpZiAo
IShudW1iZXJUeXBlICYgb3JpZ2luYWwpKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNOb3RJbmNs
dWRlZEluU3BlY3VsYXRpb24uYXBwZW5kKG51bWJlclR5cGUpOworICAgIH0KKworICAgIHVuc2ln
bmVkIG51bWJlck9mVHlwZXNUb0FkZCA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc05v
dEluY2x1ZGVkSW5TcGVjdWxhdGlvbi5zaXplKCkpOworICAgIGlmICghbnVtYmVyT2ZUeXBlc1Rv
QWRkKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5l
cmF0ZWQgPSBvcmlnaW5hbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZU
eXBlc1RvQWRkOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXhPZk5ld1R5cGUgPSBtX3Jh
bmRvbS5nZXRVaW50MzIobnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24uc2l6ZSgp
KTsKKyAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihnZW5lcmF0ZWQsIG51bWJlclR5cGVzTm90SW5j
bHVkZWRJblNwZWN1bGF0aW9uW2luZGV4T2ZOZXdUeXBlXSk7CisgICAgICAgIG51bWJlclR5cGVz
Tm90SW5jbHVkZWRJblNwZWN1bGF0aW9uLnJlbW92ZShpbmRleE9mTmV3VHlwZSk7CisgICAgfQor
CisgICAgaWYgKE9wdGlvbnM6OmR1bXBSYW5kb21pemluZ0Z1enplckFnZW50UHJlZGljdGlvbnMo
KSkKKyAgICAgICAgZGF0YUxvZ0xuKCJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dDo6Z2V0UHJlZGljdGlvbiBuYW1lOigiLCBjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAiIyIs
IGNvZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4Oigi
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9u
RHVtcChvcmlnaW5hbCksICIpLGdlbmVyYXRlZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVyYXRl
ZCksICIpIik7CisKKyAgICByZXR1cm4gZ2VuZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTlmNWVkYWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3Mg
V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgZmluYWwgOiBwdWJsaWMgTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKwor
cHVibGljOgorICAgIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisK
KyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVP
cmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383126</attachid>
            <date>2019-11-08 08:10:51 -0800</date>
            <delta_ts>2019-11-08 11:40:21 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>webkit_203993_b.patch</filename>
            <type>text/plain</type>
            <size>24948</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZiYzRiZTk1YjE1Li4xMmNkZDA5MGZjNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMTEtMDggIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHR3
byBGdXp6ZXJBZ2VudHMgc3VjaCB0aGF0IGZvciBhbnkgcHJlZGljdGlvbnMgdGhhdCBhcmUgb3Jp
Z2luYWxseSBzdWJzZXRzIG9mIFNwZWNGdWxsTnVtYmVyOgorICAgICAgICAtIG9uZSBhZGRzIG1v
cmUgbnVtYmVyIHR5cGVzIHRvIHRoZSBwcmVkaWN0aW9uCisgICAgICAgIC0gdGhlIG90aGVyIHJl
bW92ZXMgc29tZSBvZiB0aGUgbnVtYmVyIHR5cGVzIGZyb20gdGhlIHByZWRpY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzk5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQ6Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCk6CisgICAgICAgIChKU0M6
Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDog
QWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQpOgorICAgICAgICAoSlNDOjpOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQ6Om51bWJlclR5cGVzKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6Cisg
ICAgICAgICogcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dDo6V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQpOgorICAgICAgICAoSlNDOjpX
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbik6CisgICAg
ICAgICogcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOiBBZGRl
ZC4KKwogMjAxOS0xMS0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgZmV3ZXIgdmlydHVhbCByZWdpc3RlcnMgaW4gV2FzbSBMTEludApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDA3ZjY4MGFiNi4uMjg2MTkwYTE5MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODI1LDYgKzQ4MjUsMTIgQEAKIAkJQzRGNEI2
RDYxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1l
bnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzRGNEI2RDcxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJv
dG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY0QjZEODFBMDVDNzZGMDA1Q0FCNzYg
Lyogb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0Ez
RDYyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDcyMzc1OUJBQzAw
ODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyog
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjdBM0RBMjM3NUE2REMw
MDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb252
ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMDAwMzkwMTlEOEJFNkYw
MDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgcGF0aCA9IGRmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03Mzg3LDYgKzczOTMsOCBAQAogCQkJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5p
bXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovLAogCQkJCTE0NzM0MUREMURDMkNFOTYwMEFBMjlCQSAv
KiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDUxREMwMkVCOTAw
QUEyOUJBIC8qIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggKi8sCisJCQkJQ0UyN0EzRDcyMzc1
OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAg
Ki8sCisJCQkJQ0UyN0EzRDgyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIwMDBGOTI5NyAvKiBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjky
OTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIw
MDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8sCkBAIC03NDA0LDYgKzc0MTIs
OCBAQAogCQkJCUJDMjY4MEMzMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5o
ICovLAogCQkJCUY2OTJBODcwMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuY3BwICov
LAogCQkJCUY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAqLywKKwkJ
CQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
LmNwcCAqLywKKwkJCQlDRTI3QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50LmggKi8sCiAJCQkJQkMyNjgwQzQwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJl
clByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMyNjgwQzUwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJl
clByb3RvdHlwZS5oICovLAogCQkJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmlj
U3RyaW5ncy5oICovLApAQCAtNzYwNyw2ICs3NjE3LDggQEAKIAkJCQk3MDlGQjg2NDFBRTMzNUM2
MDAzOUQwNjkgLyogV2Vha1NldENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzA5RkI4NjUxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovLAogCQkJCTcwOUZCODY2MUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8sCisJCQkJQ0UyN0EzRDYyMzc1OUJB
QzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLywK
KwkJCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVC
YXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmll
cklubGluZXMuaCAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNTE5
MjFkNzE4NjAuLjNmZjY0OTFmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04
ODksNiArODg5LDcgQEAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogcnVudGltZS9NYXRoT2JqZWN0
LmNwcAogcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogcnVudGltZS9Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5jcHAKK3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcAogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTg5
Nyw2ICs4OTgsNyBAQCBydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvTnVs
bFNldHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvTnVtYmVyT2JqZWN0LmNwcAorcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwCiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC05NzUsNiAr
OTc3LDcgQEAgcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL1dl
YWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuY3BwCiAKIC8vIERlcml2ZWQgU291cmNlcwogLy8gRklYTUU6IFdl
IHNob3VsZCBtb3ZlIHRoaXMgdG8gcnVudGltZSBidXQgaXQga2VwdCBicmVha2luZyB0aGUgV2lu
ZG93cyBidWlsZCBpbiB3ZWlyZCB3YXlzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzc0ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYmU5NjhkNmJhMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgTmFycm93
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBv
cmlnaW5hbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisKKyAgICBi
b29sIG9yaWdpbmFsU3BlY3VsYXRpb25Jc0FOdW1iZXIgPSBvcmlnaW5hbCAmJiBzcGVjdWxhdGlv
bkNoZWNrZWQob3JpZ2luYWwsIFNwZWNGdWxsTnVtYmVyKTsKKyAgICBpZiAoIW9yaWdpbmFsU3Bl
Y3VsYXRpb25Jc0FOdW1iZXIpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFZlY3Rv
cjxTcGVjdWxhdGVkVHlwZT4gbnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9u
OworICAgIGZvciAoYXV0byBudW1iZXJUeXBlIDogbnVtYmVyVHlwZXMoKSkgeworICAgICAgICBp
ZiAobnVtYmVyVHlwZSAmIG9yaWdpbmFsKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNUaGF0Q291
bGRCZVBhcnRPZlNwZWN1bGF0aW9uLmFwcGVuZChudW1iZXJUeXBlKTsKKyAgICB9CisKKyAgICBp
ZiAobnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLnNpemUoKSA9PSAxKQor
ICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZlR5cGVzVG9L
ZWVwID0gMSArIG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9m
U3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICBpZiAobnVtYmVyT2ZUeXBlc1RvS2VlcCA9PSBudW1i
ZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKQorICAgICAgICByZXR1
cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5lcmF0ZWQgPSBTcGVjTm9uZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUeXBlc1RvS2VlcDsgaSsrKSB7
CisgICAgICAgIHVuc2lnbmVkIGluZGV4T2ZUeXBlVG9LZWVwID0gbV9yYW5kb20uZ2V0VWludDMy
KG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5zaXplKCkpOworICAgICAg
ICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRP
ZlNwZWN1bGF0aW9uW2luZGV4T2ZUeXBlVG9LZWVwXSk7CisgICAgICAgIG51bWJlclR5cGVzVGhh
dENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5yZW1vdmUoaW5kZXhPZlR5cGVUb0tlZXApOworICAg
IH0KKworICAgIGlmIChPcHRpb25zOjpkdW1wUmFuZG9taXppbmdGdXp6ZXJBZ2VudFByZWRpY3Rp
b25zKCkpCisgICAgICAgIGRhdGFMb2dMbigiTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50OjpnZXRQcmVkaWN0aW9uIG5hbWU6KCIsIGNvZGVCbG9jay0+aW5mZXJyZWROYW1lKCks
ICIjIiwgY29kZUJsb2NrLT5oYXNoQXNTdHJpbmdJZlBvc3NpYmxlKCksICIpLGJ5dGVjb2RlSW5k
ZXg6KCIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpLCAiKSxvcmlnaW5hbDooIiwgU3BlY3Vs
YXRpb25EdW1wKG9yaWdpbmFsKSwgIiksZ2VuZXJhdGVkOigiLCBTcGVjdWxhdGlvbkR1bXAoZ2Vu
ZXJhdGVkKSwgIikiKTsKKworICAgIHJldHVybiBvcmlnaW5hbDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dp
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OWE2Yjc5Nzc4YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk51bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisK
K2NsYXNzIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworCitwdWJsaWM6CisgICAgTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNv
bnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi42YTlhODM5MWI3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOdW1iZXJQcmVkaWN0aW9uRnV6
emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudDo6TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJikKKyAgICA6IG1fcmFuZG9tKE9w
dGlvbnM6OnNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQoKSkKK3sKK30KKworVmVjdG9yPFNw
ZWN1bGF0ZWRUeXBlPiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6Om51bWJlclR5cGVzKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFNwZWN1bGF0ZWRUeXBlPj4gc19u
dW1iZXJUeXBlcyA9IFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4oeworICAgICAgICBTcGVjQm9vbElu
dDMyLAorICAgICAgICBTcGVjTm9uQm9vbEludDMyLAorICAgICAgICBTcGVjSW50MzJBc0ludDUy
LAorICAgICAgICBTcGVjTm9uSW50MzJBc0ludDUyLAorICAgICAgICBTcGVjQW55SW50QXNEb3Vi
bGUsCisgICAgICAgIFNwZWNOb25JbnRBc0RvdWJsZSwKKyAgICAgICAgU3BlY0RvdWJsZVB1cmVO
YU4sCisgICAgICAgIFNwZWNEb3VibGVJbXB1cmVOYU4sCisgICAgfSk7CisgICAgcmV0dXJuIHNf
bnVtYmVyVHlwZXM7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlNTdkZTc0OGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRnV6emVy
QWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IDogcHVibGljIEZ1enplckFnZW50IHsKKworcHVi
bGljOgorICAgIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYpOworCitwcm90ZWN0ZWQ6
CisgICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsKKyAgICBMb2NrIG1fbG9jazsKKyAgICBzdGF0aWMg
VmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBudW1iZXJUeXBlcygpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRl
eCA1MzIwZmMxMjBmMC4uZjNiMTIxZTIxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtMzc1LDYgKzM3NSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHYoVW5zaWduZWQsIHNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQsIDEsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoQm9vbCwgZHVtcFJhbmRvbWl6aW5nRnV6emVyQWdlbnRQcmVkaWN0
aW9ucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlRG91YmxlUHJl
ZGljdGlvbkZ1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29s
LCB1c2VOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9vbCwgbG9n
UGhhc2VUaW1lcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoRG91YmxlLCByYXJl
QmxvY2tQZW5hbHR5LCAwLjAwMSwgTm9ybWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggM2E2Y2RlODIyNGQuLjg2ODJjMDFjMTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTEsNiArMTExLDcgQEAKICNpbmNsdWRlICJN
aW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIk5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIk5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCkBAIC0xNTEsNiArMTUyLDcgQEAKICNpbmNsdWRl
ICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbkhl
YXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRl
IDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0ZUxvY2suaD4KICNpbmNs
dWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KQEAgLTQ0Niw2ICs0NDgsMTAgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtl
VW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAoT3B0
aW9uczo6dXNlRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50KCkpCiAgICAgICAgIHNldEZ1enpl
ckFnZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwor
ICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudCgpKQorICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPE5hcnJvd2luZ051bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICBlbHNlIGlmIChPcHRpb25zOjp1
c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQorICAgICAgICBzZXRGdXp6
ZXJBZ2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Pigq
dGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5N
YXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZWMxZjcyZWViMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXaWRlbmluZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworV2lkZW5p
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkK
K3sKK30KKworU3BlY3VsYXRlZFR5cGUgV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9yaWdpbmFsKQoreworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKKworICAgIGJvb2wgb3JpZ2luYWxTcGVjdWxhdGlvbklzQU51
bWJlciA9IG9yaWdpbmFsICYmIHNwZWN1bGF0aW9uQ2hlY2tlZChvcmlnaW5hbCwgU3BlY0Z1bGxO
dW1iZXIpOworICAgIGlmICghb3JpZ2luYWxTcGVjdWxhdGlvbklzQU51bWJlcikKKyAgICAgICAg
cmV0dXJuIG9yaWdpbmFsOworCisgICAgaWYgKG9yaWdpbmFsID09IFNwZWNGdWxsTnVtYmVyKQor
ICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IG51
bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uOworICAgIGZvciAoYXV0byBudW1iZXJU
eXBlIDogbnVtYmVyVHlwZXMoKSkgeworICAgICAgICBpZiAoIShudW1iZXJUeXBlICYgb3JpZ2lu
YWwpKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24uYXBw
ZW5kKG51bWJlclR5cGUpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bWJlck9mVHlwZXNUb0Fk
ZCA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc05vdEluY2x1ZGVkSW5TcGVjdWxhdGlv
bi5zaXplKCkpOworICAgIGlmICghbnVtYmVyT2ZUeXBlc1RvQWRkKQorICAgICAgICByZXR1cm4g
b3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5lcmF0ZWQgPSBvcmlnaW5hbDsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUeXBlc1RvQWRkOyBpKyspIHsKKyAg
ICAgICAgdW5zaWduZWQgaW5kZXhPZk5ld1R5cGUgPSBtX3JhbmRvbS5nZXRVaW50MzIobnVtYmVy
VHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICAgICAgbWVyZ2VTcGVj
dWxhdGlvbihnZW5lcmF0ZWQsIG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uW2lu
ZGV4T2ZOZXdUeXBlXSk7CisgICAgICAgIG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0
aW9uLnJlbW92ZShpbmRleE9mTmV3VHlwZSk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6OmR1
bXBSYW5kb21pemluZ0Z1enplckFnZW50UHJlZGljdGlvbnMoKSkKKyAgICAgICAgZGF0YUxvZ0xu
KCJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbiBuYW1l
OigiLCBjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAiIyIsIGNvZGVCbG9jay0+aGFzaEFzU3Ry
aW5nSWZQb3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4OigiLCBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgoKSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9uRHVtcChvcmlnaW5hbCksICIpLGdl
bmVyYXRlZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVyYXRlZCksICIpIik7CisKKyAgICByZXR1
cm4gZ2VuZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43NTlmNWVkYWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgV2lkZW5pbmdOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQgZmluYWwgOiBwdWJsaWMgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIFdpZGVuaW5n
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBn
ZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlw
ZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383149</attachid>
            <date>2019-11-08 11:40:21 -0800</date>
            <delta_ts>2019-11-13 00:09:39 -0800</delta_ts>
            <desc>fix ChangeLog as per review</desc>
            <filename>webkit_203993_c.patch</filename>
            <type>text/plain</type>
            <size>25017</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZiYzRiZTk1YjE1Li5kYjE5ODYzNGIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTktMTEtMDggIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZ1
enplckFnZW50cyB0aGF0IG5hcnJvdyBhbmQgd2lkZW4gbnVtYmVyIHByZWRpY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIEZ1enpl
ckFnZW50cyBzdWNoIHRoYXQgZm9yIGFueSBwcmVkaWN0aW9ucyB0aGF0IGFyZSBvcmlnaW5hbGx5
IHN1YnNldHMgb2YgU3BlY0Z1bGxOdW1iZXI6CisgICAgICAgIC0gb25lIGFkZHMgbW9yZSBudW1i
ZXIgdHlwZXMgdG8gdGhlIHByZWRpY3Rpb24KKyAgICAgICAgLSB0aGUgb3RoZXIgcmVtb3ZlcyBz
b21lIG9mIHRoZSBudW1iZXIgdHlwZXMgZnJvbSB0aGUgcHJlZGljdGlvbgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXJyb3dpbmdOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQ6Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCk6Cisg
ICAgICAgIChKU0M6Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJl
ZGljdGlvbik6CisgICAgICAgICogcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6
emVyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6
emVyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50OjpOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQpOgorICAgICAgICAoSlNDOjpOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6Om51bWJlclR5cGVzKToKKyAgICAgICAgKiBydW50aW1l
L051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpXaWRlbmluZ051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudDo6V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQpOgorICAg
ICAgICAoSlNDOjpXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGlj
dGlvbik6CisgICAgICAgICogcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5oOiBBZGRlZC4KKwogMjAxOS0xMS0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgZmV3ZXIgdmlydHVhbCByZWdpc3RlcnMgaW4gV2FzbSBM
TEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDA3ZjY4MGFiNi4uMjg2MTkw
YTE5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODI1LDYgKzQ4MjUsMTIg
QEAKIAkJQzRGNEI2RDYxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9wcm90b2NvbF90
eXBlc19pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IGdlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGNEI2RDcxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVy
YXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxl
bWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY0QjZEODFBMDVD
NzZGMDA1Q0FCNzYgLyogb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5p
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0UyN0EzRDYyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0Ez
RDcyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNEODIzNzU5QkFD
MDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjdB
M0RBMjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBF
RDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMDAw
MzkwMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsg
cGF0aCA9IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03Mzg3LDYgKzczOTMsOCBAQAogCQkJCUZFMkE4NzVGMUYwMjM4MTYwMEVC
MzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovLAogCQkJCTE0NzM0MUREMURDMkNF
OTYwMEFBMjlCQSAvKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQx
RDUxREMwMkVCOTAwQUEyOUJBIC8qIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggKi8sCisJCQkJ
Q0UyN0EzRDcyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzRDgyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIw
MDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzAyRTkwOTBF
MTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJF
OTBBMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8sCkBAIC03
NDA0LDYgKzc0MTIsOCBAQAogCQkJCUJDMjY4MEMzMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJD
b25zdHJ1Y3Rvci5oICovLAogCQkJCUY2OTJBODcwMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJP
YmplY3QuY3BwICovLAogCQkJCUY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmpl
Y3QuaCAqLywKKwkJCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50LmNwcCAqLywKKwkJCQlDRTI3QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8sCiAJCQkJQkMyNjgwQzQwRTE2RDRFOTAwQTA2
RTkyIC8qIE51bWJlclByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMyNjgwQzUwRTE2RDRFOTAwQTA2
RTkyIC8qIE51bWJlclByb3RvdHlwZS5oICovLAogCQkJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1
MiAvKiBOdW1lcmljU3RyaW5ncy5oICovLApAQCAtNzYwNyw2ICs3NjE3LDggQEAKIAkJCQk3MDlG
Qjg2NDFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzA5
RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovLAogCQkJCTcw
OUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8sCisJCQkJQ0Uy
N0EzRDYyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcCAqLywKKwkJCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKaW5kZXggNTE5MjFkNzE4NjAuLjNmZjY0OTFmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CkBAIC04ODksNiArODg5LDcgQEAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogcnVudGlt
ZS9NYXRoT2JqZWN0LmNwcAogcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogcnVudGltZS9N
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKK3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcAogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAog
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJs
ZS5jcHAKQEAgLTg5Nyw2ICs4OTgsNyBAQCBydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAK
IHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAKIHJ1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAorcnVudGltZS9OdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuY3BwCiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3Bw
CkBAIC05NzUsNiArOTc3LDcgQEAgcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3Bw
CiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCiBydW50aW1lL1dlYWtTZXRDb25z
dHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvV2lkZW5p
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiAKIC8vIERlcml2ZWQgU291cmNlcwog
Ly8gRklYTUU6IFdlIHNob3VsZCBtb3ZlIHRoaXMgdG8gcnVudGltZSBidXQgaXQga2VwdCBicmVh
a2luZyB0aGUgV2luZG93cyBidWlsZCBpbiB3ZWlyZCB3YXlzLi4uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5h
YmU5NjhkNmJhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK05hcnJvd2luZ051bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudDo6TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkK
KyAgICA6IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRl
ZFR5cGUgTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9u
KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBTcGVj
dWxhdGVkVHlwZSBvcmlnaW5hbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CisKKyAgICBib29sIG9yaWdpbmFsU3BlY3VsYXRpb25Jc0FOdW1iZXIgPSBvcmlnaW5hbCAm
JiBzcGVjdWxhdGlvbkNoZWNrZWQob3JpZ2luYWwsIFNwZWNGdWxsTnVtYmVyKTsKKyAgICBpZiAo
IW9yaWdpbmFsU3BlY3VsYXRpb25Jc0FOdW1iZXIpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsK
KworICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRP
ZlNwZWN1bGF0aW9uOworICAgIGZvciAoYXV0byBudW1iZXJUeXBlIDogbnVtYmVyVHlwZXMoKSkg
eworICAgICAgICBpZiAobnVtYmVyVHlwZSAmIG9yaWdpbmFsKQorICAgICAgICAgICAgbnVtYmVy
VHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLmFwcGVuZChudW1iZXJUeXBlKTsKKyAg
ICB9CisKKyAgICBpZiAobnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLnNp
emUoKSA9PSAxKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlR5cGVzVG9LZWVwID0gMSArIG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc1RoYXRD
b3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICBpZiAobnVtYmVyT2ZUeXBlc1Rv
S2VlcCA9PSBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5lcmF0ZWQg
PSBTcGVjTm9uZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUeXBlc1Rv
S2VlcDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4T2ZUeXBlVG9LZWVwID0gbV9yYW5k
b20uZ2V0VWludDMyKG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5zaXpl
KCkpOworICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVtYmVyVHlwZXNUaGF0
Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uW2luZGV4T2ZUeXBlVG9LZWVwXSk7CisgICAgICAgIG51
bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5yZW1vdmUoaW5kZXhPZlR5cGVU
b0tlZXApOworICAgIH0KKworICAgIGlmIChPcHRpb25zOjpkdW1wUmFuZG9taXppbmdGdXp6ZXJB
Z2VudFByZWRpY3Rpb25zKCkpCisgICAgICAgIGRhdGFMb2dMbigiTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uIG5hbWU6KCIsIGNvZGVCbG9jay0+aW5m
ZXJyZWROYW1lKCksICIjIiwgY29kZUJsb2NrLT5oYXNoQXNTdHJpbmdJZlBvc3NpYmxlKCksICIp
LGJ5dGVjb2RlSW5kZXg6KCIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpLCAiKSxvcmlnaW5h
bDooIiwgU3BlY3VsYXRpb25EdW1wKG9yaWdpbmFsKSwgIiksZ2VuZXJhdGVkOigiLCBTcGVjdWxh
dGlvbkR1bXAoZ2VuZXJhdGVkKSwgIikiKTsKKworICAgIHJldHVybiBvcmlnaW5hbDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OWE2Yjc5Nzc4YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVk07CisKK2NsYXNzIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCBm
aW5hbCA6IHB1YmxpYyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgTmFycm93aW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENv
ZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YTlhODM5MWI3YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudDo6TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJikKKyAgICA6
IG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQoKSkKK3sKK30K
KworVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6Om51
bWJlclR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFNwZWN1bGF0
ZWRUeXBlPj4gc19udW1iZXJUeXBlcyA9IFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4oeworICAgICAg
ICBTcGVjQm9vbEludDMyLAorICAgICAgICBTcGVjTm9uQm9vbEludDMyLAorICAgICAgICBTcGVj
SW50MzJBc0ludDUyLAorICAgICAgICBTcGVjTm9uSW50MzJBc0ludDUyLAorICAgICAgICBTcGVj
QW55SW50QXNEb3VibGUsCisgICAgICAgIFNwZWNOb25JbnRBc0RvdWJsZSwKKyAgICAgICAgU3Bl
Y0RvdWJsZVB1cmVOYU4sCisgICAgICAgIFNwZWNEb3VibGVJbXB1cmVOYU4sCisgICAgfSk7Cisg
ICAgcmV0dXJuIHNfbnVtYmVyVHlwZXM7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlNTdk
ZTc0OGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRnV6emVyQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IDogcHVibGljIEZ1enplckFn
ZW50IHsKKworcHVibGljOgorICAgIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYpOwor
Citwcm90ZWN0ZWQ6CisgICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsKKyAgICBMb2NrIG1fbG9jazsK
KyAgICBzdGF0aWMgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBudW1iZXJUeXBlcygpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCA1MzIwZmMxMjBmMC4uZjNiMTIxZTIxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtMzc1LDYgKzM3NSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHYoVW5zaWduZWQsIHNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQs
IDEsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZHVtcFJhbmRvbWl6aW5nRnV6emVy
QWdlbnRQcmVkaWN0aW9ucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwg
dXNlRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBc
CisgICAgdihCb29sLCB1c2VOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVdpZGVuaW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAg
IHYoQm9vbCwgbG9nUGhhc2VUaW1lcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
RG91YmxlLCByYXJlQmxvY2tQZW5hbHR5LCAwLjAwMSwgTm9ybWFsLCBudWxscHRyKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggM2E2Y2RlODIyNGQuLjg2ODJjMDFjMTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTEsNiArMTExLDcgQEAK
ICNpbmNsdWRlICJNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIgogI2luY2x1ZGUgIk1vZHVsZVBy
b2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIk5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1
ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxl
LmgiCiAjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCkBAIC0xNTEsNiArMTUyLDcg
QEAKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1i
bHlGdW5jdGlvbkhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0ZUxv
Y2suaD4KICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KQEAgLTQ0Niw2ICs0NDgsMTAgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICAgICBzZXRGdXp6
ZXJBZ2VudChtYWtlVW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAg
ZWxzZSBpZiAoT3B0aW9uczo6dXNlRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50KCkpCiAgICAg
ICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50
PigqdGhpcykpOworICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZU5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudCgpKQorICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICBlbHNlIGlm
IChPcHRpb25zOjp1c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQorICAg
ICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENU
b0NvZGVPcmlnaW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1h
cHBpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVu
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWMxZjcyZWViMTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OldpZGVuaW5nTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgV2lkZW5pbmdOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9yaWdpbmFsKQoreworICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKworICAgIGJvb2wgb3JpZ2luYWxTcGVj
dWxhdGlvbklzQU51bWJlciA9IG9yaWdpbmFsICYmIHNwZWN1bGF0aW9uQ2hlY2tlZChvcmlnaW5h
bCwgU3BlY0Z1bGxOdW1iZXIpOworICAgIGlmICghb3JpZ2luYWxTcGVjdWxhdGlvbklzQU51bWJl
cikKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisgICAgaWYgKG9yaWdpbmFsID09IFNwZWNG
dWxsTnVtYmVyKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBWZWN0b3I8U3BlY3Vs
YXRlZFR5cGU+IG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uOworICAgIGZvciAo
YXV0byBudW1iZXJUeXBlIDogbnVtYmVyVHlwZXMoKSkgeworICAgICAgICBpZiAoIShudW1iZXJU
eXBlICYgb3JpZ2luYWwpKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3Bl
Y3VsYXRpb24uYXBwZW5kKG51bWJlclR5cGUpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bWJl
ck9mVHlwZXNUb0FkZCA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc05vdEluY2x1ZGVk
SW5TcGVjdWxhdGlvbi5zaXplKCkpOworICAgIGlmICghbnVtYmVyT2ZUeXBlc1RvQWRkKQorICAg
ICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5lcmF0ZWQgPSBv
cmlnaW5hbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUeXBlc1RvQWRk
OyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXhPZk5ld1R5cGUgPSBtX3JhbmRvbS5nZXRV
aW50MzIobnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICAg
ICAgbWVyZ2VTcGVjdWxhdGlvbihnZW5lcmF0ZWQsIG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNw
ZWN1bGF0aW9uW2luZGV4T2ZOZXdUeXBlXSk7CisgICAgICAgIG51bWJlclR5cGVzTm90SW5jbHVk
ZWRJblNwZWN1bGF0aW9uLnJlbW92ZShpbmRleE9mTmV3VHlwZSk7CisgICAgfQorCisgICAgaWYg
KE9wdGlvbnM6OmR1bXBSYW5kb21pemluZ0Z1enplckFnZW50UHJlZGljdGlvbnMoKSkKKyAgICAg
ICAgZGF0YUxvZ0xuKCJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJl
ZGljdGlvbiBuYW1lOigiLCBjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAiIyIsIGNvZGVCbG9j
ay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4OigiLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgoKSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9uRHVtcChvcmln
aW5hbCksICIpLGdlbmVyYXRlZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVyYXRlZCksICIpIik7
CisKKyAgICByZXR1cm4gZ2VuZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmlu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi43NTlmNWVkYWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgV2lkZW5pbmdO
dW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgZmluYWwgOiBwdWJsaWMgTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgor
ICAgIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVj
dWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBT
cGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383437</attachid>
            <date>2019-11-13 00:09:39 -0800</date>
            <delta_ts>2019-12-02 02:11:39 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_203993_e.patch</filename>
            <type>text/plain</type>
            <size>24286</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1OTlkMjZiMTc0Li5hMzEzOTVmMDEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTEtMTMgIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZ1
enplckFnZW50cyB0aGF0IG5hcnJvdyBhbmQgd2lkZW4gbnVtYmVyIHByZWRpY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIEZ1enpl
ckFnZW50cyBzdWNoIHRoYXQgZm9yIGFueSBwcmVkaWN0aW9ucyB0aGF0IGFyZSBvcmlnaW5hbGx5
IHN1YnNldHMgb2YgU3BlY0Z1bGxOdW1iZXI6CisgICAgICAgIC0gb25lIGFkZHMgbW9yZSBudW1i
ZXIgdHlwZXMgdG8gdGhlIHByZWRpY3Rpb24KKyAgICAgICAgLSB0aGUgb3RoZXIgcmVtb3ZlcyBz
b21lIG9mIHRoZSBudW1iZXIgdHlwZXMgZnJvbSB0aGUgcHJlZGljdGlvbgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorCiAy
MDE5LTExLTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gUHV0IG1vcmUgdGhpbmdzIGluIElzb1N1YnNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDRkMjdkOTgxMDE0Li45Njg1NmI4NzQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQ4MjYsNiArNDgyNiwxMiBAQAogCQlDNEY0QjZENjFBMDVDNzZGMDA1
Q0FCNzYgLyogZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfY3BwX3Byb3RvY29s
X3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NEY0QjZENzFBMDVDNzZGMDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19p
bXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdl
bmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM0RjRCNkQ4MUEwNUM3NkYwMDVDQUI3NiAvKiBvYmpjX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBv
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNFMjdBM0Q1MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNENjIzNzU5QkFDMDA4
OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNENzIzNzU5QkFDMDA4OTYwNUUgLyogTmFy
cm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNFMjdBM0Q4MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFycm93aW5nTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
MjdBM0Q5MjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzREEyMzc1QTZEQzAwODk2MDVFIC8qIE51
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgw
QUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMwMDAzOTAxOUQ4QkU2RjAwMDIzRUIwIC8qIERG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOyBwYXRoID0gZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODksNiArNzM5
NSw4IEBACiAJCQkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1pbmltdW1SZXNlcnZlZFpv
bmVTaXplLmggKi8sCiAJCQkJMTQ3MzQxREQxREMyQ0U5NjAwQUEyOUJBIC8qIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFENTFEQzAyRUI5MDBBQTI5QkEgLyogTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKKwkJCQlDRTI3QTNENzIzNzU5QkFDMDA4OTYwNUUg
LyogTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLywKKwkJCQlDRTI3
QTNEODIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmggKi8sCiAJCQkJQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwICovLAogCQkJCUJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5h
dGl2ZUVycm9yUHJvdG90eXBlLmNwcCAqLywKQEAgLTc0MDYsNiArNzQxNCw4IEBACiAJCQkJQkMy
NjgwQzMwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJRjY5
MkE4NzAwMjU1NTk3RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5jcHAgKi8sCiAJCQkJRjY5MkE4
NzEwMjU1NTk3RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5oICovLAorCQkJCUNFMjdBM0Q5MjM3
NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovLAorCQkJ
CUNFMjdBM0RBMjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aCAqLywKIAkJCQlCQzI2ODBDNDBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmNw
cCAqLywKIAkJCQlCQzI2ODBDNTBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmgg
Ki8sCiAJCQkJMTQyRDM5MzgxMDNFNDU2MDAwN0RDQjUyIC8qIE51bWVyaWNTdHJpbmdzLmggKi8s
CkBAIC03NjA5LDYgKzc2MTksOCBAQAogCQkJCTcwOUZCODY0MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0Q29uc3RydWN0b3IuaCAqLywKIAkJCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyog
V2Vha1NldFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuaCAqLywKKwkJCQlDRTI3QTNENjIzNzU5QkFDMDA4OTYwNUUgLyog
V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovLAorCQkJCUNFMjdBM0Q1
MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5o
ICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywK
IAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oICov
LAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZDdkYTQyYWVkZC4uNmM5
Yjc4MzM4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTg4OSw2ICs4ODksNyBA
QCBydW50aW1lL01hdGhDb21tb24uY3BwCiBydW50aW1lL01hdGhPYmplY3QuY3BwCiBydW50aW1l
L01lbW9yeVN0YXRpc3RpY3MuY3BwCiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNw
cAorcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiBydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcAogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcApAQCAtODk3LDYgKzg5OCw3IEBA
IHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwCiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9OdW1iZXJPYmpl
Y3QuY3BwCitydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmNwcAogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKQEAgLTk3NSw2ICs5NzcsNyBAQCBydW50
aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvV2Vha09iamVjdFJlZlBy
b3RvdHlwZS5jcHAKIHJ1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9XZWFr
U2V0UHJvdG90eXBlLmNwcAorcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHAKIAogLy8gRGVyaXZlZCBTb3VyY2VzCiAvLyBGSVhNRTogV2Ugc2hvdWxkIG1vdmUg
dGhpcyB0byBydW50aW1lIGJ1dCBpdCBrZXB0IGJyZWFraW5nIHRoZSBXaW5kb3dzIGJ1aWxkIGlu
IHdlaXJkIHdheXMuLi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NzQ4NgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFycm93aW5n
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ4YTljNWVjYWEwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpOYXJyb3dpbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQoVk0mIHZtKQorICAgIDogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50KHZtKQoreworfQorCitTcGVjdWxhdGVkVHlwZSBOYXJyb3dpbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9yaWdpbmFsKQorewor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKworICAgIGlmICghKG9yaWdpbmFs
ICYmIHNwZWN1bGF0aW9uQ2hlY2tlZChvcmlnaW5hbCwgU3BlY0J5dGVjb2RlTnVtYmVyKSkpCisg
ICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbnVt
YmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uOworICAgIGZvciAoYXV0byBudW1i
ZXJUeXBlIDogYnl0ZWNvZGVOdW1iZXJUeXBlcygpKSB7CisgICAgICAgIGlmIChudW1iZXJUeXBl
ICYgb3JpZ2luYWwpCisgICAgICAgICAgICBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3Bl
Y3VsYXRpb24uYXBwZW5kKG51bWJlclR5cGUpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bWJl
ck9mVHlwZXNUb0tlZXAgPSBtX3JhbmRvbS5nZXRVaW50MzIobnVtYmVyVHlwZXNUaGF0Q291bGRC
ZVBhcnRPZlNwZWN1bGF0aW9uLnNpemUoKSArIDEpOworICAgIGlmIChudW1iZXJPZlR5cGVzVG9L
ZWVwID09IG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5zaXplKCkpCisg
ICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFNwZWN1bGF0ZWRUeXBlIGdlbmVyYXRlZCA9
IFNwZWNOb25lOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlR5cGVzVG9L
ZWVwOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXhPZlR5cGVUb0tlZXAgPSBtX3JhbmRv
bS5nZXRVaW50MzIobnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLnNpemUo
KSk7CisgICAgICAgIG1lcmdlU3BlY3VsYXRpb24oZ2VuZXJhdGVkLCBudW1iZXJUeXBlc1RoYXRD
b3VsZEJlUGFydE9mU3BlY3VsYXRpb25baW5kZXhPZlR5cGVUb0tlZXBdKTsKKyAgICAgICAgbnVt
YmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLnJlbW92ZShpbmRleE9mVHlwZVRv
S2VlcCk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6OmR1bXBSYW5kb21pemluZ0Z1enplckFn
ZW50UHJlZGljdGlvbnMoKSkKKyAgICAgICAgZGF0YUxvZ0xuKCJOYXJyb3dpbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24gbmFtZTooIiwgY29kZUJsb2NrLT5pbmZl
cnJlZE5hbWUoKSwgIiMiLCBjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSwgIiks
Ynl0ZWNvZGVJbmRleDooIiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCksICIpLG9yaWdpbmFs
OigiLCBTcGVjdWxhdGlvbkR1bXAob3JpZ2luYWwpLCAiKSxnZW5lcmF0ZWQ6KCIsIFNwZWN1bGF0
aW9uRHVtcChnZW5lcmF0ZWQpLCAiKSIpOworCisgICAgcmV0dXJuIGdlbmVyYXRlZDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OWE2Yjc5Nzc4YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVk07CisKK2NsYXNzIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCBm
aW5hbCA6IHB1YmxpYyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgTmFycm93aW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENv
ZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMmQ1NzJlYTA2YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudDo6TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJikKKyAgICA6
IG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnQoKSkKK3sKK30K
KworVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmJ5
dGVjb2RlTnVtYmVyVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
U3BlY3VsYXRlZFR5cGU+PiBzX2J5dGVjb2RlTnVtYmVyVHlwZXMgPSBWZWN0b3I8U3BlY3VsYXRl
ZFR5cGU+KHsKKyAgICAgICAgU3BlY0Jvb2xJbnQzMiwKKyAgICAgICAgU3BlY05vbkJvb2xJbnQz
MiwKKyAgICAgICAgU3BlY05vbkludEFzRG91YmxlLAorICAgICAgICBTcGVjQW55SW50QXNEb3Vi
bGUsCisgICAgICAgIFNwZWNEb3VibGVQdXJlTmFOLAorICAgIH0pOworICAgIHJldHVybiBzX2J5
dGVjb2RlTnVtYmVyVHlwZXM7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFmYzRhM2QwMTU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RnV6emVyQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IDogcHVibGljIEZ1enplckFnZW50IHsK
KworcHVibGljOgorICAgIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYpOworCitwcm90
ZWN0ZWQ6CisgICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsKKyAgICBMb2NrIG1fbG9jazsKKyAgICBz
dGF0aWMgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBieXRlY29kZU51bWJlclR5cGVzKCk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCmluZGV4IGNmMTQ1ZjFlYmY1Li4zMWViMTc1NjZmYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC0zNzYsNiArMzc2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgdihVbnNpZ25lZCwgc2VlZE9mUmFuZG9taXppbmdGdXp6ZXJBZ2Vu
dCwgMSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCBkdW1wUmFuZG9taXppbmdGdXp6
ZXJBZ2VudFByZWRpY3Rpb25zLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29s
LCB1c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKKyAgICB2KEJvb2wsIHVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCwg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlV2lkZW5pbmdOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAg
ICAgdihCb29sLCBsb2dQaGFzZVRpbWVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dihEb3VibGUsIHJhcmVCbG9ja1BlbmFsdHksIDAuMDAxLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiZDFlOWZmNjZhNS4uMTQ4YzFiZWE4
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTExMiw2ICsxMTIsNyBA
QAogI2luY2x1ZGUgIk1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmgiCiAjaW5jbHVkZSAiTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5j
bHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIKQEAgLTE1Miw2ICsxNTMs
NyBAQAogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNpbmNsdWRlICJXZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRl
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgpAQCAtNDQ4LDYgKzQ1MCwxMCBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAgIHNldEZ1
enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKICAg
ICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQoKSkKICAg
ICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdl
bnQ+KCp0aGlzKSk7CisgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNlTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50KCkpCisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAgIGVsc2Ug
aWYgKE9wdGlvbnM6OnVzZVdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KCkpCisg
ICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJhdGVQ
Q1RvQ29kZU9yaWdpbk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2lu
TWFwcGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kNzZmYzZlNzg3NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6V2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQoVk0mIHZtKQorICAgIDogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50KHZtKQoreworfQorCitTcGVjdWxhdGVkVHlwZSBXaWRlbmluZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgU3BlY3VsYXRlZFR5cGUgb3JpZ2luYWwpCit7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworCisgICAgaWYgKCEob3JpZ2luYWwg
JiYgc3BlY3VsYXRpb25DaGVja2VkKG9yaWdpbmFsLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKSkKKyAg
ICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisgICAgaWYgKG9yaWdpbmFsID09IFNwZWNCeXRlY29k
ZU51bWJlcikKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisgICAgVmVjdG9yPFNwZWN1bGF0
ZWRUeXBlPiBudW1iZXJUeXBlc05vdEluY2x1ZGVkSW5TcGVjdWxhdGlvbjsKKyAgICBmb3IgKGF1
dG8gbnVtYmVyVHlwZSA6IGJ5dGVjb2RlTnVtYmVyVHlwZXMoKSkgeworICAgICAgICBpZiAoIShu
dW1iZXJUeXBlICYgb3JpZ2luYWwpKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNOb3RJbmNsdWRl
ZEluU3BlY3VsYXRpb24uYXBwZW5kKG51bWJlclR5cGUpOworICAgIH0KKworICAgIHVuc2lnbmVk
IG51bWJlck9mVHlwZXNUb0FkZCA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc05vdElu
Y2x1ZGVkSW5TcGVjdWxhdGlvbi5zaXplKCkgKyAxKTsKKyAgICBpZiAoIW51bWJlck9mVHlwZXNU
b0FkZCkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisgICAgU3BlY3VsYXRlZFR5cGUgZ2Vu
ZXJhdGVkID0gb3JpZ2luYWw7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
VHlwZXNUb0FkZDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4T2ZOZXdUeXBlID0gbV9y
YW5kb20uZ2V0VWludDMyKG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uLnNpemUo
KSk7CisgICAgICAgIG1lcmdlU3BlY3VsYXRpb24oZ2VuZXJhdGVkLCBudW1iZXJUeXBlc05vdElu
Y2x1ZGVkSW5TcGVjdWxhdGlvbltpbmRleE9mTmV3VHlwZV0pOworICAgICAgICBudW1iZXJUeXBl
c05vdEluY2x1ZGVkSW5TcGVjdWxhdGlvbi5yZW1vdmUoaW5kZXhPZk5ld1R5cGUpOworICAgIH0K
KworICAgIGlmIChPcHRpb25zOjpkdW1wUmFuZG9taXppbmdGdXp6ZXJBZ2VudFByZWRpY3Rpb25z
KCkpCisgICAgICAgIGRhdGFMb2dMbigiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQ6OmdldFByZWRpY3Rpb24gbmFtZTooIiwgY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKSwgIiMi
LCBjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSwgIiksYnl0ZWNvZGVJbmRleDoo
IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCksICIpLG9yaWdpbmFsOigiLCBTcGVjdWxhdGlv
bkR1bXAob3JpZ2luYWwpLCAiKSxnZW5lcmF0ZWQ6KCIsIFNwZWN1bGF0aW9uRHVtcChnZW5lcmF0
ZWQpLCAiKSIpOworCisgICAgcmV0dXJuIGdlbmVyYXRlZDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzU5ZjVlZGFmOTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk51bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisKK2NsYXNz
IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IGZpbmFsIDogcHVibGljIE51bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisK
K3B1YmxpYzoKKyAgICBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYpOwor
CisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0UHJlZGljdGlvbihDb2RlQmxvY2sqLCBjb25zdCBDb2Rl
T3JpZ2luJiwgU3BlY3VsYXRlZFR5cGUpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384604</attachid>
            <date>2019-12-02 02:11:39 -0800</date>
            <delta_ts>2019-12-02 02:13:57 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_203993_f.patch</filename>
            <type>text/plain</type>
            <size>24453</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI4ZTA3YzE1YjUyLi4xOTA0Yjg4OTVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTItMDIgIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZ1
enplckFnZW50cyB0aGF0IG5hcnJvdyBhbmQgd2lkZW4gbnVtYmVyIHByZWRpY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIEZ1enpl
ckFnZW50cyBzdWNoIHRoYXQgZm9yIGFueSBwcmVkaWN0aW9ucyB0aGF0IGFyZSBvcmlnaW5hbGx5
IHN1YnNldHMgb2YgU3BlY0Z1bGxOdW1iZXI6CisgICAgICAgIC0gb25lIGFkZHMgbW9yZSBudW1i
ZXIgdHlwZXMgdG8gdGhlIHByZWRpY3Rpb24KKyAgICAgICAgLSB0aGUgb3RoZXIgcmVtb3ZlcyBz
b21lIG9mIHRoZSBudW1iZXIgdHlwZXMgZnJvbSB0aGUgcHJlZGljdGlvbgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorCiAy
MDE5LTEyLTAxICBUdW9tYXMgS2Fya2thaW5lbiAgPHR1b21hcy53ZWJraXRAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBGdXp6ZXJBZ2VudCB0aGF0IHJlYWRzIHByZWRpY3Rpb25zIGZyb20gYSBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5ZTc5YThlZDI4Li5lZmFlNGMx
NThmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4MzMsNiArNDgzMywxMiBA
QAogCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJl
ZGljdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzUyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclBy
ZWRpY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDUyMzc1OUJBQzAwODk2MDVFIC8q
IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFMjdBM0Q2MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWRlbmluZ051bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
MjdBM0Q3MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDgyMzc1
OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDkyMzc1QTZEQzAwODk2MDVFIC8qIE51
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTI3QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZl
cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252
ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEw
QzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
QzAwMDM5MDE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
Lmg7IHBhdGggPSBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzQwMyw2ICs3NDA5LDggQEAKIAkJCQlGRTJBODc1RjFGMDIzODE2
MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCAqLywKIAkJCQkxNDczNDFERDFE
QzJDRTk2MDBBQTI5QkEgLyogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0
NzM0MUQ1MURDMDJFQjkwMEFBMjlCQSAvKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oICovLAor
CQkJCUNFMjdBM0Q3MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuY3BwICovLAorCQkJCUNFMjdBM0Q4MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLywKIAkJCQlCQzAyRTkwODBFMTgz
OURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5
MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLywKIAkJCQlC
QzAyRTkwQTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwICovLApA
QCAtNzQyMCw2ICs3NDI4LDggQEAKIAkJCQlCQzI2ODBDMzBFMTZENEU5MDBBMDZFOTIgLyogTnVt
YmVyQ29uc3RydWN0b3IuaCAqLywKIAkJCQlGNjkyQTg3MDAyNTU1OTdEMDFGRjYwRjcgLyogTnVt
YmVyT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg3MTAyNTU1OTdEMDFGRjYwRjcgLyogTnVtYmVy
T2JqZWN0LmggKi8sCisJCQkJQ0UyN0EzRDkyMzc1QTZEQzAwODk2MDVFIC8qIE51bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzREEyMzc1QTZEQzAwODk2MDVFIC8q
IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICovLAogCQkJCUJDMjY4MEM0MEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwICovLAogCQkJCUJDMjY4MEM1MEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuaCAqLywKIAkJCQkxNDJEMzkzODEwM0U0NTYwMDA3
RENCNTIgLyogTnVtZXJpY1N0cmluZ3MuaCAqLywKQEAgLTc2MjQsNiArNzYzNCw4IEBACiAJCQkJ
NzA5RkI4NjQxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5oICovLAogCQkJ
CTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovLAorCQkJ
CUNFMjdBM0Q2MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzRDUyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5n
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAw
OTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMw
MSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDhkNzA2Yzk1MjFjLi5mNjM1YmIxMzc2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dApAQCAtODkxLDYgKzg5MSw3IEBAIHJ1bnRpbWUvTWF0aENvbW1vbi5jcHAKIHJ1
bnRpbWUvTWF0aE9iamVjdC5jcHAKIHJ1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKIHJ1bnRp
bWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCitydW50aW1lL05hcnJvd2luZ051bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCiBydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuY3BwCkBAIC04OTksNiArOTAwLDcgQEAgcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24u
Y3BwCiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwCiBydW50aW1lL051bWJlck9iamVjdC5jcHAKK3J1bnRpbWUvTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcAogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
LmNwcApAQCAtOTc4LDYgKzk4MCw3IEBAIHJ1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9y
LmNwcAogcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcAogcnVudGltZS9XZWFrU2V0
Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCitydW50aW1lL1dp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcAogCiAvLyBEZXJpdmVkIFNvdXJj
ZXMKIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSB0aGlzIHRvIHJ1bnRpbWUgYnV0IGl0IGtlcHQg
YnJlYWtpbmcgdGhlIFdpbmRvd3MgYnVpbGQgaW4gd2VpcmQgd2F5cy4uLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzNiOGYwZDg4YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitOYXJyb3dpbmdOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQ6Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYg
dm0pCisgICAgOiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQodm0pCit7Cit9CisKK1NwZWN1
bGF0ZWRUeXBlIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGlj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwg
U3BlY3VsYXRlZFR5cGUgb3JpZ2luYWwpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworCisgICAgaWYgKCEob3JpZ2luYWwgJiYgc3BlY3VsYXRpb25DaGVja2VkKG9yaWdp
bmFsLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisg
ICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3Bl
Y3VsYXRpb247CisgICAgZm9yIChhdXRvIG51bWJlclR5cGUgOiBieXRlY29kZU51bWJlclR5cGVz
KCkpIHsKKyAgICAgICAgaWYgKG51bWJlclR5cGUgJiBvcmlnaW5hbCkKKyAgICAgICAgICAgIG51
bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5hcHBlbmQobnVtYmVyVHlwZSk7
CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtYmVyT2ZUeXBlc1RvS2VlcCA9IG1fcmFuZG9tLmdl
dFVpbnQzMihudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpICsg
MSk7CisgICAgaWYgKG51bWJlck9mVHlwZXNUb0tlZXAgPT0gbnVtYmVyVHlwZXNUaGF0Q291bGRC
ZVBhcnRPZlNwZWN1bGF0aW9uLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisg
ICAgU3BlY3VsYXRlZFR5cGUgZ2VuZXJhdGVkID0gU3BlY05vbmU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mVHlwZXNUb0tlZXA7IGkrKykgeworICAgICAgICB1bnNpZ25l
ZCBpbmRleE9mVHlwZVRvS2VlcCA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc1RoYXRD
b3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICAgICAgbWVyZ2VTcGVjdWxhdGlv
bihnZW5lcmF0ZWQsIG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbltpbmRl
eE9mVHlwZVRvS2VlcF0pOworICAgICAgICBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3Bl
Y3VsYXRpb24ucmVtb3ZlKGluZGV4T2ZUeXBlVG9LZWVwKTsKKyAgICB9CisKKyAgICBpZiAoT3B0
aW9uczo6ZHVtcEZ1enplckFnZW50UHJlZGljdGlvbnMoKSkKKyAgICAgICAgZGF0YUxvZ0xuKCJO
YXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24gbmFtZToo
IiwgY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKSwgIiMiLCBjb2RlQmxvY2stPmhhc2hBc1N0cmlu
Z0lmUG9zc2libGUoKSwgIiksYnl0ZWNvZGVJbmRleDooIiwgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KCksICIpLG9yaWdpbmFsOigiLCBTcGVjdWxhdGlvbkR1bXAob3JpZ2luYWwpLCAiKSxnZW5l
cmF0ZWQ6KCIsIFNwZWN1bGF0aW9uRHVtcChnZW5lcmF0ZWQpLCAiKSIpOworCisgICAgcmV0dXJu
IGdlbmVyYXRlZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43OWE2Yjc5Nzc4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisKK2NsYXNzIE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgTmFycm93
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlw
ZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVk
VHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMmQ1NzJl
YTA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6TnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50KFZNJikKKyAgICA6IG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlJhbmRvbWl6aW5nRnV6
emVyQWdlbnQoKSkKK3sKK30KKworVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQ6OmJ5dGVjb2RlTnVtYmVyVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8U3BlY3VsYXRlZFR5cGU+PiBzX2J5dGVjb2RlTnVtYmVyVHlwZXMg
PSBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+KHsKKyAgICAgICAgU3BlY0Jvb2xJbnQzMiwKKyAgICAg
ICAgU3BlY05vbkJvb2xJbnQzMiwKKyAgICAgICAgU3BlY05vbkludEFzRG91YmxlLAorICAgICAg
ICBTcGVjQW55SW50QXNEb3VibGUsCisgICAgICAgIFNwZWNEb3VibGVQdXJlTmFOLAorICAgIH0p
OworICAgIHJldHVybiBzX2J5dGVjb2RlTnVtYmVyVHlwZXM7Cit9Cit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjFmYzRhM2QwMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRnV6emVyQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IDogcHVi
bGljIEZ1enplckFnZW50IHsKKworcHVibGljOgorICAgIE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudChWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsKKyAgICBM
b2NrIG1fbG9jazsKKyAgICBzdGF0aWMgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBieXRlY29kZU51
bWJlclR5cGVzKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDAzZjI4NTI0NGRiLi43NjRmNmNlMDcy
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00
MDAsNiArNDAwLDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJB
Z2VudCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgcmVxdWlyZVByZWRp
Y3Rpb25Gb3JGaWxlQmFzZWRGdXp6ZXJBZ2VudCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoT3B0aW9uU3RyaW5nLCBmdXp6ZXJQcmVkaWN0aW9uc0ZpbGUsIG51bGxwdHIsIE5vcm1h
bCwgImZpbGUgd2l0aCBsaXN0IG9mIHByZWRpY3Rpb25zIGZvciBGaWxlQmFzZWRGdXp6ZXJBZ2Vu
dCIpIFwKKyAgICB2KEJvb2wsIHVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlV2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBc
CiAgICAgdihCb29sLCBsb2dQaGFzZVRpbWVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihEb3VibGUsIHJhcmVCbG9ja1BlbmFsdHksIDAuMDAxLCBOb3JtYWwsIG51bGxwdHIpIFwK
QEAgLTU3MSw3ICs1NzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbml0KGNvbnN0IGNoYXIqKTsK
ICAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7CiAgICAgY29uc3QgY2hhciogcmFuZ2VTdHJp
bmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5n
IDogc19udWxsUmFuZ2VTdHI7IH0KLSAgICAKKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCAyMTZiZjkxMDIzYi4uNmMxMmRkMDJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTExMiw2ICsxMTIsNyBAQAogI2luY2x1ZGUgIk1pbmltdW1SZXNlcnZlZFpv
bmVTaXplLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUg
Ik1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuaCIKQEAgLTE1Myw2ICsxNTQsNyBAQAogI2luY2x1ZGUgIldlYWtHQ01hcElubGlu
ZXMuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3
dGYvUmVhZFdyaXRlTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgpAQCAtNDY5
LDYgKzQ3MSwxMCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8RmlsZUJhc2VkRnV6emVyQWdlbnQ+KCp0
aGlzKSk7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJB
Z2VudCgpKQogICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlTmFycm93
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KCkpCisgICAgICAgIHNldEZ1enplckFnZW50
KG1ha2VVbmlxdWU8TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykp
OworICAgIGlmIChPcHRpb25zOjp1c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dCgpKQorICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dl
bmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29k
ZU9yaWdpbk1hcHBpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzIyMTJkNDE0ZTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OldpZGVu
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgV2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9yaWdpbmFs
KQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKworICAgIGlmICghKG9y
aWdpbmFsICYmIHNwZWN1bGF0aW9uQ2hlY2tlZChvcmlnaW5hbCwgU3BlY0J5dGVjb2RlTnVtYmVy
KSkpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIGlmIChvcmlnaW5hbCA9PSBTcGVj
Qnl0ZWNvZGVOdW1iZXIpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFZlY3RvcjxT
cGVjdWxhdGVkVHlwZT4gbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb247CisgICAg
Zm9yIChhdXRvIG51bWJlclR5cGUgOiBieXRlY29kZU51bWJlclR5cGVzKCkpIHsKKyAgICAgICAg
aWYgKCEobnVtYmVyVHlwZSAmIG9yaWdpbmFsKSkKKyAgICAgICAgICAgIG51bWJlclR5cGVzTm90
SW5jbHVkZWRJblNwZWN1bGF0aW9uLmFwcGVuZChudW1iZXJUeXBlKTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBudW1iZXJPZlR5cGVzVG9BZGQgPSBtX3JhbmRvbS5nZXRVaW50MzIobnVtYmVyVHlw
ZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24uc2l6ZSgpICsgMSk7CisgICAgaWYgKCFudW1iZXJP
ZlR5cGVzVG9BZGQpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFNwZWN1bGF0ZWRU
eXBlIGdlbmVyYXRlZCA9IG9yaWdpbmFsOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZlR5cGVzVG9BZGQ7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBpbmRleE9mTmV3VHlw
ZSA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc05vdEluY2x1ZGVkSW5TcGVjdWxhdGlv
bi5zaXplKCkpOworICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVtYmVyVHlw
ZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb25baW5kZXhPZk5ld1R5cGVdKTsKKyAgICAgICAgbnVt
YmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24ucmVtb3ZlKGluZGV4T2ZOZXdUeXBlKTsK
KyAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcEZ1enplckFnZW50UHJlZGljdGlvbnMoKSkK
KyAgICAgICAgZGF0YUxvZ0xuKCJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6
Z2V0UHJlZGljdGlvbiBuYW1lOigiLCBjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAiIyIsIGNv
ZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4OigiLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9uRHVt
cChvcmlnaW5hbCksICIpLGdlbmVyYXRlZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVyYXRlZCks
ICIpIik7CisKKyAgICByZXR1cm4gZ2VuZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi43NTlmNWVkYWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgZmluYWwgOiBwdWJsaWMgTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVi
bGljOgorICAgIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAg
ICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmln
aW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384605</attachid>
            <date>2019-12-02 02:13:57 -0800</date>
            <delta_ts>2019-12-02 22:58:40 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_203993_g.patch</filename>
            <type>text/plain</type>
            <size>24201</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI4ZTA3YzE1YjUyLi4xOTA0Yjg4OTVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTItMDIgIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZ1
enplckFnZW50cyB0aGF0IG5hcnJvdyBhbmQgd2lkZW4gbnVtYmVyIHByZWRpY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIEZ1enpl
ckFnZW50cyBzdWNoIHRoYXQgZm9yIGFueSBwcmVkaWN0aW9ucyB0aGF0IGFyZSBvcmlnaW5hbGx5
IHN1YnNldHMgb2YgU3BlY0Z1bGxOdW1iZXI6CisgICAgICAgIC0gb25lIGFkZHMgbW9yZSBudW1i
ZXIgdHlwZXMgdG8gdGhlIHByZWRpY3Rpb24KKyAgICAgICAgLSB0aGUgb3RoZXIgcmVtb3ZlcyBz
b21lIG9mIHRoZSBudW1iZXIgdHlwZXMgZnJvbSB0aGUgcHJlZGljdGlvbgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorCiAy
MDE5LTEyLTAxICBUdW9tYXMgS2Fya2thaW5lbiAgPHR1b21hcy53ZWJraXRAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBGdXp6ZXJBZ2VudCB0aGF0IHJlYWRzIHByZWRpY3Rpb25zIGZyb20gYSBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5ZTc5YThlZDI4Li5lZmFlNGMx
NThmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4MzMsNiArNDgzMywxMiBA
QAogCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJl
ZGljdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzUyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclBy
ZWRpY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDUyMzc1OUJBQzAwODk2MDVFIC8q
IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFMjdBM0Q2MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWRlbmluZ051bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
MjdBM0Q3MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDgyMzc1
OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDkyMzc1QTZEQzAwODk2MDVFIC8qIE51
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTI3QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZl
cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252
ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEw
QzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
QzAwMDM5MDE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
Lmg7IHBhdGggPSBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzQwMyw2ICs3NDA5LDggQEAKIAkJCQlGRTJBODc1RjFGMDIzODE2
MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCAqLywKIAkJCQkxNDczNDFERDFE
QzJDRTk2MDBBQTI5QkEgLyogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0
NzM0MUQ1MURDMDJFQjkwMEFBMjlCQSAvKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oICovLAor
CQkJCUNFMjdBM0Q3MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuY3BwICovLAorCQkJCUNFMjdBM0Q4MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLywKIAkJCQlCQzAyRTkwODBFMTgz
OURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5
MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLywKIAkJCQlC
QzAyRTkwQTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwICovLApA
QCAtNzQyMCw2ICs3NDI4LDggQEAKIAkJCQlCQzI2ODBDMzBFMTZENEU5MDBBMDZFOTIgLyogTnVt
YmVyQ29uc3RydWN0b3IuaCAqLywKIAkJCQlGNjkyQTg3MDAyNTU1OTdEMDFGRjYwRjcgLyogTnVt
YmVyT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg3MTAyNTU1OTdEMDFGRjYwRjcgLyogTnVtYmVy
T2JqZWN0LmggKi8sCisJCQkJQ0UyN0EzRDkyMzc1QTZEQzAwODk2MDVFIC8qIE51bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzREEyMzc1QTZEQzAwODk2MDVFIC8q
IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICovLAogCQkJCUJDMjY4MEM0MEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwICovLAogCQkJCUJDMjY4MEM1MEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuaCAqLywKIAkJCQkxNDJEMzkzODEwM0U0NTYwMDA3
RENCNTIgLyogTnVtZXJpY1N0cmluZ3MuaCAqLywKQEAgLTc2MjQsNiArNzYzNCw4IEBACiAJCQkJ
NzA5RkI4NjQxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5oICovLAogCQkJ
CTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovLAorCQkJ
CUNFMjdBM0Q2MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzRDUyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5n
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAw
OTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMw
MSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDhkNzA2Yzk1MjFjLi5mNjM1YmIxMzc2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dApAQCAtODkxLDYgKzg5MSw3IEBAIHJ1bnRpbWUvTWF0aENvbW1vbi5jcHAKIHJ1
bnRpbWUvTWF0aE9iamVjdC5jcHAKIHJ1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKIHJ1bnRp
bWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCitydW50aW1lL05hcnJvd2luZ051bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCiBydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuY3BwCkBAIC04OTksNiArOTAwLDcgQEAgcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24u
Y3BwCiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwCiBydW50aW1lL051bWJlck9iamVjdC5jcHAKK3J1bnRpbWUvTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcAogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
LmNwcApAQCAtOTc4LDYgKzk4MCw3IEBAIHJ1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9y
LmNwcAogcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcAogcnVudGltZS9XZWFrU2V0
Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCitydW50aW1lL1dp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcAogCiAvLyBEZXJpdmVkIFNvdXJj
ZXMKIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSB0aGlzIHRvIHJ1bnRpbWUgYnV0IGl0IGtlcHQg
YnJlYWtpbmcgdGhlIFdpbmRvd3MgYnVpbGQgaW4gd2VpcmQgd2F5cy4uLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzNiOGYwZDg4YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitOYXJyb3dpbmdOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQ6Ok5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYg
dm0pCisgICAgOiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQodm0pCit7Cit9CisKK1NwZWN1
bGF0ZWRUeXBlIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGlj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwg
U3BlY3VsYXRlZFR5cGUgb3JpZ2luYWwpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworCisgICAgaWYgKCEob3JpZ2luYWwgJiYgc3BlY3VsYXRpb25DaGVja2VkKG9yaWdp
bmFsLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisg
ICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3Bl
Y3VsYXRpb247CisgICAgZm9yIChhdXRvIG51bWJlclR5cGUgOiBieXRlY29kZU51bWJlclR5cGVz
KCkpIHsKKyAgICAgICAgaWYgKG51bWJlclR5cGUgJiBvcmlnaW5hbCkKKyAgICAgICAgICAgIG51
bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5hcHBlbmQobnVtYmVyVHlwZSk7
CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtYmVyT2ZUeXBlc1RvS2VlcCA9IG1fcmFuZG9tLmdl
dFVpbnQzMihudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpICsg
MSk7CisgICAgaWYgKG51bWJlck9mVHlwZXNUb0tlZXAgPT0gbnVtYmVyVHlwZXNUaGF0Q291bGRC
ZVBhcnRPZlNwZWN1bGF0aW9uLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOworCisg
ICAgU3BlY3VsYXRlZFR5cGUgZ2VuZXJhdGVkID0gU3BlY05vbmU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mVHlwZXNUb0tlZXA7IGkrKykgeworICAgICAgICB1bnNpZ25l
ZCBpbmRleE9mVHlwZVRvS2VlcCA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc1RoYXRD
b3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICAgICAgbWVyZ2VTcGVjdWxhdGlv
bihnZW5lcmF0ZWQsIG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbltpbmRl
eE9mVHlwZVRvS2VlcF0pOworICAgICAgICBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3Bl
Y3VsYXRpb24ucmVtb3ZlKGluZGV4T2ZUeXBlVG9LZWVwKTsKKyAgICB9CisKKyAgICBpZiAoT3B0
aW9uczo6ZHVtcEZ1enplckFnZW50UHJlZGljdGlvbnMoKSkKKyAgICAgICAgZGF0YUxvZ0xuKCJO
YXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24gbmFtZToo
IiwgY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKSwgIiMiLCBjb2RlQmxvY2stPmhhc2hBc1N0cmlu
Z0lmUG9zc2libGUoKSwgIiksYnl0ZWNvZGVJbmRleDooIiwgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KCksICIpLG9yaWdpbmFsOigiLCBTcGVjdWxhdGlvbkR1bXAob3JpZ2luYWwpLCAiKSxnZW5l
cmF0ZWQ6KCIsIFNwZWN1bGF0aW9uRHVtcChnZW5lcmF0ZWQpLCAiKSIpOworCisgICAgcmV0dXJu
IGdlbmVyYXRlZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43OWE2Yjc5Nzc4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisKK2NsYXNzIE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgTmFycm93
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlw
ZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVk
VHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMmQ1NzJl
YTA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6TnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50KFZNJikKKyAgICA6IG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlJhbmRvbWl6aW5nRnV6
emVyQWdlbnQoKSkKK3sKK30KKworVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQ6OmJ5dGVjb2RlTnVtYmVyVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8U3BlY3VsYXRlZFR5cGU+PiBzX2J5dGVjb2RlTnVtYmVyVHlwZXMg
PSBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+KHsKKyAgICAgICAgU3BlY0Jvb2xJbnQzMiwKKyAgICAg
ICAgU3BlY05vbkJvb2xJbnQzMiwKKyAgICAgICAgU3BlY05vbkludEFzRG91YmxlLAorICAgICAg
ICBTcGVjQW55SW50QXNEb3VibGUsCisgICAgICAgIFNwZWNEb3VibGVQdXJlTmFOLAorICAgIH0p
OworICAgIHJldHVybiBzX2J5dGVjb2RlTnVtYmVyVHlwZXM7Cit9Cit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjFmYzRhM2QwMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRnV6emVyQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IDogcHVi
bGljIEZ1enplckFnZW50IHsKKworcHVibGljOgorICAgIE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudChWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsKKyAgICBM
b2NrIG1fbG9jazsKKyAgICBzdGF0aWMgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBieXRlY29kZU51
bWJlclR5cGVzKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDAzZjI4NTI0NGRiLi4wOWM4M2EzMWU4
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00
MDAsNiArNDAwLDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJB
Z2VudCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgcmVxdWlyZVByZWRp
Y3Rpb25Gb3JGaWxlQmFzZWRGdXp6ZXJBZ2VudCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoT3B0aW9uU3RyaW5nLCBmdXp6ZXJQcmVkaWN0aW9uc0ZpbGUsIG51bGxwdHIsIE5vcm1h
bCwgImZpbGUgd2l0aCBsaXN0IG9mIHByZWRpY3Rpb25zIGZvciBGaWxlQmFzZWRGdXp6ZXJBZ2Vu
dCIpIFwKKyAgICB2KEJvb2wsIHVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlV2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBc
CiAgICAgdihCb29sLCBsb2dQaGFzZVRpbWVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihEb3VibGUsIHJhcmVCbG9ja1BlbmFsdHksIDAuMDAxLCBOb3JtYWwsIG51bGxwdHIpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyMTZiZjkxMDIzYi4uNmMxMmRk
MDJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTExMiw2ICsxMTIs
NyBAQAogI2luY2x1ZGUgIk1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmgiCiAjaW5jbHVkZSAiTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAj
aW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1
dGFibGUuaCIKICNpbmNsdWRlICJOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIKQEAgLTE1Myw2ICsx
NTQsNyBAQAogI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNsdWRlICJXZWJBc3Nl
bWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRlTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgpAQCAtNDY5LDYgKzQ3MSwxMCBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAgIHNldEZ1enplckFnZW50KG1h
a2VVbmlxdWU8RmlsZUJhc2VkRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgaWYgKE9wdGlvbnM6
OnVzZVByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudCgpKQogICAgICAgICBzZXRGdXp6
ZXJBZ2VudChtYWtlVW5pcXVlPFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudD4oKnRo
aXMpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50KCkpCisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8TmFycm93aW5nTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAgIGlmIChPcHRpb25zOjp1c2VX
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQorICAgICAgICBzZXRGdXp6ZXJB
Z2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhp
cykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAo
KSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVu
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMzIyMTJkNDE0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXaWRlbmluZ051bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworV2lkZW5pbmdO
dW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sK
K30KKworU3BlY3VsYXRlZFR5cGUgV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6
OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9yaWdpbmFsKQoreworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKKworICAgIGlmICghKG9yaWdpbmFsICYmIHNwZWN1bGF0aW9uQ2hl
Y2tlZChvcmlnaW5hbCwgU3BlY0J5dGVjb2RlTnVtYmVyKSkpCisgICAgICAgIHJldHVybiBvcmln
aW5hbDsKKworICAgIGlmIChvcmlnaW5hbCA9PSBTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgICAg
IHJldHVybiBvcmlnaW5hbDsKKworICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbnVtYmVyVHlw
ZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb247CisgICAgZm9yIChhdXRvIG51bWJlclR5cGUgOiBi
eXRlY29kZU51bWJlclR5cGVzKCkpIHsKKyAgICAgICAgaWYgKCEobnVtYmVyVHlwZSAmIG9yaWdp
bmFsKSkKKyAgICAgICAgICAgIG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uLmFw
cGVuZChudW1iZXJUeXBlKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZlR5cGVzVG9B
ZGQgPSBtX3JhbmRvbS5nZXRVaW50MzIobnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRp
b24uc2l6ZSgpICsgMSk7CisgICAgaWYgKCFudW1iZXJPZlR5cGVzVG9BZGQpCisgICAgICAgIHJl
dHVybiBvcmlnaW5hbDsKKworICAgIFNwZWN1bGF0ZWRUeXBlIGdlbmVyYXRlZCA9IG9yaWdpbmFs
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlR5cGVzVG9BZGQ7IGkrKykg
eworICAgICAgICB1bnNpZ25lZCBpbmRleE9mTmV3VHlwZSA9IG1fcmFuZG9tLmdldFVpbnQzMihu
dW1iZXJUeXBlc05vdEluY2x1ZGVkSW5TcGVjdWxhdGlvbi5zaXplKCkpOworICAgICAgICBtZXJn
ZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRp
b25baW5kZXhPZk5ld1R5cGVdKTsKKyAgICAgICAgbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3Bl
Y3VsYXRpb24ucmVtb3ZlKGluZGV4T2ZOZXdUeXBlKTsKKyAgICB9CisKKyAgICBpZiAoT3B0aW9u
czo6ZHVtcEZ1enplckFnZW50UHJlZGljdGlvbnMoKSkKKyAgICAgICAgZGF0YUxvZ0xuKCJXaWRl
bmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbiBuYW1lOigiLCBj
b2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAiIyIsIGNvZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQ
b3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4OigiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9uRHVtcChvcmlnaW5hbCksICIpLGdlbmVyYXRl
ZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVyYXRlZCksICIpIik7CisKKyAgICByZXR1cm4gZ2Vu
ZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTlm
NWVkYWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6
emVyQWdlbnQgZmluYWwgOiBwdWJsaWMgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIFdpZGVuaW5nTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVk
aWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3Zl
cnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384692</attachid>
            <date>2019-12-02 22:58:40 -0800</date>
            <delta_ts>2019-12-08 23:41:49 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_203993_h.patch</filename>
            <type>text/plain</type>
            <size>24178</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI2NWUzNDBjYzg5Li42MzlhZGMxNDA4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTItMDIgIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZ1
enplckFnZW50cyB0aGF0IG5hcnJvdyBhbmQgd2lkZW4gbnVtYmVyIHByZWRpY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIEZ1enpl
ckFnZW50cyBzdWNoIHRoYXQgZm9yIGFueSBwcmVkaWN0aW9ucyB0aGF0IGFyZSBvcmlnaW5hbGx5
IHN1YnNldHMgb2YgU3BlY0Z1bGxOdW1iZXI6CisgICAgICAgIC0gb25lIGFkZHMgbW9yZSBudW1i
ZXIgdHlwZXMgdG8gdGhlIHByZWRpY3Rpb24KKyAgICAgICAgLSB0aGUgb3RoZXIgcmVtb3ZlcyBz
b21lIG9mIHRoZSBudW1iZXIgdHlwZXMgZnJvbSB0aGUgcHJlZGljdGlvbgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorCiAy
MDE5LTEyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gUHV0IHNvbWUgZGVzdHJ1Y3RpYmxlIG9iamVjdHMgdG8gSXNvU3Vic3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDllNzlhOGVkMjguLmVmYWU0YzE1OGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDgzMyw2ICs0ODMzLDEyIEBACiAJCUNFQ0ZB
RDMzMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGdXp6ZXJQcmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdO
dW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0UyN0EzRDYyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDcyMzc1
OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYw
NUUgLyogTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjdBM0RBMjM3
NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYg
LyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMDAwMzkwMTlE
OEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgcGF0aCA9
IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03NDAzLDYgKzc0MDksOCBAQAogCQkJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAv
KiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovLAogCQkJCTE0NzM0MUREMURDMkNFOTYwMEFB
MjlCQSAvKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDUxREMw
MkVCOTAwQUEyOUJBIC8qIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggKi8sCisJCQkJQ0UyN0Ez
RDcyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dC5jcHAgKi8sCisJCQkJQ0UyN0EzRDgyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIwMDBGOTI5
NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzAyRTkwOTBFMTgzOURC
MDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUx
ODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8sCkBAIC03NDIwLDYg
Kzc0MjgsOCBAQAogCQkJCUJDMjY4MEMzMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1
Y3Rvci5oICovLAogCQkJCUY2OTJBODcwMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3Qu
Y3BwICovLAogCQkJCUY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAq
LywKKwkJCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50LmNwcCAqLywKKwkJCQlDRTI3QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmggKi8sCiAJCQkJQkMyNjgwQzQwRTE2RDRFOTAwQTA2RTkyIC8q
IE51bWJlclByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMyNjgwQzUwRTE2RDRFOTAwQTA2RTkyIC8q
IE51bWJlclByb3RvdHlwZS5oICovLAogCQkJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBO
dW1lcmljU3RyaW5ncy5oICovLApAQCAtNzYyNCw2ICs3NjM0LDggQEAKIAkJCQk3MDlGQjg2NDFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzA5RkI4NjUx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovLAogCQkJCTcwOUZCODY2
MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8sCisJCQkJQ0UyN0EzRDYy
Mzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNw
cCAqLywKKwkJCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyog
V3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRl
QmFycmllcklubGluZXMuaCAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggOGQ3MDZjOTUyMWMuLmY2MzViYjEzNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CkBAIC04OTEsNiArODkxLDcgQEAgcnVudGltZS9NYXRoQ29tbW9uLmNwcAogcnVudGltZS9NYXRo
T2JqZWN0LmNwcAogcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5jcHAKK3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcAogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAogcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAK
QEAgLTg5OSw2ICs5MDAsNyBAQCBydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAorcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwCiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC05
NzgsNiArOTgwLDcgQEAgcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCiBydW50
aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rv
ci5jcHAKIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvV2lkZW5pbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiAKIC8vIERlcml2ZWQgU291cmNlcwogLy8gRklY
TUU6IFdlIHNob3VsZCBtb3ZlIHRoaXMgdG8gcnVudGltZSBidXQgaXQga2VwdCBicmVha2luZyB0
aGUgV2luZG93cyBidWlsZCBpbiB3ZWlyZCB3YXlzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzc0ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jM2I4ZjBk
ODhiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudDo6TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6
IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUg
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBTcGVjdWxhdGVk
VHlwZSBvcmlnaW5hbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisK
KyAgICBpZiAoIShvcmlnaW5hbCAmJiBzcGVjdWxhdGlvbkNoZWNrZWQob3JpZ2luYWwsIFNwZWNC
eXRlY29kZU51bWJlcikpKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBWZWN0b3I8
U3BlY3VsYXRlZFR5cGU+IG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbjsK
KyAgICBmb3IgKGF1dG8gbnVtYmVyVHlwZSA6IGJ5dGVjb2RlTnVtYmVyVHlwZXMoKSkgeworICAg
ICAgICBpZiAobnVtYmVyVHlwZSAmIG9yaWdpbmFsKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNU
aGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uLmFwcGVuZChudW1iZXJUeXBlKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBudW1iZXJPZlR5cGVzVG9LZWVwID0gbV9yYW5kb20uZ2V0VWludDMyKG51
bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5zaXplKCkgKyAxKTsKKyAgICBp
ZiAobnVtYmVyT2ZUeXBlc1RvS2VlcCA9PSBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3Bl
Y3VsYXRpb24uc2l6ZSgpKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxh
dGVkVHlwZSBnZW5lcmF0ZWQgPSBTcGVjTm9uZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZUeXBlc1RvS2VlcDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4T2ZU
eXBlVG9LZWVwID0gbV9yYW5kb20uZ2V0VWludDMyKG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0
T2ZTcGVjdWxhdGlvbi5zaXplKCkpOworICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRl
ZCwgbnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0aW9uW2luZGV4T2ZUeXBlVG9L
ZWVwXSk7CisgICAgICAgIG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5y
ZW1vdmUoaW5kZXhPZlR5cGVUb0tlZXApOworICAgIH0KKworICAgIGlmIChPcHRpb25zOjpkdW1w
RnV6emVyQWdlbnRQcmVkaWN0aW9ucygpKQorICAgICAgICBkYXRhTG9nTG4oIk5hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbiBuYW1lOigiLCBjb2RlQmxv
Y2stPmluZmVycmVkTmFtZSgpLCAiIyIsIGNvZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJs
ZSgpLCAiKSxieXRlY29kZUluZGV4OigiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSwgIiks
b3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9uRHVtcChvcmlnaW5hbCksICIpLGdlbmVyYXRlZDooIiwg
U3BlY3VsYXRpb25EdW1wKGdlbmVyYXRlZCksICIpIik7CisKKyAgICByZXR1cm4gZ2VuZXJhdGVk
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc5YTZiNzk3
NzhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFy
cm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50IGZpbmFsIDogcHVibGljIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBOYXJyb3dpbmdOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQoVk0mKTsKKworICAgIFNwZWN1bGF0ZWRUeXBlIGdldFByZWRp
Y3Rpb24oQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdpbiYsIFNwZWN1bGF0ZWRUeXBlKSBvdmVy
cmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAyZDU3MmVhMDZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQoVk0m
KQorICAgIDogbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgp
KQoreworfQorCitWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudDo6Ynl0ZWNvZGVOdW1iZXJUeXBlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4+IHNfYnl0ZWNvZGVOdW1iZXJUeXBlcyA9IFZlY3RvcjxT
cGVjdWxhdGVkVHlwZT4oeworICAgICAgICBTcGVjQm9vbEludDMyLAorICAgICAgICBTcGVjTm9u
Qm9vbEludDMyLAorICAgICAgICBTcGVjTm9uSW50QXNEb3VibGUsCisgICAgICAgIFNwZWNBbnlJ
bnRBc0RvdWJsZSwKKyAgICAgICAgU3BlY0RvdWJsZVB1cmVOYU4sCisgICAgfSk7CisgICAgcmV0
dXJuIHNfYnl0ZWNvZGVOdW1iZXJUeXBlczsKK30KK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enpl
ckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWZj
NGEzZDAxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJGdXp6ZXJBZ2VudC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgOiBwdWJsaWMgRnV6emVy
QWdlbnQgeworCitwdWJsaWM6CisgICAgTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7
CisKK3Byb3RlY3RlZDoKKyAgICBXZWFrUmFuZG9tIG1fcmFuZG9tOworICAgIExvY2sgbV9sb2Nr
OworICAgIHN0YXRpYyBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGJ5dGVjb2RlTnVtYmVyVHlwZXMo
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWU0ZDllMjI3MDQuLjA5NjgxMTQwMDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQwMCw2ICs0MDAs
OCBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNl
OwogICAgIHYoQm9vbCwgdXNlUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCByZXF1aXJlUHJlZGljdGlvbkZvckZp
bGVCYXNlZEZ1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihPcHRp
b25TdHJpbmcsIGZ1enplclByZWRpY3Rpb25zRmlsZSwgbnVsbHB0ciwgTm9ybWFsLCAiZmlsZSB3
aXRoIGxpc3Qgb2YgcHJlZGljdGlvbnMgZm9yIEZpbGVCYXNlZEZ1enplckFnZW50IikgXAorICAg
IHYoQm9vbCwgdXNlTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LCBmYWxzZSwg
Tm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VXaWRlbmluZ051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKICAgICB2KEJv
b2wsIGxvZ1BoYXNlVGltZXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJs
ZSwgcmFyZUJsb2NrUGVuYWx0eSwgMC4wMDEsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDA4MzZiNjBmNzEyLi5jZWVmZDQ3MWQxYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTEzLDYgKzExMyw3IEBACiAjaW5j
bHVkZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCIKKyNpbmNs
dWRlICJOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJO
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIgpAQCAtMTU0LDYgKzE1NSw3IEBACiAj
aW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL1By
b2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWFkV3JpdGVMb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1NpbXBsZVN0YXRzLmg+CkBAIC00ODgsNiArNDkwLDEwIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlx
dWU8RmlsZUJhc2VkRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgICAgIGlmIChPcHRpb25zOjp1
c2VQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQoKSkKICAgICAgICAgICAgIHNldEZ1
enplckFnZW50KG1ha2VVbmlxdWU8UHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50Pigq
dGhpcykpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlTmFycm93aW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50KCkpCisgICAgICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZVdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KCkpCisgICAg
ICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50PigqdGhpcykpOwogICAgIH0KIAogICAgIGlmIChPcHRpb25zOjphbHdheXNH
ZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFwKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyMjEy
ZDQxNGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50OjpXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYgdm0pCisgICAgOiBO
dW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQodm0pCit7Cit9CisKK1NwZWN1bGF0ZWRUeXBlIFdp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBTcGVjdWxhdGVkVHlw
ZSBvcmlnaW5hbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisKKyAg
ICBpZiAoIShvcmlnaW5hbCAmJiBzcGVjdWxhdGlvbkNoZWNrZWQob3JpZ2luYWwsIFNwZWNCeXRl
Y29kZU51bWJlcikpKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBpZiAob3JpZ2lu
YWwgPT0gU3BlY0J5dGVjb2RlTnVtYmVyKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAg
ICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0
aW9uOworICAgIGZvciAoYXV0byBudW1iZXJUeXBlIDogYnl0ZWNvZGVOdW1iZXJUeXBlcygpKSB7
CisgICAgICAgIGlmICghKG51bWJlclR5cGUgJiBvcmlnaW5hbCkpCisgICAgICAgICAgICBudW1i
ZXJUeXBlc05vdEluY2x1ZGVkSW5TcGVjdWxhdGlvbi5hcHBlbmQobnVtYmVyVHlwZSk7CisgICAg
fQorCisgICAgdW5zaWduZWQgbnVtYmVyT2ZUeXBlc1RvQWRkID0gbV9yYW5kb20uZ2V0VWludDMy
KG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uLnNpemUoKSArIDEpOworICAgIGlm
ICghbnVtYmVyT2ZUeXBlc1RvQWRkKQorICAgICAgICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBT
cGVjdWxhdGVkVHlwZSBnZW5lcmF0ZWQgPSBvcmlnaW5hbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZUeXBlc1RvQWRkOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgaW5k
ZXhPZk5ld1R5cGUgPSBtX3JhbmRvbS5nZXRVaW50MzIobnVtYmVyVHlwZXNOb3RJbmNsdWRlZElu
U3BlY3VsYXRpb24uc2l6ZSgpKTsKKyAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihnZW5lcmF0ZWQs
IG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uW2luZGV4T2ZOZXdUeXBlXSk7Cisg
ICAgICAgIG51bWJlclR5cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uLnJlbW92ZShpbmRleE9m
TmV3VHlwZSk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6OmR1bXBGdXp6ZXJBZ2VudFByZWRp
Y3Rpb25zKCkpCisgICAgICAgIGRhdGFMb2dMbigiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6
emVyQWdlbnQ6OmdldFByZWRpY3Rpb24gbmFtZTooIiwgY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUo
KSwgIiMiLCBjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSwgIiksYnl0ZWNvZGVJ
bmRleDooIiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCksICIpLG9yaWdpbmFsOigiLCBTcGVj
dWxhdGlvbkR1bXAob3JpZ2luYWwpLCAiKSxnZW5lcmF0ZWQ6KCIsIFNwZWN1bGF0aW9uRHVtcChn
ZW5lcmF0ZWQpLCAiKSIpOworCisgICAgcmV0dXJuIGdlbmVyYXRlZDsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRl
bmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzU5ZjVlZGFmOTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk51bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisK
K2NsYXNzIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IGZpbmFsIDogcHVibGlj
IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisKK3B1YmxpYzoKKyAgICBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChW
TSYpOworCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0UHJlZGljdGlvbihDb2RlQmxvY2sqLCBjb25z
dCBDb2RlT3JpZ2luJiwgU3BlY3VsYXRlZFR5cGUpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385135</attachid>
            <date>2019-12-08 23:41:49 -0800</date>
            <delta_ts>2020-01-08 15:41:37 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_203993_i.patch</filename>
            <type>text/plain</type>
            <size>24231</size>
            <attacher name="Tuomas Karkkainen">tuomas.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJiNzc4ODZiOWIwLi4xNGM0Mjk4ZmVkMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTItMDggIFR1b21h
cyBLYXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEZ1
enplckFnZW50cyB0aGF0IG5hcnJvdyBhbmQgd2lkZW4gbnVtYmVyIHByZWRpY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIEZ1enpl
ckFnZW50cyBzdWNoIHRoYXQgZm9yIGFueSBwcmVkaWN0aW9ucyB0aGF0IGFyZSBvcmlnaW5hbGx5
IHN1YnNldHMgb2YgU3BlY0Z1bGxOdW1iZXI6CisgICAgICAgIC0gb25lIGFkZHMgbW9yZSBudW1i
ZXIgdHlwZXMgdG8gdGhlIHByZWRpY3Rpb24KKyAgICAgICAgLSB0aGUgb3RoZXIgcmVtb3ZlcyBz
b21lIG9mIHRoZSBudW1iZXIgdHlwZXMgZnJvbSB0aGUgcHJlZGljdGlvbgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg6IEFkZGVkLgorCiAy
MDE5LTEyLTA4ICBZb3VzdWtlIEtpbW90byAgPHlvdXN1a2Uua2ltb3RvQHNvbnkuY29tPgogCiAg
ICAgICAgIFtXaW5DYWlyb10gUmVmaW5lIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBoYW5kbGlu
ZyBpbiBSZW1vdGVJbnNwZWN0b3JTb2NrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNTRlYTcwNjBkZDMuLjNjOWFjOGE0MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDgzNCw2ICs0ODM0LDEyIEBACiAJCUNFQ0ZBRDMzMjM3MkRBQTcwMDI5MTU5OSAvKiBG
aWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlQmFzZWRGdXp6
ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZBRDM0MjM3MkRB
QTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdXp6ZXJQ
cmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNGQUQzNTIzNzJE
QUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RnV6emVyUHJlZGljdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3
QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDYyMzc1OUJBQzAwODk2MDVF
IC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDcyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNE
OTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjdBM0RBMjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMx
MEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMDAwMzkwMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgcGF0aCA9IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDE1LDYgKzc0MjEsOCBA
QAogCQkJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6
ZS5oICovLAogCQkJCTE0NzM0MUREMURDMkNFOTYwMEFBMjlCQSAvKiBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDUxREMwMkVCOTAwQUEyOUJBIC8qIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLmggKi8sCisJCQkJQ0UyN0EzRDcyMzc1OUJBQzAwODk2MDVFIC8qIE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzRDgy
Mzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5o
ICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCAqLywKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVF
cnJvclByb3RvdHlwZS5jcHAgKi8sCkBAIC03NDMyLDYgKzc0NDAsOCBAQAogCQkJCUJDMjY4MEMz
MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oICovLAogCQkJCUY2OTJBODcw
MDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuY3BwICovLAogCQkJCUY2OTJBODcxMDI1
NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAqLywKKwkJCQlDRTI3QTNEOTIzNzVBNkRD
MDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLywKKwkJCQlDRTI3
QTNEQTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8s
CiAJCQkJQkMyNjgwQzQwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlclByb3RvdHlwZS5jcHAgKi8s
CiAJCQkJQkMyNjgwQzUwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlclByb3RvdHlwZS5oICovLAog
CQkJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5oICovLApAQCAt
NzYzNiw2ICs3NjQ2LDggQEAKIAkJCQk3MDlGQjg2NDFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1Nl
dENvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuY3BwICovLAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggKi8sCisJCQkJQ0UyN0EzRDYyMzc1OUJBQzAwODk2MDVFIC8qIFdpZGVu
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLywKKwkJCQlDRTI3QTNENTIzNzU5
QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLywK
IAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJ
QzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLywKIAkJ
CSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzQwNjlkYjlmNGIuLmIyMTExNzVi
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04OTIsNiArODkyLDcgQEAgcnVu
dGltZS9NYXRoQ29tbW9uLmNwcAogcnVudGltZS9NYXRoT2JqZWN0LmNwcAogcnVudGltZS9NZW1v
cnlTdGF0aXN0aWNzLmNwcAogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKK3J1
bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcAogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAKIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTkwMCw2ICs5MDEsNyBAQCBydW50
aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNw
cAogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvTnVtYmVyT2JqZWN0LmNw
cAorcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL09i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC05NzksNiArOTgxLDcgQEAgcnVudGltZS9X
ZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5
cGUuY3BwCiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvV2Vha1NldFBy
b3RvdHlwZS5jcHAKK3J1bnRpbWUvV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
Y3BwCiAKIC8vIERlcml2ZWQgU291cmNlcwogLy8gRklYTUU6IFdlIHNob3VsZCBtb3ZlIHRoaXMg
dG8gcnVudGltZSBidXQgaXQga2VwdCBicmVha2luZyB0aGUgV2luZG93cyBidWlsZCBpbiB3ZWly
ZCB3YXlzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0ODYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kOWZmODg1OGY1NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6TmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgTmFycm93aW5nTnVtYmVyUHJlZGljdGlv
bkZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBvcmlnaW5hbCkKK3sKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisKKyAgICBpZiAoIShvcmlnaW5hbCAmJiBz
cGVjdWxhdGlvbkNoZWNrZWQob3JpZ2luYWwsIFNwZWNCeXRlY29kZU51bWJlcikpKQorICAgICAg
ICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IG51bWJlclR5
cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbjsKKyAgICBmb3IgKGF1dG8gbnVtYmVyVHlw
ZSA6IGJ5dGVjb2RlTnVtYmVyVHlwZXMoKSkgeworICAgICAgICBpZiAobnVtYmVyVHlwZSAmIG9y
aWdpbmFsKQorICAgICAgICAgICAgbnVtYmVyVHlwZXNUaGF0Q291bGRCZVBhcnRPZlNwZWN1bGF0
aW9uLmFwcGVuZChudW1iZXJUeXBlKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZlR5
cGVzVG9LZWVwID0gbV9yYW5kb20uZ2V0VWludDMyKG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0
T2ZTcGVjdWxhdGlvbi5zaXplKCkpICsgMTsKKyAgICBpZiAobnVtYmVyT2ZUeXBlc1RvS2VlcCA9
PSBudW1iZXJUeXBlc1RoYXRDb3VsZEJlUGFydE9mU3BlY3VsYXRpb24uc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gb3JpZ2luYWw7CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZW5lcmF0ZWQgPSBTcGVj
Tm9uZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUeXBlc1RvS2VlcDsg
aSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4T2ZUeXBlVG9LZWVwID0gbV9yYW5kb20uZ2V0
VWludDMyKG51bWJlclR5cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5zaXplKCkpOwor
ICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVtYmVyVHlwZXNUaGF0Q291bGRC
ZVBhcnRPZlNwZWN1bGF0aW9uW2luZGV4T2ZUeXBlVG9LZWVwXSk7CisgICAgICAgIG51bWJlclR5
cGVzVGhhdENvdWxkQmVQYXJ0T2ZTcGVjdWxhdGlvbi5yZW1vdmUoaW5kZXhPZlR5cGVUb0tlZXAp
OworICAgIH0KKworICAgIGlmIChPcHRpb25zOjpkdW1wRnV6emVyQWdlbnRQcmVkaWN0aW9ucygp
KQorICAgICAgICBkYXRhTG9nTG4oIk5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dDo6Z2V0UHJlZGljdGlvbiBuYW1lOigiLCBjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAiIyIs
IGNvZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4Oigi
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0aW9u
RHVtcChvcmlnaW5hbCksICIpLGdlbmVyYXRlZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVyYXRl
ZCksICIpIik7CisKKyAgICByZXR1cm4gZ2VuZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc5YTZiNzk3NzhjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xh
c3MgTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50IGZpbmFsIDogcHVibGljIE51
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisKK3B1YmxpYzoKKyAgICBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQoVk0m
KTsKKworICAgIFNwZWN1bGF0ZWRUeXBlIGdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiwgY29uc3Qg
Q29kZU9yaWdpbiYsIFNwZWN1bGF0ZWRUeXBlKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjAyZDU3MmVhMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
OjpOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQoVk0mKQorICAgIDogbV9yYW5kb20oT3B0aW9u
czo6c2VlZE9mUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQoreworfQorCitWZWN0b3I8U3BlY3Vs
YXRlZFR5cGU+IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Ynl0ZWNvZGVOdW1iZXJUeXBl
cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4+
IHNfYnl0ZWNvZGVOdW1iZXJUeXBlcyA9IFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4oeworICAgICAg
ICBTcGVjQm9vbEludDMyLAorICAgICAgICBTcGVjTm9uQm9vbEludDMyLAorICAgICAgICBTcGVj
Tm9uSW50QXNEb3VibGUsCisgICAgICAgIFNwZWNBbnlJbnRBc0RvdWJsZSwKKyAgICAgICAgU3Bl
Y0RvdWJsZVB1cmVOYU4sCisgICAgfSk7CisgICAgcmV0dXJuIHNfYnl0ZWNvZGVOdW1iZXJUeXBl
czsKK30KK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWZjNGEzZDAxNTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGdXp6ZXJBZ2VudC5oIgor
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUmFuZG9tLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQgOiBwdWJsaWMgRnV6emVyQWdlbnQgeworCitwdWJsaWM6CisgICAg
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7CisKK3Byb3RlY3RlZDoKKyAgICBXZWFr
UmFuZG9tIG1fcmFuZG9tOworICAgIExvY2sgbV9sb2NrOworICAgIHN0YXRpYyBWZWN0b3I8U3Bl
Y3VsYXRlZFR5cGU+IGJ5dGVjb2RlTnVtYmVyVHlwZXMoKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXgg
MDNmMjg1MjQ0ZGIuLjA5YzgzYTMxZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQwMCw2ICs0MDAsOCBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlUHJlZGlj
dGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihCb29sLCByZXF1aXJlUHJlZGljdGlvbkZvckZpbGVCYXNlZEZ1enplckFnZW50LCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihPcHRpb25TdHJpbmcsIGZ1enplclByZWRpY3Rp
b25zRmlsZSwgbnVsbHB0ciwgTm9ybWFsLCAiZmlsZSB3aXRoIGxpc3Qgb2YgcHJlZGljdGlvbnMg
Zm9yIEZpbGVCYXNlZEZ1enplckFnZW50IikgXAorICAgIHYoQm9vbCwgdXNlTmFycm93aW5nTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAg
dihCb29sLCB1c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudCwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIFwKICAgICB2KEJvb2wsIGxvZ1BoYXNlVGltZXMsIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJsZSwgcmFyZUJsb2NrUGVuYWx0eSwgMC4w
MDEsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IDY2NWEwZTJhMDcyLi5hMGJlZTkzYjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtMTI2LDYgKzEyNiw3IEBACiAjaW5jbHVkZSAiTWluaW11bVJlc2VydmVkWm9u
ZVNpemUuaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJOYXJyb3dpbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbC5oIgpAQCAtMTcxLDYgKzE3Miw3IEBACiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXaWRlbmluZ051bWJlclBy
ZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNs
dWRlIDx3dGYvUmVhZFdyaXRlTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgpA
QCAtNTE3LDYgKzUxOSwxMCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8RmlsZUJhc2VkRnV6emVyQWdl
bnQ+KCp0aGlzKSk7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVByZWRpY3Rpb25GaWxlQ3JlYXRpbmdG
dXp6ZXJBZ2VudCgpKQogICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFByZWRpY3Rp
b25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNl
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KCkpCisgICAgICAgIHNldEZ1enpl
ckFnZW50KG1ha2VVbmlxdWU8TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Pigq
dGhpcykpOworICAgIGlmIChPcHRpb25zOjp1c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudCgpKQorICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFdpZGVuaW5nTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFs
d2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQ
Q1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzIyMTJkNDE0
ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRl
bmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6
OldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJiB2bSkKKyAgICA6IE51bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudCh2bSkKK3sKK30KKworU3BlY3VsYXRlZFR5cGUgV2lkZW5p
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIG9y
aWdpbmFsKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKworICAgIGlm
ICghKG9yaWdpbmFsICYmIHNwZWN1bGF0aW9uQ2hlY2tlZChvcmlnaW5hbCwgU3BlY0J5dGVjb2Rl
TnVtYmVyKSkpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIGlmIChvcmlnaW5hbCA9
PSBTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFZl
Y3RvcjxTcGVjdWxhdGVkVHlwZT4gbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb247
CisgICAgZm9yIChhdXRvIG51bWJlclR5cGUgOiBieXRlY29kZU51bWJlclR5cGVzKCkpIHsKKyAg
ICAgICAgaWYgKCEobnVtYmVyVHlwZSAmIG9yaWdpbmFsKSkKKyAgICAgICAgICAgIG51bWJlclR5
cGVzTm90SW5jbHVkZWRJblNwZWN1bGF0aW9uLmFwcGVuZChudW1iZXJUeXBlKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBudW1iZXJPZlR5cGVzVG9BZGQgPSBtX3JhbmRvbS5nZXRVaW50MzIobnVt
YmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24uc2l6ZSgpICsgMSk7CisgICAgaWYgKCFu
dW1iZXJPZlR5cGVzVG9BZGQpCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKworICAgIFNwZWN1
bGF0ZWRUeXBlIGdlbmVyYXRlZCA9IG9yaWdpbmFsOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZlR5cGVzVG9BZGQ7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBpbmRleE9m
TmV3VHlwZSA9IG1fcmFuZG9tLmdldFVpbnQzMihudW1iZXJUeXBlc05vdEluY2x1ZGVkSW5TcGVj
dWxhdGlvbi5zaXplKCkpOworICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKGdlbmVyYXRlZCwgbnVt
YmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb25baW5kZXhPZk5ld1R5cGVdKTsKKyAgICAg
ICAgbnVtYmVyVHlwZXNOb3RJbmNsdWRlZEluU3BlY3VsYXRpb24ucmVtb3ZlKGluZGV4T2ZOZXdU
eXBlKTsKKyAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcEZ1enplckFnZW50UHJlZGljdGlv
bnMoKSkKKyAgICAgICAgZGF0YUxvZ0xuKCJXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudDo6Z2V0UHJlZGljdGlvbiBuYW1lOigiLCBjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAi
IyIsIGNvZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpLCAiKSxieXRlY29kZUluZGV4
OigiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSwgIiksb3JpZ2luYWw6KCIsIFNwZWN1bGF0
aW9uRHVtcChvcmlnaW5hbCksICIpLGdlbmVyYXRlZDooIiwgU3BlY3VsYXRpb25EdW1wKGdlbmVy
YXRlZCksICIpIik7CisKKyAgICByZXR1cm4gZ2VuZXJhdGVkOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5n
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTlmNWVkYWY5NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xh
c3MgV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQgZmluYWwgOiBwdWJsaWMgTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KworcHVibGljOgorICAgIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KFZNJik7
CisKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRQcmVkaWN0aW9uKENvZGVCbG9jayosIGNvbnN0IENv
ZGVPcmlnaW4mLCBTcGVjdWxhdGVkVHlwZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MK
</data>

          </attachment>
      

    </bug>

</bugzilla>