<?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>208720</bug_id>
          
          <creation_ts>2020-03-06 09:42:10 -0800</creation_ts>
          <short_desc>[iOS] Implement support for dictation alternatives</short_desc>
          <delta_ts>2020-03-07 16:43:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626705</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 09:42:10 -0800</bug_when>
    <thetext>Implement support for dictation alternatives aka the purple dots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626706</commentid>
    <comment_count>1</comment_count>
      <attachid>392732</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 09:43:44 -0800</bug_when>
    <thetext>Created attachment 392732
Part 1: For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626711</commentid>
    <comment_count>2</comment_count>
      <attachid>392735</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 09:54:08 -0800</bug_when>
    <thetext>Created attachment 392735
Part 1: For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626714</commentid>
    <comment_count>3</comment_count>
      <attachid>392737</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 09:55:23 -0800</bug_when>
    <thetext>Created attachment 392737
Part 2: For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627188</commentid>
    <comment_count>4</comment_count>
      <attachid>392854</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 00:23:53 -0800</bug_when>
    <thetext>Created attachment 392854
All in one - for the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627240</commentid>
    <comment_count>5</comment_count>
      <attachid>392866</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 10:40:18 -0800</bug_when>
    <thetext>Created attachment 392866
Part 1: Share AlternativeTextUIController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627244</commentid>
    <comment_count>6</comment_count>
      <attachid>392868</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 10:56:08 -0800</bug_when>
    <thetext>Created attachment 392868
Part 1: Share AlternativeTextUIController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627246</commentid>
    <comment_count>7</comment_count>
      <attachid>392869</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 10:59:52 -0800</bug_when>
    <thetext>Created attachment 392869
Part 1: Share AlternativeTextUIController

Expose some more UIKit SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627247</commentid>
    <comment_count>8</comment_count>
      <attachid>392870</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 11:06:03 -0800</bug_when>
    <thetext>Created attachment 392870
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627252</commentid>
    <comment_count>9</comment_count>
      <attachid>392872</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 11:14:39 -0800</bug_when>
    <thetext>Created attachment 392872
Part 1: Share AlternativeTextUIController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627253</commentid>
    <comment_count>10</comment_count>
      <attachid>392873</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 11:17:01 -0800</bug_when>
    <thetext>Created attachment 392873
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627263</commentid>
    <comment_count>11</comment_count>
      <attachid>392874</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 11:37:41 -0800</bug_when>
    <thetext>Created attachment 392874
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627270</commentid>
    <comment_count>12</comment_count>
      <attachid>392876</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 12:35:27 -0800</bug_when>
    <thetext>Created attachment 392876
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627273</commentid>
    <comment_count>13</comment_count>
      <attachid>392878</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 12:47:45 -0800</bug_when>
    <thetext>Created attachment 392878
Part 3: Share more AlternativeTextController code and WebPageProxy code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627275</commentid>
    <comment_count>14</comment_count>
      <attachid>392879</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 12:52:39 -0800</bug_when>
    <thetext>Created attachment 392879
Part 3: Share more AlternativeTextController code and WebPageProxy code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627276</commentid>
    <comment_count>15</comment_count>
      <attachid>392872</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-07 12:53:16 -0800</bug_when>
    <thetext>Comment on attachment 392872
Part 1: Share AlternativeTextUIController

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Note that I haven&apos;t enable USE_DICTATION_ALTERNATIVES on iOS, yet. So, this code isn&apos;t being compile on it.

Nit - &quot;being compiled&quot;

&gt; Source/WebKit/UIProcess/ios/PageClientImplIOS.h:37
&gt; +OBJC_CLASS NSTextAlternatives;

Nit - alphabetic order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627287</commentid>
    <comment_count>16</comment_count>
      <attachid>392883</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 13:25:40 -0800</bug_when>
    <thetext>Created attachment 392883
Part 3: Share more AlternativeTextController code and WebPageProxy code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627290</commentid>
    <comment_count>17</comment_count>
      <attachid>392886</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 13:40:20 -0800</bug_when>
    <thetext>Created attachment 392886
Part 3: Share more AlternativeTextController code and WebPageProxy code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627291</commentid>
    <comment_count>18</comment_count>
      <attachid>392887</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 13:41:24 -0800</bug_when>
    <thetext>Created attachment 392887
Part 4: Implement -insertText:alternatives:style:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627297</commentid>
    <comment_count>19</comment_count>
      <attachid>392890</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 13:46:43 -0800</bug_when>
    <thetext>Created attachment 392890
Part 5: Enable on iOS &lt;- easy review patch

This patch will fail to build on EWS since it depends on the other 4 parts having been applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627299</commentid>
    <comment_count>20</comment_count>
      <attachid>392891</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 13:48:19 -0800</bug_when>
    <thetext>Created attachment 392891
[Just for bots] All in one patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627313</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 14:08:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/58540114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627335</commentid>
    <comment_count>22</comment_count>
      <attachid>392876</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-07 15:42:10 -0800</bug_when>
    <thetext>Comment on attachment 392876
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files

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

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:259
&gt; +    options.registerUndoGroup = registerUndoGroup;

(Not related to this patch)

At some point, we should consider changing InsertTextOptions’s bool members into enum classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627337</commentid>
    <comment_count>23</comment_count>
      <attachid>392886</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-07 15:49:07 -0800</bug_when>
    <thetext>Comment on attachment 392886
Part 3: Share more AlternativeTextController code and WebPageProxy code

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

r=me

&gt; Source/WebCore/ChangeLog:13
&gt; +        Note that I haven&apos;t enable USE_DICTATION_ALTERNATIVES on iOS. So, this code isn&apos;t being

enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627346</commentid>
    <comment_count>24</comment_count>
      <attachid>392904</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:17:44 -0800</bug_when>
    <thetext>Created attachment 392904
Part 1: Share AlternativeTextUIController – To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627347</commentid>
    <comment_count>25</comment_count>
      <attachid>392905</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:18:27 -0800</bug_when>
    <thetext>Created attachment 392905
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files – To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627348</commentid>
    <comment_count>26</comment_count>
      <attachid>392906</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:18:47 -0800</bug_when>
    <thetext>Created attachment 392906
Part 3: Share more AlternativeTextController code and WebPageProxy code – To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627349</commentid>
    <comment_count>27</comment_count>
      <attachid>392907</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:19:03 -0800</bug_when>
    <thetext>Created attachment 392907
Part 4: Implement -insertText:alternatives:style: – To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627350</commentid>
    <comment_count>28</comment_count>
      <attachid>392908</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:19:35 -0800</bug_when>
    <thetext>Created attachment 392908
Part 5: Enable on iOS – To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627355</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:26:47 -0800</bug_when>
    <thetext>Committed part 1 in r258085: &lt;https://trac.webkit.org/changeset/258085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627356</commentid>
    <comment_count>30</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:28:12 -0800</bug_when>
    <thetext>Committed part 2 in r258086: &lt;https://trac.webkit.org/changeset/258086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627357</commentid>
    <comment_count>31</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:30:54 -0800</bug_when>
    <thetext>Committed part 3 in r258087: &lt;https://trac.webkit.org/changeset/258087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627358</commentid>
    <comment_count>32</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:34:34 -0800</bug_when>
    <thetext>Committed part 4 in r258088: &lt;https://trac.webkit.org/changeset/258088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627361</commentid>
    <comment_count>33</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:38:46 -0800</bug_when>
    <thetext>Committed part 5 in r258089: &lt;https://trac.webkit.org/changeset/258089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627362</commentid>
    <comment_count>34</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-07 16:39:15 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #23)

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        Note that I haven&apos;t enable USE_DICTATION_ALTERNATIVES on iOS. So, this code isn&apos;t being
&gt; 
&gt; enabled

Oops! I forgot to do this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627365</commentid>
    <comment_count>35</comment_count>
      <attachid>392904</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-07 16:42:41 -0800</bug_when>
    <thetext>Comment on attachment 392904
Part 1: Share AlternativeTextUIController – To Land

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Note that I haven&apos;t enable USE_DICTATION_ALTERNATIVES on iOS. So, this code isn&apos;t being

enabled

&gt; Source/WebCore/editing/cocoa/AlternativeTextContextController.h:47
&gt; +    NSTextAlternatives *alternativesForContext(uint64_t context);

Can we &apos;uses&apos; this uint64_t so we can tell it from all the other uint64_ts? or use ObjectIdentifier&lt;&gt;

&gt; Source/WebCore/editing/cocoa/AlternativeTextContextController.mm:47
&gt; +    uint64_t context = reinterpret_cast&lt;uint64_t&gt;(alternatives.get());

Ugh, the pointer address Is the id?

Pointer addresses can get recycled.

&gt; Source/WebCore/editing/cocoa/AlternativeTextUIController.hSource/WebCore/editing/mac/AlternativeTextUIController.h:45
&gt; +    WEBCORE_EXPORT uint64_t addAlternatives(const RetainPtr&lt;NSTextAlternatives&gt;&amp;); // Returns a context ID.

If you used a named type you wouldn&apos;t need the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627368</commentid>
    <comment_count>36</comment_count>
      <attachid>392905</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-07 16:43:58 -0800</bug_when>
    <thetext>Comment on attachment 392905
Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files – To Land

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

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:195
&gt; +    auto&amp; frame = m_page-&gt;focusController().focusedOrMainFrame();
&gt; +    Ref&lt;Frame&gt; protector { frame };

Why not just Ref&lt;Frame&gt; = m_page-&gt;focusController().focusedOrMainFrame();

or fix focusedOrMainFrame() to return a ref</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392732</attachid>
            <date>2020-03-06 09:43:44 -0800</date>
            <delta_ts>2020-03-06 09:54:08 -0800</delta_ts>
            <desc>Part 1: For the bots</desc>
            <filename>ShareAlternativeTextUIController.patch</filename>
            <type>text/plain</type>
            <size>34343</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAzZWZkNWI0N2RkNTBhMzJhYzkyYTZiY2E5YWI5NTI3MmJjYzkzMmU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDYgTWFyIDIwMjAgMDk6MTY6MjkgLTA4MDAKU3ViamVjdDogW1BBVENIXSBTaGFyZSBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gd2l0aCBpT1MgYW5kIG1vdmUKIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHRvIGl0cyBvd24gZmlsZQoKLS0tCiBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAgfCAgMyArLQogLi4uL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgMTQgKysrLQogLi4uL2NvY29hL0Fs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggIHwgNTkgKysrKysrKysrKysrKysrCiAu
Li4vY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gfCA3MyArKysrKysr
KysrKysrKysrKysrCiAuLi4vQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggICAgICAgICAg
ICAgfCA0NSArKysrKy0tLS0tLS0KIC4uLi9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0g
ICAgICAgICAgICB8IDY5ICsrKysrKysrLS0tLS0tLS0tLQogLi4uL1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLmggICAgIHwgMjIgKysrKystCiAuLi4vVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gICAgfCA0MiArKysrKysrKysrKwogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgMTkgKystLS0KIC4uLi9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oICB8ICA2ICstCiAuLi4vV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gfCAxNCArKy0tCiAuLi4vV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCAgfCAgOSArLS0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSB8IDMyICsrLS0tLS0tCiAxMyBmaWxlcyBj
aGFuZ2VkLCAyODUgaW5zZXJ0aW9ucygrKSwgMTIyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0KIHJlbmFtZSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3ttYWMgPT4gY29jb2F9L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oICg2NCUpCiByZW5hbWUgU291cmNlL1dlYkNvcmUvZWRpdGluZy97bWFjID0+IGNvY29hfS9B
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKDY0JSkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCA0YTA5MmQ4OGZmOC4uYTdlMGZkNzgyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtNzksNiArNzksOCBAQCBkb20vaW9zL1RvdWNoRXZlbnRzLmNwcAogZWRpdGluZy9TZWxl
Y3Rpb25SZWN0R2F0aGVyZXIuY3BwCiBlZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAogCitlZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCitlZGl0aW5nL2Nv
Y29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQogZWRpdGluZy9jb2NvYS9BdXRvZmls
bEVsZW1lbnRzLmNwcAogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2Nv
Y29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTk0LDcgKzk2LDYgQEAgZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1Mu
Y3BwCiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KIAotZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLm1tCiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1t
CiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KIGVkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFj
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTcxZTA1MWI5ZTMuLjI5NDIxMzUyMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjM5LDYgKzQyMzksNyBA
QAogCQlDRTFBNTAxRjIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTUwMUQyMkQ1
MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMg
LyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhv
bGRlckVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oICovOyB9OworCQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklP
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5
RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFNkRBREZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNkRBREY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQxNDIsNiArMTQxNDMsOCBAQAogCQlDRTIxMjE1NDI0MERCRDMw
MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5
ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNDU5
NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU2
MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZG
MDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTYzLDgg
KzE0MTY2LDggQEAKIAkJQ0U3OTlGQUExQzZBNTA2NjAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oOyBwYXRoID0g
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QTZDMjYyMDg1MzdFMjAwRkEyQjQ2IC8qIFNhbWVTaXRl
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lU2l0ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U3QTZDMjcyMDg1MzdFMjAwRkEyQjQ2IC8qIFNhbWVTaXRlSW5mby5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTYW1lU2l0ZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTdCMkRC
MDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFE
MDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIz
RkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdF
MTc4MjFDODNBNDkxMDBBRDA2QUYgLyogQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmg7
IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjEyODQsNiArMjEyODcsMTAgQEAKIAkJN0MzRTUxMDcxOERGOEYxMjAw
QzExMkY3IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlDRTQ1OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaCAqLywKKwkJCQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0U3QjJEQUYxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAorCQkJCUNFN0IyREIw
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJNUNDQzI3MDcyMkQ1M0I2OTAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICovLAog
CQkJCTVDQ0MyNzA2MjJENTNCNjgwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmggKi8sCiAJ
CQkJQzUyMjdERUYxQzNDNkRENzAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCAqLywKQEAgLTI3
MzE3LDggKzI3MzI0LDYgQEAKIAkJRUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0U3QjJEQUYxNTg2
QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAotCQkJCUNF
N0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0g
Ki8sCiAJCQkJOTM3RkYzRDQxQTEwMTJENjAwOEVCQTMxIC8qIERpY3Rpb25hcnlMb29rdXAuaCAq
LywKIAkJCQk0NDI5NTZDQTIxOEE2RDMwMDA4MERCNTQgLyogRGljdGlvbmFyeUxvb2t1cExlZ2Fj
eS5tbSAqLywKIAkJCQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
LApAQCAtMzE5MDYsNiArMzE5MTEsNyBAQAogCQkJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAv
KiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QkFBRTU4MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNEM3Njc1MENFOTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3BhY2VCYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MkFEQTM4MTk3
RjQ3QjkwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRjhFMTFBMTI1NjU5MjYwMDIzMEZGNyAvKiBQcm94eVNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVhYTQwNTczOTJmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPHd0Zi9Gb3J3
YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsK
KworICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0
ZXJuYXRpdmVzPiYpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgTlNUZXh0QWx0ZXJuYXRp
dmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgdm9p
ZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisKK3ByaXZhdGU6
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IG1f
YWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWRhMzU4
MzE0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Fs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoQVBQS2l0KQorI2ltcG9ydCA8
QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK0FsdGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjp+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIoKSA9IGRlZmF1bHQ7CisKK3VpbnQ2NF90IEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZl
cz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dChjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgYXV0byByZXN1bHQg
PSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAg
ICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9
CisKK05TVGV4dEFsdGVybmF0aXZlcyAqQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6
OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICByZXR1cm4g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZ2V0KGNvbnRleHQpLmdldCgpOworfQorCit2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVt
b3ZlKGNvbnRleHQpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjpjbGVhcigpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmgKaW5kZXggMjljNWE4ZGE3ZWUuLmNjZmZkODg5ZGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oCkBAIC0yNSw0OSArMjUsNDIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQogI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCiBPQkpDX0NMQVNTIE5T
VGV4dEFsdGVybmF0aXZlczsKIE9CSkNfQ0xBU1MgTlNWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEZsb2F0UmVjdDsKKwogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KLSAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4K
LSAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBhZGRBbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsgLy8gUmV0dXJucyBh
IGNvbnRleHQgSUQuCisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFj
Y2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKworICAgIHVzaW5nIEFjY2VwdGFuY2VIYW5k
bGVyID0gdm9pZCAoXikoTlNTdHJpbmcgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93
QWx0ZXJuYXRpdmVzKE5TVmlldyAqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmlt
YXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCBBY2NlcHRhbmNlSGFuZGxlcik7CisKICAgICB2
b2lkIFdFQkNPUkVfRVhQT1JUIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KTsK
KwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRl
eHQodWludDY0X3QgY29udGV4dCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250
ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKLQorI2lmIFVTRShBUFBLSVQpCisgICAgdm9pZCBo
YW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nICosIHVpbnQ2NF90IGNvbnRleHQsIE5T
VGV4dEFsdGVybmF0aXZlcyAqKTsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAot
ICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgewotICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEFsZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIoKSB7IH0KLSAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7Ci0gICAgICAgIHZvaWQgY2xl
YXIoKTsKLSAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpOwotICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNv
bnRleHQodWludDY0X3QgY29udGV4dCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBp
bnZhbGlkQ29udGV4dCA9IDA7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPj4gSGFzaE1hcFR5cGU7Ci0g
ICAgICAgIEhhc2hNYXBUeXBlIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOwotICAgIH07Ci0KLSAg
ICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CiAg
ICAgUmV0YWluUHRyPE5TVmlldz4gbV92aWV3OworI2VuZGlmCisgICAgQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbQpyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIubW0KaW5kZXggM2YxYmE1MGE3Y2YuLjRiYWNkNGUxZGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDM5ICsyNywxOSBAQAogI2ltcG9ydCAiQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmgiCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKwor
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKworI2lmIFVTRShBUFBLaXQpCiAjaW1wb3J0
IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KICNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5h
dGl2ZXMuaD4KICNpbXBvcnQgPEFwcEtpdC9OU1ZpZXcuaD4KKyNlbGlmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgor
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykK
LXsKLSAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oYWx0
ZXJuYXRpdmVzLmdldCgpKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBpbnZh
bGlkQ29udGV4dDsKLSAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0KLSAgICBIYXNoTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0LCBhbHRlcm5hdGl2ZXMpOwot
ICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQgOiBpbnZhbGlkQ29udGV4dDsK
LX0KLQotTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFs
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dCkKLXsKLSAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZ2V0
KGNvbnRleHQpLmdldCgpOwotfQotCi12b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0KQotewotICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJl
bW92ZShjb250ZXh0KTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFs
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKCkKLXsKLSAgICBtX2FsdGVybmF0
aXZlc09iamVjdE1hcC5jbGVhcigpOwotfQotCiB1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiYgYWx0ZXJuYXRpdmVzKQogewogICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFk
ZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOwpAQCAtNjcsMTAgKzQ3LDExIEBAIHVpbnQ2NF90
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFp
blB0cjxOU1RleHRBbHRlCiAKIFZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQogewotICAgIE5T
VGV4dEFsdGVybmF0aXZlcyogdGV4dEFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIu
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKKyAgICBhdXRvICp0ZXh0QWx0ZXJuYXRp
dmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQp
OwogICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsKLSAgICBmb3IgKE5TU3Ry
aW5nKiBzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCi0gICAg
ICAgIGFsdGVybmF0aXZlU3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKKyAgICBhbHRlcm5hdGl2ZVN0
cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZl
U3RyaW5ncy5jb3VudCk7CisgICAgZm9yIChhdXRvICpzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZl
cy5hbHRlcm5hdGl2ZVN0cmluZ3MpCisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy51bmNoZWNr
ZWRBcHBlbmQoc3RyaW5nKTsKICAgICByZXR1cm4gYWx0ZXJuYXRpdmVTdHJpbmdzOwogfQogCkBA
IC03OSw0MiArNjAsNTAgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmNsZWFy
KCkKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVhcigpOwogfQogCi12b2lkIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcqIHZpZXcs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNv
bnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKQordm9pZCBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3ICp2aWV3LCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0
LCBBY2NlcHRhbmNlSGFuZGxlciBhY2NlcHRhbmNlSGFuZGxlcikKIHsKKyNpZiBVU0UoQVBQS0lU
KQogICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fdmlldyA9IHZpZXc7Ci0gICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRl
cm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29u
dGV4dCk7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKmFsdGVybmF0aXZlcyA9IG1fY29udGV4
dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIWFs
dGVybmF0aXZlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOk5TQ29ycmVjdGlv
bkluZGljYXRvclR5cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmVzLnByaW1hcnlT
dHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3Mg
Zm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nIHZpZXc6bV92aWV3Lmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAg
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNh
dG9yT2ZUeXBlOk5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6
YWx0ZXJuYXRpdmVzLnByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZl
cy5hbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5
U3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKmFj
Y2VwdGVkU3RyaW5nKSB7CiAgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykgewogICAgICAgICAg
ICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgY29udGV4dCwgYWx0
ZXJuYXRpdmVzKTsKICAgICAgICAgICAgIGFjY2VwdGFuY2VIYW5kbGVyKGFjY2VwdGVkU3RyaW5n
KTsKICAgICAgICAgfQogICAgIH1dOworI2VuZGlmCiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRl
ZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVy
bmF0aXZlcykKKyNpZiBVU0UoQVBQS0lUKQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyAqYWNjZXB0ZWRBbHRlcm5h
dGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXMp
CiB7CiAgICAgW2FsdGVybmF0aXZlcyBub3RlU2VsZWN0ZWRBbHRlcm5hdGl2ZVN0cmluZzphY2Nl
cHRlZEFsdGVybmF0aXZlXTsKICAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVybmF0
aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Ci0gICAgbV92aWV3LmNsZWFyKCk7CisgICAgbV92aWV3
ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmRpc21p
c3NBbHRlcm5hdGl2ZXMoKQogewotICAgIGlmICghbV92aWV3KQotICAgICAgICByZXR1cm47Ci0g
ICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9u
SW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0KCldOworICAgIGlmIChtX3ZpZXcpCisgICAgICAg
IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbklu
ZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgpXTsKIH0KIAorI2VuZGlmCisKIHZvaWQgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4
dCkKIHsKICAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoY29udGV4dCk7CiB9Ci19CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8v
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGE2Zjc3NjkyYzAwLi5jYjBl
Y2QxZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaApAQCAtMjYsMjAgKzI2LDI5IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgogCitAY2xhc3MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogQGNsYXNz
IFdLV2ViVmlldzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogfQogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQYWdlQ2xpZW50SW1wbENvY29hIDogcHVi
bGljIFBhZ2VDbGllbnQgewogcHVibGljOgotICAgIFBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJW
aWV3ICp3ZWJWaWV3KQotICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KSB7IH0KKyAgICBQYWdl
Q2xpZW50SW1wbENvY29hKFdLV2ViVmlldyAqKTsKKyAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50SW1w
bENvY29hKCk7CisKKyAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKKwogICAgIHZvaWQg
aXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBpc1BsYXlpbmdBdWRp
b0RpZENoYW5nZSgpIGZpbmFsOwogCkBAIC01Myw4ICs2MiwxNyBAQCBwdWJsaWM6CiAgICAgTlNT
ZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB1aW50NjRfdCBhZGREaWN0
YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSBm
aW5hbDsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KSBmaW5hbDsKKyAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgZmluYWw7CisjZW5kaWYKKwogcHJvdGVj
dGVkOgogICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV93ZWJWaWV3OworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworI2Vu
ZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFn
ZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCBlN2Q3MzgyZGI1Yi4uNDA5NDljMmY0MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5tbQpAQCAtMjksOSArMjksMjQgQEAKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3UHJpdmF0ZUZvclRlc3RpbmcuaCIKKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFnZUNs
aWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKndlYlZpZXcpCisg
ICAgOiBtX3dlYlZpZXcgeyB3ZWJWaWV3IH0KKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsgbWFrZVVuaXF1ZTxBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkgfQorI2VuZGlmCit7Cit9CisKK1BhZ2VDbGllbnRJ
bXBsQ29jb2E6On5QYWdlQ2xpZW50SW1wbENvY29hKCkgPSBkZWZhdWx0OworCiB2b2lkIFBhZ2VD
bGllbnRJbXBsQ29jb2E6OmlzUGxheWluZ0F1ZGlvV2lsbENoYW5nZSgpCiB7CiAgICAgW21fd2Vi
VmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6TlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9y
KF9pc1BsYXlpbmdBdWRpbykpXTsKQEAgLTgwLDUgKzk1LDMyIEBAIE5TU2V0ICpQYWdlQ2xpZW50
SW1wbENvY29hOjpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdAogfQogCiAj
ZW5kaWYKKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKCkKK3sKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci0+Y2xlYXIoKTsKKyNlbmRpZgorfQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisKK3VpbnQ2NF90IFBhZ2VDbGllbnRJbXBsQ29jb2E6OmFkZERpY3RhdGlvbkFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQor
eworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWRkQWx0ZXJuYXRp
dmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6cmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAg
bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRp
b25Db250ZXh0KTsKK30KKworVmVjdG9yPFN0cmluZz4gUGFnZUNsaWVudEltcGxDb2NvYTo6ZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgcmV0
dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KGRpY3RhdGlvbkNvbnRleHQpOworfQorCisjZW5kaWYKKwogICAgIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGUzZmYzMGNlODJiLi5hM2NlZGY1OTBhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzUzLDYgKzM1MywxMyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKSB7
IH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdWludDY0
X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KSA9IDA7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0
dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5D
b21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hh
c0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRT
dGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgUGx1Z2luQ29t
cGxleFRleHRJbnB1dFN0YXRlKSA9IDA7CkBAIC0zNzYsMTggKzM4MywxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBOU1ZpZXcgKmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCkgPSAwOwogICAgIHZp
cnR1YWwgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCkgPSAw
OwogCi0jaWYgVVNFKEFQUEtJVCkKICAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljQ29udGVudFNp
emVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50cmluc2ljQ29udGVudFNpemUp
ID0gMDsKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICB2aXJ0dWFsIHVpbnQ2
NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJu
YXRpdmVzPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7Ci0gICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgPSAwOwotI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorCiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKLSNlbmRpZiAvLyBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyNlbmRpZgorCiAgICAg
dmlydHVhbCB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSA9IDA7CiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDVhM2E3YWJmNTk3Li45N2YzZjVlYjA3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTM0
LDYgKzM0LDcgQEAKIAogT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OwogT0JKQ19DTEFTUyBXS0Vk
aXRvclVuZG9UYXJnZXQ7CitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhf
dDsKQEAgLTc3LDcgKzc4LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAg
ICAgdm9pZCBncHVQcm9jZXNzQ3Jhc2hlZCgpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdm9pZCBw
YWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgRnVuY3Rp
b248dm9pZChib29sKT4mKSBvdmVycmlkZTsKQEAgLTI2Miw2ICsyNjIsMTAgQEAgcHJpdmF0ZToK
ICAgICBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0
dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgb3ZlcnJpZGU7CiAjZW5kaWYKIAor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgdWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZp
ZXc+IG1fY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldD4gbV91
bmRvVGFyZ2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQppbmRleCA4OTIzOWY3OTRmMy4uMmZjZTBjNTUxY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTIzMywx
MSArMjMzLDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6Z3B1UHJvY2Vzc0NyYXNoZWQoKQogfQog
I2VuZGlmCiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6OnByZWZlcmVuY2VzRGlkQ2hh
bmdlKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTYzLDYgKzk1OCwxNSBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0JgogICAgIFttX2NvbnRlbnRWaWV3IF9oYW5kbGVBdXRvY29ycmVj
dGlvbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgdWludDY0X3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLmgKaW5kZXggMGRjYTg3MDZkNDIuLmYwY2MzOGE0ODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIEBjbGFzcyBXS0VkaXRvclVuZG9UYXJnZXQ7CiBAY2xhc3MgV0tWaWV3OwpAQCAtMTgw
LDExICsxODAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW50cmluc2ljQ29udGVudFNpemVEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50cmluc2ljQ29udGVudFNpemUpIG92ZXJy
aWRlOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgdWludDY0X3QgYWRk
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRl
ZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxT
dHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBv
dmVycmlkZTsKICNlbmRpZgorCiAgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQo
Ym9vbCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoSU5TRVJUSU9OX1VORE9fR1JPVVBJTkcpCkBAIC0y
NjcsOSArMjY1LDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAg
ICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOwogI2VuZGlmCi0jaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7Ci0j
ZW5kaWYKIAogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlcyB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCmluZGV4IGFmMzc2YWU2NTNhLi4wMzE5MmQ3NmFlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNzksMTMg
Kzc5LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQotI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5o
PgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2luY2x1
ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogI2VuZGlmCkBAIC0xMDMsMjAg
KzEwMCwxNiBAQCBAZW5kCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3
KiB2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCitQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudElt
cGwoTlNWaWV3ICp2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1w
bENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3ZpZXcodmlldykKLSNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKG1ha2VVbmlx
dWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQotI2VuZGlmCiB7CiB9CiAKLVBhZ2VD
bGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKQotewotfQorUGFnZUNsaWVudEltcGw6On5QYWdl
Q2xpZW50SW1wbCgpID0gZGVmYXVsdDsKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0SW1wbChX
ZWJWaWV3SW1wbCYgaW1wbCkKIHsKQEAgLTI2Niw5ICsyNTksNyBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpwcm9jZXNzRGlkRXhpdCgpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkK
IHsKICAgICBtX2ltcGwtPnBhZ2VDbG9zZWQoKTsKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+Y2xlYXIoKTsKLSNlbmRp
ZgorICAgIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQoKTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAgLTY4NCwxNSArNjc1LDYgQEAgYm9v
bCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvclN0cmluZykKIH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQotdWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQotewotICAgIHJl
dHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVy
bmF0aXZlcyk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQotewotICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Ci19
CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkKIHsKQEAgLTcwMywxMCArNjg1LDYgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGkKICAgICB9KTsKIH0KIAotVmVjdG9yPFN0cmluZz4gUGFnZUNsaWVudEltcGw6OmRp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQotewotICAgIHJl
dHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVzRm9yQ29udGV4
dChkaWN0YXRpb25Db250ZXh0KTsKLX0KICNlbmRpZgogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
ZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQp
Ci0tIAoyLjI0LjEgKEFwcGxlIEdpdC0xMjYpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392735</attachid>
            <date>2020-03-06 09:54:08 -0800</date>
            <delta_ts>2020-03-07 10:40:18 -0800</delta_ts>
            <desc>Part 1: For the bots</desc>
            <filename>ShareAlternativeTextUIController.patch</filename>
            <type>text/plain</type>
            <size>34361</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBmYzA1ZmYzZjRiYTFlZTNmMzk5NWE3NDM3MzMxNTc3YWYxNGM3MjYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDYgTWFyIDIwMjAgMDk6MTY6MjkgLTA4MDAKU3ViamVjdDogW1BBVENIXSBTaGFyZSBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gd2l0aCBpT1MgYW5kIG1vdmUKIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHRvIGl0cyBvd24gZmlsZQoKLS0tCiBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAgfCAgMyArLQogLi4uL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgMTQgKysrLQogLi4uL2NvY29hL0Fs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggIHwgNTkgKysrKysrKysrKysrKysrCiAu
Li4vY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gfCA3MyArKysrKysr
KysrKysrKysrKysrCiAuLi4vQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggICAgICAgICAg
ICAgfCA0NSArKysrKy0tLS0tLS0KIC4uLi9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0g
ICAgICAgICAgICB8IDY5ICsrKysrKysrLS0tLS0tLS0tLQogLi4uL1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLmggICAgIHwgMjIgKysrKystCiAuLi4vVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gICAgfCA0MiArKysrKysrKysrKwogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgMTkgKystLS0KIC4uLi9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oICB8ICA2ICstCiAuLi4vV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gfCAxNCArKy0tCiAuLi4vV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCAgfCAgOSArLS0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSB8IDMyICsrLS0tLS0tCiAxMyBmaWxlcyBj
aGFuZ2VkLCAyODUgaW5zZXJ0aW9ucygrKSwgMTIyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0KIHJlbmFtZSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3ttYWMgPT4gY29jb2F9L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oICg2NCUpCiByZW5hbWUgU291cmNlL1dlYkNvcmUvZWRpdGluZy97bWFjID0+IGNvY29hfS9B
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKDY1JSkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCA0YTA5MmQ4OGZmOC4uYTdlMGZkNzgyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtNzksNiArNzksOCBAQCBkb20vaW9zL1RvdWNoRXZlbnRzLmNwcAogZWRpdGluZy9TZWxl
Y3Rpb25SZWN0R2F0aGVyZXIuY3BwCiBlZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAogCitlZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCitlZGl0aW5nL2Nv
Y29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQogZWRpdGluZy9jb2NvYS9BdXRvZmls
bEVsZW1lbnRzLmNwcAogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2Nv
Y29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTk0LDcgKzk2LDYgQEAgZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1Mu
Y3BwCiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KIAotZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLm1tCiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1t
CiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KIGVkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFj
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTcxZTA1MWI5ZTMuLjI5NDIxMzUyMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjM5LDYgKzQyMzksNyBA
QAogCQlDRTFBNTAxRjIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTUwMUQyMkQ1
MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMg
LyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhv
bGRlckVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oICovOyB9OworCQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklP
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5
RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFNkRBREZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNkRBREY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQxNDIsNiArMTQxNDMsOCBAQAogCQlDRTIxMjE1NDI0MERCRDMw
MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5
ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNDU5
NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU2
MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZG
MDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTYzLDgg
KzE0MTY2LDggQEAKIAkJQ0U3OTlGQUExQzZBNTA2NjAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oOyBwYXRoID0g
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QTZDMjYyMDg1MzdFMjAwRkEyQjQ2IC8qIFNhbWVTaXRl
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lU2l0ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U3QTZDMjcyMDg1MzdFMjAwRkEyQjQ2IC8qIFNhbWVTaXRlSW5mby5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTYW1lU2l0ZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTdCMkRC
MDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFE
MDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIz
RkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTdF
MTc4MjFDODNBNDkxMDBBRDA2QUYgLyogQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmg7
IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjEyODQsNiArMjEyODcsMTAgQEAKIAkJN0MzRTUxMDcxOERGOEYxMjAw
QzExMkY3IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlDRTQ1OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaCAqLywKKwkJCQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0U3QjJEQUYxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAorCQkJCUNFN0IyREIw
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJNUNDQzI3MDcyMkQ1M0I2OTAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICovLAog
CQkJCTVDQ0MyNzA2MjJENTNCNjgwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmggKi8sCiAJ
CQkJQzUyMjdERUYxQzNDNkRENzAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCAqLywKQEAgLTI3
MzE3LDggKzI3MzI0LDYgQEAKIAkJRUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0U3QjJEQUYxNTg2
QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAotCQkJCUNF
N0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0g
Ki8sCiAJCQkJOTM3RkYzRDQxQTEwMTJENjAwOEVCQTMxIC8qIERpY3Rpb25hcnlMb29rdXAuaCAq
LywKIAkJCQk0NDI5NTZDQTIxOEE2RDMwMDA4MERCNTQgLyogRGljdGlvbmFyeUxvb2t1cExlZ2Fj
eS5tbSAqLywKIAkJCQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
LApAQCAtMzE5MDYsNiArMzE5MTEsNyBAQAogCQkJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAv
KiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QkFBRTU4MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNEM3Njc1MENFOTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3BhY2VCYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MkFEQTM4MTk3
RjQ3QjkwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRjhFMTFBMTI1NjU5MjYwMDIzMEZGNyAvKiBQcm94eVNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVhYTQwNTczOTJmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPHd0Zi9Gb3J3
YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsK
KworICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0
ZXJuYXRpdmVzPiYpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgTlNUZXh0QWx0ZXJuYXRp
dmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgdm9p
ZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisKK3ByaXZhdGU6
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IG1f
YWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWRhMzU4
MzE0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Fs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoQVBQS2l0KQorI2ltcG9ydCA8
QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK0FsdGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjp+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIoKSA9IGRlZmF1bHQ7CisKK3VpbnQ2NF90IEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZl
cz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dChjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgYXV0byByZXN1bHQg
PSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAg
ICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9
CisKK05TVGV4dEFsdGVybmF0aXZlcyAqQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6
OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICByZXR1cm4g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZ2V0KGNvbnRleHQpLmdldCgpOworfQorCit2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVt
b3ZlKGNvbnRleHQpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjpjbGVhcigpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmgKaW5kZXggMjljNWE4ZGE3ZWUuLmNjZmZkODg5ZGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oCkBAIC0yNSw0OSArMjUsNDIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQogI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCiBPQkpDX0NMQVNTIE5T
VGV4dEFsdGVybmF0aXZlczsKIE9CSkNfQ0xBU1MgTlNWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEZsb2F0UmVjdDsKKwogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KLSAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4K
LSAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBhZGRBbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsgLy8gUmV0dXJucyBh
IGNvbnRleHQgSUQuCisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFj
Y2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKworICAgIHVzaW5nIEFjY2VwdGFuY2VIYW5k
bGVyID0gdm9pZCAoXikoTlNTdHJpbmcgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93
QWx0ZXJuYXRpdmVzKE5TVmlldyAqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmlt
YXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCBBY2NlcHRhbmNlSGFuZGxlcik7CisKICAgICB2
b2lkIFdFQkNPUkVfRVhQT1JUIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KTsK
KwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRl
eHQodWludDY0X3QgY29udGV4dCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250
ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKLQorI2lmIFVTRShBUFBLSVQpCisgICAgdm9pZCBo
YW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nICosIHVpbnQ2NF90IGNvbnRleHQsIE5T
VGV4dEFsdGVybmF0aXZlcyAqKTsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAot
ICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgewotICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEFsZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIoKSB7IH0KLSAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7Ci0gICAgICAgIHZvaWQgY2xl
YXIoKTsKLSAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpOwotICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNv
bnRleHQodWludDY0X3QgY29udGV4dCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBp
bnZhbGlkQ29udGV4dCA9IDA7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPj4gSGFzaE1hcFR5cGU7Ci0g
ICAgICAgIEhhc2hNYXBUeXBlIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOwotICAgIH07Ci0KLSAg
ICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CiAg
ICAgUmV0YWluUHRyPE5TVmlldz4gbV92aWV3OworI2VuZGlmCisgICAgQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCnNpbWlsYXJpdHkgaW5kZXggNjUlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbQpyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIubW0KaW5kZXggM2YxYmE1MGE3Y2YuLjBlYTI1MmU2ZmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDM5ICsyNywxOSBAQAogI2ltcG9ydCAiQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmgiCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKwor
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKworI2lmIFVTRShBUFBLaXQpCiAjaW1wb3J0
IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KICNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5h
dGl2ZXMuaD4KICNpbXBvcnQgPEFwcEtpdC9OU1ZpZXcuaD4KKyNlbGlmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgor
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykK
LXsKLSAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oYWx0
ZXJuYXRpdmVzLmdldCgpKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBpbnZh
bGlkQ29udGV4dDsKLSAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0KLSAgICBIYXNoTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0LCBhbHRlcm5hdGl2ZXMpOwot
ICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQgOiBpbnZhbGlkQ29udGV4dDsK
LX0KLQotTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFs
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dCkKLXsKLSAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZ2V0
KGNvbnRleHQpLmdldCgpOwotfQotCi12b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0KQotewotICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJl
bW92ZShjb250ZXh0KTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFs
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKCkKLXsKLSAgICBtX2FsdGVybmF0
aXZlc09iamVjdE1hcC5jbGVhcigpOwotfQotCiB1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiYgYWx0ZXJuYXRpdmVzKQogewogICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFk
ZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOwpAQCAtNjcsMTAgKzQ3LDExIEBAIHVpbnQ2NF90
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFp
blB0cjxOU1RleHRBbHRlCiAKIFZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQogewotICAgIE5T
VGV4dEFsdGVybmF0aXZlcyogdGV4dEFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIu
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMg
KnRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNv
bnRleHQoY29udGV4dCk7CiAgICAgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVTdHJpbmdzOwot
ICAgIGZvciAoTlNTdHJpbmcqIHN0cmluZyBpbiB0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZl
U3RyaW5ncykKLSAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzLmFwcGVuZChzdHJpbmcpOworICAg
IGFsdGVybmF0aXZlU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRleHRBbHRlcm5hdGl2
ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzLmNvdW50KTsKKyAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcg
aW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCisgICAgICAgIGFsdGVybmF0
aXZlU3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoc3RyaW5nKTsKICAgICByZXR1cm4gYWx0ZXJuYXRp
dmVTdHJpbmdzOwogfQogCkBAIC03OSw0MiArNjAsNTAgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI6OmNsZWFyKCkKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVh
cigpOwogfQogCi12b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0
aXZlcyhOU1ZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlT
dHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmlu
ZyopKQordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMo
TlNWaWV3ICp2aWV3LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5n
LCB1aW50NjRfdCBjb250ZXh0LCBBY2NlcHRhbmNlSGFuZGxlciBhY2NlcHRhbmNlSGFuZGxlcikK
IHsKKyNpZiBVU0UoQVBQS0lUKQogICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKICAgICBpZiAo
IXZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlldyA9IHZpZXc7Ci0gICAgTlNUZXh0
QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0
aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKmFsdGVy
bmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250
ZXh0KTsKICAgICBpZiAoIWFsdGVybmF0aXZlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9y
T2ZUeXBlOk5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6YWx0
ZXJuYXRpdmVzLnByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlcy5h
bHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5U3Ry
aW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2Vw
dGVkU3RyaW5nKSB7CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNo
b3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOk5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVHdWVz
c2VzIHByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmVzLnByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVT
dHJpbmdzOmFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJv
dW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNTdHJpbmcgKmFjY2VwdGVkU3RyaW5nKSB7CiAgICAgICAgIGlmIChhY2NlcHRlZFN0
cmluZykgewogICAgICAgICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0
cmluZywgY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKICAgICAgICAgICAgIGFjY2VwdGFuY2VIYW5k
bGVyKGFjY2VwdGVkU3RyaW5nKTsKICAgICAgICAgfQogICAgIH1dOworI2VuZGlmCiB9CiAKLXZv
aWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZl
KE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRB
bHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlcykKKyNpZiBVU0UoQVBQS0lUKQorCit2b2lkIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmlu
ZyAqYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRp
dmVzICphbHRlcm5hdGl2ZXMpCiB7CiAgICAgW2FsdGVybmF0aXZlcyBub3RlU2VsZWN0ZWRBbHRl
cm5hdGl2ZVN0cmluZzphY2NlcHRlZEFsdGVybmF0aXZlXTsKICAgICBtX2NvbnRleHRDb250cm9s
bGVyLnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Ci0gICAgbV92aWV3LmNs
ZWFyKCk7CisgICAgbV92aWV3ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5hdGl2ZXMoKQogewotICAgIGlmICghbV92aWV3KQot
ICAgICAgICByZXR1cm47Ci0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJd
IGRpc21pc3NDb3JyZWN0aW9uSW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0KCldOworICAgIGlm
IChtX3ZpZXcpCisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBk
aXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgpXTsKIH0KIAorI2Vu
ZGlmCisKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2
ZXModWludDY0X3QgY29udGV4dCkKIHsKICAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFs
dGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiB9Ci19CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKwogI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4
IGE2Zjc3NjkyYzAwLi5jYjBlY2QxZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaApAQCAtMjYsMjAgKzI2LDI5IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCitAY2xhc3MgTlNUZXh0QWx0
ZXJuYXRpdmVzOwogQGNsYXNzIFdLV2ViVmlldzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBB
dHRhY2htZW50OwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQYWdlQ2xp
ZW50SW1wbENvY29hIDogcHVibGljIFBhZ2VDbGllbnQgewogcHVibGljOgotICAgIFBhZ2VDbGll
bnRJbXBsQ29jb2EoV0tXZWJWaWV3ICp3ZWJWaWV3KQotICAgICAgICA6IG1fd2ViVmlldyh3ZWJW
aWV3KSB7IH0KKyAgICBQYWdlQ2xpZW50SW1wbENvY29hKFdLV2ViVmlldyAqKTsKKyAgICB2aXJ0
dWFsIH5QYWdlQ2xpZW50SW1wbENvY29hKCk7CisKKyAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVy
cmlkZTsKKwogICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkgZmluYWw7CiAgICAg
dm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwogCkBAIC01Myw4ICs2MiwxNyBA
QCBwdWJsaWM6CiAgICAgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAg
ICB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4
dEFsdGVybmF0aXZlcz4mKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKKyAgICBWZWN0b3I8U3RyaW5n
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgZmluYWw7
CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV93ZWJW
aWV3OworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCBlN2Q3MzgyZGI1Yi4u
NDA5NDljMmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAtMjksOSArMjksMjQgQEAKICNpbXBvcnQgIldLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCIKKyNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8V2Vi
Q29yZS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorUGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYShXS1dl
YlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcgeyB3ZWJWaWV3IH0KKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
IHsgbWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkgfQorI2VuZGlmCit7
Cit9CisKK1BhZ2VDbGllbnRJbXBsQ29jb2E6On5QYWdlQ2xpZW50SW1wbENvY29hKCkgPSBkZWZh
dWx0OworCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OmlzUGxheWluZ0F1ZGlvV2lsbENoYW5n
ZSgpCiB7CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6TlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKF9pc1BsYXlpbmdBdWRpbykpXTsKQEAgLTgwLDUgKzk1LDMyIEBA
IE5TU2V0ICpQYWdlQ2xpZW50SW1wbENvY29hOjpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNz
ZXMoKSBjb25zdAogfQogCiAjZW5kaWYKKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdl
Q2xvc2VkKCkKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci0+Y2xlYXIoKTsKKyNlbmRpZgorfQorCisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisKK3VpbnQ2NF90IFBhZ2VDbGllbnRJbXBsQ29jb2E6OmFk
ZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVz
PiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK3ZvaWQgUGFnZUNsaWVu
dEltcGxDb2NvYTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnJlbW92ZUFs
dGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKworVmVjdG9yPFN0cmluZz4gUGFnZUNs
aWVudEltcGxDb2NvYTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworfQorCisjZW5kaWYKKwogICAg
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGUzZmYzMGNlODJiLi5h
M2NlZGY1OTBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzUzLDYg
KzM1MywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdlYkNvcmU6
OkZvY3VzRGlyZWN0aW9uKSB7IH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
ICAgIHZpcnR1YWwgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFp
blB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdl
ZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5I
YXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKSA9IDA7CkBAIC0zNzYsMTggKzM4
MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOU1ZpZXcgKmluc3BlY3RvckF0dGFjaG1lbnRW
aWV3KCkgPSAwOwogICAgIHZpcnR1YWwgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9i
amVjdFJlZ2lzdHJ5KCkgPSAwOwogCi0jaWYgVVNFKEFQUEtJVCkKICAgICB2aXJ0dWFsIHZvaWQg
aW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50
cmluc2ljQ29udGVudFNpemUpID0gMDsKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
LSAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwotI2VuZGlmIC8vIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorCiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQog
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKLSNl
bmRpZiAvLyBVU0UoSU5TRVJUSU9OX1VORE9fR1JPVVBJTkcpCi0jZW5kaWYgLy8gVVNFKEFQUEtJ
VCkKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNl
ZChib29sKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDVhM2E3YWJmNTk3Li45
N2YzZjVlYjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3
OwogT0JKQ19DTEFTUyBXS0VkaXRvclVuZG9UYXJnZXQ7CitPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIDogdWludDhfdDsKQEAgLTc3LDcgKzc4LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAgICAgdm9pZCBncHVQcm9jZXNzQ3Jhc2hlZCgpIG92ZXJyaWRlOwog
I2VuZGlmCi0gICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcmVmZXJl
bmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBjb25zdCBGcmFt
ZUluZm9EYXRhJiwgRnVuY3Rpb248dm9pZChib29sKT4mKSBvdmVycmlkZTsKQEAgLTI2Miw2ICsy
NjIsMTAgQEAgcHJpdmF0ZToKICAgICBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVUb3Vj
aElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgb3Zl
cnJpZGU7CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZv
aWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYWtP
YmpDUHRyPFdLQ29udGVudFZpZXc+IG1fY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRp
dG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA4OTIzOWY3OTRmMy4uMmZjZTBj
NTUxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KQEAgLTIzMywxMSArMjMzLDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6Z3B1UHJv
Y2Vzc0NyYXNoZWQoKQogfQogI2VuZGlmCiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9z
ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6
OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTYz
LDYgKzk1OCwxNSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVBdXRvY29ycmVjdGlvbkNv
bnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JgogICAgIFttX2NvbnRlbnRWaWV3
IF9oYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlv
bkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgdWludDY0X3QpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggMGRjYTg3MDZkNDIuLmYwY2Mz
OGE0ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIEBjbGFzcyBXS0VkaXRvclVuZG9UYXJnZXQ7CiBAY2xh
c3MgV0tWaWV3OwpAQCAtMTgwLDExICsxODAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW50cmlu
c2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50cmluc2lj
Q29udGVudFNpemUpIG92ZXJyaWRlOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
Ci0gICAgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJy
aWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNlbmRpZgorCiAgICAgdm9pZCBzZXRFZGl0YWJs
ZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoSU5TRVJUSU9OX1VO
RE9fR1JPVVBJTkcpCkBAIC0yNjcsOSArMjY1LDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoQVVUT0NP
UlJFQ1RJT05fUEFORUwpCiAgICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOwog
I2VuZGlmCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI7Ci0jZW5kaWYKIAogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0ZpcnN0
UmVzcG9uZGVyQ2hhbmdlcyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGFmMzc2YWU2NTNhLi4wMzE5MmQ3
NmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQpAQCAtNzksMTMgKzc5LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25C
dWJibGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KICNpbXBv
cnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotI2ltcG9ydCA8QXBwS2l0L05T
VGV4dEFsdGVybmF0aXZlcy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
I2VuZGlmCkBAIC0xMDMsMjAgKzEwMCwxNiBAQCBAZW5kCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYWdlQ2xpZW50SW1wbDo6UGFn
ZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCitQYWdlQ2xpZW50
SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3ICp2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCiAg
ICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3ZpZXcodmlldykKLSNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQotI2Vu
ZGlmCiB7CiB9CiAKLVBhZ2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKQotewotfQorUGFn
ZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpID0gZGVmYXVsdDsKIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2V0SW1wbChXZWJWaWV3SW1wbCYgaW1wbCkKIHsKQEAgLTI2Niw5ICsyNTksNyBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkRXhpdCgpCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpwYWdlQ2xvc2VkKCkKIHsKICAgICBtX2ltcGwtPnBhZ2VDbG9zZWQoKTsKLSNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci0+Y2xlYXIoKTsKLSNlbmRpZgorICAgIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQo
KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAgLTY4
NCwxNSArNjc1LDYgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZykKIH0KIAogI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQotdWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlv
bkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJu
YXRpdmVzKQotewotICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWRk
QWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OnJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQotewot
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGlj
dGF0aW9uQ29udGV4dCk7Ci19CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3Rh
dGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKIHsKQEAgLTcwMywxMCArNjg1LDYg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGkKICAgICB9KTsKIH0KIAotVmVjdG9yPFN0cmluZz4g
UGFnZUNsaWVudEltcGw6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQotewotICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0
ZXJuYXRpdmVzRm9yQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKLX0KICNlbmRpZgogCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJs
ZUVsZW1lbnRJc0ZvY3VzZWQpCi0tIAoyLjI0LjEgKEFwcGxlIEdpdC0xMjYpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392737</attachid>
            <date>2020-03-06 09:55:23 -0800</date>
            <delta_ts>2020-03-07 10:40:18 -0800</delta_ts>
            <desc>Part 2: For the bots</desc>
            <filename>ShareInsertDictatedTextAsync.patch</filename>
            <type>text/plain</type>
            <size>14738</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA5OGI3YmQxYmE3NmJlMTQzNDc1NmU3N2UzM2QyNGYxMDc3Mzc5MmJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDYgTWFyIDIwMjAgMDk6NDI6MzcgLTA4MDAKU3ViamVjdDogW1BBVENIXSBNb3ZlIGlu
c2VydERpY3RhdGVkVGV4dEFzeW5jKCkgdG8gQ29jb2EKCi0tLQogLi4uL1BBTC9wYWwvc3BpL2Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oIHwgMjUgKysrKysrKysrKysrKysrCiAuLi4vVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAgICAgfCAzMiArKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgfCAg
MSArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgNiAr
Ky0tCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tICAgfCAzMSAt
LS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tICB8IDE4ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggICAgfCAgMyArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluICAgIHwgIDQgKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tICAgICAgfCAxOSAtLS0tLS0tLS0tLQogOSBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRp
b25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCmluZGV4IDBmZjMzNDUxNWUx
Li42YzY2ZTIzYTU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29j
b2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKQEAgLTI5LDggKzI5LDMxIEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0IDxVSUtpdC9OU1RleHRBbHRlcm5hdGl2
ZXMuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPFVJS2l0L05T
QXR0cmlidXRlZFN0cmluZ19Qcml2YXRlLmg+CisKKyNlbHNlCisKICNpbXBvcnQgPFVJS2l0L05T
QXR0cmlidXRlZFN0cmluZy5oPgogCitAaW50ZXJmYWNlIE5TVGV4dEFsdGVybmF0aXZlcyA6IE5T
T2JqZWN0CistIChpZClpbml0V2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nICopcHJpbWFyeVN0
cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5hdGl2
ZVN0cmluZ3M7CistIChpZClpbml0V2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nICopcHJpbWFy
eVN0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5h
dGl2ZVN0cmluZ3MgaXNMb3dDb25maWRlbmNlOihCT09MKWxvd0NvbmZpZGVuY2U7CisKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHkpIE5TU3RyaW5nICpwcmltYXJ5U3RyaW5nOworQHByb3BlcnR5IChyZWFk
b25seSkgTlNBcnJheTxOU1N0cmluZyAqPiAqYWx0ZXJuYXRpdmVTdHJpbmdzOworQHByb3BlcnR5
IChyZWFkb25seSkgQk9PTCBpc0xvd0NvbmZpZGVuY2U7CitAZW5kCisKK1dURl9FWFRFUk5fQ19C
RUdJTgorZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRl
TmFtZTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhVSUZvdW5kYXRpb24pCiAKIFNPRlRf
TElOS19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5TRm9udEF0dHJpYnV0ZU5hbWUsIE5TU3RyaW5n
ICopCkBAIC05NSw2ICsxMTgsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoVUlGb3VuZGF0aW9uLCBO
U0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlLCBOU1N0cmluZyAqKQogI2RlZmluZSBO
U0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlIGdldE5TQmFja2dyb3VuZENvbG9yRG9j
dW1lbnRBdHRyaWJ1dGUoKQogU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlvbiwgTlNNYXJr
ZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgTlNTdHJpbmcgKikKICNkZWZpbmUgTlNNYXJr
ZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSBnZXROU01hcmtlZENsYXVzZVNlZ21lbnRBdHRy
aWJ1dGVOYW1lKCkKK1NPRlRfTElOS19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5TVGV4dEFsdGVy
bmF0aXZlc0F0dHJpYnV0ZU5hbWUsIE5TU3RyaW5nICopCisjZGVmaW5lIE5TVGV4dEFsdGVybmF0
aXZlc0F0dHJpYnV0ZU5hbWUgZ2V0TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSgpCiAK
IC8vIFdlIGRvbid0IHNvZnRsaW5rIE5TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lIGJlY2F1c2Ug
VUlGb3VuZGF0aW9uIHN0b3BwZWQgZXhwb3J0aW5nIGl0LgogLy8gVGhpcyBhdHRyaWJ1dGUgaXMg
YmVpbmcgZGVwcmVjYXRlZCBhdCB0aGUgQVBJIGxldmVsLCBidXQgaW50ZXJuYWxseSBVSUZvdW5k
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggYTM2ZWVkMjFjYjQuLjA3YzkwMTZlY2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjksNiAr
MjksNyBAQAogI2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgogI2ltcG9ydCAiQVBJVUlDbGllbnQu
aCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIKKyNpbXBvcnQgIkluc2VydFRleHRP
cHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGFnZUNsaWVu
dC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCkBAIC0xNjEsNiArMTYyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgZHJhZ0l0ZW0sIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGEKICAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKGRyYWdJdGVt
LCBkcmFnSW1hZ2VIYW5kbGUpOwogfQogCisvLyBGSVhNRTogTW92ZSB0aGVzZSBmdW5jdGlvbnMg
dG8gV2ViUGFnZVByb3h5SU9TLm1tLgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90KQpAQCAtMjI1LDYgKzIyNywzNiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rp
b24oKQogICAgIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3dlYlBhZ2VJRCk7CiB9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9y
PFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5n
ZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzOwor
ICAgIGZvciAoY29uc3QgYXV0byYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgOiBkaWN0YXRpb25BbHRl
cm5hdGl2ZXNXaXRoUmFuZ2UpIHsKKyAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9
IHBhZ2VDbGllbnQoKS5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFu
Z2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRpY3RhdGlvbkNvbnRleHQpCisgICAgICAg
ICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlIHsg
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0aFJhbmdl
LnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCB9KTsKKyAgICB9CisKKyAgICBpZiAoZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgeworICAgICAgICBJbnNlcnRUZXh0T3B0aW9u
cyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJV
bmRvR3JvdXA7CisKKyAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFu
Z2UsIFdURk1vdmUob3B0aW9ucykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jIHsg
dGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVu
ZG9Hcm91cCB9LCBtX3dlYlBhZ2VJRCk7CisjZWxzZQorICAgIEluc2VydFRleHRPcHRpb25zIG9w
dGlvbnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3Vw
OworCisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUo
b3B0aW9ucykpOworI2VuZGlmCit9CiAgICAgCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTI4YTUwMDQ1YWEuLjk1
Zjg1ZjQ2ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTg1MzksNiArODUzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6
OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFu
Z2VGb250KFdURk1vdmUoY2hhbmdlcykpKTsKIH0KIAorLy8gRklYTUU6IE1vdmUgdGhlc2UgZnVu
Y3Rpb25zIHRvIFdlYlBhZ2VQcm94eUNvY29hLm1tLgogI2lmIFBMQVRGT1JNKENPQ09BKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjg4MTlhOTUxMDguLjcxZTBkMGQ2
Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODUyLDcgKzg1
MiwxMCBAQCBwdWJsaWM6CiAgICAgQ0FMYXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RM
YXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIEluc2VydFRleHRPcHRpb25zJiYpOworCisgICAgdm9p
ZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBs
YWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKKyAgICB2b2lkIGluc2VydERpY3Rh
dGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1l
bnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4m
LCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKwogICAgIHZvaWQgaGFzTWFya2VkVGV4dChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5
bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQg
KEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwpAQCAtODcwLDcgKzg3Myw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlv
bkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAgICAgdm9pZCBhdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rp
b24oRnVuY3Rpb248dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCA4YWQyYmExZTg5Ni4uYjcyMDkxNDZmMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTg0LDM3ICsx
ODQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wg
aXNTY3JvbGxhYmxlKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRN
YWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV93ZWJQYWdlSUQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2Us
IGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCi17Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCi0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKLQot
ICAgIGZvciAoY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2ZVdpdGhS
YW5nZSA6IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSkgewotICAgICAgICB1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0ID0gcGFnZUNsaWVudCgpLmFkZERpY3RhdGlvbkFsdGVybmF0aXZl
cyhhbHRlcm5hdGl2ZVdpdGhSYW5nZS5hbHRlcm5hdGl2ZXMpOwotICAgICAgICBpZiAoZGljdGF0
aW9uQ29udGV4dCkKLSAgICAgICAgICAgIGRpY3RhdGlvbkFsdGVybmF0aXZlcy5hcHBlbmQoRGlj
dGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFs
dGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkpOwotICAg
IH0KLQotICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIG9wdGlvbnMucmVnaXN0ZXJVbmRv
R3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKLQotICAgICAgICBpbnNlcnRUZXh0QXN5bmModGV4
dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzLCByZWdpc3RlclVuZG9Hcm91cCksIG1fd2ViUGFnZUlEKTsKLSNlbHNlCi0gICAgSW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVn
aXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICBpbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRS
YW5nZSwgV1RGTW92ZShvcHRpb25zKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6
OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYs
IGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5k
ZXggOWM0ZjZjMGNmMTIuLjFjYWY2YThkNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xODksNiArMTg5
LDI0IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0Zv
clJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1
cEluZm87CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKK3sKKyAgICBhdXRv
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IgeyBmcmFtZSB9OworCisgICAgaWYgKHJlcGxhY2Vt
ZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGF1dG8gcmVw
bGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRF
ZGl0aW5nUmFuZ2UpOworICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKKyAgICAgICAgICAg
IGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsgKnJlcGxh
Y2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZIH0pOworICAgIH0KKworICAgIGlmIChy
ZWdpc3RlclVuZG9Hcm91cCkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZyB7IH0pOworCisgICAgQVNTRVJUKCFmcmFtZS5l
ZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnREaWN0
YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG51bGxwdHIgLyog
dHJpZ2dlcmluZ0V2ZW50ICovKTsKK30KKwogdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKIHsKICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVRva2VuID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9r
ZW4gbGVuZ3RoXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggNzA3ZmM2YmRhNDIuLmE5MWViYjgxM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04NDQsMTAgKzg0NCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBhY2Nl
cHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVu
dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgcGVyZm9ybU5v
bkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OktleWJv
YXJkRXZlbnQqKTsKKworICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZl
TG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgPSBmYWxzZSk7CiAgICAgdm9pZCBh
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFu
Z2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihDYWxsYmFja0lEKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggYjRhZWE3NTU1NGQuLmEwOTA5MTE1ZGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTQ1Miw3ICs0NTIsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBBY2NlcHRz
Rmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogCiAgICAgU2V0VGV4dEFzeW5jKFN0cmluZyB0
ZXh0KQorCiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpF
ZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgc3RydWN0IFdlYktpdDo6SW5zZXJ0VGV4dE9w
dGlvbnMgb3B0aW9ucykKKyAgICBJbnNlcnREaWN0YXRlZFRleHRBc3luYyhTdHJpbmcgdGV4dCwg
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIFZlY3RvcjxXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKQorCiAgICAgSGFzTWFya2VkVGV4dCgpIC0+IChib29sIGhhc01hcmtl
ZFRleHQpIEFzeW5jCiAgICAgR2V0TWFya2VkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCkBAIC00NjIsNyArNDY1LDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6
OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCkKICAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3Qg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KTsKICAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggMTI5YjAxYWI5NWEuLjBhNmQzOGRiMTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzIwLDI1
ICszMjAsNiBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4odWlu
dDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aQogICAgIH0KIH0KIAotdm9pZCBXZWJQ
YWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBi
b29sIHJlZ2lzdGVyVW5kb0dyb3VwKQotewotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBSZWY8RnJhbWU+IHBy
b3RlY3RvcihmcmFtZSk7Ci0KLSAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRp
b24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdl
ID0gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7
Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQotICAgICAgICAgICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFuZ2UsIFNF
TF9ERUZBVUxUX0FGRklOSVRZKSk7Ci0gICAgfQotCi0gICAgaWYgKHJlZ2lzdGVyVW5kb0dyb3Vw
KQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVySW5zZXJ0aW9u
VW5kb0dyb3VwaW5nKCkpOwotICAgIAotICAgIEFTU0VSVCghZnJhbWUuZWRpdG9yKCkuaGFzQ29t
cG9zaXRpb24oKSk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQs
IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyKTsKLX0KLQogdm9pZCBXZWJQ
YWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZy
YW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0tIAoyLjI0LjEgKEFwcGxlIEdpdC0xMjYpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392854</attachid>
            <date>2020-03-07 00:23:53 -0800</date>
            <delta_ts>2020-03-07 10:40:18 -0800</delta_ts>
            <desc>All in one - for the bots</desc>
            <filename>AllInOne-ForBots.diff</filename>
            <type>text/plain</type>
            <size>69031</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDAwMTEwMjExMzg2Li5kMmMwNjUzNDBmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVVzZS5oCkBAIC0yNzEsOSArMjcxLDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2Rl
ZmluZSBVU0VfTUVESUFSRU1PVEUgMQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCiAjZGVm
aW5lIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5o
CmluZGV4IDBmZjMzNDUxNWUxLi4zMTIyMzI1NTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKQEAgLTk1
LDYgKzk1LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlvbiwgTlNCYWNrZ3JvdW5k
Q29sb3JEb2N1bWVudEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKICNkZWZpbmUgTlNCYWNrZ3JvdW5k
Q29sb3JEb2N1bWVudEF0dHJpYnV0ZSBnZXROU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmli
dXRlKCkKIFNPRlRfTElOS19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5TTWFya2VkQ2xhdXNlU2Vn
bWVudEF0dHJpYnV0ZU5hbWUsIE5TU3RyaW5nICopCiAjZGVmaW5lIE5TTWFya2VkQ2xhdXNlU2Vn
bWVudEF0dHJpYnV0ZU5hbWUgZ2V0TlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSgp
CitTT0ZUX0xJTktfQ09OU1RBTlQoVUlGb3VuZGF0aW9uLCBOU1RleHRBbHRlcm5hdGl2ZXNBdHRy
aWJ1dGVOYW1lLCBOU1N0cmluZyAqKQorI2RlZmluZSBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1
dGVOYW1lIGdldE5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUoKQogCiAvLyBXZSBkb24n
dCBzb2Z0bGluayBOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZSBiZWNhdXNlIFVJRm91bmRhdGlv
biBzdG9wcGVkIGV4cG9ydGluZyBpdC4KIC8vIFRoaXMgYXR0cmlidXRlIGlzIGJlaW5nIGRlcHJl
Y2F0ZWQgYXQgdGhlIEFQSSBsZXZlbCwgYnV0IGludGVybmFsbHkgVUlGb3VuZGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDRiNmFmZjIzNjE1Li5i
OGJlMDU4OWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJ
S2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgK
QEAgLTMyLDYgKzMyLDcgQEAgV1RGX0VYVEVSTl9DX0VORAogI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKICNpbXBvcnQgPFVJS2l0L05TUGFyYWdyYXBoU3R5bGVfUHJpdmF0ZS5oPgorI2lt
cG9ydCA8VUlLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjaW1wb3J0IDxVSUtpdC9OU1RleHRB
dHRhY2htZW50X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L05TVGV4dExpc3QuaD4KICNpbXBv
cnQgPFVJS2l0L1VJQXBwbGljYXRpb25TY2VuZUNvbnN0YW50cy5oPgpAQCAtOTgsNiArOTksMTUg
QEAgdHlwZWRlZiBlbnVtIHsKIC0gKE5TU3RyaW5nICopbWFya2VyRm9ySXRlbU51bWJlcjooTlNJ
bnRlZ2VyKWl0ZW1OdW07CiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNUZXh0QWx0ZXJuYXRpdmVzIDog
TlNPYmplY3QKKy0gKGlkKWluaXRXaXRoUHJpbWFyeVN0cmluZzooTlNTdHJpbmcgKilwcmltYXJ5
U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsdGVybmF0
aXZlU3RyaW5nczsKKy0gKGlkKWluaXRXaXRoUHJpbWFyeVN0cmluZzooTlNTdHJpbmcgKilwcmlt
YXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsdGVy
bmF0aXZlU3RyaW5ncyBpc0xvd0NvbmZpZGVuY2U6KEJPT0wpbG93Q29uZmlkZW5jZTsKKworQHBy
b3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcgKnByaW1hcnlTdHJpbmc7CitAcHJvcGVydHkgKHJl
YWRvbmx5KSBOU0FycmF5PE5TU3RyaW5nICo+ICphbHRlcm5hdGl2ZVN0cmluZ3M7CitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBCT09MIGlzTG93Q29uZmlkZW5jZTsKK0BlbmQKKwogQGludGVyZmFjZSBV
SUFwcGxpY2F0aW9uICgpCiAtIChCT09MKV9pc0NsYXNzaWM7CiArIChVSUFwcGxpY2F0aW9uU2Nl
bmVDbGFzc2ljTW9kZSlfY2xhc3NpY01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0
YTA5MmQ4OGZmOC4uZjgzZWFjZDk0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNzks
NiArNzksOCBAQCBkb20vaW9zL1RvdWNoRXZlbnRzLmNwcAogZWRpdGluZy9TZWxlY3Rpb25SZWN0
R2F0aGVyZXIuY3BwCiBlZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAogCitlZGl0aW5nL2NvY29h
L0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCitlZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQogZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRz
LmNwcAogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2NvY29hL0RpY3Rp
b25hcnlMb29rdXAubW0KQEAgLTk0LDExICs5NiwxMCBAQCBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQogZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKIGVk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQogCi1lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIubW0KIGVkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KIGVkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQogZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0KLWVk
aXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQorZWRpdGluZy9tYWMvVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tIEBuby11bmlmeQogZWRpdGluZy9tYWMvVGV4dFVuZG9JbnNl
cnRpb25NYXJrdXBNYWMubW0KIAogZmlsZWFwaS9GaWxlQ29jb2EubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzFlMDUxYjll
My4uODI0MDlhNDdlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzksNiArNDIzOSw3IEBACiAJCUNFMUE1MDFGMjJENTM1
MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9N
VGltZXJIb2xkaW5nVGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNB
MzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87
IH07CisJCUNFNDU5NDZGMjQxMjNDOTYwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U0NTk0NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTUxNjlFNTIxRjFCODQ3MDBFQTRGNzgg
LyogQ29sb3JJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTVGQTI1NTIwOUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTVGQTI1MzIwOUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U2REFE
RkExQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFE
RjgxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00
MjUyLDYgKzQyNTMsNyBAQAogCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJE
QjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFN0UxNzgzMUM4M0E0
OTEwMEFEMDZBRiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdFMTc4MjFDODNBNDkxMDBBRDA2QUYg
LyogQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFODhFREZDMjQxMzhDNjMwMDdGMjlDMiAvKiBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLm1tICovOyB9OwogCQlDRUEyODQ2NjIxNDFFODQ5MDBFNDA3RTggLyogUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjYwMUVCRTE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3Rv
cnlJT1MubW0gKi87IH07CiAJCUNFQkI4QzMzMjA3ODZEQ0IwMDAzOTU0NyAvKiBGZXRjaElkaW9t
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQjhD
MzEyMDc4NkRDQjAwMDM5NTQ3IC8qIEZldGNoSWRpb21zLmggKi87IH07CiAJCUNFQ0FERkM3MTUz
Nzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE0MTQyLDYgKzE0MTQ0LDggQEAKIAkJQ0UyMTIxNTQyNDBEQkQz
MDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0
OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1
OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTUxNjlF
NjIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b2xvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2
RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV2ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE2Myw4
ICsxNDE2Nyw4IEBACiAJCUNFNzk5RkFBMUM2QTUwNjYwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaDsgcGF0aCA9
IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFN0E2QzI2MjA4NTM3RTIwMEZBMkI0NiAvKiBTYW1lU2l0
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtZVNpdGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFN0E2QzI3MjA4NTM3RTIwMEZBMkI0NiAvKiBTYW1lU2l0ZUluZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2FtZVNpdGVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQ0U3QjJEQUYxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0U3QjJE
QjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQUYxNTg2QUJB
RDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3QjJEQjExNTg2QUJBRDAwOThC
M0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3
RTE3ODIxQzgzQTQ5MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5o
OyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxMjg0LDYgKzIxMjg4LDEwIEBACiAJCTdDM0U1MTA3MThERjhGMTIw
MEMxMTJGNyAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0U0NTk0NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyLmggKi8sCisJCQkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICovLAorCQkJCUNFN0IyREFGMTU4NkFCQUQw
MDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRTdCMkRC
MDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovLAog
CQkJCTVDQ0MyNzA3MjJENTNCNjkwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmNwcCAqLywK
IAkJCQk1Q0NDMjcwNjIyRDUzQjY4MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50cy5oICovLAog
CQkJCUM1MjI3REVGMUMzQzZERDcwMEY1RUQ1NCAvKiBEYXRhRGV0ZWN0aW9uLmggKi8sCkBAIC0y
NzMxNyw4ICsyNzMyNSw2IEBACiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNFN0IyREFGMTU4
NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKLQkJCQlD
RTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1t
ICovLAogCQkJCTkzN0ZGM0Q0MUExMDEyRDYwMDhFQkEzMSAvKiBEaWN0aW9uYXJ5TG9va3VwLmgg
Ki8sCiAJCQkJNDQyOTU2Q0EyMThBNkQzMDAwODBEQjU0IC8qIERpY3Rpb25hcnlMb29rdXBMZWdh
Y3kubW0gKi8sCiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAq
LywKQEAgLTMxOTA2LDYgKzMxOTEyLDcgQEAKIAkJCQlFNEJCRUQwRjE0RjQwMjVEMDAzRjBCOTgg
LyogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
N0JBQUU1ODE5ODBEMUREMDA1REZFNzEgLyogUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTRDNzY3NTBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlQmFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzJBREEzODE5
N0Y0N0I5MDBGQzUwMUUgLyogUHJvdGVjdGlvblNwYWNlQ29jb2EuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxQTA1MjU2MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUY4RTExQTEyNTY1OTI2MDAyMzBGRjcgLyogUHJveHlTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMzM4NDcsNiArMzM4NTQsNyBAQAogCQkJCURFNUY4NTk3MUZB
MUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDctbW0ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MzhFQzhBMDFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQ3LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCURFNUY4NTk4MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgt
bW0ubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTg4RURGQzI0MTM4QzYzMDA3RjI5QzIgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTExRjk5
M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlE
RTVGODU5OTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ5LW1tLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RUM4QTIxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0OS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MjZlZTU3NDRhLi5lYzIyMTZkN2FkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCkBAIC00Nyw2ICs0NywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKwor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCisKK2NvbnN0ZXhwciBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1h
cmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKK3sKKyAgICByZXR1cm4g
RG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb247Cit9CisKKyNlbmRpZgorCiAj
aWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogCiBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBdXRvY29ycmVjdGlvbigp
CkBAIC01OSwxMSArNjksNiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIHsg
RG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2lu
Z0V4ZW1wdGlvbiB9OwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUo
KQotewotICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbjsK
LX0KLQogc3RhdGljIGJvb2wgbWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb25zdCBW
ZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAgIGlmIChtYXJr
ZXJzLmlzRW1wdHkoKSkKQEAgLTE4Nyw1NiArMTkyLDYgQEAgU3RyaW5nIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwgY29u
c3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5
cGUsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNUb0Fk
ZCkKLXsKLSAgICBhdXRvIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5n
ZS5jbG9uZVJhbmdlKCk7Ci0KLSAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLnB0cigpLCBzdGFydE9mUGFyYWdyYXBoKHJhbmdlLnN0YXJ0UG9zaXRpb24oKSkp
OwotICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigpLCBl
bmRPZlBhcmFncmFwaChyYW5nZS5lbmRQb3NpdGlvbigpKSk7Ci0KLSAgICAvLyBBZnRlciB3ZSBy
ZXBsYWNlIHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlLCB3ZSBuZWVkIHRv
IGFkZCBtYXJrZXJzIHRvIHRoYXQgcmFuZ2UuCi0gICAgLy8gSG93ZXZlciwgb25jZSB0aGUgcmVw
bGFjZW1lbnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlIGlz
IG5vdCB2YWxpZCBhbnltb3JlLgotICAgIC8vIFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQgdGhlIHJl
cGxhY2VtZW50LCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdp
dGhBbHRlcm5hdGl2ZQotICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0
aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBh
cmFncmFwaAotICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9idGFpbiB0
aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQotICAgIC8vIHdoaWNo
IHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9zaXRpb24g
b2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJ
blBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOwotCi0gICAgUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7Ci0g
ICAgaWYgKCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2Rl
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNldEVuZFJlc3VsdCA9IGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS0+c2V0RW5kKCpzdGFydFBvc2l0aW9uT2ZSYW5n
ZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCksIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0
aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7Ci0gICAgaWYgKHNl
dEVuZFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGFr
ZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNhbiBh
ZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBjb3Jy
ZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
Y29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0cigpKTsKLQotICAgIC8v
IENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgd2Fu
dCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCi0gICAgYXV0byByYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKLQotICAgIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlID0gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3Vt
ZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24t
PnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0
YXJ0T2Zmc2V0KCkpLnB0cigpKTsKLSAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVh
dGUocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKLSAgICAvLyBS
ZWNhbGN1bGF0ZSBwcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmln
aW5hbCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxp
ZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFn
cmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVjdGlv
blN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYg
KCF1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVjdGlv
blN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBTdHJp
bmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKLQotICAgIC8v
IENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKG5ld1RleHQg
IT0gYWx0ZXJuYXRpdmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKS5tYXJrZXJzKCk7Ci0KLSAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5
cGVzVG9BZGQpCi0gICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJhbmdlLCBt
YXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0
ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7Ci19Ci0KIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKQog
ewogICAgIGlmICghbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSB8fCAhbV9pc0FjdGl2ZSkKQEAgLTQ0
OSwxMSArNDA0LDYgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9V
bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24KICAgICBtYXJrZXJzLmFkZE1h
cmtlcihyYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQog
Ci1BbHRlcm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVy
bmF0aXZlVGV4dENsaWVudCgpCi17Ci0gICAgcmV0dXJuIG1fZnJhbWUucGFnZSgpID8gbV9mcmFt
ZS5wYWdlKCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpIDogbnVsbHB0cjsKLX0KLQogRWRpdG9y
Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAg
IHJldHVybiBtX2ZyYW1lLnBhZ2UoKSA/ICZtX2ZyYW1lLnBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCkg
OiBudWxscHRyOwpAQCAtNjA3LDE0ICs1NTcsNzcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2VuZGlmIC8vIFVTRShBVVRPQ09SUkVDVElPTl9QQU5F
TCkKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJ
T05fUEFORUwpCisKK0FsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS5wYWdl
KCkgPyBtX2ZyYW1lLnBhZ2UoKS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkgOiBudWxscHRyOwor
fQorCiBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25G
b3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVU
ZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKIHsKLQorI2lm
IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBpZiAoYWx0ZXJuYXRpdmVUZXh0VHlwZSAh
PSBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uICYmIGFsdGVybmF0aXZlVGV4dFR5cGUgIT0g
QWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyAmJiAobWFya2VyVHlwZSA9
PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1h
cmtlcjo6QXV0b2NvcnJlY3RlZCkpCiAgICAgICAgIHJldHVybiBtX29yaWdpbmFsVGV4dDsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGFsdGVybmF0aXZlVGV4dFR5cGUpOworICAgIFVOVVNFRF9Q
QVJBTShtYXJrZXJUeXBlKTsKKyNlbmRpZgogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
Cit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9S
YW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVy
bmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzVG9BZGQpCit7CisgICAgYXV0byBwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gcmFuZ2UuY2xvbmVSYW5nZSgpOworCisgICAgc2V0U3Rh
cnQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5wdHIoKSwgc3RhcnRPZlBhcmFn
cmFwaChyYW5nZS5zdGFydFBvc2l0aW9uKCkpKTsKKyAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5wdHIoKSwgZW5kT2ZQYXJhZ3JhcGgocmFuZ2UuZW5kUG9zaXRp
b24oKSkpOworCisgICAgLy8gQWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5n
ZVdpdGhBbHRlcm5hdGl2ZSwgd2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgor
ICAgIC8vIEhvd2V2ZXIsIG9uY2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1
ZSBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KKyAgICAvLyBT
byBiZWZvcmUgd2UgY2Fycnkgb3V0IHRoZSByZXBsYWNlbWVudCwgd2UgbmVlZCB0byBzdG9yZSB0
aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUKKyAgICAvLyByZWxhdGl2
ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1
c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgKKyAgICAvLyB0byBzdG9yZSB0aGlz
IHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3Qg
Y3JlYXRlIGEgcmFuZ2UKKyAgICAvLyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJh
Z3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgorICAg
IGF1dG8gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigp
LmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlv
bigpKTsKKworICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZl
ID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOworICAgIGlmICghc3RhcnRQb3NpdGlvbk9mUmFuZ2VX
aXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBzZXRFbmRSZXN1bHQgPSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2Ut
PnNldEVuZCgqc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9k
ZSgpLCBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb21wdXRlT2Zmc2V0SW5D
b250YWluZXJOb2RlKCkpOworICAgIGlmIChzZXRFbmRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0
b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1l
bnQgdG9vayBwbGFjZS4KKyAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdy
YXBoQXNSYW5nZS5wdHIoKSk7CisKKyAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBj
YWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2Ug
YXJvdW5kLgorICAgIGF1dG8gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdl
KCk7CisKKyAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsK
KyAgICBpbnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
UmFuZ2U6OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3Jh
cGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CisgICAgU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRl
cm5hdGl2ZSktPmFwcGx5KCk7CisgICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVk
IHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTog
ODk1MjYKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBh
cmFncmFwaFN0YXJ0SW5kZXgsIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0
ZXJuYXRpdmUubGVuZ3RoKCkpOworICAgIGlmICghdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNldEVuZCh1cGRhdGVkUGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbiwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0
aXZlLmxlbmd0aCgpKTsKKyAgICBTdHJpbmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVu
dFJhbmdlLmdldCgpKTsKKworICAgIC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNj
ZWVkZWQuCisgICAgaWYgKG5ld1RleHQgIT0gYWx0ZXJuYXRpdmUpCisgICAgICAgIHJldHVybjsK
KworICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCk7CisKKyAgICBmb3IgKGF1
dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9BZGQpCisgICAgICAgIG1hcmtlcnMuYWRkTWFy
a2VyKCpyZXBsYWNlbWVudFJhbmdlLCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFw
cGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7Cit9CisK
ICNlbmRpZgogCiBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVk
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5k
ZXggMTczYzkwOWYwYzMuLmYwY2RmN2Y3NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaApAQCAtMTE1LDEwICsxMTUsOCBAQCBw
cml2YXRlOgogICAgIH07CiAKICAgICBTdHJpbmcgZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlz
c2luZ0FsdGVybmF0aXZlVGV4dCk7Ci0gICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFu
Z2UoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5hdGl2ZVRl
eHRUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KTsKICAgICB2b2lk
IHRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9k
aWZpZWRDb3JyZWN0aW9uKFJhbmdlJiByYW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBj
b3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7Ci0gICAgU3RyaW5nIG1hcmtlckRl
c2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAKICAgICBib29sIHNob3VsZFN0YXJ0VGltZXJG
b3IoY29uc3QgRG9jdW1lbnRNYXJrZXImLCBpbnQgZW5kT2Zmc2V0KSBjb25zdDsKICAgICBib29s
IHJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJiwgY29uc3Qg
UG9zaXRpb24mIGVuZE9mV29yZFBvc2l0aW9uKTsKQEAgLTE0MSw2ICsxMzksMTEgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9vcmlnaW5hbFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rp
b247CiAgICAgUG9zaXRpb24gbV9wb3NpdGlvbkZvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb247
CiAjZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgfHwgVVNFKEFVVE9DT1JS
RUNUSU9OX1BBTkVMKQorICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRl
cm5hdGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGUpOworICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiwg
Y29uc3QgU3RyaW5nJiwgQWx0ZXJuYXRpdmVUZXh0VHlwZSwgT3B0aW9uU2V0PERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlPik7CisgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2
ZVRleHRDbGllbnQoKTsKKyNlbmRpZgogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5oCnNpbWlsYXJpdHkgaW5kZXggNjElCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKY29weSB0byBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgKaW5kZXgg
YTZmNzc2OTJjMDAuLmVhYTQwNTczOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDM2ICsyNSwz
NSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKLSNpbmNsdWRl
IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKIAot
QGNsYXNzIFdLV2ViVmlldzsKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYv
SGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIEF0dGFjaG1lbnQ7Ci19CitPQkpD
X0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIAotbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBhZ2VDbGllbnRJbXBsQ29jb2EgOiBwdWJsaWMgUGFnZUNs
aWVudCB7CitjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZUNsaWVudEltcGxDb2NvYShX
S1dlYlZpZXcgKndlYlZpZXcpCi0gICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpIHsgfQotICAg
IHZvaWQgaXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkgZmluYWw7Ci0gICAgdm9pZCBpc1BsYXlp
bmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyKCk7CiAKLSAgICBib29sIHNjcm9sbGluZ1VwZGF0ZXNEaXNh
YmxlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKIAotI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCi0gICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50KEFQSTo6QXR0YWNobWVu
dCYsIGNvbnN0IFN0cmluZyYgc291cmNlKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlbW92ZUF0dGFj
aG1lbnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRJbnZhbGlkYXRlRGF0
YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7Ci0gICAgTlNGaWxlV3JhcHBl
ciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgZmluYWw7Ci0gICAgTlNTZXQgKnNl
cmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFsOwotI2VuZGlmCisgICAg
dm9pZCBjbGVhcigpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBt
X3dlYlZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBp
bnZhbGlkQ29udGV4dCA9IDA7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOwogfTsK
IAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Fs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCnNpbWlsYXJpdHkgaW5kZXggNTMlCmNv
cHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW0KY29weSB0byBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGFlYTU4Zjg5NGY4Li4zNTMwZGJhMTFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMzIgKzIyLDUyIEBACiAgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwogI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCIKKyNpbXBvcnQgIkFsdGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgiCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKEFQUEtpdCkK
ICNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbGlmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlcywgTlNSYW5n
ZSBhUmFuZ2UpCi06IHJhbmdlKGFSYW5nZSkKLSwgYWx0ZXJuYXRpdmVzKGFuQWx0ZXJuYXRpdmVz
KQorQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OkFsdGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCitBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJv
bGxlcjo6fkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCit1
aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCiB7Cisg
ICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGFsdGVybmF0
aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gaW52YWxpZENv
bnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAg
IHJldHVybiBjb250ZXh0OworICAgIGF1dG8gcmVzdWx0ID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RN
YXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05ld0Vu
dHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OwogfQogCi12b2lkIGNvbGxlY3REaWN0YXRp
b25UZXh0QWx0ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8VGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRpdmVzKSB7Ci0gICAgTlNSYW5nZSBlZmZl
Y3RpdmVSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwotICAgIE5TVUludGVnZXIgbGVuZ3RoID0g
W3N0cmluZyBsZW5ndGhdOwotICAgIGRvIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDplZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiBl
ZmZlY3RpdmVSYW5nZTomZWZmZWN0aXZlUmFuZ2VdOwotICAgICAgICBpZiAoIWF0dHJpYnV0ZXMp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0
ZXJuYXRpdmVzID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVGV4dEFsdGVybmF0aXZlc0F0
dHJpYnV0ZU5hbWVdOwotICAgICAgICBpZiAodGV4dEFsdGVybmF0aXZlcykKLSAgICAgICAgICAg
IGFsdGVybmF0aXZlcy5hcHBlbmQoVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKHRleHRBbHRlcm5h
dGl2ZXMsIGVmZmVjdGl2ZVJhbmdlKSk7Ci0gICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9u
ID0gTlNNYXhSYW5nZShlZmZlY3RpdmVSYW5nZSk7Ci0gICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFu
Z2UubG9jYXRpb24gPCBsZW5ndGgpOworTlNUZXh0QWx0ZXJuYXRpdmVzICpBbHRlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0KQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5nZXQoY29udGV4dCku
Z2V0KCk7CiB9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92
ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7CiB9Ci0jZW5kaWYKKwordm9pZCBBbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIG1fYWx0ZXJuYXRp
dmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCnNpbWls
YXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI5YzVhOGRhN2Vl
Li5jY2ZmZDg4OWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMjUsNDkgKzI1LDQyIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCi0jaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0KICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworI2lt
cG9ydCAiQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNT
IE5TVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFJlY3Q7CisKIGNs
YXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgeyB9Ci0g
ICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCi0gICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3Qg
YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7Cisg
ICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRB
bHRlcm5hdGl2ZXM+Jik7IC8vIFJldHVybnMgYSBjb250ZXh0IElELgorCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGVhcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0
aXZlcyhOU1ZpZXcqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5n
LCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJpbmcqKSk7
CisKKyAgICB1c2luZyBBY2NlcHRhbmNlSGFuZGxlciA9IHZvaWQgKF4pKE5TU3RyaW5nICopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcgKiwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwg
QWNjZXB0YW5jZUhhbmRsZXIpOworCiAgICAgdm9pZCBXRUJDT1JFX0VYUE9SVCByZW1vdmVBbHRl
cm5hdGl2ZXModWludDY0X3QgY29udGV4dCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0
ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKik7Ci0K
KyNpZiBVU0UoQVBQS0lUKQorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0
cmluZyAqLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMgKik7CiAgICAgdm9p
ZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKLSAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVi
bGljOgotICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgeyB9Ci0gICAg
ICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJu
YXRpdmVzPiYpOwotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIE5TVGV4dEFsdGVybmF0
aXZlcyogYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KTsKLSAgICAgICAg
dm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOwotICAg
ICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaW52YWxpZENvbnRleHQgPSAwOwotICAgIHByaXZh
dGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFs
dGVybmF0aXZlcz4+IEhhc2hNYXBUeXBlOwotICAgICAgICBIYXNoTWFwVHlwZSBtX2FsdGVybmF0
aXZlc09iamVjdE1hcDsKLSAgICB9OwotCi0gICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJv
bGxlciBtX2NvbnRleHRDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU1ZpZXc+IG1fdmlldzsK
KyNlbmRpZgorICAgIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1fY29udGV4dENv
bnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bQpzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KcmVuYW1lIHRvIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCmluZGV4IDNm
MWJhNTBhN2NmLi4wZjgwOTk0ZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcs
MTkgQEAKICNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIgogCiAjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CisKKyNpZiBVU0UoQVBQS2l0KQogI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CiAj
aW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjaW1wb3J0IDxBcHBLaXQvTlNW
aWV3Lmg+CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8cGFsL3NwaS9pb3Mv
VUlLaXRTUEkuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVpbnQ2NF90IEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBh
bHRlcm5hdGl2ZXMpCi17Ci0gICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAg
ICByZXR1cm4gaW52YWxpZENvbnRleHQ7Ci0gICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQo
Y29udGV4dCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0OwotCi0gICAgSGFzaE1hcFR5cGU6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0
ZXJuYXRpdmVzKTsKLSAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52
YWxpZENvbnRleHQ7Ci19Ci0KLU5TVGV4dEFsdGVybmF0aXZlcyogQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNG
b3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVz
T2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQoKTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVy
bmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKLXsKLSAgICBtX2FsdGVybmF0aXZl
c09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7Ci19Ci0KLXZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpjbGVhcigpCi17Ci0g
ICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKLX0KLQogdWludDY0X3QgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5T
VGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKIHsKICAgICByZXR1cm4gbV9jb250ZXh0
Q29udHJvbGxlci5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKQEAgLTY3LDEwICs0Nywx
MSBAQCB1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZl
cyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZQogCiBWZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4
dCkKIHsKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIHRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRl
eHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisgICAgTlNUZXh0
QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0
aXZlU3RyaW5nczsKLSAgICBmb3IgKE5TU3RyaW5nKiBzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZl
cy5hbHRlcm5hdGl2ZVN0cmluZ3MpCi0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy5hcHBlbmQo
c3RyaW5nKTsKKyAgICBhbHRlcm5hdGl2ZVN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0
ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncy5jb3VudCk7CisgICAgZm9yIChOU1N0
cmluZyAqc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzKQorICAg
ICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7CiAgICAgcmV0
dXJuIGFsdGVybmF0aXZlU3RyaW5nczsKIH0KIApAQCAtNzksNDIgKzYwLDU1IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcigpCiAgICAgcmV0dXJuIG1fY29udGV4dENv
bnRyb2xsZXIuY2xlYXIoKTsKIH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6
OnNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiB2aWV3LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFu
ZGxlcikoTlNTdHJpbmcqKSkKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93
QWx0ZXJuYXRpdmVzKE5TVmlldyAqdmlldywgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIgYWNjZXB0
YW5jZUhhbmRsZXIpCiB7CisjaWYgVVNFKEFQUEtJVCkKICAgICBkaXNtaXNzQWx0ZXJuYXRpdmVz
KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZpZXcgPSB2aWV3
OwotICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJv
bGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOworCisgICAgTlNUZXh0QWx0ZXJu
YXRpdmVzICphbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVj
dGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmlt
YXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczph
bHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0Jv
eE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
U3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRp
Y2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5n
IGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0
cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICphY2NlcHRlZFN0cmluZykgewogICAgICAgICBp
ZiAoYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAgICAgICAgIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRp
dmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CiAgICAgICAgICAgICBh
Y2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmluZyk7CiAgICAgICAgIH0KICAgICB9XTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHZpZXcpOworICAgIFVOVVNFRF9QQVJBTShib3VuZGluZ0Jv
eE9mUHJpbWFyeVN0cmluZyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNF
RF9QQVJBTShhY2NlcHRhbmNlSGFuZGxlcik7CisjZW5kaWYKIH0KIAotdm9pZCBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFj
Y2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyog
YWx0ZXJuYXRpdmVzKQorI2lmIFVTRShBUFBLSVQpCisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nICphY2NlcHRlZEFs
dGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMgKmFsdGVybmF0
aXZlcykKIHsKICAgICBbYWx0ZXJuYXRpdmVzIG5vdGVTZWxlY3RlZEFsdGVybmF0aXZlU3RyaW5n
OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOwogICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0
ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKLSAgICBtX3ZpZXcuY2xlYXIoKTsKKyAgICBt
X3ZpZXcgPSBudWxscHRyOwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
ZGlzbWlzc0FsdGVybmF0aXZlcygpCiB7Ci0gICAgaWYgKCFtX3ZpZXcpCi0gICAgICAgIHJldHVy
bjsKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJl
Y3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAgaWYgKG1fdmlldykKKyAg
ICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0
aW9uSW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0KCldOwogfQogCisjZW5kaWYKKwogdm9pZCBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBj
b250ZXh0KQogewogICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChjb250ZXh0KTsKIH0KLX0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5k
aWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KaW5kZXggYWVhNThm
ODk0ZjguLmQ5NmRmMDE3OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTkgQEAKICNpbXBv
cnQgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisKKyNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVy
bmF0aXZlcy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBh
bkFsdGVybmF0aXZlcywgTlNSYW5nZSBhUmFuZ2UpCi06IHJhbmdlKGFSYW5nZSkKLSwgYWx0ZXJu
YXRpdmVzKGFuQWx0ZXJuYXRpdmVzKQorVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzICphbkFsdGVybmF0aXZlcywgTlNS
YW5nZSBhUmFuZ2UpCisgICAgOiByYW5nZSB7IGFSYW5nZSB9CisgICAgLCBhbHRlcm5hdGl2ZXMg
eyBhbkFsdGVybmF0aXZlcyB9CiB7CiB9CiAKQEAgLTQ5LDUgKzU1LDcgQEAgdm9pZCBjb2xsZWN0
RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVj
dG9yPFRleHRBbHQKICAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01heFJhbmdl
KGVmZmVjdGl2ZVJhbmdlKTsKICAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiA8
IGxlbmd0aCk7CiB9Ci19CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgK
aW5kZXggYTZmNzc2OTJjMDAuLmNiMGVjZDFkZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCkBAIC0yNiwyMCArMjYsMjkg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKK0BjbGFzcyBOU1Rl
eHRBbHRlcm5hdGl2ZXM7CiBAY2xhc3MgV0tXZWJWaWV3OwogCiBuYW1lc3BhY2UgQVBJIHsKIGNs
YXNzIEF0dGFjaG1lbnQ7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBh
Z2VDbGllbnRJbXBsQ29jb2EgOiBwdWJsaWMgUGFnZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgUGFn
ZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKndlYlZpZXcpCi0gICAgICAgIDogbV93ZWJWaWV3
KHdlYlZpZXcpIHsgfQorICAgIFBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJWaWV3ICopOworICAg
IHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsQ29jb2EoKTsKKworICAgIHZvaWQgcGFnZUNsb3NlZCgp
IG92ZXJyaWRlOworCiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKSBmaW5hbDsK
ICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CiAKQEAgLTUzLDggKzYy
LDE3IEBAIHB1YmxpYzoKICAgICBOU1NldCAqc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2Vz
KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorICAgIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOworICAgIFZlY3RvcjxT
dHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBm
aW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBt
X3dlYlZpZXc7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCmluZGV4IGU3ZDczODJk
YjViLi40MDk0OWMyZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBAIC0yOSw5ICsyOSwyNCBAQAogI2ltcG9ydCAi
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgorI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0
IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgorI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29h
KFdLV2ViVmlldyAqd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyB7IHdlYlZpZXcgfQorI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIgeyBtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSB9CisjZW5k
aWYKK3sKK30KKworUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VDbGllbnRJbXBsQ29jb2EoKSA9
IGRlZmF1bHQ7CisKIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6aXNQbGF5aW5nQXVkaW9XaWxs
Q2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX2lzUGxheWluZ0F1ZGlvKSldOwpAQCAtODAsNSArOTUs
MzIgQEAgTlNTZXQgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVy
Q2xhc3NlcygpIGNvbnN0CiB9CiAKICNlbmRpZgorCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6
OnBhZ2VDbG9zZWQoKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5jbGVhcigpOworI2VuZGlmCit9CisKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKwordWludDY0X3QgUGFnZUNsaWVudEltcGxDb2Nv
YTo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+cmVt
b3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCitWZWN0b3I8U3RyaW5nPiBQ
YWdlQ2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIt
PmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKKyNlbmRpZgor
CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCmluZGV4IGEzNmVlZDIxY2I0Li45M2FiY2FmM2JkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI5
LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xp
ZW50LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisjaW1wb3J0ICJJbnNlcnRU
ZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VD
bGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgpAQCAtNDQsNiArNDUsMTAgQEAK
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+
CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTYxLDYgKzE2Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzdGFydERyYWcoY29uc3QgRHJhZ0l0ZW0mIGRyYWdJdGVtLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhCiAgICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhkcmFnSXRlbSwgZHJhZ0lt
YWdlSGFuZGxlKTsKIH0KIAorLy8gRklYTUU6IE1vdmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBh
Z2VQcm94eUlPUy5tbS4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCkKQEAgLTIyNSw2ICsyMzEsMzcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAg
ICAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25h
cnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UsIGJvb2wg
cmVnaXN0ZXJVbmRvR3JvdXApCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGFsdGVybmF0aXZlV2l0aFJhbmdlIDogZGljdGF0aW9uQWx0ZXJuYXRpdmVz
V2l0aFJhbmdlKSB7CisgICAgICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBwYWdlQ2xp
ZW50KCkuYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVy
bmF0aXZlcyk7CisgICAgICAgIC8vIEVESVRPUiAoREFCKTogRml4IHVwIERpY3RhdGlvbkFsdGVy
bmF0aXZlIHRvIGF2b2lkIHRoZSBjYXN0IHRvIHVuc2lnbmVkLgorICAgICAgICBpZiAoZGljdGF0
aW9uQ29udGV4dCkKKyAgICAgICAgICAgIGRpY3RhdGlvbkFsdGVybmF0aXZlcy5hcHBlbmQoRGlj
dGF0aW9uQWx0ZXJuYXRpdmUgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWx0ZXJuYXRpdmVXaXRo
UmFuZ2UucmFuZ2UubG9jYXRpb24pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWx0ZXJuYXRpdmVX
aXRoUmFuZ2UucmFuZ2UubGVuZ3RoKSwgZGljdGF0aW9uQ29udGV4dCB9KTsKKyAgICB9CisKKyAg
ICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgeworICAgICAgICBJbnNlcnRU
ZXh0T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0g
cmVnaXN0ZXJVbmRvR3JvdXA7CisKKyAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4
dEFzeW5jIHsgdGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBy
ZWdpc3RlclVuZG9Hcm91cCB9LCBtX3dlYlBhZ2VJRCk7CisjZWxzZQorICAgIEluc2VydFRleHRP
cHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVy
VW5kb0dyb3VwOworCisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2Us
IFdURk1vdmUob3B0aW9ucykpOworI2VuZGlmCit9CiAgICAgCiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGUzZmYzMGNlODJiLi5i
NGRjYmViZmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNTQsMTMg
KzU0LDEzIEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsK
IE9CSkNfQ0xBU1MgTlNNZW51OwogT0JKQ19DTEFTUyBOU1NldDsKK09CSkNfQ0xBU1MgTlNUZXh0
QWx0ZXJuYXRpdmVzOwogT0JKQ19DTEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOwogT0JKQ19DTEFT
UyBXS0RyYXdpbmdWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAog
I2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIFdLVmlldzsKLU9CSkNfQ0xBU1MgTlNUZXh0QWx0
ZXJuYXRpdmVzOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMzUzLDYgKzM1MywxMyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKSB7
IH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdWludDY0
X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KSA9IDA7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0
dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5D
b21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hh
c0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRT
dGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgUGx1Z2luQ29t
cGxleFRleHRJbnB1dFN0YXRlKSA9IDA7CkBAIC0zNzYsMTggKzM4MywxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBOU1ZpZXcgKmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCkgPSAwOwogICAgIHZp
cnR1YWwgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCkgPSAw
OwogCi0jaWYgVVNFKEFQUEtJVCkKICAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljQ29udGVudFNp
emVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50cmluc2ljQ29udGVudFNpemUp
ID0gMDsKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICB2aXJ0dWFsIHVpbnQ2
NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJu
YXRpdmVzPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7Ci0gICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgPSAwOwotI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorCiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKLSNlbmRpZiAvLyBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyNlbmRpZgorCiAgICAg
dmlydHVhbCB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSA9IDA7CiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBlMjhhNTAwNDVhYS4uMzc3MDgzN2RkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODM1NSw2ICs4MzU1LDI1IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKQogCiAjZW5kaWYKIAorI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Rp
Y3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHBhZ2VD
bGllbnQoKS5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRU
ZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHBh
Z2VDbGllbnQoKS5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwYWdlQ2xp
ZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpKTsKK30KKworI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdWJzdGl0dXRp
b25zUGFuZWxJc1Nob3dpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTgzOTIsMjMgKzg0MTEsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJl
c3VsdCkpOwogfQogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KQotewotICAgIHBhZ2VDbGllbnQoKS5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGlu
Z0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBXZWJQYWdl
UHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KQotewotICAgIHBhZ2VDbGllbnQoKS5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGlj
dGF0aW9uQ29udGV4dCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihwYWdlQ2xpZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRl
eHQpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVtZW50
SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQogewogICAgIHBhZ2VDbGll
bnQoKS5zZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZWRpdGFibGVFbGVtZW50SXNGb2N1c2Vk
KTsKQEAgLTg1MzksNiArODU0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdl
YkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpKTsKIH0KIAorLy8gRklYTUU6IE1vdmUgdGhl
c2UgZnVuY3Rpb25zIHRvIFdlYlBhZ2VQcm94eUNvY29hLm1tLgogI2lmIFBMQVRGT1JNKENPQ09B
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjg4MTlhOTUxMDguLjQz
MTBhZDc1Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODUy
LDcgKzg1MiwxMCBAQCBwdWJsaWM6CiAgICAgQ0FMYXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIEluc2VydFRleHRPcHRpb25zJiYpOworCisg
ICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKKyAgICB2b2lkIGluc2Vy
dERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZT4mLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKwogICAgIHZvaWQgaGFzTWFya2VkVGV4
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9u
PHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwpAQCAtODcwLDcg
Kzg3Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5n
ZXMmJik7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRB
c3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRS
YW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAgICAgdm9pZCBh
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFu
Z2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBmb250QXRT
ZWxlY3Rpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCkBAIC0yMDY5LDYgKzIwNzEsMTIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogI2VuZGlmCiAKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVk
VGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCByZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBkaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJf
dCBwYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNl
bWVudFN0cmluZ3MpOwpAQCAtMjA3NiwxMiArMjA4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCi0gICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3Rh
dGlvbkNvbnRleHQpOwotICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpOwotICAgIHZvaWQgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYpOwotI2VuZGlmCi0KICAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9j
dXNlZChib29sKTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNWEzYTdhYmY1OTcuLjk3
ZjNmNWViMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaApAQCAtMzQsNiArMzQsNyBAQAogCiBPQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7
CiBPQkpDX0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJu
YXRpdmVzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNz
UmVzcG9uc2UgOiB1aW50OF90OwpAQCAtNzcsNyArNzgsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKLSAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHByZWZlcmVu
Y2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIG92ZXJyaWRlOwpAQCAtMjYyLDYgKzI2
MiwxMCBAQCBwcml2YXRlOgogICAgIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNo
SWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSBvdmVy
cmlkZTsKICNlbmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9p
ZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgV2Vha09i
akNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0
b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDg5MjM5Zjc5NGYzLi4yZmNlMGM1
NTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQpAQCAtMjMzLDExICsyMzMsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpncHVQcm9j
ZXNzQ3Jhc2hlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3Nl
ZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05NjMs
NiArOTU4LDE1IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmCiAgICAgW21fY29udGVudFZpZXcg
X2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dDpjb250ZXh0XTsKIH0KIAorI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9u
QWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1aW50NjRfdCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjVm
MGU2NTZlOWYuLjAyMTcwYTBjNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTExMCw2ICsxMTAsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgpAQCAtNDc0Miw2ICs0NzQzLDE4IEBA
IC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3RyaW5nVmFsdWUKICAgICBfcGFnZS0+
aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RG
TW92ZShvcHRpb25zKSk7CiB9CiAKKy0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3Ry
aW5nVmFsdWUgYWx0ZXJuYXRpdmVzOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWx0ZXJuYXRpdmVz
IHN0eWxlOihVSVRleHRBbHRlcm5hdGl2ZVN0eWxlKXN0eWxlCit7CisgICAgaWYgKCFhbHRlcm5h
dGl2ZXMuY291bnQpCisgICAgICAgIFtzZWxmIGluc2VydFRleHQ6YVN0cmluZ1ZhbHVlXTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQk9PTCBpc0xvd0NvbmZpZGVuY2UgPSBzdHlsZSA9PSBVSVRleHRB
bHRlcm5hdGl2ZVN0eWxlTG93Q29uZmlkZW5jZTsKKyAgICAgICAgYXV0byB0ZXh0QWx0ZXJuYXRp
dmVzID0gYWRvcHROUyhbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5
U3RyaW5nOmFTdHJpbmdWYWx1ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzIGlzTG93
Q29uZmlkZW5jZTppc0xvd0NvbmZpZGVuY2VdKTsKKyAgICAgICAgV2ViQ29yZTo6VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlIHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7IHRleHRBbHRlcm5hdGl2
ZXMuZ2V0KCksIE5TTWFrZVJhbmdlKDAsIGFTdHJpbmdWYWx1ZS5sZW5ndGgpIH07CisgICAgICAg
IF9wYWdlLT5pbnNlcnREaWN0YXRlZFRleHRBc3luYyhhU3RyaW5nVmFsdWUsIFdlYktpdDo6RWRp
dGluZ1JhbmdlIHsgfSwgeyB0ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgfSwgZmFsc2UgLyogcmVn
aXN0ZXJVbmRvR3JvdXAgKi8pOworICAgIH0KK30KKwogLSAoQk9PTCloYXNUZXh0CiB7CiAgICAg
YXV0byYgZWRpdG9yU3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggMGRjYTg3MDZkNDIu
LmYwY2MzOGE0ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIEBjbGFzcyBXS0VkaXRvclVuZG9UYXJnZXQ7
CiBAY2xhc3MgV0tWaWV3OwpAQCAtMTgwLDExICsxODAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
aW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50
cmluc2ljQ29udGVudFNpemUpIG92ZXJyaWRlOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCi0gICAgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFp
blB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
IG92ZXJyaWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNlbmRpZgorCiAgICAgdm9pZCBzZXRF
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCkBAIC0yNjcsOSArMjY1LDYgQEAgcHJpdmF0ZToKICNpZiBVU0Uo
QVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBh
bmVsOwogI2VuZGlmCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI7Ci0jZW5kaWYKIAogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVz
c0ZpcnN0UmVzcG9uZGVyQ2hhbmdlcyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGFmMzc2YWU2NTNhLi4w
MzE5MmQ3NmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQpAQCAtNzksMTMgKzc5LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlk
YXRpb25CdWJibGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotI2ltcG9ydCA8QXBw
S2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5oPgogI2VuZGlmCkBAIC0xMDMsMjAgKzEwMCwxNiBAQCBAZW5kCiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYWdlQ2xpZW50SW1w
bDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCitQYWdl
Q2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3ICp2aWV3LCBXS1dlYlZpZXcgKndlYlZp
ZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3ZpZXcodmll
dykKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigp
KQotI2VuZGlmCiB7CiB9CiAKLVBhZ2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKQotewot
fQorUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpID0gZGVmYXVsdDsKIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0SW1wbChXZWJWaWV3SW1wbCYgaW1wbCkKIHsKQEAgLTI2Niw5ICsy
NTksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkRXhpdCgpCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKIHsKICAgICBtX2ltcGwtPnBhZ2VDbG9zZWQoKTsKLSNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci0+Y2xlYXIoKTsKLSNlbmRpZgorICAgIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VD
bG9zZWQoKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkK
QEAgLTY4NCwxNSArNjc1LDYgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29t
bWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZykKIH0KIAogI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotdWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERp
Y3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYg
YWx0ZXJuYXRpdmVzKQotewotICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudElt
cGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KQotewotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2
ZXMoZGljdGF0aW9uQ29udGV4dCk7Ci19CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0
YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKIHsKQEAgLTcwMywxMCAr
Njg1LDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUko
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGkKICAgICB9KTsKIH0KIAotVmVjdG9yPFN0
cmluZz4gUGFnZUNsaWVudEltcGw6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KQotewotICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci0+YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKLX0KICNlbmRpZgog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBl
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4YWQyYmExZTg5Ni4uYjcyMDkxNDZmMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTg0
LDM3ICsxODQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxl
KGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV93ZWJQYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZl
Y3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRo
UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCi17Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCi0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZl
czsKLQotICAgIGZvciAoY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2
ZVdpdGhSYW5nZSA6IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSkgewotICAgICAgICB1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gcGFnZUNsaWVudCgpLmFkZERpY3RhdGlvbkFsdGVy
bmF0aXZlcyhhbHRlcm5hdGl2ZVdpdGhSYW5nZS5hbHRlcm5hdGl2ZXMpOwotICAgICAgICBpZiAo
ZGljdGF0aW9uQ29udGV4dCkKLSAgICAgICAgICAgIGRpY3RhdGlvbkFsdGVybmF0aXZlcy5hcHBl
bmQoRGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRp
b24sIGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkp
OwotICAgIH0KLQotICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIG9wdGlvbnMucmVnaXN0
ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKLQotICAgICAgICBpbnNlcnRUZXh0QXN5
bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5z
ZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCksIG1fd2ViUGFnZUlEKTsKLSNlbHNlCi0gICAg
SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3Vw
ID0gcmVnaXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICBpbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFj
ZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJQYWdl
UHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0
cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KaW5kZXggOWM0ZjZjMGNmMTIuLjFjYWY2YThkNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xODks
NiArMTg5LDI0IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgcmV0dXJuIGRpY3Rpb25h
cnlQb3B1cEluZm87CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGlu
Z1JhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKK3sKKyAg
ICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IgeyBmcmFtZSB9OworCisgICAgaWYgKHJl
cGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGF1
dG8gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFj
ZW1lbnRFZGl0aW5nUmFuZ2UpOworICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKKyAgICAg
ICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsg
KnJlcGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZIH0pOworICAgIH0KKworICAg
IGlmIChyZWdpc3RlclVuZG9Hcm91cCkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZyB7IH0pOworCisgICAgQVNTRVJUKCFm
cmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5pbnNl
cnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG51bGxw
dHIgLyogdHJpZ2dlcmluZ0V2ZW50ICovKTsKK30KKwogdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmls
aXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKIHsK
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVRva2VuID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVt
b3RlVG9rZW4gbGVuZ3RoXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggNzA3ZmM2YmRhNDIuLmE5MWViYjgxM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04NDQsMTAgKzg0NCwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCBhY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91
c2VFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgcGVy
Zm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6
OktleWJvYXJkRXZlbnQqKTsKKworICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0
ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgPSBmYWxzZSk7CiAgICAg
dm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihDYWxsYmFj
a0lEKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjRhZWE3NTU1NGQuLmEwOTA5MTE1ZGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTQ1Miw3ICs0NTIsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBB
Y2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBl
dmVudCkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogCiAgICAgU2V0VGV4dEFzeW5jKFN0
cmluZyB0ZXh0KQorCiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgc3RydWN0IFdlYktpdDo6SW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9ucykKKyAgICBJbnNlcnREaWN0YXRlZFRleHRBc3luYyhTdHJpbmcg
dGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIFZlY3Rv
cjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBi
b29sIHJlZ2lzdGVyVW5kb0dyb3VwKQorCiAgICAgSGFzTWFya2VkVGV4dCgpIC0+IChib29sIGhh
c01hcmtlZFRleHQpIEFzeW5jCiAgICAgR2V0TWFya2VkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCkBAIC00NjIsNyArNDY1LDYgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBX
ZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVu
ZG9Hcm91cCkKICAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKTsKICAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KaW5kZXggMTI5YjAxYWI5NWEuLjBhNmQzOGRiMTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MzIwLDI1ICszMjAsNiBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVn
aW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aQogICAgIH0KIH0KIAotdm9p
ZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRp
b25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQotewotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBSZWY8RnJh
bWU+IHByb3RlY3RvcihmcmFtZSk7Ci0KLSAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2Uu
bG9jYXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVu
dFJhbmdlID0gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdS
YW5nZSk7Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQotICAgICAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFu
Z2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7Ci0gICAgfQotCi0gICAgaWYgKHJlZ2lzdGVyVW5k
b0dyb3VwKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVySW5z
ZXJ0aW9uVW5kb0dyb3VwaW5nKCkpOwotICAgIAotICAgIEFTU0VSVCghZnJhbWUuZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKSk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0
KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyKTsKLX0KLQogdm9p
ZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggMjg5NzllOGE2ZjUuLjZjOGI0OWZhZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05NDU0LDkgKzk0NTQsMTEgQEAgLSAodm9pZClfZ2V0V2Vi
Q29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlPiYKIAogLSAodm9pZClfc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUk6KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCBmb3JEaWN0YXRpb25D
b250ZXh0Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiB7CisjaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+
c2hvd0FsdGVybmF0aXZlcyhzZWxmLCBbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91
bmRpbmdCb3hPZkRpY3RhdGVkVGV4dF0sIGRpY3RhdGlvbkNvbnRleHQsIF4oTlNTdHJpbmcqIGFj
Y2VwdGVkQWx0ZXJuYXRpdmUpIHsKICAgICAgICAgW3NlbGYgaGFuZGxlQWNjZXB0ZWRBbHRlcm5h
dGl2ZVRleHQ6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CiAgICAgfSk7CisjZW5kaWYKIH0KIAogLSAo
dm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250
ZXh0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392866</attachid>
            <date>2020-03-07 10:40:18 -0800</date>
            <delta_ts>2020-03-07 10:56:08 -0800</delta_ts>
            <desc>Part 1: Share AlternativeTextUIController</desc>
            <filename>Part1.patch</filename>
            <type>text/plain</type>
            <size>41127</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA4MTY3NjIwMjliZjBkMWIzODlhM2MwYjdkNmQ4YTVjNTc0NDY3MTFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTA6Mzk6MjEgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDEKClNvdXJjZS9XZWJDb3JlOgoKUmVuYW1lIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19IHRvIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLntoLCBtbX0KYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1h
YyBhbmQgaU9TLiBJIGFsc28gdG9vayB0aGlzIG9wcG9ydHVuaXR5IHRvIGRvIHNvbWUgdmVyeSBt
aW5vciBtb2Rlcm5pemF0aW9uCmFuZCBjbGVhbnVwIHRvIHRoZXNlIGZpbGVzOiB1c2UgPWRlZmF1
bHQgY29uc3RydWN0b3JzIGFuZCBwdXQgdGhlICogb24gdGhlIHJpZ2h0IHNpZGUgZm9yIE9iamVj
dGl2ZS1DIHR5cGVzLgoKTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9B
TFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGls
ZSBvbiBpdC4KSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVy
IGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBkbyBzby4KCiogU291cmNlc0NvY29hLnR4dDoK
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW06IEFkZGVkLgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6
Y2xlYXIpOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaC4KKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbS4KKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWRkQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmNsZWFyKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hv
d0FsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6Omhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKToKClNvdXJjZS9XZWJLaXQ6CgpNb3ZlIHNv
bWUgb2YgdGhlIFBhZ2VDbGllbnRNYWMgZGljdGF0aW9uIGFsdGVybmF0aXZlcyBjb2RlIHRvIFBh
Z2VDbGllbnRJbXBsQ29jb2Egc28gdGhhdCBpdApjYW4gYmUgc2hhcmVkIHdpdGggaU9TLgoKTm90
ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9T
LCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKY29tcGlsZSBvbiBpdC4gSSB3aWxsIGRv
IHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBp
biBwbGFjZSB0byBkbyBzby4KCiogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
aDoKKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IERl
bGV0ZWQ7IG1vdmVkIHRvIGJlIG91dC1vZi1saW5lIHRvIGF2b2lkCm5lZWRpbmcgdG8gI2luY2x1
ZGUgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUuIERlY2xhcmUg
b3V0LW9mLWxpbmUgZGVzdHJ1Y3Rvcgpmb3IgdGhlIHNhbWUgcmVhc29uLgoqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpQYWdlQ2xpZW50SW1wbENvY29hKTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbENvY29hLmgu
CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQpOgooV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbENvY29hOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBNb3ZlZCBmcm9tIFBh
Z2VDbGllbnRJbXBsTWFjLm1tLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEaXR0by4KKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2Nv
YTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCiogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CiogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJKTogQWRkZWQ7IHN0dWIgZnVuY3Rpb24uCihXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpwYWdlQ2xvc2VkKTogRGVsZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNlIGNs
YXNzIGltcGxlbWVudGF0aW9uLgoqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoK
KiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6UGFnZUNsaWVudEltcGwpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIg
bG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29j
b2EoKS4KKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOiBNb3ZlZCBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29j
b2E6OnBhZ2VDbG9zZWQoKQpzbyBpdCBjYW4gYmUgc2hhcmVkIGFuZCBtb2RpZmllZCB0aGlzIGZ1
bmN0aW9uIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24uCihXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xp
ZW50SW1wbENvY29hLm1tLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0
ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCihXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50
SW1wbENvY29hLm1tLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICB8IDM0ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCAg
ICAgICAgICAgICAgIHwgIDMgKy0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiB8IDEwICsrLQogLi4uL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLmggIHwgNTkgKysrKysrKysrKysrKysrCiAuLi4vY29jb2EvQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIubW0gfCA3MyArKysrKysrKysrKysrKysrKysrCiAuLi4vQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmggICAgICAgICAgICAgfCA0NSArKysrKy0tLS0tLS0KIC4u
Li9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gICAgICAgICAgICB8IDY5ICsrKysrKysr
LS0tLS0tLS0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgNDAgKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
LmggICAgIHwgMjIgKysrKystCiAuLi4vVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EubW0gICAgfCA0MiArKysrKysrKysrKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oICAgICAgICAgIHwgMTkgKystLS0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oICB8ICA2ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gfCAxNCArKy0tCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCAgfCAgOSArLS0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSB8IDMyICsrLS0tLS0tCiAxNSBmaWxlcyBjaGFuZ2VkLCAzNTcgaW5zZXJ0
aW9ucygrKSwgMTIwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXIubW0KIHJlbmFtZSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3tt
YWMgPT4gY29jb2F9L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICg2NCUpCiByZW5hbWUg
U291cmNlL1dlYkNvcmUvZWRpdGluZy97bWFjID0+IGNvY29hfS9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIubW0gKDY1JSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTljNzU4MmVhNzQuLmQ3Y2NmOTUzZWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZv
ciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQYXJ0IDEKKworICAgICAgICBSZW5hbWUgZWRpdGluZy9tYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLntoLCBtbX0gdG8gZWRpdGluZy9jb2NvYS9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIue2gsIG1tfQorICAgICAgICBhcyBpdCBjYW4gYmUgc2hhcmVk
IGJ5IGJvdGggTWFjIGFuZCBpT1MuIEkgYWxzbyB0b29rIHRoaXMgb3Bwb3J0dW5pdHkgdG8gZG8g
c29tZSB2ZXJ5IG1pbm9yIG1vZGVybml6YXRpb24KKyAgICAgICAgYW5kIGNsZWFudXAgdG8gdGhl
c2UgZmlsZXM6IHVzZSA9ZGVmYXVsdCBjb25zdHJ1Y3RvcnMgYW5kIHB1dCB0aGUgKiBvbiB0aGUg
cmlnaHQgc2lkZSBmb3IgT2JqZWN0aXZlLUMgdHlwZXMuCisKKyAgICAgICAgTm90ZSB0aGF0IEkg
aGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNv
LCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGlsZSBvbiBpdC4KKyAgICAgICAgSSB3aWxsIGRv
IHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBp
biBwbGFjZSB0byBkbyBzby4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphZGRBbHRl
cm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNs
ZWFyKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmguCisgICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0uCisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRl
cm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
OjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyk6CisK
IDIwMjAtMDMtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGEwOTJkODhmZjguLmE3ZTBmZDc4MjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTc5LDYgKzc5LDggQEAgZG9tL2lvcy9Ub3VjaEV2
ZW50cy5jcHAKIGVkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAogZWRpdGluZy9TbWFy
dFJlcGxhY2VDRi5jcHAKIAorZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5tbQorZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0K
IGVkaXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAKIGVkaXRpbmcvY29jb2EvRGF0YURl
dGVjdGlvbi5tbQogZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCkBAIC05NCw3ICs5
Niw2IEBAIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCiBlZGl0aW5nL2lv
cy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCiAKLWVk
aXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQogZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cExlZ2FjeS5tbQogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCiBlZGl0aW5n
L21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk3MWUwNTFiOWUzLi41NjBkNzVkZWY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDIzOSw2ICs0MjM5LDcgQEAKIAkJQ0UxQTUwMUYyMkQ1MzUwOTAwQ0JDOTI3IC8qIERP
TVRpbWVySG9sZGluZ1RhbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFMUE1MDFEMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5r
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Uy
MTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTUzMjQwREJEMzAw
MDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsKKwkJQ0U0NTk0NkYy
NDEyM0M5NjAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ2NDI0MTIx
QTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTUxNjlFNzIxRjFC
ODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNUZBMjU1
MjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUZBMjUzMjA5RTQ4QzUw
MDUxRDcwMCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTZEQURGQTFDNTkxRTZBMDAzRjZB
ODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZEQURGODFDNTkxRTZBMDAzRjZB
ODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MTQyLDYgKzE0MTQzLDgg
QEAKIAkJQ0UyMTIxNTQyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0g
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTQ1OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U0NTk0NjUy
NDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAv
KiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTUxNjlFNjIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTI4NCw2ICsyMTI4NywxMCBAQAogCQk3QzNFNTEwNzE4REY4RjEyMDBD
MTEyRjcgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlci5oICovLAorCQkJCUNFNDU5NDY1MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbSAqLywKKwkJCQlDRTdCMkRBRjE1ODZBQkFEMDA5
OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8sCisJCQkJQ0U3QjJEQjAx
NTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLywKIAkJ
CQk1Q0NDMjcwNzIyRDUzQjY5MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50cy5jcHAgKi8sCiAJ
CQkJNUNDQzI3MDYyMkQ1M0I2ODAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuaCAqLywKIAkJ
CQlDNTIyN0RFRjFDM0M2REQ3MDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5oICovLApAQCAtMjcz
MTcsOCArMjczMjQsNiBAQAogCQlFRDUwMURDOTBCMjQ5RjM5MDBBRTE4RDkgLyogbWFjICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlDRTdCMkRBRjE1ODZB
QkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8sCi0JCQkJQ0U3
QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAq
LywKIAkJCQk5MzdGRjNENDFBMTAxMkQ2MDA4RUJBMzEgLyogRGljdGlvbmFyeUxvb2t1cC5oICov
LAogCQkJCTQ0Mjk1NkNBMjE4QTZEMzAwMDgwREI1NCAvKiBEaWN0aW9uYXJ5TG9va3VwTGVnYWN5
Lm1tICovLAogCQkJCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8s
CkBAIC0zMTkwNiw2ICszMTkxMSw3IEBACiAJCQkJRTRCQkVEMEYxNEY0MDI1RDAwM0YwQjk4IC8q
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdC
QUFFNTgxOTgwRDFERDAwNURGRTcxIC8qIFByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE0Qzc2NzUwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZUJhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCUNFNDU5NDZGMjQxMjNDOTYwMDc4MDE5RiAvKiBBbHRlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcyQURBMzgxOTdG
NDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rpb25TcGFjZUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFGOEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjk3NGMzMTkyZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPHd0Zi9Gb3J3
YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsK
KworICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0
ZXJuYXRpdmVzPiYpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgTlNUZXh0QWx0ZXJuYXRp
dmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgdm9p
ZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisKK3ByaXZhdGU6
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IG1f
YWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmM5NjI2
YWEyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Fs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFsdGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyLmgiCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
KworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKEFQUEtpdCkKKyNpbXBvcnQg
PEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OkFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCitBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlcjo6fkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZh
dWx0OworCit1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0
ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2
ZXMpCit7CisgICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+
KGFsdGVybmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4g
aW52YWxpZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkp
CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIGF1dG8gcmVzdWx0ID0gbV9hbHRlcm5hdGl2
ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0dXJuIHJlc3Vs
dC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OworfQorCitOU1RleHRBbHRl
cm5hdGl2ZXMgKkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNG
b3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVz
T2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQoKTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBj
b250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJlbW92ZShjb250ZXh0KTsK
K30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQorewor
ICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmlu
ZGV4IDI5YzVhOGRhN2VlLi5jY2ZmZDg4OWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMjUs
NDkgKzI1LDQyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KICNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKworI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCIK
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2
ZXM7CiBPQkpDX0NMQVNTIE5TVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBG
bG9hdFJlY3Q7CisKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyKCkgeyB9Ci0gICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCi0gICAgV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+Jik7CisgICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgPSBkZWZhdWx0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJl
dGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7IC8vIFJldHVybnMgYSBjb250ZXh0IElELgor
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxl
cikoTlNTdHJpbmcqKSk7CisKKyAgICB1c2luZyBBY2NlcHRhbmNlSGFuZGxlciA9IHZvaWQgKF4p
KE5TU3RyaW5nICopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhO
U1ZpZXcgKiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWlu
dDY0X3QgY29udGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIpOworCiAgICAgdm9pZCBXRUJDT1JFX0VY
UE9SVCByZW1vdmVBbHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4dCk7CisKICAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNv
bnRleHQpOwogCiBwcml2YXRlOgotICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShO
U1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0
ZXJuYXRpdmVzKik7Ci0KKyNpZiBVU0UoQVBQS0lUKQorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZShOU1N0cmluZyAqLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2
ZXMgKik7CiAgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKLSAgICBjbGFzcyBBbGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyKCkgeyB9Ci0gICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5Q
dHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAg
IE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0KTsKLSAgICAgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90
IGNvbnRleHQpOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaW52YWxpZENvbnRleHQg
PSAwOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IEhhc2hNYXBUeXBlOwotICAgICAgICBIYXNoTWFw
VHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKLSAgICB9OwotCi0gICAgQWxlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxO
U1ZpZXc+IG1fdmlldzsKKyNlbmRpZgorICAgIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyIG1fY29udGV4dENvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbQpzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KcmVuYW1l
IHRvIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLm1tCmluZGV4IDNmMWJhNTBhN2NmLi4wZWEyNTJlNmZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNywzOSArMjcsMTkgQEAKICNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oIgogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CisKKyNpZiBVU0UoQVBQS2l0KQogI2ltcG9ydCA8QXBwS2l0L05TU3Bl
bGxDaGVja2VyLmg+CiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjaW1w
b3J0IDxBcHBLaXQvTlNWaWV3Lmg+CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXVpbnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJl
dGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCi17Ci0gICAgdWludDY0
X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQo
KSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7Ci0g
ICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBj
b250ZXh0OwotCi0gICAgSGFzaE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0
aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKLSAgICByZXR1cm4gcmVz
dWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Ci19Ci0KLU5TVGV4dEFs
dGVybmF0aXZlcyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQp
Ci17Ci0gICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQo
KTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dCkKLXsKLSAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7
Ci19Ci0KLXZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjpjbGVhcigpCi17Ci0gICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAu
Y2xlYXIoKTsKLX0KLQogdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRB
bHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0
aXZlcykKIHsKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRlcm5hdGl2ZXMo
YWx0ZXJuYXRpdmVzKTsKQEAgLTY3LDEwICs0NywxMSBAQCB1aW50NjRfdCBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0
ZQogCiBWZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0
aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKIHsKLSAgICBOU1RleHRBbHRlcm5hdGl2
ZXMqIHRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQoY29udGV4dCk7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRp
dmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQp
OwogICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsKLSAgICBmb3IgKE5TU3Ry
aW5nKiBzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCi0gICAg
ICAgIGFsdGVybmF0aXZlU3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKKyAgICBhbHRlcm5hdGl2ZVN0
cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZl
U3RyaW5ncy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGluIHRleHRBbHRlcm5h
dGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzKQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MudW5j
aGVja2VkQXBwZW5kKHN0cmluZyk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZlU3RyaW5nczsKIH0K
IApAQCAtNzksNDIgKzYwLDUwIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpj
bGVhcigpCiAgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuY2xlYXIoKTsKIH0KIAotdm9p
ZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiB2
aWV3LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRf
dCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJpbmcqKSkKK3ZvaWQgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyAqdmlldywg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29u
dGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIgYWNjZXB0YW5jZUhhbmRsZXIpCiB7CisjaWYgVVNFKEFQ
UEtJVCkKICAgICBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3ZpZXcgPSB2aWV3OwotICAgIE5TVGV4dEFsdGVybmF0aXZlcyog
YWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KGNvbnRleHQpOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXMgPSBtX2Nv
bnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiAgICAgaWYg
KCFhbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJl
Y3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmlt
YXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJp
bmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmll
dy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgewor
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbklu
ZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3Ry
aW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5h
dGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJp
bWFyeVN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5n
ICphY2NlcHRlZFN0cmluZykgewogICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAg
ICAgICAgIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQs
IGFsdGVybmF0aXZlcyk7CiAgICAgICAgICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0
cmluZyk7CiAgICAgICAgIH0KICAgICB9XTsKKyNlbmRpZgogfQogCi12b2lkIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNj
ZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKiBh
bHRlcm5hdGl2ZXMpCisjaWYgVVNFKEFQUEtJVCkKKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcgKmFjY2VwdGVkQWx0
ZXJuYXRpdmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyAqYWx0ZXJuYXRp
dmVzKQogewogICAgIFthbHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6
YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CiAgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwotICAgIG1fdmlldy5jbGVhcigpOworICAgIG1f
dmlldyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpk
aXNtaXNzQWx0ZXJuYXRpdmVzKCkKIHsKLSAgICBpZiAoIW1fdmlldykKLSAgICAgICAgcmV0dXJu
OwotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVj
dGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBpZiAobV92aWV3KQorICAg
ICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rp
b25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07CiB9CiAKKyNlbmRpZgorCiB2b2lkIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGNv
bnRleHQpCiB7CiAgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JD
b250ZXh0KGNvbnRleHQpOwogfQotfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRp
ZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmE4OTRjNjAxMjEu
LjAxMWVjZmQ0YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAzLTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQg
c3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAxCisKKyAgICAgICAgTW92ZSBzb21lIG9m
IHRoZSBQYWdlQ2xpZW50TWFjIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMgY29kZSB0byBQYWdlQ2xp
ZW50SW1wbENvY29hIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIGJlIHNoYXJlZCB3aXRoIGlPUy4K
KworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVS
TkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZworICAgICAgICBj
b21waWxlIG9uIGl0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2Ug
YWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IERlbGV0ZWQ7IG1vdmVkIHRv
IGJlIG91dC1vZi1saW5lIHRvIGF2b2lkCisgICAgICAgIG5lZWRpbmcgdG8gI2luY2x1ZGUgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUuIERlY2xhcmUgb3V0LW9m
LWxpbmUgZGVzdHJ1Y3RvcgorICAgICAgICBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29hKTogTW92ZWQgZnJvbSBQ
YWdlQ2xpZW50SW1wbENvY29hLmguCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29j
b2E6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjph
ZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBNb3ZlZCBmcm9tIFBhZ2VDbGllbnRJbXBsTWFjLm1t
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2Nv
YTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKTogQWRk
ZWQ7IHN0dWIgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdl
Q2xvc2VkKTogRGVsZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OlBh
Z2VDbGllbnRJbXBsQ29jb2EoKS4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBh
Z2VDbG9zZWQpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBo
ZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQoKQorICAgICAgICBzbyBpdCBj
YW4gYmUgc2hhcmVkIGFuZCBtb2RpZmllZCB0aGlzIGZ1bmN0aW9uIHRvIGNhbGwgdGhlIGJhc2Ug
Y2xhc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp+
UGFnZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1t
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERl
bGV0ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0
byBQYWdlQ2xpZW50SW1wbENvY29hLm1tLgorCiAyMDIwLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFu
ZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBhNmY3NzY5MmMwMC4uY2Iw
ZWNkMWRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTI2LDIwICsyNiwyOSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha09iakNQdHIuaD4KIAorQGNsYXNzIE5TVGV4dEFsdGVybmF0aXZlczsKIEBjbGFz
cyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIH0KIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZUNsaWVudEltcGxDb2NvYSA6IHB1
YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBQYWdlQ2xpZW50SW1wbENvY29hKFdLV2Vi
VmlldyAqd2ViVmlldykKLSAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykgeyB9CisgICAgUGFn
ZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKik7CisgICAgdmlydHVhbCB+UGFnZUNsaWVudElt
cGxDb2NvYSgpOworCisgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CisKICAgICB2b2lk
IGlzUGxheWluZ0F1ZGlvV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgaXNQbGF5aW5nQXVk
aW9EaWRDaGFuZ2UoKSBmaW5hbDsKIApAQCAtNTMsOCArNjIsMTcgQEAgcHVibGljOgogICAgIE5T
U2V0ICpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdWludDY0X3QgYWRkRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jikg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgZmluYWw7CisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOworI2VuZGlmCisKIHByb3Rl
Y3RlZDoKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IG1fd2ViVmlldzsKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKyNl
bmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZTdkNzM4MmRiNWIuLjQwOTQ5YzJmNDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EubW0KQEAgLTI5LDkgKzI5LDI0IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vi
Vmlld1ByaXZhdGVGb3JUZXN0aW5nLmgiCisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1BhZ2VD
bGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJWaWV3ICp3ZWJWaWV3KQor
ICAgIDogbV93ZWJWaWV3IHsgd2ViVmlldyB9CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7IG1ha2VVbmlxdWU8QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpIH0KKyNlbmRpZgoreworfQorCitQYWdlQ2xpZW50
SW1wbENvY29hOjp+UGFnZUNsaWVudEltcGxDb2NvYSgpID0gZGVmYXVsdDsKKwogdm9pZCBQYWdl
Q2xpZW50SW1wbENvY29hOjppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKQogewogICAgIFttX3dl
YlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5Ok5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rv
cihfaXNQbGF5aW5nQXVkaW8pKV07CkBAIC04MCw1ICs5NSwzMiBAQCBOU1NldCAqUGFnZUNsaWVu
dEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKIH0KIAog
I2VuZGlmCisKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFnZUNsb3NlZCgpCit7CisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXItPmNsZWFyKCk7CisjZW5kaWYKK30KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbENvY29hOjphZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykK
K3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFsdGVybmF0
aXZlcyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnJlbW92
ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0
aW9uQ29udGV4dCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJl
dHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVzRm9yQ29udGV4
dChkaWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisKICAgICAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlM2ZmMzBjZTgyYi4uYTNjZWRmNTkwYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM1Myw2ICszNTMsMTMgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikg
eyB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2aXJ0dWFsIHVpbnQ2
NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJu
YXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hv
d0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgPSAwOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmly
dHVhbCB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3QgcGx1Z2lu
Q29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRXaW5kb3dI
YXNGb2N1cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0
U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIFBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRTdGF0ZSkgPSAwOwpAQCAtMzc2LDE4ICszODMsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgTlNWaWV3ICppbnNwZWN0b3JBdHRhY2htZW50VmlldygpID0gMDsKICAgICB2
aXJ0dWFsIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSgpID0g
MDsKIAotI2lmIFVTRShBUFBLSVQpCiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY0NvbnRlbnRT
aXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludHJpbnNpY0NvbnRlbnRTaXpl
KSA9IDA7Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgdmlydHVhbCB1aW50
NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVy
bmF0aXZlcz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNo
b3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwotICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpID0gMDsKLSNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKwogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcoKSA9IDA7Ci0jZW5kaWYgLy8gVVNFKElOU0VS
VElPTl9VTkRPX0dST1VQSU5HKQotI2VuZGlmIC8vIFVTRShBUFBLSVQpCisjZW5kaWYKKwogICAg
IHZpcnR1YWwgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCkgPSAwOwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1YTNhN2FiZjU5Ny4uOTdmM2Y1ZWIwN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0z
NCw2ICszNCw3IEBACiAKIE9CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKIE9CSkNfQ0xBU1MgV0tF
ZGl0b3JVbmRvVGFyZ2V0OworT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4
X3Q7CkBAIC03Nyw3ICs3OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
ICAgIHZvaWQgZ3B1UHJvY2Vzc0NyYXNoZWQoKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZvaWQg
cGFnZUNsb3NlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+Jikgb3ZlcnJpZGU7CkBAIC0yNjIsNiArMjYyLDEwIEBAIHByaXZhdGU6
CiAgICAgV1RGOjpPcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2Vz
dHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIG92ZXJyaWRlOwogI2VuZGlmCiAK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lkIHNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRW
aWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXQ+IG1f
dW5kb1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KaW5kZXggODkyMzlmNzk0ZjMuLjJmY2UwYzU1MWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0yMzMs
MTEgKzIzMyw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmdwdVByb2Nlc3NDcmFzaGVkKCkKIH0K
ICNlbmRpZgogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcmVmZXJlbmNlc0RpZENo
YW5nZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTk2Myw2ICs5NTgsMTUgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dCYKICAgICBbbV9jb250ZW50VmlldyBfaGFuZGxlQXV0b2NvcnJl
Y3Rpb25Db250ZXh0OmNvbnRleHRdOwogfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIHVpbnQ2NF90KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCmluZGV4IDBkY2E4NzA2ZDQyLi5mMGNjMzhhNDg5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBAY2xhc3MgV0tFZGl0b3JVbmRvVGFyZ2V0OwogQGNsYXNzIFdLVmlldzsKQEAgLTE4
MCwxMSArMTgwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludHJpbnNpY0NvbnRlbnRTaXplRGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludHJpbnNpY0NvbnRlbnRTaXplKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHVpbnQ2NF90IGFk
ZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVz
PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
b3ZlcnJpZGU7CiAjZW5kaWYKKwogICAgIHZvaWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2Vk
KGJvb2wpIG92ZXJyaWRlOwogCiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQpAQCAt
MjY3LDkgKzI2NSw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQog
ICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKICNlbmRpZgotI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwot
I2VuZGlmCiAKICAgICBib29sIG1fc2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXMg
eyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQppbmRleCBhZjM3NmFlNjUzYS4uMDMxOTJkNzZhZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTc5LDEz
ICs3OSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKLSNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMu
aD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNs
dWRlIDxXZWJDb3JlL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNlbmRpZgpAQCAtMTAzLDIw
ICsxMDAsMTYgQEAgQGVuZAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKE5TVmll
dyogdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQorUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJ
bXBsKE5TVmlldyAqdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogUGFnZUNsaWVudElt
cGxDb2NvYSh3ZWJWaWV3KQogICAgICwgbV92aWV3KHZpZXcpCi0jaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5p
cXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKLSNlbmRpZgogewogfQogCi1QYWdl
Q2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKCkKLXsKLX0KK1BhZ2VDbGllbnRJbXBsOjp+UGFn
ZUNsaWVudEltcGwoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEltcGwo
V2ViVmlld0ltcGwmIGltcGwpCiB7CkBAIC0yNjYsOSArMjU5LDcgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6cHJvY2Vzc0RpZEV4aXQoKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgp
CiB7CiAgICAgbV9pbXBsLT5wYWdlQ2xvc2VkKCk7Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmNsZWFyKCk7Ci0jZW5k
aWYKKyAgICBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKCk7CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCkBAIC02ODQsMTUgKzY3NSw2IEBAIGJv
b2wgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3JTdHJpbmcpCiB9CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKLXVpbnQ2NF90IFBhZ2VDbGllbnRJbXBsOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKLXsKLSAgICBy
ZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRl
cm5hdGl2ZXMpOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKLXsKLSAgICBtX2FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOwot
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpCiB7CkBAIC03MDMsMTAgKzY4NSw2IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpCiAgICAgfSk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBhZ2VDbGllbnRJbXBsOjpk
aWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKLXsKLSAgICBy
ZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoZGljdGF0aW9uQ29udGV4dCk7Ci19CiAjZW5kaWYKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2Vk
KQotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392868</attachid>
            <date>2020-03-07 10:56:08 -0800</date>
            <delta_ts>2020-03-07 10:59:52 -0800</delta_ts>
            <desc>Part 1: Share AlternativeTextUIController</desc>
            <filename>Part1.patch</filename>
            <type>text/plain</type>
            <size>41256</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBhOGVjNTIzNDA2MmMwZjk3NTQ3NzMxYTU1Njc4NTI3NTNjZjA3NGUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTA6Mzk6MjEgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDEKClNvdXJjZS9XZWJDb3JlOgoKUmVuYW1lIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19IHRvIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLntoLCBtbX0KYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1h
YyBhbmQgaU9TLiBJIGFsc28gdG9vayB0aGlzIG9wcG9ydHVuaXR5IHRvIGRvIHNvbWUgdmVyeSBt
aW5vciBtb2Rlcm5pemF0aW9uCmFuZCBjbGVhbnVwIHRvIHRoZXNlIGZpbGVzOiB1c2UgPWRlZmF1
bHQgY29uc3RydWN0b3JzIGFuZCBwdXQgdGhlICogb24gdGhlIHJpZ2h0IHNpZGUgZm9yIE9iamVj
dGl2ZS1DIHR5cGVzLgoKTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9B
TFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGls
ZSBvbiBpdC4KSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVy
IGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBkbyBzby4KCiogU291cmNlc0NvY29hLnR4dDoK
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW06IEFkZGVkLgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6
Y2xlYXIpOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaC4KKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbS4KKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWRkQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmNsZWFyKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hv
d0FsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6Omhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKToKClNvdXJjZS9XZWJLaXQ6CgpNb3ZlIHNv
bWUgb2YgdGhlIFBhZ2VDbGllbnRNYWMgZGljdGF0aW9uIGFsdGVybmF0aXZlcyBjb2RlIHRvIFBh
Z2VDbGllbnRJbXBsQ29jb2Egc28gdGhhdCBpdApjYW4gYmUgc2hhcmVkIHdpdGggaU9TLgoKTm90
ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9T
LCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKY29tcGlsZSBvbiBpdC4gSSB3aWxsIGRv
IHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBp
biBwbGFjZSB0byBkbyBzby4KCiogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
aDoKKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IERl
bGV0ZWQ7IG1vdmVkIHRvIGJlIG91dC1vZi1saW5lIHRvIGF2b2lkCm5lZWRpbmcgdG8gI2luY2x1
ZGUgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUuIERlY2xhcmUg
b3V0LW9mLWxpbmUgZGVzdHJ1Y3Rvcgpmb3IgdGhlIHNhbWUgcmVhc29uLgoqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpQYWdlQ2xpZW50SW1wbENvY29hKTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbENvY29hLmgu
CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQpOgooV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbENvY29hOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBNb3ZlZCBmcm9tIFBh
Z2VDbGllbnRJbXBsTWFjLm1tLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEaXR0by4KKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2Nv
YTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCiogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CiogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJKTogQWRkZWQ7IHN0dWIgZnVuY3Rpb24uCihXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpwYWdlQ2xvc2VkKTogRGVsZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNlIGNs
YXNzIGltcGxlbWVudGF0aW9uLgoqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoK
KiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6UGFnZUNsaWVudEltcGwpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIg
bG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29j
b2EoKS4KKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOiBNb3ZlZCBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29j
b2E6OnBhZ2VDbG9zZWQoKQpzbyBpdCBjYW4gYmUgc2hhcmVkIGFuZCBtb2RpZmllZCB0aGlzIGZ1
bmN0aW9uIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24uCihXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xp
ZW50SW1wbENvY29hLm1tLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0
ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCihXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50
SW1wbENvY29hLm1tLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICB8IDM0ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCAg
ICAgICAgICAgICAgIHwgIDMgKy0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiB8IDEwICsrLQogLi4uL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLmggIHwgNTkgKysrKysrKysrKysrKysrCiAuLi4vY29jb2EvQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIubW0gfCA3MyArKysrKysrKysrKysrKysrKysKIC4uLi9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAgICAgICAgICAgICB8IDQ1ICsrKysrLS0tLS0tCiAuLi4v
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICAgICAgICAgICAgfCA3NCArKysrKysrKyst
LS0tLS0tLS0tCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
fCA0MCArKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
aCAgICAgfCAyMiArKysrKy0KIC4uLi9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5tbSAgICB8IDQyICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggICAgICAgICAgfCAxOSArKy0tLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmggIHwgIDYgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSB8IDE0ICsrLS0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oICB8ICA5ICstLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tIHwgMzIgKystLS0tLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDM2MiBpbnNlcnRp
b25zKCspLCAxMjAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlci5tbQogcmVuYW1lIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcve21h
YyA9PiBjb2NvYX0vQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKDY0JSkKIHJlbmFtZSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3ttYWMgPT4gY29jb2F9L0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbSAoNjUlKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWM3NTgyZWE3NC4uZDdjY2Y5NTNlYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9y
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBhcnQgMQorCisgICAgICAgIFJlbmFtZSBlZGl0aW5nL21hYy9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIue2gsIG1tfSB0byBlZGl0aW5nL2NvY29hL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19CisgICAgICAgIGFzIGl0IGNhbiBiZSBzaGFyZWQg
YnkgYm90aCBNYWMgYW5kIGlPUy4gSSBhbHNvIHRvb2sgdGhpcyBvcHBvcnR1bml0eSB0byBkbyBz
b21lIHZlcnkgbWlub3IgbW9kZXJuaXphdGlvbgorICAgICAgICBhbmQgY2xlYW51cCB0byB0aGVz
ZSBmaWxlczogdXNlID1kZWZhdWx0IGNvbnN0cnVjdG9ycyBhbmQgcHV0IHRoZSAqIG9uIHRoZSBy
aWdodCBzaWRlIGZvciBPYmplY3RpdmUtQyB0eXBlcy4KKworICAgICAgICBOb3RlIHRoYXQgSSBo
YXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28s
IHRoaXMgY29kZSBpc24ndCBiZWluZyBjb21waWxlIG9uIGl0LgorICAgICAgICBJIHdpbGwgZG8g
dGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGlu
IHBsYWNlIHRvIGRvIHNvLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW06IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVy
bmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xl
YXIpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIuaC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVy
bmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6
OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKwog
MjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0YTA5MmQ4OGZmOC4uYTdlMGZkNzgyMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNzksNiArNzksOCBAQCBkb20vaW9zL1RvdWNoRXZl
bnRzLmNwcAogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCiBlZGl0aW5nL1NtYXJ0
UmVwbGFjZUNGLmNwcAogCitlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLm1tCitlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQog
ZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcAogZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTk0LDcgKzk2
LDYgQEAgZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KIGVkaXRpbmcvaW9z
L0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KIAotZWRp
dGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCiBlZGl0aW5nL21hYy9EaWN0
aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KIGVkaXRpbmcv
bWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTcxZTA1MWI5ZTMuLjU2MGQ3NWRlZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MjM5LDYgKzQyMzksNyBAQAogCQlDRTFBNTAxRjIyRDUzNTA5MDBDQkM5MjcgLyogRE9N
VGltZXJIb2xkaW5nVGFuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxQTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1Rhbmsu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTIx
MjE1ODI0MERCRUI5MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNTMyNDBEQkQzMDAw
NkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovOyB9OworCQlDRTQ1OTQ2RjI0
MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNDU5NDY0MjQxMjFB
MDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNTE2OUU3MjFGMUI4
NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAw
NTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNkRBREZBMUM1OTFFNkEwMDNGNkE4
OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkRBREY4MUM1OTFFNkEwMDNGNkE4
OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxNDIsNiArMTQxNDMsOCBA
QAogCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1OTQ2NTI0
MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8q
IENvbG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFNTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvbG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxMjg0LDYgKzIxMjg3LDEwIEBACiAJCTdDM0U1MTA3MThERjhGMTIwMEMx
MTJGNyAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0U0NTk0NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyLmggKi8sCisJCQkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICovLAorCQkJCUNFN0IyREFGMTU4NkFCQUQwMDk4
QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRTdCMkRCMDE1
ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovLAogCQkJ
CTVDQ0MyNzA3MjJENTNCNjkwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmNwcCAqLywKIAkJ
CQk1Q0NDMjcwNjIyRDUzQjY4MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50cy5oICovLAogCQkJ
CUM1MjI3REVGMUMzQzZERDcwMEY1RUQ1NCAvKiBEYXRhRGV0ZWN0aW9uLmggKi8sCkBAIC0yNzMx
Nyw4ICsyNzMyNCw2IEBACiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNFN0IyREFGMTU4NkFC
QUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKLQkJCQlDRTdC
MkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICov
LAogCQkJCTkzN0ZGM0Q0MUExMDEyRDYwMDhFQkEzMSAvKiBEaWN0aW9uYXJ5TG9va3VwLmggKi8s
CiAJCQkJNDQyOTU2Q0EyMThBNkQzMDAwODBEQjU0IC8qIERpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0gKi8sCiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLywK
QEAgLTMxOTA2LDYgKzMxOTExLDcgQEAKIAkJCQlFNEJCRUQwRjE0RjQwMjVEMDAzRjBCOTggLyog
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0JB
QUU1ODE5ODBEMUREMDA1REZFNzEgLyogUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTRDNzY3NTBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzJBREEzODE5N0Y0
N0I5MDBGQzUwMUUgLyogUHJvdGVjdGlvblNwYWNlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQTA1MjU2MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUY4RTExQTEyNTY1OTI2MDAyMzBGRjcgLyogUHJveHlTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9B
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOTc0YzMxOTJkYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJu
YXRpdmVzOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFsdGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBXRUJDT1JFX0VYUE9SVCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIH5BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpOwor
CisgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+Jik7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2
ZXMgKmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CisKKyAgICB2b2lk
IHJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CisKKyAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGludmFsaWRDb250ZXh0ID0gMDsKKworcHJpdmF0ZToK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPj4gbV9h
bHRlcm5hdGl2ZXNPYmplY3RNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYzk2MjZh
YTI1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoQVBQS2l0KQorI2ltcG9ydCA8
QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6QWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK0FsdGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyOjp+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKSA9IGRlZmF1
bHQ7CisKK3VpbnQ2NF90IEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphZGRBbHRl
cm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZl
cykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4o
YWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBp
bnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgYXV0byByZXN1bHQgPSBtX2FsdGVybmF0aXZl
c09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4gcmVzdWx0
LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9CisKK05TVGV4dEFsdGVy
bmF0aXZlcyAqQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXAuZ2V0KGNvbnRleHQpLmdldCgpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNv
bnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGNvbnRleHQpOwor
fQorCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpjbGVhcigpCit7Cisg
ICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKcmVuYW1lIHRvIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKaW5k
ZXggMjljNWE4ZGE3ZWUuLmNjZmZkODg5ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCkBAIC0yNSw0
OSArMjUsNDIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQogI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCiBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZl
czsKIE9CSkNfQ0xBU1MgTlNWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZs
b2F0UmVjdDsKKwogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIoKSB7IH0KLSAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KLSAgICBXRUJDT1JFX0VY
UE9SVCB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVy
bmF0aXZlcz4mKTsKKyAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCisK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVy
KShOU1N0cmluZyopKTsKKworICAgIHVzaW5nIEFjY2VwdGFuY2VIYW5kbGVyID0gdm9pZCAoXiko
TlNTdHJpbmcgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5T
VmlldyAqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50
NjRfdCBjb250ZXh0LCBBY2NlcHRhbmNlSGFuZGxlcik7CisKICAgICB2b2lkIFdFQkNPUkVfRVhQ
T1JUIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KTsKKwogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29u
dGV4dCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5T
U3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRl
cm5hdGl2ZXMqKTsKLQorI2lmIFVTRShBUFBLSVQpCisgICAgdm9pZCBoYW5kbGVBY2NlcHRlZEFs
dGVybmF0aXZlKE5TU3RyaW5nICosIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZl
cyAqKTsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAotICAgIGNsYXNzIEFsZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXIoKSB7IH0KLSAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7Ci0gICAgICAgIHZvaWQgY2xlYXIoKTsKLSAgICAgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHQpOwotICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9
IDA7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPj4gSGFzaE1hcFR5cGU7Ci0gICAgICAgIEhhc2hNYXBU
eXBlIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOwotICAgIH07Ci0KLSAgICBBbGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPE5T
Vmlldz4gbV92aWV3OworI2VuZGlmCisgICAgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLm1tCnNpbWlsYXJpdHkgaW5kZXggNjUlCnJlbmFtZSBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpyZW5hbWUg
dG8gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIubW0KaW5kZXggM2YxYmE1MGE3Y2YuLjBmODA5OTRkYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDM5ICsyNywxOSBAQAogI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LmgiCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworI2ltcG9ydCA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KKworI2lmIFVTRShBUFBLaXQpCiAjaW1wb3J0IDxBcHBLaXQvTlNTcGVs
bENoZWNrZXIuaD4KICNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KICNpbXBv
cnQgPEFwcEtpdC9OU1ZpZXcuaD4KKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0
IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFs
dGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKLXsKLSAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKLSAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiBpbnZhbGlkQ29udGV4dDsKLSAgICBpZiAoYWx0ZXJuYXRp
dmVzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0KLSAgICBI
YXNoTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFk
ZChjb250ZXh0LCBhbHRlcm5hdGl2ZXMpOwotICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/
IGNvbnRleHQgOiBpbnZhbGlkQ29udGV4dDsKLX0KLQotTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6
OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKLXsKLSAgICByZXR1cm4g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZ2V0KGNvbnRleHQpLmdldCgpOwotfQotCi12b2lkIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQotewotICAg
IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJlbW92ZShjb250ZXh0KTsKLX0KLQotdm9pZCBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6
OmNsZWFyKCkKLXsKLSAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5jbGVhcigpOwotfQotCiB1
aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQogewogICAgIHJl
dHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOwpA
QCAtNjcsMTAgKzQ3LDExIEBAIHVpbnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlCiAKIFZlY3RvcjxTdHJp
bmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1
aW50NjRfdCBjb250ZXh0KQogewotICAgIE5TVGV4dEFsdGVybmF0aXZlcyogdGV4dEFsdGVybmF0
aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0
KTsKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRD
b250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiAgICAgVmVjdG9yPFN0
cmluZz4gYWx0ZXJuYXRpdmVTdHJpbmdzOwotICAgIGZvciAoTlNTdHJpbmcqIHN0cmluZyBpbiB0
ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncykKLSAgICAgICAgYWx0ZXJuYXRpdmVT
dHJpbmdzLmFwcGVuZChzdHJpbmcpOworICAgIGFsdGVybmF0aXZlU3RyaW5ncy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzLmNvdW50KTsK
KyAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2
ZVN0cmluZ3MpCisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoc3Ry
aW5nKTsKICAgICByZXR1cm4gYWx0ZXJuYXRpdmVTdHJpbmdzOwogfQogCkBAIC03OSw0MiArNjAs
NTUgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmNsZWFyKCkKICAgICByZXR1
cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVhcigpOwogfQogCi12b2lkIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQo
XmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKQordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3ICp2aWV3LCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCBBY2NlcHRhbmNl
SGFuZGxlciBhY2NlcHRhbmNlSGFuZGxlcikKIHsKKyNpZiBVU0UoQVBQS0lUKQogICAgIGRpc21p
c3NBbHRlcm5hdGl2ZXMoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fdmlldyA9IHZpZXc7Ci0gICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMgPSBt
X2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisKKyAg
ICBOU1RleHRBbHRlcm5hdGl2ZXMgKmFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIu
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIWFsdGVybmF0aXZlcykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOk5TQ29ycmVjdGlvbkluZGljYXRvclR5
cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmVzLnByaW1hcnlTdHJpbmcgYWx0ZXJu
YXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5S
ZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOk5T
Q29ycmVjdGlvbkluZGljYXRvclR5cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmVz
LnByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlcy5hbHRlcm5hdGl2
ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nIHZpZXc6
bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKmFjY2VwdGVkU3RyaW5n
KSB7CiAgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykgewogICAgICAgICAgICAgaGFuZGxlQWNj
ZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsK
ICAgICAgICAgICAgIGFjY2VwdGFuY2VIYW5kbGVyKGFjY2VwdGVkU3RyaW5nKTsKICAgICAgICAg
fQogICAgIH1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmlldyk7CisgICAgVU5VU0VEX1BB
UkFNKGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CisgICAgVU5VU0VEX1BBUkFNKGFjY2VwdGFuY2VIYW5kbGVyKTsKKyNlbmRpZgogfQogCi12
b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2
ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0
QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMpCisjaWYgVVNFKEFQUEtJVCkKKwordm9pZCBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJp
bmcgKmFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0
aXZlcyAqYWx0ZXJuYXRpdmVzKQogewogICAgIFthbHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0
ZXJuYXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CiAgICAgbV9jb250ZXh0Q29udHJv
bGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwotICAgIG1fdmlldy5j
bGVhcigpOworICAgIG1fdmlldyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKCkKIHsKLSAgICBpZiAoIW1fdmlldykK
LSAgICAgICAgcmV0dXJuOwotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2Vy
XSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgpXTsKKyAgICBp
ZiAobV92aWV3KQorICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0g
ZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07CiB9CiAKKyNl
bmRpZgorCiB2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGNvbnRleHQpCiB7CiAgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVB
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogfQotfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKICNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYmE4OTRjNjAxMjEuLjAxMWVjZmQ0YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAxCisKKyAgICAg
ICAgTW92ZSBzb21lIG9mIHRoZSBQYWdlQ2xpZW50TWFjIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMg
Y29kZSB0byBQYWdlQ2xpZW50SW1wbENvY29hIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIGJlIHNo
YXJlZCB3aXRoIGlPUy4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0Vf
RElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBi
ZWluZworICAgICAgICBjb21waWxlIG9uIGl0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVl
bnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgor
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IERl
bGV0ZWQ7IG1vdmVkIHRvIGJlIG91dC1vZi1saW5lIHRvIGF2b2lkCisgICAgICAgIG5lZWRpbmcg
dG8gI2luY2x1ZGUgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUu
IERlY2xhcmUgb3V0LW9mLWxpbmUgZGVzdHJ1Y3RvcgorICAgICAgICBmb3IgdGhlIHNhbWUgcmVh
c29uLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29h
KTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbENvY29hLmguCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbENvY29hOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBNb3ZlZCBmcm9tIFBhZ2VD
bGllbnRJbXBsTWFjLm1tLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpy
ZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGxDb2NvYTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKTogQWRkZWQ7IHN0dWIgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpwYWdlQ2xvc2VkKTogRGVsZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNl
IGNsYXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOiBNb3Zl
ZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGll
bnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoKS4KKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQoKQor
ICAgICAgICBzbyBpdCBjYW4gYmUgc2hhcmVkIGFuZCBtb2RpZmllZCB0aGlzIGZ1bmN0aW9uIHRv
IGNhbGwgdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xp
ZW50SW1wbENvY29hLm1tLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2Nv
YS5tbS4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyk6IERlbGV0ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBE
ZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1tLgorCiAyMDIwLTAzLTA2ICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgaW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBh
NmY3NzY5MmMwMC4uY2IwZWNkMWRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTI2LDIwICsyNiwyOSBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KIAorQGNsYXNzIE5TVGV4dEFsdGVy
bmF0aXZlczsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0
YWNobWVudDsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZUNsaWVu
dEltcGxDb2NvYSA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBQYWdlQ2xpZW50
SW1wbENvY29hKFdLV2ViVmlldyAqd2ViVmlldykKLSAgICAgICAgOiBtX3dlYlZpZXcod2ViVmll
dykgeyB9CisgICAgUGFnZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKik7CisgICAgdmlydHVh
bCB+UGFnZUNsaWVudEltcGxDb2NvYSgpOworCisgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJp
ZGU7CisKICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZv
aWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKIApAQCAtNTMsOCArNjIsMTcgQEAg
cHVibGljOgogICAgIE5TU2V0ICpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25z
dCBmaW5hbDsKICNlbmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAg
dWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRB
bHRlcm5hdGl2ZXM+JikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgZmluYWw7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOwor
I2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IG1fd2ViVmll
dzsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZTdkNzM4MmRiNWIuLjQw
OTQ5YzJmNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW0KQEAgLTI5LDkgKzI5LDI0IEBACiAjaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgiCisjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNv
cmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK1BhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJW
aWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3IHsgd2ViVmlldyB9CisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7
IG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpIH0KKyNlbmRpZgorewor
fQorCitQYWdlQ2xpZW50SW1wbENvY29hOjp+UGFnZUNsaWVudEltcGxDb2NvYSgpID0gZGVmYXVs
dDsKKwogdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2Uo
KQogewogICAgIFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5Ok5TU3RyaW5nRnJvbVNl
bGVjdG9yKEBzZWxlY3RvcihfaXNQbGF5aW5nQXVkaW8pKV07CkBAIC04MCw1ICs5NSwzMiBAQCBO
U1NldCAqUGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2Vz
KCkgY29uc3QKIH0KIAogI2VuZGlmCisKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFnZUNs
b3NlZCgpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXItPmNsZWFyKCk7CisjZW5kaWYKK30KKworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbENvY29hOjphZGRE
aWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4m
IGFsdGVybmF0aXZlcykKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXItPmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIFBhZ2VDbGllbnRJ
bXBsQ29jb2E6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRl
cm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhZ2VDbGll
bnRJbXBsQ29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJu
YXRpdmVzRm9yQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisKICAgICAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlM2ZmMzBjZTgyYi4uYTNj
ZWRmNTkwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM1Myw2ICsz
NTMsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpG
b2N1c0RpcmVjdGlvbikgeyB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5Q
dHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworI2VuZGlmCisKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgdmlydHVhbCB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQo
dWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFz
Rm9jdXNBbmRXaW5kb3dIYXNGb2N1cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5D
b21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50
aWZpZXIsIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSkgPSAwOwpAQCAtMzc2LDE4ICszODMs
MTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTlNWaWV3ICppbnNwZWN0b3JBdHRhY2htZW50Vmll
dygpID0gMDsKICAgICB2aXJ0dWFsIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmpl
Y3RSZWdpc3RyeSgpID0gMDsKIAotI2lmIFVTRShBUFBLSVQpCiAgICAgdmlydHVhbCB2b2lkIGlu
dHJpbnNpY0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludHJp
bnNpY0NvbnRlbnRTaXplKSA9IDA7Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0g
ICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29u
dGV4dCkgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSNlbmRpZiAvLyBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKwogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcoKSA9IDA7Ci0jZW5k
aWYgLy8gVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQotI2VuZGlmIC8vIFVTRShBUFBLSVQp
CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQo
Ym9vbCkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1YTNhN2FiZjU5Ny4uOTdm
M2Y1ZWIwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC0zNCw2ICszNCw3IEBACiAKIE9CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsK
IE9CSkNfQ0xBU1MgV0tFZGl0b3JVbmRvVGFyZ2V0OworT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5h
dGl2ZXM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSA6IHVpbnQ4X3Q7CkBAIC03Nyw3ICs3OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogICAgIHZvaWQgZ3B1UHJvY2Vzc0NyYXNoZWQoKSBvdmVycmlkZTsKICNl
bmRpZgotICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+Jikgb3ZlcnJpZGU7CkBAIC0yNjIsNiArMjYy
LDEwIEBAIHByaXZhdGU6CiAgICAgV1RGOjpPcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJ
ZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIG92ZXJy
aWRlOwogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lk
IHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICBXZWFrT2Jq
Q1B0cjxXS0NvbnRlbnRWaWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRv
clVuZG9UYXJnZXQ+IG1fdW5kb1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggODkyMzlmNzk0ZjMuLjJmY2UwYzU1
MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCkBAIC0yMzMsMTEgKzIzMyw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmdwdVByb2Nl
c3NDcmFzaGVkKCkKIH0KICNlbmRpZgogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2Vk
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
cmVmZXJlbmNlc0RpZENoYW5nZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTk2Myw2
ICs5NTgsMTUgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250
ZXh0KGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYKICAgICBbbV9jb250ZW50VmlldyBf
aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0OmNvbnRleHRdOwogfQogCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIHVpbnQ2NF90KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDBkY2E4NzA2ZDQyLi5mMGNjMzhh
NDg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBAY2xhc3MgV0tFZGl0b3JVbmRvVGFyZ2V0OwogQGNsYXNz
IFdLVmlldzsKQEAgLTE4MCwxMSArMTgwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludHJpbnNp
Y0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludHJpbnNpY0Nv
bnRlbnRTaXplKSBvdmVycmlkZTsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQot
ICAgIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlk
ZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAjZW5kaWYKKwogICAgIHZvaWQgc2V0RWRpdGFibGVF
bGVtZW50SXNGb2N1c2VkKGJvb2wpIG92ZXJyaWRlOwogCiAjaWYgVVNFKElOU0VSVElPTl9VTkRP
X0dST1VQSU5HKQpAQCAtMjY3LDkgKzI2NSw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFVVE9DT1JS
RUNUSU9OX1BBTkVMKQogICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKICNl
bmRpZgotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOwotI2VuZGlmCiAKICAgICBib29sIG1fc2hvdWxkU3VwcHJlc3NGaXJzdFJl
c3BvbmRlckNoYW5nZXMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhZjM3NmFlNjUzYS4uMDMxOTJkNzZh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0KQEAgLTc5LDEzICs3OSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnVi
YmxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSNpbXBvcnQgPEFwcEtpdC9OU1Rl
eHRBbHRlcm5hdGl2ZXMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICNpbmNsdWRlIDxXZWJDb3JlL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNl
bmRpZgpAQCAtMTAzLDIwICsxMDAsMTYgQEAgQGVuZAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJL
aXQgeworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUGFnZUNsaWVudEltcGw6OlBhZ2VD
bGllbnRJbXBsKE5TVmlldyogdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQorUGFnZUNsaWVudElt
cGw6OlBhZ2VDbGllbnRJbXBsKE5TVmlldyAqdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAg
IDogUGFnZUNsaWVudEltcGxDb2NvYSh3ZWJWaWV3KQogICAgICwgbV92aWV3KHZpZXcpCi0jaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKLSNlbmRp
ZgogewogfQogCi1QYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKCkKLXsKLX0KK1BhZ2VD
bGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnNldEltcGwoV2ViVmlld0ltcGwmIGltcGwpCiB7CkBAIC0yNjYsOSArMjU5LDcgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZEV4aXQoKQogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cGFnZUNsb3NlZCgpCiB7CiAgICAgbV9pbXBsLT5wYWdlQ2xvc2VkKCk7Ci0jaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIt
PmNsZWFyKCk7Ci0jZW5kaWYKKyAgICBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKCk7
CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCkBAIC02ODQs
MTUgKzY3NSw2IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJpbmcpCiB9CiAKICNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKLXVpbnQ2NF90IFBhZ2VDbGllbnRJbXBsOjphZGREaWN0YXRpb25B
bHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0
aXZlcykKLXsKLSAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFs
dGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKLXsKLSAg
ICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3Rh
dGlvbkNvbnRleHQpOwotfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRl
ZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCiB7CkBAIC03MDMsMTAgKzY4NSw2IEBA
IHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpCiAgICAgfSk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBh
Z2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29u
dGV4dCkKLXsKLSAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVy
bmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7Ci19CiAjZW5kaWYKIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVF
bGVtZW50SXNGb2N1c2VkKQotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392869</attachid>
            <date>2020-03-07 10:59:52 -0800</date>
            <delta_ts>2020-03-07 11:14:39 -0800</delta_ts>
            <desc>Part 1: Share AlternativeTextUIController</desc>
            <filename>Part1.patch</filename>
            <type>text/plain</type>
            <size>42541</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA3YWE1ZTM4MTk0ZTg2MmQyNjVjNDM0MjAxMDBmOTEyMTcyMDE0MmM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTA6NTk6MDYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpTb3VyY2UvV2ViQ29yZToKClBhcnQgMQoKUmVuYW1lIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19IHRvIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLntoLCBtbX0KYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1h
YyBhbmQgaU9TLiBJIGFsc28gdG9vayB0aGlzIG9wcG9ydHVuaXR5IHRvIGRvIHNvbWUgdmVyeSBt
aW5vciBtb2Rlcm5pemF0aW9uCmFuZCBjbGVhbnVwIHRvIHRoZXNlIGZpbGVzOiB1c2UgPWRlZmF1
bHQgY29uc3RydWN0b3JzIGFuZCBwdXQgdGhlICogb24gdGhlIHJpZ2h0IHNpZGUgZm9yIE9iamVj
dGl2ZS1DIHR5cGVzLgoKTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9B
TFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGls
ZSBvbiBpdC4KSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVy
IGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBkbyBzby4KCiogU291cmNlc0NvY29hLnR4dDoK
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW06IEFkZGVkLgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6
Y2xlYXIpOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaC4KKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbS4KKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWRkQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmNsZWFyKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hv
d0FsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6Omhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKToKClNvdXJjZS9XZWJDb3JlL1BBTDoKCkV4
cG9zZSBzb21lIG1vcmUgU1BJLgoKKiBwYWwvc3BpL2lvcy9VSUtpdFNQSS5oOgoKU291cmNlL1dl
YktpdDoKClBhcnQgMQoKTW92ZSBzb21lIG9mIHRoZSBQYWdlQ2xpZW50TWFjIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMgY29kZSB0byBQYWdlQ2xpZW50SW1wbENvY29hIHNvIHRoYXQgaXQKY2FuIGJl
IHNoYXJlZCB3aXRoIGlPUy4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJ
T05fQUxURVJOQVRJVkVTIG9uIGlPUywgeWV0LiBTbywgdGhpcyBjb2RlIGlzbid0IGJlaW5nCmNv
bXBpbGUgb24gaXQuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBh
ZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8gc28uCgoqIFVJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OlBh
Z2VDbGllbnRJbXBsQ29jb2EpOiBEZWxldGVkOyBtb3ZlZCB0byBiZSBvdXQtb2YtbGluZSB0byBh
dm9pZApuZWVkaW5nIHRvICNpbmNsdWRlIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGZy
b20gdGhpcyBmaWxlLiBEZWNsYXJlIG91dC1vZi1saW5lIGRlc3RydWN0b3IKZm9yIHRoZSBzYW1l
IHJlYXNvbi4KKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbToKKFdlYktp
dDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IE1vdmVkIGZyb20g
UGFnZUNsaWVudEltcGxDb2NvYS5oLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdl
Q2xvc2VkKToKKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWRkRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbE1hYy5tbS4KKFdlYktpdDo6UGFnZUNs
aWVudEltcGxDb2NvYTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCihXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERpdHRvLgoq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oOgoqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6IEFkZGVkOyBzdHViIGZ1bmN0
aW9uLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCk6IERlbGV0ZWQ7IG5vdyB3
ZSB3aWxsIHVzZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CiogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKTogTW92ZWQgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVyZSB0byBQYWdlQ2xpZW50SW1wbENv
Y29hOjpQYWdlQ2xpZW50SW1wbENvY29hKCkuCihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdl
Q2xvc2VkKTogTW92ZWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVy
ZSB0byBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKCkKc28gaXQgY2FuIGJlIHNoYXJl
ZCBhbmQgbW9kaWZpZWQgdGhpcyBmdW5jdGlvbiB0byBjYWxsIHRoZSBiYXNlIGNsYXNzIGltcGxl
bWVudGF0aW9uLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKTogRGVs
ZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0ZWQ7IG1vdmVkIHRvIFBhZ2VD
bGllbnRJbXBsQ29jb2EubW0uCihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1t
LgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGVsZXRl
ZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KLS0tCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8IDExICsrKwogU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmggICAgIHwgIDQgLQogU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCAgICAgICAgICAgICAgIHwgIDMgKy0KIC4uLi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8IDEwICsrLQogLi4uL2NvY29hL0FsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggIHwgNTkgKysrKysrKysrKysrKysrCiAuLi4vY29j
b2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gfCA3MyArKysrKysrKysrKysr
KysrKysKIC4uLi9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAgICAgICAgICAgICB8IDQ1
ICsrKysrLS0tLS0tCiAuLi4vQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICAgICAgICAg
ICAgfCA3NCArKysrKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EuaCAgICAgfCAyMiArKysrKy0KIC4uLi9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5tbSAgICB8IDQyICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggICAgICAgICAgfCAxOSArKy0tLQogLi4uL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggIHwgIDYgKy0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSB8IDE0ICsrLS0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oICB8ICA5ICstLQogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIHwgMzIgKystLS0tLS0KIDE3IGZpbGVzIGNo
YW5nZWQsIDM3MyBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbQogcmVuYW1lIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcve21hYyA9PiBjb2NvYX0vQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LmggKDY0JSkKIHJlbmFtZSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3ttYWMgPT4gY29jb2F9L0Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAoNjUlKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWM3NTgy
ZWE3NC4uZDdjY2Y5NTNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMC0wMy0w
NyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1w
bGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMQorCisgICAgICAgIFJlbmFt
ZSBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIue2gsIG1tfSB0byBlZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19CisgICAgICAgIGFz
IGl0IGNhbiBiZSBzaGFyZWQgYnkgYm90aCBNYWMgYW5kIGlPUy4gSSBhbHNvIHRvb2sgdGhpcyBv
cHBvcnR1bml0eSB0byBkbyBzb21lIHZlcnkgbWlub3IgbW9kZXJuaXphdGlvbgorICAgICAgICBh
bmQgY2xlYW51cCB0byB0aGVzZSBmaWxlczogdXNlID1kZWZhdWx0IGNvbnN0cnVjdG9ycyBhbmQg
cHV0IHRoZSAqIG9uIHRoZSByaWdodCBzaWRlIGZvciBPYmplY3RpdmUtQyB0eXBlcy4KKworICAg
ICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZF
UyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZyBjb21waWxlIG9uIGl0Lgor
ICAgICAgICBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIg
YWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgorCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5o
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENv
bnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaC4KKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6cmVtb3Zl
QWx0ZXJuYXRpdmVzKToKKwogMjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3Zpbmcg
YSB0ZXh0IHBsYWNlaG9sZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBkNDEzZDZjNGIyYy4uODQ3
MTgzZGNkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTA3
ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBs
ZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIHNvbWUgbW9yZSBTUEkuCisK
KyAgICAgICAgKiBwYWwvc3BpL2lvcy9VSUtpdFNQSS5oOgorCiAyMDE5LTA5LTEzICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdl
YktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggN2Y2ZGE4ODQ4MGQuLmI4YmUwNTg5ZjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMTUzLDEwICsxNTMsNiBA
QCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0
VGl0bGU6KSBOU1N0cmluZyAqX3RpdGxlOwogQGVuZAogCi1XVEZfRVhURVJOX0NfQkVHSU4KLWV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IE5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWU7Ci1X
VEZfRVhURVJOX0NfRU5ECi0KICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAj
aWYgRU5BQkxFKEZVTExfS0VZQk9BUkRfQUNDRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggNGEwOTJkODhmZjguLmE3ZTBmZDc4MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTc5LDYgKzc5LDggQEAgZG9tL2lvcy9Ub3VjaEV2ZW50cy5jcHAKIGVkaXRpbmcvU2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmNwcAogZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKIAorZWRpdGluZy9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbQorZWRpdGluZy9jb2NvYS9B
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KIGVkaXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVt
ZW50cy5jcHAKIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQogZWRpdGluZy9jb2NvYS9E
aWN0aW9uYXJ5TG9va3VwLm1tCkBAIC05NCw3ICs5Niw2IEBAIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAog
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCiAKLWVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5tbQogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQogZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tCiBlZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDk3MWUwNTFiOWUzLi41NjBkNzVkZWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzOSw2ICs0MjM5LDcgQEAKIAkJ
Q0UxQTUwMUYyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUE1MDFEMjJENTM1MDkw
MENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRl
eHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMjEyMTUzMjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaCAqLzsgfTsKKwkJQ0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTE2OUU1MjFG
MUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFNUZBMjU1MjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNUZBMjUzMjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTZEQURGQTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTZEQURGODFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE0MTQyLDYgKzE0MTQzLDggQEAKIAkJQ0UyMTIxNTQyNDBEQkQzMDAwNkVE
NDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
Mjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0OTg4MUNB
MzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1OTQ2NDI0
MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTUxNjlFNjIxRjFC
ODQ3MDBFQTRGNzggLyogQ29sb3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvcklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIy
Nzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2
ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTI4NCw2ICsyMTI4
NywxMCBAQAogCQk3QzNFNTEwNzE4REY4RjEyMDBDMTEyRjcgLyogY29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFNDU5NDY0MjQxMjFBMDUwMDc4
MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovLAorCQkJCUNFNDU5
NDY1MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5t
bSAqLywKKwkJCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmggKi8sCisJCQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLywKIAkJCQk1Q0NDMjcwNzIyRDUzQjY5MDA5NjRGQTAg
LyogQXV0b2ZpbGxFbGVtZW50cy5jcHAgKi8sCiAJCQkJNUNDQzI3MDYyMkQ1M0I2ODAwOTY0RkEw
IC8qIEF1dG9maWxsRWxlbWVudHMuaCAqLywKIAkJCQlDNTIyN0RFRjFDM0M2REQ3MDBGNUVENTQg
LyogRGF0YURldGVjdGlvbi5oICovLApAQCAtMjczMTcsOCArMjczMjQsNiBAQAogCQlFRDUwMURD
OTBCMjQ5RjM5MDBBRTE4RDkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmggKi8sCi0JCQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLywKIAkJCQk5MzdGRjNENDFBMTAxMkQ2MDA4
RUJBMzEgLyogRGljdGlvbmFyeUxvb2t1cC5oICovLAogCQkJCTQ0Mjk1NkNBMjE4QTZEMzAwMDgw
REI1NCAvKiBEaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tICovLAogCQkJCUVENTAxREM1MEIyNDlG
MjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8sCkBAIC0zMTkwNiw2ICszMTkxMSw3IEBACiAJ
CQkJRTRCQkVEMEYxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCQUFFNTgxOTgwRDFERDAwNURGRTcxIC8qIFBy
b3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzUwQ0U5MjNBMTAwN0VG
M0NEIC8qIFByb3RlY3Rpb25TcGFjZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFNDU5NDZG
MjQxMjNDOTYwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzcyQURBMzgxOTdGNDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rpb25T
cGFjZUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlFOTUg
LyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGOEUxMUExMjU2
NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
Mjk3NGMzMTkyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgorCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsKKworICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworCisgICAgdm9pZCBj
bGVhcigpOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBp
bnZhbGlkQ29udGV4dCA9IDA7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmM5NjI2YWEyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyLm1tCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgiCisKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCisjaWYgVVNFKEFQUEtpdCkKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMu
aD4KKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXI6OkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBk
ZWZhdWx0OworCitBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6fkFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCit1aW50NjRfdCBBbHRlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgdWludDY0X3QgY29udGV4
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7CisgICAg
aWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7CisgICAgaWYgKGFs
dGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0Owor
ICAgIGF1dG8gcmVzdWx0ID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFs
dGVybmF0aXZlcyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGlu
dmFsaWRDb250ZXh0OworfQorCitOU1RleHRBbHRlcm5hdGl2ZXMgKkFsdGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQp
Cit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQo
KTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0
ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRp
dmVzT2JqZWN0TWFwLnJlbW92ZShjb250ZXh0KTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFw
LmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCnNpbWlsYXJpdHkgaW5kZXgg
NjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI5YzVhOGRhN2VlLi5jY2ZmZDg4OWRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMjUsNDkgKzI1LDQyIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCi0jaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0KICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworI2ltcG9ydCAiQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNTIE5TVmlldzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFJlY3Q7CisKIGNsYXNzIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgeyB9Ci0gICAgLy8gUmV0dXJu
cyBhIGNvbnRleHQgSUQuCi0gICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRp
dmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdWlu
dDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+
Jik7IC8vIFJldHVybnMgYSBjb250ZXh0IElELgorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcq
LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBj
b250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJpbmcqKSk7CisKKyAgICB1c2lu
ZyBBY2NlcHRhbmNlSGFuZGxlciA9IHZvaWQgKF4pKE5TU3RyaW5nICopOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcgKiwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgQWNjZXB0YW5jZUhh
bmRsZXIpOworCiAgICAgdm9pZCBXRUJDT1JFX0VYUE9SVCByZW1vdmVBbHRlcm5hdGl2ZXModWlu
dDY0X3QgY29udGV4dCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOwogCiBwcml2YXRlOgotICAgIHZv
aWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2
ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKik7Ci0KKyNpZiBVU0UoQVBQ
S0lUKQorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyAqLCB1aW50
NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMgKik7CiAgICAgdm9pZCBkaXNtaXNzQWx0
ZXJuYXRpdmVzKCk7CiAKLSAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAg
ICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgeyB9Ci0gICAgICAgIHVpbnQ2NF90
IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwot
ICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KTsKLSAgICAgICAgdm9pZCByZW1vdmVB
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOwotICAgICAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3QgaW52YWxpZENvbnRleHQgPSAwOwotICAgIHByaXZhdGU6Ci0gICAgICAg
IHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+
IEhhc2hNYXBUeXBlOwotICAgICAgICBIYXNoTWFwVHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1h
cDsKLSAgICB9OwotCi0gICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRl
eHRDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU1ZpZXc+IG1fdmlldzsKKyNlbmRpZgorICAg
IEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpzaW1pbGFyaXR5
IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCmluZGV4IDNmMWJhNTBhN2NmLi4w
ZjgwOTk0ZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOSArMjcsMTkgQEAKICNpbXBv
cnQgIkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIgogCiAjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisKKyNpZiBVU0Uo
QVBQS2l0KQogI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CiAjaW1wb3J0IDxBcHBL
aXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjaW1wb3J0IDxBcHBLaXQvTlNWaWV3Lmg+CisjZWxp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4K
KyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVpbnQ2NF90IEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMp
Ci17Ci0gICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGFs
dGVybmF0aXZlcy5nZXQoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gaW52
YWxpZENvbnRleHQ7Ci0gICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkpCi0g
ICAgICAgIHJldHVybiBjb250ZXh0OwotCi0gICAgSGFzaE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1
bHQgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsK
LSAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7
Ci19Ci0KLU5TVGV4dEFsdGVybmF0aXZlcyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpB
bGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVp
bnQ2NF90IGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmdl
dChjb250ZXh0KS5nZXQoKTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6
OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNv
bnRleHQodWludDY0X3QgY29udGV4dCkKLXsKLSAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5y
ZW1vdmUoY29udGV4dCk7Ci19Ci0KLXZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpB
bGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpjbGVhcigpCi17Ci0gICAgbV9hbHRlcm5h
dGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKLX0KLQogdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0
aXZlcz4mIGFsdGVybmF0aXZlcykKIHsKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5h
ZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKQEAgLTY3LDEwICs0NywxMSBAQCB1aW50NjRf
dCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZQogCiBWZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKIHsKLSAgICBO
U1RleHRBbHRlcm5hdGl2ZXMqIHRleHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVy
LmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVz
ICp0ZXh0QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JD
b250ZXh0KGNvbnRleHQpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsK
LSAgICBmb3IgKE5TU3RyaW5nKiBzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2
ZVN0cmluZ3MpCi0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKKyAg
ICBhbHRlcm5hdGl2ZVN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0ZXh0QWx0ZXJuYXRp
dmVzLmFsdGVybmF0aXZlU3RyaW5ncy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqc3RyaW5n
IGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzKQorICAgICAgICBhbHRlcm5h
dGl2ZVN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7CiAgICAgcmV0dXJuIGFsdGVybmF0
aXZlU3RyaW5nczsKIH0KIApAQCAtNzksNDIgKzYwLDU1IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjpjbGVhcigpCiAgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuY2xl
YXIoKTsKIH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRlcm5h
dGl2ZXMoTlNWaWV3KiB2aWV3LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5
U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJp
bmcqKSkKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVz
KE5TVmlldyAqdmlldywgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmlu
ZywgdWludDY0X3QgY29udGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIgYWNjZXB0YW5jZUhhbmRsZXIp
CiB7CisjaWYgVVNFKEFQUEtJVCkKICAgICBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZpZXcgPSB2aWV3OwotICAgIE5TVGV4
dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5h
dGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICphbHRl
cm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29u
dGV4dCk7CiAgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRv
ck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFs
dGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMu
YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0
cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2Nl
cHRlZFN0cmluZykgeworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBz
aG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vl
c3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZl
U3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpi
b3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TU3RyaW5nICphY2NlcHRlZFN0cmluZykgewogICAgICAgICBpZiAoYWNjZXB0ZWRT
dHJpbmcpIHsKICAgICAgICAgICAgIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRT
dHJpbmcsIGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CiAgICAgICAgICAgICBhY2NlcHRhbmNlSGFu
ZGxlcihhY2NlcHRlZFN0cmluZyk7CiAgICAgICAgIH0KICAgICB9XTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHZpZXcpOworICAgIFVOVVNFRF9QQVJBTShib3VuZGluZ0JveE9mUHJpbWFyeVN0
cmluZyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShhY2Nl
cHRhbmNlSGFuZGxlcik7CisjZW5kaWYKIH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJu
YXRpdmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVz
KQorI2lmIFVTRShBUFBLSVQpCisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpo
YW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nICphY2NlcHRlZEFsdGVybmF0aXZlLCB1
aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMgKmFsdGVybmF0aXZlcykKIHsKICAg
ICBbYWx0ZXJuYXRpdmVzIG5vdGVTZWxlY3RlZEFsdGVybmF0aXZlU3RyaW5nOmFjY2VwdGVkQWx0
ZXJuYXRpdmVdOwogICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChjb250ZXh0KTsKLSAgICBtX3ZpZXcuY2xlYXIoKTsKKyAgICBtX3ZpZXcgPSBudWxs
cHRyOwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVy
bmF0aXZlcygpCiB7Ci0gICAgaWYgKCFtX3ZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBbW05T
U3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0
b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAgaWYgKG1fdmlldykKKyAgICAgICAgW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uSW5kaWNhdG9y
Rm9yVmlldzptX3ZpZXcuZ2V0KCldOwogfQogCisjZW5kaWYKKwogdm9pZCBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KQogewog
ICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250
ZXh0KTsKIH0KLX0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJhODk0YzYwMTIxLi4wMTFlY2ZkNGEy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9y
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBhcnQgMQorCisgICAgICAgIE1vdmUgc29tZSBvZiB0aGUgUGFnZUNs
aWVudE1hYyBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzIGNvZGUgdG8gUGFnZUNsaWVudEltcGxDb2Nv
YSBzbyB0aGF0IGl0CisgICAgICAgIGNhbiBiZSBzaGFyZWQgd2l0aCBpT1MuCisKKyAgICAgICAg
Tm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24g
aU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAgICAgICAgY29tcGlsZSBvbiBp
dC4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0
aGUgY29kZSBpcyBpbiBwbGFjZSB0byBkbyBzby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Q29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EpOiBEZWxldGVkOyBtb3ZlZCB0byBiZSBvdXQtb2Yt
bGluZSB0byBhdm9pZAorICAgICAgICBuZWVkaW5nIHRvICNpbmNsdWRlIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5oIGZyb20gdGhpcyBmaWxlLiBEZWNsYXJlIG91dC1vZi1saW5lIGRlc3Ry
dWN0b3IKKyAgICAgICAgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IE1vdmVkIGZyb20gUGFnZUNsaWVudElt
cGxDb2NvYS5oLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xv
c2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWRkRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbE1hYy5tbS4KKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpY3RhdGlv
bkFsdGVybmF0aXZlcyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6IEFkZGVkOyBzdHViIGZ1
bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCk6IERl
bGV0ZWQ7IG5vdyB3ZSB3aWxsIHVzZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKTogTW92ZWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyIGxvZ2ljIGZyb20gaGVyZSB0byBQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1w
bENvY29hKCkuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKTog
TW92ZWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVyZSB0byBQYWdl
Q2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKCkKKyAgICAgICAgc28gaXQgY2FuIGJlIHNoYXJl
ZCBhbmQgbW9kaWZpZWQgdGhpcyBmdW5jdGlvbiB0byBjYWxsIHRoZSBiYXNlIGNsYXNzIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJ
bXBsKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0
ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3Zl
ZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1tLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVu
dEltcGxDb2NvYS5tbS4KKwogMjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3Zpbmcg
YSB0ZXh0IHBsYWNlaG9sZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggYTZmNzc2OTJjMDAuLmNiMGVjZDFkZTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENv
Y29hLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oCkBAIC0yNiwyMCArMjYsMjkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGFn
ZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtP
YmpDUHRyLmg+CiAKK0BjbGFzcyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBAY2xhc3MgV0tXZWJWaWV3
OwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiB9CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFBhZ2VDbGllbnRJbXBsQ29jb2EgOiBwdWJsaWMgUGFnZUNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgUGFnZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKndlYlZp
ZXcpCi0gICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpIHsgfQorICAgIFBhZ2VDbGllbnRJbXBs
Q29jb2EoV0tXZWJWaWV3ICopOworICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsQ29jb2EoKTsK
KworICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOworCiAgICAgdm9pZCBpc1BsYXlpbmdB
dWRpb1dpbGxDaGFuZ2UoKSBmaW5hbDsKICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdl
KCkgZmluYWw7CiAKQEAgLTUzLDggKzYyLDE3IEBAIHB1YmxpYzoKICAgICBOU1NldCAqc2VyaWFs
aXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVy
bmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpIGZpbmFsOworICAg
IHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpIGZpbmFsOworICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAg
V2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX3dlYlZpZXc7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCmluZGV4IGU3ZDczODJkYjViLi40MDk0OWMyZjQwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBAIC0y
OSw5ICsyOSwyNCBAQAogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oIgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitQYWdlQ2xpZW50SW1wbENv
Y29hOjpQYWdlQ2xpZW50SW1wbENvY29hKFdLV2ViVmlldyAqd2ViVmlldykKKyAgICA6IG1fd2Vi
VmlldyB7IHdlYlZpZXcgfQorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICwg
bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgeyBtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcj4oKSB9CisjZW5kaWYKK3sKK30KKworUGFnZUNsaWVudEltcGxDb2NvYTo6
flBhZ2VDbGllbnRJbXBsQ29jb2EoKSA9IGRlZmF1bHQ7CisKIHZvaWQgUGFnZUNsaWVudEltcGxD
b2NvYTo6aXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxD
aGFuZ2VWYWx1ZUZvcktleTpOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX2lzUGxheWlu
Z0F1ZGlvKSldOwpAQCAtODAsNSArOTUsMzIgQEAgTlNTZXQgKlBhZ2VDbGllbnRJbXBsQ29jb2E6
OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0CiB9CiAKICNlbmRpZgorCit2
b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQoKQoreworI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQorICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5jbGVh
cigpOworI2VuZGlmCit9CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKwordWlu
dDY0X3QgUGFnZUNsaWVudEltcGxDb2NvYTo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0
dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVzKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQp
OworfQorCitWZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9u
Q29udGV4dCk7Cit9CisKKyNlbmRpZgorCiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggZTNmZjMwY2U4MmIuLmEzY2VkZjU5MGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNTMsNiArMzUzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pIHsgfQogCisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0
YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3Rh
dGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgVmVj
dG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpID0gMDsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBw
bHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2
NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBQbHVnaW5Db21wbGV4VGV4dElu
cHV0U3RhdGUpID0gMDsKQEAgLTM3NiwxOCArMzgzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IE5TVmlldyAqaW5zcGVjdG9yQXR0YWNobWVudFZpZXcoKSA9IDA7CiAgICAgdmlydHVhbCBfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0UmVnaXN0cnkoKSA9IDA7CiAKLSNpZiBV
U0UoQVBQS0lUKQogICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSkgPSAwOwotI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHZpcnR1YWwgdWludDY0X3QgYWRkRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9u
QWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KSA9IDA7Ci0jZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKICNpZiBV
U0UoSU5TRVJUSU9OX1VORE9fR1JPVVBJTkcpCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW5z
ZXJ0aW9uVW5kb0dyb3VwaW5nKCkgPSAwOwotI2VuZGlmIC8vIFVTRShJTlNFUlRJT05fVU5ET19H
Uk9VUElORykKLSNlbmRpZiAvLyBVU0UoQVBQS0lUKQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKaW5kZXggNWEzYTdhYmY1OTcuLjk3ZjNmNWViMDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMzQsNiArMzQsNyBA
QAogCiBPQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7CiBPQkpDX0NMQVNTIFdLRWRpdG9yVW5kb1Rh
cmdldDsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwpAQCAtNzcs
NyArNzgsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGdw
dVByb2Nlc3NDcmFzaGVkKCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIHBhZ2VDbG9zZWQo
KSBvdmVycmlkZTsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV2ViRnJhbWVQcm94eSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiYpIG92ZXJyaWRlOwpAQCAtMjYyLDYgKzI2MiwxMCBAQCBwcml2YXRlOgogICAgIFdURjo6
T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25p
emVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
SShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBv
dmVycmlkZTsKKyNlbmRpZgorCiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250
ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCmluZGV4IDg5MjM5Zjc5NGYzLi4yZmNlMGM1NTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjMzLDExICsyMzMsNiBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpncHVQcm9jZXNzQ3Jhc2hlZCgpCiB9CiAjZW5kaWYKIAot
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05NjMsNiArOTU4LDE1IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlv
bkNvbnRleHQmCiAgICAgW21fY29udGVudFZpZXcgX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4
dDpjb250ZXh0XTsKIH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCB1aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAppbmRleCAwZGNhODcwNmQ0Mi4uZjBjYzM4YTQ4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0zMiw3ICszMiw3IEBACiAj
aW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RE9NUGFzdGVBY2Nlc3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogQGNs
YXNzIFdLRWRpdG9yVW5kb1RhcmdldDsKIEBjbGFzcyBXS1ZpZXc7CkBAIC0xODAsMTEgKzE4MCw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSkgb3ZlcnJpZGU7CiAKICNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICB1aW50NjRfdCBhZGREaWN0YXRpb25B
bHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRp
b25Db250ZXh0KSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJ
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFN0cmluZz4gZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwog
I2VuZGlmCisKICAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKQEAgLTI2Nyw5ICsyNjUs
NiBAQCBwcml2YXRlOgogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBDb3JyZWN0
aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CiAjZW5kaWYKLSNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKLSNlbmRpZgogCiAg
ICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzIHsgZmFsc2UgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KaW5kZXggYWYzNzZhZTY1M2EuLjAzMTkyZDc2YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC03OSwxMyArNzksMTAgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCi0jaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjZW5kaWYKQEAgLTEwMywyMCArMTAwLDE2IEBA
IEBlbmQKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdL
V2ViVmlldyAqd2ViVmlldykKK1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcg
KnZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGllbnRJbXBsQ29jb2Eod2Vi
VmlldykKICAgICAsIG1fdmlldyh2aWV3KQotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCi0jZW5kaWYKIHsKIH0KIAotUGFnZUNsaWVudEltcGw6
On5QYWdlQ2xpZW50SW1wbCgpCi17Ci19CitQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBs
KCkgPSBkZWZhdWx0OwogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRJbXBsKFdlYlZpZXdJbXBs
JiBpbXBsKQogewpAQCAtMjY2LDkgKzI1OSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nl
c3NEaWRFeGl0KCkKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQogewogICAgIG1f
aW1wbC0+cGFnZUNsb3NlZCgpOwotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5jbGVhcigpOwotI2VuZGlmCisgICAgUGFn
ZUNsaWVudEltcGxDb2NvYTo6cGFnZUNsb3NlZCgpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRSZWxhdW5jaFByb2Nlc3MoKQpAQCAtNjg0LDE1ICs2NzUsNiBAQCBib29sIFBhZ2VDbGll
bnRJbXBsOjpleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVj
dG9yU3RyaW5nKQogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi11aW50NjRf
dCBQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCi17Ci0gICAgcmV0dXJuIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsK
LX0KLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCi17Ci0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKLX0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQogewpAQCAtNzAzLDEwICs2ODUsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaQog
ICAgIH0pOwogfQogCi1WZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCi17Ci0gICAgcmV0dXJuIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlv
bkNvbnRleHQpOwotfQogI2VuZGlmCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEVkaXRhYmxl
RWxlbWVudElzRm9jdXNlZChib29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKLS0gCjIuMjQu
MSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392870</attachid>
            <date>2020-03-07 11:06:03 -0800</date>
            <delta_ts>2020-03-07 11:17:01 -0800</delta_ts>
            <desc>Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</desc>
            <filename>Part2.patch</filename>
            <type>text/plain</type>
            <size>15471</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBkN2MwMWE5ZDc3NjE2MzUwYzg0ZWI1ZDQ5NWQ1MmEzODJmZTY5N2EyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTE6MDU6MjcgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDIKCk1vdmUgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoKSBmcm9tIHRoZSBN
YWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gQ29jb2Etc3BlY2lmaWMKaW1wbGVt
ZW50YXRpb24gZmlsZXMgYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJ
IGRpZCB2ZXJ5IG1pbm9yIEMrKyBtb2Rlcm5pemF0aW9uOgpqdXN0IG1vcmUgdXNlcyBvZiBhdXRv
IGFuZCB1bmlmb3JtIGluaXRpYWxpemVyIHN5bnRheC4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5h
YmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUywgeWV0LiBTbywgdGhpcyBjb2Rl
IGlzbid0IGJlaW5nIGNvbXBpbGVkCmZvciBpT1MsIHlldC4gSSB3aWxsIGRvIHRoYXQgaW4gYSBz
dWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBk
byBzby4KCiogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKToKKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiogVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMpOiBEZWxldGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CihXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKToKKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktp
dDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgotLS0KIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysr
KysrKysrCiAuLi4vVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAgICAgfCAz
MiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwICAgICAgfCAgMSArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCAgICAgICAgfCAgNiArKy0tCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tICAgfCAzMSAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tICB8IDE4ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMyArLQogLi4uL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgIDQgKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tICAgICAgfCAxOSAtLS0tLS0tLS0tLQogOSBmaWxlcyBjaGFu
Z2VkLCA4OSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAxMWVj
ZmQ0YTJhLi5mZmY1NDcwZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wMy0w
NyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1w
bGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMgorCisgICAgICAgIE1vdmUg
aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoKSBmcm9tIHRoZSBNYWMtc3BlY2lmaWMgaW1wbGVtZW50
YXRpb24gZmlsZXMgdG8gQ29jb2Etc3BlY2lmaWMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZmls
ZXMgYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJIGRpZCB2ZXJ5IG1p
bm9yIEMrKyBtb2Rlcm5pemF0aW9uOgorICAgICAgICBqdXN0IG1vcmUgdXNlcyBvZiBhdXRvIGFu
ZCB1bmlmb3JtIGluaXRpYWxpemVyIHN5bnRheC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZl
bid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRo
aXMgY29kZSBpc24ndCBiZWluZyBjb21waWxlZAorICAgICAgICBmb3IgaU9TLCB5ZXQuIEkgd2ls
bCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUg
aXMgaW4gcGxhY2UgdG8gZG8gc28uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpp
bnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQu
CisKIDIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CmluZGV4IGEzNmVlZDIxY2I0Li4wN2M5MDE2ZWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1w
b3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5o
IgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNp
bXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgpAQCAtMTYxLDYgKzE2Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzdGFydERyYWcoY29uc3QgRHJhZ0l0ZW0mIGRyYWdJdGVtLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhCiAgICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhkcmFnSXRlbSwgZHJhZ0lt
YWdlSGFuZGxlKTsKIH0KIAorLy8gRklYTUU6IE1vdmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBh
Z2VQcm94eUlPUy5tbS4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCkKQEAgLTIyNSw2ICsyMjcsMzYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAg
ICAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25h
cnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UsIGJvb2wg
cmVnaXN0ZXJVbmRvR3JvdXApCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGFsdGVybmF0aXZlV2l0aFJhbmdlIDogZGljdGF0aW9uQWx0ZXJuYXRpdmVz
V2l0aFJhbmdlKSB7CisgICAgICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBwYWdlQ2xp
ZW50KCkuYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVy
bmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZSB7IGFsdGVybmF0
aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5s
ZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQgfSk7CisgICAgfQorCisgICAgaWYgKGRpY3RhdGlvbkFs
dGVybmF0aXZlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9u
czsKKyAgICAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3Vw
OworCisgICAgICAgIGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZN
b3ZlKG9wdGlvbnMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyB7IHRleHQsIHJl
cGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXAg
fSwgbV93ZWJQYWdlSUQpOworI2Vsc2UKKyAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwor
ICAgIG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKKworICAg
IGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKKyNlbmRpZgorfQogICAgIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyOGE1MDA0NWFhLi45NWY4NWY0NmZh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04NTM5LDYg
Kzg1MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hh
bmdlcyYmIGNoYW5nZXMpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChX
VEZNb3ZlKGNoYW5nZXMpKSk7CiB9CiAKKy8vIEZJWE1FOiBNb3ZlIHRoZXNlIGZ1bmN0aW9ucyB0
byBXZWJQYWdlUHJveHlDb2NvYS5tbS4KICNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY4ODE5YTk1MTA4Li43MWUwZDBkNmY5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg1Miw3ICs4NTIsMTAgQEAg
cHVibGljOgogICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
ZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKKworICAgIHZvaWQgaW5zZXJ0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRS
YW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CisgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRB
c3luYyhjb25zdCBTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2Us
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiwgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCk7CisKICAgICB2b2lkIGhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6
RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5n
UmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKQEAgLTg3MCw3ICs4NzMsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOwogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0
cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKEZ1bmN0
aW9uPHZvaWQoY29uc3QgRm9udEluZm8mLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggOGFkMmJhMWU4OTYuLmI3MjA5MTQ2ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE4NCwzNyArMTg0LDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xs
YWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1l
SXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKQotewotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7Ci0KLSAgICBmb3Ig
KGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgOiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpIHsKLSAgICAgICAgdWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCA9IHBhZ2VDbGllbnQoKS5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKLSAgICAgICAgaWYgKGRpY3RhdGlvbkNvbnRl
eHQpCi0gICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFs
dGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2
ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKLSAgICB9Ci0KLSAg
ICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgewotICAgICAgICBJbnNlcnRU
ZXh0T3B0aW9ucyBvcHRpb25zOwotICAgICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0g
cmVnaXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4
dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVn
aXN0ZXJVbmRvR3JvdXApLCBtX3dlYlBhZ2VJRCk7Ci0jZWxzZQotICAgIEluc2VydFRleHRPcHRp
b25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5k
b0dyb3VwOwotCi0gICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdU
Rk1vdmUob3B0aW9ucykpOwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDljNGY2
YzBjZjEyLi4xY2FmNmE4ZDVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTg5LDYgKzE4OSwyNCBAQCBE
aWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShG
cmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwog
fQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCit7CisgICAgYXV0byYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFJl
ZjxGcmFtZT4gcHJvdGVjdG9yIHsgZnJhbWUgfTsKKworICAgIGlmIChyZXBsYWNlbWVudEVkaXRp
bmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgeworICAgICAgICBhdXRvIHJlcGxhY2VtZW50
UmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1Jh
bmdlKTsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJh
bmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSB9KTsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJV
bmRvR3JvdXApCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJ
bnNlcnRpb25VbmRvR3JvdXBpbmcgeyB9KTsKKworICAgIEFTU0VSVCghZnJhbWUuZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKSk7CisgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0
KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyIC8qIHRyaWdnZXJp
bmdFdmVudCAqLyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVt
b3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCiB7CiAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0
aF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcw
N2ZjNmJkYTQyLi5hOTFlYmI4MTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtODQ0LDEwICs4NDQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2hv
dWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0
TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50
Kik7CisKKyAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRp
b25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOwogICAgIHZvaWQgYXR0cmlidXRl
ZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IGI0YWVhNzU1NTRkLi5hMDkwOTExNWRiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NTIs
NyArNDUyLDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQWNjZXB0c0ZpcnN0TW91
c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29s
IHJlc3VsdCkgU3luY2hyb25vdXMKIAogICAgIFNldFRleHRBc3luYyhTdHJpbmcgdGV4dCkKKwog
ICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jh
bmdlIHJlcGxhY2VtZW50UmFuZ2UsIHN0cnVjdCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9w
dGlvbnMpCisgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBX
ZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVu
ZG9Hcm91cCkKKwogICAgIEhhc01hcmtlZFRleHQoKSAtPiAoYm9vbCBoYXNNYXJrZWRUZXh0KSBB
c3luYwogICAgIEdldE1hcmtlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpAQCAtNDYyLDcgKzQ2NSw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29u
ZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIElu
c2VydERpY3RhdGVkVGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5n
UmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0
aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCiAgICAg
QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6
RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAg
Rm9udEF0U2VsZWN0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CmluZGV4IDEyOWIwMWFiOTVhLi4wYTZkMzhkYjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMyMCwyNSArMzIwLDYg
QEAgdm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5z
ZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFu
Z2UmIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdp
c3RlclVuZG9Hcm91cCkKLXsKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgUmVmPEZyYW1lPiBwcm90ZWN0b3Io
ZnJhbWUpOwotCi0gICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5v
dEZvdW5kKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRp
bmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwotICAgICAg
ICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVM
VF9BRkZJTklUWSkpOwotICAgIH0KLQotICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkKLSAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91
cGluZygpKTsKLSAgICAKLSAgICBBU1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9u
KCkpOwotICAgIGZyYW1lLmVkaXRvcigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRp
b25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbnVsbHB0cik7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6YXR0
cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1Jhbmdl
JiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotLSAK
Mi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392872</attachid>
            <date>2020-03-07 11:14:39 -0800</date>
            <delta_ts>2020-03-07 16:17:44 -0800</delta_ts>
            <desc>Part 1: Share AlternativeTextUIController</desc>
            <filename>Part1.patch</filename>
            <type>text/plain</type>
            <size>43204</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAxZjA3MDI2NmEzMjc5ZGViYTBhMjE4ZmUzNGU2OGEwMTQxODAzY2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTA6NTk6MDYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpTb3VyY2UvV2ViQ29yZToKClBhcnQgMQoKUmVuYW1lIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19IHRvIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLntoLCBtbX0KYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1h
YyBhbmQgaU9TLiBJIGFsc28gdG9vayB0aGlzIG9wcG9ydHVuaXR5IHRvIGRvIHNvbWUgdmVyeSBt
aW5vciBtb2Rlcm5pemF0aW9uCmFuZCBjbGVhbnVwIHRvIHRoZXNlIGZpbGVzOiB1c2UgPWRlZmF1
bHQgY29uc3RydWN0b3JzIGFuZCBwdXQgdGhlICogb24gdGhlIHJpZ2h0IHNpZGUgZm9yIE9iamVj
dGl2ZS1DIHR5cGVzLgoKTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9B
TFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGls
ZSBvbiBpdC4KSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVy
IGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBkbyBzby4KCiogU291cmNlc0NvY29hLnR4dDoK
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW06IEFkZGVkLgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6
Y2xlYXIpOgoqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaC4KKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbS4KKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWRkQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmNsZWFyKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hv
d0FsdGVybmF0aXZlcyk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6Omhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKToKKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKToKClNvdXJjZS9XZWJDb3JlL1BBTDoKCkV4
cG9zZSBzb21lIG1vcmUgU1BJLgoKKiBwYWwvc3BpL2lvcy9VSUtpdFNQSS5oOgoKU291cmNlL1dl
YktpdDoKClBhcnQgMQoKTW92ZSBzb21lIG9mIHRoZSBQYWdlQ2xpZW50TWFjIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMgY29kZSB0byBQYWdlQ2xpZW50SW1wbENvY29hIHNvIHRoYXQgaXQKY2FuIGJl
IHNoYXJlZCB3aXRoIGlPUy4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJ
T05fQUxURVJOQVRJVkVTIG9uIGlPUywgeWV0LiBTbywgdGhpcyBjb2RlIGlzbid0IGJlaW5nCmNv
bXBpbGUgb24gaXQuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBh
ZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8gc28uCgoqIFVJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OlBh
Z2VDbGllbnRJbXBsQ29jb2EpOiBEZWxldGVkOyBtb3ZlZCB0byBiZSBvdXQtb2YtbGluZSB0byBh
dm9pZApuZWVkaW5nIHRvICNpbmNsdWRlIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGZy
b20gdGhpcyBmaWxlLiBEZWNsYXJlIG91dC1vZi1saW5lIGRlc3RydWN0b3IKZm9yIHRoZSBzYW1l
IHJlYXNvbi4KKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbToKKFdlYktp
dDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IE1vdmVkIGZyb20g
UGFnZUNsaWVudEltcGxDb2NvYS5oLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdl
Q2xvc2VkKToKKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWRkRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbE1hYy5tbS4KKFdlYktpdDo6UGFnZUNs
aWVudEltcGxDb2NvYTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCihXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERpdHRvLgoq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oOgoqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6IEFkZGVkOyBzdHViIGZ1bmN0
aW9uLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCk6IERlbGV0ZWQ7IG5vdyB3
ZSB3aWxsIHVzZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CiogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKTogTW92ZWQgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVyZSB0byBQYWdlQ2xpZW50SW1wbENv
Y29hOjpQYWdlQ2xpZW50SW1wbENvY29hKCkuCihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdl
Q2xvc2VkKTogTW92ZWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVy
ZSB0byBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKCkKc28gaXQgY2FuIGJlIHNoYXJl
ZCBhbmQgbW9kaWZpZWQgdGhpcyBmdW5jdGlvbiB0byBjYWxsIHRoZSBiYXNlIGNsYXNzIGltcGxl
bWVudGF0aW9uLgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKTogRGVs
ZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0ZWQ7IG1vdmVkIHRvIFBhZ2VD
bGllbnRJbXBsQ29jb2EubW0uCihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1t
LgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGVsZXRl
ZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KLS0tCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8IDExICsrKwogU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmggICAgIHwgMTAgKysrCiBTb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAgfCAgMyArLQogLi4uL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgMTAgKystCiAuLi4vY29jb2EvQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCAgfCA1OSArKysrKysrKysrKysrKysKIC4uLi9j
b2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbSB8IDczICsrKysrKysrKysr
KysrKysrKwogLi4uL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICAgICAgICAgICAgIHwg
NDUgKysrKystLS0tLS0KIC4uLi9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gICAgICAg
ICAgICB8IDc0ICsrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysKIC4uLi9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5oICAgICB8IDIyICsrKysrLQogLi4uL1VJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLm1tICAgIHwgNDIgKysrKysrKysrKysKIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCAgICAgICAgICB8IDE5ICsrLS0tCiAuLi4vV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCAgfCAgNiArLQogLi4uL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIHwgMTQgKystLQogLi4uL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggIHwgIDkgKy0tCiAuLi4vV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gfCAzMiArKy0tLS0tLQogMTcgZmlsZXMg
Y2hhbmdlZCwgMzgzIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCiByZW5hbWUgU291cmNl
L1dlYkNvcmUvZWRpdGluZy97bWFjID0+IGNvY29hfS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIuaCAoNjQlKQogcmVuYW1lIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcve21hYyA9PiBjb2NvYX0v
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICg2NSUpCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk5Yzc1
ODJlYTc0Li5kN2NjZjk1M2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAz
LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAxCisKKyAgICAgICAgUmVu
YW1lIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19IHRvIGVk
aXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLntoLCBtbX0KKyAgICAgICAg
YXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJIGFsc28gdG9vayB0aGlz
IG9wcG9ydHVuaXR5IHRvIGRvIHNvbWUgdmVyeSBtaW5vciBtb2Rlcm5pemF0aW9uCisgICAgICAg
IGFuZCBjbGVhbnVwIHRvIHRoZXNlIGZpbGVzOiB1c2UgPWRlZmF1bHQgY29uc3RydWN0b3JzIGFu
ZCBwdXQgdGhlICogb24gdGhlIHJpZ2h0IHNpZGUgZm9yIE9iamVjdGl2ZS1DIHR5cGVzLgorCisg
ICAgICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJ
VkVTIG9uIGlPUywgeWV0LiBTbywgdGhpcyBjb2RlIGlzbid0IGJlaW5nIGNvbXBpbGUgb24gaXQu
CisgICAgICAgIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRl
ciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8gc28uCisKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
Lmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJv
bGxlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjpjbGVhcik6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oLgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tLgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5hdGl2
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1v
dmVBbHRlcm5hdGl2ZXMpOgorCiAyMDIwLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCByZW1vdmlu
ZyBhIHRleHQgcGxhY2Vob2xkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGQ0MTNkNmM0YjJjLi44
NDcxODNkY2RmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMt
MDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIElt
cGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2Ugc29tZSBtb3JlIFNQSS4K
KworICAgICAgICAqIHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMTktMDktMTMgIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcg
V2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCA0YjZhZmYyMzYxNS4uYjhiZTA1ODlmOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0zMiw2ICszMiw3IEBA
IFdURl9FWFRFUk5fQ19FTkQKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0
IDxVSUtpdC9OU1BhcmFncmFwaFN0eWxlX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L05TVGV4
dEFsdGVybmF0aXZlcy5oPgogI2ltcG9ydCA8VUlLaXQvTlNUZXh0QXR0YWNobWVudF9Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxVSUtpdC9OU1RleHRMaXN0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxp
Y2F0aW9uU2NlbmVDb25zdGFudHMuaD4KQEAgLTk4LDYgKzk5LDE1IEBAIHR5cGVkZWYgZW51bSB7
CiAtIChOU1N0cmluZyAqKW1hcmtlckZvckl0ZW1OdW1iZXI6KE5TSW50ZWdlcilpdGVtTnVtOwog
QGVuZAogCitAaW50ZXJmYWNlIE5TVGV4dEFsdGVybmF0aXZlcyA6IE5TT2JqZWN0CistIChpZClp
bml0V2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nICopcHJpbWFyeVN0cmluZyBhbHRlcm5hdGl2
ZVN0cmluZ3M6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5hdGl2ZVN0cmluZ3M7CistIChp
ZClpbml0V2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nICopcHJpbWFyeVN0cmluZyBhbHRlcm5h
dGl2ZVN0cmluZ3M6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5hdGl2ZVN0cmluZ3MgaXNM
b3dDb25maWRlbmNlOihCT09MKWxvd0NvbmZpZGVuY2U7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkp
IE5TU3RyaW5nICpwcmltYXJ5U3RyaW5nOworQHByb3BlcnR5IChyZWFkb25seSkgTlNBcnJheTxO
U1N0cmluZyAqPiAqYWx0ZXJuYXRpdmVTdHJpbmdzOworQHByb3BlcnR5IChyZWFkb25seSkgQk9P
TCBpc0xvd0NvbmZpZGVuY2U7CitAZW5kCisKIEBpbnRlcmZhY2UgVUlBcHBsaWNhdGlvbiAoKQog
LSAoQk9PTClfaXNDbGFzc2ljOwogKyAoVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGUpX2Ns
YXNzaWNNb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGEwOTJkODhmZjguLmE3ZTBm
ZDc4MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTc5LDYgKzc5LDggQEAgZG9tL2lv
cy9Ub3VjaEV2ZW50cy5jcHAKIGVkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAogZWRp
dGluZy9TbWFydFJlcGxhY2VDRi5jcHAKIAorZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlci5tbQorZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW0KIGVkaXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAKIGVkaXRpbmcvY29j
b2EvRGF0YURldGVjdGlvbi5tbQogZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCkBA
IC05NCw3ICs5Niw2IEBAIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCiBl
ZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAogZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCiAKLWVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQogZWRpdGlu
Zy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CiBlZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk3MWUwNTFiOWUzLi41NjBk
NzVkZWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDIzOSw2ICs0MjM5LDcgQEAKIAkJQ0UxQTUwMUYyMkQ1MzUwOTAwQ0JD
OTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMUE1MDFEMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhv
bGRpbmdUYW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTUz
MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBERjAw
QjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBC
NEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsKKwkJ
Q0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1
OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTUx
NjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xv
cklPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNFNUZBMjU1MjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUZBMjUz
MjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTZEQURGQTFDNTkx
RTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZEQURGODFDNTkx
RTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MTQyLDYg
KzE0MTQzLDggQEAKIAkJQ0UyMTIxNTQyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5o
OyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7
IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcw
MEVBNEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTUxNjlFNjIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTI4NCw2ICsyMTI4NywxMCBAQAogCQk3QzNFNTEwNzE4
REY4RjEyMDBDMTEyRjcgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlci5oICovLAorCQkJCUNFNDU5NDY1MjQxMjFBMDUwMDc4MDE5RiAv
KiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbSAqLywKKwkJCQlDRTdCMkRBRjE1
ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8sCisJCQkJ
Q0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5t
bSAqLywKIAkJCQk1Q0NDMjcwNzIyRDUzQjY5MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50cy5j
cHAgKi8sCiAJCQkJNUNDQzI3MDYyMkQ1M0I2ODAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMu
aCAqLywKIAkJCQlDNTIyN0RFRjFDM0M2REQ3MDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5oICov
LApAQCAtMjczMTcsOCArMjczMjQsNiBAQAogCQlFRDUwMURDOTBCMjQ5RjM5MDBBRTE4RDkgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlDRTdC
MkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8s
Ci0JCQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbSAqLywKIAkJCQk5MzdGRjNENDFBMTAxMkQ2MDA4RUJBMzEgLyogRGljdGlvbmFyeUxv
b2t1cC5oICovLAogCQkJCTQ0Mjk1NkNBMjE4QTZEMzAwMDgwREI1NCAvKiBEaWN0aW9uYXJ5TG9v
a3VwTGVnYWN5Lm1tICovLAogCQkJCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JN
YWMubW0gKi8sCkBAIC0zMTkwNiw2ICszMTkxMSw3IEBACiAJCQkJRTRCQkVEMEYxNEY0MDI1RDAw
M0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzdCQUFFNTgxOTgwRDFERDAwNURGRTcxIC8qIFByb3RlY3Rpb25TcGFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzUwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFj
ZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFNDU5NDZGMjQxMjNDOTYwMDc4MDE5RiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcy
QURBMzgxOTdGNDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rpb25TcGFjZUNvY29hLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGOEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFByb3h5
U2VydmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjk3NGMzMTkyZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQg
PHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorCitPQkpDX0NMQVNTIE5T
VGV4dEFsdGVybmF0aXZlczsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIoKTsKKworICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgTlNUZXh0
QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOwor
CisgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQp
OworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisK
K3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0
aXZlcz4+IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMmM5NjI2YWEyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFsdGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgiCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKEFQUEtpdCkK
KyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbGlmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OkFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCitBbHRlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6fkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
KCkgPSBkZWZhdWx0OworCit1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBh
bHRlcm5hdGl2ZXMpCit7CisgICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICByZXR1cm4gaW52YWxpZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQo
Y29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIGF1dG8gcmVzdWx0ID0gbV9h
bHRlcm5hdGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0
dXJuIHJlc3VsdC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OworfQorCitO
U1RleHRBbHRlcm5hdGl2ZXMgKkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphbHRl
cm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgcmV0dXJuIG1fYWx0
ZXJuYXRpdmVzT2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQoKTsKK30KKwordm9pZCBBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1
aW50NjRfdCBjb250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJlbW92ZShj
b250ZXh0KTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xl
YXIoKQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oCmluZGV4IDI5YzVhOGRhN2VlLi5jY2ZmZDg4OWRlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
aApAQCAtMjUsNDkgKzI1LDQyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KICNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKworI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwogT0JKQ19DTEFTUyBOU1RleHRB
bHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNTIE5TVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBGbG9hdFJlY3Q7CisKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyKCkgeyB9Ci0gICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCi0gICAg
V0VCQ09SRV9FWFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkg
PSBkZWZhdWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7IC8vIFJldHVybnMgYSBjb250
ZXh0IElELgorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcqLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRh
bmNlSGFuZGxlcikoTlNTdHJpbmcqKSk7CisKKyAgICB1c2luZyBBY2NlcHRhbmNlSGFuZGxlciA9
IHZvaWQgKF4pKE5TU3RyaW5nICopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0FsdGVy
bmF0aXZlcyhOU1ZpZXcgKiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0
cmluZywgdWludDY0X3QgY29udGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIpOworCiAgICAgdm9pZCBX
RUJDT1JFX0VYUE9SVCByZW1vdmVBbHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4dCk7CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVp
bnQ2NF90IGNvbnRleHQpOwogCiBwcml2YXRlOgotICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRl
cm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwg
TlNUZXh0QWx0ZXJuYXRpdmVzKik7Ci0KKyNpZiBVU0UoQVBQS0lUKQorICAgIHZvaWQgaGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyAqLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRB
bHRlcm5hdGl2ZXMgKik7CiAgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKLSAgICBj
bGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHsKLSAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyKCkgeyB9Ci0gICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwotICAgICAgICB2b2lkIGNsZWFyKCk7
Ci0gICAgICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50
NjRfdCBjb250ZXh0KTsKLSAgICAgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaW52YWxp
ZENvbnRleHQgPSAwOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4+IEhhc2hNYXBUeXBlOwotICAgICAg
ICBIYXNoTWFwVHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKLSAgICB9OwotCi0gICAgQWxl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOwogICAgIFJl
dGFpblB0cjxOU1ZpZXc+IG1fdmlldzsKKyNlbmRpZgorICAgIEFsdGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
bW0KcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLm1tCmluZGV4IDNmMWJhNTBhN2NmLi4wZjgwOTk0ZGFhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNywzOSArMjcsMTkgQEAKICNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5oIgogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBv
cnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisKKyNpZiBVU0UoQVBQS2l0KQogI2ltcG9ydCA8QXBw
S2l0L05TU3BlbGxDaGVja2VyLmg+CiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVz
Lmg+CiAjaW1wb3J0IDxBcHBLaXQvTlNWaWV3Lmg+CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXVpbnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCi17Ci0gICAgdWludDY0X3QgY29u
dGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7Ci0g
ICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7Ci0gICAgaWYg
KGFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0
OwotCi0gICAgSGFzaE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09i
amVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKLSAgICByZXR1cm4gcmVzdWx0Lmlz
TmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Ci19Ci0KLU5TVGV4dEFsdGVybmF0
aXZlcyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCi17Ci0g
ICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQoKTsKLX0K
LQotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4
dCkKLXsKLSAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7Ci19Ci0K
LXZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjpjbGVhcigpCi17Ci0gICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIo
KTsKLX0KLQogdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykK
IHsKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVzKTsKQEAgLTY3LDEwICs0NywxMSBAQCB1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZQogCiBW
ZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQodWludDY0X3QgY29udGV4dCkKIHsKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIHRl
eHRBbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoY29udGV4dCk7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0g
bV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogICAg
IFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsKLSAgICBmb3IgKE5TU3RyaW5nKiBz
dHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCi0gICAgICAgIGFs
dGVybmF0aXZlU3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKKyAgICBhbHRlcm5hdGl2ZVN0cmluZ3Mu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5n
cy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMu
YWx0ZXJuYXRpdmVTdHJpbmdzKQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MudW5jaGVja2Vk
QXBwZW5kKHN0cmluZyk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZlU3RyaW5nczsKIH0KIApAQCAt
NzksNDIgKzYwLDU1IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcigp
CiAgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuY2xlYXIoKTsKIH0KIAotdm9pZCBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiB2aWV3LCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250
ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJpbmcqKSkKK3ZvaWQgQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyAqdmlldywgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwg
QWNjZXB0YW5jZUhhbmRsZXIgYWNjZXB0YW5jZUhhbmRsZXIpCiB7CisjaWYgVVNFKEFQUEtJVCkK
ICAgICBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1
cm47CiAKICAgICBtX3ZpZXcgPSB2aWV3OwotICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJu
YXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRl
eHQpOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRD
b250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFhbHRl
cm5hdGl2ZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25J
bmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3Ry
aW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZv
clN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmlldy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgIFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRv
ck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFs
dGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMu
YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0
cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICphY2Nl
cHRlZFN0cmluZykgewogICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAgICAgICAg
IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFsdGVy
bmF0aXZlcyk7CiAgICAgICAgICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmluZyk7
CiAgICAgICAgIH0KICAgICB9XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZpZXcpOworICAg
IFVOVVNFRF9QQVJBTShib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyk7CisgICAgVU5VU0VEX1BB
UkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShhY2NlcHRhbmNlSGFuZGxlcik7CisjZW5k
aWYKIH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVk
QWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGNvbnRl
eHQsIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzKQorI2lmIFVTRShBUFBLSVQpCisK
K3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0
aXZlKE5TU3RyaW5nICphY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1Rl
eHRBbHRlcm5hdGl2ZXMgKmFsdGVybmF0aXZlcykKIHsKICAgICBbYWx0ZXJuYXRpdmVzIG5vdGVT
ZWxlY3RlZEFsdGVybmF0aXZlU3RyaW5nOmFjY2VwdGVkQWx0ZXJuYXRpdmVdOwogICAgIG1fY29u
dGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKLSAg
ICBtX3ZpZXcuY2xlYXIoKTsKKyAgICBtX3ZpZXcgPSBudWxscHRyOwogfQogCiB2b2lkIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCiB7Ci0gICAgaWYg
KCFtX3ZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQo
KV07CisgICAgaWYgKG1fdmlldykKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uSW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0KCld
OwogfQogCisjZW5kaWYKKwogdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnJlbW92
ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KQogewogICAgIG1fY29udGV4dENvbnRyb2xs
ZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKIH0KLX0KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGJhODk0YzYwMTIxLi4wMTFlY2ZkNGEyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MyBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQg
MQorCisgICAgICAgIE1vdmUgc29tZSBvZiB0aGUgUGFnZUNsaWVudE1hYyBkaWN0YXRpb24gYWx0
ZXJuYXRpdmVzIGNvZGUgdG8gUGFnZUNsaWVudEltcGxDb2NvYSBzbyB0aGF0IGl0CisgICAgICAg
IGNhbiBiZSBzaGFyZWQgd2l0aCBpT1MuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2ZW4ndCBl
bmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNv
ZGUgaXNuJ3QgYmVpbmcKKyAgICAgICAgY29tcGlsZSBvbiBpdC4gSSB3aWxsIGRvIHRoYXQgaW4g
YSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0
byBkbyBzby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBs
Q29jb2EpOiBEZWxldGVkOyBtb3ZlZCB0byBiZSBvdXQtb2YtbGluZSB0byBhdm9pZAorICAgICAg
ICBuZWVkaW5nIHRvICNpbmNsdWRlIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGZyb20g
dGhpcyBmaWxlLiBEZWNsYXJlIG91dC1vZi1saW5lIGRlc3RydWN0b3IKKyAgICAgICAgZm9yIHRo
ZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVu
dEltcGxDb2NvYSk6IE1vdmVkIGZyb20gUGFnZUNsaWVudEltcGxDb2NvYS5oLgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogTW92ZWQg
ZnJvbSBQYWdlQ2xpZW50SW1wbE1hYy5tbS4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGxDb2NvYTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzaG93RGlj
dGF0aW9uQWx0ZXJuYXRpdmVVSSk6IEFkZGVkOyBzdHViIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCk6IERlbGV0ZWQ7IG5vdyB3ZSB3aWxsIHVz
ZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJ
bXBsKTogTW92ZWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVyZSB0
byBQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29hKCkuCisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKTogTW92ZWQgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVyZSB0byBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdl
Q2xvc2VkKCkKKyAgICAgICAgc28gaXQgY2FuIGJlIHNoYXJlZCBhbmQgbW9kaWZpZWQgdGhpcyBm
dW5jdGlvbiB0byBjYWxsIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKTogRGVsZXRlZDsgbW92ZWQg
dG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0ZWQ7IG1vdmVkIHRvIFBhZ2VDbGll
bnRJbXBsQ29jb2EubW0uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENv
Y29hLm1tLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKwogMjAy
MC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
LmgKaW5kZXggYTZmNzc2OTJjMDAuLmNiMGVjZDFkZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCkBAIC0yNiwyMCArMjYs
MjkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKK0BjbGFzcyBO
U1RleHRBbHRlcm5hdGl2ZXM7CiBAY2xhc3MgV0tXZWJWaWV3OwogCiBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIEF0dGFjaG1lbnQ7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFBhZ2VDbGllbnRJbXBsQ29jb2EgOiBwdWJsaWMgUGFnZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
UGFnZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKndlYlZpZXcpCi0gICAgICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpIHsgfQorICAgIFBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJWaWV3ICopOwor
ICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsQ29jb2EoKTsKKworICAgIHZvaWQgcGFnZUNsb3Nl
ZCgpIG92ZXJyaWRlOworCiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKSBmaW5h
bDsKICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CiAKQEAgLTUzLDgg
KzYyLDE3IEBAIHB1YmxpYzoKICAgICBOU1NldCAqc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFz
c2VzKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorICAgIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5Q
dHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOworICAgIFZlY3Rv
cjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KSBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3
PiBtX3dlYlZpZXc7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCmluZGV4IGU3ZDcz
ODJkYjViLi40MDk0OWMyZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBAIC0yOSw5ICsyOSwyNCBAQAogI2ltcG9y
dCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0lu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgorI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1w
b3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgorI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENv
Y29hKFdLV2ViVmlldyAqd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyB7IHdlYlZpZXcgfQorI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIgeyBtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSB9Cisj
ZW5kaWYKK3sKK30KKworUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VDbGllbnRJbXBsQ29jb2Eo
KSA9IGRlZmF1bHQ7CisKIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6aXNQbGF5aW5nQXVkaW9X
aWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpOU1N0
cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX2lzUGxheWluZ0F1ZGlvKSldOwpAQCAtODAsNSAr
OTUsMzIgQEAgTlNTZXQgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFw
cGVyQ2xhc3NlcygpIGNvbnN0CiB9CiAKICNlbmRpZgorCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29j
b2E6OnBhZ2VDbG9zZWQoKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5jbGVhcigpOworI2VuZGlmCit9CisKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKwordWludDY0X3QgUGFnZUNsaWVudEltcGxD
b2NvYTo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKK30KKwordm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+
cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCitWZWN0b3I8U3RyaW5n
PiBQYWdlQ2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKKyNlbmRp
ZgorCiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZTNmZjMw
Y2U4MmIuLmEzY2VkZjU5MGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0zNTMsNiArMzUzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMo
V2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pIHsgfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9j
dXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29s
IHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRJZGVudGlmaWVyLCBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpID0gMDsKQEAgLTM3
NiwxOCArMzgzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5TVmlldyAqaW5zcGVjdG9yQXR0
YWNobWVudFZpZXcoKSA9IDA7CiAgICAgdmlydHVhbCBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAq
cmVtb3RlT2JqZWN0UmVnaXN0cnkoKSA9IDA7CiAKLSNpZiBVU0UoQVBQS0lUKQogICAgIHZpcnR1
YWwgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSkgPSAwOwotI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQotICAgIHZpcnR1YWwgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7Ci0jZW5kaWYgLy8g
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKICNpZiBVU0UoSU5TRVJUSU9OX1VORE9fR1JP
VVBJTkcpCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nKCkg
PSAwOwotI2VuZGlmIC8vIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKLSNlbmRpZiAvLyBV
U0UoQVBQS0lUKQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGFibGVFbGVtZW50
SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNWEzYTdh
YmY1OTcuLjk3ZjNmNWViMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaApAQCAtMzQsNiArMzQsNyBAQAogCiBPQkpDX0NMQVNTIFdLQ29u
dGVudFZpZXc7CiBPQkpDX0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKK09CSkNfQ0xBU1MgTlNU
ZXh0QWx0ZXJuYXRpdmVzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIERPTVBh
c3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwpAQCAtNzcsNyArNzgsNiBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCkgb3Zl
cnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKICAgICB2b2lk
IHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29sVGlwQ2hhbmdl
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIGNv
bnN0IEZyYW1lSW5mb0RhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIG92ZXJyaWRlOwpAQCAt
MjYyLDYgKzI2MiwxMCBAQCBwcml2YXRlOgogICAgIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFj
dGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6
ZXIqKSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKKyNlbmRpZgorCiAg
ICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRhaW5Q
dHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDg5MjM5Zjc5NGYz
Li4yZmNlMGM1NTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQpAQCAtMjMzLDExICsyMzMsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpncHVQcm9jZXNzQ3Jhc2hlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
cGFnZUNsb3NlZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkBAIC05NjMsNiArOTU4LDE1IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmCiAgICAgW21fY29u
dGVudFZpZXcgX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dDpjb250ZXh0XTsKIH0KIAorI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1aW50NjRf
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCAwZGNhODcwNmQ0
Mi4uZjBjYzM4YTQ4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogQGNsYXNzIFdLRWRpdG9yVW5kb1Rhcmdl
dDsKIEBjbGFzcyBXS1ZpZXc7CkBAIC0xODAsMTEgKzE4MCw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBp
bnRyaW5zaWNDb250ZW50U2l6ZSkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKLSAgICB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsK
ICAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwogI2VuZGlmCisKICAgICB2b2lkIHNl
dEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSBvdmVycmlkZTsKIAogI2lmIFVTRShJTlNF
UlRJT05fVU5ET19HUk9VUElORykKQEAgLTI2Nyw5ICsyNjUsNiBAQCBwcml2YXRlOgogI2lmIFVT
RShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9u
UGFuZWw7CiAjZW5kaWYKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKLSNlbmRpZgogCiAgICAgYm9vbCBtX3Nob3VsZFN1cHBy
ZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggYWYzNzZhZTY1M2Eu
LjAzMTkyZDc2YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCkBAIC03OSwxMyArNzksMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmFs
aWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0jaW1wb3J0IDxB
cHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmg+CiAjZW5kaWYKQEAgLTEwMywyMCArMTAwLDE2IEBAIEBlbmQKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhZ2VDbGllbnRJ
bXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKK1Bh
Z2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcgKnZpZXcsIFdLV2ViVmlldyAqd2Vi
VmlldykKICAgICA6IFBhZ2VDbGllbnRJbXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2
aWV3KQotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+
KCkpCi0jZW5kaWYKIHsKIH0KIAotUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCi17
Ci19CitQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKCkgPSBkZWZhdWx0OwogCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRJbXBsKFdlYlZpZXdJbXBsJiBpbXBsKQogewpAQCAtMjY2LDkg
KzI1OSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRFeGl0KCkKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQogewogICAgIG1faW1wbC0+cGFnZUNsb3NlZCgpOwot
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLT5jbGVhcigpOwotI2VuZGlmCisgICAgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFn
ZUNsb3NlZCgpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3Mo
KQpAQCAtNjg0LDE1ICs2NzUsNiBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRD
b21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nKQogfQogCiAjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi11aW50NjRfdCBQYWdlQ2xpZW50SW1wbDo6YWRk
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+
JiBhbHRlcm5hdGl2ZXMpCi17Ci0gICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKLX0KLQotdm9pZCBQYWdlQ2xpZW50
SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpCi17Ci0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0
aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKLX0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0Rp
Y3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQogewpAQCAtNzAzLDEw
ICs2ODUsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
SShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaQogICAgIH0pOwogfQogCi1WZWN0b3I8
U3RyaW5nPiBQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpCi17Ci0gICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOwotfQogI2VuZGlm
CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29s
IGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKLS0gCjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>
<flag name="review"
          id="408270"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392873</attachid>
            <date>2020-03-07 11:17:01 -0800</date>
            <delta_ts>2020-03-07 11:37:41 -0800</delta_ts>
            <desc>Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</desc>
            <filename>Part2.patch</filename>
            <type>text/plain</type>
            <size>15681</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA1ZmEzOTM0NmJlYTgyODQ3Y2ViODM4MjgyZWVjNzk0ZWU4NjQyMWI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTE6MDU6MjcgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDIKCk1vdmUgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoKSBmcm9tIHRoZSBN
YWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gQ29jb2Etc3BlY2lmaWMKaW1wbGVt
ZW50YXRpb24gZmlsZXMgYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJ
IGRpZCB2ZXJ5IG1pbm9yIEMrKyBtb2Rlcm5pemF0aW9uOgpqdXN0IG1vcmUgdXNlcyBvZiBhdXRv
IGFuZCB1bmlmb3JtIGluaXRpYWxpemVyIHN5bnRheC4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5h
YmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUywgeWV0LiBTbywgdGhpcyBjb2Rl
IGlzbid0IGJlaW5nIGNvbXBpbGVkCmZvciBpT1MsIHlldC4gSSB3aWxsIGRvIHRoYXQgaW4gYSBz
dWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBk
byBzby4KCiogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKToKKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiogVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMpOiBEZWxldGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CihXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKToKKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktp
dDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgotLS0KIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysr
KysrKwogLi4uL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSAgICAgIHwgMzYg
KysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCAgICAgIHwgIDEgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
ICAgICAgIHwgIDYgKystLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbSAgIHwgMzEgLS0tLS0tLS0tLS0tLS0tLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0gIHwgMTggKysrKysrKysrKwogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgIHwgIDMgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICA0ICsrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSAgICAgIHwgMTkgLS0tLS0tLS0tLQogOSBmaWxlcyBjaGFuZ2VkLCA5
MyBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAxMWVjZmQ0YTJh
Li5mZmY1NDcwZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wMy0wNyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMgorCisgICAgICAgIE1vdmUgaW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoKSBmcm9tIHRoZSBNYWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24g
ZmlsZXMgdG8gQ29jb2Etc3BlY2lmaWMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZmlsZXMgYXMg
aXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJIGRpZCB2ZXJ5IG1pbm9yIEMr
KyBtb2Rlcm5pemF0aW9uOgorICAgICAgICBqdXN0IG1vcmUgdXNlcyBvZiBhdXRvIGFuZCB1bmlm
b3JtIGluaXRpYWxpemVyIHN5bnRheC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVu
YWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29k
ZSBpc24ndCBiZWluZyBjb21waWxlZAorICAgICAgICBmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0
aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4g
cGxhY2UgdG8gZG8gc28uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRE
aWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCisKIDIw
MjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4
IGEzNmVlZDIxY2I0Li5kZTZiOTkwNDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBv
cnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJE
YXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2lt
cG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQg
IlNhZmVCcm93c2luZ1NQSS5oIgpAQCAtNDQsNiArNDUsMTAgQEAKICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMTYxLDYgKzE2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWco
Y29uc3QgRHJhZ0l0ZW0mIGRyYWdJdGVtLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhCiAgICAg
cGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhkcmFnSXRlbSwgZHJhZ0ltYWdlSGFuZGxlKTsKIH0KIAor
Ly8gRklYTUU6IE1vdmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBhZ2VQcm94eUlPUy5tbS4KICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1
aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1
aW50NjRfdCkKQEAgLTIyNSw2ICsyMzEsMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICAKICAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRT
ZWxlY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAp
Cit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJu
YXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGFsdGVy
bmF0aXZlV2l0aFJhbmdlIDogZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlKSB7CisgICAg
ICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBwYWdlQ2xpZW50KCkuYWRkRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlcyk7CisgICAgICAg
IGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
LmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZSB7IGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdl
LmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNv
bnRleHQgfSk7CisgICAgfQorCisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAgICAgICAgb3B0aW9u
cy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOworCisgICAgICAgIGluc2Vy
dFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyB7IHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXAgfSwgbV93ZWJQYWdlSUQpOwor
I2Vsc2UKKyAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMucmVnaXN0
ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKKworICAgIGluc2VydFRleHRBc3luYyh0
ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyNlbmRpZgorfQogICAg
IAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGUyOGE1MDA0NWFhLi45NWY4NWY0NmZhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04NTM5LDYgKzg1MzksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSk7
CiB9CiAKKy8vIEZJWE1FOiBNb3ZlIHRoZXNlIGZ1bmN0aW9ucyB0byBXZWJQYWdlUHJveHlDb2Nv
YS5tbS4KICNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRB
c3luYyhjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGY4ODE5YTk1MTA4Li43MWUwZDBkNmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTg1Miw3ICs4NTIsMTAgQEAgcHVibGljOgogICAgIENBTGF5
ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJ
bnNlcnRUZXh0T3B0aW9ucyYmKTsKKworICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9w
dGlvbnMmJik7CisgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcm
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7
CisKICAgICB2b2lkIGhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRp
dGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rl
ZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKQEAgLTg3MCw3ICs4NzMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFu
Z2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0
ZXJVbmRvR3JvdXApOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBB
dHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9u
dEluZm8mLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggOGFkMmJh
MWU4OTYuLmI3MjA5MTQ2ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTE4NCwzNyArMTg0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Ny
b2xsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
ZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQot
ewotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0
aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7Ci0KLSAgICBmb3IgKGNvbnN0IFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgOiBkaWN0YXRpb25BbHRlcm5hdGl2
ZXNXaXRoUmFuZ2UpIHsKLSAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IHBhZ2VD
bGllbnQoKS5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0
ZXJuYXRpdmVzKTsKLSAgICAgICAgaWYgKGRpY3RhdGlvbkNvbnRleHQpCi0gICAgICAgICAgICBk
aWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0
aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5s
ZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBpZiAoZGljdGF0aW9uQWx0
ZXJuYXRpdmVzLmlzRW1wdHkoKSkgewotICAgICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25z
OwotICAgICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7
Ci0KLSAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1v
dmUob3B0aW9ucykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBt
X3dlYlBhZ2VJRCk7Ci0jZWxzZQotICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7Ci0gICAg
b3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwotCi0gICAgaW5z
ZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOwot
I2VuZGlmCi19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDljNGY2YzBjZjEyLi4xY2FmNmE4ZDVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTg5LDYgKzE4OSwyNCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZv
IFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdl
JiByYQogICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQogCit2b2lkIFdlYlBhZ2U6
Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGlu
Z1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRp
Y3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wg
cmVnaXN0ZXJVbmRvR3JvdXApCit7CisgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9y
IHsgZnJhbWUgfTsKKworICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAh
PSBub3RGb3VuZCkgeworICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5nUmFu
Z2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKKyAgICAgICAgaWYg
KHJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9B
RkZJTklUWSB9KTsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJVbmRvR3JvdXApCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBp
bmcgeyB9KTsKKworICAgIEFTU0VSVCghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSk7
CisgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFs
dGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyIC8qIHRyaWdnZXJpbmdFdmVudCAqLyk7Cit9CisK
IHZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRy
PE5TRGF0YT4gcmVtb3RlVG9rZW4pCiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFUb2tl
biA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
cmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcwN2ZjNmJkYTQyLi5hOTFlYmI4
MTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
ODQ0LDEwICs4NDQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdWxkRGVsYXlXaW5kb3dPcmRl
cmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVt
YmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rv
cihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CisKKyAgICB2b2lkIGlu
c2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1Jh
bmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVu
ZG9Hcm91cCA9IGZhbHNlKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQg
aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVy
VW5kb0dyb3VwID0gZmFsc2UpOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGI0YWVh
NzU1NTRkLi5hMDkwOTExNWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NTIsNyArNDUyLDEwIEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKIAogICAgIFNldFRleHRBc3luYyhTdHJpbmcgdGV4dCkKKwogICAgIEluc2VydFRleHRBc3lu
YyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFu
Z2UsIHN0cnVjdCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlvbnMpCisgICAgSW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5n
ZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+
IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKKwogICAgIEhh
c01hcmtlZFRleHQoKSAtPiAoYm9vbCBoYXNNYXJrZWRUZXh0KSBBc3luYwogICAgIEdldE1hcmtl
ZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U2VsZWN0
ZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNDYyLDcgKzQ2
NSw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29uZmlybUNvbXBvc2l0aW9uQXN5
bmMoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEluc2VydERpY3RhdGVkVGV4dEFz
eW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRS
YW5nZSwgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRl
cm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgQXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdl
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAgRm9udEF0U2VsZWN0aW9uKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDEyOWIwMWFiOTVh
Li4wYTZkMzhkYjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMyMCwyNSArMzIwLDYgQEAgdm9pZCBXZWJQYWdlOjpz
ZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJZGVudGkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5
bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRp
dGluZ1JhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKLXsK
LSAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwotCi0gICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoZnJhbWUpOwotCi0gICAgaWYg
KHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
IFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShm
cmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwotICAgICAgICBpZiAocmVwbGFjZW1lbnRS
YW5nZSkKLSAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwotICAg
IH0KLQotICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsKLSAgICAKLSAg
ICBBU1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwotICAgIGZyYW1lLmVk
aXRvcigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0
aW9ucywgbnVsbHB0cik7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotLSAKMi4yNC4xIChBcHBsZSBHaXQt
MTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392874</attachid>
            <date>2020-03-07 11:37:41 -0800</date>
            <delta_ts>2020-03-07 12:35:27 -0800</delta_ts>
            <desc>Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</desc>
            <filename>Part2.patch</filename>
            <type>text/plain</type>
            <size>19743</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBlNTBiOWVhYWJmMmY4NWE1OGYyMWVmOGQ2YTQyOGY4YTdjMGRlNTc0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTE6Mjg6MjYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpTb3VyY2UvV2ViQ29yZToKClBhcnQgMgoKSW5jbHVkZSBVSUtpdFNQSS5oIGluIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSB0byBnZXQgdGhlIGRlZmluaXRpb24gb2YgTlNUZXh0
QWx0ZXJuYXRpdmVzCndoZW4gYnVpbGRpbmcgZm9yIGlPUy4gQWxzbyB3aGlsZSBJIGFtIGhlcmUs
IGZpeCB1cCBzb21lIGNvZGUgc3R5bGUgaXNzdWVzIGFuZCB1c2UgdW5pZm9ybQppbml0aWFsaXpl
ciBzeW50YXguCgoqIFNvdXJjZXNDb2NvYS50eHQ6IE1hcmsgYXMgQG5vLXVuaWZ5IGFzIHRoaXMg
ZmlsZSAjaW5jbHVkZXMgTlNUZXh0QWx0ZXJuYXRpdmVzLmgsIHdoaWNoIGNhbgp1bHRpbWF0ZWx5
IHB1bGwgaW4gQXBwS2l0IGRlY2xhcmF0aW9ucyB0aGF0IGNvbmZsaWN0IHdpdGggdGhlIGVudW1l
cmF0b3JzIG9mIEVQb3NpdGlvblR5cGUuCiogZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tOgooV2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UpOgoKU291cmNlL1dlYktpdDoKCiogVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4
dEFzeW5jKToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CiogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CihXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgoqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CihXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dERpY3RhdGVkVGV4dEFzeW5jKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgoqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgoqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMpOiBEZWxldGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICB8IDE4ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
ICAgICAgICAgICAgICB8ICAyICstCiAuLi4vZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tICAgfCAxOSArKysrLS0tCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgfCA0OSArKysrKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAgICAgfCAzNiArKysrKysrKysrKysrKwogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgIHwgIDEgKwogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgIHwgIDYgKystCiAuLi4vV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tICAgfCAzMSAtLS0tLS0tLS0tLS0KIC4u
Li9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tICB8IDE4ICsrKysrKysK
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8ICAzICstCiAu
Li4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgNCArLQogLi4u
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAgICAgIHwgMTkgLS0tLS0tLQog
MTIgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBkN2NjZjk1M2ViNC4uNDk5NzA5Njg1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQg
MgorCisgICAgICAgIEluY2x1ZGUgVUlLaXRTUEkuaCBpbiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW0gdG8gZ2V0IHRoZSBkZWZpbml0aW9uIG9mIE5TVGV4dEFsdGVybmF0aXZlcworICAgICAg
ICB3aGVuIGJ1aWxkaW5nIGZvciBpT1MuIEFsc28gd2hpbGUgSSBhbSBoZXJlLCBmaXggdXAgc29t
ZSBjb2RlIHN0eWxlIGlzc3VlcyBhbmQgdXNlIHVuaWZvcm0KKyAgICAgICAgaW5pdGlhbGl6ZXIg
c3ludGF4LgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogTWFyayBhcyBAbm8tdW5pZnkg
YXMgdGhpcyBmaWxlICNpbmNsdWRlcyBOU1RleHRBbHRlcm5hdGl2ZXMuaCwgd2hpY2ggY2FuCisg
ICAgICAgIHVsdGltYXRlbHkgcHVsbCBpbiBBcHBLaXQgZGVjbGFyYXRpb25zIHRoYXQgY29uZmxp
Y3Qgd2l0aCB0aGUgZW51bWVyYXRvcnMgb2YgRVBvc2l0aW9uVHlwZS4KKyAgICAgICAgKiBlZGl0
aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSk6CisKIDIw
MjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBhN2UwZmQ3ODIyMC4uZjgzZWFjZDk0ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtOTksNyArOTksNyBAQCBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
IGVkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KIGVkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQogZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0KLWVkaXRpbmcvbWFjL1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQorZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tIEBuby11bmlmeQogZWRpdGluZy9tYWMvVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBN
YWMubW0KIAogZmlsZWFwaS9GaWxlQ29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQppbmRleCBhZWE1OGY4OTRm
OC4uMTQxZWI4OTI2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEzICsyNiwxOCBAQAogI2ltcG9ydCAi
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgiCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKworI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRp
dmVzLmg+CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8cGFsL3NwaS9pb3Mv
VUlLaXRTUEkuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZl
cyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdlKQotOiByYW5nZShhUmFuZ2UpCi0sIGFs
dGVybmF0aXZlcyhhbkFsdGVybmF0aXZlcykKK1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZlcyAqYW5BbHRlcm5hdGl2ZXMs
IE5TUmFuZ2UgYVJhbmdlKQorICAgIDogcmFuZ2UgeyBhUmFuZ2UgfQorICAgICwgYWx0ZXJuYXRp
dmVzIHsgYW5BbHRlcm5hdGl2ZXMgfQogewogfQogCkBAIC00OSw1ICs1NCw3IEBAIHZvaWQgY29s
bGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcs
IFZlY3RvcjxUZXh0QWx0CiAgICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uID0gTlNNYXhS
YW5nZShlZmZlY3RpdmVSYW5nZSk7CiAgICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFuZ2UubG9jYXRp
b24gPCBsZW5ndGgpOwogfQotfQotI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMTFlY2Zk
NGEyYS4uODZhODgzM2ZmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDMtMDcg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxl
bWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0
YXRlZFRleHRBc3luYyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omlu
c2VydERpY3RhdGVkVGV4dEFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpp
bnNlcnREaWN0YXRlZFRleHRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKTogRGVsZXRlZC4K
KworMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMgorCisg
ICAgICAgIE1vdmUgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoKSBmcm9tIHRoZSBNYWMtc3BlY2lm
aWMgaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gQ29jb2Etc3BlY2lmaWMKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gZmlsZXMgYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJ
IGRpZCB2ZXJ5IG1pbm9yIEMrKyBtb2Rlcm5pemF0aW9uOgorICAgICAgICBqdXN0IG1vcmUgdXNl
cyBvZiBhdXRvIGFuZCB1bmlmb3JtIGluaXRpYWxpemVyIHN5bnRheC4KKworICAgICAgICBOb3Rl
IHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1Ms
IHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZyBjb21waWxlZAorICAgICAgICBmb3IgaU9T
LCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBh
bGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8gc28uCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3lu
Yyk6IERlbGV0ZWQuCisKIDIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0
ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCmluZGV4IGEzNmVlZDIxY2I0Li5mOGRmYmQzNDBhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI5
LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xp
ZW50LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisjaW1wb3J0ICJJbnNlcnRU
ZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VD
bGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgpAQCAtNDQsNiArNDUsMTAgQEAK
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+
CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTYxLDYgKzE2Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzdGFydERyYWcoY29uc3QgRHJhZ0l0ZW0mIGRyYWdJdGVtLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhCiAgICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhkcmFnSXRlbSwgZHJhZ0lt
YWdlSGFuZGxlKTsKIH0KIAorLy8gRklYTUU6IE1vdmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBh
Z2VQcm94eUlPUy5tbS4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCkKQEAgLTIyNSw2ICsyMzEsMzYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAg
ICAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25h
cnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV93ZWJQYWdlSUQpOwogfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UsIGJvb2wg
cmVnaXN0ZXJVbmRvR3JvdXApCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGFsdGVybmF0aXZlV2l0aFJhbmdlIDogZGljdGF0aW9uQWx0ZXJuYXRpdmVz
V2l0aFJhbmdlKSB7CisgICAgICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBwYWdlQ2xp
ZW50KCkuYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVy
bmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2
ZVdpdGhSYW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVu
Z3RoLCBkaWN0YXRpb25Db250ZXh0KSk7CisgICAgfQorCisgICAgaWYgKGRpY3RhdGlvbkFsdGVy
bmF0aXZlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsK
KyAgICAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwor
CisgICAgICAgIGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3Zl
KG9wdGlvbnMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyB7IHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXAgfSwg
bV93ZWJQYWdlSUQpOworI2Vsc2UKKyAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAg
IG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKKworICAgIGlu
c2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKTsK
KyNlbmRpZgorfQogICAgIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyOGE1MDA0NWFhLi45NWY4NWY0NmZhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04NTM5LDYgKzg1
MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdl
cyYmIGNoYW5nZXMpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZN
b3ZlKGNoYW5nZXMpKSk7CiB9CiAKKy8vIEZJWE1FOiBNb3ZlIHRoZXNlIGZ1bmN0aW9ucyB0byBX
ZWJQYWdlUHJveHlDb2NvYS5tbS4KICNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY4ODE5YTk1MTA4Li43MWUwZDBkNmY5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg1Miw3ICs4NTIsMTAgQEAgcHVi
bGljOgogICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgaW5z
ZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBs
YWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKKworICAgIHZvaWQgaW5zZXJ0VGV4
dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5n
ZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CisgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3lu
Yyhjb25zdCBTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiwgYm9vbCByZWdp
c3RlclVuZG9Hcm91cCk7CisKICAgICB2b2lkIGhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVu
Y3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKQEAgLTg3MCw3ICs4NzMsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2
ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKEZ1bmN0aW9u
PHZvaWQoY29uc3QgRm9udEluZm8mLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggOGFkMmJhMWU4OTYuLmI3MjA5MTQ2ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE4NCwzNyArMTg0LDYgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJs
ZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNT
Y3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lz
dGVyVW5kb0dyb3VwKQotewotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPERp
Y3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7Ci0KLSAgICBmb3IgKGNv
bnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgOiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpIHsKLSAgICAgICAgdWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCA9IHBhZ2VDbGllbnQoKS5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKLSAgICAgICAgaWYgKGRpY3RhdGlvbkNvbnRleHQp
Ci0gICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVy
bmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdp
dGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBp
ZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgewotICAgICAgICBJbnNlcnRUZXh0
T3B0aW9ucyBvcHRpb25zOwotICAgICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVn
aXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2Vt
ZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFz
eW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0
ZXJVbmRvR3JvdXApLCBtX3dlYlBhZ2VJRCk7Ci0jZWxzZQotICAgIEluc2VydFRleHRPcHRpb25z
IG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dy
b3VwOwotCi0gICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1v
dmUob3B0aW9ucykpOwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVk
U3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdl
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDljNGY2YzBj
ZjEyLi4xY2FmNmE4ZDVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTg5LDYgKzE4OSwyNCBAQCBEaWN0
aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFt
ZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQog
Cit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVM
b2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCit7CisgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFJlZjxG
cmFtZT4gcHJvdGVjdG9yIHsgZnJhbWUgfTsKKworICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdS
YW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgeworICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFu
Z2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
KTsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdl
LCBTRUxfREVGQVVMVF9BRkZJTklUWSB9KTsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJVbmRv
R3JvdXApCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNl
cnRpb25VbmRvR3JvdXBpbmcgeyB9KTsKKworICAgIEFTU0VSVCghZnJhbWUuZWRpdG9yKCkuaGFz
Q29tcG9zaXRpb24oKSk7CisgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRl
eHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyIC8qIHRyaWdnZXJpbmdF
dmVudCAqLyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3Rl
VG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCiB7CiAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcwN2Zj
NmJkYTQyLi5hOTFlYmI4MTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtODQ0LDEwICs4NDQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdWxk
RGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91
c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVo
YXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7
CisKKyAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywg
Ym9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25z
LCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOwogICAgIHZvaWQgYXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IGI0YWVhNzU1NTRkLi5hMDkwOTExNWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NTIsNyAr
NDUyLDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdl
YktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQWNjZXB0c0ZpcnN0TW91c2Uo
aW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJl
c3VsdCkgU3luY2hyb25vdXMKIAogICAgIFNldFRleHRBc3luYyhTdHJpbmcgdGV4dCkKKwogICAg
IEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jhbmdl
IHJlcGxhY2VtZW50UmFuZ2UsIHN0cnVjdCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlv
bnMpCisgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJL
aXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9H
cm91cCkKKwogICAgIEhhc01hcmtlZFRleHQoKSAtPiAoYm9vbCBoYXNNYXJrZWRUZXh0KSBBc3lu
YwogICAgIEdldE1hcmtlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQpAQCAtNDYyLDcgKzQ2NSw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29uZmly
bUNvbXBvc2l0aW9uQXN5bmMoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEluc2Vy
dERpY3RhdGVkVGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2UgcmVwbGFjZW1lbnRSYW5nZSwgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgQXR0
cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRp
dGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAgRm9u
dEF0U2VsZWN0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDEyOWIwMWFiOTVhLi4wYTZkMzhkYjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMyMCwyNSArMzIwLDYgQEAg
dm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRJZGVudGkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3Rl
clVuZG9Hcm91cCkKLXsKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoZnJh
bWUpOwotCi0gICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZv
dW5kKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdS
YW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwotICAgICAgICBp
ZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9B
RkZJTklUWSkpOwotICAgIH0KLQotICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGlu
ZygpKTsKLSAgICAKLSAgICBBU1NFUlQoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkp
OwotICAgIGZyYW1lLmVkaXRvcigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25B
bHRlcm5hdGl2ZUxvY2F0aW9ucywgbnVsbHB0cik7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6YXR0cmli
dXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBl
ZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotLSAKMi4y
NC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392876</attachid>
            <date>2020-03-07 12:35:27 -0800</date>
            <delta_ts>2020-03-07 16:18:27 -0800</delta_ts>
            <desc>Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files</desc>
            <filename>Part2.patch</filename>
            <type>text/plain</type>
            <size>19542</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAwMDk1YjUwNjIwNzQ1ZDUzNjI4NWI4NWM4ZGJhZTRiNjhhM2U3YTI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTI6MzQ6NDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDIKClNvdXJjZS9XZWJDb3JlOgoKSW5jbHVkZSBVSUtpdFNQSS5oIGluIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSB0byBnZXQgdGhlIGRlZmluaXRpb24gb2YgTlNUZXh0
QWx0ZXJuYXRpdmVzCndoZW4gYnVpbGRpbmcgZm9yIGlPUy4gQWxzbyB3aGlsZSBJIGFtIGhlcmUs
IGZpeCB1cCBzb21lIGNvZGUgc3R5bGUgaXNzdWVzIGFuZCB1c2UgdW5pZm9ybQppbml0aWFsaXpl
ciBzeW50YXguCgoqIGVkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbToKKFdl
YkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
KToKClNvdXJjZS9XZWJLaXQ6CgpNb3ZlIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKCkgZnJvbSB0
aGUgTWFjLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGZpbGVzIHRvIENvY29hLXNwZWNpZmljCmlt
cGxlbWVudGF0aW9uIGZpbGVzIGFzIGl0IGNhbiBiZSBzaGFyZWQgYnkgYm90aCBNYWMgYW5kIGlP
Uy4gSSBkaWQgdmVyeSBtaW5vciBDKysgbW9kZXJuaXphdGlvbjoKanVzdCBtb3JlIHVzZXMgb2Yg
YXV0byBhbmQgdW5pZm9ybSBpbml0aWFsaXplciBzeW50YXguCgpOb3RlIHRoYXQgSSBoYXZlbid0
IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMg
Y29kZSBpc24ndCBiZWluZyBjb21waWxlZApmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGlu
IGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2Ug
dG8gZG8gc28uCgoqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKFdlYktp
dDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6CiogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFVJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERpY3Rh
dGVkVGV4dEFzeW5jKTogRGVsZXRlZC4KKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tOgooV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6Ciog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CihX
ZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKTogRGVsZXRlZC4KLS0tCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysr
KysKIC4uLi9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCB8ICAyICsr
CiAuLi4vZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICAgfCAyMCArKysr
KysrLS0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwg
MjkgKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tICAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwICAgICAgfCAgMSArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCAgICAgICAgfCAgNiArKy0tCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tICAgfCAzMSAtLS0tLS0tLS0tLS0tLS0tCiAuLi4vV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSAgfCAxOCArKysrKysrKysrCiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMyArLQogLi4uL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgIDQgKystCiAuLi4vV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tICAgICAgfCAxOSAtLS0tLS0tLS0tCiAxMiBm
aWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQ3Y2NmOTUzZWI0Li5lMjM4OGI3MTBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAyCisK
KyAgICAgICAgSW5jbHVkZSBVSUtpdFNQSS5oIGluIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5t
bSB0byBnZXQgdGhlIGRlZmluaXRpb24gb2YgTlNUZXh0QWx0ZXJuYXRpdmVzCisgICAgICAgIHdo
ZW4gYnVpbGRpbmcgZm9yIGlPUy4gQWxzbyB3aGlsZSBJIGFtIGhlcmUsIGZpeCB1cCBzb21lIGNv
ZGUgc3R5bGUgaXNzdWVzIGFuZCB1c2UgdW5pZm9ybQorICAgICAgICBpbml0aWFsaXplciBzeW50
YXguCisKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZSk6CisKIDIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24g
YWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCmluZGV4IDBmZjMzNDUxNWUxLi4zMTIyMzI1NTA5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1
dGVkU3RyaW5nU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNB
dHRyaWJ1dGVkU3RyaW5nU1BJLmgKQEAgLTk1LDYgKzk1LDggQEAgU09GVF9MSU5LX0NPTlNUQU5U
KFVJRm91bmRhdGlvbiwgTlNCYWNrZ3JvdW5kQ29sb3JEb2N1bWVudEF0dHJpYnV0ZSwgTlNTdHJp
bmcgKikKICNkZWZpbmUgTlNCYWNrZ3JvdW5kQ29sb3JEb2N1bWVudEF0dHJpYnV0ZSBnZXROU0Jh
Y2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlKCkKIFNPRlRfTElOS19DT05TVEFOVChVSUZv
dW5kYXRpb24sIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsIE5TU3RyaW5nICop
CiAjZGVmaW5lIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUgZ2V0TlNNYXJrZWRD
bGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSgpCitTT0ZUX0xJTktfQ09OU1RBTlQoVUlGb3VuZGF0
aW9uLCBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLCBOU1N0cmluZyAqKQorI2RlZmlu
ZSBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lIGdldE5TVGV4dEFsdGVybmF0aXZlc0F0
dHJpYnV0ZU5hbWUoKQogCiAvLyBXZSBkb24ndCBzb2Z0bGluayBOU1N1cGVyc2NyaXB0QXR0cmli
dXRlTmFtZSBiZWNhdXNlIFVJRm91bmRhdGlvbiBzdG9wcGVkIGV4cG9ydGluZyBpdC4KIC8vIFRo
aXMgYXR0cmlidXRlIGlzIGJlaW5nIGRlcHJlY2F0ZWQgYXQgdGhlIEFQSSBsZXZlbCwgYnV0IGlu
dGVybmFsbHkgVUlGb3VuZGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KaW5kZXggYWVhNThmODk0ZjguLjY1MDlk
ZjQ0M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTkgQEAKICNpbXBvcnQgIlRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oIgogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisK
KyNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgor
I2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRy
aWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZl
cywgTlNSYW5nZSBhUmFuZ2UpCi06IHJhbmdlKGFSYW5nZSkKLSwgYWx0ZXJuYXRpdmVzKGFuQWx0
ZXJuYXRpdmVzKQorVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzICphbkFsdGVybmF0aXZlcywgTlNSYW5nZSBhUmFuZ2Up
CisgICAgOiByYW5nZSB7IGFSYW5nZSB9CisgICAgLCBhbHRlcm5hdGl2ZXMgeyBhbkFsdGVybmF0
aXZlcyB9CiB7CiB9CiAKQEAgLTQ5LDUgKzU1LDcgQEAgdm9pZCBjb2xsZWN0RGljdGF0aW9uVGV4
dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPFRleHRBbHQK
ICAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01heFJhbmdlKGVmZmVjdGl2ZVJh
bmdlKTsKICAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiA8IGxlbmd0aCk7CiB9
Ci19Ci0jZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAxMWVjZmQ0YTJhLi5mZmY1NDcwZGY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9y
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBhcnQgMgorCisgICAgICAgIE1vdmUgaW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMoKSBmcm9tIHRoZSBNYWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gQ29j
b2Etc3BlY2lmaWMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZmlsZXMgYXMgaXQgY2FuIGJlIHNo
YXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJIGRpZCB2ZXJ5IG1pbm9yIEMrKyBtb2Rlcm5pemF0
aW9uOgorICAgICAgICBqdXN0IG1vcmUgdXNlcyBvZiBhdXRvIGFuZCB1bmlmb3JtIGluaXRpYWxp
emVyIHN5bnRheC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElD
VEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWlu
ZyBjb21waWxlZAorICAgICAgICBmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vi
c2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8g
c28uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRB
c3luYyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCisKIDIwMjAtMDMtMDcgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEltcGxlbWVu
dCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGEzNmVlZDIxY2I0
Li5mOGRmYmQzNDBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFQSUF0dGFj
aG1lbnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9u
UmVzdWx0LmgiCisjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9hZFBh
cmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2lu
Z1NQSS5oIgpAQCAtNDQsNiArNDUsMTAgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTYxLDYgKzE2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoY29uc3QgRHJhZ0l0
ZW0mIGRyYWdJdGVtLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhCiAgICAgcGFnZUNsaWVudCgp
LnN0YXJ0RHJhZyhkcmFnSXRlbSwgZHJhZ0ltYWdlSGFuZGxlKTsKIH0KIAorLy8gRklYTUU6IE1v
dmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBhZ2VQcm94eUlPUy5tbS4KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCkKQEAg
LTIyNSw2ICsyMzEsMzYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwg
bV93ZWJQYWdlSUQpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50
UmFuZ2UsIGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXNXaXRoUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCit7CisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGFsdGVybmF0aXZlV2l0aFJh
bmdlIDogZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlKSB7CisgICAgICAgIHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQgPSBwYWdlQ2xpZW50KCkuYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRp
b25Db250ZXh0KQorICAgICAgICAgICAgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0
YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0
ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVuZ3RoLCBkaWN0YXRpb25Db250ZXh0KSk7CisgICAg
fQorCisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKKyAgICAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9H
cm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOworCisgICAgICAgIGluc2VydFRleHRBc3luYyh0ZXh0
LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0
YXRlZFRleHRBc3luYyB7IHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0
aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXAgfSwgbV93ZWJQYWdlSUQpOworI2Vsc2UKKyAgICBJbnNl
cnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXAgPSBy
ZWdpc3RlclVuZG9Hcm91cDsKKworICAgIGluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVu
dFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyNlbmRpZgorfQogICAgIAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGUyOGE1MDA0NWFhLi45NWY4NWY0NmZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC04NTM5LDYgKzg1MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hh
bmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSk7CiB9CiAKKy8vIEZJWE1F
OiBNb3ZlIHRoZXNlIGZ1bmN0aW9ucyB0byBXZWJQYWdlUHJveHlDb2NvYS5tbS4KICNpZiBQTEFU
Rk9STShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY4ODE5
YTk1MTA4Li43MWUwZDBkNmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTg1Miw3ICs4NTIsMTAgQEAgcHVibGljOgogICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dEFzeW5jKGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9u
cyYmKTsKKworICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CisgICAg
dm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2U+JiwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CisKICAgICB2b2lkIGhh
c01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBn
ZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RG
OjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
QEAgLTg3MCw3ICs4NzMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6
OkZvbnRDaGFuZ2VzJiYpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgaW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJl
cGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApOwog
ICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3Qg
RWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBBdHRyaWJ1dGVkU3RyaW5n
JiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgZm9udEF0U2VsZWN0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9udEluZm8mLCBkb3VibGUs
IGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggOGFkMmJhMWU4OTYuLmI3MjA5MTQ2
ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KQEAgLTE4NCwzNyArMTg0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlz
U2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdl
LCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQotewotI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXM7Ci0KLSAgICBmb3IgKGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYg
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UgOiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpIHsK
LSAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IHBhZ2VDbGllbnQoKS5hZGREaWN0
YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKLSAg
ICAgICAgaWYgKGRpY3RhdGlvbkNvbnRleHQpCi0gICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJh
bmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlv
bkNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1w
dHkoKSkgewotICAgICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwotICAgICAgICBvcHRp
b25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICAgICAgaW5z
ZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3dlYlBhZ2VJRCk7Ci0j
ZWxzZQotICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5yZWdpc3Rl
clVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwotCi0gICAgaW5zZXJ0VGV4dEFzeW5jKHRl
eHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOwotI2VuZGlmCi19Ci0KIHZv
aWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3lu
Yyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0
dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCmluZGV4IDljNGY2YzBjZjEyLi4xY2FmNmE4ZDVkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQpAQCAtMTg5LDYgKzE4OSwyNCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rp
b25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIHJldHVy
biBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNl
bWVudEVkaXRpbmdSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0
aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3Jv
dXApCit7CisgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yIHsgZnJhbWUgfTsKKwor
ICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgewor
ICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJh
bWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFu
Z2UpCisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSB9KTsKKyAg
ICB9CisKKyAgICBpZiAocmVnaXN0ZXJVbmRvR3JvdXApCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcgeyB9KTsKKworICAg
IEFTU0VSVCghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSk7CisgICAgZnJhbWUuZWRp
dG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRp
b25zLCBudWxscHRyIC8qIHRyaWdnZXJpbmdFdmVudCAqLyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3Rl
VG9rZW4pCiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFUb2tlbiA9IElQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0
ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcwN2ZjNmJkYTQyLi5hOTFlYmI4MTNhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODQ0LDEwICs4NDQsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0
IFdlYktpdDo6V2ViTW91c2VFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJL
aXQ6OldlYk1vdXNlRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CisKKyAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4
dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVu
dFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2Vt
ZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRp
Y3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFs
c2UpOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMo
Y29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rp
b24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGI0YWVhNzU1NTRkLi5hMDkwOTEx
NWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC00NTIsNyArNDUyLDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1v
dXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKIAogICAgIFNldFRl
eHRBc3luYyhTdHJpbmcgdGV4dCkKKwogICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwg
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIHN0cnVjdCBXZWJL
aXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlvbnMpCisgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5
bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJh
bmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVy
bmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKKwogICAgIEhhc01hcmtlZFRleHQoKSAt
PiAoYm9vbCBoYXNNYXJrZWRUZXh0KSBBc3luYwogICAgIEdldE1hcmtlZFJhbmdlQXN5bmMoV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNDYyLDcgKzQ2NSw2IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAgICAgQ29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIEluc2VydERpY3RhdGVkVGV4dEFzeW5jKFN0cmluZyB0ZXh0
LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgVmVjdG9yPFdl
YkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wg
cmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgQXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCk7CiAgICAgRm9udEF0U2VsZWN0aW9uKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDEyOWIwMWFiOTVhLi4wYTZkMzhkYjE2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTMyMCwyNSArMzIwLDYgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxleFRleHRJ
bnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGkKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKLXsKLSAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0g
ICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoZnJhbWUpOwotCi0gICAgaWYgKHJlcGxhY2VtZW50RWRp
dGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4g
cmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFjZW1l
bnRFZGl0aW5nUmFuZ2UpOwotICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAgICAgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXBs
YWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwotICAgIH0KLQotICAgIGlmIChy
ZWdpc3RlclVuZG9Hcm91cCkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsKLSAgICAKLSAgICBBU1NFUlQoIWZyYW1l
LmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwotICAgIGZyYW1lLmVkaXRvcigpLmluc2VydERp
Y3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbnVsbHB0cik7
Ci19Ci0KIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>
<flag name="review"
          id="408273"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392878</attachid>
            <date>2020-03-07 12:47:45 -0800</date>
            <delta_ts>2020-03-07 12:52:39 -0800</delta_ts>
            <desc>Part 3: Share more AlternativeTextController code and WebPageProxy code</desc>
            <filename>Part3.patch</filename>
            <type>text/plain</type>
            <size>22990</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBjOWMwYzgzNGM4YWQwYmQxZjJjNmEzMWI4MTZlYjA2NGUxZjc0ZDFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTI6NDY6MzggLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDMKClNvdXJjZS9XZWJDb3JlOgoKU2VwYXJhdGUgY29kZSB0aGF0IGlzIGFj
dHVhbGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRoYXQg
Y2FuIGFsc28KYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpIGVuYWJsZWQuCgpOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9O
X0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZyBjb21w
aWxlZApmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ug
b25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8gc28uCgoqIGVkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CihXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KToK
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0
VG9SYW5nZSk6CiogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg6CgpTb3VyY2Uv
V2ViS2l0OgoKTW92ZSBjb2RlIHRoYXQgd2FzIGd1YXJkZWQgdW5kZXIgUExBVEZPUk0oTUFDKSBv
dXRzaWRlIG9mIHRoYXQgZ3VhcmQgc28gdGhhdCB3ZSBjb21waWxlIGl0CnNvIGxvbmcgYXMgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIGlzIGVuYWJsZWQuCgpOb3RlIHRoYXQgSSBoYXZlbid0
IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMg
Y29kZSBpc24ndCBiZWluZyBjb21waWxlZApmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGlu
IGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2Ug
dG8gZG8gc28uCgoqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoKU291cmNlL1dlYktpdExlZ2Fj
eS9tYWM6CgpHdWFyZCBjb2RlIHRoYXQgcmVxdWlyZXMgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KSB0byBiZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIC1fc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZl
VUkKY2FsbHMgLWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0LCBidXQgdGhlIGxhdHRlciBp
cyBvbmx5IGNvbXBpbGVkIGluIHdoZW4gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQppcyBlbmFi
bGVkLgoKTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElW
RVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGlsZWQKZm9yIGlP
UywgeWV0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIg
YWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgoKKiBXZWJWaWV3L1dlYlZpZXcubW06
Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgIHwgIDIy
ICsrKwogLi4uL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgICAgIHwgMTM1
ICsrKysrKysrKystLS0tLS0tLQogLi4uL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5oICAgICAgIHwgICA3ICstCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMTkgKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
ICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgICAgICB8ICAzNiArKy0tLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggICAgICAgIHwgIDEyICstCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgICAg
ICAgICAgICAgfCAgMTggKysrCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gICAgfCAgIDIgKwogOSBmaWxlcyBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKSwgODcg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyMzg4YjcxMGM3Li41N2ZlZWE0ZTVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGlj
dGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFydCAzCisKKyAgICAgICAgU2VwYXJhdGUgY29kZSB0aGF0IGlzIGFjdHVh
bGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRoYXQgY2Fu
IGFsc28KKyAgICAgICAgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpIGVuYWJsZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFi
bGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUg
aXNuJ3QgYmVpbmcgY29tcGlsZWQKKyAgICAgICAgZm9yIGlPUywgeWV0LiBJIHdpbGwgZG8gdGhh
dCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBs
YWNlIHRvIGRvIHNvLgorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlv
bkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlB
bHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaDoKKwogMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MjZlZTU3NDRhLi5lYzIyMTZkN2FkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCkBAIC00Nyw2ICs0NywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisK
K2NvbnN0ZXhwciBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5
cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKK3sKKyAgICByZXR1cm4gRG9jdW1l
bnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb247Cit9CisKKyNlbmRpZgorCiAjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogCiBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBdXRvY29ycmVjdGlvbigpCkBAIC01
OSwxMSArNjksNiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIHsgRG9jdW1l
bnRNYXJrZXI6OlJlcGxhY2VtZW50LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1w
dGlvbiB9OwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUoKQotewot
ICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbjsKLX0KLQog
c3RhdGljIGJvb2wgbWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb25zdCBWZWN0b3I8
UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAgIGlmIChtYXJrZXJzLmlz
RW1wdHkoKSkKQEAgLTE4Nyw1NiArMTkyLDYgQEAgU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5cGUsIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNUb0FkZCkKLXsK
LSAgICBhdXRvIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS5jbG9u
ZVJhbmdlKCk7Ci0KLSAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLnB0cigpLCBzdGFydE9mUGFyYWdyYXBoKHJhbmdlLnN0YXJ0UG9zaXRpb24oKSkpOwotICAg
IHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigpLCBlbmRPZlBh
cmFncmFwaChyYW5nZS5lbmRQb3NpdGlvbigpKSk7Ci0KLSAgICAvLyBBZnRlciB3ZSByZXBsYWNl
IHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlLCB3ZSBuZWVkIHRvIGFkZCBt
YXJrZXJzIHRvIHRoYXQgcmFuZ2UuCi0gICAgLy8gSG93ZXZlciwgb25jZSB0aGUgcmVwbGFjZW1l
bnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlIGlzIG5vdCB2
YWxpZCBhbnltb3JlLgotICAgIC8vIFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQgdGhlIHJlcGxhY2Vt
ZW50LCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRl
cm5hdGl2ZQotICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29u
dGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFw
aAotICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9m
ZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQotICAgIC8vIHdoaWNoIHNwYW5z
IGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFn
cmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOwotCi0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlv
bk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7Ci0gICAgaWYg
KCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNldEVuZFJlc3VsdCA9IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS0+c2V0RW5kKCpzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhB
bHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCksIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7Ci0gICAgaWYgKHNldEVuZFJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGFrZSBub3Rl
IG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNhbiBhZGQgbWFy
a2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBjb3JyZWN0aW9u
U3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29ycmVj
dGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0cigpKTsKLQotICAgIC8vIENsb25l
IHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgd2FudCB0byBr
ZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCi0gICAgYXV0byByYW5nZVdpdGhBbHRlcm5h
dGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKLQotICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
ID0gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS50
cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCks
ICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0
Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0T2Zm
c2V0KCkpLnB0cigpKTsKLSAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFu
Z2VXaXRoQWx0ZXJuYXRpdmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKLSAgICAvLyBSZWNhbGN1
bGF0ZSBwcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBw
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFk
YXI6IDEwMzA1MzE1IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRh
dGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
bi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCp1
cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBTdHJpbmcgbmV3
VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKLQotICAgIC8vIENoZWNr
IHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKG5ld1RleHQgIT0gYWx0
ZXJuYXRpdmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxl
ciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KS5tYXJrZXJzKCk7Ci0KLSAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9B
ZGQpCi0gICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJhbmdlLCBtYXJrZXJU
eXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRp
dmVUeXBlLCBtYXJrZXJUeXBlKSk7Ci19Ci0KIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKQogewogICAg
IGlmICghbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSB8fCAhbV9pc0FjdGl2ZSkKQEAgLTQ0OSwxMSAr
NDA0LDYgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24KICAgICBtYXJrZXJzLmFkZE1hcmtlcihy
YW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCi1BbHRl
cm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZl
VGV4dENsaWVudCgpCi17Ci0gICAgcmV0dXJuIG1fZnJhbWUucGFnZSgpID8gbV9mcmFtZS5wYWdl
KCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpIDogbnVsbHB0cjsKLX0KLQogRWRpdG9yQ2xpZW50
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAgIHJldHVy
biBtX2ZyYW1lLnBhZ2UoKSA/ICZtX2ZyYW1lLnBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCkgOiBudWxs
cHRyOwpAQCAtNjA3LDE0ICs1NTcsNzcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtl
ckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBl
IGFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUpCisjZW5kaWYgLy8gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpIHx8IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKworQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKQogeworICAgIHJldHVybiBtX2ZyYW1lLnBhZ2UoKSA/IG1fZnJhbWUucGFnZSgp
LT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKSA6IG51bGxwdHI7Cit9CiAKK1N0cmluZyBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2
ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9Q
QU5FTCkKICAgICBpZiAoYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRUeXBl
UmV2ZXJzaW9uICYmIGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyAmJiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVw
bGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkp
CiAgICAgICAgIHJldHVybiBtX29yaWdpbmFsVGV4dDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGFsdGVybmF0aXZlVGV4dFR5cGUpOworICAgIFVOVVNFRF9QQVJBTShtYXJrZXJUeXBlKTsKKyNl
bmRpZgogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFu
Z2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJu
YXRpdmVUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5
cGVzVG9BZGQpCit7CisgICAgYXV0byBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
ID0gcmFuZ2UuY2xvbmVSYW5nZSgpOworCisgICAgc2V0U3RhcnQocGFyYWdyYXBoUmFuZ2VDb250
YWluaW5nQ29ycmVjdGlvbi5wdHIoKSwgc3RhcnRPZlBhcmFncmFwaChyYW5nZS5zdGFydFBvc2l0
aW9uKCkpKTsKKyAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5w
dHIoKSwgZW5kT2ZQYXJhZ3JhcGgocmFuZ2UuZW5kUG9zaXRpb24oKSkpOworCisgICAgLy8gQWZ0
ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSwgd2Ug
bmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgorICAgIC8vIEhvd2V2ZXIsIG9uY2Ug
dGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdpdGhBbHRlcm5h
dGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KKyAgICAvLyBTbyBiZWZvcmUgd2UgY2Fycnkgb3V0
IHRoZSByZXBsYWNlbWVudCwgd2UgbmVlZCB0byBzdG9yZSB0aGUgc3RhcnQgcG9zaXRpb24gb2Yg
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUKKyAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRp
b24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGgKKyAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBv
YnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKKyAgICAv
LyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBv
c2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgorICAgIGF1dG8gY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKworICAgIFBvc2l0aW9u
IHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlv
bigpOworICAgIGlmICghc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFp
bmVyTm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBzZXRFbmRSZXN1bHQgPSBjb3Jy
ZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNldEVuZCgqc3RhcnRQb3NpdGlv
bk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpLCBzdGFydFBvc2l0aW9uT2ZS
YW5nZVdpdGhBbHRlcm5hdGl2ZS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAg
IGlmIChzZXRFbmRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3
ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KKyAgICBp
bnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5wdHIoKSk7CisK
KyAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2Qg
bWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgorICAgIGF1dG8gcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CisKKyAgICBDb250YWluZXJO
b2RlJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0
Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBpbnQgcGFyYWdyYXBoU3Rh
cnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFuZ2U6OmNyZWF0ZShyb290Tm9k
ZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CisgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRlcm5hdGl2ZSktPmFwcGx5KCk7Cisg
ICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBzaW5j
ZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhhdCB0
aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBsb25n
ZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTogODk1MjYKKyAgICBhdXRvIHVwZGF0
ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXgsIGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwor
ICAgIGlmICghdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVj
dGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAgICBT
dHJpbmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKKworICAg
IC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCisgICAgaWYgKG5ld1Rl
eHQgIT0gYWx0ZXJuYXRpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKS5tYXJrZXJzKCk7CisKKyAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtl
clR5cGVzVG9BZGQpCisgICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJhbmdl
LCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQo
YWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7Cit9CisKICNlbmRpZgogCiBib29sIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMTczYzkwOWYwYzMuLmYwY2Rm
N2Y3NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaApAQCAtMTE1LDEwICsxMTUsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAg
ICBTdHJpbmcgZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7
Ci0gICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmLCBjb25z
dCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5hdGl2ZVRleHRUeXBlLCBPcHRpb25TZXQ8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KTsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKICAgICB2
b2lkIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdl
JiByYW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmlu
ZyYgY29ycmVjdGlvbik7Ci0gICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFs
dGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZSk7CiAKICAgICBib29sIHNob3VsZFN0YXJ0VGltZXJGb3IoY29uc3QgRG9jdW1lbnRNYXJr
ZXImLCBpbnQgZW5kT2Zmc2V0KSBjb25zdDsKICAgICBib29sIHJlc3BvbmRUb01hcmtlckF0RW5k
T2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJiwgY29uc3QgUG9zaXRpb24mIGVuZE9mV29yZFBv
c2l0aW9uKTsKQEAgLTE0MSw2ICsxMzksMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9vcmln
aW5hbFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb247CiAgICAgUG9zaXRpb24gbV9w
b3NpdGlvbkZvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb247CiAjZW5kaWYKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykgfHwgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIFN0
cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoQWx0ZXJuYXRp
dmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIHZvaWQgYXBwbHlB
bHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgQWx0ZXJu
YXRpdmVUZXh0VHlwZSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPik7Cisg
ICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKKyNlbmRp
ZgogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZmY1NDcwZGY3OS4uZGY4
ZmRhOTVkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMDcgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBw
b3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDMKKworICAgICAgICBNb3ZlIGNvZGUgdGhhdCB3
YXMgZ3VhcmRlZCB1bmRlciBQTEFURk9STShNQUMpIG91dHNpZGUgb2YgdGhhdCBndWFyZCBzbyB0
aGF0IHdlIGNvbXBpbGUgaXQKKyAgICAgICAgc28gbG9uZyBhcyBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykgaXMgZW5hYmxlZC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJs
ZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBp
c24ndCBiZWluZyBjb21waWxlZAorICAgICAgICBmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0
IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxh
Y2UgdG8gZG8gc28uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKwogMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRl
cm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhM2NlZGY1OTBh
Mi4uYjRkY2JlYmZkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTU0
LDEzICs1NCwxMyBAQCBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIE5TRmlsZVdyYXBw
ZXI7CiBPQkpDX0NMQVNTIE5TTWVudTsKIE9CSkNfQ0xBU1MgTlNTZXQ7CitPQkpDX0NMQVNTIE5T
VGV4dEFsdGVybmF0aXZlczsKIE9CSkNfQ0xBU1MgVUlHZXN0dXJlUmVjb2duaXplcjsKIE9CSkNf
Q0xBU1MgV0tEcmF3aW5nVmlldzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7
CiAKICNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBXS1ZpZXc7Ci1PQkpDX0NMQVNTIE5TVGV4
dEFsdGVybmF0aXZlczsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDk1Zjg1ZjQ2ZmE4Li4zNzcwODM3ZGQyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MzU1LDYgKzgzNTUsMjUgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpCiAKICNl
bmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7
CisgICAgcGFnZUNsaWVudCgpLnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94
T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
Cit7CisgICAgcGFnZUNsaWVudCgpLnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRp
b25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFsdGVybmF0aXZl
cyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5k
bGVyKHBhZ2VDbGllbnQoKS5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCkp
OworfQorCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtODM5MiwyMyArODQxMSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0
VUlSZXN1bHQocmVzdWx0KSk7CiB9CiAKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
LXZvaWQgV2ViUGFnZVByb3h5OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3Rh
dGlvbkNvbnRleHQpCi17Ci0gICAgcGFnZUNsaWVudCgpLnNob3dEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQpOwotfQotCi12
b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpCi17Ci0gICAgcGFnZUNsaWVudCgpLnJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBhZ2VDbGllbnQoKS5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGlj
dGF0aW9uQ29udGV4dCkpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFZGl0
YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpCiB7CiAg
ICAgcGFnZUNsaWVudCgpLnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChlZGl0YWJsZUVsZW1l
bnRJc0ZvY3VzZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3
MWUwZDBkNmY5OC4uNDMxMGFkNzViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0yMDcxLDYgKzIwNzEsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRvZ2dsZUF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKyAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHN1
YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwpAQCAt
MjA3OCwxMiArMjA4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsU29vbihpbnQzMl90IHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYm
KTsKICAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpOwogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgdm9p
ZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOwotICAg
IHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpOwotICAgIHZvaWQgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotI2Vu
ZGlmCi0KICAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKTsKICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjYTg0
MDZkNjIxZi4uNTJlNjVhOThmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5h
dGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgMworCisgICAgICAgIEd1YXJkIGNvZGUgdGhhdCByZXF1aXJlcyBVU0UoQVVUT0NPUlJFQ1RJ
T05fUEFORUwpIHRvIGJlIGVuYWJsZWQuIFNwZWNpZmljYWxseSwgLV9zaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSQorICAgICAgICBjYWxscyAtaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQs
IGJ1dCB0aGUgbGF0dGVyIGlzIG9ubHkgY29tcGlsZWQgaW4gd2hlbiBVU0UoQVVUT0NPUlJFQ1RJ
T05fUEFORUwpCisgICAgICAgIGlzIGVuYWJsZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2
ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0
aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGlsZWQKKyAgICAgICAgZm9yIGlPUywgeWV0LiBJIHdp
bGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2Rl
IGlzIGluIHBsYWNlIHRvIGRvIHNvLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
CiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyODk3OWU4YTZm
NS4uNmM4YjQ5ZmFlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTk0NTQsOSArOTQ1NCwxMSBAQCAtICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzOihWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JgogCiAt
ICh2b2lkKV9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jilib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2
NF90KWRpY3RhdGlvbkNvbnRleHQKIHsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAg
ICAgX3ByaXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5zaG93QWx0ZXJuYXRp
dmVzKHNlbGYsIFtzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzpib3VuZGluZ0JveE9mRGlj
dGF0ZWRUZXh0XSwgZGljdGF0aW9uQ29udGV4dCwgXihOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5h
dGl2ZSkgewogICAgICAgICBbc2VsZiBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2Nl
cHRlZEFsdGVybmF0aXZlXTsKICAgICB9KTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9yZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKLS0gCjIuMjQu
MSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392879</attachid>
            <date>2020-03-07 12:52:39 -0800</date>
            <delta_ts>2020-03-07 13:25:40 -0800</delta_ts>
            <desc>Part 3: Share more AlternativeTextController code and WebPageProxy code</desc>
            <filename>Part3.patch</filename>
            <type>text/plain</type>
            <size>23126</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAzZmEyZjZmMjEyMWY4YzU1NDgwODQzYWEwMWRhNzk5NWNlYzM2ZmE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTI6NDY6MzggLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDMKClNvdXJjZS9XZWJDb3JlOgoKU2VwYXJhdGUgY29kZSB0aGF0IGlzIGFj
dHVhbGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRoYXQg
Y2FuIGFsc28KYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpIGVuYWJsZWQuCgpOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9O
X0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZyBjb21w
aWxlZApmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ug
b25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UgdG8gZG8gc28uCgoqIGVkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CihXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KToK
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0
VG9SYW5nZSk6CiogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg6CgpTb3VyY2Uv
V2ViS2l0OgoKTW92ZSBjb2RlIHRoYXQgd2FzIGd1YXJkZWQgdW5kZXIgUExBVEZPUk0oTUFDKSBv
dXRzaWRlIG9mIHRoYXQgZ3VhcmQgc28gdGhhdCB3ZSBjb21waWxlIGl0CnNvIGxvbmcgYXMgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIGlzIGVuYWJsZWQuCgpOb3RlIHRoYXQgSSBoYXZlbid0
IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMg
Y29kZSBpc24ndCBiZWluZyBjb21waWxlZApmb3IgaU9TLCB5ZXQuIEkgd2lsbCBkbyB0aGF0IGlu
IGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2Ug
dG8gZG8gc28uCgoqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoKU291cmNlL1dlYktpdExlZ2Fj
eS9tYWM6CgpHdWFyZCBjb2RlIHRoYXQgcmVxdWlyZXMgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KSB0byBiZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIC1fc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZl
VUkKY2FsbHMgLWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0LCBidXQgdGhlIGxhdHRlciBp
cyBvbmx5IGNvbXBpbGVkIGluIHdoZW4gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQppcyBlbmFi
bGVkLgoKTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElW
RVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGlsZWQKZm9yIGlP
UywgeWV0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIg
YWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgoKKiBXZWJWaWV3L1dlYlZpZXcubW06
Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgIHwgIDIy
ICsrKwogLi4uL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgICAgIHwgMTM1
ICsrKysrKysrKystLS0tLS0tLQogLi4uL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5oICAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMTkgKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
ICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgICAgICB8ICAzNiArKy0tLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggICAgICAgIHwgIDEyICstCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgICAg
ICAgICAgICAgfCAgMTggKysrCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gICAgfCAgIDIgKwogOSBmaWxlcyBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKSwgODgg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyMzg4YjcxMGM3Li41N2ZlZWE0ZTVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGlj
dGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFydCAzCisKKyAgICAgICAgU2VwYXJhdGUgY29kZSB0aGF0IGlzIGFjdHVh
bGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRoYXQgY2Fu
IGFsc28KKyAgICAgICAgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpIGVuYWJsZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFi
bGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUg
aXNuJ3QgYmVpbmcgY29tcGlsZWQKKyAgICAgICAgZm9yIGlPUywgeWV0LiBJIHdpbGwgZG8gdGhh
dCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBs
YWNlIHRvIGRvIHNvLgorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlv
bkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlB
bHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaDoKKwogMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MjZlZTU3NDRhLi5lYzIyMTZkN2FkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCkBAIC00Nyw2ICs0NywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisK
K2NvbnN0ZXhwciBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5
cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKK3sKKyAgICByZXR1cm4gRG9jdW1l
bnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb247Cit9CisKKyNlbmRpZgorCiAjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogCiBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBdXRvY29ycmVjdGlvbigpCkBAIC01
OSwxMSArNjksNiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIHsgRG9jdW1l
bnRNYXJrZXI6OlJlcGxhY2VtZW50LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1w
dGlvbiB9OwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUoKQotewot
ICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbjsKLX0KLQog
c3RhdGljIGJvb2wgbWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb25zdCBWZWN0b3I8
UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAgIGlmIChtYXJrZXJzLmlz
RW1wdHkoKSkKQEAgLTE4Nyw1NiArMTkyLDYgQEAgU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5cGUsIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNUb0FkZCkKLXsK
LSAgICBhdXRvIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS5jbG9u
ZVJhbmdlKCk7Ci0KLSAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLnB0cigpLCBzdGFydE9mUGFyYWdyYXBoKHJhbmdlLnN0YXJ0UG9zaXRpb24oKSkpOwotICAg
IHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigpLCBlbmRPZlBh
cmFncmFwaChyYW5nZS5lbmRQb3NpdGlvbigpKSk7Ci0KLSAgICAvLyBBZnRlciB3ZSByZXBsYWNl
IHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlLCB3ZSBuZWVkIHRvIGFkZCBt
YXJrZXJzIHRvIHRoYXQgcmFuZ2UuCi0gICAgLy8gSG93ZXZlciwgb25jZSB0aGUgcmVwbGFjZW1l
bnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlIGlzIG5vdCB2
YWxpZCBhbnltb3JlLgotICAgIC8vIFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQgdGhlIHJlcGxhY2Vt
ZW50LCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRl
cm5hdGl2ZQotICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29u
dGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFw
aAotICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9m
ZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQotICAgIC8vIHdoaWNoIHNwYW5z
IGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFn
cmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOwotCi0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlv
bk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7Ci0gICAgaWYg
KCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNldEVuZFJlc3VsdCA9IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS0+c2V0RW5kKCpzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhB
bHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCksIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7Ci0gICAgaWYgKHNldEVuZFJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGFrZSBub3Rl
IG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNhbiBhZGQgbWFy
a2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBjb3JyZWN0aW9u
U3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29ycmVj
dGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0cigpKTsKLQotICAgIC8vIENsb25l
IHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgd2FudCB0byBr
ZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCi0gICAgYXV0byByYW5nZVdpdGhBbHRlcm5h
dGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKLQotICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
ID0gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS50
cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCks
ICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0
Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0T2Zm
c2V0KCkpLnB0cigpKTsKLSAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFu
Z2VXaXRoQWx0ZXJuYXRpdmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKLSAgICAvLyBSZWNhbGN1
bGF0ZSBwcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBw
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFk
YXI6IDEwMzA1MzE1IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRh
dGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
bi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCp1
cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBTdHJpbmcgbmV3
VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKLQotICAgIC8vIENoZWNr
IHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKG5ld1RleHQgIT0gYWx0
ZXJuYXRpdmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxl
ciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KS5tYXJrZXJzKCk7Ci0KLSAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9B
ZGQpCi0gICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJhbmdlLCBtYXJrZXJU
eXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRp
dmVUeXBlLCBtYXJrZXJUeXBlKSk7Ci19Ci0KIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKQogewogICAg
IGlmICghbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSB8fCAhbV9pc0FjdGl2ZSkKQEAgLTQ0OSwxMSAr
NDA0LDYgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24KICAgICBtYXJrZXJzLmFkZE1hcmtlcihy
YW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCi1BbHRl
cm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZl
VGV4dENsaWVudCgpCi17Ci0gICAgcmV0dXJuIG1fZnJhbWUucGFnZSgpID8gbV9mcmFtZS5wYWdl
KCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpIDogbnVsbHB0cjsKLX0KLQogRWRpdG9yQ2xpZW50
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAgIHJldHVy
biBtX2ZyYW1lLnBhZ2UoKSA/ICZtX2ZyYW1lLnBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCkgOiBudWxs
cHRyOwpAQCAtNjA3LDE0ICs1NTcsNzcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtl
ckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBl
IGFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUpCisjZW5kaWYgLy8gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpIHx8IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKworQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKQogeworICAgIHJldHVybiBtX2ZyYW1lLnBhZ2UoKSA/IG1fZnJhbWUucGFnZSgp
LT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKSA6IG51bGxwdHI7Cit9CiAKK1N0cmluZyBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2
ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9Q
QU5FTCkKICAgICBpZiAoYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRUeXBl
UmV2ZXJzaW9uICYmIGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyAmJiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVw
bGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkp
CiAgICAgICAgIHJldHVybiBtX29yaWdpbmFsVGV4dDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGFsdGVybmF0aXZlVGV4dFR5cGUpOworICAgIFVOVVNFRF9QQVJBTShtYXJrZXJUeXBlKTsKKyNl
bmRpZgogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFu
Z2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJu
YXRpdmVUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5
cGVzVG9BZGQpCit7CisgICAgYXV0byBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
ID0gcmFuZ2UuY2xvbmVSYW5nZSgpOworCisgICAgc2V0U3RhcnQocGFyYWdyYXBoUmFuZ2VDb250
YWluaW5nQ29ycmVjdGlvbi5wdHIoKSwgc3RhcnRPZlBhcmFncmFwaChyYW5nZS5zdGFydFBvc2l0
aW9uKCkpKTsKKyAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5w
dHIoKSwgZW5kT2ZQYXJhZ3JhcGgocmFuZ2UuZW5kUG9zaXRpb24oKSkpOworCisgICAgLy8gQWZ0
ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSwgd2Ug
bmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgorICAgIC8vIEhvd2V2ZXIsIG9uY2Ug
dGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdpdGhBbHRlcm5h
dGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KKyAgICAvLyBTbyBiZWZvcmUgd2UgY2Fycnkgb3V0
IHRoZSByZXBsYWNlbWVudCwgd2UgbmVlZCB0byBzdG9yZSB0aGUgc3RhcnQgcG9zaXRpb24gb2Yg
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUKKyAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRp
b24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGgKKyAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBv
YnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKKyAgICAv
LyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBv
c2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgorICAgIGF1dG8gY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKworICAgIFBvc2l0aW9u
IHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlv
bigpOworICAgIGlmICghc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFp
bmVyTm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBzZXRFbmRSZXN1bHQgPSBjb3Jy
ZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNldEVuZCgqc3RhcnRQb3NpdGlv
bk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpLCBzdGFydFBvc2l0aW9uT2ZS
YW5nZVdpdGhBbHRlcm5hdGl2ZS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAg
IGlmIChzZXRFbmRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3
ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KKyAgICBp
bnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5wdHIoKSk7CisK
KyAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2Qg
bWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgorICAgIGF1dG8gcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CisKKyAgICBDb250YWluZXJO
b2RlJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0
Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBpbnQgcGFyYWdyYXBoU3Rh
cnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFuZ2U6OmNyZWF0ZShyb290Tm9k
ZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CisgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRlcm5hdGl2ZSktPmFwcGx5KCk7Cisg
ICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBzaW5j
ZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhhdCB0
aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBsb25n
ZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTogODk1MjYKKyAgICBhdXRvIHVwZGF0
ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXgsIGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwor
ICAgIGlmICghdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVj
dGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAgICBT
dHJpbmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKKworICAg
IC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCisgICAgaWYgKG5ld1Rl
eHQgIT0gYWx0ZXJuYXRpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKS5tYXJrZXJzKCk7CisKKyAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtl
clR5cGVzVG9BZGQpCisgICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJhbmdl
LCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQo
YWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7Cit9CisKICNlbmRpZgogCiBib29sIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMTczYzkwOWYwYzMuLjI3MDIx
ZWM3NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaApAQCAtMTE1LDE1ICsxMTUsMTIgQEAgcHJpdmF0ZToKICAgICB9OwogCiAg
ICAgU3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQp
OwotICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiwgY29u
c3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSwgT3B0aW9uU2V0PERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPik7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAgICAg
dm9pZCByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihSYW5n
ZSYgcmFuZ2VPZkNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24pOwotICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRB
bHRlcm5hdGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUpOwogCiAgICAgYm9vbCBzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0IERvY3VtZW50TWFy
a2VyJiwgaW50IGVuZE9mZnNldCkgY29uc3Q7CiAgICAgYm9vbCByZXNwb25kVG9NYXJrZXJBdEVu
ZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYsIGNvbnN0IFBvc2l0aW9uJiBlbmRPZldvcmRQ
b3NpdGlvbik7CiAKLSAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENs
aWVudCgpOwogICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50KCk7CiAgICAgCiAgICAgVGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCk7CkBAIC0xNDEsNiArMTM4LDExIEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fb3JpZ2luYWxTdHJpbmdGb3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0
aW9uOwogICAgIFBvc2l0aW9uIG1fcG9zaXRpb25Gb3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9u
OwogI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIHx8IFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkKKyAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0
ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlKTsKKyAgICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYs
IGNvbnN0IFN0cmluZyYsIEFsdGVybmF0aXZlVGV4dFR5cGUsIE9wdGlvblNldDxEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZT4pOworICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KCk7CisjZW5kaWYKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZmZmNTQ3MGRmNzkuLmRmOGZkYTk1ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAg
ICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAzCisKKyAg
ICAgICAgTW92ZSBjb2RlIHRoYXQgd2FzIGd1YXJkZWQgdW5kZXIgUExBVEZPUk0oTUFDKSBvdXRz
aWRlIG9mIHRoYXQgZ3VhcmQgc28gdGhhdCB3ZSBjb21waWxlIGl0CisgICAgICAgIHNvIGxvbmcg
YXMgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIGlzIGVuYWJsZWQuCisKKyAgICAgICAgTm90
ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9T
LCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29tcGlsZWQKKyAgICAgICAgZm9yIGlP
UywgeWV0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIg
YWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgorCisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMjAtMDMtMDcgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBw
b3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggYTNjZWRmNTkwYTIuLmI0ZGNiZWJmZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC01NCwxMyArNTQsMTMgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwog
T0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU01lbnU7CiBPQkpDX0NMQVNT
IE5TU2V0OworT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNTIFVJR2Vz
dHVyZVJlY29nbml6ZXI7CiBPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CiBPQkpDX0NMQVNTIF9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKIE9CSkNfQ0xBU1MgV0tW
aWV3OwotT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAjZW5kaWYKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5NWY4NWY0NmZhOC4u
Mzc3MDgzN2RkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtODM1NSw2ICs4MzU1LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0b2dnbGVBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnQoKQogCiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHBhZ2VDbGllbnQoKS5zaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHBhZ2VDbGllbnQoKS5yZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwYWdlQ2xpZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKGRpY3RhdGlvbkNvbnRleHQpKTsKK30KKworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMp
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTgzOTIsMjMg
Kzg0MTEsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCkpOwogfQogCi0jaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCi12b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQotewotICAgIHBhZ2VDbGllbnQoKS5z
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0
YXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQotewotICAgIHBhZ2VDbGllbnQo
KS5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Ci19Ci0KLXZv
aWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihwYWdlQ2xpZW50KCkuZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpKTsKLX0KLSNlbmRpZgotCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVF
bGVtZW50SXNGb2N1c2VkKQogewogICAgIHBhZ2VDbGllbnQoKS5zZXRFZGl0YWJsZUVsZW1lbnRJ
c0ZvY3VzZWQoZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNzFlMGQwZDZmOTguLjQzMTBhZDc1Yjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjA3MSw2ICsyMDcxLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKTsKICNlbmRpZgog
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9u
QWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgcmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworI2VuZGlmCisKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKGlu
dDMyX3QgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZS
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzKTsKQEAgLTIwNzgsMTIgKzIwODQsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oaW50MzJfdCByZWFzb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKIAotI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQotICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KTsKLSAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKLSAgICB2b2lkIGRpY3RhdGlvbkFsdGVybmF0aXZl
cyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmKTsKLSNlbmRpZgotCiAgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJ
c0ZvY3VzZWQoYm9vbCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggY2E4NDA2ZDYyMWYuLjUyZTY1YTk4ZjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0
IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXJ0IDMKKworICAgICAgICBHdWFyZCBjb2RlIHRoYXQgcmVx
dWlyZXMgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKSB0byBiZSBlbmFibGVkLiBTcGVjaWZpY2Fs
bHksIC1fc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkKKyAgICAgICAgY2FsbHMgLWhhbmRsZUFj
Y2VwdGVkQWx0ZXJuYXRpdmVUZXh0LCBidXQgdGhlIGxhdHRlciBpcyBvbmx5IGNvbXBpbGVkIGlu
IHdoZW4gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgICAgICBpcyBlbmFibGVkLgorCisg
ICAgICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJ
VkVTIG9uIGlPUywgeWV0LiBTbywgdGhpcyBjb2RlIGlzbid0IGJlaW5nIGNvbXBpbGVkCisgICAg
ICAgIGZvciBpT1MsIHlldC4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBv
bmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZSB0byBkbyBzby4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBD
YXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggMjg5NzllOGE2ZjUuLjZjOGI0OWZhZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05NDU0LDkgKzk0NTQsMTEgQEAgLSAodm9p
ZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlPiYKIAogLSAodm9pZClfc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUk6
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCBmb3JE
aWN0YXRpb25Db250ZXh0Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiB7CisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci0+c2hvd0FsdGVybmF0aXZlcyhzZWxmLCBbc2VsZiBfY29udmVydFJlY3RGcm9tUm9v
dFZpZXc6Ym91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dF0sIGRpY3RhdGlvbkNvbnRleHQsIF4oTlNT
dHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUpIHsKICAgICAgICAgW3NlbGYgaGFuZGxlQWNjZXB0
ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CiAgICAgfSk7CisjZW5kaWYK
IH0KIAogLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0
YXRpb25Db250ZXh0Ci0tIAoyLjI0LjEgKEFwcGxlIEdpdC0xMjYpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392883</attachid>
            <date>2020-03-07 13:25:40 -0800</date>
            <delta_ts>2020-03-07 13:40:20 -0800</delta_ts>
            <desc>Part 3: Share more AlternativeTextController code and WebPageProxy code</desc>
            <filename>Part3.patch</filename>
            <type>text/plain</type>
            <size>28499</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAzNzFlOTVjM2I5YWRlZTM3MDc5ZTYxYzM0OGEzYjMyYjI4NjMyNDhkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTM6MjQ6MTQgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDMKClNvdXJjZS9XZWJDb3JlOgoKU2VwYXJhdGUgY29kZSB0aGF0IGlzIGFj
dHVhbGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRoYXQg
Y2FuIGFsc28KYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpIGVuYWJsZWQuCgpOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9O
X0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKY29tcGlsZWQg
Zm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVy
IGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQp0byBkbyBzby4KCiogU291cmNlc0NvY29hLnR4dDog
TWFyayBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYXMgQG5vLXVuaWZ5IHRvIGZpeCBidWls
ZCBicmVha2FnZSB3aGVuCmEgdW5pZmllZCBzb3VyY2UgZmlsZSBpbmNsdWRlcyBib3RoIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBhbmQgYSBmaWxlIHRoYXQgdWx0aW1hdGVseQppbmNsdWRl
cyBMZW5ndGhCb3guaCAoZS5nLiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3Ry
aW5nLm1tKS4gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCnVsdGltYXRlbHkgaW5jbHVkZXMg
U0ZOVExheW91dFR5cGVzLmgsIHdoaWNoIGRlZmluZXMgYSBGaXhlZCB0eXBlIHRoYXQgY29uZmxp
Y3RzIHdpdGggZW51bWVyYXRvcgpGaXhlZCAocGFydCBvZiB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJh
dGlvbikgZGVmaW5lZCBpbiBMZW5ndGguaC4gSWRlYWxseSB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJh
dGlvbgp3b3VsZCBiZSBhbiBlbnVtIGNsYXNzIG9yIHNjb3BlZCB0byBMZW5ndGggdG8gYXZvaWQg
dGhpcyBhbWJpZ3VpdHkuIFRoaXMgd291bGQgYmUgYSBiaWcgY2hhbmdlIHRvIGRvCmFuZCBzbyBm
b3Igbm93IEkgYW0gZml4aW5nIHRoZSBidWlsZCBicmVha2FnZSB1c2luZyBAbm8tdW5pZnkuCiog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tIHRvIHRoZSBwcm9qZWN0IG5vdyB0aGF0Cml0IGlzIGV4Y2x1ZGVkIGZyb20gdGhl
IHVuaWZpZWQgYnVpbGQuCiogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoK
KFdlYkNvcmU6Om1hcmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKToKKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6
CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZv
ckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaDoKClNvdXJjZS9XZWJLaXQ6CgpNb3ZlIGNvZGUgdGhhdCB3YXMgZ3Vh
cmRlZCB1bmRlciBQTEFURk9STShNQUMpIG91dHNpZGUgb2YgdGhhdCBndWFyZCBzbyB0aGF0IHdl
IGNvbXBpbGUgaXQKc28gbG9uZyBhcyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgaXMgZW5h
YmxlZC4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJ
VkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwpjb21waWxlZCBmb3IgaU9TLiBJ
IHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBj
b2RlIGlzIGluIHBsYWNlCnRvIGRvIHNvLgoKKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgoqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKClNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjOgoKR3VhcmQgY29kZSB0aGF0IHJlcXVpcmVzIFVTRShBVVRP
Q09SUkVDVElPTl9QQU5FTCkgdG8gYmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCAtX3Nob3dEaWN0
YXRpb25BbHRlcm5hdGl2ZVVJCmNhbGxzIC1oYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dCwg
YnV0IHRoZSBsYXR0ZXIgaXMgb25seSBjb21waWxlZCBpbiB3aGVuIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKaXMgZW5hYmxlZC4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNU
QVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwpjb21w
aWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2Ug
YWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCnRvIGRvIHNvLgoKKiBXZWJWaWV3L1dlYlZp
ZXcubW06Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
IHwgIDMyICsrKysrCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAg
ICAgfCAgIDIgKy0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiB8ICAgNCArLQogLi4uL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgICAg
IHwgMTM1ICsrKysrKysrKystLS0tLS0tLQogLi4uL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5oICAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMjAgKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgICAgICB8ICAzNiArKy0tLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggICAgICAgIHwgIDEyICstCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgICAgICAgICAgICAgfCAgMTkgKysrCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gICAgfCAgIDIgKwogMTEgZmlsZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMo
KyksIDkwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjM4OGI3MTBjNy4uN2UzZTBiZDcy
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQg
Zm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgMworCisgICAgICAgIFNlcGFyYXRlIGNvZGUgdGhhdCBp
cyBhY3R1YWxseSBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpLXNwZWNpZmljIGZyb20gY29kZSB0
aGF0IGNhbiBhbHNvCisgICAgICAgIGJlIHVzZWQgd2hlbiBidWlsZGluZyB3aXRoIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKSBlbmFibGVkLgorCisgICAgICAgIE5vdGUgdGhhdCBJIGhhdmVu
J3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29k
ZSBpc24ndCBiZWluZworICAgICAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBp
biBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNl
CisgICAgICAgIHRvIGRvIHNvLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogTWFyayBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYXMgQG5vLXVuaWZ5IHRvIGZpeCBidWlsZCBicmVh
a2FnZSB3aGVuCisgICAgICAgIGEgdW5pZmllZCBzb3VyY2UgZmlsZSBpbmNsdWRlcyBib3RoIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBhbmQgYSBmaWxlIHRoYXQgdWx0aW1hdGVseQorICAg
ICAgICBpbmNsdWRlcyBMZW5ndGhCb3guaCAoZS5nLiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNB
dHRyaWJ1dGVkU3RyaW5nLm1tKS4gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCisgICAgICAg
IHVsdGltYXRlbHkgaW5jbHVkZXMgU0ZOVExheW91dFR5cGVzLmgsIHdoaWNoIGRlZmluZXMgYSBG
aXhlZCB0eXBlIHRoYXQgY29uZmxpY3RzIHdpdGggZW51bWVyYXRvcgorICAgICAgICBGaXhlZCAo
cGFydCBvZiB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJhdGlvbikgZGVmaW5lZCBpbiBMZW5ndGguaC4g
SWRlYWxseSB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJhdGlvbgorICAgICAgICB3b3VsZCBiZSBhbiBl
bnVtIGNsYXNzIG9yIHNjb3BlZCB0byBMZW5ndGggdG8gYXZvaWQgdGhpcyBhbWJpZ3VpdHkuIFRo
aXMgd291bGQgYmUgYSBiaWcgY2hhbmdlIHRvIGRvCisgICAgICAgIGFuZCBzbyBmb3Igbm93IEkg
YW0gZml4aW5nIHRoZSBidWlsZCBicmVha2FnZSB1c2luZyBAbm8tdW5pZnkuCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tIHRvIHRoZSBwcm9qZWN0IG5vdyB0aGF0CisgICAgICAgIGl0IGlzIGV4Y2x1ZGVk
IGZyb20gdGhlIHVuaWZpZWQgYnVpbGQuCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtlclR5cGVzRm9yQXBwbGll
ZERpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRl
cm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKwogMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGE3ZTBmZDc4
MjIwLi5mODNlYWNkOTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC05OSw3ICs5OSw3
IEBAIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1
cExlZ2FjeS5tbQogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCiBlZGl0aW5nL21hYy9GcmFtZVNl
bGVjdGlvbk1hYy5tbQotZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCitl
ZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gQG5vLXVuaWZ5CiBlZGl0aW5n
L21hYy9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbQogCiBmaWxlYXBpL0ZpbGVDb2NvYS5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDU2MGQ3NWRlZjllLi5lYjdkZWE1OGU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI1Myw2ICs0MjUzLDcgQEAK
IAkJQ0U3QjJEQjMxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJE
QUYxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFN0IyREI1MTU4
NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNG
QSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdFMTc4MzFDODNBNDkxMDBBRDA2QUYgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U3RTE3ODIxQzgzQTQ5MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDRTg4RUUyNjI0MTQ0NjdCMDA3RjI5QzIgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3
QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsg
fTsKIAkJQ0VBMjg0NjYyMTQxRTg0OTAwRTQwN0U4IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY2MDFF
QkUxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tICovOyB9Owog
CQlDRUJCOEMzMzIwNzg2RENCMDAwMzk1NDcgLyogRmV0Y2hJZGlvbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkI4QzMxMjA3ODZEQ0IwMDAzOTU0
NyAvKiBGZXRjaElkaW9tcy5oICovOyB9OwogCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5h
dGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0yOTAxOSw2ICsyOTAyMCw3IEBACiAJCQkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0IC8qIEFs
bERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI5OUJDNjcyM0Q2
QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFREExMkQ3MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUNFNDU5NDZGMjQxMjNDOTYwMDc4MDE5RiAvKiBBbHRlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UwOEMzRDIxNTJC
NTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNFMTJCMDI2NzYwMEMxQTM1OSAvKiBB
bmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE5MTEsNyArMzE5MTMsNiBAQAogCQkJ
CUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QkFBRTU4MTk4MEQxREQwMDVERkU3MSAvKiBQcm90
ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3Njc1MENFOTIzQTEwMDdFRjND
RCAvKiBQcm90ZWN0aW9uU3BhY2VCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRTQ1OTQ2RjI0
MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3MkFEQTM4MTk3RjQ3QjkwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3Bh
Y2VDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8q
IFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjhFMTFBMTI1NjU5
MjYwMDIzMEZGNyAvKiBQcm94eVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzc0Nyw2ICsz
Mzc0OCw3IEBACiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMxNjkyREQyMjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0
ZXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1NEYyMjlEQ0QxMzAwQjNFMTUxIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRTg4RUUyNjI0MTQ0
NjdCMDA3RjI5QzIgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc1OUU5M0YxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3MUE5RUMyMTY4RkJDNDMwMDI2MjlGOSAvKiBUZXh0VHJhY2tD
dWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMjkyNmVlNTc0NGEuLmVj
MjIxNmQ3YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDYgKzQ3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIHx8IFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkKKworY29uc3RleHByIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUoKQorewor
ICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbjsKK30KKwor
I2VuZGlmCisKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKIHN0YXRpYyBpbmxpbmUg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc0ZvckF1dG9j
b3JyZWN0aW9uKCkKQEAgLTU5LDExICs2OSw2IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc0ZvclJlcGxhY2VtZW50KCkKICAg
ICByZXR1cm4geyBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIERvY3VtZW50TWFya2VyOjpT
cGVsbENoZWNraW5nRXhlbXB0aW9uIH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc0ZvckFwcGxpZWREaWN0YXRpb25B
bHRlcm5hdGl2ZSgpCi17Ci0gICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5n
RXhlbXB0aW9uOwotfQotCiBzdGF0aWMgYm9vbCBtYXJrZXJzSGF2ZUlkZW50aWNhbERlc2NyaXB0
aW9uKGNvbnN0IFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyKj4mIG1hcmtlcnMpCiB7CiAg
ICAgaWYgKG1hcmtlcnMuaXNFbXB0eSgpKQpAQCAtMTg3LDU2ICsxOTIsNiBAQCBTdHJpbmcgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2Um
IHJhbmdlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5hdGl2ZVRleHRUeXBlIGFs
dGVybmF0aXZlVHlwZSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJr
ZXJUeXBlc1RvQWRkKQotewotICAgIGF1dG8gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbiA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKLQotICAgIHNldFN0YXJ0KHBhcmFncmFwaFJhbmdl
Q29udGFpbmluZ0NvcnJlY3Rpb24ucHRyKCksIHN0YXJ0T2ZQYXJhZ3JhcGgocmFuZ2Uuc3RhcnRQ
b3NpdGlvbigpKSk7Ci0gICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24ucHRyKCksIGVuZE9mUGFyYWdyYXBoKHJhbmdlLmVuZFBvc2l0aW9uKCkpKTsKLQotICAgIC8v
IEFmdGVyIHdlIHJlcGxhY2UgdGhlIHdvcmQgYXQgcmFuZ2UgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUs
IHdlIG5lZWQgdG8gYWRkIG1hcmtlcnMgdG8gdGhhdCByYW5nZS4KLSAgICAvLyBIb3dldmVyLCBv
bmNlIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLCB0aGUgdmFsdWUgb2YgcmFuZ2VXaXRoQWx0
ZXJuYXRpdmUgaXMgbm90IHZhbGlkIGFueW1vcmUuCi0gICAgLy8gU28gYmVmb3JlIHdlIGNhcnJ5
IG91dCB0aGUgcmVwbGFjZW1lbnQsIHdlIG5lZWQgdG8gc3RvcmUgdGhlIHN0YXJ0IHBvc2l0aW9u
IG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlCi0gICAgLy8gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHBv
c2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHBhcmFncmFwaC4gV2UgdXNlIGNvcnJlY3Rpb25TdGFy
dE9mZnNldEluUGFyYWdyYXBoCi0gICAgLy8gdG8gc3RvcmUgdGhpcyB2YWx1ZS4gSW4gb3JkZXIg
dG8gb2J0YWluIHRoaXMgb2Zmc2V0LCB3ZSBuZWVkIHRvIGZpcnN0IGNyZWF0ZSBhIHJhbmdlCi0g
ICAgLy8gd2hpY2ggc3BhbnMgZnJvbSB0aGUgc3RhcnQgb2YgcGFyYWdyYXBoIHRvIHRoZSBzdGFy
dCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZS4KLSAgICBhdXRvIGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJh
Z3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7Ci0KLSAgICBQb3Np
dGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLnN0YXJ0UG9z
aXRpb24oKTsKLSAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNv
bnRhaW5lck5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2V0RW5kUmVzdWx0ID0g
Y29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLT5zZXRFbmQoKnN0YXJ0UG9z
aXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5lck5vZGUoKSwgc3RhcnRQb3NpdGlv
bk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsK
LSAgICBpZiAoc2V0RW5kUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9mIGF1dG9jb3JyZWN0aW9uIHNvIHRo
YXQgd2UgY2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UuCi0g
ICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkp
OwotCi0gICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0
aG9kIG1heSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KLSAgICBhdXRv
IHJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UuY2xvbmVSYW5nZSgpOwotCi0gICAgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5z
dGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7Ci0gICAgaW50IHBhcmFncmFw
aFN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKFJhbmdlOjpjcmVhdGUocm9v
dE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAmcGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbi0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOwotICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgYWx0ZXJuYXRpdmUpLT5hcHBseSgp
OwotICAgIC8vIFJlY2FsY3VsYXRlIHByYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwg
c2luY2UgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtb2RpZmllZCB0aGUgRE9NLCBzdWNoIHRo
YXQgdGhlIG9yaWdpbmFsIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8g
bG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUzMTUgQnVnemlsbGE6IDg5NTI2Ci0gICAgYXV0byB1
cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4
LCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCArIGFsdGVybmF0aXZlLmxlbmd0aCgp
KTsKLSAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnN0YXJ0KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkp
OwotICAgIFN0cmluZyBuZXdUZXh0ID0gcGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkp
OwotCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1Y2NlZWRlZC4KLSAgICBp
ZiAobmV3VGV4dCAhPSBhbHRlcm5hdGl2ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+c3RhcnRDb250
YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKTsKLQotICAgIGZvciAoYXV0byBtYXJrZXJUeXBl
IDogbWFya2VyVHlwZXNUb0FkZCkKLSAgICAgICAgbWFya2Vycy5hZGRNYXJrZXIoKnJlcGxhY2Vt
ZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0
aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtlclR5cGUpKTsKLX0KLQogYm9vbCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjphcHBseUF1dG9jb3JyZWN0aW9uQmVmb3JlVHlwaW5nSWZBcHBy
b3ByaWF0ZSgpCiB7CiAgICAgaWYgKCFtX3JhbmdlV2l0aEFsdGVybmF0aXZlIHx8ICFtX2lzQWN0
aXZlKQpAQCAtNDQ5LDExICs0MDQsNiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbgogICAgIG1h
cmtlcnMuYWRkTWFya2VyKHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1w
dGlvbik7CiB9CiAKLUFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKLXsKLSAgICByZXR1cm4gbV9mcmFtZS5wYWdl
KCkgPyBtX2ZyYW1lLnBhZ2UoKS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkgOiBudWxscHRyOwot
fQotCiBFZGl0b3JDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmVkaXRvckNsaWVu
dCgpCiB7CiAgICAgcmV0dXJuIG1fZnJhbWUucGFnZSgpID8gJm1fZnJhbWUucGFnZSgpLT5lZGl0
b3JDbGllbnQoKSA6IG51bGxwdHI7CkBAIC02MDcsMTQgKzU1Nyw3NyBAQCBib29sIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERvY3Vt
ZW50TWFya2VyJgogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFs
dGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUgbWFya2VyVHlwZSkKKyNlbmRpZiAvLyBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgfHwgVVNFKEFVVE9DT1JSRUNUSU9O
X1BBTkVMKQorCitBbHRlcm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCgpCiB7CisgICAgcmV0dXJuIG1fZnJhbWUucGFnZSgp
ID8gbV9mcmFtZS5wYWdlKCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpIDogbnVsbHB0cjsKK30K
IAorU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtlckRlc2NyaXB0aW9uRm9y
QXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlIGFsdGVybmF0aXZlVGV4
dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUpCit7CisjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIGlmIChhbHRlcm5hdGl2ZVRleHRUeXBlICE9IEFs
dGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24gJiYgYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRl
cm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzICYmIChtYXJrZXJUeXBlID09IERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2Vy
OjpBdXRvY29ycmVjdGVkKSkKICAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxUZXh0OworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYWx0ZXJuYXRpdmVUZXh0VHlwZSk7CisgICAgVU5VU0VEX1BBUkFN
KG1hcmtlclR5cGUpOworI2VuZGlmCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKK3Zv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1Jhbmdl
KGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRp
dmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5cGUsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNUb0FkZCkKK3sKKyAgICBhdXRvIHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS5jbG9uZVJhbmdlKCk7CisKKyAgICBzZXRTdGFydChw
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigpLCBzdGFydE9mUGFyYWdyYXBo
KHJhbmdlLnN0YXJ0UG9zaXRpb24oKSkpOworICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLnB0cigpLCBlbmRPZlBhcmFncmFwaChyYW5nZS5lbmRQb3NpdGlvbigp
KSk7CisKKyAgICAvLyBBZnRlciB3ZSByZXBsYWNlIHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0
aEFsdGVybmF0aXZlLCB3ZSBuZWVkIHRvIGFkZCBtYXJrZXJzIHRvIHRoYXQgcmFuZ2UuCisgICAg
Ly8gSG93ZXZlciwgb25jZSB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9m
IHJhbmdlV2l0aEFsdGVybmF0aXZlIGlzIG5vdCB2YWxpZCBhbnltb3JlLgorICAgIC8vIFNvIGJl
Zm9yZSB3ZSBjYXJyeSBvdXQgdGhlIHJlcGxhY2VtZW50LCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBz
dGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZQorICAgIC8vIHJlbGF0aXZlIHRv
IHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaAorICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFs
dWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVh
dGUgYSByYW5nZQorICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFw
aCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCisgICAgYXV0
byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlv
bigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkp
OworCisgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBy
YW5nZS5zdGFydFBvc2l0aW9uKCk7CisgICAgaWYgKCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhB
bHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNl
dEVuZFJlc3VsdCA9IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS0+c2V0
RW5kKCpzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCks
IHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSk7CisgICAgaWYgKHNldEVuZFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gVGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29y
cmVjdGlvbiBzbyB0aGF0IHdlIGNhbiBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0
b29rIHBsYWNlLgorICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhB
c1JhbmdlLnB0cigpKTsKKworICAgIC8vIENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxl
ciBvZiB0aGlzIG1ldGhvZCBtYXkgd2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91
bmQuCisgICAgYXV0byByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsK
KworICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAg
IGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5n
ZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdl
Q29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0T2Zmc2V0KCkpLnB0cigpKTsKKyAgICBTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGFsdGVybmF0
aXZlKS0+YXBwbHkoKTsKKyAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZpZWQgdGhl
IERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3ppbGxhOiA4OTUy
NgorICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdy
YXBoU3RhcnRJbmRleCwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5h
dGl2ZS5sZW5ndGgoKSk7CisgICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3Jh
cGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnN0YXJ0KCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUu
bGVuZ3RoKCkpOworICAgIFN0cmluZyBuZXdUZXh0ID0gcGxhaW5UZXh0KHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCkpOworCisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1Y2NlZWRl
ZC4KKyAgICBpZiAobmV3VGV4dCAhPSBhbHRlcm5hdGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKTsKKworICAgIGZvciAoYXV0byBt
YXJrZXJUeXBlIDogbWFya2VyVHlwZXNUb0FkZCkKKyAgICAgICAgbWFya2Vycy5hZGRNYXJrZXIo
KnJlcGxhY2VtZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGll
ZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtlclR5cGUpKTsKK30KKwogI2Vu
ZGlmCiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAppbmRleCAx
NzNjOTA5ZjBjMy4uMjcwMjFlYzc1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCkBAIC0xMTUsMTUgKzExNSwxMiBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICBTdHJpbmcgZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCk7Ci0gICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2Uo
Y29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5hdGl2ZVRleHRU
eXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KTsKICAgICB2b2lkIHRp
bWVyRmlyZWQoKTsKICAgICB2b2lkIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZp
ZWRDb3JyZWN0aW9uKFJhbmdlJiByYW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7Ci0gICAgU3RyaW5nIG1hcmtlckRlc2Ny
aXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAKICAgICBib29sIHNob3VsZFN0YXJ0VGltZXJGb3Io
Y29uc3QgRG9jdW1lbnRNYXJrZXImLCBpbnQgZW5kT2Zmc2V0KSBjb25zdDsKICAgICBib29sIHJl
c3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJiwgY29uc3QgUG9z
aXRpb24mIGVuZE9mV29yZFBvc2l0aW9uKTsKIAotICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCog
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQo
KTsKICAgICAKICAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKTsKQEAgLTE0MSw2
ICsxMzgsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9vcmlnaW5hbFN0cmluZ0Zvckxhc3RE
ZWxldGVkQXV0b2NvcnJlY3Rpb247CiAgICAgUG9zaXRpb24gbV9wb3NpdGlvbkZvckxhc3REZWxl
dGVkQXV0b2NvcnJlY3Rpb247CiAjZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykgfHwgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIFN0cmluZyBtYXJrZXJEZXNjcmlw
dGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1Jh
bmdlKGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgQWx0ZXJuYXRpdmVUZXh0VHlwZSwgT3B0
aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPik7CisgICAgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKKyNlbmRpZgogCiAgICAgRnJhbWUmIG1f
ZnJhbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZmY1NDcwZGY3OS4uMTJhMDBlOGVlNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24g
YWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXJ0IDMKKworICAgICAgICBNb3ZlIGNvZGUgdGhhdCB3YXMgZ3VhcmRlZCB1bmRlciBQ
TEFURk9STShNQUMpIG91dHNpZGUgb2YgdGhhdCBndWFyZCBzbyB0aGF0IHdlIGNvbXBpbGUgaXQK
KyAgICAgICAgc28gbG9uZyBhcyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgaXMgZW5hYmxl
ZC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FM
VEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAgICAgICAgY29t
cGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNl
IGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQorICAgICAgICB0byBkbyBzby4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIw
LTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGEzY2VkZjU5MGEyLi5iNGRjYmViZmRiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNTQsMTMgKzU0LDEzIEBAIE9CSkNf
Q0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNN
ZW51OwogT0JKQ19DTEFTUyBOU1NldDsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwog
T0JKQ19DTEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOwogT0JKQ19DTEFTUyBXS0RyYXdpbmdWaWV3
OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogI2lmIFVTRShBUFBLSVQp
CiBPQkpDX0NMQVNTIFdLVmlldzsKLU9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2Vu
ZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggOTVmODVmNDZmYTguLjM3NzA4MzdkZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTgzNTUsNiArODM1NSwyNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkKIAogI2VuZGlmCiAKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKwordm9pZCBXZWJQYWdlUHJveHk6OnNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3Rh
dGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBwYWdlQ2xpZW50KCku
c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgZGlj
dGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBwYWdlQ2xpZW50
KCkucmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIocGFnZUNsaWVudCgpLmRp
Y3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KSk7Cit9CisKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oTUFDKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3Vic3RpdHV0aW9uc1BhbmVs
SXNTaG93aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC04MzkyLDIzICs4NDExLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVy
bmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpKTsK
IH0KIAotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotdm9pZCBXZWJQYWdlUHJveHk6
OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKLXsKLSAg
ICBwYWdlQ2xpZW50KCkuc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoYm91bmRpbmdCb3hPZkRp
Y3RhdGVkVGV4dCwgZGljdGF0aW9uQ29udGV4dCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKLXsK
LSAgICBwYWdlQ2xpZW50KCkucmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNv
bnRleHQpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
cGFnZUNsaWVudCgpLmRpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KSk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNl
ZChib29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKIHsKICAgICBwYWdlQ2xpZW50KCkuc2V0
RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDcxZTBkMGQ2Zjk4Li40MzEwYWQ3
NWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwNzEsNiAr
MjA3MSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50KCk7CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZv
aWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAg
ICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KTsKKyAgICB2b2lkIGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc3Vic3RpdHV0aW9uc1BhbmVsSXNT
aG93aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2hvd0Nv
cnJlY3Rpb25QYW5lbChpbnQzMl90IHBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CkBAIC0yMDc4LDEyICsyMDg0LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVh
c29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwogICAgIHZvaWQgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAKLSNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVk
VGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7Ci0gICAgdm9pZCByZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7Ci0gICAgdm9pZCBkaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0jZW5kaWYKLQogICAgIHZvaWQgc2V0
RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpOwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGNhODQwNmQ2MjFmLi45OThhYTljOTA1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAz
LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAzCisKKyAgICAgICAgR3Vh
cmQgY29kZSB0aGF0IHJlcXVpcmVzIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkgdG8gYmUgZW5h
YmxlZC4gU3BlY2lmaWNhbGx5LCAtX3Nob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJCisgICAgICAg
IGNhbGxzIC1oYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dCwgYnV0IHRoZSBsYXR0ZXIgaXMg
b25seSBjb21waWxlZCBpbiB3aGVuIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAgICAgICAg
aXMgZW5hYmxlZC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElD
VEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAg
ICAgICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNo
YW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQorICAgICAgICB0byBkbyBz
by4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMjg5NzllOGE2ZjUuLjZjOGI0OWZhZTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05NDU0LDkgKzk0
NTQsMTEgQEAgLSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9y
PFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYKIAogLSAodm9pZClfc2hvd0RpY3RhdGlv
bkFsdGVybmF0aXZlVUk6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpYm91bmRpbmdCb3hPZkRp
Y3RhdGVkVGV4dCBmb3JEaWN0YXRpb25Db250ZXh0Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0
CiB7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIF9wcml2YXRlLT5tX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci0+c2hvd0FsdGVybmF0aXZlcyhzZWxmLCBbc2VsZiBfY29u
dmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dF0sIGRpY3RhdGlv
bkNvbnRleHQsIF4oTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUpIHsKICAgICAgICAgW3Nl
bGYgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CiAg
ICAgfSk7CisjZW5kaWYKIH0KIAogLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Ci0tIAoyLjI0LjEgKEFwcGxlIEdpdC0xMjYpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392886</attachid>
            <date>2020-03-07 13:40:20 -0800</date>
            <delta_ts>2020-03-07 16:18:47 -0800</delta_ts>
            <desc>Part 3: Share more AlternativeTextController code and WebPageProxy code</desc>
            <filename>Part3.patch</filename>
            <type>text/plain</type>
            <size>27427</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA5OTRkZDliZDQwMWZkMmJiZjMwNTYyMTgxZWZkNjIyMWExMTdmZjJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTM6Mzk6NDYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDMKClNvdXJjZS9XZWJDb3JlOgoKU2VwYXJhdGUgY29kZSB0aGF0IGlzIGFj
dHVhbGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRoYXQg
Y2FuIGFsc28KYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpIGVuYWJsZWQuCgpOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9O
X0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKY29tcGlsZWQg
Zm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVy
IGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQp0byBkbyBzby4KCiogU291cmNlc0NvY29hLnR4dDog
TWFyayBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYXMgQG5vLXVuaWZ5IHRvIGZpeCBidWls
ZCBicmVha2FnZSB3aGVuCmEgdW5pZmllZCBzb3VyY2UgZmlsZSBpbmNsdWRlcyBib3RoIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBhbmQgYSBmaWxlIHRoYXQgdWx0aW1hdGVseQppbmNsdWRl
cyBMZW5ndGhCb3guaCAoZS5nLiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3Ry
aW5nLm1tKS4gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCnVsdGltYXRlbHkgaW5jbHVkZXMg
U0ZOVExheW91dFR5cGVzLmgsIHdoaWNoIGRlZmluZXMgYSBGaXhlZCB0eXBlIHRoYXQgY29uZmxp
Y3RzIHdpdGggZW51bWVyYXRvcgpGaXhlZCAocGFydCBvZiB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJh
dGlvbikgZGVmaW5lZCBpbiBMZW5ndGguaC4gSWRlYWxseSB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJh
dGlvbgp3b3VsZCBiZSBhbiBlbnVtIGNsYXNzIG9yIHNjb3BlZCB0byBMZW5ndGggdG8gYXZvaWQg
dGhpcyBhbWJpZ3VpdHkuIFRoaXMgd291bGQgYmUgYSBiaWcgY2hhbmdlIHRvIGRvCmFuZCBzbyBm
b3Igbm93IEkgYW0gZml4aW5nIHRoZSBidWlsZCBicmVha2FnZSB1c2luZyBAbm8tdW5pZnkuCiog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tIHRvIHRoZSBwcm9qZWN0IG5vdyB0aGF0Cml0IGlzIGV4Y2x1ZGVkIGZyb20gdGhl
IHVuaWZpZWQgYnVpbGQuCiogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoK
KFdlYkNvcmU6Om1hcmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKToKKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6
CihXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZv
ckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgooV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaDoKClNvdXJjZS9XZWJLaXQ6CgpNb3ZlIGNvZGUgdGhhdCB3YXMgZ3Vh
cmRlZCB1bmRlciBQTEFURk9STShNQUMpIG91dHNpZGUgb2YgdGhhdCBndWFyZCBzbyB0aGF0IHdl
IGNvbXBpbGUgaXQKc28gbG9uZyBhcyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgaXMgZW5h
YmxlZC4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJ
VkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwpjb21waWxlZCBmb3IgaU9TLiBJ
IHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBj
b2RlIGlzIGluIHBsYWNlCnRvIGRvIHNvLgoKKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgoqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKClNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjOgoKR3VhcmQgY29kZSB0aGF0IHJlcXVpcmVzIFVTRShBVVRP
Q09SUkVDVElPTl9QQU5FTCkgdG8gYmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCAtX3Nob3dEaWN0
YXRpb25BbHRlcm5hdGl2ZVVJCmNhbGxzIC1oYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dCwg
YnV0IHRoZSBsYXR0ZXIgaXMgb25seSBjb21waWxlZCBpbiB3aGVuIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKaXMgZW5hYmxlZC4KCk5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNU
QVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwpjb21w
aWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2Ug
YWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCnRvIGRvIHNvLgoKKiBXZWJWaWV3L1dlYlZp
ZXcubW06Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
IHwgIDMyICsrKysrCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAg
ICAgfCAgIDIgKy0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiB8ICAgMiArCiAuLi4vZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCAgICAg
fCAxMzUgKysrKysrKysrKy0tLS0tLS0tCiAuLi4vZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmggICAgICAgfCAgIDggKy0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICB8ICAyMCArKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCAgICAgIHwgIDM2ICsrLS0tCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCAgICAgICAgfCAgMTIgKy0KIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyAgICAgICAgICAgICB8ICAxOSArKysKIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSAgICB8ICAgMiArCiAxMSBmaWxlcyBjaGFuZ2VkLCAxODEgaW5zZXJ0aW9ucygr
KSwgODkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyMzg4YjcxMGM3Li43ZTNlMGJkNzIx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBm
b3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCAzCisKKyAgICAgICAgU2VwYXJhdGUgY29kZSB0aGF0IGlz
IGFjdHVhbGx5IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCktc3BlY2lmaWMgZnJvbSBjb2RlIHRo
YXQgY2FuIGFsc28KKyAgICAgICAgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpIGVuYWJsZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2ZW4n
dCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLiBTbywgdGhpcyBjb2Rl
IGlzbid0IGJlaW5nCisgICAgICAgIGNvbXBpbGVkIGZvciBpT1MuIEkgd2lsbCBkbyB0aGF0IGlu
IGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UK
KyAgICAgICAgdG8gZG8gc28uCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNYXJrIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBhcyBAbm8tdW5pZnkgdG8gZml4IGJ1aWxkIGJyZWFr
YWdlIHdoZW4KKyAgICAgICAgYSB1bmlmaWVkIHNvdXJjZSBmaWxlIGluY2x1ZGVzIGJvdGggVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGFuZCBhIGZpbGUgdGhhdCB1bHRpbWF0ZWx5CisgICAg
ICAgIGluY2x1ZGVzIExlbmd0aEJveC5oIChlLmcuIFdlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0
dHJpYnV0ZWRTdHJpbmcubW0pLiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KKyAgICAgICAg
dWx0aW1hdGVseSBpbmNsdWRlcyBTRk5UTGF5b3V0VHlwZXMuaCwgd2hpY2ggZGVmaW5lcyBhIEZp
eGVkIHR5cGUgdGhhdCBjb25mbGljdHMgd2l0aCBlbnVtZXJhdG9yCisgICAgICAgIEZpeGVkIChw
YXJ0IG9mIHRoZSBMZW5ndGhUeXBlIGVudW1lcmF0aW9uKSBkZWZpbmVkIGluIExlbmd0aC5oLiBJ
ZGVhbGx5IHRoZSBMZW5ndGhUeXBlIGVudW1lcmF0aW9uCisgICAgICAgIHdvdWxkIGJlIGFuIGVu
dW0gY2xhc3Mgb3Igc2NvcGVkIHRvIExlbmd0aCB0byBhdm9pZCB0aGlzIGFtYmlndWl0eS4gVGhp
cyB3b3VsZCBiZSBhIGJpZyBjaGFuZ2UgdG8gZG8KKyAgICAgICAgYW5kIHNvIGZvciBub3cgSSBh
bSBmaXhpbmcgdGhlIGJ1aWxkIGJyZWFrYWdlIHVzaW5nIEBuby11bmlmeS4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UubW0gdG8gdGhlIHByb2plY3Qgbm93IHRoYXQKKyAgICAgICAgaXQgaXMgZXhjbHVkZWQg
ZnJvbSB0aGUgdW5pZmllZCBidWlsZC4KKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVHlwZXNGb3JBcHBsaWVk
RGljdGF0aW9uQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVy
bmF0aXZlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oOgorCiAyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGlj
dGF0aW9uIGFsdGVybmF0aXZlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTdlMGZkNzgy
MjAuLmY4M2VhY2Q5NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTk5LDcgKzk5LDcg
QEAgZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3Vw
TGVnYWN5Lm1tCiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KIGVkaXRpbmcvbWFjL0ZyYW1lU2Vs
ZWN0aW9uTWFjLm1tCi1lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KK2Vk
aXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBAbm8tdW5pZnkKIGVkaXRpbmcv
bWFjL1RleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tCiAKIGZpbGVhcGkvRmlsZUNvY29hLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNTYwZDc1ZGVmOWUuLjg0Y2VhMzFkNjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjUzLDYgKzQyNTMsNyBAQAog
CQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRB
RjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U3QjJEQjUxNTg2
QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZB
IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFN0UxNzgzMUM4M0E0OTEwMEFEMDZBRiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTdFMTc4MjFDODNBNDkxMDBBRDA2QUYgLyogQ29udGVudFNlY3VyaXR5
UG9saWN5SGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNFODhFRTI2MjQxNDQ2N0IwMDdGMjlDMiAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdC
MkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovOyB9
OwogCQlDRUEyODQ2NjIxNDFFODQ5MDBFNDA3RTggLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjYwMUVC
RTE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gKi87IH07CiAJ
CUNFQkI4QzMzMjA3ODZEQ0IwMDAzOTU0NyAvKiBGZXRjaElkaW9tcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQjhDMzEyMDc4NkRDQjAwMDM5NTQ3
IC8qIEZldGNoSWRpb21zLmggKi87IH07CiAJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25BbHRlcm5hdGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0
aXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTMzNzQ3LDYgKzMzNzQ4LDcgQEAKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZH
TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIyM0QyM0FCRDAwNkU4OEY3IC8q
IFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RjIyOURDRDEzMDBC
M0UxNTEgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNF
ODhFRTI2MjQxNDQ2N0IwMDdGMjlDMiAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5NzU5RTkzRjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTQyMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJh
Y2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQTlFQzIxNjhGQkM0MzAwMjYyOUY5IC8q
IFRleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCAyOTI2
ZWU1NzQ0YS4uZWMyMjE2ZDdhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcsMTYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgfHwg
VVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCitjb25zdGV4cHIgT3B0aW9uU2V0PERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc0ZvckFwcGxpZWREaWN0YXRpb25BbHRlcm5h
dGl2ZSgpCit7CisgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0
aW9uOworfQorCisjZW5kaWYKKwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIAogc3Rh
dGljIGlubGluZSBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5
cGVzRm9yQXV0b2NvcnJlY3Rpb24oKQpAQCAtNTksMTEgKzY5LDYgQEAgc3RhdGljIGlubGluZSBP
cHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzRm9yUmVwbGFj
ZW1lbnQoKQogICAgIHJldHVybiB7IERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwgRG9jdW1l
bnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfTsKIH0KIAotc3RhdGljIGlubGluZSBP
cHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzRm9yQXBwbGll
ZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKLXsKLSAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsQ2hlY2tpbmdFeGVtcHRpb247Ci19Ci0KIHN0YXRpYyBib29sIG1hcmtlcnNIYXZlSWRlbnRp
Y2FsRGVzY3JpcHRpb24oY29uc3QgVmVjdG9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqPiYgbWFy
a2VycykKIHsKICAgICBpZiAobWFya2Vycy5pc0VtcHR5KCkpCkBAIC0xODcsNTYgKzE5Miw2IEBA
IFN0cmluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzU29vbihSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lk
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShj
b25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0aXZl
VGV4dFR5cGUgYWx0ZXJuYXRpdmVUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGU+IG1hcmtlclR5cGVzVG9BZGQpCi17Ci0gICAgYXV0byBwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uID0gcmFuZ2UuY2xvbmVSYW5nZSgpOwotCi0gICAgc2V0U3RhcnQocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5wdHIoKSwgc3RhcnRPZlBhcmFncmFwaChy
YW5nZS5zdGFydFBvc2l0aW9uKCkpKTsKLSAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbi5wdHIoKSwgZW5kT2ZQYXJhZ3JhcGgocmFuZ2UuZW5kUG9zaXRpb24oKSkp
OwotCi0gICAgLy8gQWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhB
bHRlcm5hdGl2ZSwgd2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgotICAgIC8v
IEhvd2V2ZXIsIG9uY2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiBy
YW5nZVdpdGhBbHRlcm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KLSAgICAvLyBTbyBiZWZv
cmUgd2UgY2Fycnkgb3V0IHRoZSByZXBsYWNlbWVudCwgd2UgbmVlZCB0byBzdG9yZSB0aGUgc3Rh
cnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUKLSAgICAvLyByZWxhdGl2ZSB0byB0
aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29y
cmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgKLSAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVl
LiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRl
IGEgcmFuZ2UKLSAgICAvLyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGgg
dG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgotICAgIGF1dG8g
Y29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShw
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3Vt
ZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsK
LQotICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFu
Z2Uuc3RhcnRQb3NpdGlvbigpOwotICAgIGlmICghc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0
ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBzZXRF
bmRSZXN1bHQgPSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNldEVu
ZCgqc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpLCBz
dGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb21wdXRlT2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpOwotICAgIGlmIChzZXRFbmRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJl
Y3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9v
ayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNS
YW5nZS5wdHIoKSk7Ci0KLSAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIg
b2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5k
LgotICAgIGF1dG8gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7Ci0K
LSAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0Nv
cnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICBp
bnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFuZ2U6
OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7Ci0gICAgU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRlcm5hdGl2
ZSktPmFwcGx5KCk7Ci0gICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVkIHRoZSBE
T00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTogODk1MjYK
LSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFw
aFN0YXJ0SW5kZXgsIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRp
dmUubGVuZ3RoKCkpOwotICAgIGlmICghdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0Nv
cnJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzZXRFbmQodXBkYXRlZFBhcmFn
cmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdl
ID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24sIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2
ZS5sZW5ndGgoKSk7Ci0gICAgU3RyaW5nIG5ld1RleHQgPSBwbGFpblRleHQocmVwbGFjZW1lbnRS
YW5nZS5nZXQoKSk7Ci0KLSAgICAvLyBDaGVjayB0byBzZWUgaWYgcmVwbGFjZW1lbnQgc3VjY2Vl
ZGVkLgotICAgIGlmIChuZXdUZXh0ICE9IGFsdGVybmF0aXZlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSByZXBsYWNlbWVudFJhbmdl
LT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2VycygpOwotCi0gICAgZm9yIChhdXRv
IG1hcmtlclR5cGUgOiBtYXJrZXJUeXBlc1RvQWRkKQotICAgICAgICBtYXJrZXJzLmFkZE1hcmtl
cigqcmVwbGFjZW1lbnRSYW5nZSwgbWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBs
aWVkQWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkpOwotfQotCiBi
b29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVU
eXBpbmdJZkFwcHJvcHJpYXRlKCkKIHsKICAgICBpZiAoIW1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUg
fHwgIW1faXNBY3RpdmUpCkBAIC00NDksMTEgKzQwNCw2IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0
aW9uCiAgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKIH0KIAotQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQoKQotewotICAgIHJldHVybiBt
X2ZyYW1lLnBhZ2UoKSA/IG1fZnJhbWUucGFnZSgpLT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKSA6
IG51bGxwdHI7Ci19Ci0KIEVkaXRvckNsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
ZWRpdG9yQ2xpZW50KCkKIHsKICAgICByZXR1cm4gbV9mcmFtZS5wYWdlKCkgPyAmbV9mcmFtZS5w
YWdlKCktPmVkaXRvckNsaWVudCgpIDogbnVsbHB0cjsKQEAgLTYwNywxNCArNTU3LDc3IEBAIGJv
b2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQo
Y29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5h
dGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlKQorI2VuZGlmIC8vIFVTRShBVVRPQ09SUkVD
VElPTl9QQU5FTCkKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKSB8fCBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCisKK0FsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKIHsKKyAgICByZXR1cm4gbV9m
cmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBhZ2UoKS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkgOiBu
dWxscHRyOworfQogCitTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya2VyRGVz
Y3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0
ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkK
K3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgaWYgKGFsdGVybmF0aXZlVGV4
dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbiAmJiBhbHRlcm5hdGl2ZVRleHRU
eXBlICE9IEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMgJiYgKG1hcmtl
clR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1hcmtlclR5cGUgPT0gRG9j
dW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQpKQogICAgICAgICByZXR1cm4gbV9vcmlnaW5hbFRl
eHQ7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhbHRlcm5hdGl2ZVRleHRUeXBlKTsKKyAgICBV
TlVTRURfUEFSQU0obWFya2VyVHlwZSk7CisjZW5kaWYKICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIH0KIAordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZl
VGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZl
LCBBbHRlcm5hdGl2ZVRleHRUeXBlIGFsdGVybmF0aXZlVHlwZSwgT3B0aW9uU2V0PERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc1RvQWRkKQoreworICAgIGF1dG8gcGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKKworICAg
IHNldFN0YXJ0KHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24ucHRyKCksIHN0YXJ0
T2ZQYXJhZ3JhcGgocmFuZ2Uuc3RhcnRQb3NpdGlvbigpKSk7CisgICAgc2V0RW5kKHBhcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24ucHRyKCksIGVuZE9mUGFyYWdyYXBoKHJhbmdlLmVu
ZFBvc2l0aW9uKCkpKTsKKworICAgIC8vIEFmdGVyIHdlIHJlcGxhY2UgdGhlIHdvcmQgYXQgcmFu
Z2UgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIHdlIG5lZWQgdG8gYWRkIG1hcmtlcnMgdG8gdGhhdCBy
YW5nZS4KKyAgICAvLyBIb3dldmVyLCBvbmNlIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLCB0
aGUgdmFsdWUgb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgaXMgbm90IHZhbGlkIGFueW1vcmUuCisg
ICAgLy8gU28gYmVmb3JlIHdlIGNhcnJ5IG91dCB0aGUgcmVwbGFjZW1lbnQsIHdlIG5lZWQgdG8g
c3RvcmUgdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlCisgICAgLy8g
cmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHBhcmFncmFw
aC4gV2UgdXNlIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoCisgICAgLy8gdG8gc3Rv
cmUgdGhpcyB2YWx1ZS4gSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgb2Zmc2V0LCB3ZSBuZWVkIHRv
IGZpcnN0IGNyZWF0ZSBhIHJhbmdlCisgICAgLy8gd2hpY2ggc3BhbnMgZnJvbSB0aGUgc3RhcnQg
b2YgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2
ZS4KKyAgICBhdXRvIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJh
bmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250
YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5z
dGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0
UG9zaXRpb24oKSk7CisKKyAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRl
cm5hdGl2ZSA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKKyAgICBpZiAoIXN0YXJ0UG9zaXRpb25P
ZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gc2V0RW5kUmVzdWx0ID0gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhB
c1JhbmdlLT5zZXRFbmQoKnN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRh
aW5lck5vZGUoKSwgc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29tcHV0ZU9m
ZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICBpZiAoc2V0RW5kUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9u
IG9mIGF1dG9jb3JyZWN0aW9uIHNvIHRoYXQgd2UgY2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJl
cGxhY2VtZW50IHRvb2sgcGxhY2UuCisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFy
YWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJ
blBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOworCisgICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5j
ZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFs
IHJhbmdlIGFyb3VuZC4KKyAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UuY2xv
bmVSYW5nZSgpOworCisgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3RO
b2RlKCk7CisgICAgaW50IHBhcmFncmFwaFN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKFJhbmdlOjpjcmVhdGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAm
cGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKSwgcGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOwor
ICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2
ZSwgYWx0ZXJuYXRpdmUpLT5hcHBseSgpOworICAgIC8vIFJlY2FsY3VsYXRlIHByYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBt
b2RpZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9yaWdpbmFsIHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUzMTUgQnVn
emlsbGE6IDg5NTI2CisgICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3RO
b2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4LCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFw
aCArIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRFbmQodXBk
YXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNl
bWVudFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdl
Q29udGFpbmluZ0NvcnJlY3Rpb24sIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoLCBh
bHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAgU3RyaW5nIG5ld1RleHQgPSBwbGFpblRleHQocmVw
bGFjZW1lbnRSYW5nZS5nZXQoKSk7CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgcmVwbGFjZW1l
bnQgc3VjY2VlZGVkLgorICAgIGlmIChuZXdUZXh0ICE9IGFsdGVybmF0aXZlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSByZXBsYWNl
bWVudFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2VycygpOworCisgICAg
Zm9yIChhdXRvIG1hcmtlclR5cGUgOiBtYXJrZXJUeXBlc1RvQWRkKQorICAgICAgICBtYXJrZXJz
LmFkZE1hcmtlcigqcmVwbGFjZW1lbnRSYW5nZSwgbWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRp
b25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkp
OworfQorCiAjZW5kaWYKIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnRE
aWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5oCmluZGV4IDE3M2M5MDlmMGMzLi4yNzAyMWVjNzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKQEAgLTExNSwxNSArMTE1
LDEyIEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFN0cmluZyBkaXNtaXNzU29vbihSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKLSAgICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVU
ZXh0VG9SYW5nZShjb25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVy
bmF0aXZlVGV4dFR5cGUsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4pOwog
ICAgIHZvaWQgdGltZXJGaXJlZCgpOwogICAgIHZvaWQgcmVjb3JkU3BlbGxjaGVja2VyUmVzcG9u
c2VGb3JNb2RpZmllZENvcnJlY3Rpb24oUmFuZ2UmIHJhbmdlT2ZDb3JyZWN0aW9uLCBjb25zdCBT
dHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKLSAgICBTdHJpbmcg
bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4
dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKIAogICAgIGJvb2wgc2hvdWxkU3Rh
cnRUaW1lckZvcihjb25zdCBEb2N1bWVudE1hcmtlciYsIGludCBlbmRPZmZzZXQpIGNvbnN0Owog
ICAgIGJvb2wgcmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXIm
LCBjb25zdCBQb3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24pOwogCi0gICAgQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKICAgICBFZGl0b3JDbGllbnQqIGVk
aXRvckNsaWVudCgpOwogICAgIAogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigp
OwpAQCAtMTQxLDYgKzEzOCwxMSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX29yaWdpbmFsU3Ry
aW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbjsKICAgICBQb3NpdGlvbiBtX3Bvc2l0aW9u
Rm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbjsKICNlbmRpZgorI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisgICAgU3RyaW5nIG1h
cmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRU
eXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgdm9pZCBhcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBBbHRlcm5hdGl2ZVRl
eHRUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KTsKKyAgICBBbHRl
cm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCgpOworI2VuZGlmCiAKICAg
ICBGcmFtZSYgbV9mcmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZmZjU0NzBkZjc5Li4xMmEwMGU4ZWU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9y
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBhcnQgMworCisgICAgICAgIE1vdmUgY29kZSB0aGF0IHdhcyBndWFy
ZGVkIHVuZGVyIFBMQVRGT1JNKE1BQykgb3V0c2lkZSBvZiB0aGF0IGd1YXJkIHNvIHRoYXQgd2Ug
Y29tcGlsZSBpdAorICAgICAgICBzbyBsb25nIGFzIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KSBpcyBlbmFibGVkLgorCisgICAgICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9E
SUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwor
ICAgICAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQg
Y2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCisgICAgICAgIHRvIGRv
IHNvLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisKIDIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYTNjZWRmNTkwYTIuLmI0ZGNi
ZWJmZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC01NCwxMyArNTQs
MTMgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JK
Q19DTEFTUyBOU01lbnU7CiBPQkpDX0NMQVNTIE5TU2V0OworT0JKQ19DTEFTUyBOU1RleHRBbHRl
cm5hdGl2ZXM7CiBPQkpDX0NMQVNTIFVJR2VzdHVyZVJlY29nbml6ZXI7CiBPQkpDX0NMQVNTIFdL
RHJhd2luZ1ZpZXc7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYg
VVNFKEFQUEtJVCkKIE9CSkNfQ0xBU1MgV0tWaWV3OwotT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5h
dGl2ZXM7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA5NWY4NWY0NmZhOC4uMzc3MDgzN2RkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODM1NSw2ICs4MzU1LDI1IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKQogCiAjZW5kaWYKIAor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHBh
Z2VDbGllbnQoKS5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92
ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAg
IHBhZ2VDbGllbnQoKS5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4
dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwYWdl
Q2xpZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpKTsKK30KKwor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdWJzdGl0
dXRpb25zUGFuZWxJc1Nob3dpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTgzOTIsMjMgKzg0MTEsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0
KHJlc3VsdCkpOwogfQogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi12b2lkIFdl
YlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KQotewotICAgIHBhZ2VDbGllbnQoKS5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3Vu
ZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQotewotICAgIHBhZ2VDbGllbnQoKS5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
ZGljdGF0aW9uQ29udGV4dCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihwYWdlQ2xpZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNv
bnRleHQpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQogewogICAgIHBhZ2VD
bGllbnQoKS5zZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZWRpdGFibGVFbGVtZW50SXNGb2N1
c2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzFlMGQwZDZm
OTguLjQzMTBhZDc1Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjA3MSw2ICsyMDcxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnQoKTsKICNlbmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYpOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0dXRp
b25zUGFuZWxJc1Nob3dpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKGludDMyX3QgcGFuZWxUeXBlLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKQEAgLTIwNzgsMTIg
KzIwODQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
aW50MzJfdCByZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAgICAg
dm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKTsKIAotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHZvaWQgc2hvd0Rp
Y3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKLSAgICB2b2lkIHJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKLSAg
ICB2b2lkIGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSNlbmRpZgotCiAg
ICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCk7CiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2E4NDA2ZDYyMWYu
Ljk5OGFhOWM5MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDMKKwor
ICAgICAgICBHdWFyZCBjb2RlIHRoYXQgcmVxdWlyZXMgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KSB0byBiZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIC1fc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZl
VUkKKyAgICAgICAgY2FsbHMgLWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0LCBidXQgdGhl
IGxhdHRlciBpcyBvbmx5IGNvbXBpbGVkIGluIHdoZW4gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQorICAgICAgICBpcyBlbmFibGVkLgorCisgICAgICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5h
YmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24n
dCBiZWluZworICAgICAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1
YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCisgICAg
ICAgIHRvIGRvIHNvLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCiAyMDE5LTA5
LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0
IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyODk3OWU4YTZmNS4uNmM4YjQ5
ZmFlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTk0NTQsOSArOTQ1NCwxMSBAQCAtICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzOihWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JgogCiAtICh2b2lkKV9z
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3Vu
ZGluZ0JveE9mRGljdGF0ZWRUZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3Rh
dGlvbkNvbnRleHQKIHsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgX3ByaXZh
dGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5zaG93QWx0ZXJuYXRpdmVzKHNlbGYs
IFtzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzpib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0
XSwgZGljdGF0aW9uQ29udGV4dCwgXihOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSkgewog
ICAgICAgICBbc2VsZiBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZEFsdGVy
bmF0aXZlXTsKICAgICB9KTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9yZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKLS0gCjIuMjQuMSAoQXBwbGUg
R2l0LTEyNikKCg==
</data>
<flag name="review"
          id="408284"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392887</attachid>
            <date>2020-03-07 13:41:24 -0800</date>
            <delta_ts>2020-03-07 16:19:03 -0800</delta_ts>
            <desc>Part 4: Implement -insertText:alternatives:style:</desc>
            <filename>Part4.patch</filename>
            <type>text/plain</type>
            <size>3163</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAxNmI1NzliMTg0OTFhMjA1OTJhNTQ3ZTU3ZWUwZjU3OTU5MjdlN2ZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTM6MzE6NTMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDQKClRoaXMgcGF0Y2ggd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBNb3Jn
YW4gV2luZXIuIEkganVzdCBzaW1wbGlmaWVkIGl0IGEgYml0IGFuZCBmaXhlZCBzb21lCmZvcm1h
dHRpbmcgaXNzdWVzIHRvIGNvbmZvcm0gdG8gdGhlIGNvZGUgc3R5bGUgZ3VpZGVsaW5lcy4KCiog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CigtW1dLQ29udGVudFZp
ZXcgaW5zZXJ0VGV4dDphbHRlcm5hdGl2ZXM6c3R5bGU6XSk6Ci0tLQogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKysKIC4uLi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSB8IDIwICsrKysrKysrKysr
KysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MTJhMDBlOGVlNDQuLjNiNWZkNGQ4YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIw
LTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCA0CisKKyAgICAgICAg
VGhpcyBwYXRjaCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IE1vcmdhbiBXaW5lci4gSSBqdXN0
IHNpbXBsaWZpZWQgaXQgYSBiaXQgYW5kIGZpeGVkIHNvbWUKKyAgICAgICAgZm9ybWF0dGluZyBp
c3N1ZXMgdG8gY29uZm9ybSB0byB0aGUgY29kZSBzdHlsZSBndWlkZWxpbmVzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dDphbHRlcm5hdGl2ZXM6c3R5bGU6XSk6CisKIDIwMjAt
MDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCBiNWYwZTY1NmU5Zi4uNGQzMDM2N2IyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTY1
LDYgKzE2NSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ub3VjaEFjdGlvbi5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoTElOS19QUkVWSUVXKSAm
JiBVU0UoVUlDT05URVhUTUVOVSkKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYmtpdFNob3dM
aW5rUHJldmlld3NQcmVmZXJlbmNlS2V5ID0gQCJXZWJLaXRTaG93TGlua1ByZXZpZXdzIjsKICNl
bmRpZgpAQCAtNDc0Miw2ICs0NzQ2LDIyIEBAIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcg
KilhU3RyaW5nVmFsdWUKICAgICBfcGFnZS0+aW5zZXJ0VGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworLSAodm9pZClpbnNlcnRUZXh0OihOU1N0cmluZyAq
KWFTdHJpbmdWYWx1ZSBhbHRlcm5hdGl2ZXM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5h
dGl2ZXMgc3R5bGU6KFVJVGV4dEFsdGVybmF0aXZlU3R5bGUpc3R5bGUKK3sKKyAgICBpZiAoIWFs
dGVybmF0aXZlcy5jb3VudCkKKyAgICAgICAgW3NlbGYgaW5zZXJ0VGV4dDphU3RyaW5nVmFsdWVd
OworICAgIGVsc2UgeworICAgICAgICBCT09MIGlzTG93Q29uZmlkZW5jZSA9IHN0eWxlID09IFVJ
VGV4dEFsdGVybmF0aXZlU3R5bGVMb3dDb25maWRlbmNlOworICAgICAgICBhdXRvIHRleHRBbHRl
cm5hdGl2ZXMgPSBhZG9wdE5TKFtbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFBy
aW1hcnlTdHJpbmc6YVN0cmluZ1ZhbHVlIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMg
aXNMb3dDb25maWRlbmNlOmlzTG93Q29uZmlkZW5jZV0pOworICAgICAgICBXZWJDb3JlOjpUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgdGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlIHsgdGV4dEFsdGVy
bmF0aXZlcy5nZXQoKSwgTlNNYWtlUmFuZ2UoMCwgYVN0cmluZ1ZhbHVlLmxlbmd0aCkgfTsKKyAg
ICAgICAgX3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dEFzeW5jKGFTdHJpbmdWYWx1ZSwgV2ViS2l0
OjpFZGl0aW5nUmFuZ2UgeyB9LCB7IHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB9LCBmYWxzZSAv
KiByZWdpc3RlclVuZG9Hcm91cCAqLyk7CisgICAgfQorfQorCisjZW5kaWYKKwogLSAoQk9PTClo
YXNUZXh0CiB7CiAgICAgYXV0byYgZWRpdG9yU3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsK
LS0gCjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>
<flag name="review"
          id="408285"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392890</attachid>
            <date>2020-03-07 13:46:43 -0800</date>
            <delta_ts>2020-03-07 16:19:35 -0800</delta_ts>
            <desc>Part 5: Enable on iOS &lt;- easy review patch</desc>
            <filename>Part5.patch</filename>
            <type>text/plain</type>
            <size>1450</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA3MmQ0Njc5ODljNTg3NjBmYTM3NmE3YmIxN2QxYzhlN2Y3MTQ0MjliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDcgTWFyIDIwMjAgMTM6NDU6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBbaU9TXSBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpQYXJ0IDUKCkVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1Mu
CgoqIHd0Zi9QbGF0Zm9ybVVzZS5oOgotLS0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAg
fCAxMyArKysrKysrKysrKysrCiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIHwgIDMgLS0t
CiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA5YTAxMDRhMzJmNS4uMDA2ZTcyMTJiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMt
MDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIElt
cGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDUKKworICAgICAgICBFbmFi
bGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtVXNlLmg6CisKIDIwMTktMDktMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3Qg
ZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggMDAxMTAyMTEzODYuLmQyYzA2NTM0MGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTI3MSw5ICsyNzEsNiBAQAogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjZGVmaW5lIFVTRV9NRURJQVJFTU9URSAxCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JN
KE1BQykKICNkZWZpbmUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgMQogI2VuZGlmCiAKLS0g
CjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>
<flag name="review"
          id="408288"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392891</attachid>
            <date>2020-03-07 13:48:19 -0800</date>
            <delta_ts>2020-03-07 16:19:55 -0800</delta_ts>
            <desc>[Just for bots] All in one patch</desc>
            <filename>AllInOneForTheBots.diff</filename>
            <type>text/plain</type>
            <size>79339</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOWEwMTA0YTMyZjUuLjAwNmU3MjEyYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIw
LTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCA1CisKKyAgICAgICAg
RW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFs
eXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDAwMTEwMjExMzg2Li5kMmMwNjUz
NDBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0yNzEsOSArMjcxLDYgQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogI2RlZmluZSBVU0VfTUVESUFSRU1PVEUgMQotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShNQUMpCiAjZGVmaW5lIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOTljNzU4MmVhNzQuLjdlM2UwYmQ3MjE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODUgQEAKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJu
YXRpdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
YXJ0IDMKKworICAgICAgICBTZXBhcmF0ZSBjb2RlIHRoYXQgaXMgYWN0dWFsbHkgVVNFKEFVVE9D
T1JSRUNUSU9OX1BBTkVMKS1zcGVjaWZpYyBmcm9tIGNvZGUgdGhhdCBjYW4gYWxzbworICAgICAg
ICBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgd2l0aCBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykg
ZW5hYmxlZC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFU
SU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAgICAg
ICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5n
ZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQorICAgICAgICB0byBkbyBzby4K
KworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IE1hcmsgVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tIGFzIEBuby11bmlmeSB0byBmaXggYnVpbGQgYnJlYWthZ2Ugd2hlbgorICAgICAgICBh
IHVuaWZpZWQgc291cmNlIGZpbGUgaW5jbHVkZXMgYm90aCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW0gYW5kIGEgZmlsZSB0aGF0IHVsdGltYXRlbHkKKyAgICAgICAgaW5jbHVkZXMgTGVuZ3Ro
Qm94LmggKGUuZy4gV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbSku
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQorICAgICAgICB1bHRpbWF0ZWx5IGluY2x1ZGVz
IFNGTlRMYXlvdXRUeXBlcy5oLCB3aGljaCBkZWZpbmVzIGEgRml4ZWQgdHlwZSB0aGF0IGNvbmZs
aWN0cyB3aXRoIGVudW1lcmF0b3IKKyAgICAgICAgRml4ZWQgKHBhcnQgb2YgdGhlIExlbmd0aFR5
cGUgZW51bWVyYXRpb24pIGRlZmluZWQgaW4gTGVuZ3RoLmguIElkZWFsbHkgdGhlIExlbmd0aFR5
cGUgZW51bWVyYXRpb24KKyAgICAgICAgd291bGQgYmUgYW4gZW51bSBjbGFzcyBvciBzY29wZWQg
dG8gTGVuZ3RoIHRvIGF2b2lkIHRoaXMgYW1iaWd1aXR5LiBUaGlzIHdvdWxkIGJlIGEgYmlnIGNo
YW5nZSB0byBkbworICAgICAgICBhbmQgc28gZm9yIG5vdyBJIGFtIGZpeGluZyB0aGUgYnVpbGQg
YnJlYWthZ2UgdXNpbmcgQG5vLXVuaWZ5LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSB0byB0aGUgcHJv
amVjdCBub3cgdGhhdAorICAgICAgICBpdCBpcyBleGNsdWRlZCBmcm9tIHRoZSB1bmlmaWVkIGJ1
aWxkLgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5h
dGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVU
ZXh0VG9SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
Lmg6CisKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDIK
KworICAgICAgICBJbmNsdWRlIFVJS2l0U1BJLmggaW4gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lm1tIHRvIGdldCB0aGUgZGVmaW5pdGlvbiBvZiBOU1RleHRBbHRlcm5hdGl2ZXMKKyAgICAgICAg
d2hlbiBidWlsZGluZyBmb3IgaU9TLiBBbHNvIHdoaWxlIEkgYW0gaGVyZSwgZml4IHVwIHNvbWUg
Y29kZSBzdHlsZSBpc3N1ZXMgYW5kIHVzZSB1bmlmb3JtCisgICAgICAgIGluaXRpYWxpemVyIHN5
bnRheC4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlKToKKworMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlv
biBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBhcnQgMQorCisgICAgICAgIFJlbmFtZSBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIue2gsIG1tfSB0byBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci57aCwgbW19CisgICAgICAgIGFzIGl0IGNhbiBiZSBzaGFyZWQgYnkgYm90aCBN
YWMgYW5kIGlPUy4gSSBhbHNvIHRvb2sgdGhpcyBvcHBvcnR1bml0eSB0byBkbyBzb21lIHZlcnkg
bWlub3IgbW9kZXJuaXphdGlvbgorICAgICAgICBhbmQgY2xlYW51cCB0byB0aGVzZSBmaWxlczog
dXNlID1kZWZhdWx0IGNvbnN0cnVjdG9ycyBhbmQgcHV0IHRoZSAqIG9uIHRoZSByaWdodCBzaWRl
IGZvciBPYmplY3RpdmUtQyB0eXBlcy4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVu
YWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29k
ZSBpc24ndCBiZWluZyBjb21waWxlIG9uIGl0LgorICAgICAgICBJIHdpbGwgZG8gdGhhdCBpbiBh
IHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRv
IGRvIHNvLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0
ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xlYXIpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFj
Y2VwdGVkQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKwogMjAyMC0wMy0w
NiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCBkNDEzZDZjNGIyYy4uODQ3MTgzZGNkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9u
IGFsdGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXhwb3NlIHNvbWUgbW9yZSBTUEkuCisKKyAgICAgICAgKiBwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20g
WGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TQXR0
cmlidXRlZFN0cmluZ1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNB
dHRyaWJ1dGVkU3RyaW5nU1BJLmgKaW5kZXggMGZmMzM0NTE1ZTEuLjMxMjIzMjU1MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJp
bmdTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0
ZWRTdHJpbmdTUEkuaApAQCAtOTUsNiArOTUsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoVUlGb3Vu
ZGF0aW9uLCBOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlLCBOU1N0cmluZyAqKQog
I2RlZmluZSBOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlIGdldE5TQmFja2dyb3Vu
ZENvbG9yRG9jdW1lbnRBdHRyaWJ1dGUoKQogU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlv
biwgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgTlNTdHJpbmcgKikKICNkZWZp
bmUgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSBnZXROU01hcmtlZENsYXVzZVNl
Z21lbnRBdHRyaWJ1dGVOYW1lKCkKK1NPRlRfTElOS19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5T
VGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsIE5TU3RyaW5nICopCisjZGVmaW5lIE5TVGV4
dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUgZ2V0TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRl
TmFtZSgpCiAKIC8vIFdlIGRvbid0IHNvZnRsaW5rIE5TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1l
IGJlY2F1c2UgVUlGb3VuZGF0aW9uIHN0b3BwZWQgZXhwb3J0aW5nIGl0LgogLy8gVGhpcyBhdHRy
aWJ1dGUgaXMgYmVpbmcgZGVwcmVjYXRlZCBhdCB0aGUgQVBJIGxldmVsLCBidXQgaW50ZXJuYWxs
eSBVSUZvdW5kYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lv
cy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgK
aW5kZXggNGI2YWZmMjM2MTUuLmI4YmUwNTg5ZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMzIsNiArMzIsNyBAQCBXVEZfRVhURVJOX0NfRU5ECiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2ltcG9ydCA8VUlLaXQvTlNQYXJhZ3JhcGhT
dHlsZV9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KICNp
bXBvcnQgPFVJS2l0L05TVGV4dEF0dGFjaG1lbnRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQv
TlNUZXh0TGlzdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvblNjZW5lQ29uc3RhbnRz
Lmg+CkBAIC05OCw2ICs5OSwxNSBAQCB0eXBlZGVmIGVudW0gewogLSAoTlNTdHJpbmcgKiltYXJr
ZXJGb3JJdGVtTnVtYmVyOihOU0ludGVnZXIpaXRlbU51bTsKIEBlbmQKIAorQGludGVyZmFjZSBO
U1RleHRBbHRlcm5hdGl2ZXMgOiBOU09iamVjdAorLSAoaWQpaW5pdFdpdGhQcmltYXJ5U3RyaW5n
OihOU1N0cmluZyAqKXByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOihOU0FycmF5PE5T
U3RyaW5nICo+ICopYWx0ZXJuYXRpdmVTdHJpbmdzOworLSAoaWQpaW5pdFdpdGhQcmltYXJ5U3Ry
aW5nOihOU1N0cmluZyAqKXByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOihOU0FycmF5
PE5TU3RyaW5nICo+ICopYWx0ZXJuYXRpdmVTdHJpbmdzIGlzTG93Q29uZmlkZW5jZTooQk9PTCls
b3dDb25maWRlbmNlOworCitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqcHJpbWFyeVN0
cmluZzsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmFsdGVybmF0
aXZlU3RyaW5nczsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNMb3dDb25maWRlbmNlOwor
QGVuZAorCiBAaW50ZXJmYWNlIFVJQXBwbGljYXRpb24gKCkKIC0gKEJPT0wpX2lzQ2xhc3NpYzsK
ICsgKFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlKV9jbGFzc2ljTW9kZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDRhMDkyZDg4ZmY4Li5mODNlYWNkOTRmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC03OSw2ICs3OSw4IEBAIGRvbS9pb3MvVG91Y2hFdmVudHMuY3BwCiBl
ZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0Yu
Y3BwCiAKK2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0K
K2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCiBlZGl0aW5nL2Nv
Y29hL0F1dG9maWxsRWxlbWVudHMuY3BwCiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0K
IGVkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtOTQsMTEgKzk2LDEwIEBAIGVk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCiBlZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmNwcAogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCiAKLWVkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxv
b2t1cExlZ2FjeS5tbQogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCiBlZGl0aW5nL21hYy9GcmFt
ZVNlbGVjdGlvbk1hYy5tbQotZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
CitlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gQG5vLXVuaWZ5CiBlZGl0
aW5nL21hYy9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbQogCiBmaWxlYXBpL0ZpbGVDb2Nv
YS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk3MWUwNTFiOWUzLi44NGNlYTMxZDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIzOSw2ICs0MjM5LDcg
QEAKIAkJQ0UxQTUwMUYyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUE1MDFEMjJE
NTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTUzMjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsKKwkJQ0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8qIEFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ2NDI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTE2
OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNUZBMjU1MjA5RTQ4QzUwMDUxRDcwMCAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFNUZBMjUzMjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRTZEQURGQTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTZEQURGODFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQyNTIsNiArNDI1Myw3IEBACiAJCUNFN0IyREIzMTU4NkFCQUQw
MDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREFGMTU4NkFCQUQwMDk4QjNGQSAv
KiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0U3RTE3ODMxQzgzQTQ5MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUhh
c2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0Ux
NzgyMUM4M0E0OTEwMEFEMDZBRiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0U4OEVFMjYyNDE0
NDY3QjAwN0YyOUMyIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIyMTU4NkFCQUQwMDk4QjNG
QSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi87IH07CiAJCUNFQTI4NDY2MjE0MUU4
NDkwMEU0MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NjAxRUJFMTRCM0I5QUQwMDEyQzBGRSAv
KiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbSAqLzsgfTsKIAkJQ0VCQjhDMzMyMDc4NkRDQjAw
MDM5NTQ3IC8qIEZldGNoSWRpb21zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRUJCOEMzMTIwNzg2RENCMDAwMzk1NDcgLyogRmV0Y2hJZGlvbXMuaCAq
LzsgfTsKIAkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZD
MzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxNDIsNiArMTQxNDQsOCBA
QAogCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTQ1OTQ2NTI0
MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8q
IENvbG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFNTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvbG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxMjg0LDYgKzIxMjg4LDEwIEBACiAJCTdDM0U1MTA3MThERjhGMTIwMEMx
MTJGNyAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0U0NTk0NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyLmggKi8sCisJCQkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICovLAorCQkJCUNFN0IyREFGMTU4NkFCQUQwMDk4
QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRTdCMkRCMDE1
ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovLAogCQkJ
CTVDQ0MyNzA3MjJENTNCNjkwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmNwcCAqLywKIAkJ
CQk1Q0NDMjcwNjIyRDUzQjY4MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50cy5oICovLAogCQkJ
CUM1MjI3REVGMUMzQzZERDcwMEY1RUQ1NCAvKiBEYXRhRGV0ZWN0aW9uLmggKi8sCkBAIC0yNzMx
Nyw4ICsyNzMyNSw2IEBACiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNFN0IyREFGMTU4NkFC
QUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKLQkJCQlDRTdC
MkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICov
LAogCQkJCTkzN0ZGM0Q0MUExMDEyRDYwMDhFQkEzMSAvKiBEaWN0aW9uYXJ5TG9va3VwLmggKi8s
CiAJCQkJNDQyOTU2Q0EyMThBNkQzMDAwODBEQjU0IC8qIERpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0gKi8sCiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLywK
QEAgLTMxOTA2LDYgKzMxOTEyLDcgQEAKIAkJCQlFNEJCRUQwRjE0RjQwMjVEMDAzRjBCOTggLyog
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0JB
QUU1ODE5ODBEMUREMDA1REZFNzEgLyogUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTRDNzY3NTBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzJBREEzODE5N0Y0
N0I5MDBGQzUwMUUgLyogUHJvdGVjdGlvblNwYWNlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQTA1MjU2MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUY4RTExQTEyNTY1OTI2MDAyMzBGRjcgLyogUHJveHlTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMzM3NDEsNiArMzM3NDgsNyBAQAogCQkJCUE4MzNDN0NBMEEyQ0Yw
NkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMTY5MkREMjIz
RDIzQUJEMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZF
NzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0U4OEVFMjYyNDE0NDY3QjAwN0YyOUMyIC8qIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTNGMTRFRjFDRjgwMDI2QTJE
RCAvKiBUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDIxNEVGMUNGODAw
MjZBMkREIC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2
OEZCQzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXIuY3BwCmluZGV4IDI5MjZlZTU3NDRhLi5lYzIyMTZkN2FkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC00Nyw2
ICs0NywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKworI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisKK2NvbnN0ZXhwciBP
cHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzRm9yQXBwbGll
ZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKK3sKKyAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsQ2hlY2tpbmdFeGVtcHRpb247Cit9CisKKyNlbmRpZgorCiAjaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogCiBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBdXRvY29ycmVjdGlvbigpCkBAIC01OSwxMSArNjksNiBA
QCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFy
a2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIHsgRG9jdW1lbnRNYXJrZXI6OlJl
cGxhY2VtZW50LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB9OwogfQog
Ci1zdGF0aWMgaW5saW5lIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFy
a2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUoKQotewotICAgIHJldHVybiBE
b2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbjsKLX0KLQogc3RhdGljIGJvb2wg
bWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1
bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAgIGlmIChtYXJrZXJzLmlzRW1wdHkoKSkKQEAg
LTE4Nyw1NiArMTkyLDYgQEAgU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21p
c3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5h
dGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5h
dGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5cGUsIE9wdGlvblNldDxEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNUb0FkZCkKLXsKLSAgICBhdXRvIHBh
cmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS5jbG9uZVJhbmdlKCk7Ci0K
LSAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigpLCBz
dGFydE9mUGFyYWdyYXBoKHJhbmdlLnN0YXJ0UG9zaXRpb24oKSkpOwotICAgIHNldEVuZChwYXJh
Z3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigpLCBlbmRPZlBhcmFncmFwaChyYW5n
ZS5lbmRQb3NpdGlvbigpKSk7Ci0KLSAgICAvLyBBZnRlciB3ZSByZXBsYWNlIHRoZSB3b3JkIGF0
IHJhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlLCB3ZSBuZWVkIHRvIGFkZCBtYXJrZXJzIHRvIHRo
YXQgcmFuZ2UuCi0gICAgLy8gSG93ZXZlciwgb25jZSB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFj
ZSwgdGhlIHZhbHVlIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlIGlzIG5vdCB2YWxpZCBhbnltb3Jl
LgotICAgIC8vIFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQgdGhlIHJlcGxhY2VtZW50LCB3ZSBuZWVk
IHRvIHN0b3JlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZQotICAg
IC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJh
Z3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaAotICAgIC8vIHRv
IHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVl
ZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQotICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0
YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJu
YXRpdmUuCi0gICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0
Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
bi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5z
dGFydFBvc2l0aW9uKCkpOwotCi0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRo
QWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7Ci0gICAgaWYgKCFzdGFydFBvc2l0
aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBhdXRvIHNldEVuZFJlc3VsdCA9IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdy
YXBoQXNSYW5nZS0+c2V0RW5kKCpzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5j
b250YWluZXJOb2RlKCksIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1
dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7Ci0gICAgaWYgKHNldEVuZFJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGFrZSBub3RlIG9mIHRoZSBsb2Nh
dGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNhbiBhZGQgbWFya2VyIGFmdGVyIHRo
ZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJ
blBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0cigpKTsKLQotICAgIC8vIENsb25lIHRoZSByYW5nZSwg
c2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkgd2FudCB0byBrZWVwIHRoZSBvcmln
aW5hbCByYW5nZSBhcm91bmQuCi0gICAgYXV0byByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LmNsb25lUmFuZ2UoKTsKLQotICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gcGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5y
b290Tm9kZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwg
MCwgJnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0T2Zmc2V0KCkpLnB0cigp
KTsKLSAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VXaXRoQWx0ZXJu
YXRpdmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKLSAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1
IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZy
b290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJh
Z3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNl
dEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCp1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJh
Z3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBTdHJpbmcgbmV3VGV4dCA9IHBsYWlu
VGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKLQotICAgIC8vIENoZWNrIHRvIHNlZSBpZiBy
ZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKG5ld1RleHQgIT0gYWx0ZXJuYXRpdmUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9
IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCk7
Ci0KLSAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9BZGQpCi0gICAgICAg
IG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJhbmdlLCBtYXJrZXJUeXBlLCBtYXJrZXJE
ZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJr
ZXJUeXBlKSk7Ci19Ci0KIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBdXRv
Y29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKQogewogICAgIGlmICghbV9yYW5n
ZVdpdGhBbHRlcm5hdGl2ZSB8fCAhbV9pc0FjdGl2ZSkKQEAgLTQ0OSwxMSArNDA0LDYgQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKEVk
aXRDb21tYW5kQ29tcG9zaXRpb24KICAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZSwgRG9jdW1l
bnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCi1BbHRlcm5hdGl2ZVRleHRD
bGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCgp
Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWUucGFnZSgpID8gbV9mcmFtZS5wYWdlKCktPmFsdGVybmF0
aXZlVGV4dENsaWVudCgpIDogbnVsbHB0cjsKLX0KLQogRWRpdG9yQ2xpZW50KiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAgIHJldHVybiBtX2ZyYW1lLnBh
Z2UoKSA/ICZtX2ZyYW1lLnBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCkgOiBudWxscHRyOwpAQCAtNjA3
LDE0ICs1NTcsNzcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9N
YXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorI2VuZGlmIC8vIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKSB8fCBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisKK0FsdGVy
bmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBhZ2Uo
KS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkgOiBudWxscHRyOworfQorCiBTdHJpbmcgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRp
dmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKIHsKLQorI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKICAgICBpZiAoYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRU
eXBlUmV2ZXJzaW9uICYmIGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlw
ZURpY3RhdGlvbkFsdGVybmF0aXZlcyAmJiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6
UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3Rl
ZCkpCiAgICAgICAgIHJldHVybiBtX29yaWdpbmFsVGV4dDsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGFsdGVybmF0aXZlVGV4dFR5cGUpOworICAgIFVOVVNFRF9QQVJBTShtYXJrZXJUeXBlKTsK
KyNlbmRpZgogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYg
cmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0
ZXJuYXRpdmVUeXBlLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtl
clR5cGVzVG9BZGQpCit7CisgICAgYXV0byBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uID0gcmFuZ2UuY2xvbmVSYW5nZSgpOworCisgICAgc2V0U3RhcnQocGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5wdHIoKSwgc3RhcnRPZlBhcmFncmFwaChyYW5nZS5zdGFydFBv
c2l0aW9uKCkpKTsKKyAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
bi5wdHIoKSwgZW5kT2ZQYXJhZ3JhcGgocmFuZ2UuZW5kUG9zaXRpb24oKSkpOworCisgICAgLy8g
QWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSwg
d2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgorICAgIC8vIEhvd2V2ZXIsIG9u
Y2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdpdGhBbHRl
cm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KKyAgICAvLyBTbyBiZWZvcmUgd2UgY2Fycnkg
b3V0IHRoZSByZXBsYWNlbWVudCwgd2UgbmVlZCB0byBzdG9yZSB0aGUgc3RhcnQgcG9zaXRpb24g
b2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUKKyAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9z
aXRpb24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGgKKyAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0
byBvYnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKKyAg
ICAvLyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0
IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgorICAgIGF1dG8gY29ycmVjdGlvblN0
YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKworICAgIFBvc2l0
aW9uIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3Np
dGlvbigpOworICAgIGlmICghc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29u
dGFpbmVyTm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBzZXRFbmRSZXN1bHQgPSBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNldEVuZCgqc3RhcnRQb3Np
dGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpLCBzdGFydFBvc2l0aW9u
T2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOwor
ICAgIGlmIChzZXRFbmRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhh
dCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KKyAg
ICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5wdHIoKSk7
CisKKyAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRo
b2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgorICAgIGF1dG8g
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CisKKyAgICBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0
YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBpbnQgcGFyYWdyYXBo
U3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFuZ2U6OmNyZWF0ZShyb290
Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CisgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRlcm5hdGl2ZSktPmFwcGx5KCk7
CisgICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBz
aW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhh
dCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBs
b25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTogODk1MjYKKyAgICBhdXRvIHVw
ZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXgs
IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkp
OworICAgIGlmICghdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnN1YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29y
cmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAg
ICBTdHJpbmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKKwor
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCisgICAgaWYgKG5l
d1RleHQgIT0gYWx0ZXJuYXRpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCkuZG9jdW1lbnQoKS5tYXJrZXJzKCk7CisKKyAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1h
cmtlclR5cGVzVG9BZGQpCisgICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKCpyZXBsYWNlbWVudFJh
bmdlLCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRl
eHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7Cit9CisKICNlbmRpZgogCiBib29sIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMTczYzkwOWYwYzMuLjI3
MDIxZWM3NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaApAQCAtMTE1LDE1ICsxMTUsMTIgQEAgcHJpdmF0ZToKICAgICB9Owog
CiAgICAgU3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQpOwotICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiwg
Y29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSwgT3B0aW9uU2V0
PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPik7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAg
ICAgdm9pZCByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihS
YW5nZSYgcmFuZ2VPZkNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBT
dHJpbmcmIGNvcnJlY3Rpb24pOwotICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxp
ZWRBbHRlcm5hdGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUpOwogCiAgICAgYm9vbCBzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0IERvY3VtZW50
TWFya2VyJiwgaW50IGVuZE9mZnNldCkgY29uc3Q7CiAgICAgYm9vbCByZXNwb25kVG9NYXJrZXJB
dEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYsIGNvbnN0IFBvc2l0aW9uJiBlbmRPZldv
cmRQb3NpdGlvbik7CiAKLSAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4
dENsaWVudCgpOwogICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50KCk7CiAgICAgCiAgICAg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCk7CkBAIC0xNDEsNiArMTM4LDExIEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fb3JpZ2luYWxTdHJpbmdGb3JMYXN0RGVsZXRlZEF1dG9jb3Jy
ZWN0aW9uOwogICAgIFBvc2l0aW9uIG1fcG9zaXRpb25Gb3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0
aW9uOwogI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIHx8IFVTRShBVVRP
Q09SUkVDVElPTl9QQU5FTCkKKyAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVk
QWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlKTsKKyAgICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYsIGNvbnN0IFN0cmluZyYsIEFsdGVybmF0aXZlVGV4dFR5cGUsIE9wdGlvblNldDxEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZT4pOworICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KCk7CisjZW5kaWYKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIuaApzaW1pbGFyaXR5IGluZGV4IDYxJQpjb3B5IGZyb20gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmNvcHkgdG8gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oCmlu
ZGV4IGE2Zjc3NjkyYzAwLi4yOTc0YzMxOTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMzYg
KzI1LDM1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGFnZUNsaWVudC5oIgotI2lu
Y2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQogCi1AY2xhc3MgV0tXZWJWaWV3OworI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNpbXBvcnQg
PHd0Zi9IYXNoTWFwLmg+CiAKLW5hbWVzcGFjZSBBUEkgewotY2xhc3MgQXR0YWNobWVudDsKLX0K
K09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGFnZUNsaWVudEltcGxDb2NvYSA6IHB1YmxpYyBQ
YWdlQ2xpZW50IHsKK2NsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlQ2xpZW50SW1wbENv
Y29hKFdLV2ViVmlldyAqd2ViVmlldykKLSAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykgeyB9
Ci0gICAgdm9pZCBpc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKSBmaW5hbDsKLSAgICB2b2lkIGlz
UGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKTsKIAotICAgIGJvb2wgc2Nyb2xsaW5nVXBkYXRl
c0Rpc2FibGVkRm9yVGVzdGluZygpIGZpbmFsOworICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZl
cyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwogCi0jaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnQoQVBJOjpBdHRh
Y2htZW50JiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVtb3Zl
QXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEludmFsaWRh
dGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKSBmaW5hbDsKLSAgICBOU0ZpbGVX
cmFwcGVyICphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBjb25zdCBmaW5hbDsKLSAgICBOU1Nl
dCAqc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QgZmluYWw7Ci0jZW5kaWYK
KyAgICB2b2lkIGNsZWFyKCk7CiAKLXByb3RlY3RlZDoKLSAgICBXZWFrT2JqQ1B0cjxXS1dlYlZp
ZXc+IG1fd2ViVmlldzsKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKmFsdGVybmF0aXZlc0ZvckNv
bnRleHQodWludDY0X3QgY29udGV4dCk7CisKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0Zv
ckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2
NF90IGludmFsaWRDb250ZXh0ID0gMDsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPj4gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXA7
CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0Kc2ltaWxhcml0eSBpbmRleCA1
MyUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbQpjb3B5IHRvIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYWVhNThmODk0ZjguLjJjOTYyNmFhMjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMzIgKzIyLDUyIEBACiAgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwogI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCIKKyNpbXBvcnQg
IkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgiCiAKICNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKEFQ
UEtpdCkKICNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbGlmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlcywg
TlNSYW5nZSBhUmFuZ2UpCi06IHJhbmdlKGFSYW5nZSkKLSwgYWx0ZXJuYXRpdmVzKGFuQWx0ZXJu
YXRpdmVzKQorQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OkFsdGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCitBbHRlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlcjo6fkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgPSBkZWZhdWx0
OworCit1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMp
CiB7CisgICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGFs
dGVybmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gaW52
YWxpZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCkpCisg
ICAgICAgIHJldHVybiBjb250ZXh0OworICAgIGF1dG8gcmVzdWx0ID0gbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0dXJuIHJlc3VsdC5p
c05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OwogfQogCi12b2lkIGNvbGxlY3RE
aWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0
b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRpdmVzKSB7Ci0gICAgTlNSYW5n
ZSBlZmZlY3RpdmVSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwotICAgIE5TVUludGVnZXIgbGVu
Z3RoID0gW3N0cmluZyBsZW5ndGhdOwotICAgIGRvIHsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDplZmZlY3RpdmVSYW5nZS5sb2Nh
dGlvbiBlZmZlY3RpdmVSYW5nZTomZWZmZWN0aXZlUmFuZ2VdOwotICAgICAgICBpZiAoIWF0dHJp
YnV0ZXMpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0
ZXh0QWx0ZXJuYXRpdmVzID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVGV4dEFsdGVybmF0
aXZlc0F0dHJpYnV0ZU5hbWVdOwotICAgICAgICBpZiAodGV4dEFsdGVybmF0aXZlcykKLSAgICAg
ICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKHRleHRB
bHRlcm5hdGl2ZXMsIGVmZmVjdGl2ZVJhbmdlKSk7Ci0gICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxv
Y2F0aW9uID0gTlNNYXhSYW5nZShlZmZlY3RpdmVSYW5nZSk7Ci0gICAgfSB3aGlsZSAoZWZmZWN0
aXZlUmFuZ2UubG9jYXRpb24gPCBsZW5ndGgpOworTlNUZXh0QWx0ZXJuYXRpdmVzICpBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0KQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5nZXQoY29u
dGV4dCkuZ2V0KCk7CiB9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6
OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICBt
X2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7CiB9Ci0jZW5kaWYKKwordm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIG1fYWx0
ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5o
CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI5YzVh
OGRhN2VlLi5jY2ZmZDg4OWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMjUsNDkgKzI1LDQy
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmgi
Ci0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
KworI2ltcG9ydCAiQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaCIKKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpD
X0NMQVNTIE5TVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFJlY3Q7
CisKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkg
eyB9Ci0gICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCi0gICAgV0VCQ09SRV9FWFBPUlQgdWlu
dDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+
Jik7CisgICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+Jik7IC8vIFJldHVybnMgYSBjb250ZXh0IElELgorCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0Fs
dGVybmF0aXZlcyhOU1ZpZXcqLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZQcmltYXJ5
U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJp
bmcqKSk7CisKKyAgICB1c2luZyBBY2NlcHRhbmNlSGFuZGxlciA9IHZvaWQgKF4pKE5TU3RyaW5n
ICopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcgKiwg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29u
dGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIpOworCiAgICAgdm9pZCBXRUJDT1JFX0VYUE9SVCByZW1v
dmVBbHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4dCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyog
YWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVz
Kik7Ci0KKyNpZiBVU0UoQVBQS0lUKQorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2
ZShOU1N0cmluZyAqLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMgKik7CiAg
ICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKLSAgICBjbGFzcyBBbGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgcHVibGljOgotICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgeyB9
Ci0gICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0
QWx0ZXJuYXRpdmVzPiYpOwotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIE5TVGV4dEFs
dGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KTsKLSAg
ICAgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQp
OwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaW52YWxpZENvbnRleHQgPSAwOwotICAg
IHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPE5T
VGV4dEFsdGVybmF0aXZlcz4+IEhhc2hNYXBUeXBlOwotICAgICAgICBIYXNoTWFwVHlwZSBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcDsKLSAgICB9OwotCi0gICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxOU1ZpZXc+IG1f
dmlldzsKKyNlbmRpZgorICAgIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1fY29u
dGV4dENvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbQpzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KcmVuYW1lIHRvIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCmlu
ZGV4IDNmMWJhNTBhN2NmLi4wZjgwOTk0ZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywz
OSArMjcsMTkgQEAKICNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIgogCiAj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CisKKyNpZiBVU0UoQVBQS2l0KQogI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2Vy
Lmg+CiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjaW1wb3J0IDxBcHBL
aXQvTlNWaWV3Lmg+CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8cGFsL3Nw
aS9pb3MvVUlLaXRTUEkuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVpbnQ2
NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2
ZXM+JiBhbHRlcm5hdGl2ZXMpCi17Ci0gICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7Ci0gICAgaWYgKGFsdGVybmF0aXZlc0ZvckNv
bnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0OwotCi0gICAgSGFzaE1hcFR5
cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4
dCwgYWx0ZXJuYXRpdmVzKTsKLSAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0
IDogaW52YWxpZENvbnRleHQ7Ci19Ci0KLU5TVGV4dEFsdGVybmF0aXZlcyogQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphbHRlcm5h
dGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIG1fYWx0ZXJu
YXRpdmVzT2JqZWN0TWFwLmdldChjb250ZXh0KS5nZXQoKTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92
ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKLXsKLSAgICBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7Ci19Ci0KLXZvaWQgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpjbGVhcigp
Ci17Ci0gICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKLX0KLQogdWludDY0X3Qg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKIHsKICAgICByZXR1cm4gbV9j
b250ZXh0Q29udHJvbGxlci5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKQEAgLTY3LDEw
ICs0NywxMSBAQCB1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVy
bmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZQogCiBWZWN0b3I8U3RyaW5nPiBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dCkKIHsKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIHRleHRBbHRlcm5hdGl2ZXMgPSBt
X2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxl
ci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFs
dGVybmF0aXZlU3RyaW5nczsKLSAgICBmb3IgKE5TU3RyaW5nKiBzdHJpbmcgaW4gdGV4dEFsdGVy
bmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCi0gICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy5h
cHBlbmQoc3RyaW5nKTsKKyAgICBhbHRlcm5hdGl2ZVN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSh0ZXh0QWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncy5jb3VudCk7CisgICAgZm9y
IChOU1N0cmluZyAqc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdz
KQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7CiAg
ICAgcmV0dXJuIGFsdGVybmF0aXZlU3RyaW5nczsKIH0KIApAQCAtNzksNDIgKzYwLDU1IEBAIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcigpCiAgICAgcmV0dXJuIG1fY29u
dGV4dENvbnRyb2xsZXIuY2xlYXIoKTsKIH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiB2aWV3LCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nLCB1aW50NjRfdCBjb250ZXh0LCB2b2lkKF5hY2NlcHRh
bmNlSGFuZGxlcikoTlNTdHJpbmcqKSkKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
OjpzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyAqdmlldywgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgQWNjZXB0YW5jZUhhbmRsZXIg
YWNjZXB0YW5jZUhhbmRsZXIpCiB7CisjaWYgVVNFKEFQUEtJVCkKICAgICBkaXNtaXNzQWx0ZXJu
YXRpdmVzKCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZpZXcg
PSB2aWV3OwotICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0
Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOworCisgICAgTlNUZXh0
QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0
aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93
Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3Nl
cyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3Ry
aW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3Vu
ZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmluZykgeworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rp
b25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5
U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdz
IGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3Om1fdmlldy5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICphY2NlcHRlZFN0cmluZykgewogICAg
ICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKICAgICAgICAgICAgIGhhbmRsZUFjY2VwdGVkQWx0
ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CiAgICAgICAg
ICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmluZyk7CiAgICAgICAgIH0KICAgICB9
XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZpZXcpOworICAgIFVOVVNFRF9QQVJBTShib3Vu
ZGluZ0JveE9mUHJpbWFyeVN0cmluZyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAg
IFVOVVNFRF9QQVJBTShhY2NlcHRhbmNlSGFuZGxlcik7CisjZW5kaWYKIH0KIAotdm9pZCBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJp
bmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0
aXZlcyogYWx0ZXJuYXRpdmVzKQorI2lmIFVTRShBUFBLSVQpCisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nICphY2Nl
cHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMgKmFs
dGVybmF0aXZlcykKIHsKICAgICBbYWx0ZXJuYXRpdmVzIG5vdGVTZWxlY3RlZEFsdGVybmF0aXZl
U3RyaW5nOmFjY2VwdGVkQWx0ZXJuYXRpdmVdOwogICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVt
b3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKLSAgICBtX3ZpZXcuY2xlYXIoKTsK
KyAgICBtX3ZpZXcgPSBudWxscHRyOwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCiB7Ci0gICAgaWYgKCFtX3ZpZXcpCi0gICAgICAg
IHJldHVybjsKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlz
c0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07CisgICAgaWYgKG1fdmll
dykKKyAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3ND
b3JyZWN0aW9uSW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0KCldOwogfQogCisjZW5kaWYKKwog
dm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50
NjRfdCBjb250ZXh0KQogewogICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRp
dmVzRm9yQ29udGV4dChjb250ZXh0KTsKIH0KLX0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CiAjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KaW5kZXgg
YWVhNThmODk0ZjguLjY1MDlkZjQ0M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYsMTkgQEAK
ICNpbXBvcnQgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgogCiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCisKKyNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L05TVGV4
dEFsdGVybmF0aXZlcy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lv
cy9VSUtpdFNQSS5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRp
dmVzKiBhbkFsdGVybmF0aXZlcywgTlNSYW5nZSBhUmFuZ2UpCi06IHJhbmdlKGFSYW5nZSkKLSwg
YWx0ZXJuYXRpdmVzKGFuQWx0ZXJuYXRpdmVzKQorVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzICphbkFsdGVybmF0aXZl
cywgTlNSYW5nZSBhUmFuZ2UpCisgICAgOiByYW5nZSB7IGFSYW5nZSB9CisgICAgLCBhbHRlcm5h
dGl2ZXMgeyBhbkFsdGVybmF0aXZlcyB9CiB7CiB9CiAKQEAgLTQ5LDUgKzU1LDcgQEAgdm9pZCBj
b2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZywgVmVjdG9yPFRleHRBbHQKICAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01h
eFJhbmdlKGVmZmVjdGl2ZVJhbmdlKTsKICAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2Nh
dGlvbiA8IGxlbmd0aCk7CiB9Ci19Ci0jZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJhODk0
YzYwMTIxLi4zYjVmZDRkOGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMjAtMDMt
MDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIElt
cGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDQKKworICAgICAgICBUaGlz
IHBhdGNoIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgTW9yZ2FuIFdpbmVyLiBJIGp1c3Qgc2lt
cGxpZmllZCBpdCBhIGJpdCBhbmQgZml4ZWQgc29tZQorICAgICAgICBmb3JtYXR0aW5nIGlzc3Vl
cyB0byBjb25mb3JtIHRvIHRoZSBjb2RlIHN0eWxlIGd1aWRlbGluZXMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBpbnNlcnRUZXh0OmFsdGVybmF0aXZlczpzdHlsZTpdKToKKworMjAyMC0wMy0w
NyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1w
bGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMworCisgICAgICAgIE1vdmUg
Y29kZSB0aGF0IHdhcyBndWFyZGVkIHVuZGVyIFBMQVRGT1JNKE1BQykgb3V0c2lkZSBvZiB0aGF0
IGd1YXJkIHNvIHRoYXQgd2UgY29tcGlsZSBpdAorICAgICAgICBzbyBsb25nIGFzIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKSBpcyBlbmFibGVkLgorCisgICAgICAgIE5vdGUgdGhhdCBJIGhh
dmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMg
Y29kZSBpc24ndCBiZWluZworICAgICAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhh
dCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBs
YWNlCisgICAgICAgIHRvIGRvIHNvLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDg3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQYXJ0IDIKKworICAgICAgICBNb3ZlIGluc2VydERpY3RhdGVkVGV4dEFzeW5j
KCkgZnJvbSB0aGUgTWFjLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGZpbGVzIHRvIENvY29hLXNw
ZWNpZmljCisgICAgICAgIGltcGxlbWVudGF0aW9uIGZpbGVzIGFzIGl0IGNhbiBiZSBzaGFyZWQg
YnkgYm90aCBNYWMgYW5kIGlPUy4gSSBkaWQgdmVyeSBtaW5vciBDKysgbW9kZXJuaXphdGlvbjoK
KyAgICAgICAganVzdCBtb3JlIHVzZXMgb2YgYXV0byBhbmQgdW5pZm9ybSBpbml0aWFsaXplciBz
eW50YXguCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElP
Tl9BTFRFUk5BVElWRVMgb24gaU9TLCB5ZXQuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcgY29t
cGlsZWQKKyAgICAgICAgZm9yIGlPUywgeWV0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVl
bnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgor
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgorCisyMDIwLTAzLTA3ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAxCisKKyAgICAgICAgTW92ZSBzb21lIG9mIHRo
ZSBQYWdlQ2xpZW50TWFjIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMgY29kZSB0byBQYWdlQ2xpZW50
SW1wbENvY29hIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIGJlIHNoYXJlZCB3aXRoIGlPUy4KKwor
ICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFU
SVZFUyBvbiBpT1MsIHlldC4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZworICAgICAgICBjb21w
aWxlIG9uIGl0LiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0
ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlIHRvIGRvIHNvLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IERlbGV0ZWQ7IG1vdmVkIHRvIGJl
IG91dC1vZi1saW5lIHRvIGF2b2lkCisgICAgICAgIG5lZWRpbmcgdG8gI2luY2x1ZGUgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUuIERlY2xhcmUgb3V0LW9mLWxp
bmUgZGVzdHJ1Y3RvcgorICAgICAgICBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29hKTogTW92ZWQgZnJvbSBQYWdl
Q2xpZW50SW1wbENvY29hLmguCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6
OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjphZGRE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBNb3ZlZCBmcm9tIFBhZ2VDbGllbnRJbXBsTWFjLm1tLgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKTogQWRkZWQ7
IHN0dWIgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xv
c2VkKTogRGVsZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0
aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VD
bGllbnRJbXBsQ29jb2EoKS4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VD
bG9zZWQpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJl
IHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQoKQorICAgICAgICBzbyBpdCBjYW4g
YmUgc2hhcmVkIGFuZCBtb2RpZmllZCB0aGlzIGZ1bmN0aW9uIHRvIGNhbGwgdGhlIGJhc2UgY2xh
c3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp+UGFn
ZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1tLgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERlbGV0
ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0byBQ
YWdlQ2xpZW50SW1wbENvY29hLm1tLgorCiAyMDIwLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCBy
ZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBhNmY3NzY5MmMwMC4uY2IwZWNk
MWRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGll
bnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLmgKQEAgLTI2LDIwICsyNiwyOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha09iakNQdHIuaD4KIAorQGNsYXNzIE5TVGV4dEFsdGVybmF0aXZlczsKIEBjbGFzcyBX
S1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIH0KIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworfQor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZUNsaWVudEltcGxDb2NvYSA6IHB1Ymxp
YyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBQYWdlQ2xpZW50SW1wbENvY29hKFdLV2ViVmll
dyAqd2ViVmlldykKLSAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykgeyB9CisgICAgUGFnZUNs
aWVudEltcGxDb2NvYShXS1dlYlZpZXcgKik7CisgICAgdmlydHVhbCB+UGFnZUNsaWVudEltcGxD
b2NvYSgpOworCisgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGlz
UGxheWluZ0F1ZGlvV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UoKSBmaW5hbDsKIApAQCAtNTMsOCArNjIsMTcgQEAgcHVibGljOgogICAgIE5TU2V0
ICpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdCBmaW5hbDsKICNlbmRpZgog
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdWludDY0X3QgYWRkRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JikgZmlu
YWw7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCkgZmluYWw7CisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOworI2VuZGlmCisKIHByb3RlY3Rl
ZDoKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IG1fd2ViVmlldzsKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKyNlbmRp
ZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFn
ZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EubW0KaW5kZXggZTdkNzM4MmRiNWIuLjQwOTQ5YzJmNDA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KQEAgLTI5LDkgKzI5LDI0IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nLmgiCisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1BhZ2VDbGll
bnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAg
IDogbV93ZWJWaWV3IHsgd2ViVmlldyB9CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7IG1ha2VVbmlxdWU8QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyPigpIH0KKyNlbmRpZgoreworfQorCitQYWdlQ2xpZW50SW1w
bENvY29hOjp+UGFnZUNsaWVudEltcGxDb2NvYSgpID0gZGVmYXVsdDsKKwogdm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKQogewogICAgIFttX3dlYlZp
ZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5Ok5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihf
aXNQbGF5aW5nQXVkaW8pKV07CkBAIC04MCw1ICs5NSwzMiBAQCBOU1NldCAqUGFnZUNsaWVudElt
cGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKIH0KIAogI2Vu
ZGlmCisKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFnZUNsb3NlZCgpCit7CisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXItPmNsZWFyKCk7CisjZW5kaWYKK30KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbENvY29hOjphZGREaWN0YXRpb25BbHRlcm5hdGl2
ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sK
KyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZl
cyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9u
Q29udGV4dCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVy
biBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChk
aWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisKICAgICAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggYTM2ZWVk
MjFjYjQuLmY4ZGZiZDM0MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiQVBJ
QXR0YWNobWVudC5oIgogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkRhdGFEZXRl
Y3Rpb25SZXN1bHQuaCIKKyNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJM
b2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJy
b3dzaW5nU1BJLmgiCkBAIC00NCw2ICs0NSwxMCBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0xNjEsNiArMTY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBE
cmFnSXRlbSYgZHJhZ0l0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGEKICAgICBwYWdlQ2xp
ZW50KCkuc3RhcnREcmFnKGRyYWdJdGVtLCBkcmFnSW1hZ2VIYW5kbGUpOwogfQogCisvLyBGSVhN
RTogTW92ZSB0aGVzZSBmdW5jdGlvbnMgdG8gV2ViUGFnZVByb3h5SU9TLm1tLgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShjb25zdCBTdHJpbmcmLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90
KQpAQCAtMjI1LDYgKzIzMSwzNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25h
cnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKQogICAgIAogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlv
bigpLCBtX3dlYlBhZ2VJRCk7CiB9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRl
ZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3Rh
dGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKK3sKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4g
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzOworICAgIGZvciAoY29uc3QgYXV0byYgYWx0ZXJuYXRpdmVX
aXRoUmFuZ2UgOiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpIHsKKyAgICAgICAgdWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IHBhZ2VDbGllbnQoKS5hZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRp
Y3RhdGlvbkNvbnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5k
KERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9u
LCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsK
KyAgICB9CisKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgeworICAg
ICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lzdGVy
VW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7CisKKyAgICAgICAgaW5zZXJ0VGV4dEFzeW5j
KHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2Vy
dERpY3RhdGVkVGV4dEFzeW5jIHsgdGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCB9LCBtX3dlYlBhZ2VJRCk7CisjZWxzZQorICAg
IEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91
cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOworCisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOworI2VuZGlmCit9CiAgICAgCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGUz
ZmYzMGNlODJiLi5iNGRjYmViZmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtNTQsMTMgKzU0LDEzIEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNG
aWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNNZW51OwogT0JKQ19DTEFTUyBOU1NldDsKK09CSkNf
Q0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogT0JKQ19DTEFTUyBVSUdlc3R1cmVSZWNvZ25pemVy
OwogT0JKQ19DTEFTUyBXS0RyYXdpbmdWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RS
ZWdpc3RyeTsKIAogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIFdLVmlldzsKLU9CSkNfQ0xB
U1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMzUzLDYgKzM1Mywx
MyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdlYkNvcmU6OkZvY3Vz
RGlyZWN0aW9uKSB7IH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZp
cnR1YWwgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50
NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1
c0FuZFdpbmRvd0hhc0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKSA9IDA7CkBAIC0zNzYsMTggKzM4MywxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBOU1ZpZXcgKmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCkg
PSAwOwogICAgIHZpcnR1YWwgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJl
Z2lzdHJ5KCkgPSAwOwogCi0jaWYgVVNFKEFQUEtJVCkKICAgICB2aXJ0dWFsIHZvaWQgaW50cmlu
c2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50cmluc2lj
Q29udGVudFNpemUpID0gMDsKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICB2
aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwotI2VuZGlmIC8vIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQorCiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKLSNlbmRpZiAv
LyBVU0UoSU5TRVJUSU9OX1VORE9fR1JPVVBJTkcpCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyNl
bmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29s
KSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBlMjhhNTAwNDVhYS4uMzc3MDgzN2RkMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODM1NSw2ICs4MzU1LDI1IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKQogCiAj
ZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQor
eworICAgIHBhZ2VDbGllbnQoKS5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0Jv
eE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KQoreworICAgIHBhZ2VDbGllbnQoKS5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0
aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihwYWdlQ2xpZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQp
KTsKK30KKworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTgzOTIsMjMgKzg0MTEsNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1
bHQpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KHJlc3VsdCkpOwogfQogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KQotewotICAgIHBhZ2VDbGllbnQoKS5zaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKLX0KLQot
dm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KQotewotICAgIHBhZ2VDbGllbnQoKS5yZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihwYWdlQ2xpZW50KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRp
Y3RhdGlvbkNvbnRleHQpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQogewog
ICAgIHBhZ2VDbGllbnQoKS5zZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKTsKQEAgLTg1MzksNiArODU0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
aGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpKTsKIH0KIAorLy8gRklY
TUU6IE1vdmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBhZ2VQcm94eUNvY29hLm1tLgogI2lmIFBM
QVRGT1JNKENPQ09BKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjg4
MTlhOTUxMDguLjQzMTBhZDc1Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtODUyLDcgKzg1MiwxMCBAQCBwdWJsaWM6CiAgICAgQ0FMYXllciAqYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRUZXh0QXN5bmMo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIEluc2VydFRleHRPcHRp
b25zJiYpOworCisgICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKKyAg
ICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZT4mLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKwogICAgIHZvaWQg
aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lk
IGdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhX
VEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwpAQCAtODcwLDcgKzg3Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29y
ZTo6Rm9udENoYW5nZXMmJik7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnRE
aWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
cmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7
CiAgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJp
bmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCBmb250QXRTZWxlY3Rpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJs
ZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCkBAIC0yMDY5LDYgKzIwNzEsMTIg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwog
I2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lkIHNob3dE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBy
ZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7Cisg
ICAgdm9pZCBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNob3dDb3JyZWN0aW9u
UGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwpAQCAtMjA3NiwxMiArMjA4NCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCi0jaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
SShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOwotICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOwotICAgIHZvaWQgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotI2VuZGlmCi0KICAgICB2b2lkIHNldEVkaXRhYmxl
RWxlbWVudElzRm9jdXNlZChib29sKTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNWEz
YTdhYmY1OTcuLjk3ZjNmNWViMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMzQsNiArMzQsNyBAQAogCiBPQkpDX0NMQVNTIFdL
Q29udGVudFZpZXc7CiBPQkpDX0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKK09CSkNfQ0xBU1Mg
TlNUZXh0QWx0ZXJuYXRpdmVzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIERP
TVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwpAQCAtNzcsNyArNzgsNiBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCkg
b3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKICAgICB2
b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29sVGlwQ2hh
bmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYpIG92ZXJyaWRlOwpA
QCAtMjYyLDYgKzI2MiwxMCBAQCBwcml2YXRlOgogICAgIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+
IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29n
bml6ZXIqKSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRh
aW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDg5MjM5Zjc5
NGYzLi4yZmNlMGM1NTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjMzLDExICsyMzMsNiBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpncHVQcm9jZXNzQ3Jhc2hlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cGFnZUNsb3NlZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CkBAIC05NjMsNiArOTU4LDE1IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9j
b3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmCiAgICAgW21f
Y29udGVudFZpZXcgX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dDpjb250ZXh0XTsKIH0KIAor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1aW50
NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggYjVmMGU2NTZlOWYuLjRkMzAzNjdiMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTE2
NSw2ICsxNjUsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvVG91Y2hBY3Rpb24uaD4KICNlbmRpZgog
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxXZWJDb3JlL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgorI2VuZGlmCisKICNpZiBIQVZFKExJTktfUFJFVklFVykg
JiYgVVNFKFVJQ09OVEVYVE1FTlUpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJraXRTaG93
TGlua1ByZXZpZXdzUHJlZmVyZW5jZUtleSA9IEAiV2ViS2l0U2hvd0xpbmtQcmV2aWV3cyI7CiAj
ZW5kaWYKQEAgLTQ3NDIsNiArNDc0NiwyMiBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5n
ICopYVN0cmluZ1ZhbHVlCiAgICAgX3BhZ2UtPmluc2VydFRleHRBc3luYyhhU3RyaW5nVmFsdWUs
IFdlYktpdDo6RWRpdGluZ1JhbmdlKCksIFdURk1vdmUob3B0aW9ucykpOwogfQogCisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKy0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcg
KilhU3RyaW5nVmFsdWUgYWx0ZXJuYXRpdmVzOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWx0ZXJu
YXRpdmVzIHN0eWxlOihVSVRleHRBbHRlcm5hdGl2ZVN0eWxlKXN0eWxlCit7CisgICAgaWYgKCFh
bHRlcm5hdGl2ZXMuY291bnQpCisgICAgICAgIFtzZWxmIGluc2VydFRleHQ6YVN0cmluZ1ZhbHVl
XTsKKyAgICBlbHNlIHsKKyAgICAgICAgQk9PTCBpc0xvd0NvbmZpZGVuY2UgPSBzdHlsZSA9PSBV
SVRleHRBbHRlcm5hdGl2ZVN0eWxlTG93Q29uZmlkZW5jZTsKKyAgICAgICAgYXV0byB0ZXh0QWx0
ZXJuYXRpdmVzID0gYWRvcHROUyhbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQ
cmltYXJ5U3RyaW5nOmFTdHJpbmdWYWx1ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVz
IGlzTG93Q29uZmlkZW5jZTppc0xvd0NvbmZpZGVuY2VdKTsKKyAgICAgICAgV2ViQ29yZTo6VGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlIHRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7IHRleHRBbHRl
cm5hdGl2ZXMuZ2V0KCksIE5TTWFrZVJhbmdlKDAsIGFTdHJpbmdWYWx1ZS5sZW5ndGgpIH07Cisg
ICAgICAgIF9wYWdlLT5pbnNlcnREaWN0YXRlZFRleHRBc3luYyhhU3RyaW5nVmFsdWUsIFdlYktp
dDo6RWRpdGluZ1JhbmdlIHsgfSwgeyB0ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgfSwgZmFsc2Ug
LyogcmVnaXN0ZXJVbmRvR3JvdXAgKi8pOworICAgIH0KK30KKworI2VuZGlmCisKIC0gKEJPT0wp
aGFzVGV4dAogewogICAgIGF1dG8mIGVkaXRvclN0YXRlID0gX3BhZ2UtPmVkaXRvclN0YXRlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmlu
ZGV4IDBkY2E4NzA2ZDQyLi5mMGNjMzhhNDg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01QYXN0
ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBAY2xhc3MgV0tF
ZGl0b3JVbmRvVGFyZ2V0OwogQGNsYXNzIFdLVmlldzsKQEAgLTE4MCwxMSArMTgwLDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGludHJpbnNpY0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGludHJpbnNpY0NvbnRlbnRTaXplKSBvdmVycmlkZTsKIAogI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAjZW5kaWYK
KwogICAgIHZvaWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpIG92ZXJyaWRlOwog
CiAjaWYgVVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQpAQCAtMjY3LDkgKzI2NSw2IEBAIHBy
aXZhdGU6CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIENvcnJlY3Rpb25QYW5l
bCBtX2NvcnJlY3Rpb25QYW5lbDsKICNlbmRpZgotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwotI2VuZGlmCiAKICAgICBib29s
IG1fc2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXMgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRl
eCBhZjM3NmFlNjUzYS4uMDMxOTJkNzZhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTc5LDEzICs3OSwxMCBAQAogI2ltcG9y
dCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVD
QUxheWVyRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKLSNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KLSNlbmRpZgotCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlIDxXZWJDb3JlL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNlbmRpZgpAQCAtMTAzLDIwICsxMDAsMTYgQEAgQGVuZAog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKE5TVmlldyogdmlldywgV0tXZWJWaWV3
ICp3ZWJWaWV3KQorUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKE5TVmlldyAqdmlldywg
V0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogUGFnZUNsaWVudEltcGxDb2NvYSh3ZWJWaWV3KQog
ICAgICwgbV92aWV3KHZpZXcpCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAg
LCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcj4oKSkKLSNlbmRpZgogewogfQogCi1QYWdlQ2xpZW50SW1wbDo6flBhZ2VD
bGllbnRJbXBsKCkKLXsKLX0KK1BhZ2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEltcGwoV2ViVmlld0ltcGwmIGltcGwp
CiB7CkBAIC0yNjYsOSArMjU5LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZEV4
aXQoKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCiB7CiAgICAgbV9pbXBsLT5w
YWdlQ2xvc2VkKCk7Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmNsZWFyKCk7Ci0jZW5kaWYKKyAgICBQYWdlQ2xpZW50
SW1wbENvY29hOjpwYWdlQ2xvc2VkKCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJl
bGF1bmNoUHJvY2VzcygpCkBAIC02ODQsMTUgKzY3NSw2IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6
OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJp
bmcpCiB9CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLXVpbnQ2NF90IFBhZ2VD
bGllbnRJbXBsOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4
dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKLXsKLSAgICByZXR1cm4gbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOwotfQotCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkKLXsKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+
cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOwotfQogCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
CiB7CkBAIC03MDMsMTAgKzY4NSw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpCiAgICAgfSk7
CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBhZ2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKLXsKLSAgICByZXR1cm4gbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4
dCk7Ci19CiAjZW5kaWYKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RWRpdGFibGVFbGVtZW50
SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggOGFkMmJhMWU4OTYuLmI3
MjA5MTQ2ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTE4NCwzNyArMTg0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5G
cmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSks
IG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4
dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVu
dFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQotewotI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXM7Ci0KLSAgICBmb3IgKGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgOiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFu
Z2UpIHsKLSAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IHBhZ2VDbGllbnQoKS5h
ZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVz
KTsKLSAgICAgICAgaWYgKGRpY3RhdGlvbkNvbnRleHQpCi0gICAgICAgICAgICBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJh
bmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRp
Y3RhdGlvbkNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVz
LmlzRW1wdHkoKSkgewotICAgICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwotICAgICAg
ICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICAg
ICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9u
cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFu
Z2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3dlYlBhZ2VJ
RCk7Ci0jZWxzZQotICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwotCi0gICAgaW5zZXJ0VGV4dEFz
eW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOwotI2VuZGlmCi19
Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDljNGY2YzBjZjEyLi4xY2FmNmE4ZDVkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQpAQCAtMTg5LDYgKzE4OSwyNCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6
OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAg
IHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
ZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJV
bmRvR3JvdXApCit7CisgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yIHsgZnJhbWUg
fTsKKworICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3Vu
ZCkgeworICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFu
Z2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKKyAgICAgICAgaWYgKHJlcGxhY2Vt
ZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSB9
KTsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJVbmRvR3JvdXApCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcgeyB9KTsK
KworICAgIEFTU0VSVCghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSk7CisgICAgZnJh
bWUuZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZl
TG9jYXRpb25zLCBudWxscHRyIC8qIHRyaWdnZXJpbmdFdmVudCAqLyk7Cit9CisKIHZvaWQgV2Vi
UGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4g
cmVtb3RlVG9rZW4pCiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFUb2tlbiA9IElQQzo6
RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9r
ZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcwN2ZjNmJkYTQyLi5hOTFlYmI4MTNhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODQ0LDEwICs4
NDQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50
KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25z
dCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CisKKyAgICB2b2lkIGluc2VydERpY3Rh
dGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBs
YWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9
IGZhbHNlKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgaW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJl
cGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3Vw
ID0gZmFsc2UpOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb250QXRT
ZWxlY3Rpb24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGI0YWVhNzU1NTRkLi5h
MDkwOTExNWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NTIsNyArNDUyLDEwIEBAIEdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlCiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKIAogICAg
IFNldFRleHRBc3luYyhTdHJpbmcgdGV4dCkKKwogICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcg
dGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIHN0cnVj
dCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlvbnMpCisgICAgSW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNl
bWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlv
bkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKKwogICAgIEhhc01hcmtlZFRl
eHQoKSAtPiAoYm9vbCBoYXNNYXJrZWRUZXh0KSBBc3luYwogICAgIEdldE1hcmtlZFJhbmdlQXN5
bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0U2VsZWN0ZWRSYW5nZUFz
eW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNDYyLDcgKzQ2NSw2IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEluc2VydERpY3RhdGVkVGV4dEFzeW5jKFN0cmlu
ZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgVmVj
dG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMs
IGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCiAgICAgQXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAgRm9udEF0U2VsZWN0aW9uKFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDEyOWIwMWFiOTVhLi4wYTZkMzhk
YjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTMyMCwyNSArMzIwLDYgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxl
eFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGkK
ICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKLXsKLSAgICBGcmFt
ZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwotCi0gICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoZnJhbWUpOwotCi0gICAgaWYgKHJlcGxhY2Vt
ZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIFJlZlB0cjxS
YW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVw
bGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwotICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAg
ICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwotICAgIH0KLQotICAg
IGlmIChyZWdpc3RlclVuZG9Hcm91cCkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpKTsKLSAgICAKLSAgICBBU1NFUlQo
IWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwotICAgIGZyYW1lLmVkaXRvcigpLmlu
c2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbnVs
bHB0cik7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IGNhODQwNmQ2MjFmLi45OThhYTljOTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFs
dGVybmF0aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFydCAzCisKKyAgICAgICAgR3VhcmQgY29kZSB0aGF0IHJlcXVpcmVzIFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkgdG8gYmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCAtX3Nob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJCisgICAgICAgIGNhbGxzIC1oYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZl
VGV4dCwgYnV0IHRoZSBsYXR0ZXIgaXMgb25seSBjb21waWxlZCBpbiB3aGVuIFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkKKyAgICAgICAgaXMgZW5hYmxlZC4KKworICAgICAgICBOb3RlIHRoYXQg
SSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0
aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAgICAgICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRv
IHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBp
biBwbGFjZQorICAgICAgICB0byBkbyBzby4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMjg5Nzll
OGE2ZjUuLjZjOGI0OWZhZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC05NDU0LDkgKzk0NTQsMTEgQEAgLSAodm9pZClfZ2V0V2ViQ29yZURpY3Rh
dGlvbkFsdGVybmF0aXZlczooVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYK
IAogLSAodm9pZClfc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUk6KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCBmb3JEaWN0YXRpb25Db250ZXh0Oih1
aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiB7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQogICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+c2hvd0FsdGVy
bmF0aXZlcyhzZWxmLCBbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91bmRpbmdCb3hP
ZkRpY3RhdGVkVGV4dF0sIGRpY3RhdGlvbkNvbnRleHQsIF4oTlNTdHJpbmcqIGFjY2VwdGVkQWx0
ZXJuYXRpdmUpIHsKICAgICAgICAgW3NlbGYgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6
YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CiAgICAgfSk7CisjZW5kaWYKIH0KIAogLSAodm9pZClfcmVt
b3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392904</attachid>
            <date>2020-03-07 16:17:44 -0800</date>
            <delta_ts>2020-03-07 16:17:44 -0800</delta_ts>
            <desc>Part 1: Share AlternativeTextUIController – To Land</desc>
            <filename>Part1_1.patch</filename>
            <type>text/plain</type>
            <size>41667</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">Y29tbWl0IDExOGM3ZTUxZjFhN2U5Y2Q2NGRjOTVjNWQyNTEzZjEyM2JhZmYxMjcKQXV0aG9yOiBE
YW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRlOiAgIFNhdCBNYXIgNyAxNjoxMDoy
MCAyMDIwIC0wODAwCgogICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg3MjAKICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KICAgIAogICAgUmV2aWV3ZWQgYnkg
V2Vuc29uIEhzaWVoLgogICAgCiAgICBQYXJ0IDEKICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAg
ICAKICAgIFJlbmFtZSBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIue2gs
IG1tfSB0byBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci57aCwgbW19
CiAgICBhcyBpdCBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggTWFjIGFuZCBpT1MuIEkgYWxzbyB0b29r
IHRoaXMgb3Bwb3J0dW5pdHkgdG8gZG8gc29tZSB2ZXJ5IG1pbm9yIG1vZGVybml6YXRpb24KICAg
IGFuZCBjbGVhbnVwIHRvIHRoZXNlIGZpbGVzOiB1c2UgPWRlZmF1bHQgY29uc3RydWN0b3JzIGFu
ZCBwdXQgdGhlICogb24gdGhlIHJpZ2h0IHNpZGUgZm9yIE9iamVjdGl2ZS1DIHR5cGVzLgogICAg
CiAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZF
UyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKICAgIGNvbXBpbGVkIGZvciBpT1Mu
IEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhl
IGNvZGUgaXMgaW4gcGxhY2UKICAgIHRvIGRvIHNvLgogICAgCiAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CiAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKICAgICogZWRpdGlu
Zy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOgogICAgKiBlZGl0aW5n
L2NvY29hL0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tOiBBZGRlZC4KICAgIChX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVz
KToKICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCk6CiAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENv
bnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgogICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpjbGVhcik6CiAgICAqIGVkaXRpbmcvY29j
b2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaC4KICAgICogZWRp
dGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0u
CiAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2
ZXMpOgogICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRp
dmVzRm9yQ29udGV4dCk6CiAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
OjpjbGVhcik6CiAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93
QWx0ZXJuYXRpdmVzKToKICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6
OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgogICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcyk6CiAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMpOgogICAgCiAgICBTb3Vy
Y2UvV2ViQ29yZS9QQUw6CiAgICAKICAgIEV4cG9zZSBzb21lIG1vcmUgU1BJLgogICAgCiAgICAq
IHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg6CiAgICAKICAgIFNvdXJjZS9XZWJLaXQ6CiAgICAKICAg
IE1vdmUgc29tZSBvZiB0aGUgUGFnZUNsaWVudE1hYyBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzIGNv
ZGUgdG8gUGFnZUNsaWVudEltcGxDb2NvYSBzbyB0aGF0IGl0CiAgICBjYW4gYmUgc2hhcmVkIHdp
dGggaU9TLgogICAgCiAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9O
X0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKICAgIGNvbXBp
bGVkIGZvciBpT1MuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBh
ZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UKICAgIHRvIGRvIHNvLgogICAgCiAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CiAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29hKTogRGVsZXRlZDsgbW92ZWQgdG8gYmUg
b3V0LW9mLWxpbmUgdG8gYXZvaWQKICAgIG5lZWRpbmcgdG8gI2luY2x1ZGUgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUuIERlY2xhcmUgb3V0LW9mLWxpbmUgZGVz
dHJ1Y3RvcgogICAgZm9yIHRoZSBzYW1lIHJlYXNvbi4KICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW06CiAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpQ
YWdlQ2xpZW50SW1wbENvY29hKTogTW92ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbENvY29hLmguCiAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdlQ2xvc2VkKToKICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6IE1vdmVkIGZy
b20gUGFnZUNsaWVudEltcGxNYWMubW0uCiAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEaXR0by4KICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsQ29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6IERpdHRvLgogICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgogICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CiAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CiAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOiBBZGRlZDsgc3R1
YiBmdW5jdGlvbi4KICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKTogRGVs
ZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uLgogICAg
KiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CiAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW06CiAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBo
ZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoKS4KICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKTogTW92ZWQgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyIGxvZ2ljIGZyb20gaGVyZSB0byBQYWdlQ2xpZW50SW1wbENvY29hOjpwYWdl
Q2xvc2VkKCkKICAgIHNvIGl0IGNhbiBiZSBzaGFyZWQgYW5kIG1vZGlmaWVkIHRoaXMgZnVuY3Rp
b24gdG8gY2FsbCB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xp
ZW50SW1wbENvY29hLm1tLgogICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlv
bkFsdGVybmF0aXZlcyk6IERlbGV0ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0u
CiAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4KICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVkOyBtb3ZlZCB0
byBQYWdlQ2xpZW50SW1wbENvY29hLm1tLgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWM3NTgyZWE3NC4uYjVl
ZjRhODcxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0wMy0wNyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1
cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTg1NDAxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAg
IFBhcnQgMQorCisgICAgICAgIFJlbmFtZSBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIue2gsIG1tfSB0byBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci57aCwgbW19CisgICAgICAgIGFzIGl0IGNhbiBiZSBzaGFyZWQgYnkgYm90aCBNYWMgYW5k
IGlPUy4gSSBhbHNvIHRvb2sgdGhpcyBvcHBvcnR1bml0eSB0byBkbyBzb21lIHZlcnkgbWlub3Ig
bW9kZXJuaXphdGlvbgorICAgICAgICBhbmQgY2xlYW51cCB0byB0aGVzZSBmaWxlczogdXNlID1k
ZWZhdWx0IGNvbnN0cnVjdG9ycyBhbmQgcHV0IHRoZSAqIG9uIHRoZSByaWdodCBzaWRlIGZvciBP
YmplY3RpdmUtQyB0eXBlcy4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBV
U0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVp
bmcKKyAgICAgICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1
ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQorICAgICAgICB0
byBkbyBzby4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFs
dGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLmguCisgICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIubW0uCisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpoYW5kbGVB
Y2NlcHRlZEFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyk6CisKIDIwMjAtMDMt
MDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKaW5kZXggZDQxM2Q2YzRiMmMuLmZiZGQ0MDcyNzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlv
biBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODcyMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg1NDAxMTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFBhcnQgMQorCisgICAgICAg
IEV4cG9zZSBzb21lIG1vcmUgU1BJLgorCisgICAgICAgICogcGFsL3NwaS9pb3MvVUlLaXRTUEku
aDoKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDRiNmFmZjIz
NjE1Li5jODJhZDk4ODA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
aW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0
U1BJLmgKQEAgLTMyLDYgKzMyLDcgQEAgV1RGX0VYVEVSTl9DX0VORAogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKICNpbXBvcnQgPFVJS2l0L05TUGFyYWdyYXBoU3R5bGVfUHJpdmF0ZS5o
PgorI2ltcG9ydCA8VUlLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjaW1wb3J0IDxVSUtpdC9O
U1RleHRBdHRhY2htZW50X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L05TVGV4dExpc3QuaD4K
ICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25TY2VuZUNvbnN0YW50cy5oPgpAQCAtOTgsNiAr
OTksMTAgQEAgdHlwZWRlZiBlbnVtIHsKIC0gKE5TU3RyaW5nICopbWFya2VyRm9ySXRlbU51bWJl
cjooTlNJbnRlZ2VyKWl0ZW1OdW07CiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNUZXh0QWx0ZXJuYXRp
dmVzIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4g
KmFsdGVybmF0aXZlU3RyaW5nczsKK0BlbmQKKwogQGludGVyZmFjZSBVSUFwcGxpY2F0aW9uICgp
CiAtIChCT09MKV9pc0NsYXNzaWM7CiArIChVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZSlf
Y2xhc3NpY01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0YTA5MmQ4OGZmOC4uYTdl
MGZkNzgyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNzksNiArNzksOCBAQCBkb20v
aW9zL1RvdWNoRXZlbnRzLmNwcAogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCiBl
ZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAogCitlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyLm1tCitlZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbQogZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcAogZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0K
QEAgLTk0LDcgKzk2LDYgQEAgZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
IGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCiBlZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KIAotZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCiBlZGl0
aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCiBlZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0KIGVkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTcxZTA1MWI5ZTMuLjU2
MGQ3NWRlZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MjM5LDYgKzQyMzksNyBAQAogCQlDRTFBNTAxRjIyRDUzNTA5MDBD
QkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVy
SG9sZGluZ1RhbmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIx
NTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTI4NDk4NzFDQTM2MERG
MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNBMzYwREYw
MEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovOyB9Owor
CQlDRTQ1OTQ2RjI0MTIzQzk2MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
NDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
NTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENv
bG9ySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEy
NTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNkRBREZBMUM1
OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkRBREY4MUM1
OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxNDIs
NiArMTQxNDMsOCBAQAogCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
Lmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNw
cDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNDU5NDY0MjQxMjFBMDUwMDc4MDE5RiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHRlcm5h
dGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRTQ1OTQ2NTI0MTIxQTA1MDA3ODAxOUYgLyogQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0
NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU2MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xv
cklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9ySU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMjg0LDYgKzIxMjg3LDEwIEBACiAJCTdDM0U1MTA3
MThERjhGMTIwMEMxMTJGNyAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQ0U0NTk0NjQyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyLmggKi8sCisJCQkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlG
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLm1tICovLAorCQkJCUNFN0IyREFG
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKKwkJ
CQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tICovLAogCQkJCTVDQ0MyNzA3MjJENTNCNjkwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRz
LmNwcCAqLywKIAkJCQk1Q0NDMjcwNjIyRDUzQjY4MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50
cy5oICovLAogCQkJCUM1MjI3REVGMUMzQzZERDcwMEY1RUQ1NCAvKiBEYXRhRGV0ZWN0aW9uLmgg
Ki8sCkBAIC0yNzMxNyw4ICsyNzMyNCw2IEBACiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAv
KiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNF
N0IyREFGMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAq
LywKLQkJCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLm1tICovLAogCQkJCTkzN0ZGM0Q0MUExMDEyRDYwMDhFQkEzMSAvKiBEaWN0aW9uYXJ5
TG9va3VwLmggKi8sCiAJCQkJNDQyOTU2Q0EyMThBNkQzMDAwODBEQjU0IC8qIERpY3Rpb25hcnlM
b29rdXBMZWdhY3kubW0gKi8sCiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRv
ck1hYy5tbSAqLywKQEAgLTMxOTA2LDYgKzMxOTExLDcgQEAKIAkJCQlFNEJCRUQwRjE0RjQwMjVE
MDAzRjBCOTggLyogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzN0JBQUU1ODE5ODBEMUREMDA1REZFNzEgLyogUHJvdGVjdGlvblNwYWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTRDNzY3NTBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNw
YWNlQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0U0NTk0NkYyNDEyM0M5NjAwNzgwMTlGIC8q
IEFsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzJBREEzODE5N0Y0N0I5MDBGQzUwMUUgLyogUHJvdGVjdGlvblNwYWNlQ29jb2EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQTA1MjU2MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VI
YXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY4RTExQTEyNTY1OTI2MDAyMzBGRjcgLyogUHJv
eHlTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oCnNpbWlsYXJpdHkgaW5k
ZXggNjElCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50
SW1wbENvY29hLmgKY29weSB0byBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyLmgKaW5kZXggYTZmNzc2OTJjMDAuLjI5NzRjMzE5MmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwzNiArMjUsMzUgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1dlYWtPYmpDUHRyLmg+Cisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCiAKLUBjbGFzcyBXS1dlYlZpZXc7CisjaW1w
b3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KIAotbmFtZXNwYWNl
IEFQSSB7Ci1jbGFzcyBBdHRhY2htZW50OwotfQorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2
ZXM7CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQ
YWdlQ2xpZW50SW1wbENvY29hIDogcHVibGljIFBhZ2VDbGllbnQgeworY2xhc3MgQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJWaWV3ICp3ZWJWaWV3KQotICAg
ICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KSB7IH0KLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvV2ls
bENoYW5nZSgpIGZpbmFsOwotICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIH5BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigp
OwogCi0gICAgYm9vbCBzY3JvbGxpbmdVcGRhdGVzRGlzYWJsZWRGb3JUZXN0aW5nKCkgZmluYWw7
CisgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+Jik7CiAKLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQg
ZGlkSW5zZXJ0QXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYp
IGZpbmFsOwotICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0
YWNobWVudCYpIGZpbmFsOwotICAgIE5TRmlsZVdyYXBwZXIgKmFsbG9jRmlsZVdyYXBwZXJJbnN0
YW5jZSgpIGNvbnN0IGZpbmFsOwotICAgIE5TU2V0ICpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNs
YXNzZXMoKSBjb25zdCBmaW5hbDsKLSNlbmRpZgorICAgIHZvaWQgY2xlYXIoKTsKIAotcHJvdGVj
dGVkOgotICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV93ZWJWaWV3OworICAgIE5TVGV4dEFs
dGVybmF0aXZlcyAqYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KTsKKwor
ICAgIHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KTsK
KworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgaW52YWxpZENvbnRleHQgPSAwOworCitw
cml2YXRlOgorICAgIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2
ZXM+PiBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjJjOTYyNmFhMjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtMCwwICsxLDcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBbHRl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5oIgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShBUFBLaXQp
CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0FsdGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpB
bHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpID0gZGVmYXVsdDsKKworQWx0ZXJuYXRp
dmVUZXh0Q29udGV4dENvbnRyb2xsZXI6On5BbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cigpID0gZGVmYXVsdDsKKwordWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYg
YWx0ZXJuYXRpdmVzKQoreworICAgIHVpbnQ2NF90IGNvbnRleHQgPSByZWludGVycHJldF9jYXN0
PHVpbnQ2NF90PihhbHRlcm5hdGl2ZXMuZ2V0KCkpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIGludmFsaWRDb250ZXh0OworICAgIGlmIChhbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
YWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0LCBhbHRlcm5hdGl2ZXMpOworICAgIHJl
dHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQgOiBpbnZhbGlkQ29udGV4dDsKK30KKwor
TlNUZXh0QWx0ZXJuYXRpdmVzICpBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0
ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIHJldHVybiBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcC5nZXQoY29udGV4dCkuZ2V0KCk7Cit9CisKK3ZvaWQgQWx0ZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQo
dWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUo
Y29udGV4dCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNs
ZWFyKCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5jbGVhcigpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIuaApzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApyZW5h
bWUgdG8gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaAppbmRleCAyOWM1YThkYTdlZS4uY2NmZmQ4ODlkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LmgKQEAgLTI1LDQ5ICsyNSw0MiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCiAjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKIE9CSkNfQ0xBU1MgTlNUZXh0
QWx0ZXJuYXRpdmVzOwogT0JKQ19DTEFTUyBOU1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRmxvYXRSZWN0OworCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcigpIHsgfQotICAgIC8vIFJldHVybnMgYSBjb250ZXh0IElELgotICAg
IFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcigp
ID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZl
cyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOyAvLyBSZXR1cm5zIGEgY29u
dGV4dCBJRC4KKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgdm9pZCheYWNjZXB0
YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpOworCisgICAgdXNpbmcgQWNjZXB0YW5jZUhhbmRsZXIg
PSB2b2lkICheKShOU1N0cmluZyAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3dBbHRl
cm5hdGl2ZXMoTlNWaWV3ICosIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlT
dHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIEFjY2VwdGFuY2VIYW5kbGVyKTsKKwogICAgIHZvaWQg
V0VCQ09SRV9FWFBPUlQgcmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGNvbnRleHQpOworCiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1
aW50NjRfdCBjb250ZXh0KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQWx0
ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGNvbnRleHQs
IE5TVGV4dEFsdGVybmF0aXZlcyopOwotCisjaWYgVVNFKEFQUEtJVCkKKyAgICB2b2lkIGhhbmRs
ZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcgKiwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0
QWx0ZXJuYXRpdmVzICopOwogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOwogCi0gICAg
Y2xhc3MgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7Ci0gICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgQWxlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlcigpIHsgfQotICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKLSAgICAgICAgdm9pZCBjbGVhcigp
OwotICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlc0ZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dCk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4
dCh1aW50NjRfdCBjb250ZXh0KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGludmFs
aWRDb250ZXh0ID0gMDsKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+PiBIYXNoTWFwVHlwZTsKLSAgICAg
ICAgSGFzaE1hcFR5cGUgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXA7Ci0gICAgfTsKLQotICAgIEFs
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKICAgICBS
ZXRhaW5QdHI8TlNWaWV3PiBtX3ZpZXc7CisjZW5kaWYKKyAgICBBbHRlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0Kc2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZy
b20gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lm1tCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbQppbmRleCAzZjFiYTUwYTdjZi4uNTA3MmQ2YjMyYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjcsMzkgKzI3LDE5IEBACiAjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIuaCIKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCisjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorCisjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFw
cEtpdC9OU1NwZWxsQ2hlY2tlci5oPgogI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZl
cy5oPgogI2ltcG9ydCA8QXBwS2l0L05TVmlldy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CisjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi11aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5Q
dHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQotewotICAgIHVpbnQ2NF90IGNv
bnRleHQgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihhbHRlcm5hdGl2ZXMuZ2V0KCkpOwot
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGludmFsaWRDb250ZXh0OwotICAgIGlm
IChhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gY29udGV4
dDsKLQotICAgIEhhc2hNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7Ci0gICAgcmV0dXJuIHJlc3VsdC5p
c05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OwotfQotCi1OU1RleHRBbHRlcm5h
dGl2ZXMqIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQotewot
ICAgIHJldHVybiBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5nZXQoY29udGV4dCkuZ2V0KCk7Ci19
Ci0KLXZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHQpCi17Ci0gICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGNvbnRleHQpOwotfQot
Ci12b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlcjo6Y2xlYXIoKQotewotICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFy
KCk7Ci19Ci0KIHVpbnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMp
CiB7CiAgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRpdmVzKGFsdGVy
bmF0aXZlcyk7CkBAIC02NywxMCArNDcsMTEgQEAgdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGUKIAog
VmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNG
b3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCiB7Ci0gICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiB0
ZXh0QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KGNvbnRleHQpOworICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqdGV4dEFsdGVybmF0aXZlcyA9
IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmluZ3M7Ci0gICAgZm9yIChOU1N0cmluZyog
c3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzKQotICAgICAgICBh
bHRlcm5hdGl2ZVN0cmluZ3MuYXBwZW5kKHN0cmluZyk7CisgICAgYWx0ZXJuYXRpdmVTdHJpbmdz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmlu
Z3MuY291bnQpOworICAgIGZvciAoTlNTdHJpbmcgKnN0cmluZyBpbiB0ZXh0QWx0ZXJuYXRpdmVz
LmFsdGVybmF0aXZlU3RyaW5ncykKKyAgICAgICAgYWx0ZXJuYXRpdmVTdHJpbmdzLnVuY2hlY2tl
ZEFwcGVuZChzdHJpbmcpOwogICAgIHJldHVybiBhbHRlcm5hdGl2ZVN0cmluZ3M7CiB9CiAKQEAg
LTc5LDQyICs2MCw1NSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIo
KQogICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmNsZWFyKCk7CiB9CiAKLXZvaWQgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyogdmlldywg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29u
dGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpCit2b2lkIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcgKnZpZXcsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQs
IEFjY2VwdGFuY2VIYW5kbGVyIGFjY2VwdGFuY2VIYW5kbGVyKQogeworI2lmIFVTRShBUFBLSVQp
CiAgICAgZGlzbWlzc0FsdGVybmF0aXZlcygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV92aWV3ID0gdmlldzsKLSAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVy
bmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250
ZXh0KTsKKworICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0
Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghYWx0
ZXJuYXRpdmVzKQogICAgICAgICByZXR1cm47CiAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6TlNDb3JyZWN0aW9u
SW5kaWNhdG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZXMucHJpbWFyeVN0
cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncyBm
b3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcgdmlldzptX3ZpZXcuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICBb
W05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc2hvd0NvcnJlY3Rpb25JbmRpY2F0
b3JPZlR5cGU6TlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzph
bHRlcm5hdGl2ZXMucHJpbWFyeVN0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVz
LmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZlByaW1hcnlT
dHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqYWNj
ZXB0ZWRTdHJpbmcpIHsKICAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKSB7CiAgICAgICAgICAg
ICBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKGFjY2VwdGVkU3RyaW5nLCBjb250ZXh0LCBhbHRl
cm5hdGl2ZXMpOwogICAgICAgICAgICAgYWNjZXB0YW5jZUhhbmRsZXIoYWNjZXB0ZWRTdHJpbmcp
OwogICAgICAgICB9CiAgICAgfV07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aWV3KTsKKyAg
ICBVTlVTRURfUEFSQU0oYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcpOworICAgIFVOVVNFRF9Q
QVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oYWNjZXB0YW5jZUhhbmRsZXIpOworI2Vu
ZGlmCiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250
ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlcykKKyNpZiBVU0UoQVBQS0lUKQor
Cit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5h
dGl2ZShOU1N0cmluZyAqYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNU
ZXh0QWx0ZXJuYXRpdmVzICphbHRlcm5hdGl2ZXMpCiB7CiAgICAgW2FsdGVybmF0aXZlcyBub3Rl
U2VsZWN0ZWRBbHRlcm5hdGl2ZVN0cmluZzphY2NlcHRlZEFsdGVybmF0aXZlXTsKICAgICBtX2Nv
bnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Ci0g
ICAgbV92aWV3LmNsZWFyKCk7CisgICAgbV92aWV3ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5hdGl2ZXMoKQogewotICAgIGlm
ICghbV92aWV3KQotICAgICAgICByZXR1cm47Ci0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0aW9uSW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0
KCldOworICAgIGlmIChtX3ZpZXcpCisgICAgICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgp
XTsKIH0KIAorI2VuZGlmCisKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1v
dmVBbHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4dCkKIHsKICAgICBtX2NvbnRleHRDb250cm9s
bGVyLnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiB9Ci19CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiYTg5NGM2MDEyMS4uODQyMTliODc3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDUgQEAKKzIwMjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFtpT1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRp
dmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3
MjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NTQwMTE0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBQYXJ0IDEKKworICAgICAgICBNb3ZlIHNvbWUg
b2YgdGhlIFBhZ2VDbGllbnRNYWMgZGljdGF0aW9uIGFsdGVybmF0aXZlcyBjb2RlIHRvIFBhZ2VD
bGllbnRJbXBsQ29jb2Egc28gdGhhdCBpdAorICAgICAgICBjYW4gYmUgc2hhcmVkIHdpdGggaU9T
LgorCisgICAgICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxU
RVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZworICAgICAgICBjb21w
aWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2Ug
YWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCisgICAgICAgIHRvIGRvIHNvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6UGFnZUNsaWVudEltcGxDb2NvYSk6IERlbGV0ZWQ7
IG1vdmVkIHRvIGJlIG91dC1vZi1saW5lIHRvIGF2b2lkCisgICAgICAgIG5lZWRpbmcgdG8gI2lu
Y2x1ZGUgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggZnJvbSB0aGlzIGZpbGUuIERlY2xh
cmUgb3V0LW9mLWxpbmUgZGVzdHJ1Y3RvcgorICAgICAgICBmb3IgdGhlIHNhbWUgcmVhc29uLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpQYWdlQ2xpZW50SW1wbENvY29hKTogTW92
ZWQgZnJvbSBQYWdlQ2xpZW50SW1wbENvY29hLmguCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bENvY29hOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBNb3ZlZCBmcm9tIFBhZ2VDbGllbnRJ
bXBsTWFjLm1tLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGxDb2NvYTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKTogQWRkZWQ7IHN0dWIgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpwYWdlQ2xvc2VkKTogRGVsZXRlZDsgbm93IHdlIHdpbGwgdXNlIHRoZSBiYXNlIGNsYXNz
IGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOiBNb3ZlZCBBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9naWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBs
Q29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoKS4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnBhZ2VDbG9zZWQpOiBNb3ZlZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgbG9n
aWMgZnJvbSBoZXJlIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VDbG9zZWQoKQorICAgICAg
ICBzbyBpdCBjYW4gYmUgc2hhcmVkIGFuZCBtb2RpZmllZCB0aGlzIGZ1bmN0aW9uIHRvIGNhbGwg
dGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOiBEZWxldGVkOyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1w
bENvY29hLm1tLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKTogRGVsZXRlZDsgbW92ZWQgdG8gUGFnZUNsaWVudEltcGxDb2NvYS5tbS4K
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyk6IERlbGV0ZWQ7IG1vdmVkIHRvIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0uCisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOiBEZWxldGVk
OyBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbENvY29hLm1tLgorCiAyMDIwLTAzLTA2ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5z
ZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBhNmY3NzY5
MmMwMC4uY2IwZWNkMWRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTI2LDIwICsyNiwyOSBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4KIAorQGNsYXNzIE5TVGV4dEFsdGVybmF0aXZl
czsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVu
dDsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZUNsaWVudEltcGxD
b2NvYSA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBQYWdlQ2xpZW50SW1wbENv
Y29hKFdLV2ViVmlldyAqd2ViVmlldykKLSAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykgeyB9
CisgICAgUGFnZUNsaWVudEltcGxDb2NvYShXS1dlYlZpZXcgKik7CisgICAgdmlydHVhbCB+UGFn
ZUNsaWVudEltcGxDb2NvYSgpOworCisgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CisK
ICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgaXNQ
bGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKIApAQCAtNTMsOCArNjIsMTcgQEAgcHVibGlj
OgogICAgIE5TU2V0ICpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdWludDY0
X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+JikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkgZmluYWw7CisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOworI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IG1fd2ViVmlldzsKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZTdkNzM4MmRiNWIuLjQwOTQ5YzJm
NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50
SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGll
bnRJbXBsQ29jb2EubW0KQEAgLTI5LDkgKzI5LDI0IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgiCisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPFdlYkNvcmUvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK1BhZ2VDbGllbnRJbXBsQ29jb2E6OlBhZ2VDbGllbnRJbXBsQ29jb2EoV0tXZWJWaWV3ICp3
ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3IHsgd2ViVmlldyB9CisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7IG1ha2VV
bmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpIH0KKyNlbmRpZgoreworfQorCitQ
YWdlQ2xpZW50SW1wbENvY29hOjp+UGFnZUNsaWVudEltcGxDb2NvYSgpID0gZGVmYXVsdDsKKwog
dm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKQogewog
ICAgIFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5Ok5TU3RyaW5nRnJvbVNlbGVjdG9y
KEBzZWxlY3RvcihfaXNQbGF5aW5nQXVkaW8pKV07CkBAIC04MCw1ICs5NSwzMiBAQCBOU1NldCAq
UGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29u
c3QKIH0KIAogI2VuZGlmCisKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFnZUNsb3NlZCgp
Cit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9hbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXItPmNsZWFyKCk7CisjZW5kaWYKK30KKworI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQorCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbENvY29hOjphZGREaWN0YXRp
b25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVy
bmF0aXZlcykKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFk
ZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29j
b2E6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KQoreworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2
ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhZ2VDbGllbnRJbXBs
Q29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQor
eworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisKICAgICAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlM2ZmMzBjZTgyYi4uYTNjZWRmNTkw
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM1Myw2ICszNTMsMTMg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0Rp
cmVjdGlvbikgeyB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2aXJ0
dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9
IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdmlydHVhbCB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0
X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNB
bmRXaW5kb3dIYXNGb2N1cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5Db21wbGV4
VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIs
IFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSkgPSAwOwpAQCAtMzc2LDE4ICszODMsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgTlNWaWV3ICppbnNwZWN0b3JBdHRhY2htZW50VmlldygpID0g
MDsKICAgICB2aXJ0dWFsIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdp
c3RyeSgpID0gMDsKIAotI2lmIFVTRShBUFBLSVQpCiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNp
Y0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGludHJpbnNpY0Nv
bnRlbnRTaXplKSA9IDA7Ci0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgdmly
dHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5T
VGV4dEFsdGVybmF0aXZlcz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
PSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKLSNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKwogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25VbmRvR3JvdXBpbmcoKSA9IDA7Ci0jZW5kaWYgLy8g
VVNFKElOU0VSVElPTl9VTkRPX0dST1VQSU5HKQotI2VuZGlmIC8vIFVTRShBUFBLSVQpCisjZW5k
aWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCkg
PSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1YTNhN2FiZjU5Ny4uMzUwMGIzOWI0
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBP
QkpDX0NMQVNTIFdLQ29udGVudFZpZXc7CiBPQkpDX0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsK
IApAQCAtNzcsNyArNzgsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIHBh
Z2VDbG9zZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBGdW5jdGlv
bjx2b2lkKGJvb2wpPiYpIG92ZXJyaWRlOwpAQCAtMjYyLDYgKzI2MiwxMCBAQCBwcml2YXRlOgog
ICAgIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1
cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSBvdmVycmlkZTsKICNlbmRpZgogCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmll
dz4gbV9jb250ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3Vu
ZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IDg5MjM5Zjc5NGYzLi4yZmNlMGM1NTFjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjMzLDEx
ICsyMzMsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpncHVQcm9jZXNzQ3Jhc2hlZCgpCiB9CiAj
ZW5kaWYKIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFu
Z2UoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05NjMsNiArOTU4LDE1IEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OmhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQmCiAgICAgW21fY29udGVudFZpZXcgX2hhbmRsZUF1dG9jb3JyZWN0
aW9uQ29udGV4dDpjb250ZXh0XTsKIH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCB1aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaAppbmRleCAwZGNhODcwNmQ0Mi4uZjBjYzM4YTQ4OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogQGNsYXNzIFdLRWRpdG9yVW5kb1RhcmdldDsKIEBjbGFzcyBXS1ZpZXc7CkBAIC0xODAs
MTEgKzE4MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSkgb3ZlcnJp
ZGU7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICB1aW50NjRfdCBhZGRE
aWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVk
VGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFN0
cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92
ZXJyaWRlOwogI2VuZGlmCisKICAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChi
b29sKSBvdmVycmlkZTsKIAogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKQEAgLTI2
Nyw5ICsyNjUsNiBAQCBwcml2YXRlOgogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAg
ICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CiAjZW5kaWYKLSNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKLSNl
bmRpZgogCiAgICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KaW5kZXggYWYzNzZhZTY1M2EuLjAzMTkyZDc2YWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC03OSwxMyAr
NzksMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCi0jaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjZW5kaWYKQEAgLTEwMywyMCAr
MTAwLDE2IEBAIEBlbmQKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcq
IHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKK1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1w
bChOU1ZpZXcgKnZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGllbnRJbXBs
Q29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3KQotI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCi0jZW5kaWYKIHsKIH0KIAotUGFnZUNs
aWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCi17Ci19CitQYWdlQ2xpZW50SW1wbDo6flBhZ2VD
bGllbnRJbXBsKCkgPSBkZWZhdWx0OwogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRJbXBsKFdl
YlZpZXdJbXBsJiBpbXBsKQogewpAQCAtMjY2LDkgKzI1OSw3IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OnByb2Nlc3NEaWRFeGl0KCkKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQog
ewogICAgIG1faW1wbC0+cGFnZUNsb3NlZCgpOwotI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5jbGVhcigpOwotI2VuZGlm
CisgICAgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFnZUNsb3NlZCgpOwogfQogCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQpAQCAtNjg0LDE1ICs2NzUsNiBAQCBib29s
IFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJp
bmcmIHNlbGVjdG9yU3RyaW5nKQogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
Ci11aW50NjRfdCBQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCi17Ci0gICAgcmV0
dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVzKTsKLX0KLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCi17Ci0gICAgbV9hbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKLX0K
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KQogewpAQCAtNzAzLDEwICs2ODUsNiBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaQogICAgIH0pOwogfQogCi1WZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1wbDo6ZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCi17Ci0gICAgcmV0
dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KGRpY3RhdGlvbkNvbnRleHQpOwotfQogI2VuZGlmCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392905</attachid>
            <date>2020-03-07 16:18:27 -0800</date>
            <delta_ts>2020-03-07 16:18:27 -0800</delta_ts>
            <desc>Part 2: Move insertDictatedTextAsync() from the Mac-specific files to Cocoa-specific files – To Land</desc>
            <filename>Part2_1.patch</filename>
            <type>text/plain</type>
            <size>19342</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">Y29tbWl0IGI4OGM5ZGZiMjI5NDEyMTQyYjY1M2FmZWQ5OWEwMjNlOGVkZTU3ZTUKQXV0aG9yOiBE
YW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRlOiAgIFNhdCBNYXIgNyAxNjoxMToz
MCAyMDIwIC0wODAwCgogICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg3MjAKICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KICAgIAogICAgUmV2aWV3ZWQgYnkg
V2Vuc29uIEhzaWVoLgogICAgCiAgICBQYXJ0IDIKICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAg
ICAKICAgIEluY2x1ZGUgVUlLaXRTUEkuaCBpbiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0g
dG8gZ2V0IHRoZSBkZWZpbml0aW9uIG9mIE5TVGV4dEFsdGVybmF0aXZlcwogICAgd2hlbiBidWls
ZGluZyBmb3IgaU9TLiBBbHNvIHdoaWxlIEkgYW0gaGVyZSwgZml4IHVwIHNvbWUgY29kZSBzdHls
ZSBpc3N1ZXMgYW5kIHVzZSB1bmlmb3JtCiAgICBpbml0aWFsaXplciBzeW50YXguCiAgICAKICAg
IE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9u
IGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwogICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3
aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29k
ZSBpcyBpbiBwbGFjZQogICAgdG8gZG8gc28uCiAgICAKICAgICogZWRpdGluZy9tYWMvVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tOgogICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKToKICAgIAogICAgU291cmNlL1dlYktpdDoK
ICAgIAogICAgTW92ZSBpbnNlcnREaWN0YXRlZFRleHRBc3luYygpIGZyb20gdGhlIE1hYy1zcGVj
aWZpYyBpbXBsZW1lbnRhdGlvbiBmaWxlcyB0byBDb2NvYS1zcGVjaWZpYwogICAgaW1wbGVtZW50
YXRpb24gZmlsZXMgYXMgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJIGRp
ZCB2ZXJ5IG1pbm9yIEMrKyBtb2Rlcm5pemF0aW9uOgogICAganVzdCBtb3JlIHVzZXMgb2YgYXV0
byBhbmQgdW5pZm9ybSBpbml0aWFsaXplciBzeW50YXguCiAgICAKICAgIE5vdGUgdGhhdCBJIGhh
dmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMg
Y29kZSBpc24ndCBiZWluZwogICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4g
YSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQog
ICAgdG8gZG8gc28uCiAgICAKICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tOgogICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6
CiAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgogICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CiAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgogICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCiAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CiAgICAoV2ViS2l0
OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6CiAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CiAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CiAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGI1ZWY0YTg3MWM4Li5lNjc3MDM4YTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KKworICAgICAgICBSZXZpZXdlZCBieSBX
ZW5zb24gSHNpZWguCisKKyAgICAgICAgUGFydCAyCisKKyAgICAgICAgSW5jbHVkZSBVSUtpdFNQ
SS5oIGluIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSB0byBnZXQgdGhlIGRlZmluaXRpb24g
b2YgTlNUZXh0QWx0ZXJuYXRpdmVzCisgICAgICAgIHdoZW4gYnVpbGRpbmcgZm9yIGlPUy4gQWxz
byB3aGlsZSBJIGFtIGhlcmUsIGZpeCB1cCBzb21lIGNvZGUgc3R5bGUgaXNzdWVzIGFuZCB1c2Ug
dW5pZm9ybQorICAgICAgICBpbml0aWFsaXplciBzeW50YXguCisKKyAgICAgICAgTm90ZSB0aGF0
IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLiBTbywg
dGhpcyBjb2RlIGlzbid0IGJlaW5nCisgICAgICAgIGNvbXBpbGVkIGZvciBpT1MuIEkgd2lsbCBk
byB0aGF0IGluIGEgc3Vic2VxdWVudCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMg
aW4gcGxhY2UKKyAgICAgICAgdG8gZG8gc28uCisKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSk6CisKIDIwMjAtMDMtMDcgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEltcGxlbWVu
dCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCmluZGV4
IDBmZjMzNDUxNWUxLi4zMTIyMzI1NTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKQEAgLTk1LDYgKzk1
LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlvbiwgTlNCYWNrZ3JvdW5kQ29sb3JE
b2N1bWVudEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKICNkZWZpbmUgTlNCYWNrZ3JvdW5kQ29sb3JE
b2N1bWVudEF0dHJpYnV0ZSBnZXROU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlKCkK
IFNPRlRfTElOS19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0
dHJpYnV0ZU5hbWUsIE5TU3RyaW5nICopCiAjZGVmaW5lIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0
dHJpYnV0ZU5hbWUgZ2V0TlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSgpCitTT0ZU
X0xJTktfQ09OU1RBTlQoVUlGb3VuZGF0aW9uLCBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVO
YW1lLCBOU1N0cmluZyAqKQorI2RlZmluZSBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1l
IGdldE5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUoKQogCiAvLyBXZSBkb24ndCBzb2Z0
bGluayBOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZSBiZWNhdXNlIFVJRm91bmRhdGlvbiBzdG9w
cGVkIGV4cG9ydGluZyBpdC4KIC8vIFRoaXMgYXR0cmlidXRlIGlzIGJlaW5nIGRlcHJlY2F0ZWQg
YXQgdGhlIEFQSSBsZXZlbCwgYnV0IGludGVybmFsbHkgVUlGb3VuZGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0K
aW5kZXggYWVhNThmODk0ZjguLjY1MDlkZjQ0M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMyArMjYs
MTkgQEAKICNpbXBvcnQgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgogCiAjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0
L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDxwYWwv
c3BpL2lvcy9VSUtpdFNQSS5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0
ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlcywgTlNSYW5nZSBhUmFuZ2UpCi06IHJhbmdlKGFSYW5n
ZSkKLSwgYWx0ZXJuYXRpdmVzKGFuQWx0ZXJuYXRpdmVzKQorVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzICphbkFsdGVy
bmF0aXZlcywgTlNSYW5nZSBhUmFuZ2UpCisgICAgOiByYW5nZSB7IGFSYW5nZSB9CisgICAgLCBh
bHRlcm5hdGl2ZXMgeyBhbkFsdGVybmF0aXZlcyB9CiB7CiB9CiAKQEAgLTQ5LDUgKzU1LDcgQEAg
dm9pZCBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZywgVmVjdG9yPFRleHRBbHQKICAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24g
PSBOU01heFJhbmdlKGVmZmVjdGl2ZVJhbmdlKTsKICAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5n
ZS5sb2NhdGlvbiA8IGxlbmd0aCk7CiB9Ci19Ci0jZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDg0MjE5Yjg3N2MwLi45Zjk3ZWQzYzJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAy
MC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lP
U10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTg1NDAxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhz
aWVoLgorCisgICAgICAgIFBhcnQgMgorCisgICAgICAgIE1vdmUgaW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMoKSBmcm9tIHRoZSBNYWMtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gQ29j
b2Etc3BlY2lmaWMKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZmlsZXMgYXMgaXQgY2FuIGJlIHNo
YXJlZCBieSBib3RoIE1hYyBhbmQgaU9TLiBJIGRpZCB2ZXJ5IG1pbm9yIEMrKyBtb2Rlcm5pemF0
aW9uOgorICAgICAgICBqdXN0IG1vcmUgdXNlcyBvZiBhdXRvIGFuZCB1bmlmb3JtIGluaXRpYWxp
emVyIHN5bnRheC4KKworICAgICAgICBOb3RlIHRoYXQgSSBoYXZlbid0IGVuYWJsZSBVU0VfRElD
VEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAg
ICAgICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNo
YW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQorICAgICAgICB0byBkbyBz
by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFz
eW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRB
c3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKTogRGVsZXRlZC4KKwogMjAyMC0wMy0wNyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggYTM2ZWVkMjFjYjQu
LmY4ZGZiZDM0MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiQVBJQXR0YWNo
bWVudC5oIgogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25S
ZXN1bHQuaCIKKyNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFy
YW1ldGVycy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5n
U1BJLmgiCkBAIC00NCw2ICs0NSwxMCBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0x
NjEsNiArMTY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRl
bSYgZHJhZ0l0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGEKICAgICBwYWdlQ2xpZW50KCku
c3RhcnREcmFnKGRyYWdJdGVtLCBkcmFnSW1hZ2VIYW5kbGUpOwogfQogCisvLyBGSVhNRTogTW92
ZSB0aGVzZSBmdW5jdGlvbnMgdG8gV2ViUGFnZVByb3h5SU9TLm1tLgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90LCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90KQpAQCAt
MjI1LDYgKzIzMSwzNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29r
dXBPZkN1cnJlbnRTZWxlY3Rpb24oKQogICAgIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBt
X3dlYlBhZ2VJRCk7CiB9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRB
c3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRS
YW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKK3sKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0
aW9uQWx0ZXJuYXRpdmVzOworICAgIGZvciAoY29uc3QgYXV0byYgYWx0ZXJuYXRpdmVXaXRoUmFu
Z2UgOiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpIHsKKyAgICAgICAgdWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCA9IHBhZ2VDbGllbnQoKS5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMo
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRpY3RhdGlv
bkNvbnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3Rh
dGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRl
cm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKKyAgICB9
CisKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgeworICAgICAgICBJ
bnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dy
b3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7CisKKyAgICAgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQs
IHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3Rh
dGVkVGV4dEFzeW5jIHsgdGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzLCByZWdpc3RlclVuZG9Hcm91cCB9LCBtX3dlYlBhZ2VJRCk7CisjZWxzZQorICAgIEluc2Vy
dFRleHRPcHRpb25zIG9wdGlvbnM7CisgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJl
Z2lzdGVyVW5kb0dyb3VwOworCisgICAgaW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50
UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpOworI2VuZGlmCit9CiAgICAgCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZTI4YTUwMDQ1YWEuLjk1Zjg1ZjQ2ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTg1MzksNiArODUzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFu
Z2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpKTsKIH0KIAorLy8gRklYTUU6
IE1vdmUgdGhlc2UgZnVuY3Rpb25zIHRvIFdlYlBhZ2VQcm94eUNvY29hLm1tLgogI2lmIFBMQVRG
T1JNKENPQ09BKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmlu
ZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjg4MTlh
OTUxMDguLjcxZTBkMGQ2Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtODUyLDcgKzg1MiwxMCBAQCBwdWJsaWM6CiAgICAgQ0FMYXllciAqYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRUZXh0QXN5bmMoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIEluc2VydFRleHRPcHRpb25z
JiYpOworCisgICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiwgY29uc3QgRWRp
dGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKKyAgICB2
b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZT4mLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKwogICAgIHZvaWQgaGFz
TWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdl
dE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6
OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwpA
QCAtODcwLDcgKzg3Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6
Rm9udENoYW5nZXMmJik7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnREaWN0
YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAg
ICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcm
LCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBmb250QXRTZWxlY3Rpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwg
Ym9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4YWQyYmExZTg5Ni4uYjcyMDkxNDZm
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtMTg0LDM3ICsxODQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNT
Y3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV93ZWJQ
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2Us
IGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXNXaXRoUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCi17Ci0jaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCi0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFs
dGVybmF0aXZlczsKLQotICAgIGZvciAoY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBh
bHRlcm5hdGl2ZVdpdGhSYW5nZSA6IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSkgewot
ICAgICAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gcGFnZUNsaWVudCgpLmFkZERpY3Rh
dGlvbkFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZVdpdGhSYW5nZS5hbHRlcm5hdGl2ZXMpOwotICAg
ICAgICBpZiAoZGljdGF0aW9uQ29udGV4dCkKLSAgICAgICAgICAgIGRpY3RhdGlvbkFsdGVybmF0
aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFu
Z2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9u
Q29udGV4dCkpOwotICAgIH0KLQotICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7Ci0gICAgICAgIG9wdGlv
bnMucmVnaXN0ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKLQotICAgICAgICBpbnNl
cnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCksIG1fd2ViUGFnZUlEKTsKLSNl
bHNlCi0gICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25zLnJlZ2lzdGVy
VW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7Ci0KLSAgICBpbnNlcnRUZXh0QXN5bmModGV4
dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0
cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0KaW5kZXggOWM0ZjZjMGNmMTIuLjFjYWY2YThkNWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CkBAIC0xODksNiArMTg5LDI0IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlv
bmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgcmV0dXJu
IGRpY3Rpb25hcnlQb3B1cEluZm87CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRU
ZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2Vt
ZW50RWRpdGluZ1JhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCkKK3sKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CisgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IgeyBmcmFtZSB9OworCisg
ICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFt
ZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOworICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5n
ZSkKKyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uIHsgKnJlcGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZIH0pOworICAg
IH0KKworICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZyB7IH0pOworCisgICAg
QVNTRVJUKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlv
bnMsIG51bGxwdHIgLyogdHJpZ2dlcmluZ0V2ZW50ICovKTsKK30KKwogdm9pZCBXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVU
b2tlbikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVRva2VuID0gSVBDOjpEYXRhUmVm
ZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRl
c10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggNzA3ZmM2YmRhNDIuLmE5MWViYjgxM2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04NDQsMTAgKzg0NCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3Qg
V2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBhY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktp
dDo6V2ViTW91c2VFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IGJvb2wgcGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKKworICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50
UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3Rh
dGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2Up
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNlcnREaWN0YXRlZFRl
eHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1l
bnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgPSBmYWxz
ZSk7CiAgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlv
bihDYWxsYmFja0lEKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjRhZWE3NTU1NGQuLmEwOTA5MTE1
ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTQ1Miw3ICs0NTIsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICAgICBBY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91
c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogCiAgICAgU2V0VGV4
dEFzeW5jKFN0cmluZyB0ZXh0KQorCiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgc3RydWN0IFdlYktp
dDo6SW5zZXJ0VGV4dE9wdGlvbnMgb3B0aW9ucykKKyAgICBJbnNlcnREaWN0YXRlZFRleHRBc3lu
YyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFu
Z2UsIFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJu
YXRpdmVzLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQorCiAgICAgSGFzTWFya2VkVGV4dCgpIC0+
IChib29sIGhhc01hcmtlZFRleHQpIEFzeW5jCiAgICAgR2V0TWFya2VkUmFuZ2VBc3luYyhXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmMoV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC00NjIsNyArNDY1LDYgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAjZW5kaWYKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQs
IHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2Vi
Q29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCkKICAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKTsKICAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMTI5YjAxYWI5NWEuLjBhNmQzOGRiMTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtMzIwLDI1ICszMjAsNiBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDb21wbGV4VGV4dElu
cHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aQogICAgIH0K
IH0KIAotdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQotewotICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAg
ICBSZWY8RnJhbWU+IHByb3RlY3RvcihmcmFtZSk7Ci0KLSAgICBpZiAocmVwbGFjZW1lbnRFZGl0
aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBy
ZXBsYWNlbWVudFJhbmdlID0gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVu
dEVkaXRpbmdSYW5nZSk7Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQotICAgICAgICAg
ICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxh
Y2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7Ci0gICAgfQotCi0gICAgaWYgKHJl
Z2lzdGVyVW5kb0dyb3VwKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
Z2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nKCkpOwotICAgIAotICAgIEFTU0VSVCghZnJhbWUu
ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGlj
dGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyKTsK
LX0KLQogdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392906</attachid>
            <date>2020-03-07 16:18:47 -0800</date>
            <delta_ts>2020-03-07 16:18:47 -0800</delta_ts>
            <desc>Part 3: Share more AlternativeTextController code and WebPageProxy code – To Land</desc>
            <filename>Part3_1.patch</filename>
            <type>text/plain</type>
            <size>26865</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">Y29tbWl0IDlkNzlkNjNmY2I4Y2YwZmE3ZDExMzIxOWM2ZTU1YWQ2YmJiMzBlMWYKQXV0aG9yOiBE
YW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRlOiAgIFNhdCBNYXIgNyAxNjoxMzow
MiAyMDIwIC0wODAwCgogICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg3MjAKICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KICAgIAogICAgUmV2aWV3ZWQgYnkg
QnJlbnQgRnVsZ2hhbS4KICAgIAogICAgUGFydCAzCiAgICAKICAgIFNvdXJjZS9XZWJDb3JlOgog
ICAgCiAgICBTZXBhcmF0ZSBjb2RlIHRoYXQgaXMgYWN0dWFsbHkgVVNFKEFVVE9DT1JSRUNUSU9O
X1BBTkVMKS1zcGVjaWZpYyBmcm9tIGNvZGUgdGhhdCBjYW4gYWxzbwogICAgYmUgdXNlZCB3aGVu
IGJ1aWxkaW5nIHdpdGggVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpIGVuYWJsZWQuCiAgICAK
ICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVT
IG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZwogICAgY29tcGlsZWQgZm9yIGlPUy4g
SSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUg
Y29kZSBpcyBpbiBwbGFjZQogICAgdG8gZG8gc28uCiAgICAKICAgICogU291cmNlc0NvY29hLnR4
dDogTWFyayBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYXMgQG5vLXVuaWZ5IHRvIGZpeCBi
dWlsZCBicmVha2FnZSB3aGVuCiAgICBhIHVuaWZpZWQgc291cmNlIGZpbGUgaW5jbHVkZXMgYm90
aCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYW5kIGEgZmlsZSB0aGF0IHVsdGltYXRlbHkK
ICAgIGluY2x1ZGVzIExlbmd0aEJveC5oIChlLmcuIFdlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0
dHJpYnV0ZWRTdHJpbmcubW0pLiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KICAgIHVsdGlt
YXRlbHkgaW5jbHVkZXMgU0ZOVExheW91dFR5cGVzLmgsIHdoaWNoIGRlZmluZXMgYSBGaXhlZCB0
eXBlIHRoYXQgY29uZmxpY3RzIHdpdGggZW51bWVyYXRvcgogICAgRml4ZWQgKHBhcnQgb2YgdGhl
IExlbmd0aFR5cGUgZW51bWVyYXRpb24pIGRlZmluZWQgaW4gTGVuZ3RoLmguIElkZWFsbHkgdGhl
IExlbmd0aFR5cGUgZW51bWVyYXRpb24KICAgIHdvdWxkIGJlIGFuIGVudW0gY2xhc3Mgb3Igc2Nv
cGVkIHRvIExlbmd0aCB0byBhdm9pZCB0aGlzIGFtYmlndWl0eS4gVGhpcyB3b3VsZCBiZSBhIGJp
ZyBjaGFuZ2UgdG8gZG8KICAgIGFuZCBzbyBmb3Igbm93IEkgYW0gZml4aW5nIHRoZSBidWlsZCBi
cmVha2FnZSB1c2luZyBAbm8tdW5pZnkuCiAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSB0byB0aGUgcHJvamVjdCBu
b3cgdGhhdAogICAgaXQgaXMgZXhjbHVkZWQgZnJvbSB0aGUgdW5pZmllZCBidWlsZC4KICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKICAgIChXZWJDb3JlOjptYXJr
ZXJUeXBlc0ZvckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CiAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKICAgIChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxp
ZWRBbHRlcm5hdGl2ZVRleHQpOgogICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZSk6CiAgICAqIGVkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5oOgogICAgCiAgICBTb3VyY2UvV2ViS2l0OgogICAgCiAgICBNb3Zl
IGNvZGUgdGhhdCB3YXMgZ3VhcmRlZCB1bmRlciBQTEFURk9STShNQUMpIG91dHNpZGUgb2YgdGhh
dCBndWFyZCBzbyB0aGF0IHdlIGNvbXBpbGUgaXQKICAgIHNvIGxvbmcgYXMgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpIGlzIGVuYWJsZWQuCiAgICAKICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3Qg
ZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBp
c24ndCBiZWluZwogICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRvIHRoYXQgaW4gYSBzdWJz
ZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBpbiBwbGFjZQogICAgdG8g
ZG8gc28uCiAgICAKICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CiAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKICAgIAog
ICAgU291cmNlL1dlYktpdExlZ2FjeS9tYWM6CiAgICAKICAgIEd1YXJkIGNvZGUgdGhhdCByZXF1
aXJlcyBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpIHRvIGJlIGVuYWJsZWQuIFNwZWNpZmljYWxs
eSwgLV9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSQogICAgY2FsbHMgLWhhbmRsZUFjY2VwdGVk
QWx0ZXJuYXRpdmVUZXh0LCBidXQgdGhlIGxhdHRlciBpcyBvbmx5IGNvbXBpbGVkIGluIHdoZW4g
VVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgaXMgZW5hYmxlZC4KICAgIAogICAgTm90ZSB0
aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLiBT
bywgdGhpcyBjb2RlIGlzbid0IGJlaW5nCiAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8g
dGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGlu
IHBsYWNlCiAgICB0byBkbyBzby4KICAgIAogICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGU2NzcwMzhhNzBmLi5mNTA3YTJmNDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDIwLTAzLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZGljdGF0aW9uIGFsdGVybmF0aXZl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzIw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFBhcnQgMworCisgICAgICAgIFNlcGFyYXRlIGNv
ZGUgdGhhdCBpcyBhY3R1YWxseSBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpLXNwZWNpZmljIGZy
b20gY29kZSB0aGF0IGNhbiBhbHNvCisgICAgICAgIGJlIHVzZWQgd2hlbiBidWlsZGluZyB3aXRo
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKSBlbmFibGVkLgorCisgICAgICAgIE5vdGUgdGhh
dCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIG9uIGlPUy4gU28s
IHRoaXMgY29kZSBpc24ndCBiZWluZworICAgICAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwg
ZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlz
IGluIHBsYWNlCisgICAgICAgIHRvIGRvIHNvLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDogTWFyayBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYXMgQG5vLXVuaWZ5IHRvIGZpeCBi
dWlsZCBicmVha2FnZSB3aGVuCisgICAgICAgIGEgdW5pZmllZCBzb3VyY2UgZmlsZSBpbmNsdWRl
cyBib3RoIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBhbmQgYSBmaWxlIHRoYXQgdWx0aW1h
dGVseQorICAgICAgICBpbmNsdWRlcyBMZW5ndGhCb3guaCAoZS5nLiBXZWJBcmNoaXZlUmVzb3Vy
Y2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tKS4gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
CisgICAgICAgIHVsdGltYXRlbHkgaW5jbHVkZXMgU0ZOVExheW91dFR5cGVzLmgsIHdoaWNoIGRl
ZmluZXMgYSBGaXhlZCB0eXBlIHRoYXQgY29uZmxpY3RzIHdpdGggZW51bWVyYXRvcgorICAgICAg
ICBGaXhlZCAocGFydCBvZiB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJhdGlvbikgZGVmaW5lZCBpbiBM
ZW5ndGguaC4gSWRlYWxseSB0aGUgTGVuZ3RoVHlwZSBlbnVtZXJhdGlvbgorICAgICAgICB3b3Vs
ZCBiZSBhbiBlbnVtIGNsYXNzIG9yIHNjb3BlZCB0byBMZW5ndGggdG8gYXZvaWQgdGhpcyBhbWJp
Z3VpdHkuIFRoaXMgd291bGQgYmUgYSBiaWcgY2hhbmdlIHRvIGRvCisgICAgICAgIGFuZCBzbyBm
b3Igbm93IEkgYW0gZml4aW5nIHRoZSBidWlsZCBicmVha2FnZSB1c2luZyBAbm8tdW5pZnkuCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLm1tIHRvIHRoZSBwcm9qZWN0IG5vdyB0aGF0CisgICAgICAgIGl0IGlz
IGV4Y2x1ZGVkIGZyb20gdGhlIHVuaWZpZWQgYnVpbGQuCisgICAgICAgICogZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtlclR5cGVz
Rm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFw
cGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAgICAgKiBlZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKwogMjAyMC0wMy0wNyAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBv
cnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IGE3ZTBmZDc4MjIwLi5mODNlYWNkOTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC05
OSw3ICs5OSw3IEBAIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQogZWRpdGluZy9tYWMvRGljdGlv
bmFyeUxvb2t1cExlZ2FjeS5tbQogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCiBlZGl0aW5nL21h
Yy9GcmFtZVNlbGVjdGlvbk1hYy5tbQotZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tCitlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gQG5vLXVuaWZ5
CiBlZGl0aW5nL21hYy9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbQogCiBmaWxlYXBpL0Zp
bGVDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDU2MGQ3NWRlZjllLi44NGNlYTMxZDYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI1Myw2ICs0
MjUzLDcgQEAKIAkJQ0U3QjJEQjMxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U3QjJEQUYxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
N0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTdFMTc4MzFDODNBNDkxMDBBRDA2
QUYgLyogQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3RTE3ODIxQzgzQTQ5MTAwQUQwNkFGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlDRTg4RUUyNjI0MTQ0NjdCMDA3RjI5QzIgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5tbSAqLzsgfTsKIAkJQ0VBMjg0NjYyMTQxRTg0OTAwRTQwN0U4IC8qIFBsYXRmb3JtRXZlbnRG
YWN0b3J5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjY2MDFFQkUxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1t
ICovOyB9OwogCQlDRUJCOEMzMzIwNzg2RENCMDAwMzk1NDcgLyogRmV0Y2hJZGlvbXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkI4QzMxMjA3ODZE
Q0IwMDAzOTU0NyAvKiBGZXRjaElkaW9tcy5oICovOyB9OwogCQlDRUNBREZDNzE1Mzc3OEZGMDBF
MzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRp
b25BbHRlcm5hdGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zMzc0Nyw2ICszMzc0OCw3IEBACiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3
NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMxNjkyREQyMjNEMjNBQkQw
MDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1NEYy
MjlEQ0QxMzAwQjNFMTUxIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDRTg4RUUyNjI0MTQ0NjdCMDA3RjI5QzIgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5M0YxNEVGMUNGODAwMjZBMkREIC8qIFRl
eHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQg
LyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MUE5RUMyMTY4RkJDNDMw
MDI2MjlGOSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggMjkyNmVlNTc0NGEuLmVjMjIxNmQ3YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDYgKzQ3LDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpIHx8IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKworY29uc3RleHByIE9wdGlvblNl
dDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0
aW9uQWx0ZXJuYXRpdmUoKQoreworICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVj
a2luZ0V4ZW1wdGlvbjsKK30KKworI2VuZGlmCisKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCiAKIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
PiBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKQEAgLTU5LDExICs2OSw2IEBAIHN0YXRp
YyBpbmxpbmUgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBl
c0ZvclJlcGxhY2VtZW50KCkKICAgICByZXR1cm4geyBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1l
bnQsIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uIH07CiB9CiAKLXN0YXRp
YyBpbmxpbmUgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBl
c0ZvckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpCi17Ci0gICAgcmV0dXJuIERvY3VtZW50
TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uOwotfQotCiBzdGF0aWMgYm9vbCBtYXJrZXJz
SGF2ZUlkZW50aWNhbERlc2NyaXB0aW9uKGNvbnN0IFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFy
a2VyKj4mIG1hcmtlcnMpCiB7CiAgICAgaWYgKG1hcmtlcnMuaXNFbXB0eSgpKQpAQCAtMTg3LDU2
ICsxOTIsNiBAQCBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24o
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dAogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBB
bHRlcm5hdGl2ZVRleHRUeXBlIGFsdGVybmF0aXZlVHlwZSwgT3B0aW9uU2V0PERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc1RvQWRkKQotewotICAgIGF1dG8gcGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKLQotICAgIHNl
dFN0YXJ0KHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24ucHRyKCksIHN0YXJ0T2ZQ
YXJhZ3JhcGgocmFuZ2Uuc3RhcnRQb3NpdGlvbigpKSk7Ci0gICAgc2V0RW5kKHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24ucHRyKCksIGVuZE9mUGFyYWdyYXBoKHJhbmdlLmVuZFBv
c2l0aW9uKCkpKTsKLQotICAgIC8vIEFmdGVyIHdlIHJlcGxhY2UgdGhlIHdvcmQgYXQgcmFuZ2Ug
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIHdlIG5lZWQgdG8gYWRkIG1hcmtlcnMgdG8gdGhhdCByYW5n
ZS4KLSAgICAvLyBIb3dldmVyLCBvbmNlIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLCB0aGUg
dmFsdWUgb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgaXMgbm90IHZhbGlkIGFueW1vcmUuCi0gICAg
Ly8gU28gYmVmb3JlIHdlIGNhcnJ5IG91dCB0aGUgcmVwbGFjZW1lbnQsIHdlIG5lZWQgdG8gc3Rv
cmUgdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlCi0gICAgLy8gcmVs
YXRpdmUgdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHBhcmFncmFwaC4g
V2UgdXNlIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoCi0gICAgLy8gdG8gc3RvcmUg
dGhpcyB2YWx1ZS4gSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgb2Zmc2V0LCB3ZSBuZWVkIHRvIGZp
cnN0IGNyZWF0ZSBhIHJhbmdlCi0gICAgLy8gd2hpY2ggc3BhbnMgZnJvbSB0aGUgc3RhcnQgb2Yg
cGFyYWdyYXBoIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZS4K
LSAgICBhdXRvIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdl
OjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFy
dFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSk7Ci0KLSAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5h
dGl2ZSA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKLSAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJh
bmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGF1dG8gc2V0RW5kUmVzdWx0ID0gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1Jh
bmdlLT5zZXRFbmQoKnN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5l
ck5vZGUoKSwgc3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29tcHV0ZU9mZnNl
dEluQ29udGFpbmVyTm9kZSgpKTsKLSAgICBpZiAoc2V0RW5kUmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9m
IGF1dG9jb3JyZWN0aW9uIHNvIHRoYXQgd2UgY2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxh
Y2VtZW50IHRvb2sgcGxhY2UuCi0gICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdy
YXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBh
cmFncmFwaEFzUmFuZ2UucHRyKCkpOwotCi0gICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5jZSB0
aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIHJh
bmdlIGFyb3VuZC4KLSAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UuY2xvbmVS
YW5nZSgpOwotCi0gICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2Rl
KCk7Ci0gICAgaW50IHBhcmFncmFwaFN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKFJhbmdlOjpjcmVhdGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAmcGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOwotICAg
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwg
YWx0ZXJuYXRpdmUpLT5hcHBseSgpOwotICAgIC8vIFJlY2FsY3VsYXRlIHByYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtb2Rp
ZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9yaWdpbmFsIHBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUzMTUgQnVnemls
bGE6IDg5NTI2Ci0gICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2Rl
LCBwYXJhZ3JhcGhTdGFydEluZGV4LCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCAr
IGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2V0RW5kKHVw
ZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFj
ZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCwg
YWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwotICAgIFN0cmluZyBuZXdUZXh0ID0gcGxhaW5UZXh0KHJl
cGxhY2VtZW50UmFuZ2UuZ2V0KCkpOwotCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2Vt
ZW50IHN1Y2NlZWRlZC4KLSAgICBpZiAobmV3VGV4dCAhPSBhbHRlcm5hdGl2ZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJzID0gcmVwbGFj
ZW1lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKTsKLQotICAg
IGZvciAoYXV0byBtYXJrZXJUeXBlIDogbWFya2VyVHlwZXNUb0FkZCkKLSAgICAgICAgbWFya2Vy
cy5hZGRNYXJrZXIoKnJlcGxhY2VtZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRlc2NyaXB0
aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtlclR5cGUp
KTsKLX0KLQogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUF1dG9jb3JyZWN0
aW9uQmVmb3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpCiB7CiAgICAgaWYgKCFtX3JhbmdlV2l0aEFs
dGVybmF0aXZlIHx8ICFtX2lzQWN0aXZlKQpAQCAtNDQ5LDExICs0MDQsNiBAQCB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1h
bmRDb21wb3NpdGlvbgogICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLCBEb2N1bWVudE1hcmtl
cjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKLUFsdGVybmF0aXZlVGV4dENsaWVudCog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKLXsKLSAg
ICByZXR1cm4gbV9mcmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBhZ2UoKS0+YWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkgOiBudWxscHRyOwotfQotCiBFZGl0b3JDbGllbnQqIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OmVkaXRvckNsaWVudCgpCiB7CiAgICAgcmV0dXJuIG1fZnJhbWUucGFnZSgpID8g
Jm1fZnJhbWUucGFnZSgpLT5lZGl0b3JDbGllbnQoKSA6IG51bGxwdHI7CkBAIC02MDcsMTQgKzU1
Nyw3NyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0
RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgIHJldHVybiB0cnVlOwogfQogCisj
ZW5kaWYgLy8gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpIHx8IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKworQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGll
bnQoKQoreworICAgIHJldHVybiBtX2ZyYW1lLnBhZ2UoKSA/IG1fZnJhbWUucGFnZSgpLT5hbHRl
cm5hdGl2ZVRleHRDbGllbnQoKSA6IG51bGxwdHI7Cit9CisKIFN0cmluZyBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQo
QWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSBtYXJrZXJUeXBlKQogewotCisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQogICAgIGlmIChhbHRlcm5hdGl2ZVRleHRUeXBlICE9IEFsdGVybmF0aXZlVGV4dFR5cGVSZXZl
cnNpb24gJiYgYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpSZXBsYWNl
bWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKSkKICAg
ICAgICAgcmV0dXJuIG1fb3JpZ2luYWxUZXh0OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYWx0
ZXJuYXRpdmVUZXh0VHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlclR5cGUpOworI2VuZGlm
CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwg
Y29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2
ZVR5cGUsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNU
b0FkZCkKK3sKKyAgICBhdXRvIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBy
YW5nZS5jbG9uZVJhbmdlKCk7CisKKyAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5p
bmdDb3JyZWN0aW9uLnB0cigpLCBzdGFydE9mUGFyYWdyYXBoKHJhbmdlLnN0YXJ0UG9zaXRpb24o
KSkpOworICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0cigp
LCBlbmRPZlBhcmFncmFwaChyYW5nZS5lbmRQb3NpdGlvbigpKSk7CisKKyAgICAvLyBBZnRlciB3
ZSByZXBsYWNlIHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlLCB3ZSBuZWVk
IHRvIGFkZCBtYXJrZXJzIHRvIHRoYXQgcmFuZ2UuCisgICAgLy8gSG93ZXZlciwgb25jZSB0aGUg
cmVwbGFjZW1lbnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZl
IGlzIG5vdCB2YWxpZCBhbnltb3JlLgorICAgIC8vIFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQgdGhl
IHJlcGxhY2VtZW50LCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5n
ZVdpdGhBbHRlcm5hdGl2ZQorICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBv
ZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJ
blBhcmFncmFwaAorICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9idGFp
biB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQorICAgIC8vIHdo
aWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9zaXRp
b24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCisgICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZz
ZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOworCisgICAgUG9zaXRpb24gc3Rh
cnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7
CisgICAgaWYgKCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJO
b2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNldEVuZFJlc3VsdCA9IGNvcnJlY3Rp
b25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS0+c2V0RW5kKCpzdGFydFBvc2l0aW9uT2ZS
YW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCksIHN0YXJ0UG9zaXRpb25PZlJhbmdl
V2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CisgICAgaWYg
KHNldEVuZFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
VGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNh
biBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgorICAgIGludCBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0cigpKTsKKworICAg
IC8vIENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkg
d2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCisgICAgYXV0byByYW5nZVdp
dGhBbHRlcm5hdGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKKworICAgIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlID0gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250
YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAgIGludCBwYXJhZ3JhcGhTdGFydElu
ZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRv
Y3VtZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24tPnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24t
PnN0YXJ0T2Zmc2V0KCkpLnB0cigpKTsKKyAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpj
cmVhdGUocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKKyAgICAv
LyBSZWNhbGN1bGF0ZSBwcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBv
cmlnaW5hbCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2
YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3ppbGxhOiA4OTUyNgorICAgIGF1dG8gdXBkYXRlZFBh
cmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVj
dGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAg
aWYgKCF1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBjb3JyZWN0aW9u
U3RhcnRPZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOworICAgIFN0cmlu
ZyBuZXdUZXh0ID0gcGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpOworCisgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1Y2NlZWRlZC4KKyAgICBpZiAobmV3VGV4dCAh
PSBhbHRlcm5hdGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1
bWVudCgpLm1hcmtlcnMoKTsKKworICAgIGZvciAoYXV0byBtYXJrZXJUeXBlIDogbWFya2VyVHlw
ZXNUb0FkZCkKKyAgICAgICAgbWFya2Vycy5hZGRNYXJrZXIoKnJlcGxhY2VtZW50UmFuZ2UsIG1h
cmtlclR5cGUsIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRl
cm5hdGl2ZVR5cGUsIG1hcmtlclR5cGUpKTsKK30KKwogI2VuZGlmCiAKIGJvb2wgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAppbmRleCAxNzNjOTA5ZjBjMy4uMjcwMjFlYzc1
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5oCkBAIC0xMTUsMTUgKzExNSwxMiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBT
dHJpbmcgZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7Ci0g
ICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmLCBjb25zdCBT
dHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5hdGl2ZVRleHRUeXBlLCBPcHRpb25TZXQ8RG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGU+KTsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKICAgICB2b2lk
IHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdlJiBy
YW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbik7Ci0gICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVy
bmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAKICAgICBib29sIHNob3VsZFN0YXJ0VGltZXJGb3IoY29uc3QgRG9jdW1lbnRNYXJrZXIm
LCBpbnQgZW5kT2Zmc2V0KSBjb25zdDsKICAgICBib29sIHJlc3BvbmRUb01hcmtlckF0RW5kT2ZX
b3JkKGNvbnN0IERvY3VtZW50TWFya2VyJiwgY29uc3QgUG9zaXRpb24mIGVuZE9mV29yZFBvc2l0
aW9uKTsKIAotICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KCk7CiAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKICAgICAKICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKTsKQEAgLTE0MSw2ICsxMzgsMTEgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9vcmlnaW5hbFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb247
CiAgICAgUG9zaXRpb24gbV9wb3NpdGlvbkZvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb247CiAj
ZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykgfHwgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQorICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5h
dGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUp
OworICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiwgY29u
c3QgU3RyaW5nJiwgQWx0ZXJuYXRpdmVUZXh0VHlwZSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2Vy
OjpNYXJrZXJUeXBlPik7CisgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKTsKKyNlbmRpZgogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA5Zjk3ZWQzYzJjNC4uNzBlNzM1MjY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MjAtMDMtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtp
T1NdIEltcGxlbWVudCBzdXBwb3J0IGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4NTQwMTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1
bGdoYW0uCisKKyAgICAgICAgUGFydCAzCisKKyAgICAgICAgTW92ZSBjb2RlIHRoYXQgd2FzIGd1
YXJkZWQgdW5kZXIgUExBVEZPUk0oTUFDKSBvdXRzaWRlIG9mIHRoYXQgZ3VhcmQgc28gdGhhdCB3
ZSBjb21waWxlIGl0CisgICAgICAgIHNvIGxvbmcgYXMgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpIGlzIGVuYWJsZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFibGUgVVNF
X0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLiBTbywgdGhpcyBjb2RlIGlzbid0IGJlaW5n
CisgICAgICAgIGNvbXBpbGVkIGZvciBpT1MuIEkgd2lsbCBkbyB0aGF0IGluIGEgc3Vic2VxdWVu
dCBjaGFuZ2Ugb25jZSBhZnRlciBhbGwgdGhlIGNvZGUgaXMgaW4gcGxhY2UKKyAgICAgICAgdG8g
ZG8gc28uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKwogMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhM2NlZGY1OTBhMi4uYjRk
Y2JlYmZkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTU0LDEzICs1
NCwxMyBAQCBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBP
QkpDX0NMQVNTIE5TTWVudTsKIE9CSkNfQ0xBU1MgTlNTZXQ7CitPQkpDX0NMQVNTIE5TVGV4dEFs
dGVybmF0aXZlczsKIE9CSkNfQ0xBU1MgVUlHZXN0dXJlUmVjb2duaXplcjsKIE9CSkNfQ0xBU1Mg
V0tEcmF3aW5nVmlldzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKICNp
ZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBXS1ZpZXc7Ci1PQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDk1Zjg1ZjQ2ZmE4Li4zNzcwODM3ZGQyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MzU1LDYgKzgzNTUsMjUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpCiAKICNlbmRpZgog
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAg
cGFnZUNsaWVudCgpLnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVt
b3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7Cisg
ICAgcGFnZUNsaWVudCgpLnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250
ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBh
Z2VDbGllbnQoKS5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCkpOworfQor
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1YnN0
aXR1dGlvbnNQYW5lbElzU2hvd2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtODM5MiwyMyArODQxMSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQocmVzdWx0KSk7CiB9CiAKLSNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLXZvaWQg
V2ViUGFnZVByb3h5OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpCi17Ci0gICAgcGFnZUNsaWVudCgpLnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJv
dW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQpOwotfQotCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpCi17Ci0gICAgcGFnZUNsaWVudCgpLnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
cyhkaWN0YXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHBhZ2VDbGllbnQoKS5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9u
Q29udGV4dCkpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFZGl0YWJsZUVs
ZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpCiB7CiAgICAgcGFn
ZUNsaWVudCgpLnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChlZGl0YWJsZUVsZW1lbnRJc0Zv
Y3VzZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3MWUwZDBk
NmY5OC4uNDMxMGFkNzViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0yMDcxLDYgKzIwNzEsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudCgpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCk7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHN1YnN0aXR1
dGlvbnNQYW5lbElzU2hvd2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwpAQCAtMjA3OCwx
MiArMjA4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihpbnQzMl90IHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAg
ICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpOwogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOwotICAgIHZvaWQg
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOwot
ICAgIHZvaWQgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotI2VuZGlmCi0K
ICAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKTsKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjYTg0MDZkNjIx
Zi4uYmQ5NmEzOWFkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg1NDAxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBQYXJ0IDMKKworICAgICAgICBHdWFyZCBjb2RlIHRo
YXQgcmVxdWlyZXMgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKSB0byBiZSBlbmFibGVkLiBTcGVj
aWZpY2FsbHksIC1fc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkKKyAgICAgICAgY2FsbHMgLWhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0LCBidXQgdGhlIGxhdHRlciBpcyBvbmx5IGNvbXBp
bGVkIGluIHdoZW4gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgICAgICBpcyBlbmFibGVk
LgorCisgICAgICAgIE5vdGUgdGhhdCBJIGhhdmVuJ3QgZW5hYmxlIFVTRV9ESUNUQVRJT05fQUxU
RVJOQVRJVkVTIG9uIGlPUy4gU28sIHRoaXMgY29kZSBpc24ndCBiZWluZworICAgICAgICBjb21w
aWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVlbnQgY2hhbmdlIG9uY2Ug
YWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCisgICAgICAgIHRvIGRvIHNvLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3Ig
TWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCAyODk3OWU4YTZmNS4uNmM4YjQ5ZmFlNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk0NTQsOSArOTQ1NCwxMSBAQCAt
ICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8V2ViQ29yZTo6
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JgogCiAtICh2b2lkKV9zaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0
IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKIHsKKyNpZiBV
U0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgX3ByaXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLT5zaG93QWx0ZXJuYXRpdmVzKHNlbGYsIFtzZWxmIF9jb252ZXJ0UmVjdEZy
b21Sb290Vmlldzpib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0XSwgZGljdGF0aW9uQ29udGV4dCwg
XihOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSkgewogICAgICAgICBbc2VsZiBoYW5kbGVB
Y2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZEFsdGVybmF0aXZlXTsKICAgICB9KTsKKyNl
bmRpZgogfQogCiAtICh2b2lkKV9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90
KWRpY3RhdGlvbkNvbnRleHQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392907</attachid>
            <date>2020-03-07 16:19:03 -0800</date>
            <delta_ts>2020-03-07 16:19:03 -0800</delta_ts>
            <desc>Part 4: Implement -insertText:alternatives:style: – To Land</desc>
            <filename>Part4_1.patch</filename>
            <type>text/plain</type>
            <size>4705</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">Y29tbWl0IGUyNThjZWRmODliOGY4YTYwMDA2ZjNlNjVjZTg0Y2Q0ZTM1ODViOTEKQXV0aG9yOiBE
YW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRlOiAgIFNhdCBNYXIgNyAxNjoxNTo0
MiAyMDIwIC0wODAwCgogICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg3MjAKICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KICAgIAogICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgogICAgCiAgICBQYXJ0IDQKICAgIAogICAgVGhpcyBwYXRjaCB3YXMgb3Jp
Z2luYWxseSB3cml0dGVuIGJ5IE1vcmdhbiBXaW5lci4gSSBqdXN0IHNpbXBsaWZpZWQgaXQgYSBi
aXQgYW5kIGZpeGVkIHNvbWUKICAgIGZvcm1hdHRpbmcgaXNzdWVzIHRvIGNvbmZvcm0gdG8gdGhl
IGNvZGUgc3R5bGUgZ3VpZGVsaW5lcy4KICAgIAogICAgTm90ZSB0aGF0IEkgaGF2ZW4ndCBlbmFi
bGUgVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgb24gaU9TLiBTbywgdGhpcyBjb2RlIGlzbid0
IGJlaW5nCiAgICBjb21waWxlZCBmb3IgaU9TLiBJIHdpbGwgZG8gdGhhdCBpbiBhIHN1YnNlcXVl
bnQgY2hhbmdlIG9uY2UgYWZ0ZXIgYWxsIHRoZSBjb2RlIGlzIGluIHBsYWNlCiAgICB0byBkbyBz
by4KICAgIAogICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6IEV4cG9zZSBtb3JlIFNQ
SS4KICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CiAgICAo
LVtXS0NvbnRlbnRWaWV3IGluc2VydFRleHQ6YWx0ZXJuYXRpdmVzOnN0eWxlOl0pOiBBZGRlZC4K
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDcwZTczNTI2ODAzLi40NmE5OTE5YjYxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAyMC0wMy0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcy
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg1NDAxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIFBhcnQgNAorCisgICAgICAgIFRoaXMgcGF0Y2gg
d2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBNb3JnYW4gV2luZXIuIEkganVzdCBzaW1wbGlmaWVk
IGl0IGEgYml0IGFuZCBmaXhlZCBzb21lCisgICAgICAgIGZvcm1hdHRpbmcgaXNzdWVzIHRvIGNv
bmZvcm0gdG8gdGhlIGNvZGUgc3R5bGUgZ3VpZGVsaW5lcy4KKworICAgICAgICBOb3RlIHRoYXQg
SSBoYXZlbid0IGVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVSTkFUSVZFUyBvbiBpT1MuIFNvLCB0
aGlzIGNvZGUgaXNuJ3QgYmVpbmcKKyAgICAgICAgY29tcGlsZWQgZm9yIGlPUy4gSSB3aWxsIGRv
IHRoYXQgaW4gYSBzdWJzZXF1ZW50IGNoYW5nZSBvbmNlIGFmdGVyIGFsbCB0aGUgY29kZSBpcyBp
biBwbGFjZQorICAgICAgICB0byBkbyBzby4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaDogRXhwb3NlIG1vcmUgU1BJLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluc2Vy
dFRleHQ6YWx0ZXJuYXRpdmVzOnN0eWxlOl0pOiBBZGRlZC4KKwogMjAyMC0wMy0wNyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSW1wbGVtZW50IHN1
cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNGE2NmU0MzgxY2UuLjIzZjVhYjJkMDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAorI2ltcG9ydCA8VUlLaXQvTlNUZXh0QWx0
ZXJuYXRpdmVzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUFsZXJ0Q29udHJvbGxlcl9Qcml2YXRlLmg+
CiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0
L1VJQmFyQnV0dG9uSXRlbV9Qcml2YXRlLmg+CkBAIC0xMTE0LDYgKzExMTUsMTQgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TSW50ZWdlciwgVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdzKSB7CiBAZW5k
CiAjZW5kaWYgLy8gSEFWRShMSU5LX1BSRVZJRVcpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCitA
aW50ZXJmYWNlIE5TVGV4dEFsdGVybmF0aXZlcyA6IE5TT2JqZWN0CistIChpZClpbml0V2l0aFBy
aW1hcnlTdHJpbmc6KE5TU3RyaW5nICopcHJpbWFyeVN0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5hdGl2ZVN0cmluZ3M7CistIChpZClpbml0V2l0
aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nICopcHJpbWFyeVN0cmluZyBhbHRlcm5hdGl2ZVN0cmlu
Z3M6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbHRlcm5hdGl2ZVN0cmluZ3MgaXNMb3dDb25maWRl
bmNlOihCT09MKWxvd0NvbmZpZGVuY2U7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TU3RyaW5n
ICpwcmltYXJ5U3RyaW5nOworQHByb3BlcnR5IChyZWFkb25seSkgTlNBcnJheTxOU1N0cmluZyAq
PiAqYWx0ZXJuYXRpdmVTdHJpbmdzOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0xvd0Nv
bmZpZGVuY2U7CitAZW5kCiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCBiNWYwZTY1NmU5Zi4uMWM4MjVkYTU1NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtMTY1LDYgKzE2NSwxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ub3VjaEFjdGlvbi5oPgog
I2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgIlVJS2l0
U1BJLmgiCisjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgorI2Vu
ZGlmCisKICNpZiBIQVZFKExJTktfUFJFVklFVykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJraXRTaG93TGlua1ByZXZpZXdzUHJlZmVyZW5jZUtleSA9
IEAiV2ViS2l0U2hvd0xpbmtQcmV2aWV3cyI7CiAjZW5kaWYKQEAgLTQ3NDIsNiArNDc0NywyMiBA
QCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICopYVN0cmluZ1ZhbHVlCiAgICAgX3BhZ2Ut
Pmluc2VydFRleHRBc3luYyhhU3RyaW5nVmFsdWUsIFdlYktpdDo6RWRpdGluZ1JhbmdlKCksIFdU
Rk1vdmUob3B0aW9ucykpOwogfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisK
Ky0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKilhU3RyaW5nVmFsdWUgYWx0ZXJuYXRpdmVz
OihOU0FycmF5PE5TU3RyaW5nICo+ICopYWx0ZXJuYXRpdmVzIHN0eWxlOihVSVRleHRBbHRlcm5h
dGl2ZVN0eWxlKXN0eWxlCit7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMuY291bnQpCisgICAgICAg
IFtzZWxmIGluc2VydFRleHQ6YVN0cmluZ1ZhbHVlXTsKKyAgICBlbHNlIHsKKyAgICAgICAgQk9P
TCBpc0xvd0NvbmZpZGVuY2UgPSBzdHlsZSA9PSBVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTG93Q29u
ZmlkZW5jZTsKKyAgICAgICAgYXV0byB0ZXh0QWx0ZXJuYXRpdmVzID0gYWRvcHROUyhbW05TVGV4
dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOmFTdHJpbmdWYWx1ZSBh
bHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzIGlzTG93Q29uZmlkZW5jZTppc0xvd0NvbmZp
ZGVuY2VdKTsKKyAgICAgICAgV2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlIHRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZSB7IHRleHRBbHRlcm5hdGl2ZXMuZ2V0KCksIE5TTWFrZVJhbmdl
KDAsIGFTdHJpbmdWYWx1ZS5sZW5ndGgpIH07CisgICAgICAgIF9wYWdlLT5pbnNlcnREaWN0YXRl
ZFRleHRBc3luYyhhU3RyaW5nVmFsdWUsIFdlYktpdDo6RWRpdGluZ1JhbmdlIHsgfSwgeyB0ZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgfSwgZmFsc2UgLyogcmVnaXN0ZXJVbmRvR3JvdXAgKi8pOwor
ICAgIH0KK30KKworI2VuZGlmCisKIC0gKEJPT0wpaGFzVGV4dAogewogICAgIGF1dG8mIGVkaXRv
clN0YXRlID0gX3BhZ2UtPmVkaXRvclN0YXRlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392908</attachid>
            <date>2020-03-07 16:19:35 -0800</date>
            <delta_ts>2020-03-07 16:19:35 -0800</delta_ts>
            <desc>Part 5: Enable on iOS – To Land</desc>
            <filename>Part5_1.patch</filename>
            <type>text/plain</type>
            <size>1343</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">Y29tbWl0IDQxN2VlOWZjNTY3OGM1MTFmYjM2ODM0NGNhMzhkMjViNTRkNTdhOGUKQXV0aG9yOiBE
YW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRlOiAgIFNhdCBNYXIgNyAxNjoxNDoz
MSAyMDIwIC0wODAwCgogICAgW2lPU10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg3MjAKICAgIDxyZGFyOi8vcHJvYmxlbS81ODU0MDExND4KICAgIAogICAgUmV2aWV3ZWQgYnkg
V2Vuc29uIEhzaWVoLgogICAgCiAgICBQYXJ0IDUKICAgIAogICAgRW5hYmxlIFVTRV9ESUNUQVRJ
T05fQUxURVJOQVRJVkVTIG9uIGlPUy4KICAgIAogICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDlhMDEwNGEzMmY1Li40ODg4YjgyMWIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0w
My0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10g
SW1wbGVtZW50IHN1cHBvcnQgZm9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcyMAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTg1NDAxMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVo
LgorCisgICAgICAgIFBhcnQgNQorCisgICAgICAgIEVuYWJsZSBVU0VfRElDVEFUSU9OX0FMVEVS
TkFUSVZFUyBvbiBpT1MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKwogMjAxOS0w
OS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9y
dCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1V
c2UuaAppbmRleCAwMDExMDIxMTM4Ni4uZDJjMDY1MzQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtVXNlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApA
QCAtMjcxLDkgKzI3MSw2IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNkZWZpbmUgVVNFX01F
RElBUkVNT1RFIDEKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBVU0VfRElD
VEFUSU9OX0FMVEVSTkFUSVZFUyAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>