<?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>178533</bug_id>
          
          <creation_ts>2017-10-19 12:29:47 -0700</creation_ts>
          <short_desc>[Bindings] Standardize on DOMPromise as the way to store passed in promises</short_desc>
          <delta_ts>2017-11-15 13:02:10 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362256</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 12:29:47 -0700</bug_when>
    <thetext>[Bindings] Standarize on DOMPromise as the way to store passed in promises</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362280</commentid>
    <comment_count>1</comment_count>
      <attachid>324270</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 13:20:51 -0700</bug_when>
    <thetext>Created attachment 324270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362319</commentid>
    <comment_count>2</comment_count>
      <attachid>324270</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-19 14:12:21 -0700</bug_when>
    <thetext>Comment on attachment 324270
Patch

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

&gt; Source/WebCore/Modules/paymentrequest/PaymentRequestUpdateEvent.h:39
&gt; +    void updateWith(RefPtr&lt;DOMPromise&gt;&amp;&amp;);

Can we pass a Ref&lt;DOMPromise&gt;&amp;&amp; instead?
I would think nullptr to happen only in case of exception which probably means updateWith will never be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362321</commentid>
    <comment_count>3</comment_count>
      <attachid>324270</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-19 14:14:46 -0700</bug_when>
    <thetext>Comment on attachment 324270
Patch

Looks really great!

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

&gt; Source/WebCore/workers/service/ExtendableEvent.cpp:48
&gt; +    addPendingPromise(*promise);

We should be able to move this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362329</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 14:22:46 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; Comment on attachment 324270 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324270&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/paymentrequest/PaymentRequestUpdateEvent.h:39
&gt; &gt; +    void updateWith(RefPtr&lt;DOMPromise&gt;&amp;&amp;);
&gt; 
&gt; Can we pass a Ref&lt;DOMPromise&gt;&amp;&amp; instead?
&gt; I would think nullptr to happen only in case of exception which probably
&gt; means updateWith will never be called.

The bindings don&apos;t really support that right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362343</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 14:29:33 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; (In reply to youenn fablet from comment #2)
&gt; &gt; Comment on attachment 324270 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=324270&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/paymentrequest/PaymentRequestUpdateEvent.h:39
&gt; &gt; &gt; +    void updateWith(RefPtr&lt;DOMPromise&gt;&amp;&amp;);
&gt; &gt; 
&gt; &gt; Can we pass a Ref&lt;DOMPromise&gt;&amp;&amp; instead?
&gt; &gt; I would think nullptr to happen only in case of exception which probably
&gt; &gt; means updateWith will never be called.
&gt; 
&gt; The bindings don&apos;t really support that right now.

Actually, it&apos;s easy to change that. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362366</commentid>
    <comment_count>6</comment_count>
      <attachid>324297</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 14:51:18 -0700</bug_when>
    <thetext>Created attachment 324297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362402</commentid>
    <comment_count>7</comment_count>
      <attachid>324297</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-19 15:44:46 -0700</bug_when>
    <thetext>Comment on attachment 324297
Patch

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

&gt; Source/WebCore/Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:37
&gt; +void PaymentRequestUpdateEvent::updateWith(RefPtr&lt;DOMPromise&gt;&amp;&amp;)

Ref&lt;&gt;?

&gt; Source/WebCore/dom/PromiseRejectionEvent.h:38
&gt; +        RefPtr&lt;DOMPromise&gt; promise;

It should probably be a Ref&lt;DOMPromise&gt; as promise is required.

&gt; Source/WebCore/workers/service/FetchEvent.cpp:138
&gt; +        [] (Ref&lt;FormData&gt;&amp;) {

Indentation like for regular switch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362415</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 15:50:23 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; Comment on attachment 324297 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324297&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:37
&gt; &gt; +void PaymentRequestUpdateEvent::updateWith(RefPtr&lt;DOMPromise&gt;&amp;&amp;)
&gt; 
&gt; Ref&lt;&gt;?

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/PromiseRejectionEvent.h:38
&gt; &gt; +        RefPtr&lt;DOMPromise&gt; promise;
&gt; 
&gt; It should probably be a Ref&lt;DOMPromise&gt; as promise is required.
&gt; 

I don&apos;t think this is currently possible because you can&apos;t default initialize it.

&gt; &gt; Source/WebCore/workers/service/FetchEvent.cpp:138
&gt; &gt; +        [] (Ref&lt;FormData&gt;&amp;) {
&gt; 
&gt; Indentation like for regular switch?

Yeah. Trying to keep it consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362418</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-19 15:54:02 -0700</bug_when>
    <thetext>&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/PromiseRejectionEvent.h:38
&gt; &gt; &gt; +        RefPtr&lt;DOMPromise&gt; promise;
&gt; &gt; 
&gt; &gt; It should probably be a Ref&lt;DOMPromise&gt; as promise is required.
&gt; &gt; 
&gt; 
&gt; I don&apos;t think this is currently possible because you can&apos;t default
&gt; initialize it.

Should we try to handle dictionaries creation with std::optional&lt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362437</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 16:29:01 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/dom/PromiseRejectionEvent.h:38
&gt; &gt; &gt; &gt; +        RefPtr&lt;DOMPromise&gt; promise;
&gt; &gt; &gt; 
&gt; &gt; &gt; It should probably be a Ref&lt;DOMPromise&gt; as promise is required.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I don&apos;t think this is currently possible because you can&apos;t default
&gt; &gt; initialize it.
&gt; 
&gt; Should we try to handle dictionaries creation with std::optional&lt;&gt;?

That would probably be a good way to handle it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362439</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-19 16:31:05 -0700</bug_when>
    <thetext>Committed r223725: &lt;https://trac.webkit.org/changeset/223725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372321</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:02:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324270</attachid>
            <date>2017-10-19 13:20:51 -0700</date>
            <delta_ts>2017-10-19 14:51:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178533-20171019132050.patch</filename>
            <type>text/plain</type>
            <size>17156</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzcwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE3LTEwLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0JpbmRpbmdzXSBTdGFuZGFyZGl6ZSBv
biBET01Qcm9taXNlIGFzIHRoZSB3YXkgdG8gc3RvcmUgcGFzc2VkIGluIHByb21pc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg1MzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHN0YW5kYXJk
aXplcyBvbiBSZWZQdHI8RE9NUHJvbWlzZT4gYXMgdGhlIGNhbm9uaWNhbCB3YXkgdG8gc3RvcmUg
YSBwcm9taXNlCisgICAgICAgIHRoYXQgaGFzIGJlZW4gcGFzc2VkIGluIGZyb20gSlMuIFRoaXMg
ZG9lcyBub3QgY2hhbmdlIHByb21pc2VzIHRoYXQgc3RhcnQgb2ZmIGluCisgICAgICAgIFdlYkNv
cmUgYW5kIGFyZSBwYXNzZWQgdG8gSlM7IHRoZXkgcmVtYWluIHVzaW5nIERPTVByb21pc2VEZWZl
cnJlZCBhbmQgRE9NUHJvbWlzZVByb3h5LgorCisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKiBkb20vUHJvbWlzZVJlamVjdGlv
bkV2ZW50Lmg6CisgICAgICAgICogZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwOgorICAg
ICAgICAKKyAgICAgICAgICAgIFVzZSBhIFJlZlB0cjxET01Qcm9taXNlPiByYXRoZXIgdGhhbiBh
IEpTUHJvbWlzZSogdG8gaG9sZCBvbnRvIHRoZSBwcm9taXNlLgorICAgICAgICAKKyAgICAgICAg
KiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAgICAKKyAgICAgICAgICAgIFVzZSBJRExXcmFw
cGVyIHRvIGdldCBiZXR0ZXIgZGVmYXVsdHMsIHNpbmNlIERPTVByb21pc2UgaXMgcmVmY291bnRl
ZC4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETFByb21pc2U8VD4+Ojpjb252ZXJ0KToK
KyAgICAgICAgCisgICAgICAgICAgICBTd2l0Y2ggZGVmYXVsdCBjb252ZXJzaW9uIHRvIHJldHVy
biBhIFJlZlB0cjxET01Qcm9taXNlPiByYXRoZXIgdGhhbiBhIEpTUHJvbWlzZSoKKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+Pjo6Y29udmVydCk6
CisgICAgICAgIAorICAgICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcgZnJvbSBh
IERPTVByb21pc2UgdG8gYSBKU1ZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgCisgICAgICAgICAgICBSZW1vdmUgbm93IHVudXNlZCBjb25zdHJ1Y3Rvci4gICAgCisgICAg
ICAgICAgICAKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGFibGVFdmVudDo6d2FpdFVudGlsKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50Lmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0Zl
dGNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hFdmVudDo6cmVzcG9uZFdpdGgp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hFdmVudDo6cHJvbWlzZUlzU2V0dGxlZCk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvRmV0Y2hFdmVudC5pZGw6CisgICAgICAgIAorICAgICAgICAgICAgQWRkcmVzcyBGSVhN
RXMgYW5kIHJlbW92ZSBuZWVkIGZvciBwYXNzaW5nIGFuIEV4ZWNTdGF0ZSB0byBFeHRlbmRhYmxl
RXZlbnQKKyAgICAgICAgICAgIGFuZCBGZXRjaEV2ZW50IGJ5IHVzaW5nIHRoZSBuZXcgZGVmYXVs
dCBjb252ZXJzaW9uIHRvIERPTVByb21pc2UuCisKIDIwMTctMTAtMTkgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFNoYXJlIGxvZ2ljIGluIElubGluZVRleHRC
b3ggdG8gY29tcHV0ZSBzZWxlY3Rpb24gcmVjdApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0
VXBkYXRlRXZlbnQuY3BwCShyZXZpc2lvbiAyMjM3MDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6On5QYXlt
ZW50UmVxdWUKIHsKIH0KIAotdm9pZCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50Ojp1cGRhdGVX
aXRoKEpTQzo6SlNQcm9taXNlKikKK3ZvaWQgUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6dXBk
YXRlV2l0aChSZWZQdHI8RE9NUHJvbWlzZT4mJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdFVwZGF0ZUV2ZW50LmgJKHJldmlzaW9uIDIyMzcwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxNiArMjksMTQgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAKLW5h
bWVzcGFjZSBKU0MgewotY2xhc3MgSlNQcm9taXNlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIERPTVByb21pc2U7CisKIGNsYXNzIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIH5QYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVXaXRoKEpTQzo6SlNQcm9taXNlKik7CisgICAgdm9p
ZCB1cGRhdGVXaXRoKFJlZlB0cjxET01Qcm9taXNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAkocmV2aXNpb24gMjIz
NzAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0
cnVjdCAKICAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUgPSBjb25zdCBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5
cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiY7CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFR5cGU8RE9NUHJvbWlzZT4gewordGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExXcmFwcGVyPERPTVByb21p
c2U+IHsKICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFByb21pc2UuaAkocmV2aXNpb24gMjIz
NzAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMUHJvbWlzZTxUPj4gOiBE
ZWZhdWx0Q29udmVydGVyPElETFByb21pc2U8VD4+IHsKLSAgICB1c2luZyBSZXR1cm5UeXBlID0g
SlNDOjpKU1Byb21pc2UqOworICAgIHVzaW5nIFJldHVyblR5cGUgPSBSZWZQdHI8RE9NUHJvbWlz
ZT47CiAKICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1wcm9taXNl
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRp
b25UaHJvd2VyPgpAQCAtNTQsNyArNTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29udmVydGVyPElECiAgICAgICAgIEFTU0VSVChwcm9taXNlKTsKIAogICAgICAgICAvLyAzLiBS
ZXR1cm4gdGhlIElETCBwcm9taXNlIHR5cGUgdmFsdWUgdGhhdCBpcyBhIHJlZmVyZW5jZSB0byB0
aGUgc2FtZSBvYmplY3QgYXMgcHJvbWlzZS4KLSAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAg
ICAgIHJldHVybiBET01Qcm9taXNlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgKnByb21pc2UpOwog
ICAgIH0KIH07CiAKQEAgLTYyLDkgKzYyLDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEpTQ29udmVydGVyPAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gdHJ1
ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSB0cnVlOwog
Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNET01H
bG9iYWxPYmplY3QmLCBKU0M6OkpTUHJvbWlzZSYgcHJvbWlzZSkKKyAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIERPTVBy
b21pc2UmIHByb21pc2UpCiAgICAgewotICAgICAgICByZXR1cm4gJnByb21pc2U7CisgICAgICAg
IHJldHVybiBwcm9taXNlLnByb21pc2UoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgVT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmNwcAkocmV2aXNpb24gMjIzNzAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMjQgKzQ5LDYg
QEAgc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0aW9uKAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVJlZjxET01Qcm9taXNlPiBET01Qcm9taXNlOjpjcmVhdGUoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgYXV0byYgZ2xvYmFsT2Jq
ZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKLQotICAgIGF1dG8gcHJvbWlzZUNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0
LnByb21pc2VDb25zdHJ1Y3RvcigpOwotICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gcHJvbWlz
ZUNvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnJlc29sdmVQcml2YXRlTmFtZSgpKTsKLSAgICBBU1NFUlQocmVzb2x2ZUZ1bmN0
aW9uLmlzRnVuY3Rpb24oKSk7Ci0KLSAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKLSAgICBhdXRvIHJlc3VsdCA9IGNh
bGxGdW5jdGlvbihzdGF0ZSwgcmVzb2x2ZUZ1bmN0aW9uLCBwcm9taXNlQ29uc3RydWN0b3IsIGFy
Z3VtZW50cyk7Ci0KLSAgICBhdXRvKiBwcm9taXNlID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU1Byb21p
c2UqPihyZXN1bHQpOwotICAgIEFTU0VSVChwcm9taXNlKTsKLQotICAgIHJldHVybiBjcmVhdGUo
Z2xvYmFsT2JqZWN0LCAqcHJvbWlzZSk7Ci19Ci0KIHZvaWQgRE9NUHJvbWlzZTo6d2hlblNldHRs
ZWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgc3RhdGUg
PSAqZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCShyZXZpc2lvbiAyMjM3MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVByb21pc2UgOiBwdWJsaWMg
RE9NR3VhcmRlZDxKU0M6OkpTUHJvbWlzZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9N
UHJvbWlzZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0
aWMgUmVmPERPTVByb21pc2U+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTUHJvbWlzZSYgcHJvbWlzZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERPTVByb21pc2UoZ2xvYmFsT2JqZWN0LCBwcm9taXNlKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjIzNzAw
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDE2ICsyNywxNiBAQAogI2luY2x1ZGUgIlByb21pc2VSZWplY3Rpb25F
dmVudC5oIgogCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCiAjaW5jbHVkZSA8aGVhcC9IZWFwSW5saW5lcy5oPgogI2luY2x1ZGUgPGhlYXAv
U3Ryb25nSW5saW5lcy5oPgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIFByb21pc2VSZWplY3Rpb25FdmVudDo6UHJvbWlzZVJlamVjdGlvbkV2ZW50KEV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5p
dGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKQotICAgICwgbV9wcm9taXNlKHN0YXRlLnZtKCksIGluaXRpYWxpemVy
LnByb21pc2UpCisgICAgLCBtX3Byb21pc2UoKihpbml0aWFsaXplci5wcm9taXNlKSkKICAgICAs
IG1fcmVhc29uKHN0YXRlLnZtKCksIGluaXRpYWxpemVyLnJlYXNvbikKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgJKHJldmlzaW9uIDIyMzcw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE1IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2UuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01Qcm9taXNlOworCiBjbGFzcyBQcm9taXNlUmVq
ZWN0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHN0cnVjdCBJ
bml0IDogRXZlbnRJbml0IHsKLSAgICAgICAgSlNDOjpKU1Byb21pc2UqIHByb21pc2U7CisgICAg
ICAgIFJlZlB0cjxET01Qcm9taXNlPiBwcm9taXNlOwogICAgICAgICBKU0M6OkpTVmFsdWUgcmVh
c29uOwogICAgIH07CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
UHJvbWlzZVJlamVjdGlvbkV2ZW50KCk7CiAKLSAgICBKU0M6OkpTUHJvbWlzZSYgcHJvbWlzZSgp
IGNvbnN0IHsgcmV0dXJuICptX3Byb21pc2UuZ2V0KCk7IH0KKyAgICBET01Qcm9taXNlJiBwcm9t
aXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9CiAgICAgSlNDOjpKU1ZhbHVl
IHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uLmdldCgpOyB9CiAKICAgICBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb21pc2VS
ZWplY3Rpb25FdmVudEludGVyZmFjZVR5cGU7IH0KQEAgLTUzLDcgKzU0LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBQcm9taXNlUmVqZWN0aW9uRXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAotICAgIEpTQzo6U3Ry
b25nPEpTQzo6SlNQcm9taXNlPiBtX3Byb21pc2U7CisgICAgUmVmPERPTVByb21pc2U+IG1fcHJv
bWlzZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fcmVhc29uOwogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21pc2VUcmFja2VyLmNwcAkocmV2
aXNpb24gMjIzNzAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZWplY3RlZFBy
b21pc2VUcmFja2VyOjpyZXBvcnRVbmhhbgogCiAgICAgICAgIFByb21pc2VSZWplY3Rpb25FdmVu
dDo6SW5pdCBpbml0aWFsaXplcjsKICAgICAgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IHRy
dWU7Ci0gICAgICAgIGluaXRpYWxpemVyLnByb21pc2UgPSAmcHJvbWlzZTsKKyAgICAgICAgaW5p
dGlhbGl6ZXIucHJvbWlzZSA9ICZkb21Qcm9taXNlOwogICAgICAgICBpbml0aWFsaXplci5yZWFz
b24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICAgICAgYXV0byBldmVudCA9IFByb21pc2VS
ZWplY3Rpb25FdmVudDo6Y3JlYXRlKHN0YXRlLCBldmVudE5hbWVzKCkudW5oYW5kbGVkcmVqZWN0
aW9uRXZlbnQsIGluaXRpYWxpemVyKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFJlamVjdGVk
UHJvbWlzZVRyYWNrZXI6OnJlcG9ydFJlamVjCiAgICAgYXV0byYgcHJvbWlzZSA9ICpyZWplY3Rl
ZFByb21pc2UtPnByb21pc2UoKTsKIAogICAgIFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCBp
bml0aWFsaXplcjsKLSAgICBpbml0aWFsaXplci5wcm9taXNlID0gJnByb21pc2U7CisgICAgaW5p
dGlhbGl6ZXIucHJvbWlzZSA9IHJlamVjdGVkUHJvbWlzZS5wdHIoKTsKICAgICBpbml0aWFsaXpl
ci5yZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICBhdXRvIGV2ZW50ID0gUHJvbWlz
ZVJlamVjdGlvbkV2ZW50OjpjcmVhdGUoc3RhdGUsIGV2ZW50TmFtZXMoKS5yZWplY3Rpb25oYW5k
bGVkRXZlbnQsIGluaXRpYWxpemVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAyMjM3MDApCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRXh0
ZW5kYWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBFeHRlbmRhYmxlRXZlbnRJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3Rl
ZCkKQEAgLTM1LDcgKzM3LDcgQEAgRXh0ZW5kYWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZlbnQoY29u
c3QgQQogewogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBFeHRlbmRhYmxlRXZlbnQ6OndhaXRVbnRp
bChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBwcm9taXNlKQorRXhjZXB0aW9u
T3I8dm9pZD4gRXh0ZW5kYWJsZUV2ZW50Ojp3YWl0VW50aWwoUmVmUHRyPERPTVByb21pc2U+JiYg
cHJvbWlzZSkKIHsKICAgICBpZiAoIWlzVHJ1c3RlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXZlbnQgaXMgbm90IHRydXN0
ZWQiKSB9OwpAQCAtNDMsOCArNDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBFeHRlbmRhYmxlRXZl
bnQ6OndhaXRVCiAgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBpc0JlaW5n
RGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCIpIH07CiAKLSAgICBh
ZGRQZW5kaW5nUHJvbWlzZShET01Qcm9taXNlOjpjcmVhdGUoc3RhdGUsIHByb21pc2UpKTsKLQor
ICAgIGFkZFBlbmRpbmdQcm9taXNlKCpwcm9taXNlKTsKICAgICByZXR1cm4geyB9OwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVu
dC5oCShyZXZpc2lvbiAyMjM3MDApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
RXh0ZW5kYWJsZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnRJbml0LmgiCi0jaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBET01Qcm9taXNlOworCiBjbGFzcyBFeHRlbmRhYmxlRXZl
bnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RXh0ZW5kYWJsZUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBFeHRlbmRhYmxlRXZl
bnRJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8p
CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRXh0ZW5kYWJsZUV2ZW50SW50ZXJmYWNl
VHlwZTsgfQogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gd2FpdFVudGlsKEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB3YWl0VW50aWwoUmVmUHRy
PERPTVByb21pc2U+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvbkZpbmlzaGVkV2Fp
dGluZ0ZvclRlc3RpbmcoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmlkbAkocmV2
aXNpb24gMjIzNzAwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFi
bGVFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KIAotLy9GSVhNRTogU2hvdWxkIGJlIGV4cG9zZWQg
b24gU2VydmljZVdvcmtlciBvbmx5LgorLy8gRklYTUU6IFNob3VsZCBiZSBleHBvc2VkIG9uIFNl
cnZpY2VXb3JrZXIgb25seS4KIFsKICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgb3B0
aW9uYWwgRXh0ZW5kYWJsZUV2ZW50SW5pdCBldmVudEluaXREaWN0KSwKICAgICBDb25kaXRpb25h
bD1TRVJWSUNFX1dPUktFUiwKQEAgLTMxLDggKzMxLDYgQEAKICAgICBFeHBvc2VkPShTZXJ2aWNl
V29ya2VyLFdvcmtlcixXaW5kb3cpLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAog
ICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLV0KLWludGVyZmFjZSBFeHRlbmRhYmxlRXZl
bnQgOiBFdmVudCB7Ci0gICAgLy8gRklYTUU6IEJpbmRpbmcgZ2VuZXJhdG9yIHNob3VsZCBiZSBh
YmxlIHRvIHdyYXAgYW55IG5vbiBQcm9taXNlIHZhbHVlIGludG8gYSBwcm9taXNlIGFuZCBwYXNz
IGl0IHRvIHdhaXRVbnRpbC4KLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHdhaXRVbnRpbChhbnkgZik7CitdIGludGVyZmFjZSBFeHRlbmRhYmxlRXZl
bnQgOiBFdmVudCB7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHdhaXRVbnRpbChQcm9t
aXNlPGFueT4gZik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0Zl
dGNoRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9GZXRjaEV2ZW50LmNwcAkocmV2aXNpb24gMjIzNzAwKQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmV0Y2hFdmVudC5oIgogCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC00MSw3ICs0Miw3IEBAIEZldGNoRXZlbnQ6OkZl
dGNoRXZlbnQoY29uc3QgQXRvbWljU3RyaW4KIHsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRmV0
Y2hFdmVudDo6cmVzcG9uZFdpdGgoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
cHJvbWlzZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZldGNoRXZlbnQ6OnJlc3BvbmRXaXRoKFJlZlB0
cjxET01Qcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJFdmVudCBpcyBiZWluZyBkaXNwYXRjaGVkIikgfTsKQEAgLTQ5LDcgKzUwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRmV0Y2hFdmVudDo6cmVzcG9uZFdpdAogICAgIGlmIChtX3Jlc3BvbmRX
aXRoRW50ZXJlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkV2ZW50IHJlc3BvbmRXaXRoIGZsYWcgaXMgc2V0IikgfTsKIAotICAg
IG1fcmVzcG9uZFByb21pc2UgPSBET01Qcm9taXNlOjpjcmVhdGUoc3RhdGUsIHByb21pc2UpOwor
ICAgIG1fcmVzcG9uZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwogICAgIGFkZFBlbmRpbmdQ
cm9taXNlKCptX3Jlc3BvbmRQcm9taXNlKTsKIAogICAgIG1fcmVzcG9uZFByb21pc2UtPndoZW5T
ZXR0bGVkKFt0aGlzLCB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gKCkgewpAQCAtMTMzLDEy
ICsxMzQsMTYgQEAgdm9pZCBGZXRjaEV2ZW50Ojpwcm9taXNlSXNTZXR0bGVkKCkKICAgICB9CiAK
ICAgICBhdXRvIGJvZHkgPSBtX3Jlc3BvbnNlLT5jb25zdW1lQm9keSgpOwotICAgIFdURjo6c3dp
dGNoT24oYm9keSwgW10gKFJlZjxGb3JtRGF0YT4mKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IEZvcm1EYXRhIHJlc3BvbnNlIGJvZGllcy4KLSAgICB9LCBbdGhpc10gKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgbV9yZXNwb25zZUJvZHkgPSBXVEZNb3ZlKGJ1ZmZl
cik7Ci0gICAgfSwgW10gKHN0ZDo6bnVsbHB0cl90JikgewotICAgIH0pOworICAgIFdURjo6c3dp
dGNoT24oYm9keSwgCisgICAgICAgIFtdIChSZWY8Rm9ybURhdGE+JikgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgcmVzcG9uc2UgYm9kaWVzLgorICAgICAgICB9LAor
ICAgICAgICBbdGhpc10gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VCb2R5ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICB9LCAKKyAgICAgICAg
W10gKHN0ZDo6bnVsbHB0cl90JikgeworICAgICAgICB9CisgICAgKTsKIAogICAgIHByb2Nlc3NS
ZXNwb25zZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNo
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5oCShyZXZpc2lvbiAyMjM3MDApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvRmV0Y2hFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gRmV0Y2hFdmVudEludGVyZmFjZVR5cGU7IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlc3BvbmRXaXRoKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiByZXNwb25kV2l0aChSZWZQdHI8RE9NUHJvbWlzZT4mJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG9uUmVzcG9uc2UoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCShy
ZXZpc2lvbiAyMjM3MDApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KIAotLy9GSVhNRTogU2hvdWxkIGJlIGV4cG9zZWQgb24g
U2VydmljZVdvcmtlciBvbmx5LgorLy8gRklYTUU6IFNob3VsZCBiZSBleHBvc2VkIG9uIFNlcnZp
Y2VXb3JrZXIgb25seS4KIFsKICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgRmV0Y2hF
dmVudEluaXQgZXZlbnRJbml0RGljdCksCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIs
CkBAIC0zMiwxNSArMzIsMTMgQEAKICAgICBFeHBvc2VkPShTZXJ2aWNlV29ya2VyLFdvcmtlcixX
aW5kb3cpLAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEpTR2VuZXJhdGVUb05h
dGl2ZU9iamVjdAotXQotaW50ZXJmYWNlIEZldGNoRXZlbnQgOiBFeHRlbmRhYmxlRXZlbnQgewor
XSBpbnRlcmZhY2UgRmV0Y2hFdmVudCA6IEV4dGVuZGFibGVFdmVudCB7CiAgICAgW1NhbWVPYmpl
Y3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGZXRjaFJlcXVlc3QgcmVxdWVzdDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNsaWVudElkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgcmVzZXJ2ZWRDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHRhcmdldENsaWVudElkOwogCi0gICAgLy8gRklYTUU6IEJpbmRpbmcgZ2VuZXJhdG9yIHNo
b3VsZCBiZSBhYmxlIHRvIHdyYXAgYW55IG5vbiBQcm9taXNlIHZhbHVlIGludG8gYSBwcm9taXNl
IGFuZCBwYXNzIGl0IHRvIHJlc3BvbmRXaXRoLgotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVzcG9uZFdpdGgoYW55IHIpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCByZXNwb25kV2l0aChQcm9taXNlPEZldGNoUmVzcG9uc2U+IHIpOwog
fTsKIAogZGljdGlvbmFyeSBGZXRjaEV2ZW50SW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324297</attachid>
            <date>2017-10-19 14:51:18 -0700</date>
            <delta_ts>2017-10-19 15:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178533-20171019145117.patch</filename>
            <type>text/plain</type>
            <size>17854</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE3LTEwLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0JpbmRpbmdzXSBTdGFuZGFyZGl6ZSBv
biBET01Qcm9taXNlIGFzIHRoZSB3YXkgdG8gc3RvcmUgcGFzc2VkIGluIHByb21pc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg1MzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHN0YW5kYXJk
aXplcyBvbiBSZWZQdHI8RE9NUHJvbWlzZT4gYXMgdGhlIGNhbm9uaWNhbCB3YXkgdG8gc3RvcmUg
YSBwcm9taXNlCisgICAgICAgIHRoYXQgaGFzIGJlZW4gcGFzc2VkIGluIGZyb20gSlMuIFRoaXMg
ZG9lcyBub3QgY2hhbmdlIHByb21pc2VzIHRoYXQgc3RhcnQgb2ZmIGluCisgICAgICAgIFdlYkNv
cmUgYW5kIGFyZSBwYXNzZWQgdG8gSlM7IHRoZXkgcmVtYWluIHVzaW5nIERPTVByb21pc2VEZWZl
cnJlZCBhbmQgRE9NUHJvbWlzZVByb3h5LgorCisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKiBkb20vUHJvbWlzZVJlamVjdGlv
bkV2ZW50Lmg6CisgICAgICAgICogZG9tL1JlamVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwOgorCisg
ICAgICAgICAgICBVc2UgYSBSZWZQdHI8RE9NUHJvbWlzZT4gcmF0aGVyIHRoYW4gYSBKU1Byb21p
c2UqIHRvIGhvbGQgb250byB0aGUgcHJvbWlzZS4KKworICAgICAgICAqIGJpbmRpbmdzL0lETFR5
cGVzLmg6CisKKyAgICAgICAgICAgIFVzZSBJRExXcmFwcGVyIHRvIGdldCBiZXR0ZXIgZGVmYXVs
dHMsIHNpbmNlIERPTVByb21pc2UgaXMgcmVmY291bnRlZC4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJ
RExQcm9taXNlPFQ+Pjo6Y29udmVydCk6CisKKyAgICAgICAgICAgIFN3aXRjaCBkZWZhdWx0IGNv
bnZlcnNpb24gdG8gcmV0dXJuIGEgUmVmUHRyPERPTVByb21pc2U+IHJhdGhlciB0aGFuIGEgSlNQ
cm9taXNlKgorCisgICAgICAgIChXZWJDb3JlOjpKU0NvbnZlcnRlcjxJRExQcm9taXNlPFQ+Pjo6
Y29udmVydCk6CisKKyAgICAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIGZyb20g
YSBET01Qcm9taXNlIHRvIGEgSlNWYWx1ZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpjcmVhdGUpOiBEZWxldGVkLgorCisgICAgICAgICAg
ICBSZW1vdmUgbm93IHVudXNlZCBjb25zdHJ1Y3Rvci4gICAgCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGFi
bGVFdmVudDo6d2FpdFVudGlsKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZUV2ZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5pZGw6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hFdmVudDo6cmVzcG9uZFdpdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hF
dmVudDo6cHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNo
RXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGw6CisKKyAg
ICAgICAgICAgIEFkZHJlc3MgRklYTUVzIGFuZCByZW1vdmUgbmVlZCBmb3IgcGFzc2luZyBhbiBF
eGVjU3RhdGUgdG8gRXh0ZW5kYWJsZUV2ZW50CisgICAgICAgICAgICBhbmQgRmV0Y2hFdmVudCBi
eSB1c2luZyB0aGUgbmV3IGRlZmF1bHQgY29udmVyc2lvbiB0byBET01Qcm9taXNlLgorCiAyMDE3
LTEwLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZyYW1l
Vmlldzo6bGF5b3V0IGNsZWFudXBdIE1vdmUgc2Nyb2xsYmFycyBzZXR1cCBsb2dpYyB0byBhIHNl
cGFyYXRlIGZ1bmN0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5j
cHAJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6flBheW1lbnRSZXF1ZQogewog
fQogCi12b2lkIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6OnVwZGF0ZVdpdGgoSlNDOjpKU1By
b21pc2UqKQordm9pZCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50Ojp1cGRhdGVXaXRoKFJlZlB0
cjxET01Qcm9taXNlPiYmKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRl
RXZlbnQuaAkocmV2aXNpb24gMjIzNzEzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDE2ICsyOSwxNCBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKIAotbmFtZXNwYWNlIEpTQyB7
Ci1jbGFzcyBKU1Byb21pc2U7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9N
UHJvbWlzZTsKKwogY2xhc3MgUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudCBmaW5hbCA6IHB1Ymxp
YyBFdmVudCB7CiBwdWJsaWM6CiAgICAgflBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQoKTsKLSAg
ICB2b2lkIHVwZGF0ZVdpdGgoSlNDOjpKU1Byb21pc2UqKTsKKyAgICB2b2lkIHVwZGF0ZVdpdGgo
UmVmUHRyPERPTVByb21pc2U+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMjM3MTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyAr
MjIwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3RydWN0IAogICAgIHVz
aW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdU
Rjo6S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUg
Vjo6SW1wbGVtZW50YXRpb25UeXBlPj4+JjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBJRExQcm9taXNlIDogSURMVHlwZTxET01Qcm9taXNlPiB7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFdyYXBwZXI8RE9NUHJvbWlzZT4gewogICAgIHVz
aW5nIElubmVyVHlwZSA9IFQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnRQcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0UHJvbWlzZS5oCShyZXZpc2lvbiAyMjM3MTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRQcm9taXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExQcm9taXNlPFQ+PiA6IERlZmF1bHRDb252ZXJ0
ZXI8SURMUHJvbWlzZTxUPj4gewotICAgIHVzaW5nIFJldHVyblR5cGUgPSBKU0M6OkpTUHJvbWlz
ZSo7CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IFJlZlB0cjxET01Qcm9taXNlPjsKIAogICAgIC8v
IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLXByb21pc2UKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CkBA
IC01NCw3ICs1NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQK
ICAgICAgICAgQVNTRVJUKHByb21pc2UpOwogCiAgICAgICAgIC8vIDMuIFJldHVybiB0aGUgSURM
IHByb21pc2UgdHlwZSB2YWx1ZSB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVj
dCBhcyBwcm9taXNlLgotICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICAgICAgcmV0dXJuIERP
TVByb21pc2U6OmNyZWF0ZSgqZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZSk7CiAgICAgfQogfTsKIApA
QCAtNjIsOSArNjIsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IHRydWU7CiAKLSAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYs
IEpTQzo6SlNQcm9taXNlJiBwcm9taXNlKQorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVy
dChKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgRE9NUHJvbWlzZSYgcHJvbWlz
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmcHJvbWlzZTsKKyAgICAgICAgcmV0dXJuIHByb21p
c2UucHJvbWlzZSgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBVPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
Y3BwCShyZXZpc2lvbiAyMjM3MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwyNCArNDksNiBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
UmVmPERPTVByb21pc2U+IERPTVByb21pc2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwot
Ci0gICAgYXV0byBwcm9taXNlQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QucHJvbWlzZUNvbnN0
cnVjdG9yKCk7Ci0gICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBwcm9taXNlQ29uc3RydWN0b3It
PmdldCgmc3RhdGUsIHN0YXRlLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVz
b2x2ZVByaXZhdGVOYW1lKCkpOwotICAgIEFTU0VSVChyZXNvbHZlRnVuY3Rpb24uaXNGdW5jdGlv
bigpKTsKLQotICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFy
Z3VtZW50cy5hcHBlbmQodmFsdWUpOwotICAgIGF1dG8gcmVzdWx0ID0gY2FsbEZ1bmN0aW9uKHN0
YXRlLCByZXNvbHZlRnVuY3Rpb24sIHByb21pc2VDb25zdHJ1Y3RvciwgYXJndW1lbnRzKTsKLQot
ICAgIGF1dG8qIHByb21pc2UgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTUHJvbWlzZSo+KHJlc3VsdCk7
Ci0gICAgQVNTRVJUKHByb21pc2UpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3Qs
ICpwcm9taXNlKTsKLX0KLQogdm9pZCBET01Qcm9taXNlOjp3aGVuU2V0dGxlZChzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmgJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUHJvbWlzZSA6IHB1YmxpYyBET01HdWFyZGVkPEpT
Qzo6SlNQcm9taXNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01Qcm9taXNlPiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBSZWY8RE9NUHJv
bWlzZT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNQcm9t
aXNlJiBwcm9taXNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NUHJv
bWlzZShnbG9iYWxPYmplY3QsIHByb21pc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMjM3MTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgc3ViIFBhc3NBcmd1bWVudEV4cHJl
c3Npb24KICAgICAgICAgcmV0dXJuICIke25hbWV9LnJlbGVhc2VOb25OdWxsKCkiOwogICAgIH0K
IAotICAgIHJldHVybiAiJHtuYW1lfS5yZWxlYXNlTm9uTnVsbCgpIiBpZiAkY29kZUdlbmVyYXRv
ci0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJh
Y2tGdW5jdGlvbigkdHlwZSk7CisgICAgcmV0dXJuICIke25hbWV9LnJlbGVhc2VOb25OdWxsKCki
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNQ
cm9taXNlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICIqJHtuYW1lfSIgaWYgJGNvZGVHZW5lcmF0
b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOwogICAgIHJldHVybiAiV1RGTW92ZSgke25hbWV9KSI7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cAkocmV2aXNpb24gMjIzNzEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rp
b25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsyNywxNiBAQAogI2luY2x1ZGUg
IlByb21pc2VSZWplY3Rpb25FdmVudC5oIgogCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSA8aGVhcC9IZWFwSW5saW5lcy5o
PgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIFByb21pc2VSZWplY3Rpb25FdmVudDo6UHJvbWlz
ZVJlamVjdGlvbkV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBF
dmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQotICAgICwgbV9wcm9taXNlKHN0YXRl
LnZtKCksIGluaXRpYWxpemVyLnByb21pc2UpCisgICAgLCBtX3Byb21pc2UoKihpbml0aWFsaXpl
ci5wcm9taXNlKSkKICAgICAsIG1fcmVhc29uKHN0YXRlLnZtKCksIGluaXRpYWxpemVyLnJlYXNv
bikKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50
LmgJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0
aW9uRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE1IEBACiAKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9K
U1Byb21pc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01Qcm9taXNlOwor
CiBjbGFzcyBQcm9taXNlUmVqZWN0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVi
bGljOgogICAgIHN0cnVjdCBJbml0IDogRXZlbnRJbml0IHsKLSAgICAgICAgSlNDOjpKU1Byb21p
c2UqIHByb21pc2U7CisgICAgICAgIFJlZlB0cjxET01Qcm9taXNlPiBwcm9taXNlOwogICAgICAg
ICBKU0M6OkpTVmFsdWUgcmVhc29uOwogICAgIH07CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+UHJvbWlzZVJlamVjdGlvbkV2ZW50KCk7CiAKLSAgICBKU0M6OkpT
UHJvbWlzZSYgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuICptX3Byb21pc2UuZ2V0KCk7IH0KKyAg
ICBET01Qcm9taXNlJiBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9
CiAgICAgSlNDOjpKU1ZhbHVlIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uLmdldCgp
OyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFByb21pc2VSZWplY3Rpb25FdmVudEludGVyZmFjZVR5cGU7IH0KQEAgLTUzLDcg
KzU0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQcm9taXNlUmVqZWN0aW9uRXZlbnQoSlND
OjpFeGVjU3RhdGUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVk
KTsKIAotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNQcm9taXNlPiBtX3Byb21pc2U7CisgICAgUmVm
PERPTVByb21pc2U+IG1fcHJvbWlzZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1f
cmVhc29uOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JlamVjdGVkUHJvbWlzZVRy
YWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9SZWplY3RlZFByb21p
c2VUcmFja2VyLmNwcAkocmV2aXNpb24gMjIzNzEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jl
amVjdGVkUHJvbWlzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcg
QEAgdm9pZCBSZWplY3RlZFByb21pc2VUcmFja2VyOjpyZXBvcnRVbmhhbgogCiAgICAgICAgIFBy
b21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCBpbml0aWFsaXplcjsKICAgICAgICAgaW5pdGlhbGl6
ZXIuY2FuY2VsYWJsZSA9IHRydWU7Ci0gICAgICAgIGluaXRpYWxpemVyLnByb21pc2UgPSAmcHJv
bWlzZTsKKyAgICAgICAgaW5pdGlhbGl6ZXIucHJvbWlzZSA9ICZkb21Qcm9taXNlOwogICAgICAg
ICBpbml0aWFsaXplci5yZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICAgICAgYXV0
byBldmVudCA9IFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKHN0YXRlLCBldmVudE5hbWVz
KCkudW5oYW5kbGVkcmVqZWN0aW9uRXZlbnQsIGluaXRpYWxpemVyKTsKQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI6OnJlcG9ydFJlamVjCiAgICAgYXV0byYg
cHJvbWlzZSA9ICpyZWplY3RlZFByb21pc2UtPnByb21pc2UoKTsKIAogICAgIFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6SW5pdCBpbml0aWFsaXplcjsKLSAgICBpbml0aWFsaXplci5wcm9taXNlID0g
JnByb21pc2U7CisgICAgaW5pdGlhbGl6ZXIucHJvbWlzZSA9IHJlamVjdGVkUHJvbWlzZS5wdHIo
KTsKICAgICBpbml0aWFsaXplci5yZWFzb24gPSBwcm9taXNlLnJlc3VsdCh2bSk7CiAKICAgICBh
dXRvIGV2ZW50ID0gUHJvbWlzZVJlamVjdGlvbkV2ZW50OjpjcmVhdGUoc3RhdGUsIGV2ZW50TmFt
ZXMoKS5yZWplY3Rpb25oYW5kbGVkRXZlbnQsIGluaXRpYWxpemVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCShyZXZp
c2lvbiAyMjM3MTMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRXh0ZW5kYWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBFeHRlbmRhYmxlRXZlbnRJbml0JiBpbml0aWFsaXplciwg
SXNUcnVzdGVkIGlzVHJ1c3RlZCkKQEAgLTM1LDcgKzM3LDcgQEAgRXh0ZW5kYWJsZUV2ZW50OjpF
eHRlbmRhYmxlRXZlbnQoY29uc3QgQQogewogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBFeHRlbmRh
YmxlRXZlbnQ6OndhaXRVbnRpbChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBw
cm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gRXh0ZW5kYWJsZUV2ZW50Ojp3YWl0VW50aWwoUmVm
PERPTVByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIWlzVHJ1c3RlZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXZl
bnQgaXMgbm90IHRydXN0ZWQiKSB9OwpAQCAtNDMsOCArNDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBFeHRlbmRhYmxlRXZlbnQ6OndhaXRVCiAgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1w
dHkoKSAmJiBpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hl
ZCIpIH07CiAKLSAgICBhZGRQZW5kaW5nUHJvbWlzZShET01Qcm9taXNlOjpjcmVhdGUoc3RhdGUs
IHByb21pc2UpKTsKLQorICAgIGFkZFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpOwog
ICAgIHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9FeHRlbmRhYmxlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmgJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTEgKzI5LDEyIEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV4dGVu
ZGFibGVFdmVudEluaXQuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTVByb21pc2U7
CisKIGNsYXNzIEV4dGVuZGFibGVFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxFeHRlbmRhYmxlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEV4dGVuZGFibGVFdmVudEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObykKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
RXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBF
eHRlbmRhYmxlRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiB3
YWl0VW50aWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHdhaXRVbnRpbChSZWY8RE9NUHJvbWlzZT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG9uRmluaXNoZWRXYWl0aW5nRm9yVGVzdGluZyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZl
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlRXZlbnQuaWRsCShyZXZpc2lvbiAyMjM3MTMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqLwogCi0vL0ZJWE1F
OiBTaG91bGQgYmUgZXhwb3NlZCBvbiBTZXJ2aWNlV29ya2VyIG9ubHkuCisvLyBGSVhNRTogU2hv
dWxkIGJlIGV4cG9zZWQgb24gU2VydmljZVdvcmtlciBvbmx5LgogWwogICAgIENvbnN0cnVjdG9y
KERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBFeHRlbmRhYmxlRXZlbnRJbml0IGV2ZW50SW5pdERp
Y3QpLAogICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLApAQCAtMzEsOCArMzEsNiBAQAog
ICAgIEV4cG9zZWQ9KFNlcnZpY2VXb3JrZXIsV29ya2VyLFdpbmRvdyksCiAgICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotXQotaW50
ZXJmYWNlIEV4dGVuZGFibGVFdmVudCA6IEV2ZW50IHsKLSAgICAvLyBGSVhNRTogQmluZGluZyBn
ZW5lcmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gd3JhcCBhbnkgbm9uIFByb21pc2UgdmFsdWUgaW50
byBhIHByb21pc2UgYW5kIHBhc3MgaXQgdG8gd2FpdFVudGlsLgotICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgd2FpdFVudGlsKGFueSBmKTsKK10gaW50
ZXJmYWNlIEV4dGVuZGFibGVFdmVudCA6IEV2ZW50IHsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgd2FpdFVudGlsKFByb21pc2U8YW55PiBmKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCShyZXZpc2lvbiAyMjM3MTMpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
ZXRjaEV2ZW50LmgiCiAKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0Zl
dGNoUmVzcG9uc2UuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTQxLDcgKzQy
LDcgQEAgRmV0Y2hFdmVudDo6RmV0Y2hFdmVudChjb25zdCBBdG9taWNTdHJpbgogewogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBGZXRjaEV2ZW50OjpyZXNwb25kV2l0aChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSBwcm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hFdmVu
dDo6cmVzcG9uZFdpdGgoUmVmPERPTVByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNC
ZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkV2ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQiKSB9OwpAQCAt
NDksNyArNTAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaEV2ZW50OjpyZXNwb25kV2l0CiAg
ICAgaWYgKG1fcmVzcG9uZFdpdGhFbnRlcmVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXZlbnQgcmVzcG9uZFdpdGggZmxhZyBp
cyBzZXQiKSB9OwogCi0gICAgbV9yZXNwb25kUHJvbWlzZSA9IERPTVByb21pc2U6OmNyZWF0ZShz
dGF0ZSwgcHJvbWlzZSk7CisgICAgbV9yZXNwb25kUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7
CiAgICAgYWRkUGVuZGluZ1Byb21pc2UoKm1fcmVzcG9uZFByb21pc2UpOwogCiAgICAgbV9yZXNw
b25kUHJvbWlzZS0+d2hlblNldHRsZWQoW3RoaXMsIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigp
XSAoKSB7CkBAIC0xMzMsMTIgKzEzNCwxNiBAQCB2b2lkIEZldGNoRXZlbnQ6OnByb21pc2VJc1Nl
dHRsZWQoKQogICAgIH0KIAogICAgIGF1dG8gYm9keSA9IG1fcmVzcG9uc2UtPmNvbnN1bWVCb2R5
KCk7Ci0gICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbXSAoUmVmPEZvcm1EYXRhPiYpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgcmVzcG9uc2UgYm9kaWVzLgotICAgIH0sIFt0
aGlzXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBtX3Jlc3BvbnNlQm9k
eSA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICB9LCBbXSAoc3RkOjpudWxscHRyX3QmKSB7Ci0gICAg
fSk7CisgICAgV1RGOjpzd2l0Y2hPbihib2R5LCAKKyAgICAgICAgW10gKFJlZjxGb3JtRGF0YT4m
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSByZXNwb25zZSBib2Rp
ZXMuCisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgICAgICAgICAgbV9yZXNwb25zZUJvZHkgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgIH0sIAorICAgICAgICBbXSAoc3RkOjpudWxscHRyX3QmKSB7CisgICAgICAgIH0KKyAgICAp
OwogCiAgICAgcHJvY2Vzc1Jlc3BvbnNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBGZXRjaEV2ZW50SW50ZXJmYWNlVHlwZTsgfQogCi0gICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVzcG9uZFdpdGgoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3BvbmRXaXRoKFJlZjxET01Qcm9taXNlPiYm
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb25SZXNwb25zZShXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5pZGwJKHJldmlzaW9uIDIyMzcxMykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9GZXRjaEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAog
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqLwogCi0vL0ZJWE1FOiBTaG91bGQg
YmUgZXhwb3NlZCBvbiBTZXJ2aWNlV29ya2VyIG9ubHkuCisvLyBGSVhNRTogU2hvdWxkIGJlIGV4
cG9zZWQgb24gU2VydmljZVdvcmtlciBvbmx5LgogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmlu
ZyB0eXBlLCBGZXRjaEV2ZW50SW5pdCBldmVudEluaXREaWN0KSwKICAgICBDb25kaXRpb25hbD1T
RVJWSUNFX1dPUktFUiwKQEAgLTMyLDE1ICszMiwxMyBAQAogICAgIEV4cG9zZWQ9KFNlcnZpY2VX
b3JrZXIsV29ya2VyLFdpbmRvdyksCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0Ci1dCi1pbnRlcmZhY2UgRmV0Y2hFdmVudCA6IEV4dGVu
ZGFibGVFdmVudCB7CitdIGludGVyZmFjZSBGZXRjaEV2ZW50IDogRXh0ZW5kYWJsZUV2ZW50IHsK
ICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZldGNoUmVxdWVzdCByZXF1ZXN0
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY2xpZW50SWQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyByZXNlcnZlZENsaWVudElkOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgdGFyZ2V0Q2xpZW50SWQ7CiAKLSAgICAvLyBGSVhNRTogQmluZGlu
ZyBnZW5lcmF0b3Igc2hvdWxkIGJlIGFibGUgdG8gd3JhcCBhbnkgbm9uIFByb21pc2UgdmFsdWUg
aW50byBhIHByb21pc2UgYW5kIHBhc3MgaXQgdG8gcmVzcG9uZFdpdGguCi0gICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZXNwb25kV2l0aChhbnkgcik7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlc3BvbmRXaXRoKFByb21pc2U8RmV0Y2hS
ZXNwb25zZT4gcik7CiB9OwogCiBkaWN0aW9uYXJ5IEZldGNoRXZlbnRJbml0IDogRXh0ZW5kYWJs
ZUV2ZW50SW5pdCB7Cg==
</data>
<flag name="review"
          id="343932"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>