<?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>202929</bug_id>
          
          <creation_ts>2019-10-14 08:31:26 -0700</creation_ts>
          <short_desc>[WK2] Have WebBackForwardCache class coordinate page caching in all WebProcesses</short_desc>
          <delta_ts>2019-10-15 08:48:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202989</see_also>
          <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>
          
          <blocked>202293</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579634</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 08:31:26 -0700</bug_when>
    <thetext>Have WebBackForwardCache class coordinate page caching in all WebProcesses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579640</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-14 08:43:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/56250421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579665</commentid>
    <comment_count>2</comment_count>
      <attachid>380889</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 09:58:02 -0700</bug_when>
    <thetext>Created attachment 380889
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579727</commentid>
    <comment_count>3</comment_count>
      <attachid>380905</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 11:49:21 -0700</bug_when>
    <thetext>Created attachment 380905
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579833</commentid>
    <comment_count>4</comment_count>
      <attachid>380921</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 14:43:10 -0700</bug_when>
    <thetext>Created attachment 380921
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579876</commentid>
    <comment_count>5</comment_count>
      <attachid>380928</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 15:56:15 -0700</bug_when>
    <thetext>Created attachment 380928
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579955</commentid>
    <comment_count>6</comment_count>
      <attachid>380947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 19:12:32 -0700</bug_when>
    <thetext>Created attachment 380947
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579957</commentid>
    <comment_count>7</comment_count>
      <attachid>380949</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 19:17:36 -0700</bug_when>
    <thetext>Created attachment 380949
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579958</commentid>
    <comment_count>8</comment_count>
      <attachid>380950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 20:18:23 -0700</bug_when>
    <thetext>Created attachment 380950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579963</commentid>
    <comment_count>9</comment_count>
      <attachid>380951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 20:25:42 -0700</bug_when>
    <thetext>Created attachment 380951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579971</commentid>
    <comment_count>10</comment_count>
      <attachid>380951</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 20:54:13 -0700</bug_when>
    <thetext>Comment on attachment 380951
Patch

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

&gt; Source/WebKit/UIProcess/WebBackForwardCache.h:70
&gt; +    Vector&lt;WebBackForwardListItem*&gt; m_itemsWithCachedPage;

Might it be useful to have inline capacity of 2 here?

&gt; Source/WebKit/UIProcess/WebProcessPool.h:598
&gt;      WebProcessProxy* m_prewarmedProcess { nullptr };
&gt;      WebProcessProxy* m_dummyProcessProxy { nullptr }; // A lightweight WebProcessProxy without backing process.

These should probably be WeakPtr&lt;WebProcessProxy&gt;, maybe not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579972</commentid>
    <comment_count>11</comment_count>
      <attachid>380956</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 21:00:12 -0700</bug_when>
    <thetext>Created attachment 380956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579973</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 21:00:46 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Comment on attachment 380951 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380951&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebBackForwardCache.h:70
&gt; &gt; +    Vector&lt;WebBackForwardListItem*&gt; m_itemsWithCachedPage;
&gt; 
&gt; Might it be useful to have inline capacity of 2 here?

Done.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.h:598
&gt; &gt;      WebProcessProxy* m_prewarmedProcess { nullptr };
&gt; &gt;      WebProcessProxy* m_dummyProcessProxy { nullptr }; // A lightweight WebProcessProxy without backing process.
&gt; 
&gt; These should probably be WeakPtr&lt;WebProcessProxy&gt;, maybe not in this patch.

Why not. I can take care of this in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579992</commentid>
    <comment_count>13</comment_count>
      <attachid>380956</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 22:29:03 -0700</bug_when>
    <thetext>Comment on attachment 380956
Patch

Clearing flags on attachment: 380956

Committed r251121: &lt;https://trac.webkit.org/changeset/251121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579993</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 22:29:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579995</commentid>
    <comment_count>15</comment_count>
      <attachid>380956</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-14 22:32:00 -0700</bug_when>
    <thetext>Comment on attachment 380956
Patch

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

&gt; Source/WebKit/UIProcess/WebBackForwardCache.cpp:41
&gt; +class EntryWithSuspendedPage final : public WebBackForwardCacheEntry {

Is subclassing here really necessary? I feel the code would be easier to follow if WebBackForwardCacheEntry was a concrete type and having a suspended page or not was just a state.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:635
&gt; +    if (!!item-&gt;backForwardCacheEntry() != itemState.hasCachedPage) {

That !! seems unnecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580097</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-15 07:53:23 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #15)
&gt; Comment on attachment 380956 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380956&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebBackForwardCache.cpp:41
&gt; &gt; +class EntryWithSuspendedPage final : public WebBackForwardCacheEntry {
&gt; 
&gt; Is subclassing here really necessary? I feel the code would be easier to
&gt; follow if WebBackForwardCacheEntry was a concrete type and having a
&gt; suspended page or not was just a state.

My earlier iteration wasn’t using inheritance and I found it less clear. However, given your feedback, I will give it another shot and upload a patch so you can decide.

&gt; &gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:635
&gt; &gt; +    if (!!item-&gt;backForwardCacheEntry() != itemState.hasCachedPage) {
&gt; 
&gt; That !! seems unnecessary

Felt nicer to compare Booleans.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380889</attachid>
            <date>2019-10-14 09:58:02 -0700</date>
            <delta_ts>2019-10-14 11:49:21 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>202929_wip.patch</filename>
            <type>text/plain</type>
            <size>43617</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNTlhMjZiOWE4OTEuLjY5
OTQ3ZWY3MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTk4
LDggKzE5OCw2IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAg
aWYgKCFtX2lzTWFpbkZyYW1lKQogICAgICAgICBmcmFtZS5wYWdlKCktPmRlY3JlbWVudFN1YmZy
YW1lQ291bnQoKTsKIAotICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VD
YWNoZSgpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChtX2lzTWFpbkZyYW1lKQogICAgICAg
ICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4g
ZnJhbWUgdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1YjguLmQ5YTkyOWY4ZTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYgKzE3MiwxNCBAQCBib29s
IEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9CiAKK3Zv
aWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+
JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hlID0gaXNJblBhZ2VDYWNo
ZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFnZSk7CisgICAgaWYgKHdh
c0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgbm90aWZ5Q2hhbmdlZCgp
OworfQorCiBVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7
IH0sIG1fdXJsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4
YWY5OGU0Yzk4Mi4uMWZkMDQxYWQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKQEAgLTIxOSw2ICsyMTksOCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3Rv
cnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRl
bShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGVUaXRsZSwgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIHNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYpOworCiAgICAg
SGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IGdl
bmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApp
bmRleCBlMzU5NDJjOWQ5Yi4uNmNlYTc4MjA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFi
bGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0g
ICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7
CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdl
KSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsK
ICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KQEAgLTUwMCw3ICs1MDAsNyBAQCB2
b2lkIFBhZ2VDYWNoZTo6cmVtb3ZlQWxsSXRlbXNGb3JQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAg
IGF1dG8gY3VycmVudCA9IGl0OwogICAgICAgICArK2l0OwogICAgICAgICBpZiAoJigqY3VycmVu
dCktPm1fY2FjaGVkUGFnZS0+cGFnZSgpID09ICZwYWdlKSB7Ci0gICAgICAgICAgICAoKmN1cnJl
bnQpLT5tX2NhY2hlZFBhZ2UgPSBudWxscHRyOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0
Q2FjaGVkUGFnZShudWxscHRyKTsKICAgICAgICAgICAgIG1faXRlbXMucmVtb3ZlKGN1cnJlbnQp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTMxLDE0ICs1MzEsMTQgQEAgdm9pZCBQYWdlQ2FjaGU6
OnJlbW92ZShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pdGVt
cy5yZW1vdmUoJml0ZW0pOwotICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbnVsbHB0cjsKKyAgICBp
dGVtLnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiB9CiAKIHZvaWQgUGFnZUNhY2hlOjpwcnVuZShQ
cnVuaW5nUmVhc29uIHBydW5pbmdSZWFzb24pCiB7CiAgICAgd2hpbGUgKHBhZ2VDb3VudCgpID4g
bWF4U2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gb2xkZXN0SXRlbSA9IG1faXRlbXMudGFrZUZpcnN0
KCk7Ci0gICAgICAgIG9sZGVzdEl0ZW0tPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
IG9sZGVzdEl0ZW0tPnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiAgICAgICAgIG9sZGVzdEl0ZW0t
Pm1fcHJ1bmluZ1JlYXNvbiA9IHBydW5pbmdSZWFzb247CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTc2ZGM1NTRlNjUu
LmU1OTZmYTAzZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICNlbmRpZgog
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsIHsgfQogCi0g
ICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlc3Rv
cmVGcm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21l
RnJhbWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGVjNzMyY2MwMDIzLi44YzdmMTc1ZjA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI3OCw3ICsyNzgsNiBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgPSAwOyAvLyBDYW4gY2hh
bmdlIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIERPTSBtb2RpZmljYXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBiMzcwNjJjMTM4OS4uODIxOGIzZWI2ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMjI5LDYgKzIyOSw3IEBAIHZvaWQg
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHBhZ2VT
dGF0ZTsKKyAgICBlbmNvZGVyIDw8IGhhc0NhY2hlZFBhZ2U7CiB9CiAKIE9wdGlvbmFsPEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjQzLDYgKzI0NCw5IEBAIE9wdGlvbmFsPEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFnZVN0YXRlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lmhhc0NhY2hlZFBhZ2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCBhMzI5
Zjk1MzMxMC4uOTkzZjBiYTc4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBA
IC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90
PiBzbmFwc2hvdDsKICNlbmRpZgorICAgIGJvb2wgaGFzQ2FjaGVkUGFnZSB7IGZhbHNlIH07CiB9
OwogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBiMDgyNWFmODZlYS4uZWNmM2Vm
OGUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCisjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4KQEAg
LTE2MCwzOCArMTYxLDM0IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xv
bmUoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgb3RoZXIpCiAKIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6d2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExpc3QoKQogewotICAgIGlm
IChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+YmFja0ZvcndhcmRD
YWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkUGFnZSk7
CisgICAgaWYgKG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5KQorICAgICAgICBtX2JhY2tGb3J3YXJk
Q2FjaGVFbnRyeS0+YmFja0ZvcndhcmRDYWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsKKyAgICBB
U1NFUlQoIW1fYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdl
UHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0
QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnk+JiYgYmFja0ZvcndhcmRDYWNoZUVudHJ5KQogewotICAgIGlmIChtX3N1c3BlbmRlZFBh
Z2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7
Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2UgPSBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpOwotCi0gICAg
aWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5zZXRCYWNrRm9y
d2FyZExpc3RJdGVtKCp0aGlzKTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IFdURk1v
dmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6dGFrZVN1c3BlbmRlZFBhZ2UoKQog
ewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xl
YXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0gICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNw
ZW5kZWRQYWdlLCBudWxscHRyKTsKKyAgICBpZiAoIXN1c3BlbmRlZFBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IHN0ZDo6
ZXhjaGFuZ2UobV9iYWNrRm9yd2FyZENhY2hlRW50cnksIG51bGxwdHIpOworICAgIHJldHVybiBi
YWNrRm9yd2FyZENhY2hlRW50cnktPnRha2VTdXNwZW5kZWRQYWdlKCk7CiB9CiAKIFN1c3BlbmRl
ZFBhZ2VQcm94eSogV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsKKyAgICByZXR1cm4gbV9iYWNr
Rm9yd2FyZENhY2hlRW50cnkgPyBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeS0+c3VzcGVuZGVkUGFn
ZSgpIDogbnVsbHB0cjsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKIGNvbnN0IGNoYXIqIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcoKQogewotICAgIHJldHVybiBkZWJ1Z1N0
cmluZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5nKCksICIsIG9y
aWdpbmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1cmwoKSwgbV9z
dXNwZW5kZWRQYWdlID8gIihoYXMgYSBzdXNwZW5kZWQgcGFnZSkiIDogIiIpOworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5n
KCksICIsIG9yaWdpbmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1
cmwoKSwgc3VzcGVuZGVkUGFnZSgpID8gIihoYXMgYSBzdXNwZW5kZWQgcGFnZSkiIDogIiIpOwog
fQogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IGIyY2Y3NzEzNGU1Li5mODMyOTg5YjE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtNDUs
NiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5
OwogY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeTsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJhY2tGb3J3YXJkTGlzdEl0ZW0+IHsKIHB1YmxpYzoK
QEAgLTgxLDYgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3YXNSZW1vdmVkRnJvbUJhY2tG
b3J3YXJkTGlzdCgpOwogCisgICAgYm9vbCBoYXNCYWNrRm9yd2FyZENhY2hlRW50cnkoKSBjb25z
dCB7IHJldHVybiAhIW1fYmFja0ZvcndhcmRDYWNoZUVudHJ5OyB9CiAgICAgU3VzcGVuZGVkUGFn
ZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkgY29uc3Q7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC05
MiwxNCArOTQsMTQgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkJhY2tGb3J3YXJkQ2FjaGUuCiAg
ICAgZnJpZW5kIGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgdm9pZCBzZXRTdXNwZW5k
ZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYpOworICAgIHZvaWQg
c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENh
Y2hlRW50cnk+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRh
a2VTdXNwZW5kZWRQYWdlKCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVt
U3RhdGU7CiAgICAgVVJMIG1fcmVzb3VyY2VEaXJlY3RvcnlVUkw7CiAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX2xh
c3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiBtX3N1c3BlbmRlZFBhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeT4gbV9iYWNrRm9yd2FyZENhY2hlRW50cnk7CiB9OwogCiB0eXBlZGVmIFZlY3Rv
cjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+IEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCmluZGV4IDFlNzQzNWMxMTYzLi4yZjVhODQ2M2Q5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTkwLDYgKzkwLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJT
dGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5j
b2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKKyAgICBlbmNvZGVyIDw8IHBh
Z2VDYWNoZUNhcGFjaXR5OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgdWlQ
cm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc1NES1ZlcnNp
b247CkBAIC0yNjksNiArMjcwLDggQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0
UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnZUNhY2hlQ2FwYWNpdHkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKaW5kZXggMWVjZTgxY2ZjODQuLjk2MjFmODBkNTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0x
MTQsNiArMTE0LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAg
IENhY2hlTW9kZWwgY2FjaGVNb2RlbDsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVv
dXRJbnRlcnZhbCB7IElOVF9NQVggfTsKKyAgICB1bnNpZ25lZCBwYWdlQ2FjaGVDYXBhY2l0eSB7
IDAgfTsKIAogICAgIGJvb2wgc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCB7IGZh
bHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZDdkODk5MWVkNmMuLmFhNDdhMDhlZGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTI2MSw2ICsyNjEsNyBAQCBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAK
IFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwCitVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcAogVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAK
IFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggODM1OGQyZjkwYjEuLjgw
MjQ2Nzg1OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAKQEAgLTgxLDcgKzgxLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJp
bmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKICAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEi
KTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkUmVhY2hMYXlvdXRNaWxlc3Rv
bmUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkUmVzdG9yZVNjcm9sbFBv
c2l0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFNhdmVUb1BhZ2VD
YWNoZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb2dyZXNz
Iik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRWRpdG9yU3Rh
dGVDaGFuZ2VkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwCmluZGV4IDQ2NDg3NjRjZmUyLi41N2RiOWYxZDQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTI3LDE2ICsyNywy
NSBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKIAogI2luY2x1ZGUgIlN1c3Bl
bmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkJhY2tGb3J3YXJkQ2Fj
aGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1bHQ7CitXZWJCYWNrRm9yd2FyZENhY2hl
OjpXZWJCYWNrRm9yd2FyZENhY2hlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKKyAgICA6
IG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCit7Cit9CiAKLVdlYkJhY2tGb3J3YXJkQ2FjaGU6
On5XZWJCYWNrRm9yd2FyZENhY2hlKCkgPSBkZWZhdWx0OworV2ViQmFja0ZvcndhcmRDYWNoZTo6
fldlYkJhY2tGb3J3YXJkQ2FjaGUoKQoreworICAgIGNsZWFyKCk7Cit9CiAKIGlubGluZSB2b2lk
IFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZU9sZGVzdEVudHJ5KCkKIHsKQEAgLTQ2LDE2ICs1
NSwyMSBAQCBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVPbGRlc3RFbnRy
eSgpCiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2Fw
YWNpdHkpCiB7CisgICAgaWYgKG1fY2FwYWNpdHkgPT0gY2FwYWNpdHkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB3aGlsZSAoc2l6ZSgpID4gY2Fw
YWNpdHkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CisKKyAgICBtX3Byb2Nlc3NQb29s
LnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UGFnZUNhY2hlQ2Fw
YWNpdHkobV9jYXBhY2l0eSkpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVu
dHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5k
ZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6
YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRyPFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNrRm9yd2FyZENhY2hlRW50cnkpCiB7CiAgICAg
QVNTRVJUKGNhcGFjaXR5KCkpOwogCi0gICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKFdURk1vdmUo
c3VzcGVuZGVkUGFnZSkpOworICAgIGl0ZW0uc2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KFdURk1v
dmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KSk7CiAgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmFk
ZCgmaXRlbSk7CiAKICAgICBpZiAoc2l6ZSgpID4gY2FwYWNpdHkoKSkKQEAgLTYzLDExICs3Nywy
MSBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cgogICAgIEFTU0VSVChzaXplKCkgPD0gY2FwYWNp
dHkoKSk7CiB9CiAKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4m
JiBzdXNwZW5kZWRQYWdlKQoreworICAgIGFkZEVudHJ5KGl0ZW0sIG1ha2VVbmlxdWU8V2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5PigqdGhpcywgaXRlbSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSkp
OworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyKQoreworICAgIGFkZEVudHJ5KGl0ZW0sIG1ha2VVbmlxdWU8V2ViQmFja0ZvcndhcmRDYWNo
ZUVudHJ5PigqdGhpcywgaXRlbSwgV1RGTW92ZShwcm9jZXNzSWRlbnRpZmllcikpKTsKK30KKwog
dm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiBpdGVtKQogewogICAgIEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMo
Jml0ZW0pKTsKICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKLSAgICBp
dGVtLnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7CisgICAgaXRlbS5zZXRCYWNrRm9yd2FyZENh
Y2hlRW50cnkobnVsbHB0cik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+IFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiBpdGVtKQpAQCAtMTA0LDcgKzEyOCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVt
b3ZlRW50cmllc01hdGNoaW5nKGNvbnN0IEZ1bmN0aW9uPGJvb2woV2ViQmFja0ZvcndhCiAgICAg
ICAgIGF1dG8gY3VycmVudCA9IGl0OwogICAgICAgICArK2l0OwogICAgICAgICBpZiAobWF0Y2hl
cygqKmN1cnJlbnQpKSB7Ci0gICAgICAgICAgICAoKmN1cnJlbnQpLT5zZXRTdXNwZW5kZWRQYWdl
KG51bGxwdHIpOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0QmFja0ZvcndhcmRDYWNoZUVu
dHJ5KG51bGxwdHIpOwogICAgICAgICAgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZShj
dXJyZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTExNCw3ICsxMzgsNyBAQCB2b2lkIFdlYkJh
Y2tGb3J3YXJkQ2FjaGU6OmNsZWFyKCkKIHsKICAgICBhdXRvIGl0ZW1zV2l0aENhY2hlZFBhZ2Ug
PSBXVEZNb3ZlKG1faXRlbXNXaXRoQ2FjaGVkUGFnZSk7CiAgICAgZm9yIChhdXRvKiBpdGVtIDog
aXRlbXNXaXRoQ2FjaGVkUGFnZSkKLSAgICAgICAgaXRlbS0+c2V0U3VzcGVuZGVkUGFnZShudWxs
cHRyKTsKKyAgICAgICAgaXRlbS0+c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KG51bGxwdHIpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZENhY2hlLmgKaW5kZXggNGRmMTlhZDRhZTcuLmUyZjU2MTQ3YmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMzIsMTQgKzMzLDE2IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OworY2xhc3Mg
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJCYWNrRm9yd2FyZENhY2hlKCk7CisgICAg
ZXhwbGljaXQgV2ViQmFja0ZvcndhcmRDYWNoZShXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5XZWJC
YWNrRm9yd2FyZENhY2hlKCk7CiAKICAgICB2b2lkIHNldENhcGFjaXR5KHVuc2lnbmVkKTsKQEAg
LTUyLDEzICs1NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVFbnRyaWVzRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICB2b2lk
IGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcik7CiAgICAgdm9pZCByZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZUVudHJ5KFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZU9sZGVzdEVudHJ5
KCk7CiAgICAgdm9pZCByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+Jik7CisgICAgdm9pZCBhZGRFbnRyeShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4m
Jik7CiAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKICAgICB1bnNpZ25lZCBt
X2NhcGFjaXR5IHsgMCB9OwogICAgIExpc3RIYXNoU2V0PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
PiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRiYmFkZWM4M2U2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgorCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5OjpXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0Zv
cndhcmRDYWNoZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlKQorICAgIDogbV9iYWNrRm9yd2Fy
ZENhY2hlKGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgLCBtX3N1c3BlbmRlZFBhZ2UoV1RGTW92ZShz
dXNwZW5kZWRQYWdlKSkKKyAgICAsIG1fYmFja0ZvcndhcmRJdGVtSUQoaXRlbS5pdGVtSUQoKSkK
KyAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIobV9zdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkuY29y
ZVByb2Nlc3NJZGVudGlmaWVyKCkpCit7CisgICAgbV9zdXNwZW5kZWRQYWdlLT5zZXRCYWNrRm9y
d2FyZExpc3RJdGVtKGl0ZW0pOworfQorCitXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6OldlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hl
LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1fYmFja0ZvcndhcmRDYWNoZShiYWNrRm9yd2Fy
ZENhY2hlKQorICAgICwgbV9iYWNrRm9yd2FyZEl0ZW1JRChpdGVtLml0ZW1JRCgpKQorICAgICwg
bV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKK3sKK30KKworV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5Ojp+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCkKK3sKKyAgICBpZiAo
bV9wcm9jZXNzSWRlbnRpZmllcikgeworICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIobV9wcm9jZXNzSWRlbnRpZmllcikpCisg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkNsZWFyQ2FjaGVkUGFnZShtX2JhY2tGb3J3YXJkSXRlbUlEKSwgW3Rva2VuID0gcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0geyB9KTsKKyAgICB9Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeTo6dGFrZVN1c3BlbmRlZFBhZ2UoKQoreworICAgIGlmICghbV9zdXNwZW5kZWRQYWdl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1fYmFja0ZvcndhcmRJdGVtSUQgPSB7
IH07CisgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHsgfTsKKyAgICBtX3N1c3BlbmRlZFBhZ2Ut
PmNsZWFyQmFja0ZvcndhcmRMaXN0SXRlbSgpOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1f
c3VzcGVuZGVkUGFnZSwgbnVsbHB0cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzVhZGYxNGQ4ZDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdl
YkJhY2tGb3J3YXJkQ2FjaGU7CisKK2NsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5KFdlYkJhY2tGb3J3YXJkQ2FjaGUmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwg
c3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJik7CisgICAgV2ViQmFja0Zvcndh
cmRDYWNoZUVudHJ5KFdlYkJhY2tGb3J3YXJkQ2FjaGUmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH5XZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkoKTsKKworICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkQ2FjaGU7IH0KKyAgICBTdXNwZW5kZWRQYWdlUHJv
eHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7
IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVk
UGFnZSgpOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzSWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAg
IFdlYkJhY2tGb3J3YXJkQ2FjaGUmIG1fYmFja0ZvcndhcmRDYWNoZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CisgICAgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBtX2JhY2tGb3J3YXJkSXRlbUlEOworICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fcHJvY2Vzc0lkZW50aWZpZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDgyZTJjNGY3YmUxLi4zNDI5M2NjNjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MDM0LDExICs4MDM0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNhbmNlbENvbXBvc2l0aW9uKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotICAgIG1fcHJvY2Vzcy0+ZGlk
U2F2ZVRvUGFnZUNhY2hlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5u
aW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiB7CiAgICAgaWYgKG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yID09IHBpbm5pbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGE2OTQ4OGRlNjc2Li44NDhmOTY4MzQ3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyNzgsOCArMTI3OCw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mKTsKICAgICB2b2lkIGRpZENh
bmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpOwotCi0gICAgdm9pZCBkaWRTYXZl
VG9QYWdlQ2FjaGUoKTsKICAgICAgICAgCiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQ
aW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MzkzN2QyMDRlOC4uMmQwYmZmOGMxMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTQ1Myw4ICs0NTMsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSgpCiAKLSAgICBEaWRTYXZlVG9QYWdlQ2FjaGUoKQotCiAjaWYg
RU5BQkxFKFdFQl9DUllQVE8pCiAgICAgV3JhcENyeXB0b0tleShWZWN0b3I8dWludDhfdD4ga2V5
KSAtPiAoYm9vbCBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5KSBTeW5jaHJv
bm91cwogICAgIFVud3JhcENyeXB0b0tleShWZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleSkgLT4g
KGJvb2wgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4ga2V5KSBTeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGI3MmQzZDRhMDc0Li5k
Yzk0MjNhNzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMjM2LDcgKzIzNiw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZm9yZWdy
b3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbnMoKTsgfSkKICAgICAsIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVy
KFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkK
ICNlbmRpZgotICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1ha2VVbmlxdWVSZWY8V2ViQmFja0Zv
cndhcmRDYWNoZT4oKSkKKyAgICAsIG1fYmFja0ZvcndhcmRDYWNoZShtYWtlVW5pcXVlUmVmPFdl
YkJhY2tGb3J3YXJkQ2FjaGU+KCp0aGlzKSkKICAgICAsIG1fd2ViUHJvY2Vzc0NhY2hlKG1ha2VV
bmlxdWVSZWY8V2ViUHJvY2Vzc0NhY2hlPigqdGhpcykpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwpAQCAtNzQ1LDEzICs3NDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1l
c3NhZwogICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3Jl
YXRlKG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci50b1N0cmluZygpKS5wdHIoKSkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcykKLXsKLSAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSAmJiBtX3Byb2Nlc3NX
aXRoUGFnZUNhY2hlICE9IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUt
PnJlbGVhc2VQYWdlQ2FjaGUoKTsKLSAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gcHJvY2Vz
czsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVu
c2lvbnMoKQogewogICAgIG1fcmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGggPSByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oaW5qZWN0ZWRCdW5kbGVQYXRoKCkpOwpAQCAtOTM2
LDYgKzkyOSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAKICAgICBwYXJhbWV0ZXJzLmRl
ZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsID0gQVBJOjpVUkxSZXF1ZXN0OjpkZWZhdWx0VGlt
ZW91dEludGVydmFsKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFjaXR5ID0gYmFj
a0ZvcndhcmRDYWNoZSgpLmNhcGFjaXR5KCk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgZ2VuZXJpYyB3YXkgZm9yIHN1cHBsZW1l
bnRzIHRvIGFkZCB0byB0aGUgaW50aWFsaXphdGlvbiBwYXJhbWV0ZXJzLgogICAgIHBhcmFtZXRl
cnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMgPSBzdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eT4oKS0+bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKQEAgLTEwODksOCArMTA4
NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8v
cHJvYmxlbS8xMjIzOTc2NT4gU29tZSBvZiB0aGUgaW52YWxpZGF0aW9uIGNhbGxzIG9mIHRoZSBv
dGhlciBzdXBwbGVtZW50cyBhcmUgc3RpbGwgbmVjZXNzYXJ5IGluIG11bHRpLXByb2Nlc3MgbW9k
ZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRhdGEgc3RydWN0dXJlcyBwZXJ0YWluaW5n
IHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3RlZC4KICAgICAvLyBDbGVhcmluZyBldmVy
eXRoaW5nIGNhdXNlcyBhc3NlcnRpb24gZmFpbHVyZXMsIHNvIGl0J3MgbGVzcyB0cm91YmxlIHRv
IHNraXAgdGhhdCBmb3Igbm93LgogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3Qo
cHJvY2Vzcyk7Ci0gICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykKLSAg
ICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IG51bGxwdHI7CiAKICAgICBtX2JhY2tGb3J3
YXJkQ2FjaGUtPnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKCpwcm9jZXNzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNjBlZjQ5MzFhMjQuLjA5NGQyZGQz
MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQwOCw4
ICs0MDgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SW52YWxpZE1lc3NhZ2VDYWxs
YmFjayh2b2lkICgqKShXS1N0cmluZ1JlZikpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VOYW1lKTsKIAotICAgIHZv
aWQgcHJvY2Vzc0RpZENhY2hlUGFnZShXZWJQcm9jZXNzUHJveHkqKTsKLQogICAgIGJvb2wgaXNV
UkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICB2b2lk
IHJlc2V0SFNUU0hvc3RzKCk7CiAgICAgdm9pZCByZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRl
KGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CkBAIC01OTksNyArNTk3LDYgQEAg
cHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJld2FybWVkUHJvY2VzcyB7IG51bGxw
dHIgfTsKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fZHVtbXlQcm9jZXNzUHJveHkgeyBudWxscHRy
IH07IC8vIEEgbGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IHdpdGhvdXQgYmFja2luZyBwcm9j
ZXNzLgogCi0gICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsgbnVs
bHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1c2luZyBSZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIFBBTDo6U2Vzc2lvbklEPjsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCwgV2ViUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOTk2MGFjZjA4
ZDMuLjBiZTc4Zjg3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTYzMSw2ICs2MzEsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0
ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW0KICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaXRlbS0+c2V0UGFnZVN0YXRlKFBhZ2VTdGF0ZSB7IGl0ZW1T
dGF0ZS5wYWdlU3RhdGUgfSk7CisKKyAgICBpZiAoaXRlbS0+aGFzQmFja0ZvcndhcmRDYWNoZUVu
dHJ5KCkgIT0gaXRlbVN0YXRlLmhhc0NhY2hlZFBhZ2UpIHsKKyAgICAgICAgaWYgKGl0ZW1TdGF0
ZS5oYXNDYWNoZWRQYWdlKQorICAgICAgICAgICAgcHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENh
Y2hlKCkuYWRkRW50cnkoKml0ZW0sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3Zl
RW50cnkoKml0ZW0pOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpAQCAtOTg0LDE3ICs5OTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlVGV4dENo
ZWNrZXJTdGF0ZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRD
aGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgbV9wcm9jZXNzUG9vbC0+cHJv
Y2Vzc0RpZENhY2hlUGFnZSh0aGlzKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVh
c2VQYWdlQ2FjaGUoKQotewotICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWxlYXNlUGFnZUNhY2hlKCksIDApOwotfQotCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA4MzIzNDlhOTlmMC4uY2Zl
NGM5MWVmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBA
IC0xODYsOSArMTg2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZCgpOwogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLSAgICB2
b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKLQogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGRhMjE3NDEwNDI3Li5lNzczNTA5YTRjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTgsNiAr
OTE4LDcgQEAKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oICovOyB9OworCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
Ki87IH07CiAJCTRBM0NDMThCMTlCMDY0MEYwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi87IH07CiAJCTRBM0NDMThEMTlCMDY0MTkwMEQxNEFF
RiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQzE5QUY3QjA0MDAyRUJBQjUgLyog
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovOyB9OwogCQk0QTNDQzE4RjE5QjA3
QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGMzYxOUFGN0FDMzAwMkVC
QUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzIzOCw2ICszMjM5LDggQEAKIAkJNDZD
MzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RjlCMjYxMjM1MjZFQ0YwMDZG
RTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0
MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlB
RjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MjYsNiArNzgyOSw4
IEBACiAJCQkJMUE2MDIyNDkxOEMxNkIwODAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmUubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3
YXJkQ2FjaGUuY3BwICovLAogCQkJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIxNyAvKiBXZWJCYWNr
Rm9yd2FyZENhY2hlLmggKi8sCisJCQkJNDZGOUIyNjEyMzUyNkVDRjAwNkZFNUZBIC8qIFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAgKi8sCisJCQkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZB
IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcw
MDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5
MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1RjRC
RjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtOTg0OCw2ICs5ODUzLDcg
QEAKIAkJCQkxQThFN0QzRDE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc3
RkY3ODUyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QzYyNDRCMjM0Njc5QTQwMDM4
M0ZFNyAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RENFREIyMjE0QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGFjNzIyYTU1ODMwLi4wZWNhNGMxZDMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTE1LDYgKzExNSw3IEBA
IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShjb25z
dCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYKICAgICBzdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1lU3Rh
dGUgPSB0b0ZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0pOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0uc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSgpOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3QgPSBo
aXN0b3J5SXRlbS5zdGF0ZU9iamVjdCgpOworICAgIHN0YXRlLmhhc0NhY2hlZFBhZ2UgPSBoaXN0
b3J5SXRlbS5pc0luUGFnZUNhY2hlKCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5ZmExNWUwOGY2NC4uY2NlZDExZmFiZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTUzMywxNiArMTUzMyw2IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VD
YWNoZSgpCi17Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBp
ZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2ZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFNhdmVUb1BhZ2VDYWNoZSgpKTsKLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
UmVzdG9yZUZyb21QYWdlQ2FjaGUoKQogewogICAgIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGRiNzUyZDU4ODdlLi5hZmEx
N2E0OTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIwNiw3ICsyMDYsNiBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0
Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCAzNDBjOWM0Yzk0NC4uMzQ2YzRjZWEzY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM4Niw2ICszODYsOCBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwo
cGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CiAKKyAgICBzZXRQYWdl
Q2FjaGVDYXBhY2l0eShwYXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFjaXR5KTsKKwogICAgIHNldEFs
d2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKHBhcmFtZXRlcnMuc2hvdWxkQWx3YXlzVXNlQ29t
cGxleFRleHRDb2RlUGF0aCk7CiAKICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHBhcmFt
ZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyk7CkBAIC0xMjk0LDExICsxMjk2LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVja2VyU3RhdGUm
IHRleHRDaGVja2VyU3RhdGUpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbGVhc2VQ
YWdlQ2FjaGUoKQotewotICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVUb1NpemVOb3co
MCwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1cmUpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6
OmZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFU
eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTE3NzksNiArMTc3
NiwyMSBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0UGFnZUNhY2hlQ2FwYWNpdHko
dW5zaWduZWQgY2FwYWNpdHkpCit7CisgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhT
aXplKGNhcGFjaXR5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpjbGVhckNhY2hlZFBhZ2UoQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEhpc3RvcnlJdGVtKiBpdGVt
ID0gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJRChiYWNrRm9yd2FyZEl0ZW1JRCk7
CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKwor
ICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCiBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENO
ZXR3b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRDTmV0d29yaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGFlMWY2MDMwODNjLi40MjJlZWI1YTk1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIENl
cnRpZmljYXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFVzZXJHZXN0dXJlVG9rZW47CitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cjsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHM7CiBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwpAQCAtMzY4LDE0ICszNjksMTUgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRp
ZgogCi0gICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2Vic2l0ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAg
dm9pZCBzZXRNZW1vcnlDYWNoZURpc2FibGVkKGJvb2wpOwogCisgICAgdm9pZCBzZXRQYWdlQ2Fj
aGVDYXBhY2l0eSh1bnNpZ25lZCk7CisgICAgdm9pZCBjbGVhckNhY2hlZFBhZ2UoV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgc2V0RW5hYmxlZFNlcnZp
Y2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9v
bCBoYXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjZWFkMDE2NjUwNi4uODg0YzVh
YTEwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC03NSw4ICs3NSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZlcmVu
Y2UgcGFyYW1ldGVycyk7CiAgICAgSGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBt
ZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSk7CiAKLSAgICBSZWxlYXNl
UGFnZUNhY2hlKCkKLQogICAgIEZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoc3RydWN0IFdlYktpdDo6V2Vic2l0
ZURhdGEgd2Vic2l0ZURhdGEpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2Rp
ZmllZFNpbmNlKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpIEFzeW5jCkBAIC0x
NTMsNiArMTUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAK
ICAgICBDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAKKyAgICBTZXRQYWdl
Q2FjaGVDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSk7CisgICAgQ2xlYXJDYWNoZWRQYWdlKHN0
cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlE
KSAtPiAoKSBBc3luYworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVbmJsb2NrQWNj
ZXNzaWJpbGl0eVNlcnZlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUp
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDY1MTZjOWY0OWIwLi5jMjFi
ZGNmNzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODQsNyArMTg0LDYgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSgpIGZpbmFsOwogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNo
RGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IDhhZTg2YjVjNDhhLi40NjBjOWEyNjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTE0OTUsMTAgKzE0OTUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQ0ZmI1ZDc3
NmM2Li4yNjIxMWZhOTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTky
LDEwICs5OTIsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGb3JOZXdQYWdlKCkKICAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xv
c2luZ0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIGJhY2tncm91bmRDb2xvciwgLyogZml4
ZWRMYXlvdXRTaXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgKi8geyB9KTsK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsK
LX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUo
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMzNhODZjZTU3ZmYuLjg1NmY1
MjVmZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE3Niw3ICsxNzYsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFNh
dmVUb1BhZ2VDYWNoZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2Fj
aGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29s
KSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380905</attachid>
            <date>2019-10-14 11:49:21 -0700</date>
            <delta_ts>2019-10-14 14:43:10 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>202929_wip.patch</filename>
            <type>text/plain</type>
            <size>46029</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNTlhMjZiOWE4OTEuLjY5
OTQ3ZWY3MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTk4
LDggKzE5OCw2IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAg
aWYgKCFtX2lzTWFpbkZyYW1lKQogICAgICAgICBmcmFtZS5wYWdlKCktPmRlY3JlbWVudFN1YmZy
YW1lQ291bnQoKTsKIAotICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VD
YWNoZSgpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChtX2lzTWFpbkZyYW1lKQogICAgICAg
ICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4g
ZnJhbWUgdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1YjguLmQ5YTkyOWY4ZTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYgKzE3MiwxNCBAQCBib29s
IEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9CiAKK3Zv
aWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+
JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hlID0gaXNJblBhZ2VDYWNo
ZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFnZSk7CisgICAgaWYgKHdh
c0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgbm90aWZ5Q2hhbmdlZCgp
OworfQorCiBVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7
IH0sIG1fdXJsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4
YWY5OGU0Yzk4Mi4uMWZkMDQxYWQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKQEAgLTIxOSw2ICsyMTksOCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3Rv
cnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRl
bShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGVUaXRsZSwgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIHNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYpOworCiAgICAg
SGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IGdl
bmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApp
bmRleCBlMzU5NDJjOWQ5Yi4uNmNlYTc4MjA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFi
bGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0g
ICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7
CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdl
KSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsK
ICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KQEAgLTUwMCw3ICs1MDAsNyBAQCB2
b2lkIFBhZ2VDYWNoZTo6cmVtb3ZlQWxsSXRlbXNGb3JQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAg
IGF1dG8gY3VycmVudCA9IGl0OwogICAgICAgICArK2l0OwogICAgICAgICBpZiAoJigqY3VycmVu
dCktPm1fY2FjaGVkUGFnZS0+cGFnZSgpID09ICZwYWdlKSB7Ci0gICAgICAgICAgICAoKmN1cnJl
bnQpLT5tX2NhY2hlZFBhZ2UgPSBudWxscHRyOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0
Q2FjaGVkUGFnZShudWxscHRyKTsKICAgICAgICAgICAgIG1faXRlbXMucmVtb3ZlKGN1cnJlbnQp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTMxLDE0ICs1MzEsMTQgQEAgdm9pZCBQYWdlQ2FjaGU6
OnJlbW92ZShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pdGVt
cy5yZW1vdmUoJml0ZW0pOwotICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbnVsbHB0cjsKKyAgICBp
dGVtLnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiB9CiAKIHZvaWQgUGFnZUNhY2hlOjpwcnVuZShQ
cnVuaW5nUmVhc29uIHBydW5pbmdSZWFzb24pCiB7CiAgICAgd2hpbGUgKHBhZ2VDb3VudCgpID4g
bWF4U2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gb2xkZXN0SXRlbSA9IG1faXRlbXMudGFrZUZpcnN0
KCk7Ci0gICAgICAgIG9sZGVzdEl0ZW0tPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
IG9sZGVzdEl0ZW0tPnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiAgICAgICAgIG9sZGVzdEl0ZW0t
Pm1fcHJ1bmluZ1JlYXNvbiA9IHBydW5pbmdSZWFzb247CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTc2ZGM1NTRlNjUu
LmU1OTZmYTAzZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICNlbmRpZgog
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsIHsgfQogCi0g
ICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlc3Rv
cmVGcm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21l
RnJhbWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGVjNzMyY2MwMDIzLi44YzdmMTc1ZjA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI3OCw3ICsyNzgsNiBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgPSAwOyAvLyBDYW4gY2hh
bmdlIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIERPTSBtb2RpZmljYXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBiMzcwNjJjMTM4OS4uODIxOGIzZWI2ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMjI5LDYgKzIyOSw3IEBAIHZvaWQg
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHBhZ2VT
dGF0ZTsKKyAgICBlbmNvZGVyIDw8IGhhc0NhY2hlZFBhZ2U7CiB9CiAKIE9wdGlvbmFsPEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjQzLDYgKzI0NCw5IEBAIE9wdGlvbmFsPEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFnZVN0YXRlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lmhhc0NhY2hlZFBhZ2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCBhMzI5
Zjk1MzMxMC4uOTkzZjBiYTc4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBA
IC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90
PiBzbmFwc2hvdDsKICNlbmRpZgorICAgIGJvb2wgaGFzQ2FjaGVkUGFnZSB7IGZhbHNlIH07CiB9
OwogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBiMDgyNWFmODZlYS4uYTk2MjFk
MjE4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCisjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4KQEAg
LTE2MCwzOCArMTYxLDM0IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xv
bmUoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgb3RoZXIpCiAKIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6d2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExpc3QoKQogewotICAgIGlm
IChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+YmFja0ZvcndhcmRD
YWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkUGFnZSk7
CisgICAgaWYgKG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5KQorICAgICAgICBtX2JhY2tGb3J3YXJk
Q2FjaGVFbnRyeS0+YmFja0ZvcndhcmRDYWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsKKyAgICBB
U1NFUlQoIW1fYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdl
UHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0
QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnk+JiYgYmFja0ZvcndhcmRDYWNoZUVudHJ5KQogewotICAgIGlmIChtX3N1c3BlbmRlZFBh
Z2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7
Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2UgPSBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpOwotCi0gICAg
aWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5zZXRCYWNrRm9y
d2FyZExpc3RJdGVtKCp0aGlzKTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IFdURk1v
dmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6dGFrZVN1c3BlbmRlZFBhZ2UoKQog
ewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xl
YXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0gICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNw
ZW5kZWRQYWdlLCBudWxscHRyKTsKKyAgICBpZiAoIXN1c3BlbmRlZFBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IHN0ZDo6
ZXhjaGFuZ2UobV9iYWNrRm9yd2FyZENhY2hlRW50cnksIG51bGxwdHIpOworICAgIHJldHVybiBi
YWNrRm9yd2FyZENhY2hlRW50cnktPnRha2VTdXNwZW5kZWRQYWdlKCk7CiB9CiAKIFN1c3BlbmRl
ZFBhZ2VQcm94eSogV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsKKyAgICByZXR1cm4gbV9iYWNr
Rm9yd2FyZENhY2hlRW50cnkgPyBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeS0+c3VzcGVuZGVkUGFn
ZSgpIDogbnVsbHB0cjsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKIGNvbnN0IGNoYXIqIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcoKQogewotICAgIHJldHVybiBkZWJ1Z1N0
cmluZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5nKCksICIsIG9y
aWdpbmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1cmwoKSwgbV9z
dXNwZW5kZWRQYWdlID8gIihoYXMgYSBzdXNwZW5kZWQgcGFnZSkiIDogIiIpOworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5n
KCksICIsIG9yaWdpbmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1
cmwoKSwgbV9iYWNrRm9yd2FyZENhY2hlRW50cnkgPyAiKGhhcyBhIGJhY2svZm9yd2FyZCBjYWNo
ZSBlbnRyeSkiIDogIiIpOwogfQogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IGIyY2Y3NzEzNGU1
Li44OTc0ZmI5N2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
U3VzcGVuZGVkUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKK2NsYXNzIFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJhY2tGb3J3YXJkTGlz
dEl0ZW0+IHsKIHB1YmxpYzoKQEAgLTgxLDYgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3
YXNSZW1vdmVkRnJvbUJhY2tGb3J3YXJkTGlzdCgpOwogCisgICAgV2ViQmFja0ZvcndhcmRDYWNo
ZUVudHJ5KiBiYWNrRm9yd2FyZENhY2hlRW50cnkoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5nZXQoKTsgfQogICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVk
UGFnZSgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtOTIsMTQgKzk0LDE0IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBXZWJCYWNrRm9yd2FyZENhY2hlLgogICAgIGZyaWVuZCBjbGFzcyBX
ZWJCYWNrRm9yd2FyZENhY2hlOwotICAgIHZvaWQgc2V0U3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICB2b2lkIHNldEJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgp
OwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBt
X3Jlc291cmNlRGlyZWN0b3J5VVJMOwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZp
ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQ
YWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+IG1fYmFj
a0ZvcndhcmRDYWNoZUVudHJ5OwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0+PiBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAx
ZTc0MzVjMTE2My4uMmY1YTg0NjNkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC05MCw2ICs5MCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7CiAgICAgZW5jb2Rl
ciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogICAgIGVuY29kZXIgPDwgZGVmYXVsdFJl
cXVlc3RUaW1lb3V0SW50ZXJ2YWw7CisgICAgZW5jb2RlciA8PCBwYWdlQ2FjaGVDYXBhY2l0eTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50
aWZpZXI7CiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NTREtWZXJzaW9uOwpAQCAtMjY5LDYgKzI3
MCw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50
ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51aVBy
b2Nlc3NCdW5kbGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IDFlY2U4MWNmYzg0Li45NjIxZjgwZDU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIHN0
cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBDYWNoZU1vZGVsIGNhY2hl
TW9kZWw7CiAKICAgICBkb3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwgeyBJTlRf
TUFYIH07CisgICAgdW5zaWduZWQgcGFnZUNhY2hlQ2FwYWNpdHkgeyAwIH07CiAKICAgICBib29s
IHNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGggeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IGQ3ZDg5OTFlZDZjLi5hYTQ3YTA4ZWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNjEs
NiArMjYxLDcgQEAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5jcHAKIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcAorVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3BwCiBVSVByb2Nlc3MvV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCBlOThlYzBlYTQ4MC4uOGIwYjQzMGM0MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNs
aWVudC5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgpAQCAtMTYxLDggKzE2Miw4IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omdv
VG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCCiAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJ
dGVtOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0
ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewotICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoJnBhZ2UtPnByb2Nlc3MoKSA9PSBtX3Byb2Nlc3MucHRyKCkpCisgICAgICAgIGlmIChhdXRv
KiBiYWNrRm9yd2FyZENhY2hlRW50cnkgPSBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7
CisgICAgICAgICAgICBpZiAoYmFja0ZvcndhcmRDYWNoZUVudHJ5LT5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAmaXRlbSAhPSB0YXJn
ZXRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKaW5kZXggODM1OGQyZjkwYjEuLjgwMjQ2Nzg1OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTgxLDcgKzgxLDYgQEAgc3RhdGlj
IGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9y
ZVdoaWxlU3VzcGVuZGVkKCkKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZCgiRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZFNhdmVUb1BhZ2VDYWNoZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRTdGFydFByb2dyZXNzIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoIkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKICAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRWRpdG9yU3RhdGVDaGFuZ2VkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDQ2NDg3NjRjZmUyLi45OTU1
ZmFiZjkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZS5jcHAKQEAgLTI3LDE2ICsyNywyNSBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2Fj
aGUuaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVdlYkJhY2tGb3J3YXJkQ2FjaGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1
bHQ7CitXZWJCYWNrRm9yd2FyZENhY2hlOjpXZWJCYWNrRm9yd2FyZENhY2hlKFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCkKKyAgICA6IG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCit7Cit9
CiAKLVdlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENhY2hlKCkgPSBkZWZhdWx0
OworV2ViQmFja0ZvcndhcmRDYWNoZTo6fldlYkJhY2tGb3J3YXJkQ2FjaGUoKQoreworICAgIGNs
ZWFyKCk7Cit9CiAKIGlubGluZSB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZU9sZGVz
dEVudHJ5KCkKIHsKQEAgLTQ2LDE2ICs1NSwyMSBAQCBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVPbGRlc3RFbnRyeSgpCiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6
c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7CisgICAgaWYgKG1fY2FwYWNpdHkgPT0g
Y2FwYWNpdHkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsK
ICAgICB3aGlsZSAoc2l6ZSgpID4gY2FwYWNpdHkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5
KCk7CisKKyAgICBtX3Byb2Nlc3NQb29sLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6U2V0UGFnZUNhY2hlQ2FwYWNpdHkobV9jYXBhY2l0eSkpOwogfQogCi12b2lkIFdl
YkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3Zv
aWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYg
aXRlbSwgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNrRm9y
d2FyZENhY2hlRW50cnkpCiB7CiAgICAgQVNTRVJUKGNhcGFjaXR5KCkpOwogCi0gICAgaXRlbS5z
ZXRTdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFnZSkpOworICAgIGl0ZW0uc2V0QmFj
a0ZvcndhcmRDYWNoZUVudHJ5KFdURk1vdmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KSk7CiAgICAg
bV9pdGVtc1dpdGhDYWNoZWRQYWdlLmFkZCgmaXRlbSk7CiAKICAgICBpZiAoc2l6ZSgpID4gY2Fw
YWNpdHkoKSkKQEAgLTYzLDExICs3NywyMSBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFk
ZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cgogICAg
IEFTU0VSVChzaXplKCkgPD0gY2FwYWNpdHkoKSk7CiB9CiAKK3ZvaWQgV2ViQmFja0ZvcndhcmRD
YWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlKQoreworICAgIGFkZEVudHJ5
KGl0ZW0sIG1ha2VVbmlxdWU8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PigqdGhpcywgaXRlbSwg
V1RGTW92ZShzdXNwZW5kZWRQYWdlKSkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6
OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGFkZEVudHJ5KGl0ZW0sIG1ha2VV
bmlxdWU8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PigqdGhpcywgaXRlbSwgV1RGTW92ZShwcm9j
ZXNzSWRlbnRpZmllcikpKTsKK30KKwogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVF
bnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewogICAgIEFTU0VSVChtX2l0ZW1z
V2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKICAgICBtX2l0ZW1zV2l0aENhY2hlZFBh
Z2UucmVtb3ZlKCZpdGVtKTsKLSAgICBpdGVtLnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7Cisg
ICAgaXRlbS5zZXRCYWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VFbnRy
eShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQpAQCAtNzksMTUgKzEwMywxNSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJCYWNrRm9yd2FyZENhY2hlOjp0YWtl
RW50cnkoV2ViQmFja0ZvcndhcgogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVu
dHJpZXNGb3JQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZW1vdmVF
bnRyaWVzTWF0Y2hpbmcoWyZwcm9jZXNzXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiAm
aXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAgICByZW1vdmVF
bnRyaWVzTWF0Y2hpbmcoWyZwcm9jZXNzXShhdXRvJiBlbnRyeSkgeworICAgICAgICByZXR1cm4g
ZW50cnkuYmFja0ZvcndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gcHJv
Y2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJCYWNr
Rm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7CiAgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFtzZXNzaW9uSURdKGF1dG8mIGl0
ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCkud2Vi
c2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgcmV0dXJu
IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwogICAgIH0pOwogfQogCkBAIC0xMDQsNyArMTI4
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzTWF0Y2hpbmcoY29u
c3QgRnVuY3Rpb248Ym9vbChXZWJCYWNrRm9yd2EKICAgICAgICAgYXV0byBjdXJyZW50ID0gaXQ7
CiAgICAgICAgICsraXQ7CiAgICAgICAgIGlmIChtYXRjaGVzKCoqY3VycmVudCkpIHsKLSAgICAg
ICAgICAgICgqY3VycmVudCktPnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7CisgICAgICAgICAg
ICAoKmN1cnJlbnQpLT5zZXRCYWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CiAgICAgICAg
ICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKGN1cnJlbnQpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTE0LDcgKzEzOCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIo
KQogewogICAgIGF1dG8gaXRlbXNXaXRoQ2FjaGVkUGFnZSA9IFdURk1vdmUobV9pdGVtc1dpdGhD
YWNoZWRQYWdlKTsKICAgICBmb3IgKGF1dG8qIGl0ZW0gOiBpdGVtc1dpdGhDYWNoZWRQYWdlKQot
ICAgICAgICBpdGVtLT5zZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOworICAgICAgICBpdGVtLT5z
ZXRCYWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaApp
bmRleCA0ZGYxOWFkNGFlNy4uZTJmNTYxNDdiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CkBAIC0zMiwxNCArMzMsMTYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZVByb3h5Owor
Y2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFdl
YkJhY2tGb3J3YXJkQ2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2Fy
ZENhY2hlKFdlYlByb2Nlc3NQb29sJik7CiAgICAgfldlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKIAog
ICAgIHZvaWQgc2V0Q2FwYWNpdHkodW5zaWduZWQpOwpAQCAtNTIsMTMgKzU1LDE2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYpOworICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW92
ZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB0YWtlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT2xkZXN0RW50cnkoKTsKICAgICB2b2lkIHJlbW92ZUVu
dHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KT4mKTsKKyAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKIAorICAgIFdlYlByb2Nlc3NQ
b29sJiBtX3Byb2Nlc3NQb29sOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAwIH07CiAgICAg
TGlzdEhhc2hTZXQ8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2FjaGVkUGFn
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGRk
NDQ3ZjRiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgi
CisKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6OldlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiBpdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYm
IHN1c3BlbmRlZFBhZ2UpCisgICAgOiBtX2JhY2tGb3J3YXJkQ2FjaGUoYmFja0ZvcndhcmRDYWNo
ZSkKKyAgICAsIG1fc3VzcGVuZGVkUGFnZShXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKQorICAgICwg
bV9iYWNrRm9yd2FyZEl0ZW1JRChpdGVtLml0ZW1JRCgpKQorICAgICwgbV9wcm9jZXNzSWRlbnRp
ZmllcihtX3N1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSkK
K3sKKyAgICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tGb3J3YXJkTGlzdEl0ZW0oaXRlbSk7Cit9
CisKK1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KFdl
YkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mIGl0ZW0sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQor
ICAgIDogbV9iYWNrRm9yd2FyZENhY2hlKGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgLCBtX2JhY2tG
b3J3YXJkSXRlbUlEKGl0ZW0uaXRlbUlEKCkpCisgICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVyKHBy
b2Nlc3NJZGVudGlmaWVyKQoreworfQorCitXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6On5XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkoKQoreworICAgIGlmIChtX3Byb2Nlc3NJZGVudGlmaWVyKSB7
CisgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9y
SWRlbnRpZmllcihtX3Byb2Nlc3NJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1f
YmFja0ZvcndhcmRJdGVtSUQpLCBbdG9rZW4gPSBwcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpXSB7IH0pOworICAgIH0KK30KKworc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Ojp0YWtlU3VzcGVuZGVk
UGFnZSgpCit7CisgICAgaWYgKCFtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgbV9iYWNrRm9yd2FyZEl0ZW1JRCA9IHsgfTsKKyAgICBtX3Byb2Nlc3NJZGVu
dGlmaWVyID0geyB9OworICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJ
dGVtKCk7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNwZW5kZWRQYWdlLCBudWxscHRy
KTsKK30KKworV2ViUHJvY2Vzc1Byb3h5JiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6OnByb2Nl
c3MoKSBjb25zdAoreworICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIHJldHVybiBt
X3N1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsKKyAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihtX3Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBB
U1NFUlQocHJvY2Vzcyk7CisgICAgcmV0dXJuICpwcm9jZXNzOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhODY4
ZTM3MjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTdXNwZW5kZWRQYWdlUHJv
eHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owor
CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShXZWJCYWNrRm9y
d2FyZENhY2hlJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYpOworICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShXZWJCYWNr
Rm9yd2FyZENhY2hlJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKKyAgICB+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCk7CisKKyAgICBXZWJC
YWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Rm9yd2FyZENhY2hlOyB9CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOyB9CisgICAgc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKTsKKyAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBtX2JhY2tGb3J3YXJkQ2Fj
aGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQ
YWdlOworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgbV9iYWNrRm9yd2Fy
ZEl0ZW1JRDsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3Byb2Nlc3NJZGVudGlm
aWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA4MmUyYzRmN2JlMS4uMzQyOTNjYzYzYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODAzNCwxMSArODAzNCw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsK
LSAgICBtX3Byb2Nlc3MtPmRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotfQotCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5u
aW5nKQogewogICAgIGlmIChtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9PSBwaW5uaW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNjk0ODhkZTY3Ni4uODQ4Zjk2
ODM0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjc4LDgg
KzEyNzgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAgICAgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElEKTsK
LQotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCk7CiAgICAgICAgIAogICAgIHZvaWQgc2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAg
ICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODM5MzdkMjA0
ZTguLjJkMGJmZjhjMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00NTMsOCArNDUzLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKIAogICAgIERpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogCi0gICAgRGlkU2F2ZVRv
UGFnZUNhY2hlKCkKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgIFdyYXBDcnlwdG9LZXko
VmVjdG9yPHVpbnQ4X3Q+IGtleSkgLT4gKGJvb2wgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4g
d3JhcHBlZEtleSkgU3luY2hyb25vdXMKICAgICBVbndyYXBDcnlwdG9LZXkoVmVjdG9yPHVpbnQ4
X3Q+IHdyYXBwZWRLZXkpIC0+IChib29sIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+IGtleSkg
U3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCBiNzJkM2Q0YTA3NC4uZGM5NDIzYTcxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBXZWJQcm9jZXNzUG9vbDo6
V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgLCBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcihbdGhpc10oUmVmQ291bnRl
ckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0pCiAgICAgLCBtX2JhY2tncm91
bmRXZWJQcm9jZXNzQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nl
c3NBc3NlcnRpb25zKCk7IH0pCiAjZW5kaWYKLSAgICAsIG1fYmFja0ZvcndhcmRDYWNoZShtYWtl
VW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2FjaGU+KCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ2Fj
aGUobWFrZVVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENhY2hlPigqdGhpcykpCiAgICAgLCBtX3dl
YlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlByb2Nlc3NDYWNoZT4oKnRoaXMpKQogewog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTc0NSwxMyArNzQ1LDYgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWcKICAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9B
UEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KSkucHRyKCkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZENhY2hlUGFn
ZShXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCi17Ci0gICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdl
Q2FjaGUgJiYgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSAhPSBwcm9jZXNzKQotICAgICAgICBtX3By
b2Nlc3NXaXRoUGFnZUNhY2hlLT5yZWxlYXNlUGFnZUNhY2hlKCk7Ci0gICAgbV9wcm9jZXNzV2l0
aFBhZ2VDYWNoZSA9IHByb2Nlc3M7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQ
YXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKIHsKICAgICBtX3Jlc29sdmVkUGF0aHMuaW5qZWN0
ZWRCdW5kbGVQYXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGluamVjdGVkQnVu
ZGxlUGF0aCgpKTsKQEAgLTkzNiw2ICs5MjksOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0
aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYQog
CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCA9IEFQSTo6VVJM
UmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogCisgICAgcGFyYW1ldGVycy5wYWdl
Q2FjaGVDYXBhY2l0eSA9IGJhY2tGb3J3YXJkQ2FjaGUoKS5jYXBhY2l0eSgpOworCiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZCBiZSBhIGdlbmVy
aWMgd2F5IGZvciBzdXBwbGVtZW50cyB0byBhZGQgdG8gdGhlIGludGlhbGl6YXRpb24gcGFyYW1l
dGVycy4KICAgICBwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zID0gc3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPm5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCk7CkBAIC0xMDg5LDggKzEwODQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgLy8gRklYTUUgKE11bHRpLVdl
YlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFNvbWUgb2YgdGhlIGludmFsaWRh
dGlvbiBjYWxscyBvZiB0aGUgb3RoZXIgc3VwcGxlbWVudHMgYXJlIHN0aWxsIG5lY2Vzc2FyeSBp
biBtdWx0aS1wcm9jZXNzIG1vZGUsIGJ1dCB0aGV5IHNob3VsZCBvbmx5IGFmZmVjdCBkYXRhIHN0
cnVjdHVyZXMgcGVydGFpbmluZyB0byB0aGUgcHJvY2VzcyBiZWluZyBkaXNjb25uZWN0ZWQuCiAg
ICAgLy8gQ2xlYXJpbmcgZXZlcnl0aGluZyBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1cmVzLCBzbyBp
dCdzIGxlc3MgdHJvdWJsZSB0byBza2lwIHRoYXQgZm9yIG5vdy4KICAgICBSZWZQdHI8V2ViUHJv
Y2Vzc1Byb3h5PiBwcm90ZWN0KHByb2Nlc3MpOwotICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNh
Y2hlID09IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBudWxscHRy
OwogCiAgICAgbV9iYWNrRm9yd2FyZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2VzcygqcHJv
Y2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDYw
ZWY0OTMxYTI0Li4wOTRkMmRkMzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCkBAIC00MDgsOCArNDA4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNl
dEludmFsaWRNZXNzYWdlQ2FsbGJhY2sodm9pZCAoKikoV0tTdHJpbmdSZWYpKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNz
YWdlTmFtZSk7CiAKLSAgICB2b2lkIHByb2Nlc3NEaWRDYWNoZVBhZ2UoV2ViUHJvY2Vzc1Byb3h5
Kik7Ci0KICAgICBib29sIGlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykgY29uc3Q7CiAgICAgdm9pZCByZXNldEhTVFNIb3N0cygpOwogICAgIHZvaWQgcmVzZXRIU1RT
SG9zdHNBZGRlZEFmdGVyRGF0ZShkb3VibGUgc3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzApOwpA
QCAtNTk5LDcgKzU5Nyw2IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3ByZXdh
cm1lZFByb2Nlc3MgeyBudWxscHRyIH07CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX2R1bW15UHJv
Y2Vzc1Byb3h5IHsgbnVsbHB0ciB9OyAvLyBBIGxpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSB3
aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4KIAotICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcm9jZXNz
V2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEID0gc3RkOjpwYWlyPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRD47CiAgICAgSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQsIFdlYlByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdv
cmtlclByb2Nlc3NlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDk5NjBhY2YwOGQzLi5mYWNjOTc1ZjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC02MzEsNiArNjMxLDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJiBpdGVtCiAgICAgICAgIHJldHVybjsKIAogICAgIGl0ZW0tPnNldFBhZ2VTdGF0
ZShQYWdlU3RhdGUgeyBpdGVtU3RhdGUucGFnZVN0YXRlIH0pOworCisgICAgaWYgKCEhaXRlbS0+
YmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgIT0gaXRlbVN0YXRlLmhhc0NhY2hlZFBhZ2UpIHsKKyAg
ICAgICAgaWYgKGl0ZW1TdGF0ZS5oYXNDYWNoZWRQYWdlKQorICAgICAgICAgICAgcHJvY2Vzc1Bv
b2woKS5iYWNrRm9yd2FyZENhY2hlKCkuYWRkRW50cnkoKml0ZW0sIGNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJvY2Vzc1Bvb2woKS5iYWNrRm9y
d2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKml0ZW0pOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtOTg0LDE3ICs5OTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpLCAwKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAg
bV9wcm9jZXNzUG9vbC0+cHJvY2Vzc0RpZENhY2hlUGFnZSh0aGlzKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlbGVhc2VQYWdlQ2FjaGUoKQotewotICAgIGlmIChjYW5TZW5kTWVzc2Fn
ZSgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWxlYXNlUGFnZUNhY2hl
KCksIDApOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6d2luZG93U2VydmVyQ29ubmVjdGlv
blN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlTWFw
LnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCA4MzIzNDlhOTlmMC4uY2ZlNGM5MWVmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC0xODYsOSArMTg2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCi0gICAgdm9pZCBkaWRTYXZlVG9Q
YWdlQ2FjaGUoKTsKLSAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKLQogICAgIHZvaWQgZmV0
Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2b2lkIGRlbGV0
ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhMjE3NDEwNDI3Li5lNzcz
NTA5YTRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05MTgsNiArOTE4LDcgQEAKIAkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8q
IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9OwogCQk0NkMzOTIyOTIzMTZFQzREMDA4
RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OworCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEg
LyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTRBM0NDMThCMTlCMDY0MEYwMEQxNEFFRiAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVCQUI1IC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi87IH07CiAJCTRBM0ND
MThEMTlCMDY0MTkwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQzE5
QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovOyB9
OwogCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0
MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzIzOCw2
ICszMjM5LDggQEAKIAkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
RjlCMjYxMjM1MjZFQ0YwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZGOUIyNjIyMzUyNkVEMDAw
NkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkx
OUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc4MjYsNiArNzgyOSw4IEBACiAJCQkJMUE2MDIyNDkxOEMxNkIwODAwQzNFOEM5IC8qIFZp
c2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4
MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICovLAogCQkJCTQ2MDMwMTFCMjM0QkUzMUUw
MDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8sCisJCQkJNDZGOUIyNjEyMzUyNkVD
RjAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAgKi8sCisJCQkJNDZGOUIy
NjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovLAogCQkJ
CUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAog
CQkJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywK
IAkJCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApA
QCAtOTg0OCw2ICs5ODUzLDcgQEAKIAkJCQkxQThFN0QzRDE4QzE1MTQ5MDA1QTcwMkEgLyogVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VE
QTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTc3RkY3ODUyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZG
RTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
QzYyNDRCMjM0Njc5QTQwMDM4M0ZFNyAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFREIyMjE0QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50
aWNhdGlvblJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRUQ2RjIxNDJFRTYz
MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGFjNzIyYTU1
ODMwLi4wZWNhNGMxZDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApA
QCAtMTE1LDYgKzExNSw3IEBAIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZShjb25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYKICAgICBzdGF0ZS5wYWdl
U3RhdGUubWFpbkZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0pOwogICAgIHN0
YXRlLnBhZ2VTdGF0ZS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0u
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zZXNz
aW9uU3RhdGVPYmplY3QgPSBoaXN0b3J5SXRlbS5zdGF0ZU9iamVjdCgpOworICAgIHN0YXRlLmhh
c0NhY2hlZFBhZ2UgPSBoaXN0b3J5SXRlbS5pc0luUGFnZUNhY2hlKCk7CiAgICAgcmV0dXJuIHN0
YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5ZmExNWUwOGY2
NC4uY2NlZDExZmFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTUz
MywxNiArMTUzMyw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZvck5ld1BhZ2UoKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFNhdmVUb1BhZ2VDYWNoZSgpKTsKLX0KLQogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKQogewogICAgIG1fZnJhbWVD
YW1lRnJvbVBhZ2VDYWNoZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IGRiNzUyZDU4ODdlLi5hZmExN2E0OTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTIwNiw3ICsyMDYsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9u
VG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VD
YWNoZSgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsK
IAogICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzNDBjOWM0Yzk0NC4uMzQ2YzRj
ZWEzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM4Niw2
ICszODYsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0RGVmYXVsdFJlcXVl
c3RUaW1lb3V0SW50ZXJ2YWwocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bCk7CiAKKyAgICBzZXRQYWdlQ2FjaGVDYXBhY2l0eShwYXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFj
aXR5KTsKKwogICAgIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKHBhcmFtZXRlcnMu
c2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCk7CiAKICAgICBzZXRTaG91bGRVc2VG
b250U21vb3RoaW5nKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyk7CkBAIC0xMjk0
LDExICsxMjk2LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0
IFRleHRDaGVja2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUpCiAgICAgfQogfQogCi12b2lkIFdl
YlByb2Nlc3M6OnJlbGVhc2VQYWdlQ2FjaGUoKQotewotICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkucHJ1bmVUb1NpemVOb3coMCwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1cmUpOwotfQot
CiB2b2lkIFdlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0
YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0
YTsKQEAgLTE3NzksNiArMTc3NiwyMSBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQ
YWdlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0
UGFnZUNhY2hlQ2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCit7CisgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5zZXRNYXhTaXplKGNhcGFjaXR5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpj
bGVhckNhY2hlZFBhZ2UoQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEhpc3RvcnlJdGVtKiBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJRChi
YWNrRm9yd2FyZEl0ZW1JRCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoKTsKKworICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKCppdGVt
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiBMaWJXZWJSVENOZXR3b3JrJiBXZWJQ
cm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRDTmV0d29y
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGFlMWY2MDMwODNjLi40
MjJlZWI1YTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Niw2
ICs4Niw3IEBAIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFVzZXJHZXN0dXJlVG9rZW47CitzdHJ1Y3QgQmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwpAQCAt
MzY4LDE0ICszNjksMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudHMoKTsKICNlbmRpZgogCi0gICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAg
ICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRNZW1vcnlDYWNoZURpc2FibGVkKGJvb2wpOwogCisg
ICAgdm9pZCBzZXRQYWdlQ2FjaGVDYXBhY2l0eSh1bnNpZ25lZCk7CisgICAgdm9pZCBjbGVhckNh
Y2hlZFBhZ2UoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZv
aWQgc2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxl
Y3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBj
ZWFkMDE2NjUwNi4uODg0YzVhYTEwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03NSw4ICs3NSw2IEBAIG1lc3NhZ2VzIC0+IFdl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVy
cyhJUEM6OkRhdGFSZWZlcmVuY2UgcGFyYW1ldGVycyk7CiAgICAgSGFuZGxlSW5qZWN0ZWRCdW5k
bGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9k
eSk7CiAKLSAgICBSZWxlYXNlUGFnZUNhY2hlKCkKLQogICAgIEZldGNoV2Vic2l0ZURhdGEoT3B0
aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoc3Ry
dWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIEFzeW5jCiAgICAgRGVsZXRlV2Vi
c2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5
cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNp
dGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMp
IC0+ICgpIEFzeW5jCkBAIC0xNTMsNiArMTUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAKICAgICBDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGlu
ZygpCiAKKyAgICBTZXRQYWdlQ2FjaGVDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSk7CisgICAg
Q2xlYXJDYWNoZWRQYWdlKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
IGJhY2tGb3J3YXJkSXRlbUlEKSAtPiAoKSBBc3luYworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBVbmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBoYW5kbGUpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDY1MTZjOWY0OWIwLi5jMjFiZGNmNzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xODQsNyArMTg0LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOwogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2Fj
aGUoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWw7CiAK
ICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDhhZTg2YjVjNDhhLi40NjBjOWEyNjdjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0OTUsMTAgKzE0OTUsNiBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICB9
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17
Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hl
KCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGQ0ZmI1ZDc3NmM2Li4yNjIxMWZhOTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtOTkyLDEwICs5OTIsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBjb3JlKG1fd2ViRnJhbWUp
LT5jcmVhdGVWaWV3KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIGJhY2tn
cm91bmRDb2xvciwgLyogZml4ZWRMYXlvdXRTaXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QgKi8geyB9KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2
ZVRvUGFnZUNhY2hlKCkKLXsKLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVz
dG9yZUZyb21QYWdlQ2FjaGUoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
MzNhODZjZTU3ZmYuLjg1NmY1MjVmZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTE3Niw3ICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRC
ZWNvbWVGcmFtZXNldChib29sKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380921</attachid>
            <date>2019-10-14 14:43:10 -0700</date>
            <delta_ts>2019-10-14 15:56:15 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>202929_wip.patch</filename>
            <type>text/plain</type>
            <size>48530</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNTlhMjZiOWE4OTEuLjY5
OTQ3ZWY3MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTk4
LDggKzE5OCw2IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAg
aWYgKCFtX2lzTWFpbkZyYW1lKQogICAgICAgICBmcmFtZS5wYWdlKCktPmRlY3JlbWVudFN1YmZy
YW1lQ291bnQoKTsKIAotICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VD
YWNoZSgpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChtX2lzTWFpbkZyYW1lKQogICAgICAg
ICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4g
ZnJhbWUgdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1YjguLmQ5YTkyOWY4ZTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYgKzE3MiwxNCBAQCBib29s
IEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9CiAKK3Zv
aWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+
JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hlID0gaXNJblBhZ2VDYWNo
ZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFnZSk7CisgICAgaWYgKHdh
c0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgbm90aWZ5Q2hhbmdlZCgp
OworfQorCiBVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7
IH0sIG1fdXJsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4
YWY5OGU0Yzk4Mi4uMWZkMDQxYWQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKQEAgLTIxOSw2ICsyMTksOCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3Rv
cnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRl
bShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGVUaXRsZSwgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIHNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYpOworCiAgICAg
SGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IGdl
bmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApp
bmRleCBlMzU5NDJjOWQ5Yi4uNmNlYTc4MjA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFi
bGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0g
ICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7
CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdl
KSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsK
ICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KQEAgLTUwMCw3ICs1MDAsNyBAQCB2
b2lkIFBhZ2VDYWNoZTo6cmVtb3ZlQWxsSXRlbXNGb3JQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAg
IGF1dG8gY3VycmVudCA9IGl0OwogICAgICAgICArK2l0OwogICAgICAgICBpZiAoJigqY3VycmVu
dCktPm1fY2FjaGVkUGFnZS0+cGFnZSgpID09ICZwYWdlKSB7Ci0gICAgICAgICAgICAoKmN1cnJl
bnQpLT5tX2NhY2hlZFBhZ2UgPSBudWxscHRyOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0
Q2FjaGVkUGFnZShudWxscHRyKTsKICAgICAgICAgICAgIG1faXRlbXMucmVtb3ZlKGN1cnJlbnQp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTMxLDE0ICs1MzEsMTQgQEAgdm9pZCBQYWdlQ2FjaGU6
OnJlbW92ZShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pdGVt
cy5yZW1vdmUoJml0ZW0pOwotICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbnVsbHB0cjsKKyAgICBp
dGVtLnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiB9CiAKIHZvaWQgUGFnZUNhY2hlOjpwcnVuZShQ
cnVuaW5nUmVhc29uIHBydW5pbmdSZWFzb24pCiB7CiAgICAgd2hpbGUgKHBhZ2VDb3VudCgpID4g
bWF4U2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gb2xkZXN0SXRlbSA9IG1faXRlbXMudGFrZUZpcnN0
KCk7Ci0gICAgICAgIG9sZGVzdEl0ZW0tPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
IG9sZGVzdEl0ZW0tPnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiAgICAgICAgIG9sZGVzdEl0ZW0t
Pm1fcHJ1bmluZ1JlYXNvbiA9IHBydW5pbmdSZWFzb247CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTc2ZGM1NTRlNjUu
LmU1OTZmYTAzZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICNlbmRpZgog
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsIHsgfQogCi0g
ICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlc3Rv
cmVGcm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21l
RnJhbWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGVjNzMyY2MwMDIzLi44YzdmMTc1ZjA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI3OCw3ICsyNzgsNiBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgPSAwOyAvLyBDYW4gY2hh
bmdlIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIERPTSBtb2RpZmljYXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBiMzcwNjJjMTM4OS4uODIxOGIzZWI2ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMjI5LDYgKzIyOSw3IEBAIHZvaWQg
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHBhZ2VT
dGF0ZTsKKyAgICBlbmNvZGVyIDw8IGhhc0NhY2hlZFBhZ2U7CiB9CiAKIE9wdGlvbmFsPEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjQzLDYgKzI0NCw5IEBAIE9wdGlvbmFsPEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFnZVN0YXRlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lmhhc0NhY2hlZFBhZ2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCBhMzI5
Zjk1MzMxMC4uOTkzZjBiYTc4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBA
IC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90
PiBzbmFwc2hvdDsKICNlbmRpZgorICAgIGJvb2wgaGFzQ2FjaGVkUGFnZSB7IGZhbHNlIH07CiB9
OwogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBiMDgyNWFmODZlYS4uNTc4ODQ4
OGYzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCisjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4KQEAg
LTU0LDYgKzU1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6fldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0oKQogewogICAgIEFTU0VSVChhbGxJdGVtcygpLmdldChtX2l0ZW1TdGF0ZS5pZGVudGlm
aWVyKSA9PSB0aGlzKTsKICAgICBhbGxJdGVtcygpLnJlbW92ZShtX2l0ZW1TdGF0ZS5pZGVudGlm
aWVyKTsKKyAgICByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOwogfQogCiBIYXNoTWFwPEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qPiYgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6YWxsSXRlbXMoKQpAQCAtMTYwLDM4ICsxNjIsMzAgQEAgYm9vbCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNDbG9uZShjb25zdCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiBvdGhlcikKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp3YXNSZW1vdmVk
RnJvbUJhY2tGb3J3YXJkTGlzdCgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAgICAg
ICAgbV9zdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKnRoaXMp
OwotICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlKTsKKyAgICByZW1vdmVGcm9tQmFja0Zvcndh
cmRDYWNoZSgpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRl
ZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdl
KQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpyZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNo
ZSgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdl
LT5jbGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAgIG1fc3VzcGVuZGVkUGFnZSA9IFdU
Rk1vdmUoc3VzcGVuZGVkUGFnZSk7Ci0KLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQotICAgICAg
ICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMpOworICAgIGlm
IChtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSkKKyAgICAgICAgbV9iYWNrRm9yd2FyZENhY2hlRW50
cnktPmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqdGhpcyk7CisgICAgQVNTRVJUKCFt
X2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VTdXNwZW5kZWRQYWdlKCkKK3Zv
aWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0ZDo6
dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+JiYgYmFja0ZvcndhcmRDYWNoZUVu
dHJ5KQogewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFn
ZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0gICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9zdXNwZW5kZWRQYWdlLCBudWxscHRyKTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9
IFdURk1vdmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5
KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworICAgIHJldHVybiBtX2JhY2tGb3J3YXJkQ2Fj
aGVFbnRyeSA/IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5LT5zdXNwZW5kZWRQYWdlKCkgOiBudWxs
cHRyOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAogY29uc3QgY2hhciogV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6bG9nZ2luZ1N0cmluZygpCiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJCYWNr
L2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5sb2dTdHJpbmcoKSwgIiwgb3JpZ2luYWwgVVJM
ICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQgVVJMICIsIHVybCgpLCBtX3N1c3BlbmRlZFBh
Z2UgPyAiKGhhcyBhIHN1c3BlbmRlZCBwYWdlKSIgOiAiIik7CisgICAgcmV0dXJuIGRlYnVnU3Ry
aW5nKCJCYWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5sb2dTdHJpbmcoKSwgIiwgb3Jp
Z2luYWwgVVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQgVVJMICIsIHVybCgpLCBtX2Jh
Y2tGb3J3YXJkQ2FjaGVFbnRyeSA/ICIoaGFzIGEgYmFjay9mb3J3YXJkIGNhY2hlIGVudHJ5KSIg
OiAiIik7CiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYjJjZjc3MTM0ZTUuLjY2NDJlMjAw
Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5o
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdXNwZW5kZWRQ
YWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOworY2xhc3MgV2ViQmFja0Zvcndh
cmRDYWNoZUVudHJ5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewog
cHVibGljOgpAQCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdhc1JlbW92ZWRG
cm9tQmFja0ZvcndhcmRMaXN0KCk7CiAKKyAgICBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkqIGJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmdldCgpOyB9CiAgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkgY29u
c3Q7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC05MCwxNiArOTIsMTcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSYmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcmVtb3ZlRnJvbUJhY2tG
b3J3YXJkQ2FjaGUoKTsKKwogICAgIC8vIFdlYkJhY2tGb3J3YXJkQ2FjaGUuCiAgICAgZnJpZW5k
IGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgdm9pZCBzZXRTdXNwZW5kZWRQYWdlKHN0
ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgdm9pZCBzZXRC
YWNrRm9yd2FyZENhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeT4mJik7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAg
ICAgVVJMIG1fcmVzb3VyY2VEaXJlY3RvcnlVUkw7CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBtX3BhZ2VJRDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX2xhc3RQcm9jZXNz
SWRlbnRpZmllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1
c3BlbmRlZFBhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eT4gbV9iYWNrRm9yd2FyZENhY2hlRW50cnk7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWY8V2Vi
QmFja0ZvcndhcmRMaXN0SXRlbT4+IEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CmluZGV4IDFlNzQzNWMxMTYzLi4yZjVhODQ2M2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTkwLDYgKzkw
LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAg
ICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBk
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKKyAgICBlbmNvZGVyIDw8IHBhZ2VDYWNoZUNh
cGFjaXR5OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVu
ZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc1NES1ZlcnNpb247CkBAIC0y
NjksNiArMjcwLDggQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRp
bWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMucGFnZUNhY2hlQ2FwYWNpdHkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggMWVjZTgxY2ZjODQuLjk2MjFmODBkNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMTQsNiArMTE0
LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIENhY2hlTW9k
ZWwgY2FjaGVNb2RlbDsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bCB7IElOVF9NQVggfTsKKyAgICB1bnNpZ25lZCBwYWdlQ2FjaGVDYXBhY2l0eSB7IDAgfTsKIAog
ICAgIGJvb2wgc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CmluZGV4IGU5OGVjMGVhNDgwLi44YjBiNDMwYzQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCkBAIC0xNjEsOCArMTYy
LDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VQcm94eUlEID0gJSIg
UFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byBpdGVtU3RhdGVzID0g
bV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0YXRlcyhbdGhpcywgdGFyZ2V0
SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gaXRl
bS5zdXNwZW5kZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIGlmICgmcGFnZS0+cHJvY2VzcygpID09
IG1fcHJvY2Vzcy5wdHIoKSkKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tGb3J3YXJkQ2FjaGVFbnRy
eSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkpIHsKKyAgICAgICAgICAgIGlmIChiYWNr
Rm9yd2FyZENhY2hlRW50cnktPnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLT5jb3Jl
UHJvY2Vzc0lkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA4MzU4ZDJmOTBiMS4u
N2Y4OWNlZWZjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcApAQCAtODEsNyArODEsNiBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0
cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVz
dG9uZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xs
UG9zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU2F2ZVRvUGFn
ZUNhY2hlIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvZ3Jl
c3MiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJFZGl0b3JT
dGF0ZUNoYW5nZWQiKTsKQEAgLTEzNiwxOCArMTM1LDYgQEAgU3VzcGVuZGVkUGFnZVByb3h5Ojp+
U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBtX3Byb2Nlc3MtPmRlY3JlbWVudFN1c3BlbmRlZFBh
Z2VDb3VudCgpOwogfQogCi12b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6c2V0QmFja0ZvcndhcmRM
aXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQotewotICAgIEFTU0VSVCghbV9i
YWNrRm9yd2FyZExpc3RJdGVtKTsKLSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPSAmaXRlbTsK
LX0KLQotdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsZWFyQmFja0ZvcndhcmRMaXN0SXRlbSgp
Ci17Ci0gICAgQVNTRVJUKG1fYmFja0ZvcndhcmRMaXN0SXRlbSk7Ci0gICAgbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtID0gbnVsbHB0cjsKLX0KLQogV2ViQmFja0ZvcndhcmRDYWNoZSYgU3VzcGVuZGVk
UGFnZVByb3h5OjpiYWNrRm9yd2FyZENhY2hlKCkgY29uc3QKIHsKICAgICByZXR1cm4gcHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpOwpAQCAtMjQ1LDEyICsyMzIsOCBA
QCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3Vz
cGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6c3Vz
cGVuc2lvblRpbWVkT3V0KCkKIHsKLSAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0SXRlbSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAi
JXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCgpIGRlc3Ryb3lpbmcg
dGhlIHN1c3BlbmRlZCBwYWdlIGJlY2F1c2UgaXQgZmFpbGVkIHRvIHN1c3BlbmQgaW4gdGltZSIs
IHRoaXMpOwotICAgIEFTU0VSVChtX2JhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1c3BlbmRlZFBhZ2Uo
KSA9PSB0aGlzKTsKLSAgICBiYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKm1fYmFja0Zv
cndhcmRMaXN0SXRlbSk7IC8vIFdpbGwgZGVzdHJveSB8dGhpc3wuCisgICAgYmFja0ZvcndhcmRD
YWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsgLy8gV2lsbCBkZXN0cm95IHx0aGlzfC4KIH0KIAog
dm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmgKaW5kZXggOWYzYWUzMzE4ZmYuLjc2NGJlZGM3N2JlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtNTYsMTAgKzU2
LDYgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWlu
RnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KIAotICAgIHZvaWQgc2V0
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7Ci0gICAgdm9pZCBj
bGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGJhY2tGb3J3YXJkTGlzdEl0ZW0oKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07IH0K
ICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgY29uc3Q7CiAKICAg
ICBib29sIHBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygpIGNvbnN0OwpAQCAtODgsNyArODQsNiBAQCBw
cml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsK
LSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0geyBudWxs
cHRyIH07CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZyYW1lSUQ7CiAgICAg
Ym9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICAgICBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9zaG91bGREZWxheUNsb3NpbmdVbnRp
bEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyBTaG91bGREZWxheUNsb3NpbmdV
bnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDQ2NDg3NjRj
ZmUyLi5kNDQ1ZGI0Y2E5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZS5jcHAKQEAgLTI3LDE2ICsyNyw3MyBAQAogI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkQ2FjaGUuaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVdlYkJhY2tGb3J3YXJkQ2FjaGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUo
KSA9IGRlZmF1bHQ7CitjbGFzcyBFbnRyeVdpdGhTdXNwZW5kZWRQYWdlIGZpbmFsIDogcHVibGlj
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7CitwdWJsaWM6CisgICAgRW50cnlXaXRoU3VzcGVu
ZGVkUGFnZShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlLCBzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCisgICAgICAgIDogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5KGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgICwgbV9zdXNw
ZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFnZSkpCisgICAgeworICAgIH0KKworICAgIFN1
c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c3VzcGVuZGVkUGFnZS5nZXQoKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdl
UHJveHk+IHRha2VTdXNwZW5kZWRQYWdlKCkgZmluYWwgeyByZXR1cm4gc3RkOjpleGNoYW5nZSht
X3N1c3BlbmRlZFBhZ2UsIG51bGxwdHIpOyB9CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBwcm9jZXNzKCkuY29y
ZVByb2Nlc3NJZGVudGlmaWVyKCk7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3N1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsgfQorCitwcml2
YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVk
UGFnZTsKK307CisKK2NsYXNzIEVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UgZmluYWwgOiBwdWJs
aWMgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IHsKK3B1YmxpYzoKKyAgICBFbnRyeVdpdGhvdXRT
dXNwZW5kZWRQYWdlKFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUsIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tGb3J3YXJkSXRlbUlELCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoYmFja0ZvcndhcmRDYWNoZSkKKyAgICAgICAgLCBtX3By
b2Nlc3NJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAsIG1fYmFja0Zvcndh
cmRJdGVtSUQoYmFja0ZvcndhcmRJdGVtSUQpCisgICAgeworICAgIH0KKworICAgIH5FbnRyeVdp
dGhvdXRTdXNwZW5kZWRQYWdlKCkKKyAgICB7CisgICAgICAgIGF1dG8mIHByb2Nlc3MgPSB0aGlz
LT5wcm9jZXNzKCk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFt0b2tl
biA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0geyB9KTsK
KyAgICB9CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byog
cHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIobV9wcm9jZXNz
SWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChwcm9jZXNzKTsKKyAgICAgICAgcmV0dXJuICpw
cm9jZXNzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3Bl
bmRlZFBhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgc3RkOjp1bmlx
dWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKSBmaW5hbCB7IHJl
dHVybiBudWxscHRyOyB9CiAKLVdlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENh
Y2hlKCkgPSBkZWZhdWx0OworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fcHJvY2Vz
c0lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBtX2Jh
Y2tGb3J3YXJkSXRlbUlEOworfTsKKworV2ViQmFja0ZvcndhcmRDYWNoZTo6V2ViQmFja0Zvcndh
cmRDYWNoZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCisgICAgOiBtX3Byb2Nlc3NQb29s
KHByb2Nlc3NQb29sKQoreworfQorCitXZWJCYWNrRm9yd2FyZENhY2hlOjp+V2ViQmFja0Zvcndh
cmRDYWNoZSgpCit7CisgICAgY2xlYXIoKTsKK30KIAogaW5saW5lIHZvaWQgV2ViQmFja0Zvcndh
cmRDYWNoZTo6cmVtb3ZlT2xkZXN0RW50cnkoKQogewpAQCAtNDYsNDggKzEwMyw4MCBAQCBpbmxp
bmUgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVPbGRlc3RFbnRyeSgpCiAKIHZvaWQg
V2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7Cisg
ICAgaWYgKG1fY2FwYWNpdHkgPT0gY2FwYWNpdHkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1f
Y2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB3aGlsZSAoc2l6ZSgpID4gY2FwYWNpdHkpCiAgICAg
ICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CisKKyAgICBtX3Byb2Nlc3NQb29sLnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UGFnZUNhY2hlQ2FwYWNpdHkobV9jYXBh
Y2l0eSkpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+
JiYgc3VzcGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeT4mJiBiYWNrRm9yd2FyZENhY2hlRW50cnkpCiB7CiAgICAgQVNTRVJUKGNhcGFj
aXR5KCkpOworICAgIEFTU0VSVChiYWNrRm9yd2FyZENhY2hlRW50cnkpOworCisgICAgaWYgKGl0
ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1faXRlbXNXaXRo
Q2FjaGVkUGFnZS5jb250YWlucygmaXRlbSkpOworICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBh
Z2UucmVtb3ZlRmlyc3QoJml0ZW0pOworICAgIH0KIAotICAgIGl0ZW0uc2V0U3VzcGVuZGVkUGFn
ZShXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKTsKLSAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuYWRk
KCZpdGVtKTsKKyAgICBpdGVtLnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShXVEZNb3ZlKGJhY2tG
b3J3YXJkQ2FjaGVFbnRyeSkpOworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5hcHBlbmQoJml0
ZW0pOwogCiAgICAgaWYgKHNpemUoKSA+IGNhcGFjaXR5KCkpCiAgICAgICAgIHJlbW92ZU9sZGVz
dEVudHJ5KCk7CiAgICAgQVNTRVJUKHNpemUoKSA8PSBjYXBhY2l0eSgpKTsKIH0KIAordm9pZCBX
ZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCit7
CisgICAgYWRkRW50cnkoaXRlbSwgbWFrZVVuaXF1ZTxFbnRyeVdpdGhTdXNwZW5kZWRQYWdlPigq
dGhpcywgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJk
Q2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGFkZEVudHJ5KGl0ZW0s
IG1ha2VVbmlxdWU8RW50cnlXaXRob3V0U3VzcGVuZGVkUGFnZT4oKnRoaXMsIGl0ZW0uaXRlbUlE
KCksIFdURk1vdmUocHJvY2Vzc0lkZW50aWZpZXIpKSk7Cit9CisKIHZvaWQgV2ViQmFja0Zvcndh
cmRDYWNoZTo6cmVtb3ZlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKICAg
ICBBU1NFUlQobV9pdGVtc1dpdGhDYWNoZWRQYWdlLmNvbnRhaW5zKCZpdGVtKSk7Ci0gICAgbV9p
dGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZSgmaXRlbSk7Ci0gICAgaXRlbS5zZXRTdXNwZW5kZWRQ
YWdlKG51bGxwdHIpOworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVGaXJzdCgmaXRl
bSk7CisgICAgaXRlbS5zZXRCYWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7Cit9CisKK3Zv
aWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cnkoU3VzcGVuZGVkUGFnZVByb3h5JiBz
dXNwZW5kZWRQYWdlKQoreworICAgIHJlbW92ZUVudHJpZXNNYXRjaGluZyhbJnN1c3BlbmRlZFBh
Z2VdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGl0ZW0uc3VzcGVuZGVkUGFnZSgpID09
ICZzdXNwZW5kZWRQYWdlOworICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiBXZWJCYWNrRm9yd2FyZENhY2hlOjp0YWtlRW50cnkoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSkKK3N0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJh
Y2tGb3J3YXJkQ2FjaGU6OnRha2VTdXNwZW5kZWRQYWdlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0pCiB7CiAgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250YWlucygmaXRl
bSkpOwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmUoJml0ZW0pOwotICAgIHJldHVy
biBpdGVtLnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKGl0ZW0uYmFja0ZvcndhcmRD
YWNoZUVudHJ5KCkpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGl0ZW0uYmFja0ZvcndhcmRD
YWNoZUVudHJ5KCktPnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKHN1c3BlbmRlZFBh
Z2UpOworICAgIHJlbW92ZUVudHJ5KGl0ZW0pOworICAgIHJldHVybiBzdXNwZW5kZWRQYWdlOwog
fQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoWyZw
cm9jZXNzXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiAmaXRlbS5zdXNwZW5kZWRQYWdl
KCktPnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3By
b2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKV0oYXV0byYg
ZW50cnkpIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKTsK
KyAgICAgICAgcmV0dXJuIGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzSWRl
bnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIH0pOwogfQogCiB2b2lkIFdlYkJh
Y2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25JRF0oYXV0byYg
aXRlbSkgewotICAgICAgICByZXR1cm4gaXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKS53
ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOworICAgICAgICByZXR1
cm4gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CiAgICAgfSk7CiB9CiAKQEAgLTEwMCwyMSAr
MTg5LDIwIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclBhZ2Uo
V2ViUGFnZVByb3h5JiBwYWdlKQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVu
dHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KT4mIG1hdGNoZXMpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9pdGVtc1dpdGhDYWNoZWRQYWdl
LmJlZ2luKCk7IGl0ICE9IG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5lbmQoKTspIHsKLSAgICAgICAg
YXV0byBjdXJyZW50ID0gaXQ7Ci0gICAgICAgICsraXQ7Ci0gICAgICAgIGlmIChtYXRjaGVzKCoq
Y3VycmVudCkpIHsKLSAgICAgICAgICAgICgqY3VycmVudCktPnNldFN1c3BlbmRlZFBhZ2UobnVs
bHB0cik7Ci0gICAgICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKGN1cnJlbnQp
OworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byog
aXRlbSkgeworICAgICAgICBpZiAobWF0Y2hlcygqaXRlbSkpIHsKKyAgICAgICAgICAgIGl0ZW0t
PnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CiB9
CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIoKQogewogICAgIGF1dG8gaXRlbXNX
aXRoQ2FjaGVkUGFnZSA9IFdURk1vdmUobV9pdGVtc1dpdGhDYWNoZWRQYWdlKTsKICAgICBmb3Ig
KGF1dG8qIGl0ZW0gOiBpdGVtc1dpdGhDYWNoZWRQYWdlKQotICAgICAgICBpdGVtLT5zZXRTdXNw
ZW5kZWRQYWdlKG51bGxwdHIpOworICAgICAgICBpdGVtLT5zZXRCYWNrRm9yd2FyZENhY2hlRW50
cnkobnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaAppbmRleCA0ZGYxOWFkNGFlNy4uNjhl
MDI5ZWEyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENh
Y2hlLmgKQEAgLTI1LDIxICsyNSwyNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdXNw
ZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJk
Q2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYkJh
Y2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZENhY2hlKFdlYlBy
b2Nlc3NQb29sJik7CiAgICAgfldlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKIAogICAgIHZvaWQgc2V0
Q2FwYWNpdHkodW5zaWduZWQpOwpAQCAtNTIsMTUgKzU1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgYWRk
RW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+JiYpOworICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW92ZUVudHJ5KFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiB0YWtlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworICAgIHZvaWQgcmVtb3Zl
RW50cnkoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT2xkZXN0RW50cnkoKTsKICAgICB2b2lkIHJlbW92
ZUVudHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mKT4mKTsKKyAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKIAorICAgIFdlYlByb2Nl
c3NQb29sJiBtX3Byb2Nlc3NQb29sOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAwIH07Ci0g
ICAgTGlzdEhhc2hTZXQ8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2FjaGVk
UGFnZTsKKyAgICBWZWN0b3I8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2Fj
aGVkUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDU3YTMxMzQyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdlYkJhY2tG
b3J3YXJkQ2FjaGU7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CisKK2NsYXNzIFdlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgPSBkZWZhdWx0OworCisgICAg
V2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja0ZvcndhcmRDYWNoZTsgfQorCisgICAgdmlydHVhbCBTdXNwZW5kZWRQYWdlUHJveHkqIHN1
c3BlbmRlZFBhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgPSAwOworCitwcm90
ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KFdlYkJhY2tGb3J3
YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgIDogbV9iYWNrRm9yd2FyZENhY2hl
KGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJCYWNr
Rm9yd2FyZENhY2hlJiBtX2JhY2tGb3J3YXJkQ2FjaGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDgyZTJj
NGY3YmUxLi41MWE0OGU2ZDVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0yOTUyLDcgKzI5NTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9jZXNzIHRvIGJlIHVzZWQgZm9yIHRoZSBuYXZp
Z2F0aW9uIGRvZXMgbm90IGdldCBzaHV0RG93biBub3cgZHVlIHRvIGRlc3Ryb3lpbmcgU3VzcGVu
ZGVkUGFnZVByb3h5IG9yIFByb3Zpc2lvbmFsUGFnZVByb3h5IG9iamVjdHMuCiAgICAgICAgICAg
ICBhdXRvIHByZXZlbnROYXZpZ2F0aW9uUHJvY2Vzc1NodXRkb3duID0gcHJvY2Vzc0Zvck5hdmln
YXRpb24tPm1ha2VTY29wZVByZXZlbnRpbmdTaHV0ZG93bigpOwogCi0gICAgICAgICAgICBhdXRv
IHN1c3BlbmRlZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgPyBiYWNrRm9yd2FyZENh
Y2hlKCkudGFrZUVudHJ5KCpkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPmJhY2tGb3J3YXJkTGlz
dEl0ZW0oKSkgOiBudWxscHRyOworICAgICAgICAgICAgQVNTRVJUKCFkZXN0aW5hdGlvblN1c3Bl
bmRlZFBhZ2UgfHwgbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKTsKKyAgICAgICAgICAgIGF1dG8g
c3VzcGVuZGVkUGFnZSA9IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA/IGJhY2tGb3J3YXJkQ2Fj
aGUoKS50YWtlU3VzcGVuZGVkUGFnZSgqbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSA6IG51bGxw
dHI7CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZS5nZXQoKSA9PSBkZXN0aW5hdGlv
blN1c3BlbmRlZFBhZ2UpOwogICAgICAgICAgICAgaWYgKHN1c3BlbmRlZFBhZ2UgJiYgc3VzcGVu
ZGVkUGFnZS0+cGFnZUlzQ2xvc2VkT3JDbG9zaW5nKCkpCiAgICAgICAgICAgICAgICAgc3VzcGVu
ZGVkUGFnZSA9IG51bGxwdHI7CiAKQEAgLTgwMzQsMTEgKzgwMzYsNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgbV9wcm9jZXNz
LT5kaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9s
bFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKIHsKICAgICBp
ZiAobV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgPT0gcGlubmluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY5NDg4ZGU2NzYuLjg0OGY5NjgzNDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI3OCw4ICsxMjc4LDYgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYpOwogICAgIHZvaWQg
ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0KLSAgICB2b2lkIGRp
ZFNhdmVUb1BhZ2VDYWNoZSgpOwogICAgICAgICAKICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogICAgIFdlYkNvcmU6OlNj
cm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzOTM3ZDIwNGU4Li4yZDBiZmY4YzEx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNDUzLDggKzQ1Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAg
ICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIAotICAgIERpZFNhdmVUb1BhZ2VDYWNoZSgpCi0K
ICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICBXcmFwQ3J5cHRvS2V5KFZlY3Rvcjx1aW50OF90
PiBrZXkpIC0+IChib29sIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+IHdyYXBwZWRLZXkpIFN5
bmNocm9ub3VzCiAgICAgVW53cmFwQ3J5cHRvS2V5KFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5
KSAtPiAoYm9vbCBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiBrZXkpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYjcyZDNkNGEw
NzQuLmRjOTQyM2E3MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29s
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV9m
b3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0Nv
dW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygp
OyB9KQogI2VuZGlmCi0gICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJC
YWNrRm9yd2FyZENhY2hlPigpKQorICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1ha2VVbmlxdWVS
ZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKnRoaXMpKQogICAgICwgbV93ZWJQcm9jZXNzQ2FjaGUo
bWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkKIHsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC03NDUsMTMgKzc0NSw2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSYgbWVzc2FnCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5n
OjpjcmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLnB0cigpKSk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQotewotICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlICYmIG1fcHJv
Y2Vzc1dpdGhQYWdlQ2FjaGUgIT0gcHJvY2VzcykKLSAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VD
YWNoZS0+cmVsZWFzZVBhZ2VDYWNoZSgpOwotICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBw
cm9jZXNzOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94
RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9
IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7CkBA
IC05MzYsNiArOTI5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKIAogICAgIHBhcmFtZXRl
cnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwgPSBBUEk6OlVSTFJlcXVlc3Q6OmRlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwoKTsKIAorICAgIHBhcmFtZXRlcnMucGFnZUNhY2hlQ2FwYWNpdHkg
PSBiYWNrRm9yd2FyZENhY2hlKCkuY2FwYWNpdHkoKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBnZW5lcmljIHdheSBmb3Igc3Vw
cGxlbWVudHMgdG8gYWRkIHRvIHRoZSBpbnRpYWxpemF0aW9uIHBhcmFtZXRlcnMuCiAgICAgcGFy
YW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyA9IHN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PigpLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwpAQCAtMTA4OSw4
ICsxMDg0LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJk
YXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9mIHRoZSBpbnZhbGlkYXRpb24gY2FsbHMgb2Yg
dGhlIG90aGVyIHN1cHBsZW1lbnRzIGFyZSBzdGlsbCBuZWNlc3NhcnkgaW4gbXVsdGktcHJvY2Vz
cyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBhZmZlY3QgZGF0YSBzdHJ1Y3R1cmVzIHBlcnRh
aW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlzY29ubmVjdGVkLgogICAgIC8vIENsZWFyaW5n
IGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBmYWlsdXJlcywgc28gaXQncyBsZXNzIHRyb3Vi
bGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJv
dGVjdChwcm9jZXNzKTsKLSAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNz
KQotICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKIAogICAgIG1fYmFj
a0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MoKnByb2Nlc3MpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2MGVmNDkzMWEyNC4uMDk0
ZDJkZDMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAt
NDA4LDggKzQwOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpOwogCi0g
ICAgdm9pZCBwcm9jZXNzRGlkQ2FjaGVQYWdlKFdlYlByb2Nlc3NQcm94eSopOwotCiAgICAgYm9v
bCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OwogICAg
IHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzQWRkZWRBZnRl
ckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKQEAgLTU5OSw3ICs1OTcs
NiBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcmV3YXJtZWRQcm9jZXNzIHsg
bnVsbHB0ciB9OwogICAgIFdlYlByb2Nlc3NQcm94eSogbV9kdW1teVByb2Nlc3NQcm94eSB7IG51
bGxwdHIgfTsgLy8gQSBsaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgd2l0aG91dCBiYWNraW5n
IHByb2Nlc3MuCiAKLSAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUg
eyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVzaW5nIFJlZ2lz
dHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQ+OwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW5X
aXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5OTYw
YWNmMDhkMy4uZmFjYzk3NWYzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNjMxLDYgKzYzMSwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRl
bQogICAgICAgICByZXR1cm47CiAKICAgICBpdGVtLT5zZXRQYWdlU3RhdGUoUGFnZVN0YXRlIHsg
aXRlbVN0YXRlLnBhZ2VTdGF0ZSB9KTsKKworICAgIGlmICghIWl0ZW0tPmJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeSgpICE9IGl0ZW1TdGF0ZS5oYXNDYWNoZWRQYWdlKSB7CisgICAgICAgIGlmIChpdGVt
U3RhdGUuaGFzQ2FjaGVkUGFnZSkKKyAgICAgICAgICAgIHByb2Nlc3NQb29sKCkuYmFja0Zvcndh
cmRDYWNoZSgpLmFkZEVudHJ5KCppdGVtLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLnJl
bW92ZUVudHJ5KCppdGVtKTsKKyAgICB9CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKQEAgLTk4NCwxNyArOTkxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVRl
eHRDaGVja2VyU3RhdGUoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRU
ZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotICAgIG1fcHJvY2Vzc1Bvb2wt
PnByb2Nlc3NEaWRDYWNoZVBhZ2UodGhpcyk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZWxlYXNlUGFnZUNhY2hlKCkKLXsKLSAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVsZWFzZVBhZ2VDYWNoZSgpLCAwKTsKLX0KLQog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewogICAgIGZvciAoY29uc3QgYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggODMyMzQ5YTk5ZjAu
LmNmZTRjOTFlZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMTg2LDkgKzE4Niw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQoKTsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci0g
ICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlm
aWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTIxNzQxMDQyNy4uM2UwYzllZDhhNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTE4
LDYgKzkxOCw3IEBACiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaCAqLzsgfTsKKwkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS5oICovOyB9OwogCQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4RDE5QjA2NDE5MDBE
MTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0MxOUFGN0IwNDAwMkVCQUI1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEYx
OUIwN0I4QTAwRDE0QUVGIC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjM2MTlBRjdBQzMw
MDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMzgsNiArMzIzOSw3IEBACiAJ
CTQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkY5QjI2MjIzNTI2RUQw
MDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QTQxMEYzNTE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEE0MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYz
OTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzgyNiw2ICs3ODI4LDcgQEAKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBDM0U4QzkgLyog
VmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjAzMDExQTIzNEJFMzFEMDA5
QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8sCiAJCQkJNDYwMzAxMUIyMzRCRTMx
RTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLywKKwkJCQk0NkY5QjI2MjIzNTI2
RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8sCiAJCQkJQkM3MkJB
MUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAgKi8sCiAJCQkJQkM3
MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oICovLAogCQkJCUYw
MzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8sCkBAIC05ODQ4
LDYgKzk4NTEsNyBAQAogCQkJCTFBOEU3RDNEMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRURBMTJFMzE1
MkNEMUIzMDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzdGRjc4NTIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8q
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdDNjI0NEIy
MzQ2NzlBNDAwMzgzRkU3IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxGbGFncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdEQ0VEQjIyMTRDNjA0QzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFRDZGMjE0MkVFNjMwMDE2Qjg0
NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggYWM3MjJhNTU4MzAuLjBl
Y2E0YzFkMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMTUs
NiArMTE1LDcgQEAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHRvQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJgogICAgIHN0YXRlLnBhZ2VTdGF0ZS5t
YWluRnJhbWVTdGF0ZSA9IHRvRnJhbWVTdGF0ZShoaXN0b3J5SXRlbSk7CiAgICAgc3RhdGUucGFn
ZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBoaXN0b3J5SXRlbS5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CiAgICAgc3RhdGUucGFnZVN0YXRlLnNlc3Npb25TdGF0
ZU9iamVjdCA9IGhpc3RvcnlJdGVtLnN0YXRlT2JqZWN0KCk7CisgICAgc3RhdGUuaGFzQ2FjaGVk
UGFnZSA9IGhpc3RvcnlJdGVtLmlzSW5QYWdlQ2FjaGUoKTsKICAgICByZXR1cm4gc3RhdGU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDlmYTE1ZTA4ZjY0Li5jY2Vk
MTFmYWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTMzLDE2ICsx
NTMzLDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
Rm9yTmV3UGFnZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
U2F2ZVRvUGFnZUNhY2hlKCkKLXsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFn
ZSgpOwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkU2F2ZVRvUGFnZUNhY2hlKCkpOwotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgbV9mcmFtZUNhbWVGcm9t
UGFnZUNhY2hlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZGI3NTJk
NTg4N2UuLmFmYTE3YTQ5NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjA2
LDcgKzIwNiw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZvck5ld1BhZ2UoKSBmaW5hbDsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFsOwogCiAgICAg
dm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDM0MGM5YzRjOTQ0Li4zNDZjNGNlYTNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzg2LDYgKzM4Niw4
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBzZXREZWZhdWx0UmVxdWVzdFRpbWVv
dXRJbnRlcnZhbChwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKTsKIAor
ICAgIHNldFBhZ2VDYWNoZUNhcGFjaXR5KHBhcmFtZXRlcnMucGFnZUNhY2hlQ2FwYWNpdHkpOwor
CiAgICAgc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgocGFyYW1ldGVycy5zaG91bGRB
bHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKTsKIAogICAgIHNldFNob3VsZFVzZUZvbnRTbW9v
dGhpbmcocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKTsKQEAgLTEyOTQsMTEgKzEy
OTYsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFRleHRDaGVja2VyU3RhdGUoY29uc3QgVGV4dENo
ZWNrZXJTdGF0ZSYgdGV4dENoZWNrZXJTdGF0ZSkKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6cmVsZWFzZVBhZ2VDYWNoZSgpCi17Ci0gICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5wcnVu
ZVRvU2l6ZU5vdygwLCBQcnVuaW5nUmVhc29uOjpNZW1vcnlQcmVzc3VyZSk7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwpAQCAt
MTc3OSw2ICsxNzc2LDIxIEBAIGJvb2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpzZXRQYWdlQ2Fj
aGVDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSkKK3sKKyAgICBQYWdlQ2FjaGU6OnNpbmdsZXRv
bigpLnNldE1heFNpemUoY2FwYWNpdHkpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OmNsZWFyQ2Fj
aGVkUGFnZShCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgSGlzdG9y
eUl0ZW0qIGl0ZW0gPSBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUZvcklEKGJhY2tGb3J3
YXJkSXRlbUlEKTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcigpOworCisgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogewogICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYWUxZjYwMzA4M2MuLjQyMmVlYjVh
OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTg2LDYgKzg2LDcg
QEAgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgVXNlckdlc3R1cmVUb2tlbjsKK3N0cnVjdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBNb2NrTWVkaWFEZXZpY2U7CkBAIC0zNjgsMTQg
KzM2OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
cygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKLQogICAgIHZvaWQg
ZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICB2b2lkIHNldE1lbW9yeUNhY2hlRGlzYWJsZWQoYm9vbCk7CiAKKyAgICB2b2lk
IHNldFBhZ2VDYWNoZUNhcGFjaXR5KHVuc2lnbmVkKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGVkUGFn
ZShXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgdm9pZCBzZXRF
bmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNl
cnZpY2VzLCBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGNlYWQwMTY2
NTA2Li44ODRjNWFhMTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc1LDggKzc1LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXJzKElQQzo6
RGF0YVJlZmVyZW5jZSBwYXJhbWV0ZXJzKTsKICAgICBIYW5kbGVJbmplY3RlZEJ1bmRsZU1lc3Nh
Z2UoU3RyaW5nIG1lc3NhZ2VOYW1lLCBXZWJLaXQ6OlVzZXJEYXRhIG1lc3NhZ2VCb2R5KTsKIAot
ICAgIFJlbGVhc2VQYWdlQ2FjaGUoKQotCiAgICAgRmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+IChzdHJ1Y3QgV2Vi
S2l0OjpXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0
YShPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UpIC0+ICgpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFU
eXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgLT4gKCkg
QXN5bmMKQEAgLTE1Myw2ICsxNTEsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKIAogICAgIENsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkKIAor
ICAgIFNldFBhZ2VDYWNoZUNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KTsKKyAgICBDbGVhckNh
Y2hlZFBhZ2Uoc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0Zv
cndhcmRJdGVtSUQpIC0+ICgpIEFzeW5jCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVyKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGhhbmRsZSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNjUxNmM5
ZjQ5YjAuLmMyMWJkY2Y3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE4NCw3
ICsxODQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggOGFlODZiNWM0OGEuLjQ2MGM5YTI2N2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQpAQCAtMTQ5NSwxMCArMTQ5NSw2IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIH0KIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsKLX0KLQog
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKQogewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggZDRmYjVkNzc2YzYuLjI2MjExZmE5Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC05OTIsMTAgKzk5Miw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGNvcmUobV93ZWJGcmFtZSktPmNyZWF0
ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUpLnNpemUoKSwgYmFja2dyb3VuZENv
bG9yLCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50UmVj
dCAqLyB7IH0pOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRTYXZlVG9QYWdl
Q2FjaGUoKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0b3JlRnJv
bVBhZ2VDYWNoZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzM2E4NmNl
NTdmZi4uODU2ZjUyNWZkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTc2LDcg
KzE3Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZXN0b3Jl
RnJvbVBhZ2VDYWNoZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZy
YW1lc2V0KGJvb2wpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380928</attachid>
            <date>2019-10-14 15:56:15 -0700</date>
            <delta_ts>2019-10-14 19:12:32 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>202929_wip.patch</filename>
            <type>text/plain</type>
            <size>55983</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmgKaW5kZXggMmRhZTUyY2U3MzIuLjM2ZDE2ZWY2OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtNDIsNiArNDIsOCBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciB7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBkZWNv
ZGUoRGVjb2RlciYpOwogCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VT
dHJpbmcocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgJy0nLCBpdGVtSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsgfQorCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ1N0
cmluZygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CmluZGV4IDU5YTI2YjlhODkxLi44ZjFlNGRhMDM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKQEAgLTE5OCwxMyArMTk4LDExIEBAIENhY2hlZEZyYW1lOjpDYWNoZWRG
cmFtZShGcmFtZSYgZnJhbWUpCiAgICAgaWYgKCFtX2lzTWFpbkZyYW1lKQogICAgICAgICBmcmFt
ZS5wYWdlKCktPmRlY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKIAotICAgIGZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGlm
IChtX2lzTWFpbkZyYW1lKQotICAgICAgICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRp
bmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4gZnJhbWUgdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVy
ICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdl
dCgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJGaW5pc2hlZCBjcmVhdGluZyBD
YWNoZWRGcmFtZSBmb3IgbWFpbiBmcmFtZSB1cmwgJyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBc
biIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkp
OwogICAgIGVsc2UKLSAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIkZpbmlzaGVkIGNyZWF0aW5nIENh
Y2hlZEZyYW1lIGZvciBjaGlsZCBmcmFtZSB3aXRoIHVybCAnJXMnIGFuZCBEb2N1bWVudExvYWRl
ciAlcFxuIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci5n
ZXQoKSk7CisgICAgICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcg
Q2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycgYW5kIERvY3VtZW50TG9h
ZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVy
LmdldCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1YjguLmE3OTIzNGRiMmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYgKzE3MiwyMiBA
QCBib29sIEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9
CiAKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZFBhZ2U+JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hlID0gaXNJblBh
Z2VDYWNoZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFnZSk7CisgICAg
aWYgKHdhc0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgbm90aWZ5Q2hh
bmdlZCgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gSGlzdG9yeUl0ZW06OnRh
a2VDYWNoZWRQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9jYWNoZWRQYWdlKTsKKyAgICBhdXRvIGNh
Y2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7CisgICAgbm90
aWZ5Q2hhbmdlZCgpOworICAgIHJldHVybiBjYWNoZWRQYWdlOworfQorCiBVUkwgSGlzdG9yeUl0
ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7IH0sIG1fdXJsU3RyaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4YWY5OGU0Yzk4Mi4uZjg1NTA4ZjEy
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTIxOSw2ICsyMTksOSBA
QCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRp
dGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwg
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHNldENhY2hlZFBhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQ
YWdlPiB0YWtlQ2FjaGVkUGFnZSgpOworCiAgICAgSGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0
ZW0mKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCBlMzU5NDJjOWQ5Yi4uOThhNjFkMjVh
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jZGVmaW5lIFBDTE9HKC4uLikgTE9HKFBhZ2VDYWNo
ZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwgIiIsIG1ha2VTdHJpbmcoX19WQV9BUkdTX18pLnV0
ZjgoKS5kYXRhKCkpCisjZGVmaW5lIFBDTE9HKC4uLikgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICIl
KnMlcyIsIGluZGVudExldmVsKjQsICIiLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKS51dGY4KCku
ZGF0YSgpKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0
aWNNZXNzYWdlKERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogewpAQCAtNDYwLDExICs0NjAsMTQgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2Fj
aGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1
cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsK
IAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBh
Z2UpOworICAgICAgICBpdGVtLnNldENhY2hlZFBhZ2UobWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigq
cGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5v
bmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CiAgICAgcHJ1bmUoUHJ1bmlu
Z1JlYXNvbjo6UmVhY2hlZE1heFNpemUpOworCisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRD
YWNoZSwgIlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUi
LCBpdGVtLmlkZW50aWZpZXIoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlQ291bnQoKSwg
bWF4U2l6ZSgpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzcsMTAgKzQ4MCwxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gUGFnZUNhY2hlOjp0YWtlKEhpc3RvcnlJdGVt
JiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIG1faXRlbXMucmVtb3ZlKCZpdGVtKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSA9IFdURk1vdmUoaXRl
bS5tX2NhY2hlZFBhZ2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBjYWNoZWRQ
YWdlID0gaXRlbS50YWtlQ2FjaGVkUGFnZSgpOworCisgICAgUkVMRUFTRV9MT0coQmFja0Zvcndh
cmRDYWNoZSwgIlBhZ2VDYWNoZTo6dGFrZSBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIsIGl0ZW0u
aWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHBhZ2VDb3VudCgpLCBtYXhTaXpl
KCkpOwogCiAgICAgaWYgKGNhY2hlZFBhZ2UtPmhhc0V4cGlyZWQoKSB8fCAocGFnZSAmJiBwYWdl
LT5pc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkpKSB7Ci0gICAgICAgIExPRyhQYWdlQ2FjaGUs
ICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1
c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBh
Z2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFz
IGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
bG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKHBhZ2UsIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6ZXhwaXJlZEtleSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNTAwLDcgKzUwNSw4IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2Uo
UGFnZSYgcGFnZSkKICAgICAgICAgYXV0byBjdXJyZW50ID0gaXQ7CiAgICAgICAgICsraXQ7CiAg
ICAgICAgIGlmICgmKCpjdXJyZW50KS0+bV9jYWNoZWRQYWdlLT5wYWdlKCkgPT0gJnBhZ2UpIHsK
LSAgICAgICAgICAgICgqY3VycmVudCktPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjpyZW1vdmVBbGxJ
dGVtc0ZvclBhZ2UgcmVtb3ZpbmcgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUiLCAoKmN1cnJlbnQp
LT51cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlQ291bnQoKSAtIDEsIG1heFNpemUoKSk7
CisgICAgICAgICAgICAoKmN1cnJlbnQpLT5zZXRDYWNoZWRQYWdlKG51bGxwdHIpOwogICAgICAg
ICAgICAgbV9pdGVtcy5yZW1vdmUoY3VycmVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTYs
NyArNTIyLDcgQEAgQ2FjaGVkUGFnZSogUGFnZUNhY2hlOjpnZXQoSGlzdG9yeUl0ZW0mIGl0ZW0s
IFBhZ2UqIHBhZ2UpCiAgICAgfQogCiAgICAgaWYgKGNhY2hlZFBhZ2UtPmhhc0V4cGlyZWQoKSB8
fCAocGFnZSAmJiBwYWdlLT5pc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkpKSB7Ci0gICAgICAg
IExPRyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3
YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJO
b3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2Ug
Y2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKICAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKHBhZ2Us
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZXhwaXJlZEtleSgpKTsKICAgICAgICAgcmVtb3ZlKGl0
ZW0pOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUzMSwxNSArNTM3LDE5IEBAIHZvaWQg
UGFnZUNhY2hlOjpyZW1vdmUoSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1faXRlbXMucmVtb3ZlKCZpdGVtKTsKLSAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG51bGxw
dHI7CisgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG51bGxwdHIpOworCisgICAgUkVMRUFTRV9MT0co
QmFja0ZvcndhcmRDYWNoZSwgIlBhZ2VDYWNoZTo6cmVtb3ZlIGl0ZW06ICVzLCBzaXplOiAldSAv
ICV1IiwgaXRlbS5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50
KCksIG1heFNpemUoKSk7CisKIH0KIAogdm9pZCBQYWdlQ2FjaGU6OnBydW5lKFBydW5pbmdSZWFz
b24gcHJ1bmluZ1JlYXNvbikKIHsKICAgICB3aGlsZSAocGFnZUNvdW50KCkgPiBtYXhTaXplKCkp
IHsKICAgICAgICAgYXV0byBvbGRlc3RJdGVtID0gbV9pdGVtcy50YWtlRmlyc3QoKTsKLSAgICAg
ICAgb2xkZXN0SXRlbS0+bV9jYWNoZWRQYWdlID0gbnVsbHB0cjsKKyAgICAgICAgb2xkZXN0SXRl
bS0+c2V0Q2FjaGVkUGFnZShudWxscHRyKTsKICAgICAgICAgb2xkZXN0SXRlbS0+bV9wcnVuaW5n
UmVhc29uID0gcHJ1bmluZ1JlYXNvbjsKKyAgICAgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRD
YWNoZSwgIlBhZ2VDYWNoZTo6cHJ1bmUgcmVtb3ZpbmcgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUi
LCBvbGRlc3RJdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlQ291bnQoKSwgbWF4
U2l6ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGE3NmRjNTU0ZTY1Li5lNTk2ZmEwM2UxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNjQsNyAr
MTY0LDYgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZvck5ld1BhZ2UoKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNh
Y2hlKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFs
IHsgfQogCiAgICAgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIGZpbmFsIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmQ4NGNiMTZkZGEuLjA3
OTcyN2VhY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTIwMTgs
NyArMjAxOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAg
ICAgaWYgKG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlICYmIGhpc3RvcnkoKS5wcm92aXNpb25hbEl0
ZW0oKSkKICAgICAgICAgY2FjaGVkUGFnZSA9IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkudGFrZSgq
aGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CiAKLSAgICBMT0co
UGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25h
bCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICclcycgdG8gbmV3IFVSTCAnJXMnIHdpdGggY2FjaGVk
IHBhZ2UgJXAiLCBtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwKKyAgICBMT0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91
dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5l
dyBVUkwgJyVzJyB3aXRoIGNhY2hlZCBwYWdlICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFt
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/
IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkudXRmOCgpLmRhdGEoKSA6ICIiLAogICAgICAgICBwZGwgPyBwZGwtPnVybCgpLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiPG5vIHByb3Zpc2lvbmFs
IERvY3VtZW50TG9hZGVyPiIsIGNhY2hlZFBhZ2UuZ2V0KCkpOwogCkBAIC0zNjgwLDcgKzM2ODAs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9u
cyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbgogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFByb3Zp
c2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCkKIHsKICAgICBEb2N1bWVudExvYWRlciogcHJvdmlz
aW9uYWxMb2FkZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7Ci0gICAgTE9HKFBhZ2VD
YWNoZSwgIldlYkNvcmVQYWdlQ2FjaGU6IExvYWRpbmcgcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2Fk
ZXIgJXAgd2l0aCBVUkwgJyVzJyBmcm9tIENhY2hlZFBhZ2UiLCBwcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCksIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKEJhY2tGb3J3YXJk
Q2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBMb2FkaW5nIHByb3Zpc2lvbmFsIERvY3VtZW50TG9h
ZGVyICVwIHdpdGggVVJMICclcycgZnJvbSBDYWNoZWRQYWdlIiwgcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcigpLCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcHJlcGFyZUZvckxv
YWRTdGFydCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGVjNzMyY2MwMDIzLi44YzdmMTc1ZjA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI3OCw3ICsyNzgsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgPSAwOyAvLyBDYW4gY2hhbmdlIGR1ZSB0byBu
YXZpZ2F0aW9uIG9yIERPTSBtb2RpZmljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgK
aW5kZXggOWQzOTEyM2QzYzguLjIyYjVjMDQ2YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKEFuaW1hdGlv
bnMpIFwKICAgICBNKEFwcGxlUGF5KSBcCiAgICAgTShBcmNoaXZlcykgXAorICAgIE0oQmFja0Zv
cndhcmRDYWNoZSkgXAogICAgIE0oQ2xpcFJlY3RzKSBcCiAgICAgTShDb21wb3NpdGluZykgXAog
ICAgIE0oQ29tcG9zaXRpbmdPdmVybGFwKSBcCkBAIC04MCw3ICs4MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBNKE1lc3NhZ2VQb3J0cykgXAogICAgIE0oTmV0d29yaykgXAogICAgIE0o
Tm90WWV0SW1wbGVtZW50ZWQpIFwKLSAgICBNKFBhZ2VDYWNoZSkgXAogICAgIE0oUGVyZm9ybWFu
Y2VMb2dnaW5nKSBcCiAgICAgTShQbGF0Zm9ybUxlYWtzKSBcCiAgICAgTShQbHVnaW5zKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDdhYTljNzIzM2E0Li4yOTZkZTg2ZTYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgTShBdXRvbWF0aW9uSW50ZXJhY3Rpb25zKSBcCiAgICAgTShBY3Rpdml0eVN0YXRlKSBcCiAg
ICAgTShCYWNrRm9yd2FyZCkgXAorICAgIE0oQmFja0ZvcndhcmRDYWNoZSkgXAogICAgIE0oQ2Fj
aGVTdG9yYWdlKSBcCiAgICAgTShDb250ZW50T2JzZXJ2YXRpb24pIFwKICAgICBNKENvbnRleHRN
ZW51KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBiMzcwNjJjMTM4
OS4uODIxOGIzZWI2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAt
MjI5LDYgKzIyOSw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsK
ICAgICBlbmNvZGVyIDw8IHBhZ2VTdGF0ZTsKKyAgICBlbmNvZGVyIDw8IGhhc0NhY2hlZFBhZ2U7
CiB9CiAKIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjQzLDYgKzI0NCw5
IEBAIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucGFnZVN0YXRlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NhY2hlZFBhZ2UpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNz
aW9uU3RhdGUuaAppbmRleCBhMzI5Zjk1MzMxMC4uOTkzZjBiYTc4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAg
ICBSZWZQdHI8Vmlld1NuYXBzaG90PiBzbmFwc2hvdDsKICNlbmRpZgorICAgIGJvb2wgaGFzQ2Fj
aGVkUGFnZSB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRl
eCBiMDgyNWFmODZlYS4uNTc4ODQ4OGYzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJTdXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgi
CisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYv
RGVidWdVdGlsaXRpZXMuaD4KQEAgLTU0LDYgKzU1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6fldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKQogewogICAgIEFTU0VSVChhbGxJdGVtcygpLmdl
dChtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyKSA9PSB0aGlzKTsKICAgICBhbGxJdGVtcygpLnJlbW92
ZShtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyKTsKKyAgICByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNo
ZSgpOwogfQogCiBIYXNoTWFwPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qPiYgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6YWxsSXRlbXMoKQpAQCAtMTYw
LDM4ICsxNjIsMzAgQEAgYm9vbCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNDbG9uZShj
b25zdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBvdGhlcikKIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjp3YXNSZW1vdmVkRnJvbUJhY2tGb3J3YXJkTGlzdCgpCiB7Ci0gICAgaWYgKG1f
c3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZENhY2hl
KCkucmVtb3ZlRW50cnkoKnRoaXMpOwotICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlKTsKKyAg
ICByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiBzdXNwZW5kZWRQYWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpyZW1v
dmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAg
ICAgICAgbV9zdXNwZW5kZWRQYWdlLT5jbGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAg
IG1fc3VzcGVuZGVkUGFnZSA9IFdURk1vdmUoc3VzcGVuZGVkUGFnZSk7Ci0KLSAgICBpZiAobV9z
dXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tGb3J3YXJkTGlz
dEl0ZW0oKnRoaXMpOworICAgIGlmIChtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSkKKyAgICAgICAg
bV9iYWNrRm9yd2FyZENhY2hlRW50cnktPmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgq
dGhpcyk7CisgICAgQVNTRVJUKCFtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRh
a2VTdXNwZW5kZWRQYWdlKCkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0QmFja0Zv
cndhcmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+
JiYgYmFja0ZvcndhcmRDYWNoZUVudHJ5KQogewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0g
ICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0gICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNwZW5kZWRQYWdlLCBudWxscHRyKTsKKyAgICBtX2Jh
Y2tGb3J3YXJkQ2FjaGVFbnRyeSA9IFdURk1vdmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0K
IAogU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNwZW5kZWRQ
YWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworICAgIHJl
dHVybiBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA/IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5LT5z
dXNwZW5kZWRQYWdlKCkgOiBudWxscHRyOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAogY29uc3Qg
Y2hhciogV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6bG9nZ2luZ1N0cmluZygpCiB7Ci0gICAgcmV0
dXJuIGRlYnVnU3RyaW5nKCJCYWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5sb2dTdHJp
bmcoKSwgIiwgb3JpZ2luYWwgVVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQgVVJMICIs
IHVybCgpLCBtX3N1c3BlbmRlZFBhZ2UgPyAiKGhhcyBhIHN1c3BlbmRlZCBwYWdlKSIgOiAiIik7
CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJCYWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQo
KS5sb2dTdHJpbmcoKSwgIiwgb3JpZ2luYWwgVVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJl
bnQgVVJMICIsIHVybCgpLCBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA/ICIoaGFzIGEgYmFjay9m
b3J3YXJkIGNhY2hlIGVudHJ5KSIgOiAiIik7CiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXgg
YjJjZjc3MTM0ZTUuLjY2NDJlMjAwNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hl
OworY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFj
a0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgpAQCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHdhc1JlbW92ZWRGcm9tQmFja0ZvcndhcmRMaXN0KCk7CiAKKyAgICBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnkqIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5LmdldCgpOyB9CiAgICAgU3VzcGVuZGVkUGFnZVByb3h5
KiBzdXNwZW5kZWRQYWdlKCkgY29uc3Q7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC05MCwxNiAr
OTIsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAorICAg
IHZvaWQgcmVtb3ZlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKTsKKwogICAgIC8vIFdlYkJhY2tGb3J3
YXJkQ2FjaGUuCiAgICAgZnJpZW5kIGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgdm9p
ZCBzZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYp
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRha2VTdXNwZW5kZWRQ
YWdlKCk7CisgICAgdm9pZCBzZXRCYWNrRm9yd2FyZENhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRy
PFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJik7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUgbV9pdGVtU3RhdGU7CiAgICAgVVJMIG1fcmVzb3VyY2VEaXJlY3RvcnlVUkw7CiAgICAg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4gbV9iYWNrRm9yd2FyZENhY2hlRW50cnk7CiB9OwogCiB0
eXBlZGVmIFZlY3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+IEJhY2tGb3J3YXJkTGlz
dEl0ZW1WZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDFlNzQzNWMxMTYzLi4yZjVhODQ2M2Q5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
dGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKKyAgICBl
bmNvZGVyIDw8IHBhZ2VDYWNoZUNhcGFjaXR5OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
Y29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHVpUHJv
Y2Vzc1NES1ZlcnNpb247CkBAIC0yNjksNiArMjcwLDggQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3Jl
YXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnZUNhY2hlQ2FwYWNpdHkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMWVjZTgxY2ZjODQuLjk2MjFmODBkNTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMgewogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbDsKIAogICAgIGRvdWJsZSBkZWZhdWx0
UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCB7IElOVF9NQVggfTsKKyAgICB1bnNpZ25lZCBwYWdlQ2Fj
aGVDYXBhY2l0eSB7IDAgfTsKIAogICAgIGJvb2wgc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRD
b2RlUGF0aCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJl
bGllZkxvZ2dpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGU5OGVjMGVhNDgwLi44YjBiNDMwYzQxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3Qu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCkBAIC0xNjEsOCArMTYyLDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0
ZW06IHBhZ2VQcm94eUlEID0gJSIgUFJJdTY0ICIgd2ViUGFnZUlEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgYXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZpbHRlcmVkSXRl
bVN0YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBwYWdlID0gaXRlbS5zdXNwZW5kZWRQYWdlKCkpIHsKLSAgICAgICAgICAgIGlm
ICgmcGFnZS0+cHJvY2VzcygpID09IG1fcHJvY2Vzcy5wdHIoKSkKKyAgICAgICAgaWYgKGF1dG8q
IGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkpIHsK
KyAgICAgICAgICAgIGlmIChiYWNrRm9yd2FyZENhY2hlRW50cnktPnByb2Nlc3NJZGVudGlmaWVy
KCkgPT0gbV9wcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdl
dEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAppbmRleCA4MzU4ZDJmOTBiMS4uN2Y4OWNlZWZjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtODEsNyArODEsNiBAQCBzdGF0aWMg
Y29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3Jl
V2hpbGVTdXNwZW5kZWQoKQogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZCgiRGlkU2F2ZVRvUGFnZUNhY2hlIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIkRpZFN0YXJ0UHJvZ3Jlc3MiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZCgiRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJFZGl0b3JTdGF0ZUNoYW5nZWQiKTsKQEAgLTEzNiwxOCArMTM1LDYgQEAg
U3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBtX3Byb2Nlc3Mt
PmRlY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3VudCgpOwogfQogCi12b2lkIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6c2V0QmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
KQotewotICAgIEFTU0VSVCghbV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKLSAgICBtX2JhY2tGb3J3
YXJkTGlzdEl0ZW0gPSAmaXRlbTsKLX0KLQotdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsZWFy
QmFja0ZvcndhcmRMaXN0SXRlbSgpCi17Ci0gICAgQVNTRVJUKG1fYmFja0ZvcndhcmRMaXN0SXRl
bSk7Ci0gICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtID0gbnVsbHB0cjsKLX0KLQogV2ViQmFja0Zv
cndhcmRDYWNoZSYgU3VzcGVuZGVkUGFnZVByb3h5OjpiYWNrRm9yd2FyZENhY2hlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgp
OwpAQCAtMjQ1LDEyICsyMzIsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vz
c1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogCiB2b2lkIFN1
c3BlbmRlZFBhZ2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkKIHsKLSAgICBpZiAoIW1fYmFj
a0ZvcndhcmRMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25U
aW1lZE91dCgpIGRlc3Ryb3lpbmcgdGhlIHN1c3BlbmRlZCBwYWdlIGJlY2F1c2UgaXQgZmFpbGVk
IHRvIHN1c3BlbmQgaW4gdGltZSIsIHRoaXMpOwotICAgIEFTU0VSVChtX2JhY2tGb3J3YXJkTGlz
dEl0ZW0tPnN1c3BlbmRlZFBhZ2UoKSA9PSB0aGlzKTsKLSAgICBiYWNrRm9yd2FyZENhY2hlKCku
cmVtb3ZlRW50cnkoKm1fYmFja0ZvcndhcmRMaXN0SXRlbSk7IC8vIFdpbGwgZGVzdHJveSB8dGhp
c3wuCisgICAgYmFja0ZvcndhcmRDYWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsgLy8gV2lsbCBk
ZXN0cm95IHx0aGlzfC4KIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggOWYzYWUzMzE4ZmYu
Ljc2NGJlZGM3N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuaApAQCAtNTYsMTAgKzU2LDYgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1l
SUQ7IH0KIAotICAgIHZvaWQgc2V0QmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJik7Ci0gICAgdm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAgIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3YXJkTGlzdEl0ZW0oKSB7IHJldHVybiBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW07IH0KICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2Fy
ZENhY2hlKCkgY29uc3Q7CiAKICAgICBib29sIHBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygpIGNvbnN0
OwpAQCAtODgsNyArODQsNiBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwog
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IG1fcHJvY2VzczsKLSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtX2JhY2tG
b3J3YXJkTGlzdEl0ZW0geyBudWxscHRyIH07CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1fbWFpbkZyYW1lSUQ7CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICAgICBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9z
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUg
eyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGU6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2Fj
aGUuY3BwCmluZGV4IDQ2NDg3NjRjZmUyLi5mODIxOWJmNDEzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTI2LDE3ICsyNiw3NSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIK
IAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCIKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJCYWNrRm9yd2FyZENhY2hlOjpXZWJCYWNrRm9yd2Fy
ZENhY2hlKCkgPSBkZWZhdWx0OworY2xhc3MgRW50cnlXaXRoU3VzcGVuZGVkUGFnZSBmaW5hbCA6
IHB1YmxpYyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgeworcHVibGljOgorICAgIEVudHJ5V2l0
aFN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSwgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlKQorICAgICAg
ICA6IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShiYWNrRm9yd2FyZENhY2hlKQorICAgICAgICAs
IG1fc3VzcGVuZGVkUGFnZShXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKQorICAgIHsKKyAgICB9CiAK
LVdlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENhY2hlKCkgPSBkZWZhdWx0Owor
ICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5k
ZWRQYWdlUHJveHk+IHRha2VTdXNwZW5kZWRQYWdlKCkgZmluYWwgeyByZXR1cm4gc3RkOjpleGNo
YW5nZShtX3N1c3BlbmRlZFBhZ2UsIG51bGxwdHIpOyB9CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBwcm9jZXNz
KCkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCk7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsgfQor
Citwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKK307CisKK2NsYXNzIEVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UgZmluYWwg
OiBwdWJsaWMgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IHsKK3B1YmxpYzoKKyAgICBFbnRyeVdp
dGhvdXRTdXNwZW5kZWRQYWdlKFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUs
IGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tGb3J3YXJkSXRl
bUlELCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAg
ICAgOiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoYmFja0ZvcndhcmRDYWNoZSkKKyAgICAgICAg
LCBtX3Byb2Nlc3NJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAsIG1fYmFj
a0ZvcndhcmRJdGVtSUQoYmFja0ZvcndhcmRJdGVtSUQpCisgICAgeworICAgIH0KKworICAgIH5F
bnRyeVdpdGhvdXRTdXNwZW5kZWRQYWdlKCkKKyAgICB7CisgICAgICAgIGF1dG8mIHByb2Nlc3Mg
PSB0aGlzLT5wcm9jZXNzKCk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCks
IFt0b2tlbiA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0g
eyB9KTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAg
ICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
YXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIobV9w
cm9jZXNzSWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChwcm9jZXNzKTsKKyAgICAgICAgcmV0
dXJuICpwcm9jZXNzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkq
IHN1c3BlbmRlZFBhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKSBmaW5h
bCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBt
X3Byb2Nlc3NJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIgbV9iYWNrRm9yd2FyZEl0ZW1JRDsKK307CisKK1dlYkJhY2tGb3J3YXJkQ2FjaGU6OldlYkJh
Y2tGb3J3YXJkQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9j
ZXNzUG9vbChwcm9jZXNzUG9vbCkKK3sKK30KKworV2ViQmFja0ZvcndhcmRDYWNoZTo6fldlYkJh
Y2tGb3J3YXJkQ2FjaGUoKQoreworICAgIGNsZWFyKCk7Cit9CiAKIGlubGluZSB2b2lkIFdlYkJh
Y2tGb3J3YXJkQ2FjaGU6OnJlbW92ZU9sZGVzdEVudHJ5KCkKIHsKQEAgLTQ2LDQ4ICsxMDQsODUg
QEAgaW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlT2xkZXN0RW50cnkoKQog
CiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnNldENhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5
KQogeworICAgIGlmIChtX2NhcGFjaXR5ID09IGNhcGFjaXR5KQorICAgICAgICByZXR1cm47CisK
ICAgICBtX2NhcGFjaXR5ID0gY2FwYWNpdHk7CiAgICAgd2hpbGUgKHNpemUoKSA+IGNhcGFjaXR5
KQogICAgICAgICByZW1vdmVPbGRlc3RFbnRyeSgpOworCisgICAgbV9wcm9jZXNzUG9vbC5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFBhZ2VDYWNoZUNhcGFjaXR5
KG1fY2FwYWNpdHkpKTsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFn
ZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVu
dHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnk+JiYgYmFja0ZvcndhcmRDYWNoZUVudHJ5KQogewogICAgIEFTU0VS
VChjYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIAotICAg
IGl0ZW0uc2V0U3VzcGVuZGVkUGFnZShXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKTsKLSAgICBtX2l0
ZW1zV2l0aENhY2hlZFBhZ2UuYWRkKCZpdGVtKTsKKyAgICBpZiAoaXRlbS5iYWNrRm9yd2FyZENh
Y2hlRW50cnkoKSkgeworICAgICAgICBBU1NFUlQobV9pdGVtc1dpdGhDYWNoZWRQYWdlLmNvbnRh
aW5zKCZpdGVtKSk7CisgICAgICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVGaXJzdCgm
aXRlbSk7CisgICAgfQorCisgICAgaXRlbS5zZXRCYWNrRm9yd2FyZENhY2hlRW50cnkoV1RGTW92
ZShiYWNrRm9yd2FyZENhY2hlRW50cnkpKTsKKyAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuYXBw
ZW5kKCZpdGVtKTsKIAogICAgIGlmIChzaXplKCkgPiBjYXBhY2l0eSgpKQogICAgICAgICByZW1v
dmVPbGRlc3RFbnRyeSgpOwogICAgIEFTU0VSVChzaXplKCkgPD0gY2FwYWNpdHkoKSk7CisKKyAg
ICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRk
RW50cnk6IGl0ZW06ICVzLCBoYXNTdXNwZW5kZWRQYWdlOiAlZCwgc2l6ZTogJXUgLyAldSIsIGl0
ZW0uaXRlbUlEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgISFpdGVtLnN1c3BlbmRlZFBhZ2Uo
KSwgc2l6ZSgpLCBjYXBhY2l0eSgpKTsKK30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjph
ZGRFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCit7CisgICAgYWRkRW50cnkoaXRlbSwg
bWFrZVVuaXF1ZTxFbnRyeVdpdGhTdXNwZW5kZWRQYWdlPigqdGhpcywgV1RGTW92ZShzdXNwZW5k
ZWRQYWdlKSkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKQoreworICAgIGFkZEVudHJ5KGl0ZW0sIG1ha2VVbmlxdWU8RW50cnlXaXRo
b3V0U3VzcGVuZGVkUGFnZT4oKnRoaXMsIGl0ZW0uaXRlbUlEKCksIFdURk1vdmUocHJvY2Vzc0lk
ZW50aWZpZXIpKSk7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cnko
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKICAgICBBU1NFUlQobV9pdGVtc1dpdGhD
YWNoZWRQYWdlLmNvbnRhaW5zKCZpdGVtKSk7Ci0gICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJl
bW92ZSgmaXRlbSk7Ci0gICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOworICAgIG1f
aXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVGaXJzdCgmaXRlbSk7CisgICAgaXRlbS5zZXRCYWNr
Rm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRD
YWNoZSwgIldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJ5OiBpdGVtOiAlcywgc2l6ZTog
JXUgLyAldSIsIGl0ZW0uaXRlbUlEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2l6ZSgpLCBj
YXBhY2l0eSgpKTsKK30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyeShT
dXNwZW5kZWRQYWdlUHJveHkmIHN1c3BlbmRlZFBhZ2UpCit7CisgICAgcmVtb3ZlRW50cmllc01h
dGNoaW5nKFsmc3VzcGVuZGVkUGFnZV0oYXV0byYgaXRlbSkgeworICAgICAgICByZXR1cm4gaXRl
bS5zdXNwZW5kZWRQYWdlKCkgPT0gJnN1c3BlbmRlZFBhZ2U7CisgICAgfSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VF
bnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQorc3RkOjp1bmlxdWVfcHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gV2ViQmFja0ZvcndhcmRDYWNoZTo6dGFrZVN1c3BlbmRlZFBhZ2UoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKKyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2Fy
ZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNoZTo6dGFrZVN1c3BlbmRlZFBhZ2U6IGl0ZW06ICVz
IiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIEFTU0VSVCht
X2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKLSAgICBtX2l0ZW1zV2l0aENh
Y2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKLSAgICByZXR1cm4gaXRlbS50YWtlU3VzcGVuZGVkUGFn
ZSgpOworICAgIEFTU0VSVChpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKTsKKyAgICBhdXRv
IHN1c3BlbmRlZFBhZ2UgPSBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT50YWtlU3VzcGVu
ZGVkUGFnZSgpOworICAgIEFTU0VSVChzdXNwZW5kZWRQYWdlKTsKKyAgICByZW1vdmVFbnRyeShp
dGVtKTsKKyAgICByZXR1cm4gc3VzcGVuZGVkUGFnZTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
CiB7Ci0gICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFsmcHJvY2Vzc10oYXV0byYgaXRlbSkgewot
ICAgICAgICByZXR1cm4gJml0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCkgPT0gJnByb2Nl
c3M7CisgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFtwcm9jZXNzSWRlbnRpZmllciA9IHByb2Nl
c3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCldKGF1dG8mIGVudHJ5KSB7CisgICAgICAgIEFTU0VS
VChlbnRyeS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSk7CisgICAgICAgIHJldHVybiBlbnRyeS5i
YWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRl
bnRpZmllcjsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVF
bnRyaWVzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmVtb3Zl
RW50cmllc01hdGNoaW5nKFtzZXNzaW9uSURdKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0dXJu
IGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Np
b25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgcmV0dXJuIGl0ZW0uYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KCktPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vz
c2lvbklEOwogICAgIH0pOwogfQogCkBAIC0xMDAsMjEgKzE5NSwyMSBAQCB2b2lkIFdlYkJhY2tG
b3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIAog
dm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzTWF0Y2hpbmcoY29uc3QgRnVu
Y3Rpb248Ym9vbChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiBtYXRjaGVzKQogewotICAgIGZv
ciAoYXV0byBpdCA9IG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5iZWdpbigpOyBpdCAhPSBtX2l0ZW1z
V2l0aENhY2hlZFBhZ2UuZW5kKCk7KSB7Ci0gICAgICAgIGF1dG8gY3VycmVudCA9IGl0OwotICAg
ICAgICArK2l0OwotICAgICAgICBpZiAobWF0Y2hlcygqKmN1cnJlbnQpKSB7Ci0gICAgICAgICAg
ICAoKmN1cnJlbnQpLT5zZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOwotICAgICAgICAgICAgbV9p
dGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZShjdXJyZW50KTsKKyAgICBtX2l0ZW1zV2l0aENhY2hl
ZFBhZ2UucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8qIGl0ZW0pIHsKKyAgICAgICAgaWYgKG1h
dGNoZXMoKml0ZW0pKSB7CisgICAgICAgICAgICBpdGVtLT5zZXRCYWNrRm9yd2FyZENhY2hlRW50
cnkobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJk
Q2FjaGU6OmNsZWFyKCkKIHsKKyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2Vi
QmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIiKTsKICAgICBhdXRvIGl0ZW1zV2l0aENhY2hlZFBhZ2Ug
PSBXVEZNb3ZlKG1faXRlbXNXaXRoQ2FjaGVkUGFnZSk7CiAgICAgZm9yIChhdXRvKiBpdGVtIDog
aXRlbXNXaXRoQ2FjaGVkUGFnZSkKLSAgICAgICAgaXRlbS0+c2V0U3VzcGVuZGVkUGFnZShudWxs
cHRyKTsKKyAgICAgICAgaXRlbS0+c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KG51bGxwdHIpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZENhY2hlLmgKaW5kZXggNGRmMTlhZDRhZTcuLjY4ZTAyOWVhMmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5oCkBAIC0yNSwy
MSArMjUsMjQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5
OworY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJCYWNrRm9yd2FyZENhY2hl
KCk7CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRDYWNoZShXZWJQcm9jZXNzUG9vbCYpOwog
ICAgIH5XZWJCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAgICB2b2lkIHNldENhcGFjaXR5KHVuc2ln
bmVkKTsKQEAgLTUyLDE1ICs1NSwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVFbnRyaWVz
Rm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsK
KyAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZUVudHJ5
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKKyAgICB2b2lkIHJlbW92ZUVudHJ5KFN1c3BlbmRl
ZFBhZ2VQcm94eSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRh
a2VTdXNwZW5kZWRQYWdlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZU9sZGVzdEVudHJ5KCk7CiAgICAgdm9pZCByZW1vdmVFbnRyaWVzTWF0Y2hp
bmcoY29uc3QgRnVuY3Rpb248Ym9vbChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+Jik7CisgICAg
dm9pZCBhZGRFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgc3RkOjp1bmlxdWVfcHRyPFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJik7CiAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9j
ZXNzUG9vbDsKICAgICB1bnNpZ25lZCBtX2NhcGFjaXR5IHsgMCB9OwotICAgIExpc3RIYXNoU2V0
PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qPiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2U7CisgICAgVmVj
dG9yPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qPiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2U7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmQ1N2EzMTM0MjFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwor
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworCitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpID0gZGVmYXVsdDsKKworICAgIFdlYkJhY2tGb3J3YXJk
Q2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkQ2Fj
aGU7IH0KKworICAgIHZpcnR1YWwgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIGV4
cGxpY2l0IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNr
Rm9yd2FyZENhY2hlKQorICAgICAgICA6IG1fYmFja0ZvcndhcmRDYWNoZShiYWNrRm9yd2FyZENh
Y2hlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYg
bV9iYWNrRm9yd2FyZENhY2hlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4MmUyYzRmN2JlMS4uNTFhNDhl
NmQ1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjk1
Miw3ICsyOTUyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgcHJvY2VzcyB0byBiZSB1c2VkIGZvciB0aGUgbmF2aWdhdGlvbiBkb2VzIG5v
dCBnZXQgc2h1dERvd24gbm93IGR1ZSB0byBkZXN0cm95aW5nIFN1c3BlbmRlZFBhZ2VQcm94eSBv
ciBQcm92aXNpb25hbFBhZ2VQcm94eSBvYmplY3RzLgogICAgICAgICAgICAgYXV0byBwcmV2ZW50
TmF2aWdhdGlvblByb2Nlc3NTaHV0ZG93biA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5tYWtlU2Nv
cGVQcmV2ZW50aW5nU2h1dGRvd24oKTsKIAotICAgICAgICAgICAgYXV0byBzdXNwZW5kZWRQYWdl
ID0gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlID8gYmFja0ZvcndhcmRDYWNoZSgpLnRha2VFbnRy
eSgqZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZExpc3RJdGVtKCkpIDogbnVs
bHB0cjsKKyAgICAgICAgICAgIEFTU0VSVCghZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlIHx8IG5h
dmlnYXRpb24tPnRhcmdldEl0ZW0oKSk7CisgICAgICAgICAgICBhdXRvIHN1c3BlbmRlZFBhZ2Ug
PSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgPyBiYWNrRm9yd2FyZENhY2hlKCkudGFrZVN1c3Bl
bmRlZFBhZ2UoKm5hdmlnYXRpb24tPnRhcmdldEl0ZW0oKSkgOiBudWxscHRyOworICAgICAgICAg
ICAgQVNTRVJUKHN1c3BlbmRlZFBhZ2UuZ2V0KCkgPT0gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdl
KTsKICAgICAgICAgICAgIGlmIChzdXNwZW5kZWRQYWdlICYmIHN1c3BlbmRlZFBhZ2UtPnBhZ2VJ
c0Nsb3NlZE9yQ2xvc2luZygpKQogICAgICAgICAgICAgICAgIHN1c3BlbmRlZFBhZ2UgPSBudWxs
cHRyOwogCkBAIC04MDM0LDExICs4MDM2LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENv
bXBvc2l0aW9uKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotICAgIG1fcHJvY2Vzcy0+ZGlkU2F2ZVRvUGFn
ZUNhY2hlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiB7CiAgICAgaWYgKG1fc2Nyb2xsUGlu
bmluZ0JlaGF2aW9yID09IHBpbm5pbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGE2OTQ4OGRlNjc2Li44NDhmOTY4MzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyNzgsOCArMTI3OCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mKTsKICAgICB2b2lkIGRpZENhbmNlbENoZWNr
aW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpOwotCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2Fj
aGUoKTsKICAgICAgICAgCiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29y
ZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVo
YXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQaW5u
aW5nQmVoYXZpb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA4MzkzN2QyMDRlOC4uMmQwYmZmOGMxMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ1Myw4
ICs0NTMsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSgpCiAKLSAgICBEaWRTYXZlVG9QYWdlQ2FjaGUoKQotCiAjaWYgRU5BQkxFKFdF
Ql9DUllQVE8pCiAgICAgV3JhcENyeXB0b0tleShWZWN0b3I8dWludDhfdD4ga2V5KSAtPiAoYm9v
bCBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5KSBTeW5jaHJvbm91cwogICAg
IFVud3JhcENyeXB0b0tleShWZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleSkgLT4gKGJvb2wgc3Vj
Y2VlZGVkLCBWZWN0b3I8dWludDhfdD4ga2V5KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGI3MmQzZDRhMDc0Li5kYzk0MjNhNzFk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjM2
LDcgKzIzNiw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbnMoKTsgfSkKICAgICAsIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShS
ZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgot
ICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1ha2VVbmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNo
ZT4oKSkKKyAgICAsIG1fYmFja0ZvcndhcmRDYWNoZShtYWtlVW5pcXVlUmVmPFdlYkJhY2tGb3J3
YXJkQ2FjaGU+KCp0aGlzKSkKICAgICAsIG1fd2ViUHJvY2Vzc0NhY2hlKG1ha2VVbmlxdWVSZWY8
V2ViUHJvY2Vzc0NhY2hlPigqdGhpcykpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwpAQCAtNzQ1LDEzICs3NDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZwogICAg
IHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKG1lc3Nh
Z2VOYW1lU3RyaW5nQnVpbGRlci50b1N0cmluZygpKS5wdHIoKSkpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
LXsKLSAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSAmJiBtX3Byb2Nlc3NXaXRoUGFnZUNh
Y2hlICE9IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUtPnJlbGVhc2VQ
YWdlQ2FjaGUoKTsKLSAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gcHJvY2VzczsKLX0KLQog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQog
ewogICAgIG1fcmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGggPSByZXNvbHZlUGF0aEZv
clNhbmRib3hFeHRlbnNpb24oaW5qZWN0ZWRCdW5kbGVQYXRoKCkpOwpAQCAtOTM2LDYgKzkyOSw4
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsID0gQVBJOjpVUkxSZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVy
dmFsKCk7CiAKKyAgICBwYXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFjaXR5ID0gYmFja0ZvcndhcmRD
YWNoZSgpLmNhcGFjaXR5KCk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAvLyBG
SVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgZ2VuZXJpYyB3YXkgZm9yIHN1cHBsZW1lbnRzIHRvIGFk
ZCB0byB0aGUgaW50aWFsaXphdGlvbiBwYXJhbWV0ZXJzLgogICAgIHBhcmFtZXRlcnMubm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMgPSBzdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4oKS0+bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKQEAgLTEwODksOCArMTA4NCw2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcykKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8x
MjIzOTc2NT4gU29tZSBvZiB0aGUgaW52YWxpZGF0aW9uIGNhbGxzIG9mIHRoZSBvdGhlciBzdXBw
bGVtZW50cyBhcmUgc3RpbGwgbmVjZXNzYXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRo
ZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRhdGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBw
cm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3RlZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNh
dXNlcyBhc3NlcnRpb24gZmFpbHVyZXMsIHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhh
dCBmb3Igbm93LgogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7
Ci0gICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykKLSAgICAgICAgbV9w
cm9jZXNzV2l0aFBhZ2VDYWNoZSA9IG51bGxwdHI7CiAKICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUt
PnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKCpwcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNjBlZjQ5MzFhMjQuLjA5NGQyZGQzMDIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQwOCw4ICs0MDgsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SW52YWxpZE1lc3NhZ2VDYWxsYmFjayh2b2lk
ICgqKShXS1N0cmluZ1JlZikpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VOYW1lKTsKIAotICAgIHZvaWQgcHJvY2Vz
c0RpZENhY2hlUGFnZShXZWJQcm9jZXNzUHJveHkqKTsKLQogICAgIGJvb2wgaXNVUkxLbm93bkhT
VFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICB2b2lkIHJlc2V0SFNU
U0hvc3RzKCk7CiAgICAgdm9pZCByZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKGRvdWJsZSBz
dGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CkBAIC01OTksNyArNTk3LDYgQEAgcHJpdmF0ZToK
ICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJld2FybWVkUHJvY2VzcyB7IG51bGxwdHIgfTsKICAg
ICBXZWJQcm9jZXNzUHJveHkqIG1fZHVtbXlQcm9jZXNzUHJveHkgeyBudWxscHRyIH07IC8vIEEg
bGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0g
ICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsgbnVsbHB0ciB9Owog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbldp
dGhTZXNzaW9uSUQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEPjsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCwg
V2ViUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOTk2MGFjZjA4ZDMuLmZhY2M5
NzVmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTYzMSw2ICs2MzEsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3
YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW0KICAgICAgICAgcmV0
dXJuOwogCiAgICAgaXRlbS0+c2V0UGFnZVN0YXRlKFBhZ2VTdGF0ZSB7IGl0ZW1TdGF0ZS5wYWdl
U3RhdGUgfSk7CisKKyAgICBpZiAoISFpdGVtLT5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSAhPSBp
dGVtU3RhdGUuaGFzQ2FjaGVkUGFnZSkgeworICAgICAgICBpZiAoaXRlbVN0YXRlLmhhc0NhY2hl
ZFBhZ2UpCisgICAgICAgICAgICBwcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5hZGRF
bnRyeSgqaXRlbSwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqaXRl
bSk7CisgICAgfQogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC05ODQs
MTcgKzk5MSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVUZXh0Q2hlY2tlclN0YXRl
KCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0
ZShUZXh0Q2hlY2tlcjo6c3RhdGUoKSksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsKLSAgICBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzRGlkQ2Fj
aGVQYWdlKHRoaXMpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZVBhZ2VDYWNo
ZSgpCi17Ci0gICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlJlbGVhc2VQYWdlQ2FjaGUoKSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDgzMjM0OWE5OWYwLi5jZmU0YzkxZWY2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE4Niw5ICsx
ODYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFi
bGVkKCk7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotICAgIHZvaWQgcmVsZWFz
ZVBhZ2VDYWNoZSgpOwotCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJz
aXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGEyMTc0MTA0MjcuLjNlMGM5ZWQ4YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxOCw2ICs5MTgsNyBAQAog
CQk0NkJFQjZFMzIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJF
QjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgg
Ki87IH07CiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMz
OTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9Owog
CQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYz
QTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07
CisJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYy
MjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJ
NEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi87IH07CiAJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFF
RiAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zMjM4LDYgKzMyMzksNyBAQAogCQk0NkMzOTIyODIzMTZF
QzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5
MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEw
RjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVC
QUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MjYsNiAr
NzgyOCw3IEBACiAJCQkJMUE2MDIyNDkxOEMxNkIwODAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3Rv
cmUubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJh
Y2tGb3J3YXJkQ2FjaGUuY3BwICovLAogCQkJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIxNyAvKiBX
ZWJCYWNrRm9yd2FyZENhY2hlLmggKi8sCisJCQkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8q
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFF
QjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcw
MDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1RjRCRjA1
MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtOTg0OCw2ICs5ODUxLDcgQEAK
IAkJCQkxQThFN0QzRDE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xs
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc3RkY3
ODUyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QzYyNDRCMjM0Njc5QTQwMDM4M0ZF
NyAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
RENFREIyMjE0QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGFjNzIyYTU1ODMwLi4wZWNhNGMxZDMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTE1LDYgKzExNSw3IEBAIEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShjb25zdCBX
ZWJDb3JlOjpIaXN0b3J5SXRlbSYKICAgICBzdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUg
PSB0b0ZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0pOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0uc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSgpOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3QgPSBoaXN0
b3J5SXRlbS5zdGF0ZU9iamVjdCgpOworICAgIHN0YXRlLmhhc0NhY2hlZFBhZ2UgPSBoaXN0b3J5
SXRlbS5pc0luUGFnZUNhY2hlKCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5ZmExNWUwOGY2NC4uY2NlZDExZmFiZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTUzMywxNiArMTUzMyw2IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQog
I2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSgpCi17Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAo
IXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFt
ZSgpKQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNh
dmVUb1BhZ2VDYWNoZSgpKTsKLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVz
dG9yZUZyb21QYWdlQ2FjaGUoKQogewogICAgIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZSA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGRiNzUyZDU4ODdlLi5hZmExN2E0
OTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIwNiw3ICsyMDYsNiBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hE
aWRCZWNvbWVGcmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzNDBjOWM0Yzk0NC4uMzQ2YzRjZWEzY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM4Niw2ICszODYsOCBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwocGFy
YW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CiAKKyAgICBzZXRQYWdlQ2Fj
aGVDYXBhY2l0eShwYXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFjaXR5KTsKKwogICAgIHNldEFsd2F5
c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKHBhcmFtZXRlcnMuc2hvdWxkQWx3YXlzVXNlQ29tcGxl
eFRleHRDb2RlUGF0aCk7CiAKICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHBhcmFtZXRl
cnMuc2hvdWxkVXNlRm9udFNtb290aGluZyk7CkBAIC0xMjk0LDExICsxMjk2LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVja2VyU3RhdGUmIHRl
eHRDaGVja2VyU3RhdGUpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbGVhc2VQYWdl
Q2FjaGUoKQotewotICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVUb1NpemVOb3coMCwg
UHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1cmUpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmZl
dGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBl
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTE3NzksNiArMTc3Niwy
MSBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0UGFnZUNhY2hlQ2FwYWNpdHkodW5z
aWduZWQgY2FwYWNpdHkpCit7CisgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXpl
KGNhcGFjaXR5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpjbGVhckNhY2hlZFBhZ2UoQmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEhpc3RvcnlJdGVtKiBpdGVtID0g
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJRChiYWNrRm9yd2FyZEl0ZW1JRCk7Cisg
ICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAg
IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworfQorCiBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3
b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRDTmV0d29yaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGFlMWY2MDMwODNjLi40MjJlZWI1YTk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIENlcnRp
ZmljYXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFVzZXJHZXN0dXJlVG9rZW47CitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsK
IHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHM7CiBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwpAQCAtMzY4LDE0ICszNjksMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgog
Ci0gICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAgICB2b2lkIGZldGNoV2Vic2l0ZURh
dGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
c2l0ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9p
ZCBzZXRNZW1vcnlDYWNoZURpc2FibGVkKGJvb2wpOwogCisgICAgdm9pZCBzZXRQYWdlQ2FjaGVD
YXBhY2l0eSh1bnNpZ25lZCk7CisgICAgdm9pZCBjbGVhckNhY2hlZFBhZ2UoV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgc2V0RW5hYmxlZFNlcnZpY2Vz
KGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBo
YXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjZWFkMDE2NjUwNi4uODg0YzVhYTEw
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC03NSw4ICs3NSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZlcmVuY2Ug
cGFyYW1ldGVycyk7CiAgICAgSGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBtZXNz
YWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSk7CiAKLSAgICBSZWxlYXNlUGFn
ZUNhY2hlKCkKLQogICAgIEZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURh
dGEgd2Vic2l0ZURhdGEpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmll
ZFNpbmNlKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpIEFzeW5jCkBAIC0xNTMs
NiArMTUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAg
ICBDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAKKyAgICBTZXRQYWdlQ2Fj
aGVDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSk7CisgICAgQ2xlYXJDYWNoZWRQYWdlKHN0cnVj
dCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlEKSAt
PiAoKSBBc3luYworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVbmJsb2NrQWNjZXNz
aWJpbGl0eVNlcnZlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDY1MTZjOWY0OWIwLi5jMjFiZGNm
NzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODQsNyArMTg0LDYgQEAgcHJp
dmF0ZToKICNlbmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgp
IGZpbmFsOwogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlk
QmVjb21lRnJhbWVzZXQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDhhZTg2YjVjNDhhLi40NjBjOWEyNjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTE0OTUsMTAgKzE0OTUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQ0ZmI1ZDc3NmM2
Li4yNjIxMWZhOTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTkyLDEw
ICs5OTIsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCkKICAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2lu
Z0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIGJhY2tncm91bmRDb2xvciwgLyogZml4ZWRM
YXlvdXRTaXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgKi8geyB9KTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsKLX0K
LQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMzNhODZjZTU3ZmYuLjg1NmY1MjVm
ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE3Niw3ICsxNzYsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFNhdmVU
b1BhZ2VDYWNoZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUo
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBv
dmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380947</attachid>
            <date>2019-10-14 19:12:32 -0700</date>
            <delta_ts>2019-10-14 19:17:36 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>202929_wip.patch</filename>
            <type>text/plain</type>
            <size>56029</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmgKaW5kZXggMmRhZTUyY2U3MzIuLjM2ZDE2ZWY2OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtNDIsNiArNDIsOCBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciB7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBkZWNv
ZGUoRGVjb2RlciYpOwogCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VT
dHJpbmcocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgJy0nLCBpdGVtSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsgfQorCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ1N0
cmluZygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CmluZGV4IDU5YTI2YjlhODkxLi44ZjFlNGRhMDM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKQEAgLTE5OCwxMyArMTk4LDExIEBAIENhY2hlZEZyYW1lOjpDYWNoZWRG
cmFtZShGcmFtZSYgZnJhbWUpCiAgICAgaWYgKCFtX2lzTWFpbkZyYW1lKQogICAgICAgICBmcmFt
ZS5wYWdlKCktPmRlY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKIAotICAgIGZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGlm
IChtX2lzTWFpbkZyYW1lKQotICAgICAgICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRp
bmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4gZnJhbWUgdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVy
ICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdl
dCgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJGaW5pc2hlZCBjcmVhdGluZyBD
YWNoZWRGcmFtZSBmb3IgbWFpbiBmcmFtZSB1cmwgJyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBc
biIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkp
OwogICAgIGVsc2UKLSAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIkZpbmlzaGVkIGNyZWF0aW5nIENh
Y2hlZEZyYW1lIGZvciBjaGlsZCBmcmFtZSB3aXRoIHVybCAnJXMnIGFuZCBEb2N1bWVudExvYWRl
ciAlcFxuIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci5n
ZXQoKSk7CisgICAgICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcg
Q2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycgYW5kIERvY3VtZW50TG9h
ZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVy
LmdldCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1YjguLmE3OTIzNGRiMmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYgKzE3MiwyMiBA
QCBib29sIEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9
CiAKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZFBhZ2U+JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hlID0gaXNJblBh
Z2VDYWNoZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFnZSk7CisgICAg
aWYgKHdhc0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgbm90aWZ5Q2hh
bmdlZCgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gSGlzdG9yeUl0ZW06OnRh
a2VDYWNoZWRQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9jYWNoZWRQYWdlKTsKKyAgICBhdXRvIGNh
Y2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7CisgICAgbm90
aWZ5Q2hhbmdlZCgpOworICAgIHJldHVybiBjYWNoZWRQYWdlOworfQorCiBVUkwgSGlzdG9yeUl0
ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7IH0sIG1fdXJsU3RyaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4YWY5OGU0Yzk4Mi4uZjg1NTA4ZjEy
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTIxOSw2ICsyMTksOSBA
QCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRp
dGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwg
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHNldENhY2hlZFBhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQ
YWdlPiB0YWtlQ2FjaGVkUGFnZSgpOworCiAgICAgSGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0
ZW0mKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCBlMzU5NDJjOWQ5Yi4uYjI2NDUxNjFm
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jZGVmaW5lIFBDTE9HKC4uLikgTE9HKFBhZ2VDYWNo
ZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwgIiIsIG1ha2VTdHJpbmcoX19WQV9BUkdTX18pLnV0
ZjgoKS5kYXRhKCkpCisjZGVmaW5lIFBDTE9HKC4uLikgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICIl
KnMlcyIsIGluZGVudExldmVsKjQsICIiLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKS51dGY4KCku
ZGF0YSgpKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0
aWNNZXNzYWdlKERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogewpAQCAtNDYwLDExICs0NjAsMTQgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2Fj
aGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1
cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsK
IAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBh
Z2UpOworICAgICAgICBpdGVtLnNldENhY2hlZFBhZ2UobWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigq
cGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5v
bmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CiAgICAgcHJ1bmUoUHJ1bmlu
Z1JlYXNvbjo6UmVhY2hlZE1heFNpemUpOworCisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRD
YWNoZSwgIlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUi
LCBpdGVtLmlkZW50aWZpZXIoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlQ291bnQoKSwg
bWF4U2l6ZSgpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzcsMTAgKzQ4MCwxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gUGFnZUNhY2hlOjp0YWtlKEhpc3RvcnlJdGVt
JiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIG1faXRlbXMucmVtb3ZlKCZpdGVtKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSA9IFdURk1vdmUoaXRl
bS5tX2NhY2hlZFBhZ2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBjYWNoZWRQ
YWdlID0gaXRlbS50YWtlQ2FjaGVkUGFnZSgpOworCisgICAgUkVMRUFTRV9MT0coQmFja0Zvcndh
cmRDYWNoZSwgIlBhZ2VDYWNoZTo6dGFrZSBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIsIGl0ZW0u
aWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHBhZ2VDb3VudCgpLCBtYXhTaXpl
KCkpOwogCiAgICAgaWYgKGNhY2hlZFBhZ2UtPmhhc0V4cGlyZWQoKSB8fCAocGFnZSAmJiBwYWdl
LT5pc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkpKSB7Ci0gICAgICAgIExPRyhQYWdlQ2FjaGUs
ICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1
c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBh
Z2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFz
IGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
bG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKHBhZ2UsIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6ZXhwaXJlZEtleSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNTAwLDcgKzUwNSw4IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2Uo
UGFnZSYgcGFnZSkKICAgICAgICAgYXV0byBjdXJyZW50ID0gaXQ7CiAgICAgICAgICsraXQ7CiAg
ICAgICAgIGlmICgmKCpjdXJyZW50KS0+bV9jYWNoZWRQYWdlLT5wYWdlKCkgPT0gJnBhZ2UpIHsK
LSAgICAgICAgICAgICgqY3VycmVudCktPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjpyZW1vdmVBbGxJ
dGVtc0ZvclBhZ2UgcmVtb3ZpbmcgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUiLCAoKmN1cnJlbnQp
LT5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50KCkgLSAxLCBt
YXhTaXplKCkpOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0Q2FjaGVkUGFnZShudWxscHRy
KTsKICAgICAgICAgICAgIG1faXRlbXMucmVtb3ZlKGN1cnJlbnQpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNTE2LDcgKzUyMiw3IEBAIENhY2hlZFBhZ2UqIFBhZ2VDYWNoZTo6Z2V0KEhpc3RvcnlJ
dGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIGlmIChjYWNoZWRQYWdlLT5oYXNF
eHBpcmVkKCkgfHwgKHBhZ2UgJiYgcGFnZS0+aXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpKSkg
ewotICAgICAgICBMT0coUGFnZUNhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9t
IGJhY2svZm9yd2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaXRl
bS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhCYWNrRm9yd2Fy
ZENhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9tIGJhY2svZm9yd2FyZCBjYWNo
ZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaXRlbS51cmwoKS5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGxvZ1BhZ2VDYWNoZUZhaWx1cmVEaWFnbm9zdGljTWVz
c2FnZShwYWdlLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4cGlyZWRLZXkoKSk7CiAgICAgICAg
IHJlbW92ZShpdGVtKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MzEsMTUgKzUzNywx
OSBAQCB2b2lkIFBhZ2VDYWNoZTo6cmVtb3ZlKEhpc3RvcnlJdGVtJiBpdGVtKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2l0ZW1zLnJlbW92ZSgmaXRlbSk7Ci0gICAgaXRlbS5tX2NhY2hlZFBh
Z2UgPSBudWxscHRyOworICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShudWxscHRyKTsKKworICAgIFJF
TEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6OnJlbW92ZSBpdGVtOiAlcywg
c2l6ZTogJXUgLyAldSIsIGl0ZW0uaWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOworCiB9CiAKIHZvaWQgUGFnZUNhY2hlOjpwcnVuZShQ
cnVuaW5nUmVhc29uIHBydW5pbmdSZWFzb24pCiB7CiAgICAgd2hpbGUgKHBhZ2VDb3VudCgpID4g
bWF4U2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gb2xkZXN0SXRlbSA9IG1faXRlbXMudGFrZUZpcnN0
KCk7Ci0gICAgICAgIG9sZGVzdEl0ZW0tPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
IG9sZGVzdEl0ZW0tPnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiAgICAgICAgIG9sZGVzdEl0ZW0t
Pm1fcHJ1bmluZ1JlYXNvbiA9IHBydW5pbmdSZWFzb247CisgICAgICAgIFJFTEVBU0VfTE9HKEJh
Y2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6OnBydW5lIHJlbW92aW5nIGl0ZW06ICVzLCBzaXpl
OiAldSAvICV1Iiwgb2xkZXN0SXRlbS0+aWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTc2ZGM1NTRlNjUuLmU1
OTZmYTAzZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICNlbmRpZgogICAg
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsIHsgfQogCi0gICAg
dm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlc3RvcmVG
cm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJh
bWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBmZDg0Y2IxNmRkYS4uMDc5NzI3ZWFjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMjAxOCw3ICsyMDE4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0
UHJvdmlzaW9uYWxMb2FkKCkKICAgICBpZiAobV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2UgJiYgaGlz
dG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKQogICAgICAgICBjYWNoZWRQYWdlID0gUGFnZUNhY2hl
OjpzaW5nbGV0b24oKS50YWtlKCpoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCksIG1fZnJhbWUu
cGFnZSgpKTsKIAotICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlTG9hZGluZyAlczogQWJvdXQg
dG8gY29tbWl0IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91cyBVUkwgJyVzJyB0byBuZXcg
VVJMICclcycgd2l0aCBjYWNoZWQgcGFnZSAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2Vi
Q29yZUxvYWRpbmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJl
dmlvdXMgVVJMICclcycgdG8gbmV3IFVSTCAnJXMnIHdpdGggY2FjaGVkIHBhZ2UgJXAiLCBtX2Zy
YW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIiIsCiAgICAgICAgIHBkbCA/
IHBkbC0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEo
KSA6ICI8bm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXI+IiwgY2FjaGVkUGFnZS5nZXQoKSk7
CiAKQEAgLTM2ODAsNyArMzY4MCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVw
dExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBwcm92aXNpb25hbExvYWRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKTsKLSAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZVBhZ2VDYWNoZTogTG9hZGluZyBwcm92
aXNpb25hbCBEb2N1bWVudExvYWRlciAlcCB3aXRoIFVSTCAnJXMnIGZyb20gQ2FjaGVkUGFnZSIs
IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
LT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBMT0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGU6IExvYWRpbmcgcHJv
dmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAgd2l0aCBVUkwgJyVzJyBmcm9tIENhY2hlZFBhZ2Ui
LCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCksIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIo
KS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWM3MzJjYzAwMjMuLjhjN2YxNzVmMDhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjc4LDcgKzI3OCw2IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRG
b3JOZXdQYWdlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSA9IDA7IC8v
IENhbiBjaGFuZ2UgZHVlIHRvIG5hdmlnYXRpb24gb3IgRE9NIG1vZGlmaWNhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA5ZDM5MTIzZDNjOC4uMjJiNWMwNDZiOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIE0oQW5pbWF0aW9ucykgXAogICAgIE0oQXBwbGVQYXkpIFwKICAgICBNKEFyY2hp
dmVzKSBcCisgICAgTShCYWNrRm9yd2FyZENhY2hlKSBcCiAgICAgTShDbGlwUmVjdHMpIFwKICAg
ICBNKENvbXBvc2l0aW5nKSBcCiAgICAgTShDb21wb3NpdGluZ092ZXJsYXApIFwKQEAgLTgwLDcg
KzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oTWVzc2FnZVBvcnRzKSBcCiAgICAg
TShOZXR3b3JrKSBcCiAgICAgTShOb3RZZXRJbXBsZW1lbnRlZCkgXAotICAgIE0oUGFnZUNhY2hl
KSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsYXRmb3JtTGVha3MpIFwK
ICAgICBNKFBsdWdpbnMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggN2FhOWM3MjMz
YTQuLjI5NmRlODZlNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNDUsNiArNDUs
NyBAQCBleHRlcm4gIkMiIHsKICAgICBNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMpIFwKICAgICBN
KEFjdGl2aXR5U3RhdGUpIFwKICAgICBNKEJhY2tGb3J3YXJkKSBcCisgICAgTShCYWNrRm9yd2Fy
ZENhY2hlKSBcCiAgICAgTShDYWNoZVN0b3JhZ2UpIFwKICAgICBNKENvbnRlbnRPYnNlcnZhdGlv
bikgXAogICAgIE0oQ29udGV4dE1lbnUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUu
Y3BwCmluZGV4IGIzNzA2MmMxMzg5Li44MjE4YjNlYjZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
ZXNzaW9uU3RhdGUuY3BwCkBAIC0yMjksNiArMjI5LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZVN0YXRlOworICAgIGVuY29k
ZXIgPDwgaGFzQ2FjaGVkUGFnZTsKIH0KIAogT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCkBAIC0yNDMsNiArMjQ0LDkgQEAgT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
PiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXIKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdlU3RhdGUpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFzQ2FjaGVkUGFnZSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IGEzMjlmOTUzMzEwLi45OTNmMGJh
NzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTEzNyw2ICsxMzcsNyBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKICNpZiBQTEFURk9STShDT0NPQSkg
fHwgUExBVEZPUk0oR1RLKQogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90OwogI2Vu
ZGlmCisgICAgYm9vbCBoYXNDYWNoZWRQYWdlIHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBCYWNr
Rm9yd2FyZExpc3RTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGIwODI1YWY4NmVhLi41Nzg4NDg4ZjMzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldl
YkJhY2tGb3J3YXJkQ2FjaGUuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgpAQCAtNTQsNiArNTUsNyBAQCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpCiB7CiAgICAg
QVNTRVJUKGFsbEl0ZW1zKCkuZ2V0KG1faXRlbVN0YXRlLmlkZW50aWZpZXIpID09IHRoaXMpOwog
ICAgIGFsbEl0ZW1zKCkucmVtb3ZlKG1faXRlbVN0YXRlLmlkZW50aWZpZXIpOworICAgIHJlbW92
ZUZyb21CYWNrRm9yd2FyZENhY2hlKCk7CiB9CiAKIEhhc2hNYXA8QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+JiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OjphbGxJdGVtcygpCkBAIC0xNjAsMzggKzE2MiwzMCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06Oml0ZW1Jc0Nsb25lKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIG90aGVyKQog
CiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Ondhc1JlbW92ZWRGcm9tQmFja0ZvcndhcmRM
aXN0KCkKIHsKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBh
Z2UtPmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqdGhpcyk7Ci0gICAgQVNTRVJUKCFt
X3N1c3BlbmRlZFBhZ2UpOworICAgIHJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKCk7CiB9CiAK
LXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCit2b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OnJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKCkKIHsKLSAgICBpZiAo
bV9zdXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPmNsZWFyQmFja0Zvcndh
cmRMaXN0SXRlbSgpOwotCi0gICAgbV9zdXNwZW5kZWRQYWdlID0gV1RGTW92ZShzdXNwZW5kZWRQ
YWdlKTsKLQotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFn
ZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcyk7CisgICAgaWYgKG1fYmFja0ZvcndhcmRD
YWNoZUVudHJ5KQorICAgICAgICBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeS0+YmFja0ZvcndhcmRD
YWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsKKyAgICBBU1NFUlQoIW1fYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6dGFrZVN1c3BlbmRlZFBhZ2UoKQordm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjpzZXRCYWNrRm9yd2FyZENhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNrRm9yd2FyZENhY2hlRW50cnkpCiB7Ci0gICAgaWYg
KG1fc3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5jbGVhckJhY2tGb3J3
YXJkTGlzdEl0ZW0oKTsKLSAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3N1c3BlbmRlZFBhZ2Us
IG51bGxwdHIpOworICAgIG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gV1RGTW92ZShiYWNrRm9y
d2FyZENhY2hlRW50cnkpOwogfQogCiBTdXNwZW5kZWRQYWdlUHJveHkqIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX3N1c3BlbmRl
ZFBhZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5ID8gbV9iYWNr
Rm9yd2FyZENhY2hlRW50cnktPnN1c3BlbmRlZFBhZ2UoKSA6IG51bGxwdHI7CiB9CiAKICNpZiAh
TE9HX0RJU0FCTEVECiBjb25zdCBjaGFyKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpsb2dnaW5n
U3RyaW5nKCkKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIkJhY2svZm9yd2FyZCBpdGVtIElE
ICIsIGl0ZW1JRCgpLmxvZ1N0cmluZygpLCAiLCBvcmlnaW5hbCBVUkwgIiwgb3JpZ2luYWxVUkwo
KSwgIiwgY3VycmVudCBVUkwgIiwgdXJsKCksIG1fc3VzcGVuZGVkUGFnZSA/ICIoaGFzIGEgc3Vz
cGVuZGVkIHBhZ2UpIiA6ICIiKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIkJhY2svZm9yd2Fy
ZCBpdGVtIElEICIsIGl0ZW1JRCgpLmxvZ1N0cmluZygpLCAiLCBvcmlnaW5hbCBVUkwgIiwgb3Jp
Z2luYWxVUkwoKSwgIiwgY3VycmVudCBVUkwgIiwgdXJsKCksIG1fYmFja0ZvcndhcmRDYWNoZUVu
dHJ5ID8gIihoYXMgYSBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkpIiA6ICIiKTsKIH0KICNlbmRp
ZiAvLyAhTE9HX0RJU0FCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaAppbmRleCBiMmNmNzcxMzRlNS4uNjY0MmUyMDA3ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKIGNsYXNz
IFdlYkJhY2tGb3J3YXJkQ2FjaGU7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiAK
IGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6CkBAIC04MSw2
ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExp
c3QoKTsKIAorICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSogYmFja0ZvcndhcmRDYWNoZUVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hlRW50cnkuZ2V0KCk7IH0KICAg
ICBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdDsKIAogI2lmICFMT0df
RElTQUJMRUQKQEAgLTkwLDE2ICs5MiwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIpOwogCisgICAgdm9pZCByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOwor
CiAgICAgLy8gV2ViQmFja0ZvcndhcmRDYWNoZS4KICAgICBmcmllbmQgY2xhc3MgV2ViQmFja0Zv
cndhcmRDYWNoZTsKLSAgICB2b2lkIHNldFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4mJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKTsKKyAgICB2b2lkIHNldEJhY2tGb3J3YXJkQ2FjaGVF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKIAogICAg
IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0ZW1TdGF0ZTsKICAgICBVUkwgbV9yZXNvdXJj
ZURpcmVjdG9yeVVSTDsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlEOwogICAg
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiBtX2JhY2tGb3J3YXJk
Q2FjaGVFbnRyeTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMWU3NDM1YzEx
NjMuLjJmNWE4NDYzZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTAsNiArOTAsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGlt
ZW91dEludGVydmFsOworICAgIGVuY29kZXIgPDwgcGFnZUNhY2hlQ2FwYWNpdHk7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwog
ICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzU0RLVmVyc2lvbjsKQEAgLTI2OSw2ICsyNzAsOCBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5wYWdlQ2FjaGVDYXBhY2l0eSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVu
ZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAxZWNlODFj
ZmM4NC4uOTYyMWY4MGQ1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsOwog
CiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsIHsgSU5UX01BWCB9Owor
ICAgIHVuc2lnbmVkIHBhZ2VDYWNoZUNhcGFjaXR5IHsgMCB9OwogCiAgICAgYm9vbCBzaG91bGRB
bHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVu
YWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggZTk4ZWMwZWE0
ODAuLjhiMGI0MzBjNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKQEAgLTE2MSw4ICsxNjIsOCBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQgogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZVByb3h5SUQgPSAlIiBQUkl1NjQgIiB3ZWJQYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0Zvcndh
cmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1dKGF1
dG8mIGl0ZW0pIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRlZFBhZ2Uo
KSkgewotICAgICAgICAgICAgaWYgKCZwYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigp
KQorICAgICAgICBpZiAoYXV0byogYmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gaXRlbS5iYWNrRm9y
d2FyZENhY2hlRW50cnkoKSkgeworICAgICAgICAgICAgaWYgKGJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmll
cigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDgzNThkMmY5MGIxLi43Zjg5Y2VlZmMzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC04
MSw3ICs4MSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYg
bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiAgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIik7CiAgICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lIik7CiAgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwotICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKICAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwogICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7
CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwpA
QCAtMTM2LDE4ICsxMzUsNiBAQCBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJv
eHkoKQogICAgIG1fcHJvY2Vzcy0+ZGVjcmVtZW50U3VzcGVuZGVkUGFnZUNvdW50KCk7CiB9CiAK
LXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCi17Ci0gICAgQVNTRVJUKCFtX2JhY2tGb3J3YXJkTGlzdEl0
ZW0pOwotICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA9ICZpdGVtOwotfQotCi12b2lkIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCkKLXsKLSAgICBBU1NFUlQo
bV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKLSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBudWxs
cHRyOwotfQotCiBXZWJCYWNrRm9yd2FyZENhY2hlJiBTdXNwZW5kZWRQYWdlUHJveHk6OmJhY2tG
b3J3YXJkQ2FjaGUoKSBjb25zdAogewogICAgIHJldHVybiBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5iYWNrRm9yd2FyZENhY2hlKCk7CkBAIC0yNDUsMTIgKzIzMiw4IEBAIHZvaWQgU3VzcGVuZGVk
UGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVzdFRvU3VzcGVuZChTdXNwZW5zaW9uU3RhdGUgbmV3
U3VzcGVuc2lvCiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQo
KQogewotICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3RJdGVtKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFN1c3BlbmRlZFBh
Z2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkgZGVzdHJveWluZyB0aGUgc3VzcGVuZGVkIHBh
Z2UgYmVjYXVzZSBpdCBmYWlsZWQgdG8gc3VzcGVuZCBpbiB0aW1lIiwgdGhpcyk7Ci0gICAgQVNT
RVJUKG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpID09IHRoaXMpOwotICAg
IGJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqbV9iYWNrRm9yd2FyZExpc3RJdGVtKTsg
Ly8gV2lsbCBkZXN0cm95IHx0aGlzfC4KKyAgICBiYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50
cnkoKnRoaXMpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8LgogfQogCiB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
aAppbmRleCA5ZjNhZTMzMThmZi4uNzY0YmVkYzc3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBAIC01NiwxMCArNTYsNiBAQCBwdWJsaWM6CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzLmdl
dCgpOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9tYWluRnJhbWVJRDsgfQogCi0gICAgdm9pZCBzZXRCYWNrRm9yd2FyZExpc3RJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKLSAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRM
aXN0SXRlbSgpOwotCi0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFja0ZvcndhcmRMaXN0
SXRlbSgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbTsgfQogICAgIFdlYkJhY2tGb3J3
YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdDsKIAogICAgIGJvb2wgcGFnZUlzQ2xv
c2VkT3JDbG9zaW5nKCkgY29uc3Q7CkBAIC04OCw3ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdl
SUQ7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwotICAgIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIG1fYmFja0ZvcndhcmRMaXN0SXRlbSB7IG51bGxwdHIgfTsKICAgICBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgbV9tYWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9zZWQg
eyBmYWxzZSB9OwogICAgIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSB7IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6Tm8gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggNDY0ODc2NGNmZTIuLmY4MjE5YmY0MTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNw
cApAQCAtMjYsMTcgKzI2LDc1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRDYWNoZS5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN1
c3BlbmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkJhY2tGb3J3YXJk
Q2FjaGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1bHQ7CitjbGFzcyBFbnRyeVdpdGhT
dXNwZW5kZWRQYWdlIGZpbmFsIDogcHVibGljIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7Citw
dWJsaWM6CisgICAgRW50cnlXaXRoU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZENhY2hlJiBi
YWNrRm9yd2FyZENhY2hlLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1
c3BlbmRlZFBhZ2UpCisgICAgICAgIDogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KGJhY2tGb3J3
YXJkQ2FjaGUpCisgICAgICAgICwgbV9zdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFn
ZSkpCisgICAgeworICAgIH0KIAotV2ViQmFja0ZvcndhcmRDYWNoZTo6fldlYkJhY2tGb3J3YXJk
Q2FjaGUoKSA9IGRlZmF1bHQ7CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKSBmaW5h
bCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVuZGVkUGFnZSwgbnVsbHB0cik7IH0KKyAg
ICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHByb2Nlc3MoKS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKTsgfQorICAgIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3VzcGVuZGVk
UGFnZS0+cHJvY2VzcygpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQYWdlOworfTsKKworY2xhc3MgRW50cnlXaXRob3V0
U3VzcGVuZGVkUGFnZSBmaW5hbCA6IHB1YmxpYyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgewor
cHVibGljOgorICAgIEVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRDYWNo
ZSYgYmFja0ZvcndhcmRDYWNoZSwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgYmFja0ZvcndhcmRJdGVtSUQsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKQorICAgICAgICA6IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShiYWNrRm9y
d2FyZENhY2hlKQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZp
ZXIpCisgICAgICAgICwgbV9iYWNrRm9yd2FyZEl0ZW1JRChiYWNrRm9yd2FyZEl0ZW1JRCkKKyAg
ICB7CisgICAgfQorCisgICAgfkVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UoKQorICAgIHsKKyAg
ICAgICAgYXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKKyAgICAgICAgcHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZSht
X2JhY2tGb3J3YXJkSXRlbUlEKSwgW3Rva2VuID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpXSB7IH0pOworICAgIH0KKworICAgIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9j
ZXNzSWRlbnRpZmllcjsgfQorICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihtX3Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKHBy
b2Nlc3MpOworICAgICAgICByZXR1cm4gKnByb2Nlc3M7CisgICAgfQorCitwcml2YXRlOgorICAg
IFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtl
U3VzcGVuZGVkUGFnZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIG1fcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciBtX2JhY2tGb3J3YXJkSXRlbUlEOworfTsKKworV2ViQmFj
a0ZvcndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wpCisgICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQoreworfQorCitXZWJCYWNr
Rm9yd2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNoZSgpCit7CisgICAgY2xlYXIoKTsKK30K
IAogaW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlT2xkZXN0RW50cnkoKQog
ewpAQCAtNDYsNDggKzEwNCw4NSBAQCBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpy
ZW1vdmVPbGRlc3RFbnRyeSgpCiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNp
dHkodW5zaWduZWQgY2FwYWNpdHkpCiB7CisgICAgaWYgKG1fY2FwYWNpdHkgPT0gY2FwYWNpdHkp
CisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB3aGls
ZSAoc2l6ZSgpID4gY2FwYWNpdHkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CisKKyAg
ICBtX3Byb2Nlc3NQb29sLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0UGFnZUNhY2hlQ2FwYWNpdHkobV9jYXBhY2l0eSkpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3
YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFj
a0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNrRm9yd2FyZENhY2hl
RW50cnkpCiB7CiAgICAgQVNTRVJUKGNhcGFjaXR5KCkpOworICAgIEFTU0VSVChiYWNrRm9yd2Fy
ZENhY2hlRW50cnkpOwogCi0gICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVu
ZGVkUGFnZSkpOwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5hZGQoJml0ZW0pOworICAgIGlm
IChpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7CisgICAgICAgIEFTU0VSVChtX2l0ZW1z
V2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKKyAgICAgICAgbV9pdGVtc1dpdGhDYWNo
ZWRQYWdlLnJlbW92ZUZpcnN0KCZpdGVtKTsKKyAgICB9CisKKyAgICBpdGVtLnNldEJhY2tGb3J3
YXJkQ2FjaGVFbnRyeShXVEZNb3ZlKGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSkpOworICAgIG1faXRl
bXNXaXRoQ2FjaGVkUGFnZS5hcHBlbmQoJml0ZW0pOwogCiAgICAgaWYgKHNpemUoKSA+IGNhcGFj
aXR5KCkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CiAgICAgQVNTRVJUKHNpemUoKSA8
PSBjYXBhY2l0eSgpKTsKKworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJC
YWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeTogaXRlbTogJXMsIGhhc1N1c3BlbmRlZFBhZ2U6ICVk
LCBzaXplOiAldSAvICV1IiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAh
IWl0ZW0uc3VzcGVuZGVkUGFnZSgpLCBzaXplKCksIGNhcGFjaXR5KCkpOworfQorCit2b2lkIFdl
YkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3sK
KyAgICBhZGRFbnRyeShpdGVtLCBtYWtlVW5pcXVlPEVudHJ5V2l0aFN1c3BlbmRlZFBhZ2U+KCp0
aGlzLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKSk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRD
YWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYWRkRW50cnkoaXRlbSwg
bWFrZVVuaXF1ZTxFbnRyeVdpdGhvdXRTdXNwZW5kZWRQYWdlPigqdGhpcywgaXRlbS5pdGVtSUQo
KSwgV1RGTW92ZShwcm9jZXNzSWRlbnRpZmllcikpKTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewogICAg
IEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKLSAgICBtX2l0
ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKLSAgICBpdGVtLnNldFN1c3BlbmRlZFBh
Z2UobnVsbHB0cik7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZUZpcnN0KCZpdGVt
KTsKKyAgICBpdGVtLnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKKyAgICBSRUxF
QVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50
cnk6IGl0ZW06ICVzLCBzaXplOiAldSAvICV1IiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBzaXplKCksIGNhcGFjaXR5KCkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJk
Q2FjaGU6OnJlbW92ZUVudHJ5KFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVuZGVkUGFnZSkKK3sK
KyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoWyZzdXNwZW5kZWRQYWdlXShhdXRvJiBpdGVtKSB7
CisgICAgICAgIHJldHVybiBpdGVtLnN1c3BlbmRlZFBhZ2UoKSA9PSAmc3VzcGVuZGVkUGFnZTsK
KyAgICB9KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFj
a0ZvcndhcmRDYWNoZTo6dGFrZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCitz
dGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJCYWNrRm9yd2FyZENhY2hlOjp0
YWtlU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogeworICAgIFJF
TEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJCYWNrRm9yd2FyZENhY2hlOjp0YWtlU3Vz
cGVuZGVkUGFnZTogaXRlbTogJXMiLCBpdGVtLml0ZW1JRCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworCiAgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250YWlucygmaXRlbSkp
OwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmUoJml0ZW0pOwotICAgIHJldHVybiBp
dGVtLnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKGl0ZW0uYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KCkpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KCktPnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKHN1c3BlbmRlZFBhZ2Up
OworICAgIHJlbW92ZUVudHJ5KGl0ZW0pOworICAgIHJldHVybiBzdXNwZW5kZWRQYWdlOwogfQog
CiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoWyZwcm9j
ZXNzXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiAmaXRlbS5zdXNwZW5kZWRQYWdlKCkt
PnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Byb2Nl
c3NJZGVudGlmaWVyID0gcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKV0oYXV0byYgZW50
cnkpIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKTsKKyAg
ICAgICAgcmV0dXJuIGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzSWRlbnRp
ZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIH0pOwogfQogCiB2b2lkIFdlYkJhY2tG
b3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25JRF0oYXV0byYgaXRl
bSkgewotICAgICAgICByZXR1cm4gaXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKS53ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOworICAgICAgICByZXR1cm4g
aXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUo
KS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CiAgICAgfSk7CiB9CiAKQEAgLTEwMCwyMSArMTk1
LDIxIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclBhZ2UoV2Vi
UGFnZVByb3h5JiBwYWdlKQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJp
ZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4m
IG1hdGNoZXMpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmJl
Z2luKCk7IGl0ICE9IG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5lbmQoKTspIHsKLSAgICAgICAgYXV0
byBjdXJyZW50ID0gaXQ7Ci0gICAgICAgICsraXQ7Ci0gICAgICAgIGlmIChtYXRjaGVzKCoqY3Vy
cmVudCkpIHsKLSAgICAgICAgICAgICgqY3VycmVudCktPnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0
cik7Ci0gICAgICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKGN1cnJlbnQpOwor
ICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byogaXRl
bSkgeworICAgICAgICBpZiAobWF0Y2hlcygqaXRlbSkpIHsKKyAgICAgICAgICAgIGl0ZW0tPnNl
dEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CiB9CiAK
IHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIoKQogeworICAgIFJFTEVBU0VfTE9HKEJh
Y2tGb3J3YXJkQ2FjaGUsICJXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhciIpOwogICAgIGF1dG8g
aXRlbXNXaXRoQ2FjaGVkUGFnZSA9IFdURk1vdmUobV9pdGVtc1dpdGhDYWNoZWRQYWdlKTsKICAg
ICBmb3IgKGF1dG8qIGl0ZW0gOiBpdGVtc1dpdGhDYWNoZWRQYWdlKQotICAgICAgICBpdGVtLT5z
ZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOworICAgICAgICBpdGVtLT5zZXRCYWNrRm9yd2FyZENh
Y2hlRW50cnkobnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaAppbmRleCA0ZGYxOWFkNGFl
Ny4uNjhlMDI5ZWEyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZENhY2hlLmgKQEAgLTI1LDIxICsyNSwyNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBTdXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3Mg
V2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkQ2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFdlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZENhY2hl
KFdlYlByb2Nlc3NQb29sJik7CiAgICAgfldlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKIAogICAgIHZv
aWQgc2V0Q2FwYWNpdHkodW5zaWduZWQpOwpAQCAtNTIsMTUgKzU1LDE5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZv
aWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYpOworICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW92ZUVudHJ5
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiB0YWtlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworICAgIHZvaWQg
cmVtb3ZlRW50cnkoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT2xkZXN0RW50cnkoKTsKICAgICB2b2lk
IHJlbW92ZUVudHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKT4mKTsKKyAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKIAorICAgIFdl
YlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAw
IH07Ci0gICAgTGlzdEhhc2hTZXQ8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRo
Q2FjaGVkUGFnZTsKKyAgICBWZWN0b3I8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNX
aXRoQ2FjaGVkUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDU3YTMxMzQyMWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdl
YkJhY2tGb3J3YXJkQ2FjaGU7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CisKK2NsYXNzIFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgPSBkZWZhdWx0Owor
CisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja0ZvcndhcmRDYWNoZTsgfQorCisgICAgdmlydHVhbCBTdXNwZW5kZWRQYWdlUHJv
eHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpID0gMDsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgPSAwOwor
Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KFdlYkJh
Y2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgIDogbV9iYWNrRm9yd2Fy
ZENhY2hlKGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWJCYWNrRm9yd2FyZENhY2hlJiBtX2JhY2tGb3J3YXJkQ2FjaGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDgyZTJjNGY3YmUxLi41MWE0OGU2ZDVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0yOTUyLDcgKzI5NTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
QQogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9jZXNzIHRvIGJlIHVzZWQgZm9yIHRo
ZSBuYXZpZ2F0aW9uIGRvZXMgbm90IGdldCBzaHV0RG93biBub3cgZHVlIHRvIGRlc3Ryb3lpbmcg
U3VzcGVuZGVkUGFnZVByb3h5IG9yIFByb3Zpc2lvbmFsUGFnZVByb3h5IG9iamVjdHMuCiAgICAg
ICAgICAgICBhdXRvIHByZXZlbnROYXZpZ2F0aW9uUHJvY2Vzc1NodXRkb3duID0gcHJvY2Vzc0Zv
ck5hdmlnYXRpb24tPm1ha2VTY29wZVByZXZlbnRpbmdTaHV0ZG93bigpOwogCi0gICAgICAgICAg
ICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgPyBiYWNrRm9y
d2FyZENhY2hlKCkudGFrZUVudHJ5KCpkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPmJhY2tGb3J3
YXJkTGlzdEl0ZW0oKSkgOiBudWxscHRyOworICAgICAgICAgICAgQVNTRVJUKCFkZXN0aW5hdGlv
blN1c3BlbmRlZFBhZ2UgfHwgbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKTsKKyAgICAgICAgICAg
IGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA/IGJhY2tGb3J3
YXJkQ2FjaGUoKS50YWtlU3VzcGVuZGVkUGFnZSgqbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSA6
IG51bGxwdHI7CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZS5nZXQoKSA9PSBkZXN0
aW5hdGlvblN1c3BlbmRlZFBhZ2UpOwogICAgICAgICAgICAgaWYgKHN1c3BlbmRlZFBhZ2UgJiYg
c3VzcGVuZGVkUGFnZS0+cGFnZUlzQ2xvc2VkT3JDbG9zaW5nKCkpCiAgICAgICAgICAgICAgICAg
c3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKQEAgLTgwMzQsMTEgKzgwMzYsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdU
SykKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgbV9w
cm9jZXNzLT5kaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKIHsK
ICAgICBpZiAobV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgPT0gcGlubmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY5NDg4ZGU2NzYuLjg0OGY5NjgzNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI3OCw4ICsxMjc4LDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYpOwogICAg
IHZvaWQgZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0KLSAgICB2
b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwogICAgICAgICAKICAgICB2b2lkIHNldFNjcm9sbFBp
bm5pbmdCZWhhdmlvcihXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogICAgIFdlYkNv
cmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzOTM3ZDIwNGU4Li4yZDBi
ZmY4YzExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDUzLDggKzQ1Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAKICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIAotICAgIERpZFNhdmVUb1BhZ2VDYWNo
ZSgpCi0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICBXcmFwQ3J5cHRvS2V5KFZlY3Rvcjx1
aW50OF90PiBrZXkpIC0+IChib29sIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+IHdyYXBwZWRL
ZXkpIFN5bmNocm9ub3VzCiAgICAgVW53cmFwQ3J5cHRvS2V5KFZlY3Rvcjx1aW50OF90PiB3cmFw
cGVkS2V5KSAtPiAoYm9vbCBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiBrZXkpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYjcy
ZDNkNGEwNzQuLmRjOTQyM2E3MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAg
ICwgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkg
eyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJv
Y2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpOyB9KQogI2VuZGlmCi0gICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFrZVVuaXF1ZVJl
ZjxXZWJCYWNrRm9yd2FyZENhY2hlPigpKQorICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1ha2VV
bmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKnRoaXMpKQogICAgICwgbV93ZWJQcm9jZXNz
Q2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkKIHsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC03NDUsMTMgKzc0NSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSYgbWVzc2FnCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6
U3RyaW5nOjpjcmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLnB0cigp
KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzKQotewotICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlICYm
IG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgIT0gcHJvY2VzcykKLSAgICAgICAgbV9wcm9jZXNzV2l0
aFBhZ2VDYWNoZS0+cmVsZWFzZVBhZ2VDYWNoZSgpOwotICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2Fj
aGUgPSBwcm9jZXNzOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JT
YW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxl
UGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgo
KSk7CkBAIC05MzYsNiArOTI5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKIAogICAgIHBh
cmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwgPSBBUEk6OlVSTFJlcXVlc3Q6
OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKIAorICAgIHBhcmFtZXRlcnMucGFnZUNhY2hlQ2Fw
YWNpdHkgPSBiYWNrRm9yd2FyZENhY2hlKCkuY2FwYWNpdHkoKTsKKwogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBnZW5lcmljIHdheSBm
b3Igc3VwcGxlbWVudHMgdG8gYWRkIHRvIHRoZSBpbnRpYWxpemF0aW9uIHBhcmFtZXRlcnMuCiAg
ICAgcGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyA9IHN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwpAQCAt
MTA4OSw4ICsxMDg0LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNz
KTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9mIHRoZSBpbnZhbGlkYXRpb24gY2Fs
bHMgb2YgdGhlIG90aGVyIHN1cHBsZW1lbnRzIGFyZSBzdGlsbCBuZWNlc3NhcnkgaW4gbXVsdGkt
cHJvY2VzcyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBhZmZlY3QgZGF0YSBzdHJ1Y3R1cmVz
IHBlcnRhaW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlzY29ubmVjdGVkLgogICAgIC8vIENs
ZWFyaW5nIGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBmYWlsdXJlcywgc28gaXQncyBsZXNz
IHRyb3VibGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gcHJvdGVjdChwcm9jZXNzKTsKLSAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBw
cm9jZXNzKQotICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKIAogICAg
IG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MoKnByb2Nlc3MpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2MGVmNDkzMWEy
NC4uMDk0ZDJkZDMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtNDA4LDggKzQwOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlk
TWVzc2FnZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUp
OwogCi0gICAgdm9pZCBwcm9jZXNzRGlkQ2FjaGVQYWdlKFdlYlByb2Nlc3NQcm94eSopOwotCiAg
ICAgYm9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0
OwogICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzQWRk
ZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKQEAgLTU5OSw3
ICs1OTcsNiBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcmV3YXJtZWRQcm9j
ZXNzIHsgbnVsbHB0ciB9OwogICAgIFdlYlByb2Nlc3NQcm94eSogbV9kdW1teVByb2Nlc3NQcm94
eSB7IG51bGxwdHIgfTsgLy8gQSBsaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgd2l0aG91dCBi
YWNraW5nIHByb2Nlc3MuCiAKLSAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdl
Q2FjaGUgeyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVzaW5n
IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQ+OwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA5OTYwYWNmMDhkMy4uMDFhM2ZlMTliMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjMxLDYgKzYzMSwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSYgaXRlbQogICAgICAgICByZXR1cm47CiAKICAgICBpdGVtLT5zZXRQYWdlU3RhdGUoUGFnZVN0
YXRlIHsgaXRlbVN0YXRlLnBhZ2VTdGF0ZSB9KTsKKworICAgIGlmICghaXRlbS0+c3VzcGVuZGVk
UGFnZSgpICYmICEhaXRlbS0+YmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgIT0gaXRlbVN0YXRlLmhh
c0NhY2hlZFBhZ2UpIHsKKyAgICAgICAgaWYgKGl0ZW1TdGF0ZS5oYXNDYWNoZWRQYWdlKQorICAg
ICAgICAgICAgcHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCkuYWRkRW50cnkoKml0ZW0s
IGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJv
Y2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKml0ZW0pOworICAgIH0K
IH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtOTg0LDE3ICs5OTEsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNr
ZXI6OnN0YXRlKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1Bh
Z2VDYWNoZSgpCi17Ci0gICAgbV9wcm9jZXNzUG9vbC0+cHJvY2Vzc0RpZENhY2hlUGFnZSh0aGlz
KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VQYWdlQ2FjaGUoKQotewotICAg
IGlmIChjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpSZWxlYXNlUGFnZUNhY2hlKCksIDApOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6d2lu
ZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCA4MzIzNDlhOTlmMC4uY2ZlNGM5MWVmNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xODYsOSArMTg2LDYgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCi0g
ICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLSAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUo
KTsKLQogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYm
KTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRhMjE3NDEwNDI3Li4zZTBjOWVkOGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTgsNiArOTE4LDcgQEAKIAkJNDZCRUI2RTMy
MkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RTEyMkZCQjIx
QTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovOyB9OwogCQk0
NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0
RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJNDZERjA2M0Mx
RjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAw
MTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OworCQk0NkY5QjI2
MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTRBM0NDMThCMTlC
MDY0MEYwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0Ex
OUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmggKi87IH07CiAJCTRBM0NDMThEMTlCMDY0MTkwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QTQxMEYzQzE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oICovOyB9OwogCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEE0MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMzIzOCw2ICszMjM5LDcgQEAKIAkJNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlC
IC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkw
NUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBC
QiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM1
MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzNjE5QUY3QUMz
MDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM5MTlBRjdCMDQwMDJFQkFCNSAvKiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODI2LDYgKzc4MjgsNyBAQAog
CQkJCTFBNjAyMjQ5MThDMTZCMDgwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2Vz
LmluICovLAogCQkJCTQ2MDMwMTFBMjM0QkUzMUQwMDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENh
Y2hlLmNwcCAqLywKIAkJCQk0NjAzMDExQjIzNEJFMzFFMDA5QzgyMTcgLyogV2ViQmFja0Zvcndh
cmRDYWNoZS5oICovLAorCQkJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaCAqLywKIAkJCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyogV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcCAqLywKIAkJCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEgLyog
V2ViQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8q
IFdlYkNvbG9yUGlja2VyLmNwcCAqLywKQEAgLTk4NDgsNiArOTg1MSw3IEBACiAJCQkJMUE4RTdE
M0QxOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3N0ZGNzg1MjM0NkVDQUEw
MDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0M2MjQ0QjIzNDY3OUE0MDAzODNGRTcgLyogV2ViQXV0
aGVudGljYXRpb25QYW5lbEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURCMjIxNEM2
MDRDMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdEQ0VENkYyMTQyRUU2MzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcAppbmRleCBhYzcyMmE1NTgzMC4uMGVjYTRjMWQzMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTExNSw2ICsxMTUsNyBAQCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUgdG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mCiAgICAgc3RhdGUucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlID0gdG9GcmFtZVN0
YXRlKGhpc3RvcnlJdGVtKTsKICAgICBzdGF0ZS5wYWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsK
ICAgICBzdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0ID0gaGlzdG9yeUl0ZW0uc3Rh
dGVPYmplY3QoKTsKKyAgICBzdGF0ZS5oYXNDYWNoZWRQYWdlID0gaGlzdG9yeUl0ZW0uaXNJblBh
Z2VDYWNoZSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggOWZhMTVlMDhmNjQuLmNjZWQxMWZhYmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1MzMsMTYgKzE1MzMsNiBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICNlbmRpZgogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCF3ZWJQYWdlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYXZlVG9QYWdlQ2Fj
aGUoKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tUGFn
ZUNhY2hlKCkKIHsKICAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBkYjc1MmQ1ODg3ZS4uYWZhMTdhNDk2N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMDYsNyArMjA2LDYgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOwog
Ci0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlc3Rv
cmVGcm9tUGFnZUNhY2hlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJh
bWVzZXQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMzQwYzljNGM5NDQuLjM0NmM0Y2VhM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0zODYsNiArMzg2LDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIAogICAgIHNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKHBhcmFtZXRlcnMuZGVm
YXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpOwogCisgICAgc2V0UGFnZUNhY2hlQ2FwYWNpdHko
cGFyYW1ldGVycy5wYWdlQ2FjaGVDYXBhY2l0eSk7CisKICAgICBzZXRBbHdheXNVc2VzQ29tcGxl
eFRleHRDb2RlUGF0aChwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBh
dGgpOwogCiAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhwYXJhbWV0ZXJzLnNob3VsZFVz
ZUZvbnRTbW9vdGhpbmcpOwpAQCAtMTI5NCwxMSArMTI5Niw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
c2V0VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0
YXRlKQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpyZWxlYXNlUGFnZUNhY2hlKCkKLXsK
LSAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5lVG9TaXplTm93KDAsIFBydW5pbmdSZWFz
b246Ok1lbW9yeVByZXNzdXJlKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC0xNzc5LDYgKzE3NzYsMjEgQEAgYm9vbCBX
ZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCit2b2lkIFdlYlByb2Nlc3M6OnNldFBhZ2VDYWNoZUNhcGFjaXR5KHVuc2lnbmVkIGNhcGFj
aXR5KQoreworICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShjYXBhY2l0eSk7
Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDYWNoZWRQYWdlKEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBIaXN0b3J5SXRlbSogaXRlbSA9IFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjppdGVtRm9ySUQoYmFja0ZvcndhcmRJdGVtSUQpOworICAgIGlmICghaXRl
bSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30K
KwogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAg
ICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCBhZTFmNjAzMDgzYy4uNDIyZWViNWE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87
CiBjbGFzcyBQYWdlR3JvdXA7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBVc2VyR2Vz
dHVyZVRva2VuOworc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiBzdHJ1Y3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3Ry
dWN0IE1vY2tNZWRpYURldmljZTsKQEAgLTM2OCwxNCArMzY5LDE1IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQg
cmVsZWFzZVBhZ2VDYWNoZSgpOwotCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3Jp
Z2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0TWVtb3J5
Q2FjaGVEaXNhYmxlZChib29sKTsKIAorICAgIHZvaWQgc2V0UGFnZUNhY2hlQ2FwYWNpdHkodW5z
aWduZWQpOworICAgIHZvaWQgY2xlYXJDYWNoZWRQYWdlKFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICNpZiBFTkFCTEUo
U0VSVklDRV9DT05UUk9MUykKICAgICB2b2lkIHNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0lt
YWdlU2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydmljZXMsIGJvb2wgaGFzUmljaENvbnRl
bnRTZXJ2aWNlcyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2VhZDAxNjY1MDYuLjg4NGM1YWExMGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzUs
OCArNzUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBT
ZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcnMoSVBDOjpEYXRhUmVmZXJlbmNlIHBhcmFtZXRlcnMp
OwogICAgIEhhbmRsZUluamVjdGVkQnVuZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdl
YktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkpOwogCi0gICAgUmVsZWFzZVBhZ2VDYWNoZSgpCi0K
ICAgICBGZXRjaFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4g
d2Vic2l0ZURhdGFUeXBlcykgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVE
YXRhKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgLT4g
KCkgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSAtPiAoKSBBc3luYwpAQCAtMTUzLDYgKzE1MSw5IEBA
IG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ2xlYXJDdXJy
ZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKQogCisgICAgU2V0UGFnZUNhY2hlQ2FwYWNpdHko
dW5zaWduZWQgY2FwYWNpdHkpOworICAgIENsZWFyQ2FjaGVkUGFnZShzdHJ1Y3QgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkgLT4gKCkgQXN5bmMK
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2
ZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2NTE2YzlmNDliMC4uYzIxYmRjZjcxMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAjZW5k
aWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBmaW5hbDsKIAot
ICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXN0b3Jl
RnJvbVBhZ2VDYWNoZSgpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1l
c2V0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA4YWU4NmI1
YzQ4YS4uNDYwYzlhMjY3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDk1
LDEwICsxNDk1LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgfQogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkNGZiNWQ3NzZjNi4uMjYyMTFmYTk2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTk5MiwxMCArOTkyLDYgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFn
ZSgpCiAgICAgY29yZShtX3dlYkZyYW1lKS0+Y3JlYXRlVmlldyhlbmNsb3NpbmdJbnRSZWN0KGxv
Z2ljYWxGcmFtZSkuc2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3IsIC8qIGZpeGVkTGF5b3V0U2l6ZSAq
LyB7IH0sIC8qIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ICovIHsgfSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDMzYTg2Y2U1N2ZmLi44NTZmNTI1ZmRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNzYsNyArMTc2LDYgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380949</attachid>
            <date>2019-10-14 19:17:36 -0700</date>
            <delta_ts>2019-10-14 20:18:22 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>202929_wip.patch</filename>
            <type>text/plain</type>
            <size>56031</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmgKaW5kZXggMmRhZTUyY2U3MzIuLjM2ZDE2ZWY2OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtNDIsNiArNDIsOCBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciB7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBkZWNv
ZGUoRGVjb2RlciYpOwogCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VT
dHJpbmcocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgJy0nLCBpdGVtSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsgfQorCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ1N0
cmluZygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CmluZGV4IDU5YTI2YjlhODkxLi44ZjFlNGRhMDM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKQEAgLTE5OCwxMyArMTk4LDExIEBAIENhY2hlZEZyYW1lOjpDYWNoZWRG
cmFtZShGcmFtZSYgZnJhbWUpCiAgICAgaWYgKCFtX2lzTWFpbkZyYW1lKQogICAgICAgICBmcmFt
ZS5wYWdlKCktPmRlY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKIAotICAgIGZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotCiAjaWZuZGVmIE5ERUJVRwogICAgIGlm
IChtX2lzTWFpbkZyYW1lKQotICAgICAgICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3JlYXRp
bmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4gZnJhbWUgdXJsICclcycgYW5kIERvY3VtZW50TG9hZGVy
ICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdl
dCgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJGaW5pc2hlZCBjcmVhdGluZyBD
YWNoZWRGcmFtZSBmb3IgbWFpbiBmcmFtZSB1cmwgJyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBc
biIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkp
OwogICAgIGVsc2UKLSAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIkZpbmlzaGVkIGNyZWF0aW5nIENh
Y2hlZEZyYW1lIGZvciBjaGlsZCBmcmFtZSB3aXRoIHVybCAnJXMnIGFuZCBEb2N1bWVudExvYWRl
ciAlcFxuIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci5n
ZXQoKSk7CisgICAgICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiRmluaXNoZWQgY3JlYXRpbmcg
Q2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycgYW5kIERvY3VtZW50TG9h
ZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVy
LmdldCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1YjguLmE3OTIzNGRiMmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYgKzE3MiwyMiBA
QCBib29sIEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9
CiAKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZFBhZ2U+JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hlID0gaXNJblBh
Z2VDYWNoZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFnZSk7CisgICAg
aWYgKHdhc0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAgbm90aWZ5Q2hh
bmdlZCgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gSGlzdG9yeUl0ZW06OnRh
a2VDYWNoZWRQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9jYWNoZWRQYWdlKTsKKyAgICBhdXRvIGNh
Y2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7CisgICAgbm90
aWZ5Q2hhbmdlZCgpOworICAgIHJldHVybiBjYWNoZWRQYWdlOworfQorCiBVUkwgSGlzdG9yeUl0
ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7IH0sIG1fdXJsU3RyaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4YWY5OGU0Yzk4Mi4uZjg1NTA4ZjEy
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTIxOSw2ICsyMTksOSBA
QCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRp
dGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwg
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHNldENhY2hlZFBhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQ
YWdlPiB0YWtlQ2FjaGVkUGFnZSgpOworCiAgICAgSGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0
ZW0mKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCBlMzU5NDJjOWQ5Yi4uYjI2NDUxNjFm
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jZGVmaW5lIFBDTE9HKC4uLikgTE9HKFBhZ2VDYWNo
ZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwgIiIsIG1ha2VTdHJpbmcoX19WQV9BUkdTX18pLnV0
ZjgoKS5kYXRhKCkpCisjZGVmaW5lIFBDTE9HKC4uLikgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICIl
KnMlcyIsIGluZGVudExldmVsKjQsICIiLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKS51dGY4KCku
ZGF0YSgpKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0
aWNNZXNzYWdlKERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogewpAQCAtNDYwLDExICs0NjAsMTQgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2Fj
aGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1
cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsK
IAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBh
Z2UpOworICAgICAgICBpdGVtLnNldENhY2hlZFBhZ2UobWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigq
cGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5v
bmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CiAgICAgcHJ1bmUoUHJ1bmlu
Z1JlYXNvbjo6UmVhY2hlZE1heFNpemUpOworCisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRD
YWNoZSwgIlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUi
LCBpdGVtLmlkZW50aWZpZXIoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlQ291bnQoKSwg
bWF4U2l6ZSgpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzcsMTAgKzQ4MCwxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gUGFnZUNhY2hlOjp0YWtlKEhpc3RvcnlJdGVt
JiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIG1faXRlbXMucmVtb3ZlKCZpdGVtKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSA9IFdURk1vdmUoaXRl
bS5tX2NhY2hlZFBhZ2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBjYWNoZWRQ
YWdlID0gaXRlbS50YWtlQ2FjaGVkUGFnZSgpOworCisgICAgUkVMRUFTRV9MT0coQmFja0Zvcndh
cmRDYWNoZSwgIlBhZ2VDYWNoZTo6dGFrZSBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIsIGl0ZW0u
aWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHBhZ2VDb3VudCgpLCBtYXhTaXpl
KCkpOwogCiAgICAgaWYgKGNhY2hlZFBhZ2UtPmhhc0V4cGlyZWQoKSB8fCAocGFnZSAmJiBwYWdl
LT5pc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkpKSB7Ci0gICAgICAgIExPRyhQYWdlQ2FjaGUs
ICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1
c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBh
Z2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFz
IGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
bG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKHBhZ2UsIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6ZXhwaXJlZEtleSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNTAwLDcgKzUwNSw4IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2Uo
UGFnZSYgcGFnZSkKICAgICAgICAgYXV0byBjdXJyZW50ID0gaXQ7CiAgICAgICAgICsraXQ7CiAg
ICAgICAgIGlmICgmKCpjdXJyZW50KS0+bV9jYWNoZWRQYWdlLT5wYWdlKCkgPT0gJnBhZ2UpIHsK
LSAgICAgICAgICAgICgqY3VycmVudCktPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjpyZW1vdmVBbGxJ
dGVtc0ZvclBhZ2UgcmVtb3ZpbmcgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUiLCAoKmN1cnJlbnQp
LT5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50KCkgLSAxLCBt
YXhTaXplKCkpOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0Q2FjaGVkUGFnZShudWxscHRy
KTsKICAgICAgICAgICAgIG1faXRlbXMucmVtb3ZlKGN1cnJlbnQpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNTE2LDcgKzUyMiw3IEBAIENhY2hlZFBhZ2UqIFBhZ2VDYWNoZTo6Z2V0KEhpc3RvcnlJ
dGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIGlmIChjYWNoZWRQYWdlLT5oYXNF
eHBpcmVkKCkgfHwgKHBhZ2UgJiYgcGFnZS0+aXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpKSkg
ewotICAgICAgICBMT0coUGFnZUNhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9t
IGJhY2svZm9yd2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaXRl
bS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhCYWNrRm9yd2Fy
ZENhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9tIGJhY2svZm9yd2FyZCBjYWNo
ZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaXRlbS51cmwoKS5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGxvZ1BhZ2VDYWNoZUZhaWx1cmVEaWFnbm9zdGljTWVz
c2FnZShwYWdlLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4cGlyZWRLZXkoKSk7CiAgICAgICAg
IHJlbW92ZShpdGVtKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MzEsMTUgKzUzNywx
OSBAQCB2b2lkIFBhZ2VDYWNoZTo6cmVtb3ZlKEhpc3RvcnlJdGVtJiBpdGVtKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2l0ZW1zLnJlbW92ZSgmaXRlbSk7Ci0gICAgaXRlbS5tX2NhY2hlZFBh
Z2UgPSBudWxscHRyOworICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShudWxscHRyKTsKKworICAgIFJF
TEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6OnJlbW92ZSBpdGVtOiAlcywg
c2l6ZTogJXUgLyAldSIsIGl0ZW0uaWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOworCiB9CiAKIHZvaWQgUGFnZUNhY2hlOjpwcnVuZShQ
cnVuaW5nUmVhc29uIHBydW5pbmdSZWFzb24pCiB7CiAgICAgd2hpbGUgKHBhZ2VDb3VudCgpID4g
bWF4U2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gb2xkZXN0SXRlbSA9IG1faXRlbXMudGFrZUZpcnN0
KCk7Ci0gICAgICAgIG9sZGVzdEl0ZW0tPm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgICAg
IG9sZGVzdEl0ZW0tPnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiAgICAgICAgIG9sZGVzdEl0ZW0t
Pm1fcHJ1bmluZ1JlYXNvbiA9IHBydW5pbmdSZWFzb247CisgICAgICAgIFJFTEVBU0VfTE9HKEJh
Y2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6OnBydW5lIHJlbW92aW5nIGl0ZW06ICVzLCBzaXpl
OiAldSAvICV1Iiwgb2xkZXN0SXRlbS0+aWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTc2ZGM1NTRlNjUuLmU1
OTZmYTAzZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICNlbmRpZgogICAg
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsIHsgfQogCi0gICAg
dm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlc3RvcmVG
cm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJh
bWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBmZDg0Y2IxNmRkYS4uMDc5NzI3ZWFjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMjAxOCw3ICsyMDE4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0
UHJvdmlzaW9uYWxMb2FkKCkKICAgICBpZiAobV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2UgJiYgaGlz
dG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKQogICAgICAgICBjYWNoZWRQYWdlID0gUGFnZUNhY2hl
OjpzaW5nbGV0b24oKS50YWtlKCpoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCksIG1fZnJhbWUu
cGFnZSgpKTsKIAotICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlTG9hZGluZyAlczogQWJvdXQg
dG8gY29tbWl0IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91cyBVUkwgJyVzJyB0byBuZXcg
VVJMICclcycgd2l0aCBjYWNoZWQgcGFnZSAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2Vi
Q29yZUxvYWRpbmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJl
dmlvdXMgVVJMICclcycgdG8gbmV3IFVSTCAnJXMnIHdpdGggY2FjaGVkIHBhZ2UgJXAiLCBtX2Zy
YW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIiIsCiAgICAgICAgIHBkbCA/
IHBkbC0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEo
KSA6ICI8bm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXI+IiwgY2FjaGVkUGFnZS5nZXQoKSk7
CiAKQEAgLTM2ODAsNyArMzY4MCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVw
dExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBwcm92aXNpb25hbExvYWRlciA9IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKTsKLSAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZVBhZ2VDYWNoZTogTG9hZGluZyBwcm92
aXNpb25hbCBEb2N1bWVudExvYWRlciAlcCB3aXRoIFVSTCAnJXMnIGZyb20gQ2FjaGVkUGFnZSIs
IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
LT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBMT0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGU6IExvYWRpbmcgcHJv
dmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAgd2l0aCBVUkwgJyVzJyBmcm9tIENhY2hlZFBhZ2Ui
LCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCksIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIo
KS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWM3MzJjYzAwMjMuLjhjN2YxNzVmMDhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjc4LDcgKzI3OCw2IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRG
b3JOZXdQYWdlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSA9IDA7IC8v
IENhbiBjaGFuZ2UgZHVlIHRvIG5hdmlnYXRpb24gb3IgRE9NIG1vZGlmaWNhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA5ZDM5MTIzZDNjOC4uMjJiNWMwNDZiOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIE0oQW5pbWF0aW9ucykgXAogICAgIE0oQXBwbGVQYXkpIFwKICAgICBNKEFyY2hp
dmVzKSBcCisgICAgTShCYWNrRm9yd2FyZENhY2hlKSBcCiAgICAgTShDbGlwUmVjdHMpIFwKICAg
ICBNKENvbXBvc2l0aW5nKSBcCiAgICAgTShDb21wb3NpdGluZ092ZXJsYXApIFwKQEAgLTgwLDcg
KzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oTWVzc2FnZVBvcnRzKSBcCiAgICAg
TShOZXR3b3JrKSBcCiAgICAgTShOb3RZZXRJbXBsZW1lbnRlZCkgXAotICAgIE0oUGFnZUNhY2hl
KSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsYXRmb3JtTGVha3MpIFwK
ICAgICBNKFBsdWdpbnMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggN2FhOWM3MjMz
YTQuLjI5NmRlODZlNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNDUsNiArNDUs
NyBAQCBleHRlcm4gIkMiIHsKICAgICBNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMpIFwKICAgICBN
KEFjdGl2aXR5U3RhdGUpIFwKICAgICBNKEJhY2tGb3J3YXJkKSBcCisgICAgTShCYWNrRm9yd2Fy
ZENhY2hlKSBcCiAgICAgTShDYWNoZVN0b3JhZ2UpIFwKICAgICBNKENvbnRlbnRPYnNlcnZhdGlv
bikgXAogICAgIE0oQ29udGV4dE1lbnUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUu
Y3BwCmluZGV4IGIzNzA2MmMxMzg5Li44MjE4YjNlYjZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
ZXNzaW9uU3RhdGUuY3BwCkBAIC0yMjksNiArMjI5LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZVN0YXRlOworICAgIGVuY29k
ZXIgPDwgaGFzQ2FjaGVkUGFnZTsKIH0KIAogT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCkBAIC0yNDMsNiArMjQ0LDkgQEAgT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
PiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXIKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdlU3RhdGUpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFzQ2FjaGVkUGFnZSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IGEzMjlmOTUzMzEwLi45OTNmMGJh
NzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTEzNyw2ICsxMzcsNyBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKICNpZiBQTEFURk9STShDT0NPQSkg
fHwgUExBVEZPUk0oR1RLKQogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90OwogI2Vu
ZGlmCisgICAgYm9vbCBoYXNDYWNoZWRQYWdlIHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBCYWNr
Rm9yd2FyZExpc3RTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGIwODI1YWY4NmVhLi41Nzg4NDg4ZjMzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldl
YkJhY2tGb3J3YXJkQ2FjaGUuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgpAQCAtNTQsNiArNTUsNyBAQCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpCiB7CiAgICAg
QVNTRVJUKGFsbEl0ZW1zKCkuZ2V0KG1faXRlbVN0YXRlLmlkZW50aWZpZXIpID09IHRoaXMpOwog
ICAgIGFsbEl0ZW1zKCkucmVtb3ZlKG1faXRlbVN0YXRlLmlkZW50aWZpZXIpOworICAgIHJlbW92
ZUZyb21CYWNrRm9yd2FyZENhY2hlKCk7CiB9CiAKIEhhc2hNYXA8QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+JiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OjphbGxJdGVtcygpCkBAIC0xNjAsMzggKzE2MiwzMCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06Oml0ZW1Jc0Nsb25lKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIG90aGVyKQog
CiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Ondhc1JlbW92ZWRGcm9tQmFja0ZvcndhcmRM
aXN0KCkKIHsKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBh
Z2UtPmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqdGhpcyk7Ci0gICAgQVNTRVJUKCFt
X3N1c3BlbmRlZFBhZ2UpOworICAgIHJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKCk7CiB9CiAK
LXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCit2b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OnJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKCkKIHsKLSAgICBpZiAo
bV9zdXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPmNsZWFyQmFja0Zvcndh
cmRMaXN0SXRlbSgpOwotCi0gICAgbV9zdXNwZW5kZWRQYWdlID0gV1RGTW92ZShzdXNwZW5kZWRQ
YWdlKTsKLQotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFn
ZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcyk7CisgICAgaWYgKG1fYmFja0ZvcndhcmRD
YWNoZUVudHJ5KQorICAgICAgICBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeS0+YmFja0ZvcndhcmRD
YWNoZSgpLnJlbW92ZUVudHJ5KCp0aGlzKTsKKyAgICBBU1NFUlQoIW1fYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6dGFrZVN1c3BlbmRlZFBhZ2UoKQordm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjpzZXRCYWNrRm9yd2FyZENhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNrRm9yd2FyZENhY2hlRW50cnkpCiB7Ci0gICAgaWYg
KG1fc3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5jbGVhckJhY2tGb3J3
YXJkTGlzdEl0ZW0oKTsKLSAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3N1c3BlbmRlZFBhZ2Us
IG51bGxwdHIpOworICAgIG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gV1RGTW92ZShiYWNrRm9y
d2FyZENhY2hlRW50cnkpOwogfQogCiBTdXNwZW5kZWRQYWdlUHJveHkqIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX3N1c3BlbmRl
ZFBhZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5ID8gbV9iYWNr
Rm9yd2FyZENhY2hlRW50cnktPnN1c3BlbmRlZFBhZ2UoKSA6IG51bGxwdHI7CiB9CiAKICNpZiAh
TE9HX0RJU0FCTEVECiBjb25zdCBjaGFyKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpsb2dnaW5n
U3RyaW5nKCkKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIkJhY2svZm9yd2FyZCBpdGVtIElE
ICIsIGl0ZW1JRCgpLmxvZ1N0cmluZygpLCAiLCBvcmlnaW5hbCBVUkwgIiwgb3JpZ2luYWxVUkwo
KSwgIiwgY3VycmVudCBVUkwgIiwgdXJsKCksIG1fc3VzcGVuZGVkUGFnZSA/ICIoaGFzIGEgc3Vz
cGVuZGVkIHBhZ2UpIiA6ICIiKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIkJhY2svZm9yd2Fy
ZCBpdGVtIElEICIsIGl0ZW1JRCgpLmxvZ1N0cmluZygpLCAiLCBvcmlnaW5hbCBVUkwgIiwgb3Jp
Z2luYWxVUkwoKSwgIiwgY3VycmVudCBVUkwgIiwgdXJsKCksIG1fYmFja0ZvcndhcmRDYWNoZUVu
dHJ5ID8gIihoYXMgYSBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkpIiA6ICIiKTsKIH0KICNlbmRp
ZiAvLyAhTE9HX0RJU0FCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaAppbmRleCBiMmNmNzcxMzRlNS4uNjY0MmUyMDA3ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKIGNsYXNz
IFdlYkJhY2tGb3J3YXJkQ2FjaGU7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiAK
IGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6CkBAIC04MSw2
ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExp
c3QoKTsKIAorICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSogYmFja0ZvcndhcmRDYWNoZUVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hlRW50cnkuZ2V0KCk7IH0KICAg
ICBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdDsKIAogI2lmICFMT0df
RElTQUJMRUQKQEAgLTkwLDE2ICs5MiwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIpOwogCisgICAgdm9pZCByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOwor
CiAgICAgLy8gV2ViQmFja0ZvcndhcmRDYWNoZS4KICAgICBmcmllbmQgY2xhc3MgV2ViQmFja0Zv
cndhcmRDYWNoZTsKLSAgICB2b2lkIHNldFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4mJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKTsKKyAgICB2b2lkIHNldEJhY2tGb3J3YXJkQ2FjaGVF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKIAogICAg
IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0ZW1TdGF0ZTsKICAgICBVUkwgbV9yZXNvdXJj
ZURpcmVjdG9yeVVSTDsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlEOwogICAg
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiBtX2JhY2tGb3J3YXJk
Q2FjaGVFbnRyeTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMWU3NDM1YzEx
NjMuLjJmNWE4NDYzZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTAsNiArOTAsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGlt
ZW91dEludGVydmFsOworICAgIGVuY29kZXIgPDwgcGFnZUNhY2hlQ2FwYWNpdHk7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwog
ICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzU0RLVmVyc2lvbjsKQEAgLTI2OSw2ICsyNzAsOCBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5wYWdlQ2FjaGVDYXBhY2l0eSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVu
ZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAxZWNlODFj
ZmM4NC4uOTYyMWY4MGQ1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsOwog
CiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsIHsgSU5UX01BWCB9Owor
ICAgIHVuc2lnbmVkIHBhZ2VDYWNoZUNhcGFjaXR5IHsgMCB9OwogCiAgICAgYm9vbCBzaG91bGRB
bHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVu
YWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggZTk4ZWMwZWE0
ODAuLjhiMGI0MzBjNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKQEAgLTE2MSw4ICsxNjIsOCBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQgogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZVByb3h5SUQgPSAlIiBQUkl1NjQgIiB3ZWJQYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0Zvcndh
cmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1dKGF1
dG8mIGl0ZW0pIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRlZFBhZ2Uo
KSkgewotICAgICAgICAgICAgaWYgKCZwYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigp
KQorICAgICAgICBpZiAoYXV0byogYmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gaXRlbS5iYWNrRm9y
d2FyZENhY2hlRW50cnkoKSkgeworICAgICAgICAgICAgaWYgKGJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmll
cigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDgzNThkMmY5MGIxLi43Zjg5Y2VlZmMzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC04
MSw3ICs4MSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYg
bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiAgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIik7CiAgICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lIik7CiAgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwotICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKICAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwogICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7
CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwpA
QCAtMTM2LDE4ICsxMzUsNiBAQCBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJv
eHkoKQogICAgIG1fcHJvY2Vzcy0+ZGVjcmVtZW50U3VzcGVuZGVkUGFnZUNvdW50KCk7CiB9CiAK
LXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCi17Ci0gICAgQVNTRVJUKCFtX2JhY2tGb3J3YXJkTGlzdEl0
ZW0pOwotICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA9ICZpdGVtOwotfQotCi12b2lkIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCkKLXsKLSAgICBBU1NFUlQo
bV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKLSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBudWxs
cHRyOwotfQotCiBXZWJCYWNrRm9yd2FyZENhY2hlJiBTdXNwZW5kZWRQYWdlUHJveHk6OmJhY2tG
b3J3YXJkQ2FjaGUoKSBjb25zdAogewogICAgIHJldHVybiBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5iYWNrRm9yd2FyZENhY2hlKCk7CkBAIC0yNDUsMTIgKzIzMiw4IEBAIHZvaWQgU3VzcGVuZGVk
UGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVzdFRvU3VzcGVuZChTdXNwZW5zaW9uU3RhdGUgbmV3
U3VzcGVuc2lvCiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQo
KQogewotICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3RJdGVtKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFN1c3BlbmRlZFBh
Z2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkgZGVzdHJveWluZyB0aGUgc3VzcGVuZGVkIHBh
Z2UgYmVjYXVzZSBpdCBmYWlsZWQgdG8gc3VzcGVuZCBpbiB0aW1lIiwgdGhpcyk7Ci0gICAgQVNT
RVJUKG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpID09IHRoaXMpOwotICAg
IGJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqbV9iYWNrRm9yd2FyZExpc3RJdGVtKTsg
Ly8gV2lsbCBkZXN0cm95IHx0aGlzfC4KKyAgICBiYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50
cnkoKnRoaXMpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8LgogfQogCiB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
aAppbmRleCA5ZjNhZTMzMThmZi4uNzY0YmVkYzc3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBAIC01NiwxMCArNTYsNiBAQCBwdWJsaWM6CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzLmdl
dCgpOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9tYWluRnJhbWVJRDsgfQogCi0gICAgdm9pZCBzZXRCYWNrRm9yd2FyZExpc3RJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKLSAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRM
aXN0SXRlbSgpOwotCi0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFja0ZvcndhcmRMaXN0
SXRlbSgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbTsgfQogICAgIFdlYkJhY2tGb3J3
YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdDsKIAogICAgIGJvb2wgcGFnZUlzQ2xv
c2VkT3JDbG9zaW5nKCkgY29uc3Q7CkBAIC04OCw3ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdl
SUQ7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwotICAgIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIG1fYmFja0ZvcndhcmRMaXN0SXRlbSB7IG51bGxwdHIgfTsKICAgICBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgbV9tYWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9zZWQg
eyBmYWxzZSB9OwogICAgIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSB7IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6Tm8gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggNDY0ODc2NGNmZTIuLmY4MjE5YmY0MTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNw
cApAQCAtMjYsMTcgKzI2LDc1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRDYWNoZS5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN1
c3BlbmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkJhY2tGb3J3YXJk
Q2FjaGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1bHQ7CitjbGFzcyBFbnRyeVdpdGhT
dXNwZW5kZWRQYWdlIGZpbmFsIDogcHVibGljIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7Citw
dWJsaWM6CisgICAgRW50cnlXaXRoU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZENhY2hlJiBi
YWNrRm9yd2FyZENhY2hlLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1
c3BlbmRlZFBhZ2UpCisgICAgICAgIDogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KGJhY2tGb3J3
YXJkQ2FjaGUpCisgICAgICAgICwgbV9zdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFn
ZSkpCisgICAgeworICAgIH0KIAotV2ViQmFja0ZvcndhcmRDYWNoZTo6fldlYkJhY2tGb3J3YXJk
Q2FjaGUoKSA9IGRlZmF1bHQ7CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKSBmaW5h
bCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVuZGVkUGFnZSwgbnVsbHB0cik7IH0KKyAg
ICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHByb2Nlc3MoKS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKTsgfQorICAgIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3VzcGVuZGVk
UGFnZS0+cHJvY2VzcygpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQYWdlOworfTsKKworY2xhc3MgRW50cnlXaXRob3V0
U3VzcGVuZGVkUGFnZSBmaW5hbCA6IHB1YmxpYyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgewor
cHVibGljOgorICAgIEVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRDYWNo
ZSYgYmFja0ZvcndhcmRDYWNoZSwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgYmFja0ZvcndhcmRJdGVtSUQsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKQorICAgICAgICA6IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShiYWNrRm9y
d2FyZENhY2hlKQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZp
ZXIpCisgICAgICAgICwgbV9iYWNrRm9yd2FyZEl0ZW1JRChiYWNrRm9yd2FyZEl0ZW1JRCkKKyAg
ICB7CisgICAgfQorCisgICAgfkVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UoKQorICAgIHsKKyAg
ICAgICAgYXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKKyAgICAgICAgcHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZSht
X2JhY2tGb3J3YXJkSXRlbUlEKSwgW3Rva2VuID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpXSB7IH0pOworICAgIH0KKworICAgIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9j
ZXNzSWRlbnRpZmllcjsgfQorICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihtX3Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKHBy
b2Nlc3MpOworICAgICAgICByZXR1cm4gKnByb2Nlc3M7CisgICAgfQorCitwcml2YXRlOgorICAg
IFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtl
U3VzcGVuZGVkUGFnZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIG1fcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciBtX2JhY2tGb3J3YXJkSXRlbUlEOworfTsKKworV2ViQmFj
a0ZvcndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wpCisgICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQoreworfQorCitXZWJCYWNr
Rm9yd2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNoZSgpCit7CisgICAgY2xlYXIoKTsKK30K
IAogaW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlT2xkZXN0RW50cnkoKQog
ewpAQCAtNDYsNDggKzEwNCw4NSBAQCBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpy
ZW1vdmVPbGRlc3RFbnRyeSgpCiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNp
dHkodW5zaWduZWQgY2FwYWNpdHkpCiB7CisgICAgaWYgKG1fY2FwYWNpdHkgPT0gY2FwYWNpdHkp
CisgICAgICAgIHJldHVybjsKKwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB3aGls
ZSAoc2l6ZSgpID4gY2FwYWNpdHkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CisKKyAg
ICBtX3Byb2Nlc3NQb29sLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0UGFnZUNhY2hlQ2FwYWNpdHkobV9jYXBhY2l0eSkpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3
YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFj
a0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNrRm9yd2FyZENhY2hl
RW50cnkpCiB7CiAgICAgQVNTRVJUKGNhcGFjaXR5KCkpOworICAgIEFTU0VSVChiYWNrRm9yd2Fy
ZENhY2hlRW50cnkpOwogCi0gICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVu
ZGVkUGFnZSkpOwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5hZGQoJml0ZW0pOworICAgIGlm
IChpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7CisgICAgICAgIEFTU0VSVChtX2l0ZW1z
V2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKKyAgICAgICAgbV9pdGVtc1dpdGhDYWNo
ZWRQYWdlLnJlbW92ZUZpcnN0KCZpdGVtKTsKKyAgICB9CisKKyAgICBpdGVtLnNldEJhY2tGb3J3
YXJkQ2FjaGVFbnRyeShXVEZNb3ZlKGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSkpOworICAgIG1faXRl
bXNXaXRoQ2FjaGVkUGFnZS5hcHBlbmQoJml0ZW0pOwogCiAgICAgaWYgKHNpemUoKSA+IGNhcGFj
aXR5KCkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CiAgICAgQVNTRVJUKHNpemUoKSA8
PSBjYXBhY2l0eSgpKTsKKworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJC
YWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeTogaXRlbTogJXMsIGhhc1N1c3BlbmRlZFBhZ2U6ICVk
LCBzaXplOiAldSAvICV1IiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAh
IWl0ZW0uc3VzcGVuZGVkUGFnZSgpLCBzaXplKCksIGNhcGFjaXR5KCkpOworfQorCit2b2lkIFdl
YkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3sK
KyAgICBhZGRFbnRyeShpdGVtLCBtYWtlVW5pcXVlPEVudHJ5V2l0aFN1c3BlbmRlZFBhZ2U+KCp0
aGlzLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKSk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRD
YWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYWRkRW50cnkoaXRlbSwg
bWFrZVVuaXF1ZTxFbnRyeVdpdGhvdXRTdXNwZW5kZWRQYWdlPigqdGhpcywgaXRlbS5pdGVtSUQo
KSwgV1RGTW92ZShwcm9jZXNzSWRlbnRpZmllcikpKTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewogICAg
IEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKLSAgICBtX2l0
ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKLSAgICBpdGVtLnNldFN1c3BlbmRlZFBh
Z2UobnVsbHB0cik7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZUZpcnN0KCZpdGVt
KTsKKyAgICBpdGVtLnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKKyAgICBSRUxF
QVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50
cnk6IGl0ZW06ICVzLCBzaXplOiAldSAvICV1IiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBzaXplKCksIGNhcGFjaXR5KCkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJk
Q2FjaGU6OnJlbW92ZUVudHJ5KFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVuZGVkUGFnZSkKK3sK
KyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoWyZzdXNwZW5kZWRQYWdlXShhdXRvJiBpdGVtKSB7
CisgICAgICAgIHJldHVybiBpdGVtLnN1c3BlbmRlZFBhZ2UoKSA9PSAmc3VzcGVuZGVkUGFnZTsK
KyAgICB9KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFj
a0ZvcndhcmRDYWNoZTo6dGFrZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCitz
dGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJCYWNrRm9yd2FyZENhY2hlOjp0
YWtlU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogeworICAgIFJF
TEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJCYWNrRm9yd2FyZENhY2hlOjp0YWtlU3Vz
cGVuZGVkUGFnZTogaXRlbTogJXMiLCBpdGVtLml0ZW1JRCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworCiAgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250YWlucygmaXRlbSkp
OwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmUoJml0ZW0pOwotICAgIHJldHVybiBp
dGVtLnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKGl0ZW0uYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KCkpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KCktPnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKHN1c3BlbmRlZFBhZ2Up
OworICAgIHJlbW92ZUVudHJ5KGl0ZW0pOworICAgIHJldHVybiBzdXNwZW5kZWRQYWdlOwogfQog
CiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoWyZwcm9j
ZXNzXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiAmaXRlbS5zdXNwZW5kZWRQYWdlKCkt
PnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Byb2Nl
c3NJZGVudGlmaWVyID0gcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKV0oYXV0byYgZW50
cnkpIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKTsKKyAg
ICAgICAgcmV0dXJuIGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzSWRlbnRp
ZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIH0pOwogfQogCiB2b2lkIFdlYkJhY2tG
b3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25JRF0oYXV0byYgaXRl
bSkgewotICAgICAgICByZXR1cm4gaXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKS53ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOworICAgICAgICByZXR1cm4g
aXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUo
KS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CiAgICAgfSk7CiB9CiAKQEAgLTEwMCwyMSArMTk1
LDIxIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclBhZ2UoV2Vi
UGFnZVByb3h5JiBwYWdlKQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJp
ZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4m
IG1hdGNoZXMpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmJl
Z2luKCk7IGl0ICE9IG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5lbmQoKTspIHsKLSAgICAgICAgYXV0
byBjdXJyZW50ID0gaXQ7Ci0gICAgICAgICsraXQ7Ci0gICAgICAgIGlmIChtYXRjaGVzKCoqY3Vy
cmVudCkpIHsKLSAgICAgICAgICAgICgqY3VycmVudCktPnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0
cik7Ci0gICAgICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKGN1cnJlbnQpOwor
ICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byogaXRl
bSkgeworICAgICAgICBpZiAobWF0Y2hlcygqaXRlbSkpIHsKKyAgICAgICAgICAgIGl0ZW0tPnNl
dEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CiB9CiAK
IHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIoKQogeworICAgIFJFTEVBU0VfTE9HKEJh
Y2tGb3J3YXJkQ2FjaGUsICJXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhciIpOwogICAgIGF1dG8g
aXRlbXNXaXRoQ2FjaGVkUGFnZSA9IFdURk1vdmUobV9pdGVtc1dpdGhDYWNoZWRQYWdlKTsKICAg
ICBmb3IgKGF1dG8qIGl0ZW0gOiBpdGVtc1dpdGhDYWNoZWRQYWdlKQotICAgICAgICBpdGVtLT5z
ZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOworICAgICAgICBpdGVtLT5zZXRCYWNrRm9yd2FyZENh
Y2hlRW50cnkobnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaAppbmRleCA0ZGYxOWFkNGFl
Ny4uNjhlMDI5ZWEyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZENhY2hlLmgKQEAgLTI1LDIxICsyNSwyNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBTdXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3Mg
V2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkQ2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFdlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZENhY2hl
KFdlYlByb2Nlc3NQb29sJik7CiAgICAgfldlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKIAogICAgIHZv
aWQgc2V0Q2FwYWNpdHkodW5zaWduZWQpOwpAQCAtNTIsMTUgKzU1LDE5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZv
aWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYpOworICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW92ZUVudHJ5
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiB0YWtlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworICAgIHZvaWQg
cmVtb3ZlRW50cnkoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT2xkZXN0RW50cnkoKTsKICAgICB2b2lk
IHJlbW92ZUVudHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKT4mKTsKKyAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmKTsKIAorICAgIFdl
YlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAw
IH07Ci0gICAgTGlzdEhhc2hTZXQ8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRo
Q2FjaGVkUGFnZTsKKyAgICBWZWN0b3I8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNX
aXRoQ2FjaGVkUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDU3YTMxMzQyMWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdl
YkJhY2tGb3J3YXJkQ2FjaGU7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CisKK2NsYXNzIFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgPSBkZWZhdWx0Owor
CisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja0ZvcndhcmRDYWNoZTsgfQorCisgICAgdmlydHVhbCBTdXNwZW5kZWRQYWdlUHJv
eHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpID0gMDsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgPSAwOwor
Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KFdlYkJh
Y2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgIDogbV9iYWNrRm9yd2Fy
ZENhY2hlKGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWJCYWNrRm9yd2FyZENhY2hlJiBtX2JhY2tGb3J3YXJkQ2FjaGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDgyZTJjNGY3YmUxLi41MWE0OGU2ZDVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0yOTUyLDcgKzI5NTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
QQogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9jZXNzIHRvIGJlIHVzZWQgZm9yIHRo
ZSBuYXZpZ2F0aW9uIGRvZXMgbm90IGdldCBzaHV0RG93biBub3cgZHVlIHRvIGRlc3Ryb3lpbmcg
U3VzcGVuZGVkUGFnZVByb3h5IG9yIFByb3Zpc2lvbmFsUGFnZVByb3h5IG9iamVjdHMuCiAgICAg
ICAgICAgICBhdXRvIHByZXZlbnROYXZpZ2F0aW9uUHJvY2Vzc1NodXRkb3duID0gcHJvY2Vzc0Zv
ck5hdmlnYXRpb24tPm1ha2VTY29wZVByZXZlbnRpbmdTaHV0ZG93bigpOwogCi0gICAgICAgICAg
ICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgPyBiYWNrRm9y
d2FyZENhY2hlKCkudGFrZUVudHJ5KCpkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPmJhY2tGb3J3
YXJkTGlzdEl0ZW0oKSkgOiBudWxscHRyOworICAgICAgICAgICAgQVNTRVJUKCFkZXN0aW5hdGlv
blN1c3BlbmRlZFBhZ2UgfHwgbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKTsKKyAgICAgICAgICAg
IGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA/IGJhY2tGb3J3
YXJkQ2FjaGUoKS50YWtlU3VzcGVuZGVkUGFnZSgqbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSA6
IG51bGxwdHI7CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZS5nZXQoKSA9PSBkZXN0
aW5hdGlvblN1c3BlbmRlZFBhZ2UpOwogICAgICAgICAgICAgaWYgKHN1c3BlbmRlZFBhZ2UgJiYg
c3VzcGVuZGVkUGFnZS0+cGFnZUlzQ2xvc2VkT3JDbG9zaW5nKCkpCiAgICAgICAgICAgICAgICAg
c3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKQEAgLTgwMzQsMTEgKzgwMzYsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdU
SykKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgbV9w
cm9jZXNzLT5kaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKIHsK
ICAgICBpZiAobV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgPT0gcGlubmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY5NDg4ZGU2NzYuLjg0OGY5NjgzNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI3OCw4ICsxMjc4LDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYpOwogICAg
IHZvaWQgZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0KLSAgICB2
b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwogICAgICAgICAKICAgICB2b2lkIHNldFNjcm9sbFBp
bm5pbmdCZWhhdmlvcihXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogICAgIFdlYkNv
cmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzOTM3ZDIwNGU4Li4yZDBi
ZmY4YzExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDUzLDggKzQ1Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAKICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIAotICAgIERpZFNhdmVUb1BhZ2VDYWNo
ZSgpCi0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICBXcmFwQ3J5cHRvS2V5KFZlY3Rvcjx1
aW50OF90PiBrZXkpIC0+IChib29sIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+IHdyYXBwZWRL
ZXkpIFN5bmNocm9ub3VzCiAgICAgVW53cmFwQ3J5cHRvS2V5KFZlY3Rvcjx1aW50OF90PiB3cmFw
cGVkS2V5KSAtPiAoYm9vbCBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiBrZXkpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYjcy
ZDNkNGEwNzQuLmRjOTQyM2E3MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAg
ICwgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkg
eyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJv
Y2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpOyB9KQogI2VuZGlmCi0gICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFrZVVuaXF1ZVJl
ZjxXZWJCYWNrRm9yd2FyZENhY2hlPigpKQorICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1ha2VV
bmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKnRoaXMpKQogICAgICwgbV93ZWJQcm9jZXNz
Q2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkKIHsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC03NDUsMTMgKzc0NSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSYgbWVzc2FnCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6
U3RyaW5nOjpjcmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLnB0cigp
KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzKQotewotICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlICYm
IG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgIT0gcHJvY2VzcykKLSAgICAgICAgbV9wcm9jZXNzV2l0
aFBhZ2VDYWNoZS0+cmVsZWFzZVBhZ2VDYWNoZSgpOwotICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2Fj
aGUgPSBwcm9jZXNzOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JT
YW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxl
UGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgo
KSk7CkBAIC05MzYsNiArOTI5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKIAogICAgIHBh
cmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwgPSBBUEk6OlVSTFJlcXVlc3Q6
OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKIAorICAgIHBhcmFtZXRlcnMucGFnZUNhY2hlQ2Fw
YWNpdHkgPSBiYWNrRm9yd2FyZENhY2hlKCkuY2FwYWNpdHkoKTsKKwogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBnZW5lcmljIHdheSBm
b3Igc3VwcGxlbWVudHMgdG8gYWRkIHRvIHRoZSBpbnRpYWxpemF0aW9uIHBhcmFtZXRlcnMuCiAg
ICAgcGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyA9IHN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwpAQCAt
MTA4OSw4ICsxMDg0LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNz
KTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9mIHRoZSBpbnZhbGlkYXRpb24gY2Fs
bHMgb2YgdGhlIG90aGVyIHN1cHBsZW1lbnRzIGFyZSBzdGlsbCBuZWNlc3NhcnkgaW4gbXVsdGkt
cHJvY2VzcyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBhZmZlY3QgZGF0YSBzdHJ1Y3R1cmVz
IHBlcnRhaW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlzY29ubmVjdGVkLgogICAgIC8vIENs
ZWFyaW5nIGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBmYWlsdXJlcywgc28gaXQncyBsZXNz
IHRyb3VibGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gcHJvdGVjdChwcm9jZXNzKTsKLSAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBw
cm9jZXNzKQotICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKIAogICAg
IG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MoKnByb2Nlc3MpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2MGVmNDkzMWEy
NC4uMDk0ZDJkZDMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtNDA4LDggKzQwOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlk
TWVzc2FnZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUp
OwogCi0gICAgdm9pZCBwcm9jZXNzRGlkQ2FjaGVQYWdlKFdlYlByb2Nlc3NQcm94eSopOwotCiAg
ICAgYm9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0
OwogICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzQWRk
ZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKQEAgLTU5OSw3
ICs1OTcsNiBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcmV3YXJtZWRQcm9j
ZXNzIHsgbnVsbHB0ciB9OwogICAgIFdlYlByb2Nlc3NQcm94eSogbV9kdW1teVByb2Nlc3NQcm94
eSB7IG51bGxwdHIgfTsgLy8gQSBsaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgd2l0aG91dCBi
YWNraW5nIHByb2Nlc3MuCiAKLSAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdl
Q2FjaGUgeyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVzaW5n
IFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQ+OwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA5OTYwYWNmMDhkMy4uNDkxNWZiZmIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjMxLDYgKzYzMSwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSYgaXRlbQogICAgICAgICByZXR1cm47CiAKICAgICBpdGVtLT5zZXRQYWdlU3RhdGUoUGFnZVN0
YXRlIHsgaXRlbVN0YXRlLnBhZ2VTdGF0ZSB9KTsKKworICAgIGlmICghIWl0ZW0tPmJhY2tGb3J3
YXJkQ2FjaGVFbnRyeSgpICE9IGl0ZW1TdGF0ZS5oYXNDYWNoZWRQYWdlKSB7CisgICAgICAgIGlm
IChpdGVtU3RhdGUuaGFzQ2FjaGVkUGFnZSkKKyAgICAgICAgICAgIHByb2Nlc3NQb29sKCkuYmFj
a0ZvcndhcmRDYWNoZSgpLmFkZEVudHJ5KCppdGVtLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7
CisgICAgICAgIGVsc2UgaWYgKCFpdGVtLT5zdXNwZW5kZWRQYWdlKCkpCisgICAgICAgICAgICBw
cm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqaXRlbSk7CisgICAg
fQogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC05ODQsMTcgKzk5MSw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCkKICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hl
Y2tlcjo6c3RhdGUoKSksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRv
UGFnZUNhY2hlKCkKLXsKLSAgICBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzRGlkQ2FjaGVQYWdlKHRo
aXMpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZVBhZ2VDYWNoZSgpCi17Ci0g
ICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlJlbGVhc2VQYWdlQ2FjaGUoKSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCmluZGV4IDgzMjM0OWE5OWYwLi5jZmU0YzkxZWY2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE4Niw5ICsxODYsNiBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAK
LSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotICAgIHZvaWQgcmVsZWFzZVBhZ2VDYWNo
ZSgpOwotCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+
JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZGEyMTc0MTA0MjcuLjNlMGM5ZWQ4YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxOCw2ICs5MTgsNyBAQAogCQk0NkJFQjZF
MzIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZFMTIyRkJC
MjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJ
CTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZF
QzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkRGMDYz
QzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1
MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CisJCTQ2RjlC
MjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAw
MDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNEEzQ0MxOEIx
OUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYz
QTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmggKi87IH07CiAJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFFRiAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zMjM4LDYgKzMyMzksNyBAQAogCQk0NkMzOTIyODIzMTZFQzREMDA4RUVE
OUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYz
OTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4
MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBG
MzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdB
QzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MjYsNiArNzgyOCw3IEBA
CiAJCQkJMUE2MDIyNDkxOEMxNkIwODAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmUubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwICovLAogCQkJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIxNyAvKiBXZWJCYWNrRm9y
d2FyZENhY2hlLmggKi8sCisJCQkJNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeS5oICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBX
ZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAv
KiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUg
LyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtOTg0OCw2ICs5ODUxLDcgQEAKIAkJCQkxQThF
N0QzRDE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc3RkY3ODUyMzQ2RUNB
QTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QzYyNDRCMjM0Njc5QTQwMDM4M0ZFNyAvKiBXZWJB
dXRoZW50aWNhdGlvblBhbmVsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREIyMjE0
QzYwNEMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwCmluZGV4IGFjNzIyYTU1ODMwLi4wZWNhNGMxZDMyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTE1LDYgKzExNSw3IEBAIEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShjb25zdCBXZWJDb3JlOjpI
aXN0b3J5SXRlbSYKICAgICBzdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUgPSB0b0ZyYW1l
U3RhdGUoaGlzdG9yeUl0ZW0pOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgp
OwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3QgPSBoaXN0b3J5SXRlbS5z
dGF0ZU9iamVjdCgpOworICAgIHN0YXRlLmhhc0NhY2hlZFBhZ2UgPSBoaXN0b3J5SXRlbS5pc0lu
UGFnZUNhY2hlKCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA5ZmExNWUwOGY2NC4uY2NlZDExZmFiZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTUzMywxNiArMTUzMyw2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0g
ICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQotICAg
ICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhdmVUb1BhZ2VD
YWNoZSgpKTsKLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21Q
YWdlQ2FjaGUoKQogewogICAgIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZSA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGRiNzUyZDU4ODdlLi5hZmExN2E0OTY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIwNiw3ICsyMDYsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWw7
CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVz
dG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVG
cmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCAzNDBjOWM0Yzk0NC4uMzQ2YzRjZWEzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM4Niw2ICszODYsOCBAQCB2b2lkIFdlYlByb2Nlc3M6Omlu
aXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogCiAgICAgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwocGFyYW1ldGVycy5k
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CiAKKyAgICBzZXRQYWdlQ2FjaGVDYXBhY2l0
eShwYXJhbWV0ZXJzLnBhZ2VDYWNoZUNhcGFjaXR5KTsKKwogICAgIHNldEFsd2F5c1VzZXNDb21w
bGV4VGV4dENvZGVQYXRoKHBhcmFtZXRlcnMuc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2Rl
UGF0aCk7CiAKICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHBhcmFtZXRlcnMuc2hvdWxk
VXNlRm9udFNtb290aGluZyk7CkBAIC0xMjk0LDExICsxMjk2LDYgQEAgdm9pZCBXZWJQcm9jZXNz
OjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVja2VyU3RhdGUmIHRleHRDaGVja2Vy
U3RhdGUpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbGVhc2VQYWdlQ2FjaGUoKQot
ewotICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVUb1NpemVOb3coMCwgUHJ1bmluZ1Jl
YXNvbjo6TWVtb3J5UHJlc3N1cmUpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTE3NzksNiArMTc3NiwyMSBAQCBib29s
IFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0UGFnZUNhY2hlQ2FwYWNpdHkodW5zaWduZWQgY2Fw
YWNpdHkpCit7CisgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKGNhcGFjaXR5
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpjbGVhckNhY2hlZFBhZ2UoQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJRChiYWNrRm9yd2FyZEl0ZW1JRCk7CisgICAgaWYgKCFp
dGVtKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
fQorCiBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsK
ICAgICBpZiAoIW1fbGliV2ViUlRDTmV0d29yaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IGFlMWY2MDMwODNjLi40MjJlZWI1YTk1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFVzZXJH
ZXN0dXJlVG9rZW47CitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKIHN0cnVjdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBz
dHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwpAQCAtMzY4LDE0ICszNjksMTUgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgogCi0gICAgdm9p
ZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEm
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBv
cmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRNZW1v
cnlDYWNoZURpc2FibGVkKGJvb2wpOwogCisgICAgdm9pZCBzZXRQYWdlQ2FjaGVDYXBhY2l0eSh1
bnNpZ25lZCk7CisgICAgdm9pZCBjbGVhckNhY2hlZFBhZ2UoV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgc2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFz
SW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29u
dGVudFNlcnZpY2VzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjZWFkMDE2NjUwNi4uODg0YzVhYTEwZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03
NSw4ICs3NSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZlcmVuY2UgcGFyYW1ldGVy
cyk7CiAgICAgSGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwg
V2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSk7CiAKLSAgICBSZWxlYXNlUGFnZUNhY2hlKCkK
LQogICAgIEZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
PiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0
ZURhdGEpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSAt
PiAoKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpIEFzeW5jCkBAIC0xNTMsNiArMTUxLDkg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDbGVhckN1
cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAKKyAgICBTZXRQYWdlQ2FjaGVDYXBhY2l0
eSh1bnNpZ25lZCBjYXBhY2l0eSk7CisgICAgQ2xlYXJDYWNoZWRQYWdlKHN0cnVjdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlEKSAtPiAoKSBBc3lu
YworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVbmJsb2NrQWNjZXNzaWJpbGl0eVNl
cnZlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDY1MTZjOWY0OWIwLi5jMjFiZGNmNzEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODQsNyArMTg0LDYgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOwog
Ci0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlc3Rv
cmVGcm9tUGFnZUNhY2hlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJh
bWVzZXQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDhhZTg2
YjVjNDhhLi40NjBjOWEyNjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0
OTUsMTAgKzE0OTUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQ0ZmI1ZDc3NmM2Li4yNjIxMWZh
OTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTkyLDEwICs5OTIsNiBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkKICAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2luZ0ludFJlY3Qo
bG9naWNhbEZyYW1lKS5zaXplKCksIGJhY2tncm91bmRDb2xvciwgLyogZml4ZWRMYXlvdXRTaXpl
ICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgKi8geyB9KTsKIH0KIAotdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsKLX0KLQogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMzNhODZjZTU3ZmYuLjg1NmY1MjVmZGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE3Niw3ICsxNzYsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGF0YVNv
dXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNo
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380950</attachid>
            <date>2019-10-14 20:18:23 -0700</date>
            <delta_ts>2019-10-14 20:25:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202929-20191014201819.patch</filename>
            <type>text/plain</type>
            <size>70537</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWViNGIzZmU4ODc5Nzgx
M2JjZjMwZTUyYjRjZGY4OTQ2OTg5YjU1My4uNzBjZjRmY2UyODY5ZGM3OTUxMDMzMWE5MDU4ZmRm
MDhkOWFhZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gSGF2ZSBXZWJCYWNr
Rm9yd2FyZENhY2hlIGNsYXNzIGNvb3JkaW5hdGUgcGFnZSBjYWNoaW5nIGluIGFsbCBXZWJQcm9j
ZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjkyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYyNTA0MjE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlkU2F2ZVRvUGFnZUNhY2hlKCkgZnVuY3Rpb24gYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4K
KyAgICAgICAgSW5zdGVhZCwgd2Ugbm93IGNhbGwgSGlzdG9yeUl0ZW06Om5vdGlmeUNoYW5nZWQo
KSB3aGVuZXZlciBIaXN0b3J5SXRlbTo6bV9jYWNoZWRQYWdlCisgICAgICAgIGNoYW5nZXMuIFRo
aXMgY29tbXVuaWNhdGVzIHRvIHRoZSBVSVByb2Nlc3Mgd2hldGhlciBvciBub3QgYSBIaXN0b3J5
SXRlbSBoYXMgYW4KKyAgICAgICAgYXNzb2NpYXRlZCBDYWNoZWRQYWdlLgorCisgICAgICAgIEkg
YWxzbyBhZGRlZCBtb3JlIHJlbGVhc2UgbG9nZ2luZyB0byB0aGUgUGFnZUNhY2hlIGFuZCByZW5h
bWVkIGl0cyBsb2dnaW5nIGNoYW5uZWwKKyAgICAgICAgZnJvbSBQYWdlQ2FjaGUgdG8gV2ViQmFj
a0ZvcndhcmRDYWNoZSB0byBtYXRjaCB0aGUgVUlQcm9jZXNzJ3MgY2hhbm5lbC4KKworICAgICAg
ICAqIGhpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6c3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBo
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpD
YWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6c2V0Q2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5SXRlbTo6dGFrZUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9y
eUl0ZW0uaDoKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
YWNoZTo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OnJlbW92ZUFsbEl0ZW1z
Rm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2FjaGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6
OnBydW5lKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKwog
MjAxOS0xMC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEJh
Y2svRm9yd2FyZCBjYWNoZSBkb2VzIG5vdCB3b3JrIGFmdGVyIGRvaW5nIGEgZmF2b3JpdGUgbmF2
aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzYzU1NDZiMzVlNmI0MzQ2YTJlMTE1MWRhYjY5MjcxZTA1MDNj
ZGM0Li4zODUxODFlOTcyMDMxYzA3MzEwZmRmOWFkZDM3NWRiZDYxMTBkYjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzOSBAQAorMjAxOS0xMC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSzJdIEhhdmUgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcyBjb29y
ZGluYXRlIHBhZ2UgY2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5MjkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU2MjUwNDIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhhdmUgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcyBjb29yZGluYXRlIHBhZ2Ug
Y2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vzc2VzLiBUbyBhY2hpZXZlIHRoaXMsIHRoZQorICAgICAg
ICBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIDEuIFdoZW5ldmVyIEhpc3Rv
cnlJdGVtOjptX2NhY2hlZFBhZ2UgY2hhbmdlcyBpbiBXZWJDb3JlLCB3ZSBub3RpZnkgdGhlIGNs
aWVudCB0aGF0IHRoZSBIaXN0b3J5SXRlbQorICAgICAgICAgICBoYXMgY2hhbmdlZC4gSSBhZGRl
ZCBhICJoYXNDYWNoZWRQYWdlIiBib29sZWFuIHRvIHRoZSBpdGVtIGluZm8gYmVpbmcgcGFzc2Vk
IHRoZSB0aGUgVUlQcm9jZXNzCisgICAgICAgICAgIHRoYXQgaXMgc2V0IGJhc2VkIG9uIHdoZXRo
ZXIgb3Igbm90IEhpc3RvcnlJdGVtOjptX2NhY2hlZFBhZ2UgaXMgbnVsbC4KKyAgICAgICAgMi4g
VGhlIFdlYkJhY2tGb3J3YXJkQ2FjaGUgbm93IGNvbnRhaW5zIFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeSBvYmplY3RzIGluc3RlYWQgb2YgU3VzcGVuZGVkUGFnZQorICAgICAgICAgICBvYmplY3Rz
LiBBIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBtYXkgaGF2ZSBhIFN1c3BlbmRlZFBhZ2Ugb3Ig
bm90LiBBcyBhIHJlc3VsdCwgd2UgY2FuIG5vdworICAgICAgICAgICBhZGQgdGhlIHRoZSBiYWNr
L2ZvcndhcmQgY2FjaGUgQ2FjaGVkUGFnZSBlbnRyaWVzIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJv
Y2Vzcywgd2hpY2ggZG8gbm90IGhhdmUKKyAgICAgICAgICAgYSBTdXNwZW5kZWRQYWdlUHJveHkg
aW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgMy4gTm93IHRoYXQgV2ViQmFja0ZvcndhcmRDYWNo
ZSBpcyBhd2FyZSBvZiBhbGwgQ2FjaGVkUGFnZXMsIGl0IGNhbiBwcm9wZXJseSBlbmZvcmNlIGEg
Y2FjaGUgY2FwYWNpdHkKKyAgICAgICAgICAgYWNyb3NzIGNhbGwgcHJvY2Vzc2VzLiBXaGVuZXZl
ciBhIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBpcyBwcnVuZWQgZnJvbSB0aGUgY2FjaGUgYW5k
IHRoaXMgZW50cnkKKyAgICAgICAgICAgZG9lcyBub3QgaGF2ZSBhIFN1c3BlbmRlZFBhZ2VQcm94
eSwgd2Ugc2VuZCBhbiBJUEMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB0byByZW1vdmUgdGhp
cworICAgICAgICAgICBjYWNoZWQgcGFnZSBmcm9tIHRoZSBQYWdlQ2FjaGUgaW4gV2ViQ29yZS4K
KworICAgICAgICBQcmV2aW91c2x5LCBhcyBzb29uIGFzIHdlIHdvdWxkIGNhY2hlIGEgcGFnZSBp
biB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSB3b3VsZCBzZW5kIGFuIElQQyB0byB0aGUKKyAg
ICAgICAgVUlQcm9jZXNzIHNvIHRoYXQgaXQgd291bGQgY2xlYXIgdGhlIFBhZ2VDYWNoZSBpbiBh
bnkgcHJldmlvdXMgV2ViQ29udGVudCBwcm9jZXNzLiBUaGlzIHdhcyBhIHN0b3AtZ2FwCisgICAg
ICAgIG1lYXN1cmUgdG8gYXZvaWQgYmxvd2luZyB1cCBtZW1vcnkgaW4gYSBtdWx0aS1wcm9jZXNz
IG1vZGVsIGJ5IGtlZXBpbmcgYSBQYWdlQ2FjaGUgYXJvdW5kIGluIGFsbAorICAgICAgICBXZWJD
b250ZW50IHByb2Nlc3MuIFRoaXMgd291bGQgbWFrZSBzdXJlIG9ubHkgb25lIHByb2Nlc3MgY291
bGQgaGF2ZSBhIFBhZ2VDYWNoZSBhdCBhbnkgcG9pbnQgaW4gdGltZS4KKyAgICAgICAgVGhpcyBs
b2dpYyBpcyBub3cgZHJvcHBlZCBzaW5jZSB0aGUgV2ViQmFja0ZvcndhcmRDYWNoZSBjYW4ga2Vl
cCB0cmFjayBvZiBhbGwgY2FjaGVkIHBhZ2VzIGFjcm9zcyBhbGwKKyAgICAgICAgcHJvY2Vzc2Vz
IGFuZCBlbmZvcmNlIGEgY3Jvc3MtcHJvY2VzcyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGNhY2hl
ZCBwYWdlcy4gVGhpcyBtZWFucyB3ZSBjYW4gbm93IGhhdmUKKyAgICAgICAgUGFnZUNhY2hlIGVu
dHJpZXMgYWNyb3NzIHNldmVyYWwgV2ViQ29udGVudCBwcm9jZXNzZXMsIGFzIGxvbmcgYXMgd2Ug
ZG8gbm90IGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIKKyAgICAgICAgb2YgY2FjaGVkIHBhZ2Vz
LgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICBBZGQgbmV3IEJhY2tG
b3J3YXJkQ2FjaGUgbG9nZ2luZyBjaGFubmVsLgorCisgICAgICAgICogU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoKKyAgICAgICAgQWRkIG5l
dyBiaXQgdG8gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHRvIGluZGljYXRlIHdoZXRoZXIgYSBI
aXN0b3J5SXRlbSBoYXMgYW4gYXNzb2NpYXRlZAorICAgICAgICBDYWNoZWRQYWdlIG9yIG5vdC4K
KworICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6fldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp3YXNSZW1vdmVkRnJv
bUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OnJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBjb25zdCk6Cisg
ICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gbm93IG93biBhIFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeSBpbnN0ZWFkIG9mIHNpbXBseSBhCisgICAgICAgIFN1c3BlbmRlZFBhZ2UuIFRoZSBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgbWF5IGhhdmUgYSBTdXNwZW5kZWRQYWdlIG9yIG5vdC4K
KyAgICAgICAgTm93LCB3aGVuZXZlciBhIEhpc3RvcnlJdGVtIGhhcyBhIENhY2hlZFBhZ2UgaW4g
V2ViQ29yZSwgaXRzIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSBpbiB0aGUgVUlQcm9jZXNzIGhhcyBhbiBhc3NvY2lhdGVkIFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeQorICAgICAgICB3aGV0aGVyIHdlIGhhdmUgYSBTdXNwZW5kZWRQYWdlUHJveHkgZm9yIGl0
IGluIHRoZSBVSVByb2Nlc3Mgb3Igbm90LgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFBhc3MgdGhlIFBhZ2VDYWNoZSBjYXBhY2l0
eSB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIG9uIGNyZWF0aW9uLCBzbyB0aGF0IGl0IG1hdGNo
ZXMgdGhlCisgICAgICAgIGNhcGFjaXR5IG9mIHRoZSBXZWJCYWNrRm9yd2FyZENhY2hlIGluIHRo
ZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOgorICAgICAgICBTdG9wIHN0
b3JpbmcgdGhlIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gb24gdGhlIFN1c3BlbmRlZFBhZ2VQcm94
eS4gVGhpcyBhdm9pZHMgaGF2aW5nIHRvCisgICAgICAgIGtlZXAgdGhpcyBwb2ludGVyIHVwIHRv
IGRhdGUuIFdlIGRvIG5vdCByZWFsbHkgbmVlZCBpdCBhcyB3ZSBjYW4gbm93IGFzayB0aGUgV2Vi
QmFja0ZvcndhcmRDYWNoZQorICAgICAgICB0byBjbGVhciBhbiBlbnRyeSBieSBnaXZpbmcgaXQg
YSBTdXNwZW5kZWRQYWdlUHJveHkgdG8gbWF0Y2guIEdpdmVuIGhvdyBtYW55IGVudHJpZXMgd2Ug
aGF2ZSBhdAorICAgICAgICBtb3N0IGluIHRoZSBjYWNoZSAoMiksIGl0ZXJhdGluZyBvdmVyIHRo
ZW0gdG8gZmluZCB0aGUgb25lIHdpdGggYSBnaXZlbiBzdXNwZW5kZWQgcGFnZSBpcyBjaGVhcC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENhY2hlKToK
KworICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpzZXRDYXBhY2l0eSk6Cisg
ICAgICAgIFNlbmQgYW4gSVBDIG9mIGVhY2ggV2ViUHJvY2VzcyB3aGVuZXZlciB0aGUgY2FwYWNp
dHkgb2YgdGhlIFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2hhbmdlcywgaW4gb3JkZXIKKyAgICAgICAg
dG8gdXBkYXRlIHRoZSBjYXBhY2l0eSBvZiB0aGUgUGFnZUNhY2hlIGluIHRob3NlIHByb2Nlc3Nl
cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6dGFrZVN1c3BlbmRlZFBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNG
b3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3Zl
RW50cmllc01hdGNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6
Y2xlYXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaDoKKyAg
ICAgICAgVXNlIGEgVmVjdG9yIGluc3RlYWQgb2YgYSBMaXN0SGFzaFNldCB0byBzdG9yZSB0aGUg
ZW50cmllcy4gR2l2ZW4gdGhhdCB3ZSBoYXZlIGF0IG1vc3QgMiBlbnRyaWVzLCB1c2luZworICAg
ICAgICBhIFZlY3RvciB3aWxsIGxpa2VseSBiZSBtb3JlIGVmZmljaWVudCBhbmQgZGVmaW5pdGVs
eSB1c2UgbGVzcyBtZW1vcnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnk6OmJhY2tGb3J3YXJkQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnk6OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgIEFk
ZCBuZXcgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IGFic3RyYWN0aW9uIHRvIG1hdGNoIHRoZSBj
b25jZXB0IG9mIFdlYkNvcmU6OkNhY2hlZFBhZ2UgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAg
QSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgbWF5IGhhdmUgYSBTdXNwZW5kZWRQYWdlUHJveHkg
YXNzb2NpYXRlZCB3aXRoIGl0IGluIHRoZSBVSVByb2Nlc3Mgb3Igbm90LgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICBEcm9wIGRpZFNhdmVUb1BhZ2VDYWNoZSBhcyBpdCBpcyBubyBsb25n
ZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIFdoZW5ldmVyIHdlIGdldCBhIEJh
Y2tGb3J3YXJkSXRlbSBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIG5vdyBjaGVjayBp
dCBub3cgaGFzCisgICAgICAgIGFuIGFzc29jaWF0ZWQgQ2FjaGVkUGFnZSBvciBub3QuIElmIGl0
IGRvZXMsIHdlIG1ha2Ugc3VyZSB3ZSBhZGQgYSBjb3JyZXNwb25kaW5nCisgICAgICAgIGVudHJ5
IGluIHRoZSBXZWJCYWNrRm9yd2FyZENhY2hlIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBrbm93cyBh
Ym91dCBpdC4gSWYgaXQgbm8gbG9uZ2VyCisgICAgICAgIGhhcyBhIENhY2hlZFBhZ2UgYW5kIHdl
IGRvbid0IGhhdmUgYSBTdXNwZW5kZWRQYWdlUHJveHkgZm9yIHRoaXMgaXRlbSBpbiB0aGUgVUlQ
cm9jZXNzLAorICAgICAgICB0aGVuIHdlIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBm
cm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuIE5vdGUgdGhhdCB3ZSBkb24ndAorICAgICAgICBk
cm9wIFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzIGluIHRoZSBVSVByb2Nlc3Mgc2ltcGx5IGJl
Y2F1c2UgdGhlaXIgY29ycmVzcG9uZGluZworICAgICAgICBDYWNoZWRQYWdlIGluIHRoZSBXZWJQ
cm9jZXNzIGlzIGdvbmUsIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yLiBUaGlzIGlzIGFu
CisgICAgICAgIG9wdGltaXphdGlvbiB0aGF0IGlzIHVzZWZ1bCBvbiBpT1MsIHdoZXJlIHdlIGRv
IG5vdCBoYXZlIGEgV2ViUHJvY2Vzc0NhY2hlLCBzaW5jZSB3ZQorICAgICAgICBjYW4gcmV1c2Ug
cHJvY2Vzc2VzIGZyb20gU3VzcGVuZGVkUGFnZVByb3hpZXMgb24gbmF2aWdhdGlvbi4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0JhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UGFnZUNhY2hlQ2FwYWNp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhckNhY2hlZFBhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIEJhY2svRm9yd2FyZCBjYWNoZSBkb2VzIG5vdCB3b3JrIGFm
dGVyIGRvaW5nIGEgZmF2b3JpdGUgbmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDRiYTcxZmI4MDE3NjkxNDhlODczNGI5ZmEwNDQ1NGNmNmI4MTc2NDUuLjQ0ZWI3Yzdi
ZTdkY2QxMDczMjJkZmRhMzgxZjNiNTcwZGI4OTUxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEhhdmUgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFz
cyBjb29yZGluYXRlIHBhZ2UgY2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5MjkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU2MjUwNDIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKwogMjAx
OS0xMC0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ2xpcGJvYXJkIEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rp
b25zIHRvIHdvcmsgb24gYm90aCBpT1MgYW5kIG1hY09TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMjMzZDUzYmM1N2ZmNDA4NDAwYTExMzZiZDEyNmMwMTNiNTkwMTgwNi4uYTUwM2M0
MjcyODg2MzU1MGYyNTMxZmM5MTNmNGMzMWJkMDA1ZTkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gSGF2ZSBXZWJCYWNrRm9yd2FyZENhY2hlIGNs
YXNzIGNvb3JkaW5hdGUgcGFnZSBjYWNoaW5nIGluIGFsbCBXZWJQcm9jZXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjkyOQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTYyNTA0MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwog
MjAxOS0xMC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBy
ZXF1ZXN0SWRsZUNhbGxiYWNrIGlzIG5vdCBlbmFibGVkIGluIER1bXBSZW5kZXJUcmVlIG9uIFdp
bmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyLmgKaW5kZXggMmRhZTUyY2U3MzIxMjJiYjQxMjZkMTY4YWViYjZhZWUxYzYwZmNjNi4u
MzZkMTZlZjY5ODFkMGVkZjk4NTA4ZTQ1NzRmNDhiZDYxNDcwNTg2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKQEAgLTQyLDYg
KzQyLDggQEAgc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgewogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cj4gZGVjb2RlKERlY29kZXImKTsKIAorICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtYWtlU3RyaW5nKHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgaXRlbUlkZW50
aWZpZXIudG9VSW50NjQoKSk7IH0KKwogI2lmICFMT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFy
KiBsb2dTdHJpbmcoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAppbmRleCA1OWEyNmI5YTg5MTM3ZWM0NTExMmEwOWFiMTg0ZjFkZTRlODIxMTU1Li44
ZjFlNGRhMDM2YTQyYjRiNWVmNzBhZjVlYmQxM2IwMzg2ZThmMjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTk4LDEzICsxOTgsMTEgQEAgQ2FjaGVkRnJhbWU6
OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKICAgICBpZiAoIW1faXNNYWluRnJhbWUpCiAgICAg
ICAgIGZyYW1lLnBhZ2UoKS0+ZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpOwogCi0gICAgZnJhbWUu
bG9hZGVyKCkuY2xpZW50KCkuZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci0KICNpZm5kZWYgTkRFQlVH
CiAgICAgaWYgKG1faXNNYWluRnJhbWUpCi0gICAgICAgIExPRyhQYWdlQ2FjaGUsICJGaW5pc2hl
ZCBjcmVhdGluZyBDYWNoZWRGcmFtZSBmb3IgbWFpbiBmcmFtZSB1cmwgJyVzJyBhbmQgRG9jdW1l
bnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1lbnRM
b2FkZXIuZ2V0KCkpOworICAgICAgICBMT0coQmFja0ZvcndhcmRDYWNoZSwgIkZpbmlzaGVkIGNy
ZWF0aW5nIENhY2hlZEZyYW1lIGZvciBtYWluIGZyYW1lIHVybCAnJXMnIGFuZCBEb2N1bWVudExv
YWRlciAlcFxuIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9kb2N1bWVudExvYWRl
ci5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBMT0coUGFnZUNhY2hlLCAiRmluaXNoZWQgY3Jl
YXRpbmcgQ2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycgYW5kIERvY3Vt
ZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2RvY3VtZW50
TG9hZGVyLmdldCgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJGaW5pc2hlZCBj
cmVhdGluZyBDYWNoZWRGcmFtZSBmb3IgY2hpbGQgZnJhbWUgd2l0aCB1cmwgJyVzJyBhbmQgRG9j
dW1lbnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCkpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAppbmRleCAzYzA1OWU2ODViODNmZDcwODkw
YTNhZTY1ZmJhODBkNjI3MGU2MTU0Li5hNzkyMzRkYjJhZGJkZWFmYjY2MGQzN2UyNzQ1MjIxZjRi
ZWRlN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDYg
KzE3MiwyMiBAQCBib29sIEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fY2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIDog
ZmFsc2U7CiB9CiAKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBhZ2Uoc3RkOjp1bmlxdWVf
cHRyPENhY2hlZFBhZ2U+JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29sIHdhc0luUGFnZUNhY2hl
ID0gaXNJblBhZ2VDYWNoZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdURk1vdmUoY2FjaGVkUGFn
ZSk7CisgICAgaWYgKHdhc0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2FjaGUoKSkKKyAgICAgICAg
bm90aWZ5Q2hhbmdlZCgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gSGlzdG9y
eUl0ZW06OnRha2VDYWNoZWRQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9jYWNoZWRQYWdlKTsKKyAg
ICBhdXRvIGNhY2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7
CisgICAgbm90aWZ5Q2hhbmdlZCgpOworICAgIHJldHVybiBjYWNoZWRQYWdlOworfQorCiBVUkwg
SGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVSTCh7IH0sIG1fdXJsU3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA4YWY5OGU0Yzk4MmYz
OWIwYTY2YmQ2ZjYxNTI1N2UyYzAwMTY3NDA3Li5mODU1MDhmMTIzZGFlMmNkZjliZmJkNTAzZmVl
ZTNlOTE2NDc5NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCkBAIC0yMTks
NiArMjE5LDkgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBh
bHRlcm5hdGVUaXRsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRlVGl0bGUsIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpOwogCisgICAgdm9pZCBzZXRDYWNo
ZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FjaGVkUGFnZT4gdGFrZUNhY2hlZFBhZ2UoKTsKKwogICAgIEhpc3RvcnlJdGVtKGNvbnN0
IEhpc3RvcnlJdGVtJik7CiAKICAgICBzdGF0aWMgaW50NjRfdCBnZW5lcmF0ZVNlcXVlbmNlTnVt
YmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggZTM1OTQyYzlkOWI0
MTUwN2FlMDJmMDg5MzRjZThkMmFiZjZjODMxZS4uYjI2NDUxNjFmMWFiMTY2OTFhZmFlNTg2ODY3
ZmMwNzE2MmE5MmIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNTcs
NyArNTcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgUENMT0coLi4uKSBM
T0coUGFnZUNhY2hlLCAiJSpzJXMiLCBpbmRlbnRMZXZlbCo0LCAiIiwgbWFrZVN0cmluZyhfX1ZB
X0FSR1NfXykudXRmOCgpLmRhdGEoKSkKKyNkZWZpbmUgUENMT0coLi4uKSBMT0coQmFja0Zvcndh
cmRDYWNoZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwgIiIsIG1ha2VTdHJpbmcoX19WQV9BUkdT
X18pLnV0ZjgoKS5kYXRhKCkpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2dQYWdlQ2FjaGVGYWls
dXJlRGlhZ25vc3RpY01lc3NhZ2UoRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGNsaWVudCwgY29u
c3QgU3RyaW5nJiByZWFzb24pCiB7CkBAIC00NjAsMTEgKzQ2MCwxNCBAQCBib29sIFBhZ2VDYWNo
ZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAg
IC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4K
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxs
b3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNo
ZWRQYWdlPigqcGFnZSk7CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtlVW5pcXVlPENh
Y2hlZFBhZ2U+KCpwYWdlKSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmlu
Z1JlYXNvbjo6Tm9uZTsKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KICAgICBw
cnVuZShQcnVuaW5nUmVhc29uOjpSZWFjaGVkTWF4U2l6ZSk7CisKKyAgICBSRUxFQVNFX0xPRyhC
YWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZSBpdGVtOiAlcywgc2l6
ZTogJXUgLyAldSIsIGl0ZW0uaWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHBh
Z2VDb3VudCgpLCBtYXhTaXplKCkpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ3Nywx
MCArNDgwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBQYWdlQ2FjaGU6OnRha2Uo
SGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgfQogCiAgICAgbV9pdGVtcy5yZW1v
dmUoJml0ZW0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlID0g
V1RGTW92ZShpdGVtLm1fY2FjaGVkUGFnZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBh
Z2U+IGNhY2hlZFBhZ2UgPSBpdGVtLnRha2VDYWNoZWRQYWdlKCk7CisKKyAgICBSRUxFQVNFX0xP
RyhCYWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjp0YWtlIGl0ZW06ICVzLCBzaXplOiAldSAv
ICV1IiwgaXRlbS5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50
KCksIG1heFNpemUoKSk7CiAKICAgICBpZiAoY2FjaGVkUGFnZS0+aGFzRXhwaXJlZCgpIHx8IChw
YWdlICYmIHBhZ2UtPmlzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoKSkpIHsKLSAgICAgICAgTE9H
KFBhZ2VDYWNoZSwgIk5vdCByZXN0b3JpbmcgcGFnZSBmb3IgJXMgZnJvbSBiYWNrL2ZvcndhcmQg
Y2FjaGUgYmVjYXVzZSBjYWNoZSBlbnRyeSBoYXMgZXhwaXJlZCIsIGl0ZW0udXJsKCkuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQmFja0ZvcndhcmRDYWNoZSwgIk5vdCBy
ZXN0b3JpbmcgcGFnZSBmb3IgJXMgZnJvbSBiYWNrL2ZvcndhcmQgY2FjaGUgYmVjYXVzZSBjYWNo
ZSBlbnRyeSBoYXMgZXhwaXJlZCIsIGl0ZW0udXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3NhZ2UocGFnZSwgRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpleHBpcmVkS2V5KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC01MDAsNyArNTA1LDggQEAgdm9pZCBQYWdlQ2FjaGU6OnJlbW92ZUFsbEl0
ZW1zRm9yUGFnZShQYWdlJiBwYWdlKQogICAgICAgICBhdXRvIGN1cnJlbnQgPSBpdDsKICAgICAg
ICAgKytpdDsKICAgICAgICAgaWYgKCYoKmN1cnJlbnQpLT5tX2NhY2hlZFBhZ2UtPnBhZ2UoKSA9
PSAmcGFnZSkgewotICAgICAgICAgICAgKCpjdXJyZW50KS0+bV9jYWNoZWRQYWdlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6
OnJlbW92ZUFsbEl0ZW1zRm9yUGFnZSByZW1vdmluZyBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIs
ICgqY3VycmVudCktPmlkZW50aWZpZXIoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlQ291
bnQoKSAtIDEsIG1heFNpemUoKSk7CisgICAgICAgICAgICAoKmN1cnJlbnQpLT5zZXRDYWNoZWRQ
YWdlKG51bGxwdHIpOwogICAgICAgICAgICAgbV9pdGVtcy5yZW1vdmUoY3VycmVudCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC01MTYsNyArNTIyLDcgQEAgQ2FjaGVkUGFnZSogUGFnZUNhY2hlOjpn
ZXQoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgfQogCiAgICAgaWYgKGNhY2hl
ZFBhZ2UtPmhhc0V4cGlyZWQoKSB8fCAocGFnZSAmJiBwYWdlLT5pc1Jlc291cmNlQ2FjaGluZ0Rp
c2FibGVkKCkpKSB7Ci0gICAgICAgIExPRyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2Ug
Zm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4
cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9H
KEJhY2tGb3J3YXJkQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9m
b3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURp
YWdub3N0aWNNZXNzYWdlKHBhZ2UsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZXhwaXJlZEtleSgp
KTsKICAgICAgICAgcmVtb3ZlKGl0ZW0pOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUz
MSwxNSArNTM3LDE5IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1vdmUoSGlzdG9yeUl0ZW0mIGl0ZW0p
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXRlbXMucmVtb3ZlKCZpdGVtKTsKLSAgICBpdGVt
Lm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG51bGxwdHIp
OworCisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIlBhZ2VDYWNoZTo6cmVtb3Zl
IGl0ZW06ICVzLCBzaXplOiAldSAvICV1IiwgaXRlbS5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgcGFnZUNvdW50KCksIG1heFNpemUoKSk7CisKIH0KIAogdm9pZCBQYWdlQ2Fj
aGU6OnBydW5lKFBydW5pbmdSZWFzb24gcHJ1bmluZ1JlYXNvbikKIHsKICAgICB3aGlsZSAocGFn
ZUNvdW50KCkgPiBtYXhTaXplKCkpIHsKICAgICAgICAgYXV0byBvbGRlc3RJdGVtID0gbV9pdGVt
cy50YWtlRmlyc3QoKTsKLSAgICAgICAgb2xkZXN0SXRlbS0+bV9jYWNoZWRQYWdlID0gbnVsbHB0
cjsKKyAgICAgICAgb2xkZXN0SXRlbS0+c2V0Q2FjaGVkUGFnZShudWxscHRyKTsKICAgICAgICAg
b2xkZXN0SXRlbS0+bV9wcnVuaW5nUmVhc29uID0gcHJ1bmluZ1JlYXNvbjsKKyAgICAgICAgUkVM
RUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIlBhZ2VDYWNoZTo6cHJ1bmUgcmVtb3ZpbmcgaXRl
bTogJXMsIHNpemU6ICV1IC8gJXUiLCBvbGRlc3RJdGVtLT5pZGVudGlmaWVyKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50KCksIG1heFNpemUoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhNzZk
YzU1NGU2NWE1YjE1ZTIwMjhiZmQ0YTZiMjU4M2I3Njk5MDc3Li5lNTk2ZmEwM2UxMWNiZmNjYzE1
NjZkZWZkYmY3NzVkODJiNWQzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsK
ICNlbmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFs
IHsgfQogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbCB7IH0KICAgICB2b2lk
IGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNo
RGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBmZDg0Y2IxNmRkYTkwMDk3NzEwMDA1M2Q5MGQ3ZDYyOWM3NWVlYjFj
Li4wNzk3MjdlYWNkYjY3NTgxMzgzNzU4MjdkZDg1MDFhNzYyNTU4OGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTIwMTgsNyArMjAxOCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKG1fbG9hZGluZ0Zyb21DYWNo
ZWRQYWdlICYmIGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAgICAgICAgY2FjaGVkUGFn
ZSA9IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkudGFrZSgqaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRl
bSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CiAKLSAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRp
bmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJM
ICclcycgdG8gbmV3IFVSTCAnJXMnIHdpdGggY2FjaGVkIHBhZ2UgJXAiLCBtX2ZyYW1lLnRyZWUo
KS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKKyAgICBMT0coQmFja0Zvcndh
cmRDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwg
bG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyB3aXRoIGNhY2hlZCBw
YWdlICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSA6ICIiLAog
ICAgICAgICBwZGwgPyBwZGwtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LnV0ZjgoKS5kYXRhKCkgOiAiPG5vIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyPiIsIGNhY2hl
ZFBhZ2UuZ2V0KCkpOwogCkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpz
aG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGNvbgogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdl
KCkKIHsKICAgICBEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxMb2FkZXIgPSBwcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCk7Ci0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGU6
IExvYWRpbmcgcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAgd2l0aCBVUkwgJyVzJyBmcm9t
IENhY2hlZFBhZ2UiLCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCksIHByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hl
OiBMb2FkaW5nIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyICVwIHdpdGggVVJMICclcycgZnJv
bSBDYWNoZWRQYWdlIiwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLCBwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0
ZjgoKS5kYXRhKCkpOwogCiAgICAgcHJlcGFyZUZvckxvYWRTdGFydCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjNzMyY2MwMDIzMTdhYTA2ZGE1
YmQyYTg2ZjQ5ZDkxZWUyZTljMzEuLjhjN2YxNzVmMDhjOWQxNGJkM2ZmMTUyYzI2MzE2MWIwMGVm
YmIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0y
NzgsNyArMjc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2
ZVRvUGFnZUNhY2hlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VD
YWNoZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0
KGJvb2wpID0gMDsgLy8gQ2FuIGNoYW5nZSBkdWUgdG8gbmF2aWdhdGlvbiBvciBET00gbW9kaWZp
Y2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDlkMzkxMjNkM2M4OGRjYmFi
MjFhNzQyMTQxZTJhZDlmYTBlMmVjZjAuLjIyYjVjMDQ2YjkxNGQ2ZWQyMGM2Mjg4ZWM0ZGUzNWUx
ZTc3NjJiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQyLDYgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oQW5pbWF0aW9ucykgXAogICAgIE0oQXBwbGVQYXkp
IFwKICAgICBNKEFyY2hpdmVzKSBcCisgICAgTShCYWNrRm9yd2FyZENhY2hlKSBcCiAgICAgTShD
bGlwUmVjdHMpIFwKICAgICBNKENvbXBvc2l0aW5nKSBcCiAgICAgTShDb21wb3NpdGluZ092ZXJs
YXApIFwKQEAgLTgwLDcgKzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oTWVzc2Fn
ZVBvcnRzKSBcCiAgICAgTShOZXR3b3JrKSBcCiAgICAgTShOb3RZZXRJbXBsZW1lbnRlZCkgXAot
ICAgIE0oUGFnZUNhY2hlKSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcpIFwKICAgICBNKFBs
YXRmb3JtTGVha3MpIFwKICAgICBNKFBsdWdpbnMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
aW5kZXggN2FhOWM3MjMzYTQzOGQ2YTk4MjQ5ZGZmYmYwNDcwNjJlZTRjMTY3NC4uMjk2ZGU4NmU2
MWUyOTJmN2ViM2Y0NDg2NWM1NzY0ZDliNDMwMzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShBdXRvbWF0aW9uSW50ZXJh
Y3Rpb25zKSBcCiAgICAgTShBY3Rpdml0eVN0YXRlKSBcCiAgICAgTShCYWNrRm9yd2FyZCkgXAor
ICAgIE0oQmFja0ZvcndhcmRDYWNoZSkgXAogICAgIE0oQ2FjaGVTdG9yYWdlKSBcCiAgICAgTShD
b250ZW50T2JzZXJ2YXRpb24pIFwKICAgICBNKENvbnRleHRNZW51KSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBiMzcwNjJjMTM4OTI5NWY0M2U5MThhNjQ2NmEwNjY5
YzQ1OTUwMjEyLi44MjE4YjNlYjZkODk0MjcyYzY4OTQ3NTFlOWE2ODVmZTYwMDFiMDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKQEAgLTIyOSw2ICsyMjksNyBAQCB2b2lk
IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBwYWdl
U3RhdGU7CisgICAgZW5jb2RlciA8PCBoYXNDYWNoZWRQYWdlOwogfQogCiBPcHRpb25hbDxCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGU+IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI0Myw2ICsyNDQsOSBAQCBPcHRpb25hbDxCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGU+IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZGVjb2RlKElQQzo6
RGVjb2RlcgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VTdGF0ZSkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5oYXNDYWNoZWRQYWdlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Np
b25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggYTMy
OWY5NTMzMTA1NjNmY2NhNWRmYzZjMzYwZGI1ZjMxMGViZTM3Yy4uOTkzZjBiYTc4MTBjMDUxNTg2
MWFiNmM1ZTU0YWUwNjAwYWU4YTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgK
QEAgLTEzNyw2ICsxMzcsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHNuYXBzaG90OwogI2VuZGlmCisgICAgYm9vbCBoYXNDYWNoZWRQYWdlIHsgZmFsc2UgfTsK
IH07CiAKIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGIwODI1YWY4NmVhZTRhNzJk
Y2QxNGU3MmI4MDk4M2QzZmQwYjgxYjUuLjU3ODg0ODhmMzNjZDJhYjhlZGU0OTg3MmRjNjA0M2M2
NGQ4Njg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCisjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4K
QEAgLTU0LDYgKzU1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6fldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0oKQogewogICAgIEFTU0VSVChhbGxJdGVtcygpLmdldChtX2l0ZW1TdGF0ZS5pZGVu
dGlmaWVyKSA9PSB0aGlzKTsKICAgICBhbGxJdGVtcygpLnJlbW92ZShtX2l0ZW1TdGF0ZS5pZGVu
dGlmaWVyKTsKKyAgICByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOwogfQogCiBIYXNoTWFw
PEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qPiYgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6YWxsSXRlbXMoKQpAQCAtMTYwLDM4ICsxNjIsMzAgQEAgYm9v
bCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNDbG9uZShjb25zdCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiBvdGhlcikKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp3YXNSZW1v
dmVkRnJvbUJhY2tGb3J3YXJkTGlzdCgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAg
ICAgICAgbV9zdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKnRo
aXMpOwotICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlKTsKKyAgICByZW1vdmVGcm9tQmFja0Zv
cndhcmRDYWNoZSgpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3Bl
bmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQ
YWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpyZW1vdmVGcm9tQmFja0ZvcndhcmRD
YWNoZSgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQ
YWdlLT5jbGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAgIG1fc3VzcGVuZGVkUGFnZSA9
IFdURk1vdmUoc3VzcGVuZGVkUGFnZSk7Ci0KLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQotICAg
ICAgICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMpOworICAg
IGlmIChtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSkKKyAgICAgICAgbV9iYWNrRm9yd2FyZENhY2hl
RW50cnktPmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqdGhpcyk7CisgICAgQVNTRVJU
KCFtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5k
ZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VTdXNwZW5kZWRQYWdlKCkK
K3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0
ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+JiYgYmFja0ZvcndhcmRDYWNo
ZUVudHJ5KQogewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3VzcGVuZGVk
UGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0gICAgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV9zdXNwZW5kZWRQYWdlLCBudWxscHRyKTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRy
eSA9IFdURk1vdmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAogU3VzcGVuZGVkUGFnZVBy
b3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworICAgIHJldHVybiBtX2JhY2tGb3J3YXJk
Q2FjaGVFbnRyeSA/IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5LT5zdXNwZW5kZWRQYWdlKCkgOiBu
dWxscHRyOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAogY29uc3QgY2hhciogV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6bG9nZ2luZ1N0cmluZygpCiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJC
YWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5sb2dTdHJpbmcoKSwgIiwgb3JpZ2luYWwg
VVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQgVVJMICIsIHVybCgpLCBtX3N1c3BlbmRl
ZFBhZ2UgPyAiKGhhcyBhIHN1c3BlbmRlZCBwYWdlKSIgOiAiIik7CisgICAgcmV0dXJuIGRlYnVn
U3RyaW5nKCJCYWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5sb2dTdHJpbmcoKSwgIiwg
b3JpZ2luYWwgVVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQgVVJMICIsIHVybCgpLCBt
X2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA/ICIoaGFzIGEgYmFjay9mb3J3YXJkIGNhY2hlIGVudHJ5
KSIgOiAiIik7CiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYjJjZjc3MTM0ZTU2MjRmN2Qx
YmJiMDk0N2QzNmU0MTNjZGQyODIzMy4uNjY0MmUyMDA3ODQ4YzhhZGQ0MGQ1NzNmMzQzZTkxNjE5
ZWRlOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3VzcGVu
ZGVkUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKK2NsYXNzIFdlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeTsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IHsKIHB1YmxpYzoKQEAgLTgxLDYgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3YXNSZW1v
dmVkRnJvbUJhY2tGb3J3YXJkTGlzdCgpOwogCisgICAgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
KiBiYWNrRm9yd2FyZENhY2hlRW50cnkoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5nZXQoKTsgfQogICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgp
IGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtOTAsMTYgKzkyLDE3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHJlbW92ZUZyb21C
YWNrRm9yd2FyZENhY2hlKCk7CisKICAgICAvLyBXZWJCYWNrRm9yd2FyZENhY2hlLgogICAgIGZy
aWVuZCBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwotICAgIHZvaWQgc2V0U3VzcGVuZGVkUGFn
ZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpOworICAgIHZvaWQg
c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENh
Y2hlRW50cnk+JiYpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRl
OwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJMOwogICAgIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJv
Y2Vzc0lkZW50aWZpZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4g
bV9zdXNwZW5kZWRQYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnk+IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5OwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCAxZTc0MzVjMTE2MzNhMWIxMmZhOWRjZDZlZDE3MTllYjUxMDJiMzc5Li4yZjVh
ODQ2M2Q5NzQ0MTE0MmZhNWQ4NGJmN2M5NzdmZjQwZTdiOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTAs
NiArOTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRl
OwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVy
IDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOworICAgIGVuY29kZXIgPDwgcGFnZUNh
Y2hlQ2FwYWNpdHk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCB1aVByb2Nl
c3NCdW5kbGVJZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzU0RLVmVyc2lvbjsK
QEAgLTI2OSw2ICsyNzAsOCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdlQ2FjaGVDYXBhY2l0eSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCAxZWNlODFjZmM4NGI2Y2IzNTY3YzQ4NWEwYWIyOWRiZTBiZWY3Y2Q1Li45
NjIxZjgwZDU4NmE4YmVjNGE4YmQyZmY5NjExMTAwNmRmY2MwNGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMTQs
NiArMTE0LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIENh
Y2hlTW9kZWwgY2FjaGVNb2RlbDsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJ
bnRlcnZhbCB7IElOVF9NQVggfTsKKyAgICB1bnNpZ25lZCBwYWdlQ2FjaGVDYXBhY2l0eSB7IDAg
fTsKIAogICAgIGJvb2wgc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCB7IGZhbHNl
IH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCmluZGV4IGU5OGVjMGVhNDgwOTQ4MGIzYTdlNDc4OTY1MTNjNDgwYzQ4Y2I3NzguLjhi
MGI0MzBjNDFmZWFhNTllNGQwNTJmYjJkNzUyZjJiMjRjZWIyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1
ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMTYx
LDggKzE2Miw4IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCCiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlUHJveHlJ
RCA9ICUiIFBSSXU2NCAiIHdlYlBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0
YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMs
IHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewotICAgICAgICBpZiAoYXV0byogcGFn
ZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAoJnBhZ2UtPnByb2Nl
c3MoKSA9PSBtX3Byb2Nlc3MucHRyKCkpCisgICAgICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZENh
Y2hlRW50cnkgPSBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7CisgICAgICAgICAgICBp
ZiAoYmFja0ZvcndhcmRDYWNoZUVudHJ5LT5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vz
cy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAmaXRlbSAhPSB0YXJnZXRJdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggODM1OGQy
ZjkwYjFhZTQwNGExZjRjMDBiMmJkZDhjM2MxMjhiZTkzYi4uN2Y4OWNlZWZjM2YyNmQ2ZGRhNjA0
N2ZmZWQ0MTdhY2ViZDA0NDkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuY3BwCkBAIC04MSw3ICs4MSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0
PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRl
ZCgpCiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlYWNoTGF5
b3V0TWlsZXN0b25lIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbiIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRT
YXZlVG9QYWdlQ2FjaGUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3Rh
cnRQcm9ncmVzcyIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
IkVkaXRvclN0YXRlQ2hhbmdlZCIpOwpAQCAtMTM2LDE4ICsxMzUsNiBAQCBTdXNwZW5kZWRQYWdl
UHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAgIG1fcHJvY2Vzcy0+ZGVjcmVtZW50U3Vz
cGVuZGVkUGFnZUNvdW50KCk7CiB9CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNr
Rm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCi17Ci0gICAgQVNT
RVJUKCFtX2JhY2tGb3J3YXJkTGlzdEl0ZW0pOwotICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA9
ICZpdGVtOwotfQotCi12b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xlYXJCYWNrRm9yd2FyZExp
c3RJdGVtKCkKLXsKLSAgICBBU1NFUlQobV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKLSAgICBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gPSBudWxscHRyOwotfQotCiBXZWJCYWNrRm9yd2FyZENhY2hlJiBT
dXNwZW5kZWRQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdAogewogICAgIHJldHVy
biBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCk7CkBAIC0yNDUsMTIg
KzIzMiw4IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVzdFRvU3Vz
cGVuZChTdXNwZW5zaW9uU3RhdGUgbmV3U3VzcGVuc2lvCiAKIHZvaWQgU3VzcGVuZGVkUGFnZVBy
b3h5OjpzdXNwZW5zaW9uVGltZWRPdXQoKQogewotICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3RJ
dGVtKQotICAgICAgICByZXR1cm47Ci0KICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dh
cHBpbmcsICIlcCAtIFN1c3BlbmRlZFBhZ2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkgZGVz
dHJveWluZyB0aGUgc3VzcGVuZGVkIHBhZ2UgYmVjYXVzZSBpdCBmYWlsZWQgdG8gc3VzcGVuZCBp
biB0aW1lIiwgdGhpcyk7Ci0gICAgQVNTRVJUKG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVu
ZGVkUGFnZSgpID09IHRoaXMpOwotICAgIGJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgq
bV9iYWNrRm9yd2FyZExpc3RJdGVtKTsgLy8gV2lsbCBkZXN0cm95IHx0aGlzfC4KKyAgICBiYWNr
Rm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKnRoaXMpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8
LgogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCA5ZjNhZTMzMThmZjU1ZmE4MjM3YjBjZDU1
YzdlMDkwN2QzZTNmNDcyLi43NjRiZWRjNzdiZTgxYjQ1YjQ5MjY1YmExMTVhY2FmN2I1MDc3MDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAt
NTYsMTAgKzU2LDYgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBtYWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KIAotICAg
IHZvaWQgc2V0QmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7Ci0g
ICAgdm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAgIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGJhY2tGb3J3YXJkTGlzdEl0ZW0oKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlz
dEl0ZW07IH0KICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgY29u
c3Q7CiAKICAgICBib29sIHBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygpIGNvbnN0OwpAQCAtODgsNyAr
ODQsNiBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1f
cHJvY2VzczsKLSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtX2JhY2tGb3J3YXJkTGlzdEl0
ZW0geyBudWxscHRyIH07CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZyYW1l
SUQ7CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICAgICBTaG91bGREZWxheUNsb3Np
bmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9zaG91bGREZWxheUNs
b3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyBTaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4
IDQ2NDg3NjRjZmUyNDBjZjdhMGM3NzhlYWIzZjllYTQxM2VlN2M1YmQuLmY4MjE5YmY0MTMyMjNh
NTE5ZGI3MzRmOGYwN2U0ZjJkOTE3ZmU5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC0yNiwxNyArMjYsNzUgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViQmFja0ZvcndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZSgpID0g
ZGVmYXVsdDsKK2NsYXNzIEVudHJ5V2l0aFN1c3BlbmRlZFBhZ2UgZmluYWwgOiBwdWJsaWMgV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5IHsKK3B1YmxpYzoKKyAgICBFbnRyeVdpdGhTdXNwZW5kZWRQ
YWdlKFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUsIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKKyAgICAgICAgOiBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnkoYmFja0ZvcndhcmRDYWNoZSkKKyAgICAgICAgLCBtX3N1c3BlbmRl
ZFBhZ2UoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSkKKyAgICB7CisgICAgfQogCi1XZWJCYWNrRm9y
d2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNoZSgpID0gZGVmYXVsdDsKKyAgICBTdXNwZW5k
ZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1c3Bl
bmRlZFBhZ2UuZ2V0KCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5
PiB0YWtlU3VzcGVuZGVkUGFnZSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNw
ZW5kZWRQYWdlLCBudWxscHRyKTsgfQorICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHBy
b2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcHJvY2VzcygpLmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpOyB9CisgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7IH0KKworcHJpdmF0ZToK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7
Cit9OworCitjbGFzcyBFbnRyeVdpdGhvdXRTdXNwZW5kZWRQYWdlIGZpbmFsIDogcHVibGljIFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7CitwdWJsaWM6CisgICAgRW50cnlXaXRob3V0U3VzcGVu
ZGVkUGFnZShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlLCBjb25zdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiYWNrRm9yd2FyZEl0ZW1JRCwgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5KGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgICwgbV9wcm9jZXNz
SWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgLCBtX2JhY2tGb3J3YXJkSXRl
bUlEKGJhY2tGb3J3YXJkSXRlbUlEKQorICAgIHsKKyAgICB9CisKKyAgICB+RW50cnlXaXRob3V0
U3VzcGVuZGVkUGFnZSgpCisgICAgeworICAgICAgICBhdXRvJiBwcm9jZXNzID0gdGhpcy0+cHJv
Y2VzcygpOworICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbdG9rZW4gPSBw
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldIHsgfSk7CisgICAg
fQorCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisgICAgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8qIHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKG1fcHJvY2Vzc0lkZW50
aWZpZXIpOworICAgICAgICBBU1NFUlQocHJvY2Vzcyk7CisgICAgICAgIHJldHVybiAqcHJvY2Vz
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQ
YWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRha2VTdXNwZW5kZWRQYWdlKCkgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzSWRl
bnRpZmllcjsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIG1fYmFja0Zv
cndhcmRJdGVtSUQ7Cit9OworCitXZWJCYWNrRm9yd2FyZENhY2hlOjpXZWJCYWNrRm9yd2FyZENh
Y2hlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKKyAgICA6IG1fcHJvY2Vzc1Bvb2wocHJv
Y2Vzc1Bvb2wpCit7Cit9CisKK1dlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENh
Y2hlKCkKK3sKKyAgICBjbGVhcigpOworfQogCiBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2FyZENh
Y2hlOjpyZW1vdmVPbGRlc3RFbnRyeSgpCiB7CkBAIC00Niw0OCArMTA0LDg1IEBAIGlubGluZSB2
b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZU9sZGVzdEVudHJ5KCkKIAogdm9pZCBXZWJC
YWNrRm9yd2FyZENhY2hlOjpzZXRDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSkKIHsKKyAgICBp
ZiAobV9jYXBhY2l0eSA9PSBjYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jYXBh
Y2l0eSA9IGNhcGFjaXR5OwogICAgIHdoaWxlIChzaXplKCkgPiBjYXBhY2l0eSkKICAgICAgICAg
cmVtb3ZlT2xkZXN0RW50cnkoKTsKKworICAgIG1fcHJvY2Vzc1Bvb2wuc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRQYWdlQ2FjaGVDYXBhY2l0eShtX2NhcGFjaXR5
KSk7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBz
dXNwZW5kZWRQYWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJiBpdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNo
ZUVudHJ5PiYmIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSkKIHsKICAgICBBU1NFUlQoY2FwYWNpdHko
KSk7CisgICAgQVNTRVJUKGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk7CiAKLSAgICBpdGVtLnNldFN1
c3BlbmRlZFBhZ2UoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSk7Ci0gICAgbV9pdGVtc1dpdGhDYWNo
ZWRQYWdlLmFkZCgmaXRlbSk7CisgICAgaWYgKGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkp
IHsKKyAgICAgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250YWlucygmaXRlbSkp
OworICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlRmlyc3QoJml0ZW0pOworICAg
IH0KKworICAgIGl0ZW0uc2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KFdURk1vdmUoYmFja0Zvcndh
cmRDYWNoZUVudHJ5KSk7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmFwcGVuZCgmaXRlbSk7
CiAKICAgICBpZiAoc2l6ZSgpID4gY2FwYWNpdHkoKSkKICAgICAgICAgcmVtb3ZlT2xkZXN0RW50
cnkoKTsKICAgICBBU1NFUlQoc2l6ZSgpIDw9IGNhcGFjaXR5KCkpOworCisgICAgUkVMRUFTRV9M
T0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5OiBpdGVt
OiAlcywgaGFzU3VzcGVuZGVkUGFnZTogJWQsIHNpemU6ICV1IC8gJXUiLCBpdGVtLml0ZW1JRCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksICEhaXRlbS5zdXNwZW5kZWRQYWdlKCksIHNpemUoKSwg
Y2FwYWNpdHkoKSk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiBzdXNwZW5kZWRQYWdlKQoreworICAgIGFkZEVudHJ5KGl0ZW0sIG1ha2VVbmlxdWU8
RW50cnlXaXRoU3VzcGVuZGVkUGFnZT4oKnRoaXMsIFdURk1vdmUoc3VzcGVuZGVkUGFnZSkpKTsK
K30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmll
cikKK3sKKyAgICBhZGRFbnRyeShpdGVtLCBtYWtlVW5pcXVlPEVudHJ5V2l0aG91dFN1c3BlbmRl
ZFBhZ2U+KCp0aGlzLCBpdGVtLml0ZW1JRCgpLCBXVEZNb3ZlKHByb2Nlc3NJZGVudGlmaWVyKSkp
OwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJ5KFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7CiAgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5j
b250YWlucygmaXRlbSkpOwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmUoJml0ZW0p
OwotICAgIGl0ZW0uc2V0U3VzcGVuZGVkUGFnZShudWxscHRyKTsKKyAgICBtX2l0ZW1zV2l0aENh
Y2hlZFBhZ2UucmVtb3ZlRmlyc3QoJml0ZW0pOworICAgIGl0ZW0uc2V0QmFja0ZvcndhcmRDYWNo
ZUVudHJ5KG51bGxwdHIpOworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJC
YWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyeTogaXRlbTogJXMsIHNpemU6ICV1IC8gJXUiLCBp
dGVtLml0ZW1JRCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNpemUoKSwgY2FwYWNpdHkoKSk7
Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cnkoU3VzcGVuZGVkUGFn
ZVByb3h5JiBzdXNwZW5kZWRQYWdlKQoreworICAgIHJlbW92ZUVudHJpZXNNYXRjaGluZyhbJnN1
c3BlbmRlZFBhZ2VdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGl0ZW0uc3VzcGVuZGVk
UGFnZSgpID09ICZzdXNwZW5kZWRQYWdlOworICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJCYWNrRm9yd2FyZENhY2hlOjp0YWtlRW50cnkoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKK3N0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+IFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VTdXNwZW5kZWRQYWdlKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0pCiB7CisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIldl
YkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VTdXNwZW5kZWRQYWdlOiBpdGVtOiAlcyIsIGl0ZW0uaXRl
bUlEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICBBU1NFUlQobV9pdGVtc1dpdGhD
YWNoZWRQYWdlLmNvbnRhaW5zKCZpdGVtKSk7Ci0gICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJl
bW92ZSgmaXRlbSk7Ci0gICAgcmV0dXJuIGl0ZW0udGFrZVN1c3BlbmRlZFBhZ2UoKTsKKyAgICBB
U1NFUlQoaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSk7CisgICAgYXV0byBzdXNwZW5kZWRQ
YWdlID0gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+dGFrZVN1c3BlbmRlZFBhZ2UoKTsK
KyAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZSk7CisgICAgcmVtb3ZlRW50cnkoaXRlbSk7CisgICAg
cmV0dXJuIHN1c3BlbmRlZFBhZ2U7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVt
b3ZlRW50cmllc0ZvclByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJl
bW92ZUVudHJpZXNNYXRjaGluZyhbJnByb2Nlc3NdKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0
dXJuICZpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09ICZwcm9jZXNzOworICAgIHJl
bW92ZUVudHJpZXNNYXRjaGluZyhbcHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNzLmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpXShhdXRvJiBlbnRyeSkgeworICAgICAgICBBU1NFUlQoZW50cnkuYmFj
a0ZvcndhcmRDYWNoZUVudHJ5KCkpOworICAgICAgICByZXR1cm4gZW50cnkuYmFja0ZvcndhcmRD
YWNoZUVudHJ5KCktPnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gcHJvY2Vzc0lkZW50aWZpZXI7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclNl
c3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJlbW92ZUVudHJpZXNNYXRj
aGluZyhbc2Vzc2lvbklEXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpdGVtLnN1c3Bl
bmRlZFBhZ2UoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBz
ZXNzaW9uSUQ7CisgICAgICAgIHJldHVybiBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5w
cm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKICAg
ICB9KTsKIH0KIApAQCAtMTAwLDIxICsxOTUsMjEgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hl
OjpyZW1vdmVFbnRyaWVzRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAKIHZvaWQgV2ViQmFj
a0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc01hdGNoaW5nKGNvbnN0IEZ1bmN0aW9uPGJvb2wo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYgbWF0Y2hlcykKIHsKLSAgICBmb3IgKGF1dG8gaXQg
PSBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuYmVnaW4oKTsgaXQgIT0gbV9pdGVtc1dpdGhDYWNoZWRQ
YWdlLmVuZCgpOykgewotICAgICAgICBhdXRvIGN1cnJlbnQgPSBpdDsKLSAgICAgICAgKytpdDsK
LSAgICAgICAgaWYgKG1hdGNoZXMoKipjdXJyZW50KSkgewotICAgICAgICAgICAgKCpjdXJyZW50
KS0+c2V0U3VzcGVuZGVkUGFnZShudWxscHRyKTsKLSAgICAgICAgICAgIG1faXRlbXNXaXRoQ2Fj
aGVkUGFnZS5yZW1vdmUoY3VycmVudCk7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92
ZUFsbE1hdGNoaW5nKFsmXShhdXRvKiBpdGVtKSB7CisgICAgICAgIGlmIChtYXRjaGVzKCppdGVt
KSkgeworICAgICAgICAgICAgaXRlbS0+c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KG51bGxwdHIp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVh
cigpCiB7CisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkJhY2tGb3J3YXJk
Q2FjaGU6OmNsZWFyIik7CiAgICAgYXV0byBpdGVtc1dpdGhDYWNoZWRQYWdlID0gV1RGTW92ZSht
X2l0ZW1zV2l0aENhY2hlZFBhZ2UpOwogICAgIGZvciAoYXV0byogaXRlbSA6IGl0ZW1zV2l0aENh
Y2hlZFBhZ2UpCi0gICAgICAgIGl0ZW0tPnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7CisgICAg
ICAgIGl0ZW0tPnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRDYWNoZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRDYWNoZS5oCmluZGV4IDRkZjE5YWQ0YWU3MjcwOGJmMDAxZTUzZmRmMjcxNmQ0M2FmYjgxZTcu
LjY4ZTAyOWVhMmQzMWRlN2Y4MGQwNTgzNmY2OTg2ZjE0Y2ZkMzFjMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKQEAgLTI1LDIxICsyNSwyNCBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwog
Y2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9j
ZXNzUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBl
eHBsaWNpdCBXZWJCYWNrRm9yd2FyZENhY2hlKFdlYlByb2Nlc3NQb29sJik7CiAgICAgfldlYkJh
Y2tGb3J3YXJkQ2FjaGUoKTsKIAogICAgIHZvaWQgc2V0Q2FwYWNpdHkodW5zaWduZWQpOwpAQCAt
NTIsMTUgKzU1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUVudHJpZXNGb3JTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYpOworICAgIHZvaWQg
YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlbW92ZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlRW50cnkoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpOworICAgIHZvaWQgcmVtb3ZlRW50cnkoU3VzcGVuZGVkUGFnZVByb3h5
Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRl
ZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVt
b3ZlT2xkZXN0RW50cnkoKTsKICAgICB2b2lkIHJlbW92ZUVudHJpZXNNYXRjaGluZyhjb25zdCBG
dW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mKTsKKyAgICB2b2lkIGFkZEVu
dHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0Zvcndh
cmRDYWNoZUVudHJ5PiYmKTsKIAorICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOwog
ICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAwIH07Ci0gICAgTGlzdEhhc2hTZXQ8V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2FjaGVkUGFnZTsKKyAgICBWZWN0b3I8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2FjaGVkUGFnZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTdhMzEzNDIxZmZlMDYzMjkzMjE5MmFhMmZj
NGM4NGE1N2IzNzA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBT
dXNwZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOworY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OworCitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeSgpID0gZGVmYXVsdDsKKworICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJh
Y2tGb3J3YXJkQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkQ2FjaGU7IH0KKwor
ICAgIHZpcnR1YWwgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1
c3BlbmRlZFBhZ2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcygpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENh
Y2hlKQorICAgICAgICA6IG1fYmFja0ZvcndhcmRDYWNoZShiYWNrRm9yd2FyZENhY2hlKQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYgbV9iYWNrRm9y
d2FyZENhY2hlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4MmUyYzRmN2JlMTgxY2UyM2RkNTU5ODdkODM5
OTAwNmE5ZDM1ZDQxLi41MWE0OGU2ZDVlMzc0YmM3Y2U1MzJiZWIyNWUwOGYzYTc4ZWIzNTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI5NTIsNyArMjk1
Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIHByb2Nlc3MgdG8gYmUgdXNlZCBmb3IgdGhlIG5hdmlnYXRpb24gZG9lcyBub3QgZ2V0IHNo
dXREb3duIG5vdyBkdWUgdG8gZGVzdHJveWluZyBTdXNwZW5kZWRQYWdlUHJveHkgb3IgUHJvdmlz
aW9uYWxQYWdlUHJveHkgb2JqZWN0cy4KICAgICAgICAgICAgIGF1dG8gcHJldmVudE5hdmlnYXRp
b25Qcm9jZXNzU2h1dGRvd24gPSBwcm9jZXNzRm9yTmF2aWdhdGlvbi0+bWFrZVNjb3BlUHJldmVu
dGluZ1NodXRkb3duKCk7CiAKLSAgICAgICAgICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3Rp
bmF0aW9uU3VzcGVuZGVkUGFnZSA/IGJhY2tGb3J3YXJkQ2FjaGUoKS50YWtlRW50cnkoKmRlc3Rp
bmF0aW9uU3VzcGVuZGVkUGFnZS0+YmFja0ZvcndhcmRMaXN0SXRlbSgpKSA6IG51bGxwdHI7Cisg
ICAgICAgICAgICBBU1NFUlQoIWRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSB8fCBuYXZpZ2F0aW9u
LT50YXJnZXRJdGVtKCkpOworICAgICAgICAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gZGVzdGlu
YXRpb25TdXNwZW5kZWRQYWdlID8gYmFja0ZvcndhcmRDYWNoZSgpLnRha2VTdXNwZW5kZWRQYWdl
KCpuYXZpZ2F0aW9uLT50YXJnZXRJdGVtKCkpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIEFTU0VS
VChzdXNwZW5kZWRQYWdlLmdldCgpID09IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSk7CiAgICAg
ICAgICAgICBpZiAoc3VzcGVuZGVkUGFnZSAmJiBzdXNwZW5kZWRQYWdlLT5wYWdlSXNDbG9zZWRP
ckNsb3NpbmcoKSkKICAgICAgICAgICAgICAgICBzdXNwZW5kZWRQYWdlID0gbnVsbHB0cjsKIApA
QCAtODAzNCwxMSArODAzNiw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlv
bigpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U2F2ZVRvUGFnZUNhY2hlKCkKLXsKLSAgICBtX3Byb2Nlc3MtPmRpZFNhdmVUb1BhZ2VDYWNoZSgp
OwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9s
bFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogewogICAgIGlmIChtX3Njcm9sbFBpbm5pbmdCZWhh
dmlvciA9PSBwaW5uaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBhNjk0ODhkZTY3NmQ4Y2Y3YWJmMjBhMjZkMTc1NDMwMjY4ZDliZWVhLi44NDhmOTY4MzQ3Njdk
OWVmZDZiMjE1MTYzZGZlMjE4NWU1NWEwOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTI3OCw4ICsxMjc4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRG
aW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0PiYpOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0
KHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0KLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwog
ICAgICAgICAKICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXZWJDb3JlOjpTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IpOwogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBz
Y3JvbGxQaW5uaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhh
dmlvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDgzOTM3ZDIwNGU4ZDBiZDhjMmEwNTc4MTFiNTcyMzQyYzBjYTYwNjkuLjJk
MGJmZjhjMTE0M2IxZDg0ZWE2M2Y5NGNhZDg3YzI0MTcwNDFmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ1Myw4ICs0NTMs
NiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSgpCiAKLSAgICBEaWRTYXZlVG9QYWdlQ2FjaGUoKQotCiAjaWYgRU5BQkxFKFdFQl9DUllQ
VE8pCiAgICAgV3JhcENyeXB0b0tleShWZWN0b3I8dWludDhfdD4ga2V5KSAtPiAoYm9vbCBzdWNj
ZWVkZWQsIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5KSBTeW5jaHJvbm91cwogICAgIFVud3Jh
cENyeXB0b0tleShWZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleSkgLT4gKGJvb2wgc3VjY2VlZGVk
LCBWZWN0b3I8dWludDhfdD4ga2V5KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGI3MmQzZDRhMDc0NDc2NjJkMjZhM2NlYTM3YzNj
MzJjZTcwOTM4NWIuLmRjOTQyM2E3MWRhNTZkZDdiM2I1Yzc3MGVmZjYwZDk3N2I0MTIzY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzNiw3ICsy
MzYsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2ZvcmVncm91bmRXZWJQcm9jZXNz
Q291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25z
KCk7IH0pCiAgICAgLCBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlcihbdGhpc10oUmVmQ291
bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0pCiAjZW5kaWYKLSAgICAs
IG1fYmFja0ZvcndhcmRDYWNoZShtYWtlVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2FjaGU+KCkp
CisgICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENh
Y2hlPigqdGhpcykpCiAgICAgLCBtX3dlYlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlBy
b2Nlc3NDYWNoZT4oKnRoaXMpKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKQEAgLTc0NSwxMyArNzQ1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWcKICAgICBzX2lu
dmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNzYWdlTmFt
ZVN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSkucHRyKCkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cHJvY2Vzc0RpZENhY2hlUGFnZShXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCi17Ci0g
ICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgJiYgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSAh
PSBwcm9jZXNzKQotICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlLT5yZWxlYXNlUGFnZUNh
Y2hlKCk7Ci0gICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IHByb2Nlc3M7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKIHsKICAg
ICBtX3Jlc29sdmVkUGF0aHMuaW5qZWN0ZWRCdW5kbGVQYXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5k
Ym94RXh0ZW5zaW9uKGluamVjdGVkQnVuZGxlUGF0aCgpKTsKQEAgLTkzNiw2ICs5MjksOCBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFdlYnNpdGVEYQogCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRp
bWVvdXRJbnRlcnZhbCA9IEFQSTo6VVJMUmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgp
OwogCisgICAgcGFyYW1ldGVycy5wYWdlQ2FjaGVDYXBhY2l0eSA9IGJhY2tGb3J3YXJkQ2FjaGUo
KS5jYXBhY2l0eSgpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLy8gRklYTUU6
IFRoZXJlIHNob3VsZCBiZSBhIGdlbmVyaWMgd2F5IGZvciBzdXBwbGVtZW50cyB0byBhZGQgdG8g
dGhlIGludGlhbGl6YXRpb24gcGFyYW1ldGVycy4KICAgICBwYXJhbWV0ZXJzLm5vdGlmaWNhdGlv
blBlcm1pc3Npb25zID0gc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCkt
Pm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CkBAIC0xMDg5LDggKzEwODQsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3
NjU+IFNvbWUgb2YgdGhlIGludmFsaWRhdGlvbiBjYWxscyBvZiB0aGUgb3RoZXIgc3VwcGxlbWVu
dHMgYXJlIHN0aWxsIG5lY2Vzc2FyeSBpbiBtdWx0aS1wcm9jZXNzIG1vZGUsIGJ1dCB0aGV5IHNo
b3VsZCBvbmx5IGFmZmVjdCBkYXRhIHN0cnVjdHVyZXMgcGVydGFpbmluZyB0byB0aGUgcHJvY2Vz
cyBiZWluZyBkaXNjb25uZWN0ZWQuCiAgICAgLy8gQ2xlYXJpbmcgZXZlcnl0aGluZyBjYXVzZXMg
YXNzZXJ0aW9uIGZhaWx1cmVzLCBzbyBpdCdzIGxlc3MgdHJvdWJsZSB0byBza2lwIHRoYXQgZm9y
IG5vdy4KICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0KHByb2Nlc3MpOwotICAg
IGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vz
c1dpdGhQYWdlQ2FjaGUgPSBudWxscHRyOwogCiAgICAgbV9iYWNrRm9yd2FyZENhY2hlLT5yZW1v
dmVFbnRyaWVzRm9yUHJvY2VzcygqcHJvY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDYwZWY0OTMxYTI0OGU1Zjc3NWFlNDNhYWI0YmI5ZDQ5MGRi
NjVlMmIuLjA5NGQyZGQzMDIyNzQ1NWE5MzEwMWE5YmI5YzhlZTZhYWQ5Y2U0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDA4LDggKzQwOCw2IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHZvaWQgKCop
KFdLU3RyaW5nUmVmKSk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpOwogCi0gICAgdm9pZCBwcm9jZXNzRGlk
Q2FjaGVQYWdlKFdlYlByb2Nlc3NQcm94eSopOwotCiAgICAgYm9vbCBpc1VSTEtub3duSFNUU0hv
c3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRIU1RTSG9z
dHMoKTsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0
RGF0ZUludGVydmFsU2luY2UxOTcwKTsKQEAgLTU5OSw3ICs1OTcsNiBAQCBwcml2YXRlOgogICAg
IFdlYlByb2Nlc3NQcm94eSogbV9wcmV3YXJtZWRQcm9jZXNzIHsgbnVsbHB0ciB9OwogICAgIFdl
YlByb2Nlc3NQcm94eSogbV9kdW1teVByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsgLy8gQSBsaWdo
dHdlaWdodCBXZWJQcm9jZXNzUHJveHkgd2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSAgICBX
ZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgeyBudWxscHRyIH07CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQ+OwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELCBXZWJQ
cm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5OTYwYWNmMDhkM2E5NzZjOTQ4NDU3
N2VkNjY1YmIxYjg2OTE2NjMwLi40OTE1ZmJmYjFhOTFiNGRlM2Y2ZTNiNThhZGUzZDBmZTA2MWM1
NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTYzMSw2ICs2MzEsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJk
SXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW0KICAgICAgICAgcmV0dXJu
OwogCiAgICAgaXRlbS0+c2V0UGFnZVN0YXRlKFBhZ2VTdGF0ZSB7IGl0ZW1TdGF0ZS5wYWdlU3Rh
dGUgfSk7CisKKyAgICBpZiAoISFpdGVtLT5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSAhPSBpdGVt
U3RhdGUuaGFzQ2FjaGVkUGFnZSkgeworICAgICAgICBpZiAoaXRlbVN0YXRlLmhhc0NhY2hlZFBh
Z2UpCisgICAgICAgICAgICBwcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5hZGRFbnRy
eSgqaXRlbSwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBlbHNlIGlmICghaXRl
bS0+c3VzcGVuZGVkUGFnZSgpKQorICAgICAgICAgICAgcHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2Fy
ZENhY2hlKCkucmVtb3ZlRW50cnkoKml0ZW0pOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpAQCAtOTg0LDE3ICs5OTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpLCAwKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgbV9w
cm9jZXNzUG9vbC0+cHJvY2Vzc0RpZENhY2hlUGFnZSh0aGlzKTsKLX0KLQotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnJlbGVhc2VQYWdlQ2FjaGUoKQotewotICAgIGlmIChjYW5TZW5kTWVzc2FnZSgp
KQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWxlYXNlUGFnZUNhY2hlKCks
IDApOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0
YXRlQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZh
bHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA4
MzIzNDlhOTlmMDAxZjc0NGI1YzZlYzgwYzZmZGQzMWRhNzMxMTM4Li5jZmU0YzkxZWY2NTMyZjc4
Nzc2N2E2N2M3OTVkZjRjM2JjM2VlNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaApAQCAtMTg2LDkgKzE4Niw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKTsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFn
ZUNhY2hlKCk7Ci0gICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAgICB2b2lkIGZldGNo
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTIxNzQxMDQyNzQ5NWJkMzhi
NWVjN2Y4NzgwN2E3ZDM5NzMzYTljLi40NmM0MzZiMDMyOGM3ODVhOGIyZjJjOTMwOGRiNWE1NTM0
OWQ1MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkxOCw2ICs5MTgsNyBAQAogCQk0NkJFQjZFMzIyRkJCMjFBMDAyNjk4NjcgLyog
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhF
RUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CisJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9y
d2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyog
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0Mx
OEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNDMTlB
RjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi87IH07
CiAJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFFRiAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQx
MEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjM4LDYg
KzMyMzksNyBAQAogCQk0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZG
OUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8q
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MjYsNiArNzgyOCw3IEBACiAJCQkJMUE2MDIyNDkxOEMxNkIw
ODAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDYwMzAx
MUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICovLAogCQkJCTQ2
MDMwMTFCMjM0QkUzMUUwMDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8sCisJCQkJ
NDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICov
LAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3Bw
ICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3Qu
aCAqLywKIAkJCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3Bw
ICovLApAQCAtOTg2MCw2ICs5ODYzLDcgQEAKIAkJCQkxQzBBMTk0NzFDOEZGMUE4MDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5
NTQxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RjlC
MjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNzJCQTFFMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEQyQ0FFMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZC
MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGFjNzIyYTU1ODMwZmQ2YzQyNzFk
MjhhNTA5NDljMGMzNDg3MGE5MTguLjBlY2E0YzFkMzIwY2U5MGRlYzFjZWE4MzU0ZmUyMjZlNzBm
NDQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTExNSw2ICsx
MTUsNyBAQCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgdG9CYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mCiAgICAgc3RhdGUucGFnZVN0YXRlLm1haW5G
cmFtZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKICAgICBzdGF0ZS5wYWdlU3Rh
dGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koKTsKICAgICBzdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2Jq
ZWN0ID0gaGlzdG9yeUl0ZW0uc3RhdGVPYmplY3QoKTsKKyAgICBzdGF0ZS5oYXNDYWNoZWRQYWdl
ID0gaGlzdG9yeUl0ZW0uaXNJblBhZ2VDYWNoZSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOWZhMTVlMDhmNjRjNTQ5YTkwZmQx
MGEyZGU3NjI1MTFkYmE5ZjhiYS4uY2NlZDExZmFiZGUxZWJhOTJiZDZjN2UwY2IxNmI1Nzk5NzNk
M2E0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTMzLDE2ICsxNTMz
LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2
ZVRvUGFnZUNhY2hlKCkKLXsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkU2F2ZVRvUGFnZUNhY2hlKCkpOwotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgbV9mcmFtZUNhbWVGcm9tUGFn
ZUNhY2hlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZGI3NTJkNTg4
N2VmNTA3ZThiM2VmMjYwNGE0OTQwMzE3OGNiMDhmZS4uYWZhMTdhNDk2N2NmYzAzYTZjOTQ4ZGI5
OWNlODAxNDI1ZGVjNDdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIwNiw3
ICsyMDYsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzNDBjOWM0Yzk0NDAzOTVmNDVkYzdhNmM3YWM3
Y2M2ZjY0OTcxZmQzLi4zNDZjNGNlYTNjYmYyN2Q3Y2U1NWU4NTU5MGRhMjM3MDlkYmQzZWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zODYsNiArMzg2LDgg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldERlZmF1bHRSZXF1ZXN0VGltZW91
dEludGVydmFsKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpOwogCisg
ICAgc2V0UGFnZUNhY2hlQ2FwYWNpdHkocGFyYW1ldGVycy5wYWdlQ2FjaGVDYXBhY2l0eSk7CisK
ICAgICBzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChwYXJhbWV0ZXJzLnNob3VsZEFs
d2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGgpOwogCiAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290
aGluZyhwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcpOwpAQCAtMTI5NCwxMSArMTI5
Niw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hl
Y2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0YXRlKQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNz
OjpyZWxlYXNlUGFnZUNhY2hlKCkKLXsKLSAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5l
VG9TaXplTm93KDAsIFBydW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKLX0KLQogdm9pZCBX
ZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdl
YnNpdGVEYXRhVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CkBAIC0x
Nzc5LDYgKzE3NzYsMjEgQEAgYm9vbCBXZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OnNldFBhZ2VDYWNo
ZUNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQoreworICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkuc2V0TWF4U2l6ZShjYXBhY2l0eSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDYWNo
ZWRQYWdlKEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBIaXN0b3J5
SXRlbSogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQoYmFja0Zvcndh
cmRJdGVtSUQpOworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisKKyAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6
bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmspCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBhZTFmNjAzMDgzYzQwMWYwOTM5OGI2
NmE5OWQyMmUyMTVlMTZmMTVkLi40MjJlZWI1YTk1ZmNhNzhmODNiMjNmNjE0N2M4NjJiMDgwZmQ0
OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTg2LDYgKzg2LDcg
QEAgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgVXNlckdlc3R1cmVUb2tlbjsKK3N0cnVjdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBNb2NrTWVkaWFEZXZpY2U7CkBAIC0zNjgsMTQg
KzM2OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
cygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKLQogICAgIHZvaWQg
ZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICB2b2lkIHNldE1lbW9yeUNhY2hlRGlzYWJsZWQoYm9vbCk7CiAKKyAgICB2b2lk
IHNldFBhZ2VDYWNoZUNhcGFjaXR5KHVuc2lnbmVkKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGVkUGFn
ZShXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgdm9pZCBzZXRF
bmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNl
cnZpY2VzLCBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGNlYWQwMTY2
NTA2NzJhNjY3YWI3ZDcyY2NkZjQ3NWMzNDA4NTg4YzQuLjg4NGM1YWExMGU1MzdkNmZhMjQ2MTQy
MTk0NjliOWFiNmEyYzU4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03NSw4ICs3NSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6
OkRhdGFSZWZlcmVuY2UgcGFyYW1ldGVycyk7CiAgICAgSGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNz
YWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSk7CiAK
LSAgICBSZWxlYXNlUGFnZUNhY2hlKCkKLQogICAgIEZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoc3RydWN0IFdl
YktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURh
dGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRh
VHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgp
IEFzeW5jCkBAIC0xNTMsNiArMTUxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAKICAgICBDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAK
KyAgICBTZXRQYWdlQ2FjaGVDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSk7CisgICAgQ2xlYXJD
YWNoZWRQYWdlKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tG
b3J3YXJkSXRlbUlEKSAtPiAoKSBBc3luYworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBVbmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBoYW5kbGUpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDY1MTZj
OWY0OWIwY2U5NTAwZWUwMWJkZGVkNWFlZGRjMjNlODY3YmQuLmMyMWJkY2Y3MTA2Mzk2OWUxMWNi
ZGJiMGE1YjkzZTViYWE4NmQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0
LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZvck5ld1BhZ2UoKSBmaW5hbDsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFsOwogCiAgICAg
dm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQppbmRleCA4YWU4NmI1YzQ4YWI0YzRiNWUxNjJhYzMxMTcwYTg4ZGM4ZjRj
YTNiLi40NjBjOWEyNjdjYWExMmJjOTg5YzJmYjQyOGRmNGZhYTIwYjc0ZThkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTQ5NSwxMCArMTQ5NSw2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIH0KIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsKLX0K
LQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggZDRmYjVkNzc2YzYwMzczZmU2NzNiYzE1MWU2ZjEyYTcwNzQ4OGQxZC4uMjYyMTFmYTk2
NzgwNmE0NGZhYWQwNjhhMDc4YjEzNjMxOGVlNGIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtOTkyLDEwICs5OTIsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBjb3JlKG1fd2ViRnJhbWUpLT5j
cmVhdGVWaWV3KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIGJhY2tncm91
bmRDb2xvciwgLyogZml4ZWRMYXlvdXRTaXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVu
dFJlY3QgKi8geyB9KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRv
UGFnZUNhY2hlKCkKLXsKLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9y
ZUZyb21QYWdlQ2FjaGUoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMzNh
ODZjZTU3ZmYxNDg1YWMyNzAxOTcwZDQ0MGZiMjNjZDM4NDUyNC4uODU2ZjUyNWZkY2U5M2RkZjRm
ZTdmZGVhZmY0MjU1ZTVmZjU0Nzc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
NzYsNyArMTc2LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRl
OwogICAgIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
c3RvcmVGcm9tUGFnZUNhY2hlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVj
b21lRnJhbWVzZXQoYm9vbCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380951</attachid>
            <date>2019-10-14 20:25:42 -0700</date>
            <delta_ts>2019-10-14 21:00:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202929-20191014202537.patch</filename>
            <type>text/plain</type>
            <size>70614</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWViNGIzZmU4ODc5Nzgx
M2JjZjMwZTUyYjRjZGY4OTQ2OTg5YjU1My4uNzBjZjRmY2UyODY5ZGM3OTUxMDMzMWE5MDU4ZmRm
MDhkOWFhZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gSGF2ZSBXZWJCYWNr
Rm9yd2FyZENhY2hlIGNsYXNzIGNvb3JkaW5hdGUgcGFnZSBjYWNoaW5nIGluIGFsbCBXZWJQcm9j
ZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjkyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYyNTA0MjE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlkU2F2ZVRvUGFnZUNhY2hlKCkgZnVuY3Rpb24gYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4K
KyAgICAgICAgSW5zdGVhZCwgd2Ugbm93IGNhbGwgSGlzdG9yeUl0ZW06Om5vdGlmeUNoYW5nZWQo
KSB3aGVuZXZlciBIaXN0b3J5SXRlbTo6bV9jYWNoZWRQYWdlCisgICAgICAgIGNoYW5nZXMuIFRo
aXMgY29tbXVuaWNhdGVzIHRvIHRoZSBVSVByb2Nlc3Mgd2hldGhlciBvciBub3QgYSBIaXN0b3J5
SXRlbSBoYXMgYW4KKyAgICAgICAgYXNzb2NpYXRlZCBDYWNoZWRQYWdlLgorCisgICAgICAgIEkg
YWxzbyBhZGRlZCBtb3JlIHJlbGVhc2UgbG9nZ2luZyB0byB0aGUgUGFnZUNhY2hlIGFuZCByZW5h
bWVkIGl0cyBsb2dnaW5nIGNoYW5uZWwKKyAgICAgICAgZnJvbSBQYWdlQ2FjaGUgdG8gV2ViQmFj
a0ZvcndhcmRDYWNoZSB0byBtYXRjaCB0aGUgVUlQcm9jZXNzJ3MgY2hhbm5lbC4KKworICAgICAg
ICAqIGhpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6c3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBo
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpD
YWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6c2V0Q2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5SXRlbTo6dGFrZUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9y
eUl0ZW0uaDoKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
YWNoZTo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OnJlbW92ZUFsbEl0ZW1z
Rm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2FjaGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6
OnBydW5lKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKwog
MjAxOS0xMC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEJh
Y2svRm9yd2FyZCBjYWNoZSBkb2VzIG5vdCB3b3JrIGFmdGVyIGRvaW5nIGEgZmF2b3JpdGUgbmF2
aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzYzU1NDZiMzVlNmI0MzQ2YTJlMTE1MWRhYjY5MjcxZTA1MDNj
ZGM0Li4zNzEzMzUxY2RjMmZlYzMwZDc3MDY5Mzk0NmQ5MmE2MzFjOTBiNGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzOSBAQAorMjAxOS0xMC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSzJdIEhhdmUgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcyBjb29y
ZGluYXRlIHBhZ2UgY2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5MjkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU2MjUwNDIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhhdmUgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcyBjb29yZGluYXRlIHBhZ2Ug
Y2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vzc2VzLiBUbyBhY2hpZXZlIHRoaXMsIHRoZQorICAgICAg
ICBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIDEuIFdoZW5ldmVyIEhpc3Rv
cnlJdGVtOjptX2NhY2hlZFBhZ2UgY2hhbmdlcyBpbiBXZWJDb3JlLCB3ZSBub3RpZnkgdGhlIGNs
aWVudCB0aGF0IHRoZSBIaXN0b3J5SXRlbQorICAgICAgICAgICBoYXMgY2hhbmdlZC4gSSBhZGRl
ZCBhICJoYXNDYWNoZWRQYWdlIiBib29sZWFuIHRvIHRoZSBpdGVtIGluZm8gYmVpbmcgcGFzc2Vk
IHRoZSB0aGUgVUlQcm9jZXNzCisgICAgICAgICAgIHRoYXQgaXMgc2V0IGJhc2VkIG9uIHdoZXRo
ZXIgb3Igbm90IEhpc3RvcnlJdGVtOjptX2NhY2hlZFBhZ2UgaXMgbnVsbC4KKyAgICAgICAgMi4g
VGhlIFdlYkJhY2tGb3J3YXJkQ2FjaGUgbm93IGNvbnRhaW5zIFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeSBvYmplY3RzIGluc3RlYWQgb2YgU3VzcGVuZGVkUGFnZQorICAgICAgICAgICBvYmplY3Rz
LiBBIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBtYXkgaGF2ZSBhIFN1c3BlbmRlZFBhZ2Ugb3Ig
bm90LiBBcyBhIHJlc3VsdCwgd2UgY2FuIG5vdworICAgICAgICAgICBhZGQgdGhlIHRoZSBiYWNr
L2ZvcndhcmQgY2FjaGUgQ2FjaGVkUGFnZSBlbnRyaWVzIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJv
Y2Vzcywgd2hpY2ggZG8gbm90IGhhdmUKKyAgICAgICAgICAgYSBTdXNwZW5kZWRQYWdlUHJveHkg
aW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgMy4gTm93IHRoYXQgV2ViQmFja0ZvcndhcmRDYWNo
ZSBpcyBhd2FyZSBvZiBhbGwgQ2FjaGVkUGFnZXMsIGl0IGNhbiBwcm9wZXJseSBlbmZvcmNlIGEg
Y2FjaGUgY2FwYWNpdHkKKyAgICAgICAgICAgYWNyb3NzIGNhbGwgcHJvY2Vzc2VzLiBXaGVuZXZl
ciBhIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBpcyBwcnVuZWQgZnJvbSB0aGUgY2FjaGUgYW5k
IHRoaXMgZW50cnkKKyAgICAgICAgICAgZG9lcyBub3QgaGF2ZSBhIFN1c3BlbmRlZFBhZ2VQcm94
eSwgd2Ugc2VuZCBhbiBJUEMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB0byByZW1vdmUgdGhp
cworICAgICAgICAgICBjYWNoZWQgcGFnZSBmcm9tIHRoZSBQYWdlQ2FjaGUgaW4gV2ViQ29yZS4K
KworICAgICAgICBQcmV2aW91c2x5LCBhcyBzb29uIGFzIHdlIHdvdWxkIGNhY2hlIGEgcGFnZSBp
biB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSB3b3VsZCBzZW5kIGFuIElQQyB0byB0aGUKKyAg
ICAgICAgVUlQcm9jZXNzIHNvIHRoYXQgaXQgd291bGQgY2xlYXIgdGhlIFBhZ2VDYWNoZSBpbiBh
bnkgcHJldmlvdXMgV2ViQ29udGVudCBwcm9jZXNzLiBUaGlzIHdhcyBhIHN0b3AtZ2FwCisgICAg
ICAgIG1lYXN1cmUgdG8gYXZvaWQgYmxvd2luZyB1cCBtZW1vcnkgaW4gYSBtdWx0aS1wcm9jZXNz
IG1vZGVsIGJ5IGtlZXBpbmcgYSBQYWdlQ2FjaGUgYXJvdW5kIGluIGFsbAorICAgICAgICBXZWJD
b250ZW50IHByb2Nlc3MuIFRoaXMgd291bGQgbWFrZSBzdXJlIG9ubHkgb25lIHByb2Nlc3MgY291
bGQgaGF2ZSBhIFBhZ2VDYWNoZSBhdCBhbnkgcG9pbnQgaW4gdGltZS4KKyAgICAgICAgVGhpcyBs
b2dpYyBpcyBub3cgZHJvcHBlZCBzaW5jZSB0aGUgV2ViQmFja0ZvcndhcmRDYWNoZSBjYW4ga2Vl
cCB0cmFjayBvZiBhbGwgY2FjaGVkIHBhZ2VzIGFjcm9zcyBhbGwKKyAgICAgICAgcHJvY2Vzc2Vz
IGFuZCBlbmZvcmNlIGEgY3Jvc3MtcHJvY2VzcyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGNhY2hl
ZCBwYWdlcy4gVGhpcyBtZWFucyB3ZSBjYW4gbm93IGhhdmUKKyAgICAgICAgUGFnZUNhY2hlIGVu
dHJpZXMgYWNyb3NzIHNldmVyYWwgV2ViQ29udGVudCBwcm9jZXNzZXMsIGFzIGxvbmcgYXMgd2Ug
ZG8gbm90IGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIKKyAgICAgICAgb2YgY2FjaGVkIHBhZ2Vz
LgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICBBZGQgbmV3IEJhY2tG
b3J3YXJkQ2FjaGUgbG9nZ2luZyBjaGFubmVsLgorCisgICAgICAgICogU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoKKyAgICAgICAgQWRkIG5l
dyBiaXQgdG8gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHRvIGluZGljYXRlIHdoZXRoZXIgYSBI
aXN0b3J5SXRlbSBoYXMgYW4gYXNzb2NpYXRlZAorICAgICAgICBDYWNoZWRQYWdlIG9yIG5vdC4K
KworICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6fldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp3YXNSZW1vdmVkRnJv
bUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OnJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6c2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBjb25zdCk6Cisg
ICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gbm93IG93biBhIFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeSBpbnN0ZWFkIG9mIHNpbXBseSBhCisgICAgICAgIFN1c3BlbmRlZFBhZ2UuIFRoZSBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgbWF5IGhhdmUgYSBTdXNwZW5kZWRQYWdlIG9yIG5vdC4K
KyAgICAgICAgTm93LCB3aGVuZXZlciBhIEhpc3RvcnlJdGVtIGhhcyBhIENhY2hlZFBhZ2UgaW4g
V2ViQ29yZSwgaXRzIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSBpbiB0aGUgVUlQcm9jZXNzIGhhcyBhbiBhc3NvY2lhdGVkIFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeQorICAgICAgICB3aGV0aGVyIHdlIGhhdmUgYSBTdXNwZW5kZWRQYWdlUHJveHkgZm9yIGl0
IGluIHRoZSBVSVByb2Nlc3Mgb3Igbm90LgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFBhc3MgdGhlIFBhZ2VDYWNoZSBjYXBhY2l0
eSB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIG9uIGNyZWF0aW9uLCBzbyB0aGF0IGl0IG1hdGNo
ZXMgdGhlCisgICAgICAgIGNhcGFjaXR5IG9mIHRoZSBXZWJCYWNrRm9yd2FyZENhY2hlIGluIHRo
ZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oOgorICAgICAgICBTdG9wIHN0
b3JpbmcgdGhlIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gb24gdGhlIFN1c3BlbmRlZFBhZ2VQcm94
eS4gVGhpcyBhdm9pZHMgaGF2aW5nIHRvCisgICAgICAgIGtlZXAgdGhpcyBwb2ludGVyIHVwIHRv
IGRhdGUuIFdlIGRvIG5vdCByZWFsbHkgbmVlZCBpdCBhcyB3ZSBjYW4gbm93IGFzayB0aGUgV2Vi
QmFja0ZvcndhcmRDYWNoZQorICAgICAgICB0byBjbGVhciBhbiBlbnRyeSBieSBnaXZpbmcgaXQg
YSBTdXNwZW5kZWRQYWdlUHJveHkgdG8gbWF0Y2guIEdpdmVuIGhvdyBtYW55IGVudHJpZXMgd2Ug
aGF2ZSBhdAorICAgICAgICBtb3N0IGluIHRoZSBjYWNoZSAoMiksIGl0ZXJhdGluZyBvdmVyIHRo
ZW0gdG8gZmluZCB0aGUgb25lIHdpdGggYSBnaXZlbiBzdXNwZW5kZWQgcGFnZSBpcyBjaGVhcC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENhY2hlKToK
KworICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpzZXRDYXBhY2l0eSk6Cisg
ICAgICAgIFNlbmQgYW4gSVBDIG9mIGVhY2ggV2ViUHJvY2VzcyB3aGVuZXZlciB0aGUgY2FwYWNp
dHkgb2YgdGhlIFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2hhbmdlcywgaW4gb3JkZXIKKyAgICAgICAg
dG8gdXBkYXRlIHRoZSBjYXBhY2l0eSBvZiB0aGUgUGFnZUNhY2hlIGluIHRob3NlIHByb2Nlc3Nl
cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6dGFrZVN1c3BlbmRlZFBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNG
b3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3Zl
RW50cmllc01hdGNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6
Y2xlYXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaDoKKyAg
ICAgICAgVXNlIGEgVmVjdG9yIGluc3RlYWQgb2YgYSBMaXN0SGFzaFNldCB0byBzdG9yZSB0aGUg
ZW50cmllcy4gR2l2ZW4gdGhhdCB3ZSBoYXZlIGF0IG1vc3QgMiBlbnRyaWVzLCB1c2luZworICAg
ICAgICBhIFZlY3RvciB3aWxsIGxpa2VseSBiZSBtb3JlIGVmZmljaWVudCBhbmQgZGVmaW5pdGVs
eSB1c2UgbGVzcyBtZW1vcnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnk6OmJhY2tGb3J3YXJkQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnk6OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgIEFk
ZCBuZXcgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IGFic3RyYWN0aW9uIHRvIG1hdGNoIHRoZSBj
b25jZXB0IG9mIFdlYkNvcmU6OkNhY2hlZFBhZ2UgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAg
QSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgbWF5IGhhdmUgYSBTdXNwZW5kZWRQYWdlUHJveHkg
YXNzb2NpYXRlZCB3aXRoIGl0IGluIHRoZSBVSVByb2Nlc3Mgb3Igbm90LgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICBEcm9wIGRpZFNhdmVUb1BhZ2VDYWNoZSBhcyBpdCBpcyBubyBsb25n
ZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIFdoZW5ldmVyIHdlIGdldCBhIEJh
Y2tGb3J3YXJkSXRlbSBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIG5vdyBjaGVjayBp
dCBub3cgaGFzCisgICAgICAgIGFuIGFzc29jaWF0ZWQgQ2FjaGVkUGFnZSBvciBub3QuIElmIGl0
IGRvZXMsIHdlIG1ha2Ugc3VyZSB3ZSBhZGQgYSBjb3JyZXNwb25kaW5nCisgICAgICAgIGVudHJ5
IGluIHRoZSBXZWJCYWNrRm9yd2FyZENhY2hlIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBrbm93cyBh
Ym91dCBpdC4gSWYgaXQgbm8gbG9uZ2VyCisgICAgICAgIGhhcyBhIENhY2hlZFBhZ2UgYW5kIHdl
IGRvbid0IGhhdmUgYSBTdXNwZW5kZWRQYWdlUHJveHkgZm9yIHRoaXMgaXRlbSBpbiB0aGUgVUlQ
cm9jZXNzLAorICAgICAgICB0aGVuIHdlIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBm
cm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuIE5vdGUgdGhhdCB3ZSBkb24ndAorICAgICAgICBk
cm9wIFN1c3BlbmRlZFBhZ2VQcm94eSBvYmplY3RzIGluIHRoZSBVSVByb2Nlc3Mgc2ltcGx5IGJl
Y2F1c2UgdGhlaXIgY29ycmVzcG9uZGluZworICAgICAgICBDYWNoZWRQYWdlIGluIHRoZSBXZWJQ
cm9jZXNzIGlzIGdvbmUsIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yLiBUaGlzIGlzIGFu
CisgICAgICAgIG9wdGltaXphdGlvbiB0aGF0IGlzIHVzZWZ1bCBvbiBpT1MsIHdoZXJlIHdlIGRv
IG5vdCBoYXZlIGEgV2ViUHJvY2Vzc0NhY2hlLCBzaW5jZSB3ZQorICAgICAgICBjYW4gcmV1c2Ug
cHJvY2Vzc2VzIGZyb20gU3VzcGVuZGVkUGFnZVByb3hpZXMgb24gbmF2aWdhdGlvbi4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0JhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0QmFja0ZvcndhcmRDYWNo
ZUNhcGFjaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJDYWNoZWRQYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTktMTAtMTIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBCYWNrL0ZvcndhcmQgY2FjaGUgZG9lcyBub3Qg
d29yayBhZnRlciBkb2luZyBhIGZhdm9yaXRlIG5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA0YmE3MWZiODAxNzY5MTQ4ZTg3MzRiOWZhMDQ0NTRjZjZiODE3NjQ1Li40
NGViN2M3YmU3ZGNkMTA3MzIyZGZkYTM4MWYzYjU3MGRiODk1MWZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAtMTQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBIYXZlIFdlYkJhY2tGb3J3YXJkQ2Fj
aGUgY2xhc3MgY29vcmRpbmF0ZSBwYWdlIGNhY2hpbmcgaW4gYWxsIFdlYlByb2Nlc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTI5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NjI1MDQyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisKIDIwMTktMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NsaXBib2FyZCBBUEldIFJlZmFjdG9yIFBhc3RlYm9hcmQgaXRlbSByZWFkaW5n
IGZ1bmN0aW9ucyB0byB3b3JrIG9uIGJvdGggaU9TIGFuZCBtYWNPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCmluZGV4IDIzM2Q1M2JjNTdmZjQwODQwMGExMTM2YmQxMjZjMDEzYjU5MDE4MDYu
LmE1MDNjNDI3Mjg4NjM1NTBmMjUzMWZjOTEzZjRjMzFiZDAwNWU5MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEhhdmUgV2ViQmFja0ZvcndhcmRD
YWNoZSBjbGFzcyBjb29yZGluYXRlIHBhZ2UgY2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vzc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5MjkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MjUwNDIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisKIDIwMTktMTAtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgcmVxdWVzdElkbGVDYWxsYmFjayBpcyBub3QgZW5hYmxlZCBpbiBEdW1wUmVuZGVyVHJl
ZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oCmluZGV4IDJkYWU1MmNlNzMyMTIyYmI0MTI2ZDE2OGFlYmI2YWVlMWM2
MGZjYzYuLjM2ZDE2ZWY2OTgxZDBlZGY5ODUwOGU0NTc0ZjQ4YmQ2MTQ3MDU4NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oCkBA
IC00Miw2ICs0Miw4IEBAIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIHsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiAKKyAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbWFrZVN0cmluZyhwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAnLScsIGl0
ZW1JZGVudGlmaWVyLnRvVUludDY0KCkpOyB9CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKaW5kZXggNTlhMjZiOWE4OTEzN2VjNDUxMTJhMDlhYjE4NGYxZGU0ZTgy
MTE1NS4uOGYxZTRkYTAzNmE0MmI0YjVlZjcwYWY1ZWJkMTNiMDM4NmU4ZjI3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE5OCwxMyArMTk4LDExIEBAIENhY2hl
ZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAgaWYgKCFtX2lzTWFpbkZyYW1l
KQogICAgICAgICBmcmFtZS5wYWdlKCktPmRlY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKIAotICAg
IGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotCiAjaWZuZGVm
IE5ERUJVRwogICAgIGlmIChtX2lzTWFpbkZyYW1lKQotICAgICAgICBMT0coUGFnZUNhY2hlLCAi
RmluaXNoZWQgY3JlYXRpbmcgQ2FjaGVkRnJhbWUgZm9yIG1haW4gZnJhbWUgdXJsICclcycgYW5k
IERvY3VtZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJGaW5p
c2hlZCBjcmVhdGluZyBDYWNoZWRGcmFtZSBmb3IgbWFpbiBmcmFtZSB1cmwgJyVzJyBhbmQgRG9j
dW1lbnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIkZpbmlz
aGVkIGNyZWF0aW5nIENhY2hlZEZyYW1lIGZvciBjaGlsZCBmcmFtZSB3aXRoIHVybCAnJXMnIGFu
ZCBEb2N1bWVudExvYWRlciAlcFxuIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9k
b2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiRmlu
aXNoZWQgY3JlYXRpbmcgQ2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJsICclcycg
YW5kIERvY3VtZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBt
X2RvY3VtZW50TG9hZGVyLmdldCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2MwNTllNjg1Yjgz
ZmQ3MDg5MGEzYWU2NWZiYTgwZDYyNzBlNjE1NC4uYTc5MjM0ZGIyYWRiZGVhZmI2NjBkMzdlMjc0
NTIyMWY0YmVkZTdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAg
LTE3Miw2ICsxNzIsMjIgQEAgYm9vbCBIaXN0b3J5SXRlbTo6aGFzQ2FjaGVkUGFnZUV4cGlyZWQo
KSBjb25zdAogICAgIHJldHVybiBtX2NhY2hlZFBhZ2UgPyBtX2NhY2hlZFBhZ2UtPmhhc0V4cGly
ZWQoKSA6IGZhbHNlOwogfQogCit2b2lkIEhpc3RvcnlJdGVtOjpzZXRDYWNoZWRQYWdlKHN0ZDo6
dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiYmIGNhY2hlZFBhZ2UpCit7CisgICAgYm9vbCB3YXNJblBh
Z2VDYWNoZSA9IGlzSW5QYWdlQ2FjaGUoKTsKKyAgICBtX2NhY2hlZFBhZ2UgPSBXVEZNb3ZlKGNh
Y2hlZFBhZ2UpOworICAgIGlmICh3YXNJblBhZ2VDYWNoZSAhPSBpc0luUGFnZUNhY2hlKCkpCisg
ICAgICAgIG5vdGlmeUNoYW5nZWQoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+
IEhpc3RvcnlJdGVtOjp0YWtlQ2FjaGVkUGFnZSgpCit7CisgICAgQVNTRVJUKG1fY2FjaGVkUGFn
ZSk7CisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpleGNoYW5nZShtX2NhY2hlZFBhZ2UsIG51
bGxwdHIpOworICAgIG5vdGlmeUNoYW5nZWQoKTsKKyAgICByZXR1cm4gY2FjaGVkUGFnZTsKK30K
KwogVVJMIEhpc3RvcnlJdGVtOjp1cmwoKSBjb25zdAogewogICAgIHJldHVybiBVUkwoeyB9LCBt
X3VybFN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKaW5kZXggOGFmOThl
NGM5ODJmMzliMGE2NmJkNmY2MTUyNTdlMmMwMDE2NzQwNy4uZjg1NTA4ZjEyM2RhZTJjZGY5YmZi
ZDUwM2ZlZWUzZTkxNjQ3OTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9I
aXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaApA
QCAtMjE5LDYgKzIxOSw5IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0
ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgYWx0ZXJuYXRlVGl0bGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGFsdGVybmF0ZVRpdGxlLCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKTsKIAorICAgIHZvaWQg
c2V0Q2FjaGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4mJik7CisgICAgc3RkOjp1
bmlxdWVfcHRyPENhY2hlZFBhZ2U+IHRha2VDYWNoZWRQYWdlKCk7CisKICAgICBIaXN0b3J5SXRl
bShjb25zdCBIaXN0b3J5SXRlbSYpOwogCiAgICAgc3RhdGljIGludDY0X3QgZ2VuZXJhdGVTZXF1
ZW5jZU51bWJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IGUzNTk0
MmM5ZDliNDE1MDdhZTAyZjA4OTM0Y2U4ZDJhYmY2YzgzMWUuLmIyNjQ1MTYxZjFhYjE2NjkxYWZh
ZTU4Njg2N2ZjMDcxNjJhOTJiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jZGVmaW5lIFBDTE9H
KC4uLikgTE9HKFBhZ2VDYWNoZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwgIiIsIG1ha2VTdHJp
bmcoX19WQV9BUkdTX18pLnV0ZjgoKS5kYXRhKCkpCisjZGVmaW5lIFBDTE9HKC4uLikgTE9HKEJh
Y2tGb3J3YXJkQ2FjaGUsICIlKnMlcyIsIGluZGVudExldmVsKjQsICIiLCBtYWtlU3RyaW5nKF9f
VkFfQVJHU19fKS51dGY4KCkuZGF0YSgpKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9nUGFnZUNh
Y2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewpAQCAtNDYwLDExICs0NjAsMTQgQEAgYm9vbCBQ
YWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQog
ICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMg
c2NvcGUuCiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlw
dERpc2FsbG93ZWRTY29wZTsKIAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOworICAgICAgICBpdGVtLnNldENhY2hlZFBhZ2UobWFrZVVu
aXF1ZTxDYWNoZWRQYWdlPigqcGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9
IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9
CiAgICAgcHJ1bmUoUHJ1bmluZ1JlYXNvbjo6UmVhY2hlZE1heFNpemUpOworCisgICAgUkVMRUFT
RV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUgaXRlbTog
JXMsIHNpemU6ICV1IC8gJXUiLCBpdGVtLmlkZW50aWZpZXIoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBwYWdlQ291bnQoKSwgbWF4U2l6ZSgpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC00NzcsMTAgKzQ4MCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gUGFnZUNhY2hl
Ojp0YWtlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIG1faXRl
bXMucmVtb3ZlKCZpdGVtKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gY2FjaGVk
UGFnZSA9IFdURk1vdmUoaXRlbS5tX2NhY2hlZFBhZ2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWNoZWRQYWdlPiBjYWNoZWRQYWdlID0gaXRlbS50YWtlQ2FjaGVkUGFnZSgpOworCisgICAgUkVM
RUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIlBhZ2VDYWNoZTo6dGFrZSBpdGVtOiAlcywgc2l6
ZTogJXUgLyAldSIsIGl0ZW0uaWRlbnRpZmllcigpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHBh
Z2VDb3VudCgpLCBtYXhTaXplKCkpOwogCiAgICAgaWYgKGNhY2hlZFBhZ2UtPmhhc0V4cGlyZWQo
KSB8fCAocGFnZSAmJiBwYWdlLT5pc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkpKSB7Ci0gICAg
ICAgIExPRyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9m
b3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUs
ICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1
c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKHBh
Z2UsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZXhwaXJlZEtleSgpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtNTAwLDcgKzUwNSw4IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1v
dmVBbGxJdGVtc0ZvclBhZ2UoUGFnZSYgcGFnZSkKICAgICAgICAgYXV0byBjdXJyZW50ID0gaXQ7
CiAgICAgICAgICsraXQ7CiAgICAgICAgIGlmICgmKCpjdXJyZW50KS0+bV9jYWNoZWRQYWdlLT5w
YWdlKCkgPT0gJnBhZ2UpIHsKLSAgICAgICAgICAgICgqY3VycmVudCktPm1fY2FjaGVkUGFnZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiUGFn
ZUNhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2UgcmVtb3ZpbmcgaXRlbTogJXMsIHNpemU6ICV1
IC8gJXUiLCAoKmN1cnJlbnQpLT5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
cGFnZUNvdW50KCkgLSAxLCBtYXhTaXplKCkpOworICAgICAgICAgICAgKCpjdXJyZW50KS0+c2V0
Q2FjaGVkUGFnZShudWxscHRyKTsKICAgICAgICAgICAgIG1faXRlbXMucmVtb3ZlKGN1cnJlbnQp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTE2LDcgKzUyMiw3IEBAIENhY2hlZFBhZ2UqIFBhZ2VD
YWNoZTo6Z2V0KEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIGlm
IChjYWNoZWRQYWdlLT5oYXNFeHBpcmVkKCkgfHwgKHBhZ2UgJiYgcGFnZS0+aXNSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZCgpKSkgewotICAgICAgICBMT0coUGFnZUNhY2hlLCAiTm90IHJlc3Rvcmlu
ZyBwYWdlIGZvciAlcyBmcm9tIGJhY2svZm9yd2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hlIGVudHJ5
IGhhcyBleHBpcmVkIiwgaXRlbS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9t
IGJhY2svZm9yd2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaXRl
bS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGxvZ1BhZ2VDYWNoZUZh
aWx1cmVEaWFnbm9zdGljTWVzc2FnZShwYWdlLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4cGly
ZWRLZXkoKSk7CiAgICAgICAgIHJlbW92ZShpdGVtKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01MzEsMTUgKzUzNywxOSBAQCB2b2lkIFBhZ2VDYWNoZTo6cmVtb3ZlKEhpc3RvcnlJdGVt
JiBpdGVtKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2l0ZW1zLnJlbW92ZSgmaXRlbSk7Ci0g
ICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBudWxscHRyOworICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShu
dWxscHRyKTsKKworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6
OnJlbW92ZSBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIsIGl0ZW0uaWRlbnRpZmllcigpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOworCiB9CiAKIHZvaWQg
UGFnZUNhY2hlOjpwcnVuZShQcnVuaW5nUmVhc29uIHBydW5pbmdSZWFzb24pCiB7CiAgICAgd2hp
bGUgKHBhZ2VDb3VudCgpID4gbWF4U2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gb2xkZXN0SXRlbSA9
IG1faXRlbXMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9sZGVzdEl0ZW0tPm1fY2FjaGVkUGFnZSA9
IG51bGxwdHI7CisgICAgICAgIG9sZGVzdEl0ZW0tPnNldENhY2hlZFBhZ2UobnVsbHB0cik7CiAg
ICAgICAgIG9sZGVzdEl0ZW0tPm1fcHJ1bmluZ1JlYXNvbiA9IHBydW5pbmdSZWFzb247CisgICAg
ICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJQYWdlQ2FjaGU6OnBydW5lIHJlbW92
aW5nIGl0ZW06ICVzLCBzaXplOiAldSAvICV1Iiwgb2xkZXN0SXRlbS0+aWRlbnRpZmllcigpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggYTc2ZGM1NTRlNjVhNWIxNWUyMDI4YmZkNGE2YjI1ODNiNzY5OTA3Ny4uZTU5NmZhMDNlMTFj
YmZjY2MxNTY2ZGVmZGJmNzc1ZDgyYjVkMzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNjQsNyArMTY0LDYgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNs
aWVudCB7CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KSBmaW5hbCB7IH0KIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBk
aXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmQ4NGNiMTZkZGE5MDA5NzcxMDAwNTNkOTBkN2Q2Mjlj
NzVlZWIxYy4uMDc5NzI3ZWFjZGI2NzU4MTM4Mzc1ODI3ZGQ4NTAxYTc2MjU1ODhlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yMDE4LDcgKzIwMTgsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIGlmIChtX2xvYWRpbmdG
cm9tQ2FjaGVkUGFnZSAmJiBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIGNh
Y2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UoKmhpc3RvcnkoKS5wcm92aXNp
b25hbEl0ZW0oKSwgbV9mcmFtZS5wYWdlKCkpOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNv
cmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZp
b3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyB3aXRoIGNhY2hlZCBwYWdlICVwIiwgbV9mcmFt
ZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCisgICAgTE9HKEJh
Y2tGb3J3YXJkQ2FjaGUsICJXZWJDb3JlTG9hZGluZyAlczogQWJvdXQgdG8gY29tbWl0IHByb3Zp
c2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91cyBVUkwgJyVzJyB0byBuZXcgVVJMICclcycgd2l0aCBj
YWNoZWQgcGFnZSAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLAogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkg
OiAiIiwKICAgICAgICAgcGRsID8gcGRsLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxubyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4i
LCBjYWNoZWRQYWdlLmdldCgpKTsKIApAQCAtMzY4MCw3ICszNjgwLDcgQEAgYm9vbCBGcmFtZUxv
YWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBj
b250ZW50LCBjb24KIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2Fj
aGVkUGFnZSgpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIHByb3Zpc2lvbmFsTG9hZGVyID0gcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcigpOwotICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFn
ZUNhY2hlOiBMb2FkaW5nIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyICVwIHdpdGggVVJMICcl
cycgZnJvbSBDYWNoZWRQYWdlIiwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLCBwcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQ29yZVBh
Z2VDYWNoZTogTG9hZGluZyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlciAlcCB3aXRoIFVSTCAn
JXMnIGZyb20gQ2FjaGVkUGFnZSIsIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSwgcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHByZXBhcmVGb3JMb2FkU3RhcnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlYzczMmNjMDAyMzE3
YWEwNmRhNWJkMmE4NmY0OWQ5MWVlMmU5YzMxLi44YzdmMTc1ZjA4YzlkMTRiZDNmZjE1MmMyNjMx
NjFiMDBlZmJiMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMjc4LDcgKzI3OCw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZFNhdmVUb1BhZ2VDYWNoZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZy
b21QYWdlQ2FjaGUoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVG
cmFtZXNldChib29sKSA9IDA7IC8vIENhbiBjaGFuZ2UgZHVlIHRvIG5hdmlnYXRpb24gb3IgRE9N
IG1vZGlmaWNhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA5ZDM5MTIzZDNj
ODhkY2JhYjIxYTc0MjE0MWUyYWQ5ZmEwZTJlY2YwLi4yMmI1YzA0NmI5MTRkNmVkMjBjNjI4OGVj
NGRlMzVlMWU3NzYyYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC00Miw2ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKEFuaW1hdGlvbnMpIFwKICAgICBNKEFw
cGxlUGF5KSBcCiAgICAgTShBcmNoaXZlcykgXAorICAgIE0oQmFja0ZvcndhcmRDYWNoZSkgXAog
ICAgIE0oQ2xpcFJlY3RzKSBcCiAgICAgTShDb21wb3NpdGluZykgXAogICAgIE0oQ29tcG9zaXRp
bmdPdmVybGFwKSBcCkBAIC04MCw3ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBN
KE1lc3NhZ2VQb3J0cykgXAogICAgIE0oTmV0d29yaykgXAogICAgIE0oTm90WWV0SW1wbGVtZW50
ZWQpIFwKLSAgICBNKFBhZ2VDYWNoZSkgXAogICAgIE0oUGVyZm9ybWFuY2VMb2dnaW5nKSBcCiAg
ICAgTShQbGF0Zm9ybUxlYWtzKSBcCiAgICAgTShQbHVnaW5zKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCmluZGV4IDdhYTljNzIzM2E0MzhkNmE5ODI0OWRmZmJmMDQ3MDYyZWU0YzE2NzQuLjI5
NmRlODZlNjFlMjkyZjdlYjNmNDQ4NjVjNTc2NGQ5YjQzMDM3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5oCkBAIC00NSw2ICs0NSw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oQXV0b21hdGlv
bkludGVyYWN0aW9ucykgXAogICAgIE0oQWN0aXZpdHlTdGF0ZSkgXAogICAgIE0oQmFja0Zvcndh
cmQpIFwKKyAgICBNKEJhY2tGb3J3YXJkQ2FjaGUpIFwKICAgICBNKENhY2hlU3RvcmFnZSkgXAog
ICAgIE0oQ29udGVudE9ic2VydmF0aW9uKSBcCiAgICAgTShDb250ZXh0TWVudSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKaW5kZXggYjM3MDYyYzEzODkyOTVmNDNlOTE4YTY0
NjZhMDY2OWM0NTk1MDIxMi4uODIxOGIzZWI2ZDg5NDI3MmM2ODk0NzUxZTlhNjg1ZmU2MDAxYjA3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCkBAIC0yMjksNiArMjI5LDcg
QEAgdm9pZCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIg
PDwgcGFnZVN0YXRlOworICAgIGVuY29kZXIgPDwgaGFzQ2FjaGVkUGFnZTsKIH0KIAogT3B0aW9u
YWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yNDMsNiArMjQ0LDkgQEAgT3B0aW9uYWw8
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29k
ZShJUEM6OkRlY29kZXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdlU3RhdGUp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuaGFzQ2FjaGVkUGFnZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmlu
ZGV4IGEzMjlmOTUzMzEwNTYzZmNjYTVkZmM2YzM2MGRiNWYzMTBlYmUzN2MuLjk5M2YwYmE3ODEw
YzA1MTU4NjFhYjZjNWU1NGFlMDYwMGFlOGE4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5oCkBAIC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICBSZWZQdHI8Vmll
d1NuYXBzaG90PiBzbmFwc2hvdDsKICNlbmRpZgorICAgIGJvb2wgaGFzQ2FjaGVkUGFnZSB7IGZh
bHNlIH07CiB9OwogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBiMDgyNWFmODZl
YWU0YTcyZGNkMTRlNzJiODA5ODNkM2ZkMGI4MWI1Li41Nzg4NDg4ZjMzY2QyYWI4ZWRlNDk4NzJk
YzYwNDNjNjRkODY4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiU3VzcGVuZGVk
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgorI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0
aWVzLmg+CkBAIC01NCw2ICs1NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06On5XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKCkKIHsKICAgICBBU1NFUlQoYWxsSXRlbXMoKS5nZXQobV9pdGVtU3Rh
dGUuaWRlbnRpZmllcikgPT0gdGhpcyk7CiAgICAgYWxsSXRlbXMoKS5yZW1vdmUobV9pdGVtU3Rh
dGUuaWRlbnRpZmllcik7CisgICAgcmVtb3ZlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKTsKIH0KIAog
SGFzaE1hcDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Kj4mIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmFsbEl0ZW1zKCkKQEAgLTE2MCwzOCArMTYyLDMw
IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xvbmUoY29uc3QgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYgb3RoZXIpCiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
d2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExpc3QoKQogewotICAgIGlmIChtX3N1c3BlbmRlZFBh
Z2UpCi0gICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+YmFja0ZvcndhcmRDYWNoZSgpLnJlbW92ZUVu
dHJ5KCp0aGlzKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkUGFnZSk7CisgICAgcmVtb3ZlRnJv
bUJhY2tGb3J3YXJkQ2FjaGUoKTsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpz
ZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3Vz
cGVuZGVkUGFnZSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6cmVtb3ZlRnJvbUJhY2tG
b3J3YXJkQ2FjaGUoKQogewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIG1fc3Vz
cGVuZGVkUGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0KLSAgICBtX3N1c3BlbmRl
ZFBhZ2UgPSBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpOwotCi0gICAgaWYgKG1fc3VzcGVuZGVkUGFn
ZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5zZXRCYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlz
KTsKKyAgICBpZiAobV9iYWNrRm9yd2FyZENhY2hlRW50cnkpCisgICAgICAgIG1fYmFja0Zvcndh
cmRDYWNoZUVudHJ5LT5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKnRoaXMpOworICAg
IEFTU0VSVCghbV9iYWNrRm9yd2FyZENhY2hlRW50cnkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp0YWtlU3VzcGVuZGVk
UGFnZSgpCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldEJhY2tGb3J3YXJkQ2FjaGVF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5PiYmIGJhY2tGb3J3
YXJkQ2FjaGVFbnRyeSkKIHsKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQotICAgICAgICBtX3N1
c3BlbmRlZFBhZ2UtPmNsZWFyQmFja0ZvcndhcmRMaXN0SXRlbSgpOwotICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fc3VzcGVuZGVkUGFnZSwgbnVsbHB0cik7CisgICAgbV9iYWNrRm9yd2FyZENh
Y2hlRW50cnkgPSBXVEZNb3ZlKGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk7CiB9CiAKIFN1c3BlbmRl
ZFBhZ2VQcm94eSogV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsKKyAgICByZXR1cm4gbV9iYWNr
Rm9yd2FyZENhY2hlRW50cnkgPyBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeS0+c3VzcGVuZGVkUGFn
ZSgpIDogbnVsbHB0cjsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKIGNvbnN0IGNoYXIqIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcoKQogewotICAgIHJldHVybiBkZWJ1Z1N0
cmluZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5nKCksICIsIG9y
aWdpbmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1cmwoKSwgbV9z
dXNwZW5kZWRQYWdlID8gIihoYXMgYSBzdXNwZW5kZWQgcGFnZSkiIDogIiIpOworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5n
KCksICIsIG9yaWdpbmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1
cmwoKSwgbV9iYWNrRm9yd2FyZENhY2hlRW50cnkgPyAiKGhhcyBhIGJhY2svZm9yd2FyZCBjYWNo
ZSBlbnRyeSkiIDogIiIpOwogfQogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IGIyY2Y3NzEzNGU1
NjI0ZjdkMWJiYjA5NDdkMzZlNDEzY2RkMjgyMzMuLjY2NDJlMjAwNzg0OGM4YWRkNDBkNTczZjM0
M2U5MTYxOWVkZThjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFN1c3BlbmRlZFBhZ2VQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7CitjbGFzcyBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0g
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExp
c3RJdGVtPiB7CiBwdWJsaWM6CkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
d2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExpc3QoKTsKIAorICAgIFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeSogYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9y
d2FyZENhY2hlRW50cnkuZ2V0KCk7IH0KICAgICBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRl
ZFBhZ2UoKSBjb25zdDsKIAogI2lmICFMT0dfRElTQUJMRUQKQEAgLTkwLDE2ICs5MiwxNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogCisgICAgdm9pZCByZW1v
dmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOworCiAgICAgLy8gV2ViQmFja0ZvcndhcmRDYWNoZS4K
ICAgICBmcmllbmQgY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKLSAgICB2b2lkIHNldFN1c3Bl
bmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJik7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKTsKKyAg
ICB2b2lkIHNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5PiYmKTsKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0
ZW1TdGF0ZTsKICAgICBVUkwgbV9yZXNvdXJjZURpcmVjdG9yeVVSTDsKICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdl
UHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQmFja0Zvcndh
cmRDYWNoZUVudHJ5PiBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeTsKIH07CiAKIHR5cGVkZWYgVmVj
dG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZlY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKaW5kZXggMWU3NDM1YzExNjMzYTFiMTJmYTlkY2Q2ZWQxNzE5ZWI1MTAyYjM3
OS4uOWVjYTBlZmNiMjFiMjU5N2YwY2Q5OGI2NjU5Njg5YWFlMWEyYWRhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTkwLDYgKzkwLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNr
ZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAg
ZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKKyAgICBlbmNvZGVyIDw8
IGJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNv
ZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCB1aVByb2Nl
c3NTREtWZXJzaW9uOwpAQCAtMjY5LDYgKzI3MCw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmJhY2tGb3J3YXJkQ2FjaGVDYXBh
Y2l0eSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAxZWNlODFjZmM4NGI2Y2IzNTY3YzQ4
NWEwYWIyOWRiZTBiZWY3Y2Q1Li5mOTgwOTExMTJhMWY1ODJjMGM0Y2JkMTdmZGZhYWRiY2Q2ZjA2
MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgewogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbDsKIAogICAgIGRvdWJsZSBk
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCB7IElOVF9NQVggfTsKKyAgICB1bnNpZ25lZCBi
YWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkgeyAwIH07CiAKICAgICBib29sIHNob3VsZEFsd2F5c1Vz
ZUNvbXBsZXhUZXh0Q29kZVBhdGggeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlTWVt
b3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCBlOThlYzBlYTQ4MDk0ODBi
M2E3ZTQ3ODk2NTEzYzQ4MGM0OGNiNzc4Li44YjBiNDMwYzQxZmVhYTU5ZTRkMDUyZmIyZDc1MmYy
YjI0Y2ViMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5o
IgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNp
bmNsdWRlICJXZWJFcnJvcnMuaCIKQEAgLTE2MSw4ICsxNjIsOCBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgV2ViQgogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29U
b0JhY2tGb3J3YXJkSXRlbTogcGFnZVByb3h5SUQgPSAlIiBQUkl1NjQgIiB3ZWJQYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0ZvcndhcmRMaXN0
KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1dKGF1dG8mIGl0
ZW0pIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRlZFBhZ2UoKSkgewot
ICAgICAgICAgICAgaWYgKCZwYWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKQorICAg
ICAgICBpZiAoYXV0byogYmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gaXRlbS5iYWNrRm9yd2FyZENh
Y2hlRW50cnkoKSkgeworICAgICAgICAgICAgaWYgKGJhY2tGb3J3YXJkQ2FjaGVFbnRyeS0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
Jml0ZW0gIT0gdGFyZ2V0SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwCmluZGV4IDgzNThkMmY5MGIxYWU0MDRhMWY0YzAwYjJiZGQ4YzNjMTI4
YmU5M2IuLjdmODljZWVmYzNmMjZkNmRkYTYwNDdmZmVkNDE3YWNlYmQwNDQ5MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtODEsNyAr
ODEsNiBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3Nh
Z2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwogICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwogICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU2F2ZVRvUGFnZUNhY2hlIik7CiAgICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvZ3Jlc3MiKTsKICAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwogICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJFZGl0b3JTdGF0ZUNoYW5nZWQiKTsKQEAgLTEz
NiwxOCArMTM1LDYgQEAgU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkK
ICAgICBtX3Byb2Nlc3MtPmRlY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3VudCgpOwogfQogCi12b2lk
IFN1c3BlbmRlZFBhZ2VQcm94eTo6c2V0QmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiBpdGVtKQotewotICAgIEFTU0VSVCghbV9iYWNrRm9yd2FyZExpc3RJdGVtKTsK
LSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPSAmaXRlbTsKLX0KLQotdm9pZCBTdXNwZW5kZWRQ
YWdlUHJveHk6OmNsZWFyQmFja0ZvcndhcmRMaXN0SXRlbSgpCi17Ci0gICAgQVNTRVJUKG1fYmFj
a0ZvcndhcmRMaXN0SXRlbSk7Ci0gICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtID0gbnVsbHB0cjsK
LX0KLQogV2ViQmFja0ZvcndhcmRDYWNoZSYgU3VzcGVuZGVkUGFnZVByb3h5OjpiYWNrRm9yd2Fy
ZENhY2hlKCkgY29uc3QKIHsKICAgICByZXR1cm4gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFj
a0ZvcndhcmRDYWNoZSgpOwpAQCAtMjQ1LDEyICsyMzIsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3Bl
bnNpbwogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkKIHsK
LSAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJv
eHk6OnN1c3BlbnNpb25UaW1lZE91dCgpIGRlc3Ryb3lpbmcgdGhlIHN1c3BlbmRlZCBwYWdlIGJl
Y2F1c2UgaXQgZmFpbGVkIHRvIHN1c3BlbmQgaW4gdGltZSIsIHRoaXMpOwotICAgIEFTU0VSVCht
X2JhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1c3BlbmRlZFBhZ2UoKSA9PSB0aGlzKTsKLSAgICBiYWNr
Rm9yd2FyZENhY2hlKCkucmVtb3ZlRW50cnkoKm1fYmFja0ZvcndhcmRMaXN0SXRlbSk7IC8vIFdp
bGwgZGVzdHJveSB8dGhpc3wuCisgICAgYmFja0ZvcndhcmRDYWNoZSgpLnJlbW92ZUVudHJ5KCp0
aGlzKTsgLy8gV2lsbCBkZXN0cm95IHx0aGlzfC4KIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5k
ZXggOWYzYWUzMzE4ZmY1NWZhODIzN2IwY2Q1NWM3ZTA5MDdkM2UzZjQ3Mi4uNzY0YmVkYzc3YmU4
MWI0NWI0OTI2NWJhMTE1YWNhZjdiNTA3NzAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTU2LDEwICs1Niw2IEBAIHB1YmxpYzoKICAgICBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7
IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQoKSBjb25zdCB7IHJl
dHVybiBtX21haW5GcmFtZUlEOyB9CiAKLSAgICB2b2lkIHNldEJhY2tGb3J3YXJkTGlzdEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwotICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3RJ
dGVtKCk7Ci0KLSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBiYWNrRm9yd2FyZExpc3RJdGVt
KCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOyB9CiAgICAgV2ViQmFja0ZvcndhcmRD
YWNoZSYgYmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0OwogCiAgICAgYm9vbCBwYWdlSXNDbG9zZWRP
ckNsb3NpbmcoKSBjb25zdDsKQEAgLTg4LDcgKzg0LDYgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkmIG1fcGFnZTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBhZ2VJRDsK
ICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7Ci0gICAgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogbV9iYWNrRm9yd2FyZExpc3RJdGVtIHsgbnVsbHB0ciB9OwogICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtX21haW5GcmFtZUlEOwogICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZh
bHNlIH07CiAgICAgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlIHsgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlOjpObyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCA0NjQ4NzY0Y2ZlMjQwY2Y3YTBjNzc4ZWFiM2Y5
ZWE0MTNlZTdjNWJkLi40MGZmMWM2OWMxM2NiNWJkNjBjMzIzNjkzZGMyMjM5ZmRjZmU3YWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcApA
QCAtMjYsMTcgKzI2LDc1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRDYWNoZS5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN1c3Bl
bmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIgog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkJhY2tGb3J3YXJkQ2Fj
aGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1bHQ7CitjbGFzcyBFbnRyeVdpdGhTdXNw
ZW5kZWRQYWdlIGZpbmFsIDogcHVibGljIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7CitwdWJs
aWM6CisgICAgRW50cnlXaXRoU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNr
Rm9yd2FyZENhY2hlLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3Bl
bmRlZFBhZ2UpCisgICAgICAgIDogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KGJhY2tGb3J3YXJk
Q2FjaGUpCisgICAgICAgICwgbV9zdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFnZSkp
CisgICAgeworICAgIH0KIAotV2ViQmFja0ZvcndhcmRDYWNoZTo6fldlYkJhY2tGb3J3YXJkQ2Fj
aGUoKSA9IGRlZmF1bHQ7CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOyB9CisgICAgc3RkOjp1
bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoKSBmaW5hbCB7
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVuZGVkUGFnZSwgbnVsbHB0cik7IH0KKyAgICBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHByb2Nlc3MoKS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKTsgfQorICAgIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3VzcGVuZGVkUGFn
ZS0+cHJvY2VzcygpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQYWdlOworfTsKKworY2xhc3MgRW50cnlXaXRob3V0U3Vz
cGVuZGVkUGFnZSBmaW5hbCA6IHB1YmxpYyBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgeworcHVi
bGljOgorICAgIEVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRDYWNoZSYg
YmFja0ZvcndhcmRDYWNoZSwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciYgYmFja0ZvcndhcmRJdGVtSUQsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
ZGVudGlmaWVyKQorICAgICAgICA6IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeShiYWNrRm9yd2Fy
ZENhY2hlKQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIp
CisgICAgICAgICwgbV9iYWNrRm9yd2FyZEl0ZW1JRChiYWNrRm9yd2FyZEl0ZW1JRCkKKyAgICB7
CisgICAgfQorCisgICAgfkVudHJ5V2l0aG91dFN1c3BlbmRlZFBhZ2UoKQorICAgIHsKKyAgICAg
ICAgYXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKKyAgICAgICAgcHJvY2Vzcy5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZShtX2Jh
Y2tGb3J3YXJkSXRlbUlEKSwgW3Rva2VuID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpXSB7IH0pOworICAgIH0KKworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNz
SWRlbnRpZmllcjsgfQorICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcihtX3Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKHByb2Nl
c3MpOworICAgICAgICByZXR1cm4gKnByb2Nlc3M7CisgICAgfQorCitwcml2YXRlOgorICAgIFN1
c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3Vz
cGVuZGVkUGFnZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIG1fcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllciBtX2JhY2tGb3J3YXJkSXRlbUlEOworfTsKKworV2ViQmFja0Zv
cndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wpCisgICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQoreworfQorCitXZWJCYWNrRm9y
d2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNoZSgpCit7CisgICAgY2xlYXIoKTsKK30KIAog
aW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlT2xkZXN0RW50cnkoKQogewpA
QCAtNDYsNDggKzEwNCw4NSBAQCBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1v
dmVPbGRlc3RFbnRyeSgpCiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNpdHko
dW5zaWduZWQgY2FwYWNpdHkpCiB7CisgICAgaWYgKG1fY2FwYWNpdHkgPT0gY2FwYWNpdHkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICB3aGlsZSAo
c2l6ZSgpID4gY2FwYWNpdHkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CisKKyAgICBt
X3Byb2Nlc3NQb29sLnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
QmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KG1fY2FwYWNpdHkpKTsKIH0KIAotdm9pZCBXZWJCYWNr
Rm9yd2FyZENhY2hlOjphZGRFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBzdGQ6
OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCit2b2lkIFdl
YkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+JiYgYmFja0ZvcndhcmRD
YWNoZUVudHJ5KQogewogICAgIEFTU0VSVChjYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoYmFja0Zv
cndhcmRDYWNoZUVudHJ5KTsKIAotICAgIGl0ZW0uc2V0U3VzcGVuZGVkUGFnZShXVEZNb3ZlKHN1
c3BlbmRlZFBhZ2UpKTsKLSAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuYWRkKCZpdGVtKTsKKyAg
ICBpZiAoaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSkgeworICAgICAgICBBU1NFUlQobV9p
dGVtc1dpdGhDYWNoZWRQYWdlLmNvbnRhaW5zKCZpdGVtKSk7CisgICAgICAgIG1faXRlbXNXaXRo
Q2FjaGVkUGFnZS5yZW1vdmVGaXJzdCgmaXRlbSk7CisgICAgfQorCisgICAgaXRlbS5zZXRCYWNr
Rm9yd2FyZENhY2hlRW50cnkoV1RGTW92ZShiYWNrRm9yd2FyZENhY2hlRW50cnkpKTsKKyAgICBt
X2l0ZW1zV2l0aENhY2hlZFBhZ2UuYXBwZW5kKCZpdGVtKTsKIAogICAgIGlmIChzaXplKCkgPiBj
YXBhY2l0eSgpKQogICAgICAgICByZW1vdmVPbGRlc3RFbnRyeSgpOwogICAgIEFTU0VSVChzaXpl
KCkgPD0gY2FwYWNpdHkoKSk7CisKKyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAi
V2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnk6IGl0ZW06ICVzLCBoYXNTdXNwZW5kZWRQYWdl
OiAlZCwgc2l6ZTogJXUgLyAldSIsIGl0ZW0uaXRlbUlEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgISFpdGVtLnN1c3BlbmRlZFBhZ2UoKSwgc2l6ZSgpLCBjYXBhY2l0eSgpKTsKK30KKwordm9p
ZCBXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2Up
Cit7CisgICAgYWRkRW50cnkoaXRlbSwgbWFrZVVuaXF1ZTxFbnRyeVdpdGhTdXNwZW5kZWRQYWdl
PigqdGhpcywgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3
YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGFkZEVudHJ5KGl0
ZW0sIG1ha2VVbmlxdWU8RW50cnlXaXRob3V0U3VzcGVuZGVkUGFnZT4oKnRoaXMsIGl0ZW0uaXRl
bUlEKCksIFdURk1vdmUocHJvY2Vzc0lkZW50aWZpZXIpKSk7CiB9CiAKIHZvaWQgV2ViQmFja0Zv
cndhcmRDYWNoZTo6cmVtb3ZlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsK
ICAgICBBU1NFUlQobV9pdGVtc1dpdGhDYWNoZWRQYWdlLmNvbnRhaW5zKCZpdGVtKSk7Ci0gICAg
bV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZSgmaXRlbSk7Ci0gICAgaXRlbS5zZXRTdXNwZW5k
ZWRQYWdlKG51bGxwdHIpOworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVGaXJzdCgm
aXRlbSk7CisgICAgaXRlbS5zZXRCYWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CisgICAg
UkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92
ZUVudHJ5OiBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIsIGl0ZW0uaXRlbUlEKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgc2l6ZSgpLCBjYXBhY2l0eSgpKTsKK30KKwordm9pZCBXZWJCYWNrRm9y
d2FyZENhY2hlOjpyZW1vdmVFbnRyeShTdXNwZW5kZWRQYWdlUHJveHkmIHN1c3BlbmRlZFBhZ2Up
Cit7CisgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFsmc3VzcGVuZGVkUGFnZV0oYXV0byYgaXRl
bSkgeworICAgICAgICByZXR1cm4gaXRlbS5zdXNwZW5kZWRQYWdlKCkgPT0gJnN1c3BlbmRlZFBh
Z2U7CisgICAgfSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdl
YkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
KQorc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFja0ZvcndhcmRDYWNo
ZTo6dGFrZVN1c3BlbmRlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKKyAg
ICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNoZTo6dGFr
ZVN1c3BlbmRlZFBhZ2U6IGl0ZW06ICVzIiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKwogICAgIEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0
ZW0pKTsKLSAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKLSAgICByZXR1
cm4gaXRlbS50YWtlU3VzcGVuZGVkUGFnZSgpOworICAgIEFTU0VSVChpdGVtLmJhY2tGb3J3YXJk
Q2FjaGVFbnRyeSgpKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBpdGVtLmJhY2tGb3J3YXJk
Q2FjaGVFbnRyeSgpLT50YWtlU3VzcGVuZGVkUGFnZSgpOworICAgIEFTU0VSVChzdXNwZW5kZWRQ
YWdlKTsKKyAgICByZW1vdmVFbnRyeShpdGVtKTsKKyAgICByZXR1cm4gc3VzcGVuZGVkUGFnZTsK
IH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFsm
cHJvY2Vzc10oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1cm4gJml0ZW0uc3VzcGVuZGVkUGFn
ZSgpLT5wcm9jZXNzKCkgPT0gJnByb2Nlc3M7CisgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFtw
cm9jZXNzSWRlbnRpZmllciA9IHByb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCldKGF1dG8m
IGVudHJ5KSB7CisgICAgICAgIEFTU0VSVChlbnRyeS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSk7
CisgICAgICAgIHJldHVybiBlbnRyeS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmllcjsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJC
YWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7CiAgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFtzZXNzaW9uSURdKGF1dG8m
IGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wcm9jZXNzKCku
d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgcmV0
dXJuIGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0
b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwogICAgIH0pOwogfQogCkBAIC0xMDAsMjEg
KzE5NSwyMSBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQYWdl
KFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVF
bnRyaWVzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Jik+JiBtYXRjaGVzKQogewotICAgIGZvciAoYXV0byBpdCA9IG1faXRlbXNXaXRoQ2FjaGVkUGFn
ZS5iZWdpbigpOyBpdCAhPSBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuZW5kKCk7KSB7Ci0gICAgICAg
IGF1dG8gY3VycmVudCA9IGl0OwotICAgICAgICArK2l0OwotICAgICAgICBpZiAobWF0Y2hlcygq
KmN1cnJlbnQpKSB7Ci0gICAgICAgICAgICAoKmN1cnJlbnQpLT5zZXRTdXNwZW5kZWRQYWdlKG51
bGxwdHIpOwotICAgICAgICAgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZShjdXJyZW50
KTsKKyAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8q
IGl0ZW0pIHsKKyAgICAgICAgaWYgKG1hdGNoZXMoKml0ZW0pKSB7CisgICAgICAgICAgICBpdGVt
LT5zZXRCYWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQotICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOwog
fQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmNsZWFyKCkKIHsKKyAgICBSRUxFQVNFX0xP
RyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIiKTsKICAgICBh
dXRvIGl0ZW1zV2l0aENhY2hlZFBhZ2UgPSBXVEZNb3ZlKG1faXRlbXNXaXRoQ2FjaGVkUGFnZSk7
CiAgICAgZm9yIChhdXRvKiBpdGVtIDogaXRlbXNXaXRoQ2FjaGVkUGFnZSkKLSAgICAgICAgaXRl
bS0+c2V0U3VzcGVuZGVkUGFnZShudWxscHRyKTsKKyAgICAgICAgaXRlbS0+c2V0QmFja0Zvcndh
cmRDYWNoZUVudHJ5KG51bGxwdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKaW5kZXggNGRmMTlh
ZDRhZTcyNzA4YmYwMDFlNTNmZGYyNzE2ZDQzYWZiODFlNy4uNjhlMDI5ZWEyZDMxZGU3ZjgwZDA1
ODM2ZjY5ODZmMTRjZmQzMWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkQ2FjaGUuaApAQCAtMjUsMjEgKzI1LDI0IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdlUHJveHk7Citj
bGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogY2xhc3MgV2Vi
QmFja0ZvcndhcmRDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgV2ViQmFja0ZvcndhcmRDYWNoZSgpOworICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJk
Q2FjaGUoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+V2ViQmFja0ZvcndhcmRDYWNoZSgpOwogCiAg
ICAgdm9pZCBzZXRDYXBhY2l0eSh1bnNpZ25lZCk7CkBAIC01MiwxNSArNTUsMTkgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlRW50cmllc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAg
ICAgdm9pZCBhZGRFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRlZFBhZ2VQcm94eT4mJik7CisgICAgdm9pZCBhZGRFbnRyeShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3Zl
RW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+IHRha2VFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CisgICAg
dm9pZCByZW1vdmVFbnRyeShTdXNwZW5kZWRQYWdlUHJveHkmKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVPbGRlc3RFbnRyeSgpOwogICAg
IHZvaWQgcmVtb3ZlRW50cmllc01hdGNoaW5nKGNvbnN0IEZ1bmN0aW9uPGJvb2woV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpPiYpOworICAgIHZvaWQgYWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+JiYpOwogCisg
ICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0
eSB7IDAgfTsKLSAgICBMaXN0SGFzaFNldDxXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4gbV9pdGVt
c1dpdGhDYWNoZWRQYWdlOworICAgIFZlY3RvcjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4gbV9p
dGVtc1dpdGhDYWNoZWRQYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1N2EzMTM0MjFmZmUwNjMyOTMyMTkyYWEyZmM0Yzg0YTU3YjM3MDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2Ns
YXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CisKK2NsYXNz
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCkgPSBkZWZh
dWx0OworCisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZTsgfQorCisgICAgdmlydHVhbCBTdXNwZW5kZWRQ
YWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3Qg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
KFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgICAgIDogbV9iYWNr
Rm9yd2FyZENhY2hlKGJhY2tGb3J3YXJkQ2FjaGUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToK
KyAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBtX2JhY2tGb3J3YXJkQ2FjaGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDgyZTJjNGY3YmUxODFjZTIzZGQ1NTk4N2Q4Mzk5MDA2YTlkMzVkNDEuLjUxYTQ4ZTZk
NWUzNzRiYzdjZTUzMmJlYjI1ZTA4ZjNhNzhlYjM1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjk1Miw3ICsyOTUyLDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEEKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvY2VzcyB0byBiZSB1c2Vk
IGZvciB0aGUgbmF2aWdhdGlvbiBkb2VzIG5vdCBnZXQgc2h1dERvd24gbm93IGR1ZSB0byBkZXN0
cm95aW5nIFN1c3BlbmRlZFBhZ2VQcm94eSBvciBQcm92aXNpb25hbFBhZ2VQcm94eSBvYmplY3Rz
LgogICAgICAgICAgICAgYXV0byBwcmV2ZW50TmF2aWdhdGlvblByb2Nlc3NTaHV0ZG93biA9IHBy
b2Nlc3NGb3JOYXZpZ2F0aW9uLT5tYWtlU2NvcGVQcmV2ZW50aW5nU2h1dGRvd24oKTsKIAotICAg
ICAgICAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlID8g
YmFja0ZvcndhcmRDYWNoZSgpLnRha2VFbnRyeSgqZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5i
YWNrRm9yd2FyZExpc3RJdGVtKCkpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIEFTU0VSVCghZGVz
dGluYXRpb25TdXNwZW5kZWRQYWdlIHx8IG5hdmlnYXRpb24tPnRhcmdldEl0ZW0oKSk7CisgICAg
ICAgICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgPyBi
YWNrRm9yd2FyZENhY2hlKCkudGFrZVN1c3BlbmRlZFBhZ2UoKm5hdmlnYXRpb24tPnRhcmdldEl0
ZW0oKSkgOiBudWxscHRyOworICAgICAgICAgICAgQVNTRVJUKHN1c3BlbmRlZFBhZ2UuZ2V0KCkg
PT0gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlKTsKICAgICAgICAgICAgIGlmIChzdXNwZW5kZWRQ
YWdlICYmIHN1c3BlbmRlZFBhZ2UtPnBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygpKQogICAgICAgICAg
ICAgICAgIHN1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwogCkBAIC04MDM0LDExICs4MDM2LDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKIH0KICNlbmRpZiAvLyBQTEFU
Rk9STShHVEspCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewot
ICAgIG1fcHJvY2Vzcy0+ZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5p
bmcpCiB7CiAgICAgaWYgKG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID09IHBpbm5pbmcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE2OTQ4OGRlNjc2ZDhjZjdhYmYy
MGEyNmQxNzU0MzAyNjhkOWJlZWEuLjg0OGY5NjgzNDc2N2Q5ZWZkNmIyMTUxNjNkZmUyMTg1ZTU1
YTA5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjc4LDgg
KzEyNzgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAgICAgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElEKTsK
LQotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCk7CiAgICAgICAgIAogICAgIHZvaWQgc2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAg
ICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODM5MzdkMjA0
ZThkMGJkOGMyYTA1NzgxMWI1NzIzNDJjMGNhNjA2OS4uMmQwYmZmOGMxMTQzYjFkODRlYTYzZjk0
Y2FkODdjMjQxNzA0MWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDUzLDggKzQ1Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAKICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIAotICAgIERpZFNhdmVU
b1BhZ2VDYWNoZSgpCi0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICBXcmFwQ3J5cHRvS2V5
KFZlY3Rvcjx1aW50OF90PiBrZXkpIC0+IChib29sIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+
IHdyYXBwZWRLZXkpIFN5bmNocm9ub3VzCiAgICAgVW53cmFwQ3J5cHRvS2V5KFZlY3Rvcjx1aW50
OF90PiB3cmFwcGVkS2V5KSAtPiAoYm9vbCBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiBrZXkp
IFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggYjcyZDNkNGEwNzQ0NzY2MmQyNmEzY2VhMzdjM2MzMmNlNzA5Mzg1Yi4uZGQyZWQ2OTE5
YjljYmQ1MTVlYzMzMGM0MzExMDNlNzc1MjA2ZmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIFdlYlByb2Nlc3NQb29s
OjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3Vu
dGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICAgICAsIG1fYmFja2dy
b3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgotICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1h
a2VVbmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKSkKKyAgICAsIG1fYmFja0ZvcndhcmRD
YWNoZShtYWtlVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2FjaGU+KCp0aGlzKSkKICAgICAsIG1f
d2ViUHJvY2Vzc0NhY2hlKG1ha2VVbmlxdWVSZWY8V2ViUHJvY2Vzc0NhY2hlPigqdGhpcykpCiB7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtNzQ1LDEzICs3NDUsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBD
OjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZwogICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0
b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpKS5wdHIoKSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQ
YWdlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKLXsKLSAgICBpZiAobV9wcm9jZXNzV2l0aFBh
Z2VDYWNoZSAmJiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlICE9IHByb2Nlc3MpCi0gICAgICAgIG1f
cHJvY2Vzc1dpdGhQYWdlQ2FjaGUtPnJlbGVhc2VQYWdlQ2FjaGUoKTsKLSAgICBtX3Byb2Nlc3NX
aXRoUGFnZUNhY2hlID0gcHJvY2VzczsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2
ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogewogICAgIG1fcmVzb2x2ZWRQYXRocy5pbmpl
Y3RlZEJ1bmRsZVBhdGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oaW5qZWN0ZWRC
dW5kbGVQYXRoKCkpOwpAQCAtOTM2LDYgKzkyOSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omlu
aXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURh
CiAKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsID0gQVBJOjpV
UkxSZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAKKyAgICBwYXJhbWV0ZXJzLmJh
Y2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSA9IGJhY2tGb3J3YXJkQ2FjaGUoKS5jYXBhY2l0eSgpOwor
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZCBi
ZSBhIGdlbmVyaWMgd2F5IGZvciBzdXBwbGVtZW50cyB0byBhZGQgdG8gdGhlIGludGlhbGl6YXRp
b24gcGFyYW1ldGVycy4KICAgICBwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zID0g
c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPm5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CkBAIC0xMDg5LDggKzEwODQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFNvbWUgb2YgdGhl
IGludmFsaWRhdGlvbiBjYWxscyBvZiB0aGUgb3RoZXIgc3VwcGxlbWVudHMgYXJlIHN0aWxsIG5l
Y2Vzc2FyeSBpbiBtdWx0aS1wcm9jZXNzIG1vZGUsIGJ1dCB0aGV5IHNob3VsZCBvbmx5IGFmZmVj
dCBkYXRhIHN0cnVjdHVyZXMgcGVydGFpbmluZyB0byB0aGUgcHJvY2VzcyBiZWluZyBkaXNjb25u
ZWN0ZWQuCiAgICAgLy8gQ2xlYXJpbmcgZXZlcnl0aGluZyBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1
cmVzLCBzbyBpdCdzIGxlc3MgdHJvdWJsZSB0byBza2lwIHRoYXQgZm9yIG5vdy4KICAgICBSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0KHByb2Nlc3MpOwotICAgIGlmIChtX3Byb2Nlc3NX
aXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUg
PSBudWxscHRyOwogCiAgICAgbV9iYWNrRm9yd2FyZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJv
Y2VzcygqcHJvY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CmluZGV4IDYwZWY0OTMxYTI0OGU1Zjc3NWFlNDNhYWI0YmI5ZDQ5MGRiNjVlMmIuLjA5NGQyZGQz
MDIyNzQ1NWE5MzEwMWE5YmI5YzhlZTZhYWQ5Y2U0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDA4LDggKzQwOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBzZXRJbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSYgbWVzc2FnZU5hbWUpOwogCi0gICAgdm9pZCBwcm9jZXNzRGlkQ2FjaGVQYWdlKFdlYlBy
b2Nlc3NQcm94eSopOwotCiAgICAgYm9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKICAgICB2b2lk
IHJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2lu
Y2UxOTcwKTsKQEAgLTU5OSw3ICs1OTcsNiBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NQcm94
eSogbV9wcmV3YXJtZWRQcm9jZXNzIHsgbnVsbHB0ciB9OwogICAgIFdlYlByb2Nlc3NQcm94eSog
bV9kdW1teVByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsgLy8gQSBsaWdodHdlaWdodCBXZWJQcm9j
ZXNzUHJveHkgd2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSAgICBXZWJQcm9jZXNzUHJveHkq
IG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgeyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCA9IHN0ZDo6
cGFpcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQ+OwogICAgIEhh
c2hNYXA8UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklELCBXZWJQcm9jZXNzUHJveHkqPiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA5OTYwYWNmMDhkM2E5NzZjOTQ4NDU3N2VkNjY1YmIxYjg2OTE2
NjMwLi40OTE1ZmJmYjFhOTFiNGRlM2Y2ZTNiNThhZGUzZDBmZTA2MWM1NjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTYzMSw2ICs2MzEsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW0KICAgICAgICAgcmV0dXJuOwogCiAgICAgaXRlbS0+
c2V0UGFnZVN0YXRlKFBhZ2VTdGF0ZSB7IGl0ZW1TdGF0ZS5wYWdlU3RhdGUgfSk7CisKKyAgICBp
ZiAoISFpdGVtLT5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSAhPSBpdGVtU3RhdGUuaGFzQ2FjaGVk
UGFnZSkgeworICAgICAgICBpZiAoaXRlbVN0YXRlLmhhc0NhY2hlZFBhZ2UpCisgICAgICAgICAg
ICBwcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5hZGRFbnRyeSgqaXRlbSwgY29yZVBy
b2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBlbHNlIGlmICghaXRlbS0+c3VzcGVuZGVkUGFn
ZSgpKQorICAgICAgICAgICAgcHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3Zl
RW50cnkoKml0ZW0pOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpAQCAtOTg0LDE3ICs5OTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlVGV4dENo
ZWNrZXJTdGF0ZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRD
aGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci0gICAgbV9wcm9jZXNzUG9vbC0+cHJv
Y2Vzc0RpZENhY2hlUGFnZSh0aGlzKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVh
c2VQYWdlQ2FjaGUoKQotewotICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWxlYXNlUGFnZUNhY2hlKCksIDApOwotfQotCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA4MzIzNDlhOTlmMDAxZjc0
NGI1YzZlYzgwYzZmZGQzMWRhNzMxMTM4Li5jZmU0YzkxZWY2NTMyZjc4Nzc2N2E2N2M3OTVkZjRj
M2JjM2VlNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApA
QCAtMTg2LDkgKzE4Niw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGZ1bGxLZXlib2Fy
ZEFjY2Vzc0VuYWJsZWQoKTsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci0gICAg
dm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7Ci0KICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkYTIxNzQxMDQyNzQ5NWJkMzhiNWVjN2Y4NzgwN2E3ZDM5
NzMzYTljLi40NmM0MzZiMDMyOGM3ODVhOGIyZjJjOTMwOGRiNWE1NTM0OWQ1MGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxOCw2
ICs5MTgsNyBAQAogCQk0NkJFQjZFMzIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QzM5MjI5MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi87IH07CisJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0
QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi87IH07CiAJCTRBM0NDMThGMTlC
MDdCOEEwMEQxNEFFRiAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzNjE5QUY3QUMzMDAy
RUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjM4LDYgKzMyMzksNyBAQAogCQk0
NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZGOUIyNjIyMzUyNkVEMDAw
NkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkx
OUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc4MjYsNiArNzgyOCw3IEBACiAJCQkJMUE2MDIyNDkxOEMxNkIwODAwQzNFOEM5IC8qIFZp
c2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4
MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICovLAogCQkJCTQ2MDMwMTFCMjM0QkUzMUUw
MDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8sCisJCQkJNDZGOUIyNjIyMzUyNkVE
MDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovLAogCQkJCUJDNzJCQTFC
MTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJC
QTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2
OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtOTg2MCw2
ICs5ODYzLDcgQEAKIAkJCQkxQzBBMTk0NzFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NTQxQzhGRkRGQjAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZG
RTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NzJCQTFFMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxOEQyQ0FFMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAxRUI0RUEgLyogV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwCmluZGV4IGFjNzIyYTU1ODMwZmQ2YzQyNzFkMjhhNTA5NDljMGMzNDg3
MGE5MTguLjBlY2E0YzFkMzIwY2U5MGRlYzFjZWE4MzU0ZmUyMjZlNzBmNDQ1MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTExNSw2ICsxMTUsNyBAQCBCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUgdG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoY29uc3QgV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0mCiAgICAgc3RhdGUucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlID0gdG9G
cmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKICAgICBzdGF0ZS5wYWdlU3RhdGUuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKTsKICAgICBzdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0ID0gaGlzdG9yeUl0
ZW0uc3RhdGVPYmplY3QoKTsKKyAgICBzdGF0ZS5oYXNDYWNoZWRQYWdlID0gaGlzdG9yeUl0ZW0u
aXNJblBhZ2VDYWNoZSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOWZhMTVlMDhmNjRjNTQ5YTkwZmQxMGEyZGU3NjI1MTFkYmE5
ZjhiYS4uY2NlZDExZmFiZGUxZWJhOTJiZDZjN2UwY2IxNmI1Nzk5NzNkM2E0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTMzLDE2ICsxNTMzLDYgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAjZW5k
aWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkK
LXsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghd2Vi
UGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2F2ZVRv
UGFnZUNhY2hlKCkpOwotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0b3Jl
RnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZGI3NTJkNTg4N2VmNTA3ZThiM2VmMjYw
NGE0OTQwMzE3OGNiMDhmZS4uYWZhMTdhNDk2N2NmYzAzYTZjOTQ4ZGI5OWNlODAxNDI1ZGVjNDdm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIwNiw3ICsyMDYsNiBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkg
ZmluYWw7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRC
ZWNvbWVGcmFtZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCAzNDBjOWM0Yzk0NDAzOTVmNDVkYzdhNmM3YWM3Y2M2ZjY0OTcxZmQzLi5h
YTFlMDJhMzA4YjA2NTVjY2ZhZjIyYzFiMTIyMGRhZjg0MDVlOWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zODYsNiArMzg2LDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIAogICAgIHNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKHBhcmFt
ZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpOwogCisgICAgc2V0QmFja0Zvcndh
cmRDYWNoZUNhcGFjaXR5KHBhcmFtZXRlcnMuYmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KTsKKwog
ICAgIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKHBhcmFtZXRlcnMuc2hvdWxkQWx3
YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCk7CiAKICAgICBzZXRTaG91bGRVc2VGb250U21vb3Ro
aW5nKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyk7CkBAIC0xMjk0LDExICsxMjk2
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVj
a2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3M6
OnJlbGVhc2VQYWdlQ2FjaGUoKQotewotICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVU
b1NpemVOb3coMCwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1cmUpOwotfQotCiB2b2lkIFdl
YlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKQEAgLTE3
NzksNiArMTc3NiwyMSBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0QmFja0Zvcndh
cmRDYWNoZUNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQoreworICAgIFBhZ2VDYWNoZTo6c2lu
Z2xldG9uKCkuc2V0TWF4U2l6ZShjYXBhY2l0eSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6Y2xl
YXJDYWNoZWRQYWdlKEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBI
aXN0b3J5SXRlbSogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQoYmFj
a0ZvcndhcmRJdGVtSUQpOworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisKKyAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogTGliV2ViUlRDTmV0d29yayYgV2ViUHJv
Y2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBhZTFmNjAzMDgzYzQwMWYw
OTM5OGI2NmE5OWQyMmUyMTVlMTZmMTVkLi43OThkMDg2MWNlNmRlYzIzMjUzY2M3YmVjYTljZjFj
MmRiZjdiZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTg2LDYg
Kzg2LDcgQEAgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVXNlckdlc3R1cmVUb2tlbjsKK3N0cnVjdCBCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVj
dCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBNb2NrTWVkaWFEZXZpY2U7CkBAIC0z
NjgsMTQgKzM2OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50cygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKLQogICAg
IHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKICAgICB2b2lkIHNldE1lbW9yeUNhY2hlRGlzYWJsZWQoYm9vbCk7CiAKKyAg
ICB2b2lkIHNldEJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSh1bnNpZ25lZCk7CisgICAgdm9pZCBj
bGVhckNhY2hlZFBhZ2UoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQog
ICAgIHZvaWQgc2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBo
YXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBjZWFkMDE2NjUwNjcyYTY2N2FiN2Q3MmNjZGY0NzVjMzQwODU4OGM0Li4yNDc2YzQzOGJj
M2NmNTQ4N2RhOTFmYzYzMzM2MTZhYTNkMTRjNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzUsOCArNzUsNiBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRJbmplY3RlZEJ1bmRsZVBh
cmFtZXRlcnMoSVBDOjpEYXRhUmVmZXJlbmNlIHBhcmFtZXRlcnMpOwogICAgIEhhbmRsZUluamVj
dGVkQnVuZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVz
c2FnZUJvZHkpOwogCi0gICAgUmVsZWFzZVBhZ2VDYWNoZSgpCi0KICAgICBGZXRjaFdlYnNpdGVE
YXRhKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcykg
LT4gKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSBBc3luYwogICAgIERl
bGV0ZVdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0
ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgLT4gKCkgQXN5bmMKICAgICBEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
PiB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5zKSAtPiAoKSBBc3luYwpAQCAtMTUzLDYgKzE1MSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZv
clRlc3RpbmcoKQogCisgICAgU2V0QmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KHVuc2lnbmVkIGNh
cGFjaXR5KTsKKyAgICBDbGVhckNhY2hlZFBhZ2Uoc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpIC0+ICgpIEFzeW5jCisKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVyKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggNjUxNmM5ZjQ5YjBjZTk1MDBlZTAxYmRkZWQ1YWVkZGMyM2U4NjdiZC4u
YzIxYmRjZjcxMDYzOTY5ZTExY2JkYmIwYTViOTNlNWJhYTg2ZDgzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0xODQsNyArMTg0LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZv
aWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOwogCi0gICAgdm9pZCBk
aWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNh
Y2hlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDhhZTg2YjVjNDhhYjRjNGI1
ZTE2MmFjMzExNzBhODhkYzhmNGNhM2IuLjQ2MGM5YTI2N2NhYTEyYmM5ODljMmZiNDI4ZGY0ZmFh
MjBiNzRlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDk1LDEwICsxNDk1
LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCiAgICAgfQogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRTYXZl
VG9QYWdlQ2FjaGUoKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0
b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkNGZiNWQ3NzZjNjAzNzNmZTY3M2JjMTUxZTZmMTJh
NzA3NDg4ZDFkLi4yNjIxMWZhOTY3ODA2YTQ0ZmFhZDA2OGEwNzhiMTM2MzE4ZWU0YjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05OTIsMTAgKzk5Miw2IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IGNvcmUobV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJh
bWUpLnNpemUoKSwgYmFja2dyb3VuZENvbG9yLCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAv
KiBmaXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAzM2E4NmNlNTdmZjE0ODVhYzI3MDE5NzBkNDQwZmIyM2NkMzg0NTI0
Li44NTZmNTI1ZmRjZTkzZGRmNGZlN2ZkZWFmZjQyNTVlNWZmNTQ3NzUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTE3Niw3ICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxh
Y2VtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380956</attachid>
            <date>2019-10-14 21:00:12 -0700</date>
            <delta_ts>2019-10-14 22:29:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202929-20191014210007.patch</filename>
            <type>text/plain</type>
            <size>70625</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWViNGIzZmU4ODc5Nzgx
M2JjZjMwZTUyYjRjZGY4OTQ2OTg5YjU1My4uN2U4MDc5MGJhMjc0ZThlMTA2MGIxMWU3NWI0NzQ0
MjgzOWEzMDNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gSGF2ZSBXZWJCYWNr
Rm9yd2FyZENhY2hlIGNsYXNzIGNvb3JkaW5hdGUgcGFnZSBjYWNoaW5nIGluIGFsbCBXZWJQcm9j
ZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjkyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYyNTA0MjE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBEcm9wIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmdW5jdGlvbiBhcyBpdCBpcyBubyBsb25nZXIgbmVlZGVk
LgorICAgICAgICBJbnN0ZWFkLCB3ZSBub3cgY2FsbCBIaXN0b3J5SXRlbTo6bm90aWZ5Q2hhbmdl
ZCgpIHdoZW5ldmVyIEhpc3RvcnlJdGVtOjptX2NhY2hlZFBhZ2UKKyAgICAgICAgY2hhbmdlcy4g
VGhpcyBjb21tdW5pY2F0ZXMgdG8gdGhlIFVJUHJvY2VzcyB3aGV0aGVyIG9yIG5vdCBhIEhpc3Rv
cnlJdGVtIGhhcyBhbgorICAgICAgICBhc3NvY2lhdGVkIENhY2hlZFBhZ2UuCisKKyAgICAgICAg
SSBhbHNvIGFkZGVkIG1vcmUgcmVsZWFzZSBsb2dnaW5nIHRvIHRoZSBQYWdlQ2FjaGUgYW5kIHJl
bmFtZWQgaXRzIGxvZ2dpbmcgY2hhbm5lbAorICAgICAgICBmcm9tIFBhZ2VDYWNoZSB0byBXZWJC
YWNrRm9yd2FyZENhY2hlIHRvIG1hdGNoIHRoZSBVSVByb2Nlc3MncyBjaGFubmVsLgorCisgICAg
ICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpzdHJpbmcgY29uc3QpOgorICAgICAgICAq
IGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6
OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpzZXRDYWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlJdGVtOjp0YWtlQ2FjaGVkUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9IaXN0
b3J5SXRlbS5oOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNhY2hlOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6cmVtb3ZlQWxsSXRl
bXNGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNo
ZTo6cHJ1bmUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgor
CiAyMDE5LTEwLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QmFjay9Gb3J3YXJkIGNhY2hlIGRvZXMgbm90IHdvcmsgYWZ0ZXIgZG9pbmcgYSBmYXZvcml0ZSBu
YXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNTU0NmIzNWU2YjQzNDZhMmUxMTUxZGFiNjkyNzFlMDUw
M2NkYzQuLjM1ZjljYzI5ODQzZjI3MmQyMDIzM2IzNWU5NmQ0ZmZhMTZkYWVlMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTM5IEBACisyMDE5LTEwLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dLMl0gSGF2ZSBXZWJCYWNrRm9yd2FyZENhY2hlIGNsYXNzIGNv
b3JkaW5hdGUgcGFnZSBjYWNoaW5nIGluIGFsbCBXZWJQcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjkyOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTYyNTA0MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBIYXZlIFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2xhc3MgY29vcmRpbmF0ZSBw
YWdlIGNhY2hpbmcgaW4gYWxsIFdlYlByb2Nlc3Nlcy4gVG8gYWNoaWV2ZSB0aGlzLCB0aGUKKyAg
ICAgICAgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAxLiBXaGVuZXZlciBI
aXN0b3J5SXRlbTo6bV9jYWNoZWRQYWdlIGNoYW5nZXMgaW4gV2ViQ29yZSwgd2Ugbm90aWZ5IHRo
ZSBjbGllbnQgdGhhdCB0aGUgSGlzdG9yeUl0ZW0KKyAgICAgICAgICAgaGFzIGNoYW5nZWQuIEkg
YWRkZWQgYSAiaGFzQ2FjaGVkUGFnZSIgYm9vbGVhbiB0byB0aGUgaXRlbSBpbmZvIGJlaW5nIHBh
c3NlZCB0aGUgdGhlIFVJUHJvY2VzcworICAgICAgICAgICB0aGF0IGlzIHNldCBiYXNlZCBvbiB3
aGV0aGVyIG9yIG5vdCBIaXN0b3J5SXRlbTo6bV9jYWNoZWRQYWdlIGlzIG51bGwuCisgICAgICAg
IDIuIFRoZSBXZWJCYWNrRm9yd2FyZENhY2hlIG5vdyBjb250YWlucyBXZWJCYWNrRm9yd2FyZENh
Y2hlRW50cnkgb2JqZWN0cyBpbnN0ZWFkIG9mIFN1c3BlbmRlZFBhZ2UKKyAgICAgICAgICAgb2Jq
ZWN0cy4gQSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgbWF5IGhhdmUgYSBTdXNwZW5kZWRQYWdl
IG9yIG5vdC4gQXMgYSByZXN1bHQsIHdlIGNhbiBub3cKKyAgICAgICAgICAgYWRkIHRoZSB0aGUg
YmFjay9mb3J3YXJkIGNhY2hlIENhY2hlZFBhZ2UgZW50cmllcyBmcm9tIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MsIHdoaWNoIGRvIG5vdCBoYXZlCisgICAgICAgICAgIGEgU3VzcGVuZGVkUGFnZVBy
b3h5IGluIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIDMuIE5vdyB0aGF0IFdlYkJhY2tGb3J3YXJk
Q2FjaGUgaXMgYXdhcmUgb2YgYWxsIENhY2hlZFBhZ2VzLCBpdCBjYW4gcHJvcGVybHkgZW5mb3Jj
ZSBhIGNhY2hlIGNhcGFjaXR5CisgICAgICAgICAgIGFjcm9zcyBjYWxsIHByb2Nlc3Nlcy4gV2hl
bmV2ZXIgYSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkgaXMgcHJ1bmVkIGZyb20gdGhlIGNhY2hl
IGFuZCB0aGlzIGVudHJ5CisgICAgICAgICAgIGRvZXMgbm90IGhhdmUgYSBTdXNwZW5kZWRQYWdl
UHJveHksIHdlIHNlbmQgYW4gSVBDIHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdG8gcmVtb3Zl
IHRoaXMKKyAgICAgICAgICAgY2FjaGVkIHBhZ2UgZnJvbSB0aGUgUGFnZUNhY2hlIGluIFdlYkNv
cmUuCisKKyAgICAgICAgUHJldmlvdXNseSwgYXMgc29vbiBhcyB3ZSB3b3VsZCBjYWNoZSBhIHBh
Z2UgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2Ugd291bGQgc2VuZCBhbiBJUEMgdG8gdGhl
CisgICAgICAgIFVJUHJvY2VzcyBzbyB0aGF0IGl0IHdvdWxkIGNsZWFyIHRoZSBQYWdlQ2FjaGUg
aW4gYW55IHByZXZpb3VzIFdlYkNvbnRlbnQgcHJvY2Vzcy4gVGhpcyB3YXMgYSBzdG9wLWdhcAor
ICAgICAgICBtZWFzdXJlIHRvIGF2b2lkIGJsb3dpbmcgdXAgbWVtb3J5IGluIGEgbXVsdGktcHJv
Y2VzcyBtb2RlbCBieSBrZWVwaW5nIGEgUGFnZUNhY2hlIGFyb3VuZCBpbiBhbGwKKyAgICAgICAg
V2ViQ29udGVudCBwcm9jZXNzLiBUaGlzIHdvdWxkIG1ha2Ugc3VyZSBvbmx5IG9uZSBwcm9jZXNz
IGNvdWxkIGhhdmUgYSBQYWdlQ2FjaGUgYXQgYW55IHBvaW50IGluIHRpbWUuCisgICAgICAgIFRo
aXMgbG9naWMgaXMgbm93IGRyb3BwZWQgc2luY2UgdGhlIFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2Fu
IGtlZXAgdHJhY2sgb2YgYWxsIGNhY2hlZCBwYWdlcyBhY3Jvc3MgYWxsCisgICAgICAgIHByb2Nl
c3NlcyBhbmQgZW5mb3JjZSBhIGNyb3NzLXByb2Nlc3MgbGltaXQgb24gdGhlIG51bWJlciBvZiBj
YWNoZWQgcGFnZXMuIFRoaXMgbWVhbnMgd2UgY2FuIG5vdyBoYXZlCisgICAgICAgIFBhZ2VDYWNo
ZSBlbnRyaWVzIGFjcm9zcyBzZXZlcmFsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLCBhcyBsb25nIGFz
IHdlIGRvIG5vdCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyCisgICAgICAgIG9mIGNhY2hlZCBw
YWdlcy4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgQWRkIG5ldyBC
YWNrRm9yd2FyZENhY2hlIGxvZ2dpbmcgY2hhbm5lbC4KKworICAgICAgICAqIFNoYXJlZC9TZXNz
aW9uU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgIEFk
ZCBuZXcgYml0IHRvIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0byBpbmRpY2F0ZSB3aGV0aGVy
IGEgSGlzdG9yeUl0ZW0gaGFzIGFuIGFzc29jaWF0ZWQKKyAgICAgICAgQ2FjaGVkUGFnZSBvciBu
b3QuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6d2FzUmVtb3Zl
ZEZyb21CYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpyZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpsb2dnaW5nU3RyaW5nKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpiYWNrRm9yd2FyZENhY2hlRW50cnkgY29uc3Qp
OgorICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIG5vdyBvd24gYSBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkgaW5zdGVhZCBvZiBzaW1wbHkgYQorICAgICAgICBTdXNwZW5kZWRQYWdlLiBU
aGUgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IG1heSBoYXZlIGEgU3VzcGVuZGVkUGFnZSBvciBu
b3QuCisgICAgICAgIE5vdywgd2hlbmV2ZXIgYSBIaXN0b3J5SXRlbSBoYXMgYSBDYWNoZWRQYWdl
IGluIFdlYkNvcmUsIGl0cyBjb3JyZXNwb25kaW5nCisgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0gaW4gdGhlIFVJUHJvY2VzcyBoYXMgYW4gYXNzb2NpYXRlZCBXZWJCYWNrRm9yd2FyZENh
Y2hlRW50cnkKKyAgICAgICAgd2hldGhlciB3ZSBoYXZlIGEgU3VzcGVuZGVkUGFnZVByb3h5IGZv
ciBpdCBpbiB0aGUgVUlQcm9jZXNzIG9yIG5vdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBQYXNzIHRoZSBQYWdlQ2FjaGUgY2Fw
YWNpdHkgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBvbiBjcmVhdGlvbiwgc28gdGhhdCBpdCBt
YXRjaGVzIHRoZQorICAgICAgICBjYXBhY2l0eSBvZiB0aGUgV2ViQmFja0ZvcndhcmRDYWNoZSBp
biB0aGUgVUlQcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNr
Rm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKToK
KyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgU3Rv
cCBzdG9yaW5nIHRoZSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIG9uIHRoZSBTdXNwZW5kZWRQYWdl
UHJveHkuIFRoaXMgYXZvaWRzIGhhdmluZyB0bworICAgICAgICBrZWVwIHRoaXMgcG9pbnRlciB1
cCB0byBkYXRlLiBXZSBkbyBub3QgcmVhbGx5IG5lZWQgaXQgYXMgd2UgY2FuIG5vdyBhc2sgdGhl
IFdlYkJhY2tGb3J3YXJkQ2FjaGUKKyAgICAgICAgdG8gY2xlYXIgYW4gZW50cnkgYnkgZ2l2aW5n
IGl0IGEgU3VzcGVuZGVkUGFnZVByb3h5IHRvIG1hdGNoLiBHaXZlbiBob3cgbWFueSBlbnRyaWVz
IHdlIGhhdmUgYXQKKyAgICAgICAgbW9zdCBpbiB0aGUgY2FjaGUgKDIpLCBpdGVyYXRpbmcgb3Zl
ciB0aGVtIHRvIGZpbmQgdGhlIG9uZSB3aXRoIGEgZ2l2ZW4gc3VzcGVuZGVkIHBhZ2UgaXMgY2hl
YXAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNo
ZSk6CisKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNpdHkp
OgorICAgICAgICBTZW5kIGFuIElQQyBvZiBlYWNoIFdlYlByb2Nlc3Mgd2hlbmV2ZXIgdGhlIGNh
cGFjaXR5IG9mIHRoZSBXZWJCYWNrRm9yd2FyZENhY2hlIGNoYW5nZXMsIGluIG9yZGVyCisgICAg
ICAgIHRvIHVwZGF0ZSB0aGUgY2FwYWNpdHkgb2YgdGhlIFBhZ2VDYWNoZSBpbiB0aG9zZSBwcm9j
ZXNzZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnRha2VTdXNwZW5kZWRQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRy
aWVzRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJl
bW92ZUVudHJpZXNNYXRjaGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2Fj
aGU6OmNsZWFyKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmg6
CisgICAgICAgIFVzZSBhIFZlY3RvciBpbnN0ZWFkIG9mIGEgTGlzdEhhc2hTZXQgdG8gc3RvcmUg
dGhlIGVudHJpZXMuIEdpdmVuIHRoYXQgd2UgaGF2ZSBhdCBtb3N0IDIgZW50cmllcywgdXNpbmcK
KyAgICAgICAgYSBWZWN0b3Igd2lsbCBsaWtlbHkgYmUgbW9yZSBlZmZpY2llbnQgYW5kIGRlZmlu
aXRlbHkgdXNlIGxlc3MgbWVtb3J5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5OjpiYWNrRm9yd2FyZENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5OjpXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkpOgorICAgICAg
ICBBZGQgbmV3IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSBhYnN0cmFjdGlvbiB0byBtYXRjaCB0
aGUgY29uY2VwdCBvZiBXZWJDb3JlOjpDYWNoZWRQYWdlIGluIHRoZSBVSVByb2Nlc3MuCisgICAg
ICAgIEEgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IG1heSBoYXZlIGEgU3VzcGVuZGVkUGFnZVBy
b3h5IGFzc29jaWF0ZWQgd2l0aCBpdCBpbiB0aGUgVUlQcm9jZXNzIG9yIG5vdC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgRHJvcCBkaWRTYXZlVG9QYWdlQ2FjaGUgYXMgaXQgaXMgbm8g
bG9uZ2VyIG5lY2Vzc2FyeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICBXaGVuZXZlciB3ZSBnZXQg
YSBCYWNrRm9yd2FyZEl0ZW0gZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBub3cgY2hl
Y2sgaXQgbm93IGhhcworICAgICAgICBhbiBhc3NvY2lhdGVkIENhY2hlZFBhZ2Ugb3Igbm90LiBJ
ZiBpdCBkb2VzLCB3ZSBtYWtlIHN1cmUgd2UgYWRkIGEgY29ycmVzcG9uZGluZworICAgICAgICBl
bnRyeSBpbiB0aGUgV2ViQmFja0ZvcndhcmRDYWNoZSBzbyB0aGF0IHRoZSBVSVByb2Nlc3Mga25v
d3MgYWJvdXQgaXQuIElmIGl0IG5vIGxvbmdlcgorICAgICAgICBoYXMgYSBDYWNoZWRQYWdlIGFu
ZCB3ZSBkb24ndCBoYXZlIGEgU3VzcGVuZGVkUGFnZVByb3h5IGZvciB0aGlzIGl0ZW0gaW4gdGhl
IFVJUHJvY2VzcywKKyAgICAgICAgdGhlbiB3ZSByZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZW50
cnkgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLiBOb3RlIHRoYXQgd2UgZG9uJ3QKKyAgICAg
ICAgZHJvcCBTdXNwZW5kZWRQYWdlUHJveHkgb2JqZWN0cyBpbiB0aGUgVUlQcm9jZXNzIHNpbXBs
eSBiZWNhdXNlIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgQ2FjaGVkUGFnZSBpbiB0aGUg
V2ViUHJvY2VzcyBpcyBnb25lLCB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvci4gVGhpcyBp
cyBhbgorICAgICAgICBvcHRpbWl6YXRpb24gdGhhdCBpcyB1c2VmdWwgb24gaU9TLCB3aGVyZSB3
ZSBkbyBub3QgaGF2ZSBhIFdlYlByb2Nlc3NDYWNoZSwgc2luY2Ugd2UKKyAgICAgICAgY2FuIHJl
dXNlIHByb2Nlc3NlcyBmcm9tIFN1c3BlbmRlZFBhZ2VQcm94aWVzIG9uIG5hdmlnYXRpb24uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9C
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEJhY2tGb3J3YXJk
Q2FjaGVDYXBhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyQ2FjaGVk
UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEwLTEyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQmFjay9Gb3J3YXJkIGNhY2hlIGRvZXMg
bm90IHdvcmsgYWZ0ZXIgZG9pbmcgYSBmYXZvcml0ZSBuYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNGJhNzFmYjgwMTc2OTE0OGU4NzM0YjlmYTA0NDU0Y2Y2YjgxNzY0
NS4uMmU3NzkyYTk0NzY2NGFmNGE2NDU5ODliNmY2NThjMzNhNGNkNDVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gSGF2ZSBXZWJCYWNrRm9yd2Fy
ZENhY2hlIGNsYXNzIGNvb3JkaW5hdGUgcGFnZSBjYWNoaW5nIGluIGFsbCBXZWJQcm9jZXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjkyOQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYyNTA0MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisKIDIwMTktMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NsaXBib2FyZCBBUEldIFJlZmFjdG9yIFBhc3RlYm9hcmQgaXRlbSBy
ZWFkaW5nIGZ1bmN0aW9ucyB0byB3b3JrIG9uIGJvdGggaU9TIGFuZCBtYWNPUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDIzM2Q1M2JjNTdmZjQwODQwMGExMTM2YmQxMjZjMDEzYjU5
MDE4MDYuLmZmZjkyYTBlNzc5ZWFjMGVhOWI3OWFmMDhhZmU3MGJkNGU5YTZmYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0xNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEhhdmUgV2ViQmFja0Zv
cndhcmRDYWNoZSBjbGFzcyBjb29yZGluYXRlIHBhZ2UgY2FjaGluZyBpbiBhbGwgV2ViUHJvY2Vz
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5
MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MjUwNDIxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKwogMjAxOS0xMC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICByZXF1ZXN0SWRsZUNhbGxiYWNrIGlzIG5vdCBlbmFibGVkIGluIER1bXBS
ZW5kZXJUcmVlIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKaW5kZXggMmRhZTUyY2U3MzIxMjJiYjQxMjZkMTY4YWVi
YjZhZWUxYzYwZmNjNi4uMzZkMTZlZjY5ODFkMGVkZjk4NTA4ZTQ1NzRmNDhiZDYxNDcwNTg2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyLmgKQEAgLTQyLDYgKzQyLDggQEAgc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIg
ewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIAorICAgIFN0cmluZyBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCks
ICctJywgaXRlbUlkZW50aWZpZXIudG9VSW50NjQoKSk7IH0KKwogI2lmICFMT0dfRElTQUJMRUQK
ICAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCA1OWEyNmI5YTg5MTM3ZWM0NTExMmEwOWFiMTg0
ZjFkZTRlODIxMTU1Li44ZjFlNGRhMDM2YTQyYjRiNWVmNzBhZjVlYmQxM2IwMzg2ZThmMjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTk4LDEzICsxOTgsMTEg
QEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKICAgICBpZiAoIW1faXNN
YWluRnJhbWUpCiAgICAgICAgIGZyYW1lLnBhZ2UoKS0+ZGVjcmVtZW50U3ViZnJhbWVDb3VudCgp
OwogCi0gICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci0K
ICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1faXNNYWluRnJhbWUpCi0gICAgICAgIExPRyhQYWdl
Q2FjaGUsICJGaW5pc2hlZCBjcmVhdGluZyBDYWNoZWRGcmFtZSBmb3IgbWFpbiBmcmFtZSB1cmwg
JyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgICAgICBMT0coQmFja0ZvcndhcmRDYWNo
ZSwgIkZpbmlzaGVkIGNyZWF0aW5nIENhY2hlZEZyYW1lIGZvciBtYWluIGZyYW1lIHVybCAnJXMn
IGFuZCBEb2N1bWVudExvYWRlciAlcFxuIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
bV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBMT0coUGFnZUNhY2hl
LCAiRmluaXNoZWQgY3JlYXRpbmcgQ2FjaGVkRnJhbWUgZm9yIGNoaWxkIGZyYW1lIHdpdGggdXJs
ICclcycgYW5kIERvY3VtZW50TG9hZGVyICVwXG4iLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2Fj
aGUsICJGaW5pc2hlZCBjcmVhdGluZyBDYWNoZWRGcmFtZSBmb3IgY2hpbGQgZnJhbWUgd2l0aCB1
cmwgJyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAppbmRleCAzYzA1
OWU2ODViODNmZDcwODkwYTNhZTY1ZmJhODBkNjI3MGU2MTU0Li5hNzkyMzRkYjJhZGJkZWFmYjY2
MGQzN2UyNzQ1MjIxZjRiZWRlN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmNwcApAQCAtMTcyLDYgKzE3MiwyMiBAQCBib29sIEhpc3RvcnlJdGVtOjpoYXNDYWNoZWRQYWdl
RXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2FjaGVkUGFnZSA/IG1fY2FjaGVkUGFnZS0+
aGFzRXhwaXJlZCgpIDogZmFsc2U7CiB9CiAKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldENhY2hlZFBh
Z2Uoc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+JiYgY2FjaGVkUGFnZSkKK3sKKyAgICBib29s
IHdhc0luUGFnZUNhY2hlID0gaXNJblBhZ2VDYWNoZSgpOworICAgIG1fY2FjaGVkUGFnZSA9IFdU
Rk1vdmUoY2FjaGVkUGFnZSk7CisgICAgaWYgKHdhc0luUGFnZUNhY2hlICE9IGlzSW5QYWdlQ2Fj
aGUoKSkKKyAgICAgICAgbm90aWZ5Q2hhbmdlZCgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q2Fj
aGVkUGFnZT4gSGlzdG9yeUl0ZW06OnRha2VDYWNoZWRQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9j
YWNoZWRQYWdlKTsKKyAgICBhdXRvIGNhY2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVk
UGFnZSwgbnVsbHB0cik7CisgICAgbm90aWZ5Q2hhbmdlZCgpOworICAgIHJldHVybiBjYWNoZWRQ
YWdlOworfQorCiBVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFVS
TCh7IH0sIG1fdXJsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRl
eCA4YWY5OGU0Yzk4MmYzOWIwYTY2YmQ2ZjYxNTI1N2UyYzAwMTY3NDA3Li5mODU1MDhmMTIzZGFl
MmNkZjliZmJkNTAzZmVlZTNlOTE2NDc5NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5oCkBAIC0yMTksNiArMjE5LDkgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBI
aXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9y
eUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUsIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpOwogCisg
ICAgdm9pZCBzZXRDYWNoZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiYmKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gdGFrZUNhY2hlZFBhZ2UoKTsKKwogICAgIEhp
c3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKICAgICBzdGF0aWMgaW50NjRfdCBnZW5l
cmF0ZVNlcXVlbmNlTnVtYmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5k
ZXggZTM1OTQyYzlkOWI0MTUwN2FlMDJmMDg5MzRjZThkMmFiZjZjODMxZS4uYjI2NDUxNjFmMWFi
MTY2OTFhZmFlNTg2ODY3ZmMwNzE2MmE5MmIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcApAQCAtNTcsNyArNTcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZp
bmUgUENMT0coLi4uKSBMT0coUGFnZUNhY2hlLCAiJSpzJXMiLCBpbmRlbnRMZXZlbCo0LCAiIiwg
bWFrZVN0cmluZyhfX1ZBX0FSR1NfXykudXRmOCgpLmRhdGEoKSkKKyNkZWZpbmUgUENMT0coLi4u
KSBMT0coQmFja0ZvcndhcmRDYWNoZSwgIiUqcyVzIiwgaW5kZW50TGV2ZWwqNCwgIiIsIG1ha2VT
dHJpbmcoX19WQV9BUkdTX18pLnV0ZjgoKS5kYXRhKCkpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBs
b2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3NhZ2UoRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CkBAIC00NjAsMTEgKzQ2MCwxNCBA
QCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2Uq
IHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMg
aW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0g
bWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFn
ZShtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5n
UmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0p
OwogICAgIH0KICAgICBwcnVuZShQcnVuaW5nUmVhc29uOjpSZWFjaGVkTWF4U2l6ZSk7CisKKyAg
ICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJs
ZSBpdGVtOiAlcywgc2l6ZTogJXUgLyAldSIsIGl0ZW0uaWRlbnRpZmllcigpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHBhZ2VDb3VudCgpLCBtYXhTaXplKCkpOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTQ3NywxMCArNDgwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBQ
YWdlQ2FjaGU6OnRha2UoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgfQogCiAg
ICAgbV9pdGVtcy5yZW1vdmUoJml0ZW0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdl
PiBjYWNoZWRQYWdlID0gV1RGTW92ZShpdGVtLm1fY2FjaGVkUGFnZSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UgPSBpdGVtLnRha2VDYWNoZWRQYWdlKCk7CisK
KyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiUGFnZUNhY2hlOjp0YWtlIGl0ZW06
ICVzLCBzaXplOiAldSAvICV1IiwgaXRlbS5pZGVudGlmaWVyKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgcGFnZUNvdW50KCksIG1heFNpemUoKSk7CiAKICAgICBpZiAoY2FjaGVkUGFnZS0+aGFz
RXhwaXJlZCgpIHx8IChwYWdlICYmIHBhZ2UtPmlzUmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoKSkp
IHsKLSAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIk5vdCByZXN0b3JpbmcgcGFnZSBmb3IgJXMgZnJv
bSBiYWNrL2ZvcndhcmQgY2FjaGUgYmVjYXVzZSBjYWNoZSBlbnRyeSBoYXMgZXhwaXJlZCIsIGl0
ZW0udXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQmFja0Zvcndh
cmRDYWNoZSwgIk5vdCByZXN0b3JpbmcgcGFnZSBmb3IgJXMgZnJvbSBiYWNrL2ZvcndhcmQgY2Fj
aGUgYmVjYXVzZSBjYWNoZSBlbnRyeSBoYXMgZXhwaXJlZCIsIGl0ZW0udXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01l
c3NhZ2UocGFnZSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpleHBpcmVkS2V5KCkpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC01MDAsNyArNTA1LDggQEAgdm9pZCBQYWdlQ2Fj
aGU6OnJlbW92ZUFsbEl0ZW1zRm9yUGFnZShQYWdlJiBwYWdlKQogICAgICAgICBhdXRvIGN1cnJl
bnQgPSBpdDsKICAgICAgICAgKytpdDsKICAgICAgICAgaWYgKCYoKmN1cnJlbnQpLT5tX2NhY2hl
ZFBhZ2UtPnBhZ2UoKSA9PSAmcGFnZSkgewotICAgICAgICAgICAgKCpjdXJyZW50KS0+bV9jYWNo
ZWRQYWdlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2Fj
aGUsICJQYWdlQ2FjaGU6OnJlbW92ZUFsbEl0ZW1zRm9yUGFnZSByZW1vdmluZyBpdGVtOiAlcywg
c2l6ZTogJXUgLyAldSIsICgqY3VycmVudCktPmlkZW50aWZpZXIoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBwYWdlQ291bnQoKSAtIDEsIG1heFNpemUoKSk7CisgICAgICAgICAgICAoKmN1cnJl
bnQpLT5zZXRDYWNoZWRQYWdlKG51bGxwdHIpOwogICAgICAgICAgICAgbV9pdGVtcy5yZW1vdmUo
Y3VycmVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTYsNyArNTIyLDcgQEAgQ2FjaGVkUGFn
ZSogUGFnZUNhY2hlOjpnZXQoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgfQog
CiAgICAgaWYgKGNhY2hlZFBhZ2UtPmhhc0V4cGlyZWQoKSB8fCAocGFnZSAmJiBwYWdlLT5pc1Jl
c291cmNlQ2FjaGluZ0Rpc2FibGVkKCkpKSB7Ci0gICAgICAgIExPRyhQYWdlQ2FjaGUsICJOb3Qg
cmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2Fj
aGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9y
ICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGly
ZWQiLCBpdGVtLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgbG9nUGFn
ZUNhY2hlRmFpbHVyZURpYWdub3N0aWNNZXNzYWdlKHBhZ2UsIERpYWdub3N0aWNMb2dnaW5nS2V5
czo6ZXhwaXJlZEtleSgpKTsKICAgICAgICAgcmVtb3ZlKGl0ZW0pOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTUzMSwxNSArNTM3LDE5IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1vdmUoSGlz
dG9yeUl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXRlbXMucmVtb3ZlKCZp
dGVtKTsKLSAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG51bGxwdHI7CisgICAgaXRlbS5zZXRDYWNo
ZWRQYWdlKG51bGxwdHIpOworCisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIlBh
Z2VDYWNoZTo6cmVtb3ZlIGl0ZW06ICVzLCBzaXplOiAldSAvICV1IiwgaXRlbS5pZGVudGlmaWVy
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50KCksIG1heFNpemUoKSk7CisKIH0K
IAogdm9pZCBQYWdlQ2FjaGU6OnBydW5lKFBydW5pbmdSZWFzb24gcHJ1bmluZ1JlYXNvbikKIHsK
ICAgICB3aGlsZSAocGFnZUNvdW50KCkgPiBtYXhTaXplKCkpIHsKICAgICAgICAgYXV0byBvbGRl
c3RJdGVtID0gbV9pdGVtcy50YWtlRmlyc3QoKTsKLSAgICAgICAgb2xkZXN0SXRlbS0+bV9jYWNo
ZWRQYWdlID0gbnVsbHB0cjsKKyAgICAgICAgb2xkZXN0SXRlbS0+c2V0Q2FjaGVkUGFnZShudWxs
cHRyKTsKICAgICAgICAgb2xkZXN0SXRlbS0+bV9wcnVuaW5nUmVhc29uID0gcHJ1bmluZ1JlYXNv
bjsKKyAgICAgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNoZSwgIlBhZ2VDYWNoZTo6cHJ1
bmUgcmVtb3ZpbmcgaXRlbTogJXMsIHNpemU6ICV1IC8gJXUiLCBvbGRlc3RJdGVtLT5pZGVudGlm
aWVyKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZUNvdW50KCksIG1heFNpemUoKSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCBhNzZkYzU1NGU2NWE1YjE1ZTIwMjhiZmQ0YTZiMjU4M2I3Njk5MDc3Li5lNTk2
ZmEwM2UxMWNiZmNjYzE1NjZkZWZkYmY3NzVkODJiNWQzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE2NCw3ICsxNjQsNiBAQCBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1l
TG9hZGVyQ2xpZW50IHsKICNlbmRpZgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpIGZpbmFsIHsgfQogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBmaW5h
bCB7IH0KICAgICB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgZmluYWwgeyB9CiAKICAg
ICB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmZDg0Y2IxNmRkYTkwMDk3NzEwMDA1M2Q5
MGQ3ZDYyOWM3NWVlYjFjLi4wNzk3MjdlYWNkYjY3NTgxMzgzNzU4MjdkZDg1MDFhNzYyNTU4OGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTIwMTgsNyArMjAxOCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKG1f
bG9hZGluZ0Zyb21DYWNoZWRQYWdlICYmIGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkKICAg
ICAgICAgY2FjaGVkUGFnZSA9IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkudGFrZSgqaGlzdG9yeSgp
LnByb3Zpc2lvbmFsSXRlbSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CiAKLSAgICBMT0coUGFnZUNhY2hl
LCAiV2ViQ29yZUxvYWRpbmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZy
b20gcHJldmlvdXMgVVJMICclcycgdG8gbmV3IFVSTCAnJXMnIHdpdGggY2FjaGVkIHBhZ2UgJXAi
LCBtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKKyAg
ICBMT0coQmFja0ZvcndhcmRDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21t
aXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVz
JyB3aXRoIGNhY2hlZCBwYWdlICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgp
LmRhdGEoKSA6ICIiLAogICAgICAgICBwZGwgPyBwZGwtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiPG5vIHByb3Zpc2lvbmFsIERvY3VtZW50
TG9hZGVyPiIsIGNhY2hlZFBhZ2UuZ2V0KCkpOwogCkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGNvbgogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lvbmFsSXRl
bUZyb21DYWNoZWRQYWdlKCkKIHsKICAgICBEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxMb2Fk
ZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7Ci0gICAgTE9HKFBhZ2VDYWNoZSwgIldl
YkNvcmVQYWdlQ2FjaGU6IExvYWRpbmcgcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAgd2l0
aCBVUkwgJyVzJyBmcm9tIENhY2hlZFBhZ2UiLCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCks
IHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJX
ZWJDb3JlUGFnZUNhY2hlOiBMb2FkaW5nIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyICVwIHdp
dGggVVJMICclcycgZnJvbSBDYWNoZWRQYWdlIiwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
LCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcHJlcGFyZUZvckxvYWRTdGFydCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjNzMy
Y2MwMDIzMTdhYTA2ZGE1YmQyYTg2ZjQ5ZDkxZWUyZTljMzEuLjhjN2YxNzVmMDhjOWQxNGJkM2Zm
MTUyYzI2MzE2MWIwMGVmYmIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0yNzgsNyArMjc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdmlydHVh
bCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN0b3JlRnJvbVBhZ2VDYWNoZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEJlY29tZUZyYW1lc2V0KGJvb2wpID0gMDsgLy8gQ2FuIGNoYW5nZSBkdWUgdG8gbmF2aWdhdGlv
biBvciBET00gbW9kaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDlk
MzkxMjNkM2M4OGRjYmFiMjFhNzQyMTQxZTJhZDlmYTBlMmVjZjAuLjIyYjVjMDQ2YjkxNGQ2ZWQy
MGM2Mjg4ZWM0ZGUzNWUxZTc3NjJiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAg
LTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oQW5pbWF0aW9ucykgXAog
ICAgIE0oQXBwbGVQYXkpIFwKICAgICBNKEFyY2hpdmVzKSBcCisgICAgTShCYWNrRm9yd2FyZENh
Y2hlKSBcCiAgICAgTShDbGlwUmVjdHMpIFwKICAgICBNKENvbXBvc2l0aW5nKSBcCiAgICAgTShD
b21wb3NpdGluZ092ZXJsYXApIFwKQEAgLTgwLDcgKzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIE0oTWVzc2FnZVBvcnRzKSBcCiAgICAgTShOZXR3b3JrKSBcCiAgICAgTShOb3RZZXRJ
bXBsZW1lbnRlZCkgXAotICAgIE0oUGFnZUNhY2hlKSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dp
bmcpIFwKICAgICBNKFBsYXRmb3JtTGVha3MpIFwKICAgICBNKFBsdWdpbnMpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKaW5kZXggN2FhOWM3MjMzYTQzOGQ2YTk4MjQ5ZGZmYmYwNDcwNjJlZTRj
MTY3NC4uMjk2ZGU4NmU2MWUyOTJmN2ViM2Y0NDg2NWM1NzY0ZDliNDMwMzcyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShB
dXRvbWF0aW9uSW50ZXJhY3Rpb25zKSBcCiAgICAgTShBY3Rpdml0eVN0YXRlKSBcCiAgICAgTShC
YWNrRm9yd2FyZCkgXAorICAgIE0oQmFja0ZvcndhcmRDYWNoZSkgXAogICAgIE0oQ2FjaGVTdG9y
YWdlKSBcCiAgICAgTShDb250ZW50T2JzZXJ2YXRpb24pIFwKICAgICBNKENvbnRleHRNZW51KSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBiMzcwNjJjMTM4OTI5NWY0
M2U5MThhNjQ2NmEwNjY5YzQ1OTUwMjEyLi44MjE4YjNlYjZkODk0MjcyYzY4OTQ3NTFlOWE2ODVm
ZTYwMDFiMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKQEAgLTIyOSw2
ICsyMjksNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CiAgICAg
ZW5jb2RlciA8PCBwYWdlU3RhdGU7CisgICAgZW5jb2RlciA8PCBoYXNDYWNoZWRQYWdlOwogfQog
CiBPcHRpb25hbDxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI0Myw2ICsyNDQsOSBAQCBP
cHRpb25hbDxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZTo6ZGVjb2RlKElQQzo6RGVjb2RlcgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBh
Z2VTdGF0ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5oYXNDYWNoZWRQYWdlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0
YXRlLmgKaW5kZXggYTMyOWY5NTMzMTA1NjNmY2NhNWRmYzZjMzYwZGI1ZjMxMGViZTM3Yy4uOTkz
ZjBiYTc4MTBjMDUxNTg2MWFiNmM1ZTU0YWUwNjAwYWU4YTg0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2Vzc2lvblN0YXRlLmgKQEAgLTEzNyw2ICsxMzcsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgIFJl
ZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90OwogI2VuZGlmCisgICAgYm9vbCBoYXNDYWNoZWRQ
YWdlIHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RTdGF0ZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGIw
ODI1YWY4NmVhZTRhNzJkY2QxNGU3MmI4MDk4M2QzZmQwYjgxYjUuLjU3ODg0ODhmMzNjZDJhYjhl
ZGU0OTg3MmRjNjA0M2M2NGQ4Njg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJT
dXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCisj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVi
dWdVdGlsaXRpZXMuaD4KQEAgLTU0LDYgKzU1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
fldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKQogewogICAgIEFTU0VSVChhbGxJdGVtcygpLmdldCht
X2l0ZW1TdGF0ZS5pZGVudGlmaWVyKSA9PSB0aGlzKTsKICAgICBhbGxJdGVtcygpLnJlbW92ZSht
X2l0ZW1TdGF0ZS5pZGVudGlmaWVyKTsKKyAgICByZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgp
OwogfQogCiBIYXNoTWFwPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qPiYgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6YWxsSXRlbXMoKQpAQCAtMTYwLDM4
ICsxNjIsMzAgQEAgYm9vbCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNDbG9uZShjb25z
dCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBvdGhlcikKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjp3YXNSZW1vdmVkRnJvbUJhY2tGb3J3YXJkTGlzdCgpCiB7Ci0gICAgaWYgKG1fc3Vz
cGVuZGVkUGFnZSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZENhY2hlKCku
cmVtb3ZlRW50cnkoKnRoaXMpOwotICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlKTsKKyAgICBy
ZW1vdmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06OnNldFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4mJiBzdXNwZW5kZWRQYWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpyZW1vdmVG
cm9tQmFja0ZvcndhcmRDYWNoZSgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSkKLSAgICAg
ICAgbV9zdXNwZW5kZWRQYWdlLT5jbGVhckJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKLQotICAgIG1f
c3VzcGVuZGVkUGFnZSA9IFdURk1vdmUoc3VzcGVuZGVkUGFnZSk7Ci0KLSAgICBpZiAobV9zdXNw
ZW5kZWRQYWdlKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tGb3J3YXJkTGlzdEl0
ZW0oKnRoaXMpOworICAgIGlmIChtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSkKKyAgICAgICAgbV9i
YWNrRm9yd2FyZENhY2hlRW50cnktPmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqdGhp
cyk7CisgICAgQVNTRVJUKCFtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VT
dXNwZW5kZWRQYWdlKCkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0QmFja0Zvcndh
cmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+JiYg
YmFja0ZvcndhcmRDYWNoZUVudHJ5KQogewotICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCi0gICAg
ICAgIG1fc3VzcGVuZGVkUGFnZS0+Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCk7Ci0gICAgcmV0
dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNwZW5kZWRQYWdlLCBudWxscHRyKTsKKyAgICBtX2JhY2tG
b3J3YXJkQ2FjaGVFbnRyeSA9IFdURk1vdmUoYmFja0ZvcndhcmRDYWNoZUVudHJ5KTsKIH0KIAog
U3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNwZW5kZWRQYWdl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworICAgIHJldHVy
biBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA/IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5LT5zdXNw
ZW5kZWRQYWdlKCkgOiBudWxscHRyOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAogY29uc3QgY2hh
ciogV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6bG9nZ2luZ1N0cmluZygpCiB7Ci0gICAgcmV0dXJu
IGRlYnVnU3RyaW5nKCJCYWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5sb2dTdHJpbmco
KSwgIiwgb3JpZ2luYWwgVVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQgVVJMICIsIHVy
bCgpLCBtX3N1c3BlbmRlZFBhZ2UgPyAiKGhhcyBhIHN1c3BlbmRlZCBwYWdlKSIgOiAiIik7Cisg
ICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJCYWNrL2ZvcndhcmQgaXRlbSBJRCAiLCBpdGVtSUQoKS5s
b2dTdHJpbmcoKSwgIiwgb3JpZ2luYWwgVVJMICIsIG9yaWdpbmFsVVJMKCksICIsIGN1cnJlbnQg
VVJMICIsIHVybCgpLCBtX2JhY2tGb3J3YXJkQ2FjaGVFbnRyeSA/ICIoaGFzIGEgYmFjay9mb3J3
YXJkIGNhY2hlIGVudHJ5KSIgOiAiIik7CiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYjJj
Zjc3MTM0ZTU2MjRmN2QxYmJiMDk0N2QzNmU0MTNjZGQyODIzMy4uNjY0MmUyMDA3ODQ4YzhhZGQ0
MGQ1NzNmMzQzZTkxNjE5ZWRlOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsK
K2NsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJhY2tG
b3J3YXJkTGlzdEl0ZW0+IHsKIHB1YmxpYzoKQEAgLTgxLDYgKzgyLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB3YXNSZW1vdmVkRnJvbUJhY2tGb3J3YXJkTGlzdCgpOwogCisgICAgV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5KiBiYWNrRm9yd2FyZENhY2hlRW50cnkoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tGb3J3YXJkQ2FjaGVFbnRyeS5nZXQoKTsgfQogICAgIFN1c3BlbmRlZFBhZ2VQcm94eSog
c3VzcGVuZGVkUGFnZSgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtOTAsMTYgKzky
LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIHJlbW92ZUZyb21CYWNrRm9yd2FyZENhY2hlKCk7CisKICAgICAvLyBXZWJCYWNrRm9yd2Fy
ZENhY2hlLgogICAgIGZyaWVuZCBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwotICAgIHZvaWQg
c2V0U3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFn
ZSgpOworICAgIHZvaWQgc2V0QmFja0ZvcndhcmRDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnk+JiYpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJMOwogICAgIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJC
YWNrRm9yd2FyZENhY2hlRW50cnk+IG1fYmFja0ZvcndhcmRDYWNoZUVudHJ5OwogfTsKIAogdHlw
ZWRlZiBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiBCYWNrRm9yd2FyZExpc3RJ
dGVtVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAxZTc0MzVjMTE2MzNhMWIxMmZhOWRjZDZlZDE3MTll
YjUxMDJiMzc5Li45ZWNhMGVmY2IyMWIyNTk3ZjBjZDk4YjY2NTk2ODlhYWUxYTJhZGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtOTAsNiArOTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0
ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOworICAgIGVu
Y29kZXIgPDwgYmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5OwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8
IHVpUHJvY2Vzc1NES1ZlcnNpb247CkBAIC0yNjksNiArMjcwLDggQEAgYm9vbCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9j
ZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja0ZvcndhcmRD
YWNoZUNhcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDFlY2U4MWNmYzg0YjZj
YjM1NjdjNDg1YTBhYjI5ZGJlMGJlZjdjZDUuLmY5ODA5MTExMmExZjU4MmMwYzRjYmQxN2ZkZmFh
ZGJjZDZmMDYzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsOwogCiAgICAg
ZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsIHsgSU5UX01BWCB9OworICAgIHVu
c2lnbmVkIGJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSB7IDAgfTsKIAogICAgIGJvb2wgc2hvdWxk
QWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRF
bmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGU5OGVjMGVh
NDgwOTQ4MGIzYTdlNDc4OTY1MTNjNDgwYzQ4Y2I3NzguLjhiMGI0MzBjNDFmZWFhNTllNGQwNTJm
YjJkNzUyZjJiMjRjZWIyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmgiCiAjaW5jbHVk
ZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMTYxLDggKzE2Miw4IEBAIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBXZWJCCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiIHdlYlBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9y
d2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0o
YXV0byYgaXRlbSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFn
ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoJnBhZ2UtPnByb2Nlc3MoKSA9PSBtX3Byb2Nlc3MucHRy
KCkpCisgICAgICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZENhY2hlRW50cnkgPSBpdGVtLmJhY2tG
b3J3YXJkQ2FjaGVFbnRyeSgpKSB7CisgICAgICAgICAgICBpZiAoYmFja0ZvcndhcmRDYWNoZUVu
dHJ5LT5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlm
aWVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiAmaXRlbSAhPSB0YXJnZXRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggODM1OGQyZjkwYjFhZTQwNGExZjRjMDBiMmJk
ZDhjM2MxMjhiZTkzYi4uN2Y4OWNlZWZjM2YyNmQ2ZGRhNjA0N2ZmZWQ0MTdhY2ViZDA0NDkwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC04MSw3ICs4MSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNl
PiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiAgICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIik7CiAgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lIik7CiAgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwot
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKICAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwogICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
Iik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIp
OwpAQCAtMTM2LDE4ICsxMzUsNiBAQCBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdl
UHJveHkoKQogICAgIG1fcHJvY2Vzcy0+ZGVjcmVtZW50U3VzcGVuZGVkUGFnZUNvdW50KCk7CiB9
CiAKLXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCi17Ci0gICAgQVNTRVJUKCFtX2JhY2tGb3J3YXJkTGlz
dEl0ZW0pOwotICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA9ICZpdGVtOwotfQotCi12b2lkIFN1
c3BlbmRlZFBhZ2VQcm94eTo6Y2xlYXJCYWNrRm9yd2FyZExpc3RJdGVtKCkKLXsKLSAgICBBU1NF
UlQobV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKLSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBu
dWxscHRyOwotfQotCiBXZWJCYWNrRm9yd2FyZENhY2hlJiBTdXNwZW5kZWRQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkQ2FjaGUoKSBjb25zdAogewogICAgIHJldHVybiBwcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS5iYWNrRm9yd2FyZENhY2hlKCk7CkBAIC0yNDUsMTIgKzIzMiw4IEBAIHZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVzdFRvU3VzcGVuZChTdXNwZW5zaW9uU3RhdGUg
bmV3U3VzcGVuc2lvCiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRP
dXQoKQogewotICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3RJdGVtKQotICAgICAgICByZXR1cm47
Ci0KICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkgZGVzdHJveWluZyB0aGUgc3VzcGVuZGVk
IHBhZ2UgYmVjYXVzZSBpdCBmYWlsZWQgdG8gc3VzcGVuZCBpbiB0aW1lIiwgdGhpcyk7Ci0gICAg
QVNTRVJUKG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpID09IHRoaXMpOwot
ICAgIGJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyeSgqbV9iYWNrRm9yd2FyZExpc3RJdGVt
KTsgLy8gV2lsbCBkZXN0cm95IHx0aGlzfC4KKyAgICBiYWNrRm9yd2FyZENhY2hlKCkucmVtb3Zl
RW50cnkoKnRoaXMpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8LgogfQogCiB2b2lkIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVu
ZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuaAppbmRleCA5ZjNhZTMzMThmZjU1ZmE4MjM3YjBjZDU1YzdlMDkwN2QzZTNmNDcyLi43NjRi
ZWRjNzdiZTgxYjQ1YjQ5MjY1YmExMTVhY2FmN2I1MDc3MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtNTYsMTAgKzU2LDYgQEAgcHVibGlj
OgogICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vz
cy5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KIAotICAgIHZvaWQgc2V0QmFja0ZvcndhcmRM
aXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7Ci0gICAgdm9pZCBjbGVhckJhY2tGb3J3
YXJkTGlzdEl0ZW0oKTsKLQotICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3YXJk
TGlzdEl0ZW0oKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07IH0KICAgICBXZWJCYWNr
Rm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgY29uc3Q7CiAKICAgICBib29sIHBhZ2VJ
c0Nsb3NlZE9yQ2xvc2luZygpIGNvbnN0OwpAQCAtODgsNyArODQsNiBAQCBwcml2YXRlOgogICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2Vi
UGFnZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKLSAgICBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0geyBudWxscHRyIH07CiAgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZyYW1lSUQ7CiAgICAgYm9vbCBtX2lzQ2xv
c2VkIHsgZmFsc2UgfTsKICAgICBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDQ2NDg3NjRjZmUyNDBjZjdhMGM3
NzhlYWIzZjllYTQxM2VlN2M1YmQuLjQwZmYxYzY5YzEzY2I1YmQ2MGMzMjM2OTNkYzIyMzlmZGNm
ZTdhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2Fj
aGUuY3BwCkBAIC0yNiwxNyArMjYsNzUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQmFja0Zv
cndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZSgpID0gZGVmYXVsdDsKK2NsYXNzIEVudHJ5
V2l0aFN1c3BlbmRlZFBhZ2UgZmluYWwgOiBwdWJsaWMgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
IHsKK3B1YmxpYzoKKyAgICBFbnRyeVdpdGhTdXNwZW5kZWRQYWdlKFdlYkJhY2tGb3J3YXJkQ2Fj
aGUmIGJhY2tGb3J3YXJkQ2FjaGUsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+
JiYgc3VzcGVuZGVkUGFnZSkKKyAgICAgICAgOiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoYmFj
a0ZvcndhcmRDYWNoZSkKKyAgICAgICAgLCBtX3N1c3BlbmRlZFBhZ2UoV1RGTW92ZShzdXNwZW5k
ZWRQYWdlKSkKKyAgICB7CisgICAgfQogCi1XZWJCYWNrRm9yd2FyZENhY2hlOjp+V2ViQmFja0Zv
cndhcmRDYWNoZSgpID0gZGVmYXVsdDsKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRl
ZFBhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7IH0KKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgp
IGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zdXNwZW5kZWRQYWdlLCBudWxscHRyKTsg
fQorICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gcHJvY2VzcygpLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpOyB9Cisg
ICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXNw
ZW5kZWRQYWdlLT5wcm9jZXNzKCk7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7Cit9OworCitjbGFzcyBFbnRyeVdp
dGhvdXRTdXNwZW5kZWRQYWdlIGZpbmFsIDogcHVibGljIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eSB7CitwdWJsaWM6CisgICAgRW50cnlXaXRob3V0U3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2Fy
ZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJiBiYWNrRm9yd2FyZEl0ZW1JRCwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KGJh
Y2tGb3J3YXJkQ2FjaGUpCisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRl
bnRpZmllcikKKyAgICAgICAgLCBtX2JhY2tGb3J3YXJkSXRlbUlEKGJhY2tGb3J3YXJkSXRlbUlE
KQorICAgIHsKKyAgICB9CisKKyAgICB+RW50cnlXaXRob3V0U3VzcGVuZGVkUGFnZSgpCisgICAg
eworICAgICAgICBhdXRvJiBwcm9jZXNzID0gdGhpcy0+cHJvY2VzcygpOworICAgICAgICBwcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQ
YWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbdG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCldIHsgfSk7CisgICAgfQorCisgICAgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Byb2Nlc3NJZGVudGlmaWVyOyB9CisgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKG1fcHJvY2Vzc0lkZW50aWZpZXIpOworICAgICAgICBBU1NF
UlQocHJvY2Vzcyk7CisgICAgICAgIHJldHVybiAqcHJvY2VzczsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+
IHRha2VTdXNwZW5kZWRQYWdlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzSWRlbnRpZmllcjsKKyAgICBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIG1fYmFja0ZvcndhcmRJdGVtSUQ7Cit9OworCitX
ZWJCYWNrRm9yd2FyZENhY2hlOjpXZWJCYWNrRm9yd2FyZENhY2hlKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCkKKyAgICA6IG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCit7Cit9CisKK1dl
YkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENhY2hlKCkKK3sKKyAgICBjbGVhcigp
OworfQogCiBpbmxpbmUgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVPbGRlc3RFbnRy
eSgpCiB7CkBAIC00Niw0OCArMTA0LDg1IEBAIGlubGluZSB2b2lkIFdlYkJhY2tGb3J3YXJkQ2Fj
aGU6OnJlbW92ZU9sZGVzdEVudHJ5KCkKIAogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpzZXRD
YXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSkKIHsKKyAgICBpZiAobV9jYXBhY2l0eSA9PSBjYXBh
Y2l0eSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jYXBhY2l0eSA9IGNhcGFjaXR5OwogICAg
IHdoaWxlIChzaXplKCkgPiBjYXBhY2l0eSkKICAgICAgICAgcmVtb3ZlT2xkZXN0RW50cnkoKTsK
KworICAgIG1fcHJvY2Vzc1Bvb2wuc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkobV9jYXBhY2l0eSkpOwogfQogCi12b2lk
IFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0
ZW0sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkK
K3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYgaXRlbSwgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4mJiBiYWNr
Rm9yd2FyZENhY2hlRW50cnkpCiB7CiAgICAgQVNTRVJUKGNhcGFjaXR5KCkpOworICAgIEFTU0VS
VChiYWNrRm9yd2FyZENhY2hlRW50cnkpOwogCi0gICAgaXRlbS5zZXRTdXNwZW5kZWRQYWdlKFdU
Rk1vdmUoc3VzcGVuZGVkUGFnZSkpOwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5hZGQoJml0
ZW0pOworICAgIGlmIChpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7CisgICAgICAgIEFT
U0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0pKTsKKyAgICAgICAgbV9p
dGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZUZpcnN0KCZpdGVtKTsKKyAgICB9CisKKyAgICBpdGVt
LnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShXVEZNb3ZlKGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSkp
OworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5hcHBlbmQoJml0ZW0pOwogCiAgICAgaWYgKHNp
emUoKSA+IGNhcGFjaXR5KCkpCiAgICAgICAgIHJlbW92ZU9sZGVzdEVudHJ5KCk7CiAgICAgQVNT
RVJUKHNpemUoKSA8PSBjYXBhY2l0eSgpKTsKKworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJk
Q2FjaGUsICJXZWJCYWNrRm9yd2FyZENhY2hlOjphZGRFbnRyeTogaXRlbTogJXMsIGhhc1N1c3Bl
bmRlZFBhZ2U6ICVkLCBzaXplOiAldSAvICV1IiwgaXRlbS5pdGVtSUQoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCAhIWl0ZW0uc3VzcGVuZGVkUGFnZSgpLCBzaXplKCksIGNhcGFjaXR5KCkpOwor
fQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVu
ZGVkUGFnZSkKK3sKKyAgICBhZGRFbnRyeShpdGVtLCBtYWtlVW5pcXVlPEVudHJ5V2l0aFN1c3Bl
bmRlZFBhZ2U+KCp0aGlzLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKSk7Cit9CisKK3ZvaWQgV2Vi
QmFja0ZvcndhcmRDYWNoZTo6YWRkRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgYWRk
RW50cnkoaXRlbSwgbWFrZVVuaXF1ZTxFbnRyeVdpdGhvdXRTdXNwZW5kZWRQYWdlPigqdGhpcywg
aXRlbS5pdGVtSUQoKSwgV1RGTW92ZShwcm9jZXNzSWRlbnRpZmllcikpKTsKIH0KIAogdm9pZCBX
ZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtKQogewogICAgIEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMoJml0ZW0p
KTsKLSAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKLSAgICBpdGVtLnNl
dFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92
ZUZpcnN0KCZpdGVtKTsKKyAgICBpdGVtLnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRy
KTsKKyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiV2ViQmFja0ZvcndhcmRDYWNo
ZTo6cmVtb3ZlRW50cnk6IGl0ZW06ICVzLCBzaXplOiAldSAvICV1IiwgaXRlbS5pdGVtSUQoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaXplKCksIGNhcGFjaXR5KCkpOworfQorCit2b2lkIFdl
YkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJ5KFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVu
ZGVkUGFnZSkKK3sKKyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoWyZzdXNwZW5kZWRQYWdlXShh
dXRvJiBpdGVtKSB7CisgICAgICAgIHJldHVybiBpdGVtLnN1c3BlbmRlZFBhZ2UoKSA9PSAmc3Vz
cGVuZGVkUGFnZTsKKyAgICB9KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4gV2ViQmFja0ZvcndhcmRDYWNoZTo6dGFrZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mIGl0ZW0pCitzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJCYWNrRm9y
d2FyZENhY2hlOjp0YWtlU3VzcGVuZGVkUGFnZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
KQogeworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJCYWNrRm9yd2FyZENh
Y2hlOjp0YWtlU3VzcGVuZGVkUGFnZTogaXRlbTogJXMiLCBpdGVtLml0ZW1JRCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworCiAgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250
YWlucygmaXRlbSkpOwotICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmUoJml0ZW0pOwot
ICAgIHJldHVybiBpdGVtLnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKGl0ZW0uYmFj
a0ZvcndhcmRDYWNoZUVudHJ5KCkpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGl0ZW0uYmFj
a0ZvcndhcmRDYWNoZUVudHJ5KCktPnRha2VTdXNwZW5kZWRQYWdlKCk7CisgICAgQVNTRVJUKHN1
c3BlbmRlZFBhZ2UpOworICAgIHJlbW92ZUVudHJ5KGl0ZW0pOworICAgIHJldHVybiBzdXNwZW5k
ZWRQYWdlOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZW1vdmVFbnRyaWVzTWF0
Y2hpbmcoWyZwcm9jZXNzXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiAmaXRlbS5zdXNw
ZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSAmcHJvY2VzczsKKyAgICByZW1vdmVFbnRyaWVzTWF0
Y2hpbmcoW3Byb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KV0oYXV0byYgZW50cnkpIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVF
bnRyeSgpKTsKKyAgICAgICAgcmV0dXJuIGVudHJ5LmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5w
cm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIH0pOwogfQogCiB2
b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25J
RF0oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1cm4gaXRlbS5zdXNwZW5kZWRQYWdlKCktPnBy
b2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOworICAg
ICAgICByZXR1cm4gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CiAgICAgfSk7CiB9CiAKQEAg
LTEwMCwyMSArMTk1LDIxIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmll
c0ZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6
OnJlbW92ZUVudHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKT4mIG1hdGNoZXMpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9pdGVtc1dpdGhD
YWNoZWRQYWdlLmJlZ2luKCk7IGl0ICE9IG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5lbmQoKTspIHsK
LSAgICAgICAgYXV0byBjdXJyZW50ID0gaXQ7Ci0gICAgICAgICsraXQ7Ci0gICAgICAgIGlmICht
YXRjaGVzKCoqY3VycmVudCkpIHsKLSAgICAgICAgICAgICgqY3VycmVudCktPnNldFN1c3BlbmRl
ZFBhZ2UobnVsbHB0cik7Ci0gICAgICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3Zl
KGN1cnJlbnQpOworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmVBbGxNYXRjaGluZyhb
Jl0oYXV0byogaXRlbSkgeworICAgICAgICBpZiAobWF0Y2hlcygqaXRlbSkpIHsKKyAgICAgICAg
ICAgIGl0ZW0tPnNldEJhY2tGb3J3YXJkQ2FjaGVFbnRyeShudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIoKQogeworICAgIFJF
TEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhciIp
OwogICAgIGF1dG8gaXRlbXNXaXRoQ2FjaGVkUGFnZSA9IFdURk1vdmUobV9pdGVtc1dpdGhDYWNo
ZWRQYWdlKTsKICAgICBmb3IgKGF1dG8qIGl0ZW0gOiBpdGVtc1dpdGhDYWNoZWRQYWdlKQotICAg
ICAgICBpdGVtLT5zZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOworICAgICAgICBpdGVtLT5zZXRC
YWNrRm9yd2FyZENhY2hlRW50cnkobnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaAppbmRl
eCA0ZGYxOWFkNGFlNzI3MDhiZjAwMWU1M2ZkZjI3MTZkNDNhZmI4MWU3Li5jMWUxMTVhMTk0MDk1
MzYwZTRkZDk5NGYxM2Y2NDFiZDlmYWM0ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRDYWNoZS5oCkBAIC0yNSwyMSArMjUsMjQgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OworY2xhc3MgV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBj
bGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBXZWJCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgZXhwbGljaXQgV2ViQmFj
a0ZvcndhcmRDYWNoZShXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5XZWJCYWNrRm9yd2FyZENhY2hl
KCk7CiAKICAgICB2b2lkIHNldENhcGFjaXR5KHVuc2lnbmVkKTsKQEAgLTUyLDE1ICs1NSwxOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25J
RCk7CiAKICAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICB2b2lkIGFkZEVudHJ5KFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9p
ZCByZW1vdmVFbnRyeShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KTsKKyAgICB2b2lkIHJlbW92ZUVudHJ5KFN1c3BlbmRlZFBhZ2VQcm94eSYpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRha2VTdXNwZW5kZWRQYWdlKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZU9sZGVzdEVudHJ5
KCk7CiAgICAgdm9pZCByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+Jik7CisgICAgdm9pZCBhZGRFbnRyeShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeT4m
Jik7CiAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKICAgICB1bnNpZ25lZCBt
X2NhcGFjaXR5IHsgMCB9OwotICAgIExpc3RIYXNoU2V0PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
PiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2U7CisgICAgVmVjdG9yPFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qLCAyPiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDU3YTMxMzQyMWZmZTA2MzI5MzIxOTJhYTJmYzRjODRhNTdiMzcw
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU3VzcGVuZGVkUGFn
ZVByb3h5OworY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94
eTsKKworY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkoKSA9IGRlZmF1bHQ7CisKKyAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENh
Y2hlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hlOyB9CisKKyAgICB2aXJ0dWFs
IFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRha2VTdXNwZW5kZWRQYWdl
KCkgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkoV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSkKKyAgICAg
ICAgOiBtX2JhY2tGb3J3YXJkQ2FjaGUoYmFja0ZvcndhcmRDYWNoZSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIG1fYmFja0ZvcndhcmRDYWNoZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggODJlMmM0ZjdiZTE4MWNlMjNkZDU1OTg3ZDgzOTkwMDZhOWQzNWQ0
MS4uNTFhNDhlNmQ1ZTM3NGJjN2NlNTMyYmViMjVlMDhmM2E3OGViMzU5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yOTUyLDcgKzI5NTIsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9jZXNz
IHRvIGJlIHVzZWQgZm9yIHRoZSBuYXZpZ2F0aW9uIGRvZXMgbm90IGdldCBzaHV0RG93biBub3cg
ZHVlIHRvIGRlc3Ryb3lpbmcgU3VzcGVuZGVkUGFnZVByb3h5IG9yIFByb3Zpc2lvbmFsUGFnZVBy
b3h5IG9iamVjdHMuCiAgICAgICAgICAgICBhdXRvIHByZXZlbnROYXZpZ2F0aW9uUHJvY2Vzc1No
dXRkb3duID0gcHJvY2Vzc0Zvck5hdmlnYXRpb24tPm1ha2VTY29wZVByZXZlbnRpbmdTaHV0ZG93
bigpOwogCi0gICAgICAgICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3Bl
bmRlZFBhZ2UgPyBiYWNrRm9yd2FyZENhY2hlKCkudGFrZUVudHJ5KCpkZXN0aW5hdGlvblN1c3Bl
bmRlZFBhZ2UtPmJhY2tGb3J3YXJkTGlzdEl0ZW0oKSkgOiBudWxscHRyOworICAgICAgICAgICAg
QVNTRVJUKCFkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgfHwgbmF2aWdhdGlvbi0+dGFyZ2V0SXRl
bSgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3RpbmF0aW9uU3VzcGVu
ZGVkUGFnZSA/IGJhY2tGb3J3YXJkQ2FjaGUoKS50YWtlU3VzcGVuZGVkUGFnZSgqbmF2aWdhdGlv
bi0+dGFyZ2V0SXRlbSgpKSA6IG51bGxwdHI7CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVk
UGFnZS5nZXQoKSA9PSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpOwogICAgICAgICAgICAgaWYg
KHN1c3BlbmRlZFBhZ2UgJiYgc3VzcGVuZGVkUGFnZS0+cGFnZUlzQ2xvc2VkT3JDbG9zaW5nKCkp
CiAgICAgICAgICAgICAgICAgc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKQEAgLTgwMzQsMTEg
KzgwMzYsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhdmVUb1BhZ2VD
YWNoZSgpCi17Ci0gICAgbV9wcm9jZXNzLT5kaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLX0KLQogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgcGlubmluZykKIHsKICAgICBpZiAobV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgPT0gcGlu
bmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY5NDg4ZGU2
NzZkOGNmN2FiZjIwYTI2ZDE3NTQzMDI2OGQ5YmVlYS4uODQ4Zjk2ODM0NzY3ZDllZmQ2YjIxNTE2
M2RmZTIxODVlNTVhMDljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTEyNzgsOCArMTI3OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRmluaXNoQ2hlY2tp
bmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVj
a2luZ1Jlc3VsdD4mKTsKICAgICB2b2lkIGRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCBy
ZXF1ZXN0SUQpOwotCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKTsKICAgICAgICAgCiAg
ICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0Jl
aGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmlu
Z0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA4MzkzN2QyMDRlOGQwYmQ4YzJhMDU3ODExYjU3MjM0MmMwY2E2MDY5Li4yZDBiZmY4YzExNDNi
MWQ4NGVhNjNmOTRjYWQ4N2MyNDE3MDQxZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00NTMsOCArNDUzLDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIERpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogCi0g
ICAgRGlkU2F2ZVRvUGFnZUNhY2hlKCkKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgIFdy
YXBDcnlwdG9LZXkoVmVjdG9yPHVpbnQ4X3Q+IGtleSkgLT4gKGJvb2wgc3VjY2VlZGVkLCBWZWN0
b3I8dWludDhfdD4gd3JhcHBlZEtleSkgU3luY2hyb25vdXMKICAgICBVbndyYXBDcnlwdG9LZXko
VmVjdG9yPHVpbnQ4X3Q+IHdyYXBwZWRLZXkpIC0+IChib29sIHN1Y2NlZWRlZCwgVmVjdG9yPHVp
bnQ4X3Q+IGtleSkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCBiNzJkM2Q0YTA3NDQ3NjYyZDI2YTNjZWEzN2MzYzMyY2U3MDkzODVi
Li5kZDJlZDY5MTliOWNiZDUxNWVjMzMwYzQzMTEwM2U3NzUyMDZmZmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgV2Vi
UHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogICAgICwgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3Ro
aXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogICAg
ICwgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkg
eyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogI2VuZGlmCi0gICAgLCBtX2JhY2tGb3J3
YXJkQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENhY2hlPigpKQorICAgICwgbV9i
YWNrRm9yd2FyZENhY2hlKG1ha2VVbmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKnRoaXMp
KQogICAgICwgbV93ZWJQcm9jZXNzQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+
KCp0aGlzKSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC03NDUs
MTMgKzc0NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnCiAgICAgc19pbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkpLnB0cigpKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nl
c3NEaWRDYWNoZVBhZ2UoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQotewotICAgIGlmIChtX3By
b2Nlc3NXaXRoUGFnZUNhY2hlICYmIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgIT0gcHJvY2VzcykK
LSAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZS0+cmVsZWFzZVBhZ2VDYWNoZSgpOwotICAg
IG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBwcm9jZXNzOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgbV9yZXNvbHZl
ZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lv
bihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7CkBAIC05MzYsNiArOTI5LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBXZWJzaXRlRGEKIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2
YWwgPSBBUEk6OlVSTFJlcXVlc3Q6OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKIAorICAgIHBh
cmFtZXRlcnMuYmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5ID0gYmFja0ZvcndhcmRDYWNoZSgpLmNh
cGFjaXR5KCk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAvLyBGSVhNRTogVGhl
cmUgc2hvdWxkIGJlIGEgZ2VuZXJpYyB3YXkgZm9yIHN1cHBsZW1lbnRzIHRvIGFkZCB0byB0aGUg
aW50aWFsaXphdGlvbiBwYXJhbWV0ZXJzLgogICAgIHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMgPSBzdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+bm90
aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKQEAgLTEwODksOCArMTA4NCw2IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4g
U29tZSBvZiB0aGUgaW52YWxpZGF0aW9uIGNhbGxzIG9mIHRoZSBvdGhlciBzdXBwbGVtZW50cyBh
cmUgc3RpbGwgbmVjZXNzYXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxk
IG9ubHkgYWZmZWN0IGRhdGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJl
aW5nIGRpc2Nvbm5lY3RlZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNhdXNlcyBhc3Nl
cnRpb24gZmFpbHVyZXMsIHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhhdCBmb3Igbm93
LgogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7Ci0gICAgaWYg
KG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykKLSAgICAgICAgbV9wcm9jZXNzV2l0
aFBhZ2VDYWNoZSA9IG51bGxwdHI7CiAKICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVu
dHJpZXNGb3JQcm9jZXNzKCpwcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggNjBlZjQ5MzFhMjQ4ZTVmNzc1YWU0M2FhYjRiYjlkNDkwZGI2NWUy
Yi4uMDk0ZDJkZDMwMjI3NDU1YTkzMTAxYTliYjljOGVlNmFhZDljZTQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00MDgsOCArNDA4LDYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHNldEludmFsaWRNZXNzYWdlQ2FsbGJhY2sodm9pZCAoKikoV0tT
dHJpbmdSZWYpKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSk7CiAKLSAgICB2b2lkIHByb2Nlc3NEaWRDYWNo
ZVBhZ2UoV2ViUHJvY2Vzc1Byb3h5Kik7Ci0KICAgICBib29sIGlzVVJMS25vd25IU1RTSG9zdChj
b25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7CiAgICAgdm9pZCByZXNldEhTVFNIb3N0cygp
OwogICAgIHZvaWQgcmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShkb3VibGUgc3RhcnREYXRl
SW50ZXJ2YWxTaW5jZTE5NzApOwpAQCAtNTk5LDcgKzU5Nyw2IEBAIHByaXZhdGU6CiAgICAgV2Vi
UHJvY2Vzc1Byb3h5KiBtX3ByZXdhcm1lZFByb2Nlc3MgeyBudWxscHRyIH07CiAgICAgV2ViUHJv
Y2Vzc1Byb3h5KiBtX2R1bW15UHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OyAvLyBBIGxpZ2h0d2Vp
Z2h0IFdlYlByb2Nlc3NQcm94eSB3aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4KIAotICAgIFdlYlBy
b2Nlc3NQcm94eSogbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lv
bklEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RD47CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQsIFdlYlByb2Nl
c3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk5NjBhY2YwOGQzYTk3NmM5NDg0NTc3ZWQ2
NjViYjFiODY5MTY2MzAuLjQ5MTVmYmZiMWE5MWI0ZGUzZjZlM2I1OGFkZTNkMGZlMDYxYzU2MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjMx
LDYgKzYzMSwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVt
KGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbQogICAgICAgICByZXR1cm47CiAK
ICAgICBpdGVtLT5zZXRQYWdlU3RhdGUoUGFnZVN0YXRlIHsgaXRlbVN0YXRlLnBhZ2VTdGF0ZSB9
KTsKKworICAgIGlmICghIWl0ZW0tPmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpICE9IGl0ZW1TdGF0
ZS5oYXNDYWNoZWRQYWdlKSB7CisgICAgICAgIGlmIChpdGVtU3RhdGUuaGFzQ2FjaGVkUGFnZSkK
KyAgICAgICAgICAgIHByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLmFkZEVudHJ5KCpp
dGVtLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGVsc2UgaWYgKCFpdGVtLT5z
dXNwZW5kZWRQYWdlKCkpCisgICAgICAgICAgICBwcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2Fj
aGUoKS5yZW1vdmVFbnRyeSgqaXRlbSk7CisgICAgfQogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCkBAIC05ODQsMTcgKzk5MSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0VGV4dENoZWNrZXJTdGF0ZShUZXh0Q2hlY2tlcjo6c3RhdGUoKSksIDApOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKLXsKLSAgICBtX3Byb2Nl
c3NQb29sLT5wcm9jZXNzRGlkQ2FjaGVQYWdlKHRoaXMpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6cmVsZWFzZVBhZ2VDYWNoZSgpCi17Ci0gICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCi0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlbGVhc2VQYWdlQ2FjaGUoKSwgMCk7
Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVD
aGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDgzMjM0
OWE5OWYwMDFmNzQ0YjVjNmVjODBjNmZkZDMxZGE3MzExMzguLmNmZTRjOTFlZjY1MzJmNzg3NzY3
YTY3Yzc5NWRmNGMzYmMzZWU2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC0xODYsOSArMTg2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wg
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCi0gICAgdm9pZCBkaWRTYXZlVG9QYWdlQ2Fj
aGUoKTsKLSAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKLQogICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRp
bWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhMjE3NDEwNDI3NDk1YmQzOGI1ZWM3
Zjg3ODA3YTdkMzk3MzNhOWMuLjQ2YzQzNmIwMzI4Yzc4NWE4YjJmMmM5MzA4ZGI1YTU1MzQ5ZDUw
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTE4LDYgKzkxOCw3IEBACiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlC
IC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKKwkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8qIFdl
YkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeS5oICovOyB9OwogCQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4RDE5
QjA2NDE5MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0MxOUFGN0Iw
NDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCAqLzsgfTsKIAkJ
NEEzQ0MxOEYxOUIwN0I4QTAwRDE0QUVGIC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjM2
MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMzgsNiArMzIz
OSw3IEBACiAJCTQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkY5QjI2
MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzNTE5QUY3QUMzMDAyRUJBQjUgLyogV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTQxMEYzOTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzgyNiw2ICs3ODI4LDcgQEAKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBD
M0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiAqLywKIAkJCQk0NjAzMDExQTIz
NEJFMzFEMDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8sCiAJCQkJNDYwMzAx
MUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLywKKwkJCQk0NkY5
QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8sCiAJ
CQkJQkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAgKi8s
CiAJCQkJQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oICov
LAogCQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8s
CkBAIC05ODYwLDYgKzk4NjMsNyBAQAogCQkJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk1NDFD
OEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQzBBMTk1QzFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZGOUIyNjMy
MzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM3MkJBMUUxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RDJDQUUxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzJCOUZCMTFFNjQ3NkIwMDFF
QjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggYWM3MjJhNTU4MzBmZDZjNDI3MWQyOGE1
MDk0OWMwYzM0ODcwYTkxOC4uMGVjYTRjMWQzMjBjZTkwZGVjMWNlYTgzNTRmZTIyNmU3MGY0NDUz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTE1LDYgKzExNSw3
IEBAIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShj
b25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYKICAgICBzdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1l
U3RhdGUgPSB0b0ZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0pOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0uc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpOwogICAgIHN0YXRlLnBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3Qg
PSBoaXN0b3J5SXRlbS5zdGF0ZU9iamVjdCgpOworICAgIHN0YXRlLmhhc0NhY2hlZFBhZ2UgPSBo
aXN0b3J5SXRlbS5pc0luUGFnZUNhY2hlKCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5ZmExNWUwOGY2NGM1NDlhOTBmZDEwYTJk
ZTc2MjUxMWRiYTlmOGJhLi5jY2VkMTFmYWJkZTFlYmE5MmJkNmM3ZTBjYjE2YjU3OTk3M2QzYTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1MzMsMTYgKzE1MzMsNiBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRTYXZlVG9Q
YWdlQ2FjaGUoKQotewotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0g
ICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9mcmFtZS0+aXNN
YWluRnJhbWUoKSkKLSAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRTYXZlVG9QYWdlQ2FjaGUoKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKICAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2Fj
aGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBkYjc1MmQ1ODg3ZWY1
MDdlOGIzZWYyNjA0YTQ5NDAzMTc4Y2IwOGZlLi5hZmExN2E0OTY3Y2ZjMDNhNmM5NDhkYjk5Y2U4
MDE0MjVkZWM0N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjA2LDcgKzIw
Niw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UoKSBmaW5hbDsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgZmluYWw7
CiAgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIGZpbmFsOwogCiAgICAgdm9pZCBk
aXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDM0MGM5YzRjOTQ0MDM5NWY0NWRjN2E2YzdhYzdjYzZm
NjQ5NzFmZDMuLmFhMWUwMmEzMDhiMDY1NWNjZmFmMjJjMWIxMjIwZGFmODQwNWU5ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM4Niw2ICszODYsOCBAQCB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50
ZXJ2YWwocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CiAKKyAgICBz
ZXRCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkocGFyYW1ldGVycy5iYWNrRm9yd2FyZENhY2hlQ2Fw
YWNpdHkpOworCiAgICAgc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgocGFyYW1ldGVy
cy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKTsKIAogICAgIHNldFNob3VsZFVz
ZUZvbnRTbW9vdGhpbmcocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKTsKQEAgLTEy
OTQsMTEgKzEyOTYsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFRleHRDaGVja2VyU3RhdGUoY29u
c3QgVGV4dENoZWNrZXJTdGF0ZSYgdGV4dENoZWNrZXJTdGF0ZSkKICAgICB9CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzczo6cmVsZWFzZVBhZ2VDYWNoZSgpCi17Ci0gICAgUGFnZUNhY2hlOjpzaW5nbGV0
b24oKS5wcnVuZVRvU2l6ZU5vdygwLCBQcnVuaW5nUmVhc29uOjpNZW1vcnlQcmVzc3VyZSk7Ci19
Ci0KIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVE
YXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVE
YXRhOwpAQCAtMTc3OSw2ICsxNzc2LDIxIEBAIGJvb2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdl
YlBhZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpz
ZXRCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCit7CisgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKGNhcGFjaXR5KTsKK30KKwordm9pZCBXZWJQ
cm9jZXNzOjpjbGVhckNhY2hlZFBhZ2UoQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9y
d2FyZEl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0
ZW1Gb3JJRChiYWNrRm9yd2FyZEl0ZW1JRCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVt
b3ZlKCppdGVtKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiBMaWJXZWJSVENOZXR3
b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2Vi
UlRDTmV0d29yaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGFlMWY2
MDMwODNjNDAxZjA5Mzk4YjY2YTk5ZDIyZTIxNWUxNmYxNWQuLjc5OGQwODYxY2U2ZGVjMjMyNTNj
YzdiZWNhOWNmMWMyZGJmN2JkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBQYWdlR3Jv
dXA7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBVc2VyR2VzdHVyZVRva2VuOworc3Ry
dWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyOwogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IE1vY2tNZWRpYURl
dmljZTsKQEAgLTM2OCwxNCArMzY5LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVsZWFzZVBhZ2VDYWNo
ZSgpOwotCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChi
b29sKTsKIAorICAgIHZvaWQgc2V0QmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KHVuc2lnbmVkKTsK
KyAgICB2b2lkIGNsZWFyQ2FjaGVkUGFnZShXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCiAgICAgdm9pZCBzZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZp
Y2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnZpY2VzLCBib29sIGhhc1JpY2hDb250ZW50U2Vydmlj
ZXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IGNlYWQwMTY2NTA2NzJhNjY3YWI3ZDcyY2NkZjQ3NWMzNDA4NTg4YzQu
LjI0NzZjNDM4YmMzY2Y1NDg3ZGE5MWZjNjMzMzYxNmFhM2QxNGM1Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03NSw4ICs3NSw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluamVj
dGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZlcmVuY2UgcGFyYW1ldGVycyk7CiAgICAg
SGFuZGxlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpV
c2VyRGF0YSBtZXNzYWdlQm9keSk7CiAKLSAgICBSZWxlYXNlUGFnZUNhY2hlKCkKLQogICAgIEZl
dGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRl
RGF0YVR5cGVzKSAtPiAoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIEFz
eW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSAtPiAoKSBBc3lu
YwogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpIEFzeW5jCkBAIC0xNTMsNiArMTUxLDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDbGVhckN1cnJlbnRNb2Rp
ZmllclN0YXRlRm9yVGVzdGluZygpCiAKKyAgICBTZXRCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHko
dW5zaWduZWQgY2FwYWNpdHkpOworICAgIENsZWFyQ2FjaGVkUGFnZShzdHJ1Y3QgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkgLT4gKCkgQXN5bmMK
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2
ZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2NTE2YzlmNDliMGNlOTUwMGVlMDFiZGRlZDVhZWRk
YzIzZTg2N2JkLi5jMjFiZGNmNzEwNjM5NjllMTFjYmRiYjBhNWI5M2U1YmFhODZkODM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE4NCw3ICsxODQsNiBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWw7CiAK
LSAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVzdG9y
ZUZyb21QYWdlQ2FjaGUoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFt
ZXNldChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggOGFlODZi
NWM0OGFiNGM0YjVlMTYyYWMzMTE3MGE4OGRjOGY0Y2EzYi4uNDYwYzlhMjY3Y2FhMTJiYzk4OWMy
ZmI0MjhkZjRmYWEyMGI3NGU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0
OTUsMTAgKzE0OTUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQ0ZmI1ZDc3NmM2MDM3M2ZlNjcz
YmMxNTFlNmYxMmE3MDc0ODhkMWQuLjI2MjExZmE5Njc4MDZhNDRmYWFkMDY4YTA3OGIxMzYzMThl
ZTRiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTk5MiwxMCArOTkyLDYg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3
UGFnZSgpCiAgICAgY29yZShtX3dlYkZyYW1lKS0+Y3JlYXRlVmlldyhlbmNsb3NpbmdJbnRSZWN0
KGxvZ2ljYWxGcmFtZSkuc2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3IsIC8qIGZpeGVkTGF5b3V0U2l6
ZSAqLyB7IH0sIC8qIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ICovIHsgfSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCi17Ci19Ci0KIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDMzYTg2Y2U1N2ZmMTQ4NWFjMjcwMTk3MGQ0NDBm
YjIzY2QzODQ1MjQuLjg1NmY1MjVmZGNlOTNkZGY0ZmU3ZmRlYWZmNDI1NWU1ZmY1NDc3NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTc2LDcgKzE3Niw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNh
Y2hlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIG92ZXJyaWRl
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>