<?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>82335</bug_id>
          
          <creation_ts>2012-03-27 07:01:43 -0700</creation_ts>
          <short_desc>Introduce CSSParserMode in all classes</short_desc>
          <delta_ts>2012-03-30 11:20:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82056</dependson>
          <blocked>82759</blocked>
    
    <blocked>46112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588849</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-27 07:01:43 -0700</bug_when>
    <thetext>Introduce CSSParserMode in all classes and get rid of the boolean &apos;strictParsing&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589461</commentid>
    <comment_count>1</comment_count>
      <attachid>134173</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-27 17:02:08 -0700</bug_when>
    <thetext>Created attachment 134173
Patch

Patch. Note: I get an alphabetic sorting problems. Seems to be a false positive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589467</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 17:06:25 -0700</bug_when>
    <thetext>Attachment 134173 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/html/HTMLLinkElement.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589479</commentid>
    <comment_count>3</comment_count>
      <attachid>134173</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-27 17:17:48 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

Attachment 134173 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12142819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589483</commentid>
    <comment_count>4</comment_count>
      <attachid>134173</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-27 17:21:05 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

Attachment 134173 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12145831</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589491</commentid>
    <comment_count>5</comment_count>
      <attachid>134173</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-27 17:25:38 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

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

You need to update COMPILE_ASSERT(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), style_property_set_should_stay_small); as you modified the members. It will grow the size of the object though.

&gt; Source/WebCore/css/MediaList.cpp:110
&gt; +    CSSParser parser;

Globally I liked the fact that when I see the old code I would read : &quot;The parser is in strict mode and will not use some other mode from somewhere else&quot;. So I would like better CSSParser parser(CSSStrictMode) and not the default value that you get from the constructor automatically. That said it&apos;s just my personal taste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589499</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-27 17:33:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 134173 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134173&amp;action=review
&gt; 
&gt; You need to update COMPILE_ASSERT(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), style_property_set_should_stay_small); as you modified the members. It will grow the size of the object though.
Can you be more explicit please? Where should I update it and why? In order to get Qt build?

&gt; 
&gt; &gt; Source/WebCore/css/MediaList.cpp:110
&gt; &gt; +    CSSParser parser;
&gt; 
&gt; Globally I liked the fact that when I see the old code I would read : &quot;The parser is in strict mode and will not use some other mode from somewhere else&quot;. So I would like better CSSParser parser(CSSStrictMode) and not the default value that you get from the constructor automatically. That said it&apos;s just my personal taste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589507</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-03-27 17:37:39 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Note: I get an alphabetic sorting problems. Seems to be a false positive.

Not a false positive. CSS sorts before Cached because we use case sensitive sorting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589510</commentid>
    <comment_count>8</comment_count>
      <attachid>134173</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-27 17:38:38 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

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

&gt; Source/WebCore/css/StylePropertySet.h:138
&gt; +    CSSParserMode m_cssParserMode;

You replace here one bolean represented with bitfield by a an enum represented by an int the class gets bigger. That&apos;s what the compile check is enforcing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589515</commentid>
    <comment_count>9</comment_count>
      <attachid>134173</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-27 17:47:55 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

Attachment 134173 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12142835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589516</commentid>
    <comment_count>10</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-27 17:49:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 134173 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134173&amp;action=review
&gt; &gt; 
&gt; &gt; You need to update COMPILE_ASSERT(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), style_property_set_should_stay_small); as you modified the members. It will grow the size of the object though.
&gt; Can you be more explicit please? Where should I update it and why? In order to get Qt build?

It&apos;s not specific to Qt the compile check is run on all platforms.


&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/MediaList.cpp:110
&gt; &gt; &gt; +    CSSParser parser;
&gt; &gt; 
&gt; &gt; Globally I liked the fact that when I see the old code I would read : &quot;The parser is in strict mode and will not use some other mode from somewhere else&quot;. So I would like better CSSParser parser(CSSStrictMode) and not the default value that you get from the constructor automatically. That said it&apos;s just my personal taste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589534</commentid>
    <comment_count>11</comment_count>
      <attachid>134173</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 18:15:40 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

Attachment 134173 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12141835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589635</commentid>
    <comment_count>12</comment_count>
      <attachid>134173</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-27 20:56:23 -0700</bug_when>
    <thetext>Comment on attachment 134173
Patch

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

&gt; Source/WebCore/css/CSSStyleSheet.h:152
&gt; +    CSSParserMode m_cssParserMode;

This will make MSVC sad.  It also is larger than 1 bit.  It&apos;s in fact, 32 bits.

MSVC uses signed enums, GCC makes them unsigned.  WE have to store them as unsigned m_foo : 1; instead. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589657</commentid>
    <comment_count>13</comment_count>
      <attachid>134217</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-27 21:52:50 -0700</bug_when>
    <thetext>Created attachment 134217
Patch

Patch. Potential fix of chromium bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589661</commentid>
    <comment_count>14</comment_count>
      <attachid>134217</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-27 22:06:44 -0700</bug_when>
    <thetext>Comment on attachment 134217
Patch

Attachment 134217 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12140951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589662</commentid>
    <comment_count>15</comment_count>
      <attachid>134217</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-27 22:06:51 -0700</bug_when>
    <thetext>Comment on attachment 134217
Patch

Attachment 134217 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12143975</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589699</commentid>
    <comment_count>16</comment_count>
      <attachid>134217</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 00:10:13 -0700</bug_when>
    <thetext>Comment on attachment 134217
Patch

Attachment 134217 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12141962</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589955</commentid>
    <comment_count>17</comment_count>
      <attachid>134294</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 07:46:43 -0700</bug_when>
    <thetext>Created attachment 134294
Patch

Patch. Not for review. Test if it fixes Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590031</commentid>
    <comment_count>18</comment_count>
      <attachid>134312</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 09:22:35 -0700</bug_when>
    <thetext>Created attachment 134312
Patch

Patch. Not for review. Test if it fixes Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590039</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-28 09:27:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; You need to update COMPILE_ASSERT(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), style_property_set_should_stay_small); as you modified the members. It will grow the size of the object though.

No. You need to ensure that the type doesn&apos;t grow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590042</commentid>
    <comment_count>20</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-28 09:29:25 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #5)
&gt; &gt; You need to update COMPILE_ASSERT(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), style_property_set_should_stay_small); as you modified the members. It will grow the size of the object though.
&gt; 
&gt; No. You need to ensure that the type doesn&apos;t grow.

Yes maybe I was not clear with the &quot;It will grow the size of the object though&quot; which I was almost sure Andreas and Antti will complain about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590053</commentid>
    <comment_count>21</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 09:44:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #5)
&gt; &gt; You need to update COMPILE_ASSERT(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), style_property_set_should_stay_small); as you modified the members. It will grow the size of the object though.
&gt; 
&gt; No. You need to ensure that the type doesn&apos;t grow.

Yes, the last patch tries to do that. I just have to merge it with TOT. After that it will hopefully work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590054</commentid>
    <comment_count>22</comment_count>
      <attachid>134317</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 09:46:04 -0700</bug_when>
    <thetext>Created attachment 134317
Patch

Patch. Not for review. Test if it fixes Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590059</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 09:49:22 -0700</bug_when>
    <thetext>Attachment 134317 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590069</commentid>
    <comment_count>24</comment_count>
      <attachid>134321</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 10:04:58 -0700</bug_when>
    <thetext>Created attachment 134321
Patch

Patch. Not for review. Test if it fixes Qt 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590076</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 10:10:06 -0700</bug_when>
    <thetext>Attachment 134321 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590120</commentid>
    <comment_count>26</comment_count>
      <attachid>134333</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 10:43:08 -0700</bug_when>
    <thetext>Created attachment 134333
Patch

Patch. Not for review. Test if it fixes Qt 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590123</commentid>
    <comment_count>27</comment_count>
      <attachid>134334</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 10:44:31 -0700</bug_when>
    <thetext>Created attachment 134334
Patch

Patch. Not for review. Test if it fixes Qt 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590128</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 10:50:12 -0700</bug_when>
    <thetext>Attachment 134334 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590206</commentid>
    <comment_count>29</comment_count>
      <attachid>134353</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 11:39:26 -0700</bug_when>
    <thetext>Created attachment 134353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590560</commentid>
    <comment_count>30</comment_count>
      <attachid>134353</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-28 16:08:24 -0700</bug_when>
    <thetext>Comment on attachment 134353
Patch

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

&gt; Source/WebCore/css/CSSImportRule.cpp:72
&gt; +    bool strict = cssParserMode == CSSStrictMode;

It seems like this boolean is redundant. You can move this condition to enforceMIMEType.

&gt; Source/WebCore/css/CSSParser.cpp:329
&gt; +static inline bool isStrictParserMode(CSSParserMode cssParserMode)
&gt; +{
&gt; +    // FIXME: SVG presnetation attribute values should be parsed in strict mode as well.
&gt; +    return cssParserMode == CSSStrictMode;
&gt; +}

It seems like this function should be next to where CSSParserMode is defined.

&gt; Source/WebCore/css/CSSParserMode.h:34
&gt; -enum CSSParserMode {
&gt; -    CSSQuirksMode,
&gt; +enum {
&gt; +    CSSQuirksMode = 1,

This doesn&apos;t look right. Why does CSSQuirksMode need to be 1?
Also why do we need to convert CSSParserMode to an unsigned char?
That should be a trick only used wherever bit fields are defined.
If we use unsigned char everywhere, then compiler won&apos;t warn us when we add new values
and forgot to add it to a switch statement.
r- because of this.

&gt; Source/WebCore/css/CSSParserMode.h:49
&gt; +inline CSSParserMode inCSSParserMode(CSSParserMode cssParserMode)
&gt; +{
&gt; +    return static_cast&lt;CSSParserMode&gt;(cssParserMode);
&gt; +}

This function should be unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590621</commentid>
    <comment_count>31</comment_count>
      <attachid>134450</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-28 17:06:17 -0700</bug_when>
    <thetext>Created attachment 134450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590834</commentid>
    <comment_count>32</comment_count>
      <attachid>134450</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-28 21:56:45 -0700</bug_when>
    <thetext>Comment on attachment 134450
Patch

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

&gt; Source/WebCore/css/CSSStyleSheet.h:155
&gt; -    bool m_strictParsing : 1;
&gt; +    CSSParserMode m_cssParserMode;

Oops, this is going to increase the size of he class :(
You should change the type of all bitfield member variables including this one to unsigned.
But given that we shouldn&apos;t have so many StyleSheet objects per page, it can be done in a follow up patch.
We should also add a compile assert :)

&gt; Source/WebCore/css/StylePropertySet.cpp:50
&gt; +    : m_hasCSSOMWrapper(false)
&gt;  {
&gt; +    setCSSParserMode(cssParserMode);

I think it makes more sense to set the value in the initialization list.

&gt; Source/WebCore/css/StylePropertySet.cpp:57
&gt; +    setCSSParserMode(CSSStrictMode);

Ditto.

&gt; Source/WebCore/css/StylePropertySet.cpp:64
&gt; +    : m_hasCSSOMWrapper(false)
&gt;  {
&gt; +    setCSSParserMode(cssParserMode);

Ditto.

&gt; Source/WebCore/css/StylePropertySet.h:90
&gt; +    void setCSSParserMode(CSSParserMode cssParserMode) { m_cssParserMode = static_cast&lt;unsigned char&gt;(cssParserMode); }

I don&apos;t think you need an explicit cast here.

&gt; Source/WebCore/dom/Document.cpp:2689
&gt; -    m_pageUserSheet-&gt;parseString(userSheetText, !inQuirksMode());
&gt; +    m_pageUserSheet-&gt;parseString(userSheetText, toCSSParserMode(!inQuirksMode()));

Maybe it&apos;s better to call it strictToCSSParserMode to clarify the fact the boolean must be true iff it&apos;s in strict mode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590835</commentid>
    <comment_count>33</comment_count>
      <attachid>134450</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-28 21:57:25 -0700</bug_when>
    <thetext>Comment on attachment 134450
Patch

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

&gt; Source/WebKit/chromium/src/WebDocument.cpp:183
&gt; -    parsedSheet-&gt;parseString(sourceCode, !document-&gt;inQuirksMode());
&gt; +    parsedSheet-&gt;parseString(sourceCode, toCSSParserMode(!document-&gt;inQuirksMode()));

Maybe we want document-&gt;cssParserMode() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591236</commentid>
    <comment_count>34</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-29 09:13:38 -0700</bug_when>
    <thetext>Committed r112537: &lt;http://trac.webkit.org/changeset/112537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592331</commentid>
    <comment_count>35</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-30 11:20:25 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 134450 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134450&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleSheet.h:155
&gt; &gt; -    bool m_strictParsing : 1;
&gt; &gt; +    CSSParserMode m_cssParserMode;
&gt; 
&gt; Oops, this is going to increase the size of he class :(
&gt; You should change the type of all bitfield member variables including this one to unsigned.
&gt; But given that we shouldn&apos;t have so many StyleSheet objects per page, it can be done in a follow up patch.
&gt; We should also add a compile assert :)

I work on that on a different bug report: bug 82759.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134173</attachid>
            <date>2012-03-27 17:02:08 -0700</date>
            <delta_ts>2012-03-27 21:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120327170206.patch</filename>
            <type>text/plain</type>
            <size>44157</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwY2UwNTM5MTE1MTJj
NTg4OGIyZDdkMTdhOTVhNDA3YTUwOGIyMS4uYjhjMDJhNDEzMmM3NmYwZDRjNmQwZmZhYWQ2ODlk
YWY3Nzc0Y2M4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wMy0yNyAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSB0aGUgbmV3IENTU1BhcnNlck1vZGUgZW51bSB0byBtb3Jl
IGNsYXNzZXMuIFNWRyBjbGFzc2VzIG1ha2UgdXNlIG9mIFNWR0F0dHJpYnV0ZU1vZGUgZm9yIENT
UyBwYXJzaW5nIGFscmVhZHkuCisgICAgICAgIEJ1dCBTVkdBdHRyaWJ1dGVNb2RlIGRvZXMgbm90
IGRpZmZlciBmcm9tIENTU1F1aXJrc01vZGUgYXQgdGhlIG1vbWVudC4gVGhpcyB3aWxsIGNhaG5n
ZSB3aXRoIGEgZm9sbG93dXAgcGF0Y2ggb24gYnVnIDQ2MTEyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIEV2ZXJ5dGhpbmcgZ2V0cyBjb3ZlcmVk
IGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFS
dWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzU3RyaWN0UGFyc2VyTW9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNp
bXBsZUxlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250
RmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpj
cmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUtleWZy
YW1lUnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2Vy
KTogUmVtb3ZlZCBjb25zdHJ1Y3RvciB3aXRoIGJvb2xlYW4gYXJndW1lbnQuIFdlIGp1c3QgdXNl
IHRoZSBDU1NQYXJzZXJNb2RlIGVudW0gbm93LgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2Rl
Lmg6CisgICAgICAgICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlOjpjc3NQYXJzZXJNb2RlKTogUmVuYW1lZCB1c2VT
dHJpY3RQYXJzaW5nIHRvIGNzc1BhcnNlck1vZGUgc2luY2UgaXQgcmV0dXJucyBDU1NQYXJzZXJN
b2RlIGluc3RlYWQgb2YgYSBib29sZWFuLiAKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2hlZXQ6OnNldENTU1BhcnNlck1vZGUpOiBSZW5hbWVkIHNldFN0cmljdFBhcnNpbmcgdG8g
c2V0Q1NTUGFyc2VyTW9kZSBzaW5jZSB3ZSBzZXQgYW4gZW51bSBub3cuCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNoZWV0Ojpjc3NQYXJzZXJNb2RlKToKKyAgICAgICAgKiBjc3MvTWVkaWFM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5U2V0OjpyZW1vdmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAg
ICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpzZXRD
U1NQYXJzZXJNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmNzc1Bh
cnNlck1vZGUpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKFN0eWxlU2hlZXQpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0tleWZyYW1l
c1J1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJr
aXRHZXRGbG93QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlVXNlclNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlR3JvdXBVc2VyU2hlZXRzKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3
ZWJraXRNYXRjaGVzU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlSW5s
aW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3Vy
ZU11dGFibGVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKToKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpwYXJzZVN0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldCk6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50
Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHls
ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcyk6CisgICAgICAg
ICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250
RmFjZUVsZW1lbnQ6OlNWR0ZvbnRGYWNlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJl
c2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5oOgorICAg
ICAgICAoWFNMU3R5bGVTaGVldCk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAg
ICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0
eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKwogMjAxMi0wMy0yNyAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBXZWJLaXQgcHJvcGVybHkgbG9hZCBh
IHN0YWdlZCBmcmFtZXdvcmsgd2hlbiBzb2Z0IGxpbmtpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAKaW5kZXggZjE3YTE0MWU0YTMwZWY2NTgzZjkwNmNiMzc4YmE3YTllM2FlODFi
Zi4uMDE2YjdjYmU1NzY1MTgyZGI0Nzg5MmZhMDFjNGNmYzYwNTA3MzM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNjgsNyArNjgsOCBAQCB2b2lkIENTU0ltcG9ydFJ1
bGU6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjbwogICAgIGJvb2wgY3Jvc3NPcmlnaW5DU1MgPSBmYWxzZTsKICAgICBib29sIHZhbGlk
TUlNRVR5cGUgPSBmYWxzZTsKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHls
ZVNoZWV0KCk7Ci0gICAgYm9vbCBzdHJpY3QgPSAhcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0
UGFyc2luZygpOworICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSA9IHBhcmVudCA/IHBh
cmVudC0+Y3NzUGFyc2VyTW9kZSgpIDogQ1NTU3RyaWN0TW9kZTsKKyAgICBib29sIHN0cmljdCA9
IGNzc1BhcnNlck1vZGUgPT0gQ1NTU3RyaWN0TW9kZTsKICAgICBib29sIGVuZm9yY2VNSU1FVHlw
ZSA9IHN0cmljdDsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJlbnQgPyBwYXJlbnQtPmZp
bmREb2N1bWVudCgpIDogMDsKICAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gZG9j
dW1lbnQgJiYgZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQtPnNldHRpbmdzKCktPm5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CkBAIC04Miw3ICs4Myw3IEBAIHZvaWQgQ1NTSW1wb3J0
UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJh
c2VVUkwsIGNvCiAjZW5kaWYKIAogICAgIFN0cmluZyBzaGVldFRleHQgPSBzaGVldC0+c2hlZXRU
ZXh0KGVuZm9yY2VNSU1FVHlwZSwgJnZhbGlkTUlNRVR5cGUpOwotICAgIG1fc3R5bGVTaGVldC0+
cGFyc2VTdHJpbmcoc2hlZXRUZXh0LCBzdHJpY3QpOworICAgIG1fc3R5bGVTaGVldC0+cGFyc2VT
dHJpbmcoc2hlZXRUZXh0LCBjc3NQYXJzZXJNb2RlKTsKIAogICAgIGlmICghZG9jdW1lbnQgfHwg
IWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGJhc2VVUkwpKQogICAgICAg
ICBjcm9zc09yaWdpbkNTUyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTWVkaWFSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCmlu
ZGV4IGZlNzY1MGZhMzQ0ZGViZTBhMGQ5YTVmYWI0NTIxZTJiMzk1YjMxY2QuLjVlZDVlZmMyMjVm
Y2RlNmQwOGVjZjRkZTE4NzhjNjY2NzRhMDNmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1
bGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHVuc2lnbmVkIENTU01lZGlhUnVsZTo6aW5zZXJ0UnVs
ZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25DCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7
CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBSZWZQdHI8Q1NTUnVsZT4g
bmV3UnVsZSA9IHAucGFyc2VSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAgICAgaWYg
KCFuZXdSdWxlKSB7CiAgICAgICAgIC8vIFNZTlRBWF9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lm
aWVkIHJ1bGUgaGFzIGEgc3ludGF4IGVycm9yIGFuZCBpcyB1bnBhcnNhYmxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAppbmRleCA1MTdhODVhYWNiYmJiZTY2MjIyMDgwNjJkYzkyMzhmZmMzM2Qy
NmEzLi5iOGM2MjRiMWVjYmQwOWYzYTdkYzk4YTAzZGU5MDk1ZDM4MDJkZTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTgxLDM4ICsxODEsNiBAQCBpbmxpbmUgdm9pZCBDU1NQYXJz
ZXI6OmVuc3VyZUNTU1ZhbHVlUG9vbCgpCiAgICAgICAgIG1fY3NzVmFsdWVQb29sID0gQ1NTVmFs
dWVQb29sOjpjcmVhdGUoKTsKIH0KIAotQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQ
YXJzaW5nKQotICAgIDogbV9jc3NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcgPyBDU1NTdHJpY3RN
b2RlIDogQ1NTUXVpcmtzTW9kZSkKLSAgICAsIG1faW1wb3J0YW50KGZhbHNlKQotICAgICwgbV9p
ZCgwKQotICAgICwgbV9zdHlsZVNoZWV0KDApCi0gICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkK
LSAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQotICAgICwgbV9pbXBsaWNpdFNob3J0aGFuZChm
YWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNlKQotICAgICwgbV9oYWRT
eW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQotICAgICwgbV9kZWZhdWx0TmFtZXNwYWNl
KHN0YXJBdG9tKQotICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRpb24oZmFsc2UpCi0gICAg
LCBtX3NlbGVjdG9yTGlzdFJhbmdlKDAsIDApCi0gICAgLCBtX3J1bGVCb2R5UmFuZ2UoMCwgMCkK
LSAgICAsIG1fcHJvcGVydHlSYW5nZShVSU5UX01BWCwgVUlOVF9NQVgpCi0gICAgLCBtX3J1bGVS
YW5nZU1hcCgwKQotICAgICwgbV9jdXJyZW50UnVsZURhdGEoMCkKLSAgICAsIG1fcGFyc2luZ01v
ZGUoTm9ybWFsTW9kZSkKLSAgICAsIG1fY3VycmVudENoYXJhY3RlcigwKQotICAgICwgbV90b2tl
bigwKQotICAgICwgbV9saW5lTnVtYmVyKDApCi0gICAgLCBtX2xhc3RTZWxlY3RvckxpbmVOdW1i
ZXIoMCkKLSAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVlKQotICAgICwgbV9hbGxvd05hbWVz
cGFjZURlY2xhcmF0aW9ucyh0cnVlKQotewotI2lmIFlZREVCVUcgPiAwCi0gICAgICAgIGNzc3l5
ZGVidWcgPSAxOwotI2VuZGlmCi0gICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YTo6aW5pdCgp
OwotfQotCi0KIENTU1BhcnNlcjo6Q1NTUGFyc2VyKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKICAgICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9pbXBvcnRh
bnQoZmFsc2UpCkBAIC0zNTQsOCArMzIyLDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbG9y
UHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhcnNl
Q29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQorc3RhdGljIGlubGluZSBib29sIGlzU3RyaWN0
UGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgLy8gRklYTUU6
IFNWRyBwcmVzbmV0YXRpb24gYXR0cmlidXRlIHZhbHVlcyBzaG91bGQgYmUgcGFyc2VkIGluIHN0
cmljdCBtb2RlIGFzIHdlbGwuCisgICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gQ1NTU3RyaWN0
TW9kZTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
aW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogeworICAgIGJvb2wgc3RyaWN0ID0gaXNTdHJpY3RQYXJzZXJNb2Rl
KGNzc1BhcnNlck1vZGUpOwogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFpc0NvbG9yUHJvcGVydHlJRChwcm9wZXJ0eUlkKSkKQEAgLTQ0
MCw5ICs0MTUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJ
RChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRp
b24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQs
IGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBi
b29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24s
IGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hl
ZXQpCiB7CiAgICAgYm9vbCBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzOworICAgIGJvb2wgc3RyaWN0
ID0gaXNTdHJpY3RQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpOwogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQpAQCAtOTY2LDIwICs5NDIs
MjAgQEAgc3RhdGljIGJvb2wgcGFyc2VLZXl3b3JkVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVj
bGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb24KIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
U1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZywg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBp
ZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBz
dHJpbmcsIGZhbHNlLCBmYWxzZSwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgIGlmICghcGFyc2VW
YWx1ZShkdW1teVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIHN0cmluZywgZmFs
c2UsIENTU1F1aXJrc01vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTVmFsdWVMaXN0PihkdW1teVN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBz
dHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQorYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlk
LCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7Ci0gICAgaWYg
KHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywg
aW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VTaW1w
bGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQs
IGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5n
LCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgIGlmIChwYXJzZUNv
bG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQ
YXJzZXJNb2RlLCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChwYXJzZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
Q1NTUGFyc2VyIHBhcnNlcihzdHJpY3QpOworICAgIENTU1BhcnNlciBwYXJzZXIoY3NzUGFyc2Vy
TW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0
eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCkBAIC0xMDE2
LDcgKzk5Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoZmFzdFBhcnNlQ29sb3Io
Y29sb3IsIHN0cmluZywgc3RyaWN0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBDU1NQ
YXJzZXIgcGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXI7CiAKICAgICAvLyBJbiBj
YXNlIHRoZSBmYXN0LXBhdGggcGFyc2VyIGRpZG4ndCB1bmRlcnN0YW5kIHRoZSBjb2xvciwgdHJ5
IHRoZSBmdWxsIHBhcnNlci4KICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKHN0cmluZykpCkBA
IC05MDk0LDcgKzkwNzAsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShW
ZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBydWxl
LT5zdHlsZVJ1bGUoKS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsKICAgICAgICAg
aWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICAgICAgZGVsZXRlRm9udEZhY2VP
bmx5VmFsdWVzKCk7Ci0gICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0
eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNl
ZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgICAgICBydWxlLT5zdHls
ZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQ
cm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJN
b2RlKSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkUnVs
ZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7
CkBAIC05MTMyLDcgKzkxMDgsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNl
UnVsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVs
ZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgcnVsZS0+c2V0
RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5k
YXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAg
cnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIENTU0ZvbnRGYWNlUnVsZSogcmVzdWx0
ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7
CkBAIC05MjAzLDcgKzkxNzksNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxl
KFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAg
c2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0
U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJh
dGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwg
bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVs
ZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVy
dGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9kZSkp
OwogICAgICAgICBwYWdlUnVsZSA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMu
YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC05MjgxLDcgKzkyNTcsNyBAQCBXZWJL
aXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNl
clZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtl
eWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKICAg
ICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJpbmcpOwotICAgIGtleWZyYW1lLT5zZXREZWNs
YXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEo
KSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICBrZXlm
cmFtZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRl
eCAxYWU2NzAzNGI0NTQ5MzhlZDIyYTMzNTM4Y2FkMWQ2ODBhOGE1OTM0Li5kOGFlNDI5ZTQ5YTc1
ODVkOTU3YTMwNjFmYjlhZGJiM2E2MTg5Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC02
NSw5ICs2NSw2IEBAIGNsYXNzIFdlYktpdENTU0tleWZyYW1lc1J1bGU7CiAKIGNsYXNzIENTU1Bh
cnNlciB7CiBwdWJsaWM6Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBib29sZWFuIGNvbnN0
cnVjdG9yIG9uY2UgbW92ZWQgdG8gQ1NTUGFyc2VyTW9kZSBjb21wbGV0ZWx5LgotICAgIENTU1Bh
cnNlcihib29sIHN0cmljdFBhcnNpbmcpOwogICAgIENTU1BhcnNlcihDU1NQYXJzZXJNb2RlID0g
Q1NTU3RyaWN0TW9kZSk7CiAKICAgICB+Q1NTUGFyc2VyKCk7CkBAIC03NSw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYs
IGludCBzdGFydExpbmVOdW1iZXIgPSAwLCBTdHlsZVJ1bGVSYW5nZU1hcCogcnVsZVJhbmdlTWFw
ID0gMCk7CiAgICAgUGFzc1JlZlB0cjxDU1NSdWxlPiBwYXJzZVJ1bGUoQ1NTU3R5bGVTaGVldCos
IGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBw
YXJzZUtleWZyYW1lUnVsZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BJZCwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCk7CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiwgaW50IHByb3BJZCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNl
ck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0aWMgYm9v
bCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0g
ZmFsc2UpOwogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaAppbmRl
eCBiNWVmYmQwYjVmYjI3Mjk5MDBjNDI4N2MzNjUwMjc4MjMwOWEyMGM2Li4zMmJiYWQ2NmI0YmZk
OTRlN2U5NWZjOTMzYjgzMzc5YTNmZDgwNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2Rl
LmgKQEAgLTM3LDQgKzM3LDkgQEAgZW51bSBDU1NQYXJzZXJNb2RlIHsKICAgICBTVkdBdHRyaWJ1
dGVNb2RlCiB9OwogCitpbmxpbmUgQ1NTUGFyc2VyTW9kZSB0b0NTU1BhcnNlck1vZGUoYm9vbCBp
blN0cmljdE1vZGUpCit7CisgICAgcmV0dXJuIGluU3RyaWN0TW9kZSA/IENTU1N0cmljdE1vZGUg
OiBDU1NRdWlya3NNb2RlOworfQorCiAjZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1J1bGUuaAppbmRleCA2ZjllZTQxMGJhOGI5NzU3OGI0ZWIyNzY3NTRhMGI2MTZjOWRhYzg3Li4x
ZmIyMDZiNjJhNDQ3MTM5YzE1ZmQwOWQ2NGQ2Yjg5YTg4NzliMzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxl
LmgKQEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBj
b25zdCB7IHJldHVybiB0eXBlKCkgPT0gV0VCS0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgYm9vbCBp
c0ltcG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSU1QT1JUX1JVTEU7IH0KIAot
ICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAg
ICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT5jc3NQYXJzZXJNb2RlKCk7CiAgICAgICAgIGlmIChw
YXJlbnRTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgp
LT51c2VTdHJpY3RQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
cmV0dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+Y3NzUGFyc2VyTW9kZSgpOworICAgICAgICByZXR1
cm4gQ1NTU3RyaWN0TW9kZTsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQo
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAppbmRleCAyMjBiMjA2MjYxZjQ2NTM4ZmRlOGVlMmRjNGZjOGU2OTkyOWFjOTczLi5mNTUwNzNm
YjM2ODQzYmMyNzM2MzQ5N2UxMTI1MjQzNTA1MmU2Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hl
ZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAg
ICAgOiBTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJz
ZXQoY2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0
UGFyc2luZyhmYWxzZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NRdWlya3NNb2RlKQogICAg
ICwgbV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFs
aWRDU1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCkBAIC04
OSw3ICs4OSw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0CiAgICAgOiBTdHlsZVNoZWV0KG93
bmVyUnVsZSwgaHJlZiwgYmFzZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwg
bV9sb2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFvd25lclJ1bGUg
fHwgb3duZXJSdWxlLT51c2VTdHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUo
b3duZXJSdWxlID8gb3duZXJSdWxlLT5jc3NQYXJzZXJNb2RlKCkgOiBDU1NTdHJpY3RNb2RlKQog
ICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlk
TG9hZEVycm9yT2NjdXIoZmFsc2UpCiB7CkBAIC0xODYsNyArMTg2LDcgQEAgdW5zaWduZWQgQ1NT
U3R5bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4
LCBFeGNlcHRpb24KICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQotICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NT
UGFyc2VyIHAoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBSZWZQdHI8Q1NTUnVsZT4gciA9IHAucGFy
c2VSdWxlKHRoaXMsIHJ1bGUpOwogCiAgICAgaWYgKCFyKSB7CkBAIC0zMDIsMTUgKzMwMiwxNSBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIENTU1N0eWxlU2hlZXQ6OmRldGVybWluZU5hbWVzcGFjZShj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeAogICAgIHJldHVybiBudWxsQXRvbTsgLy8gQXNzdW1l
IHdlIHdvbid0IG1hdGNoIGFueSBuYW1lc3BhY2VzLgogfQogCi1ib29sIENTU1N0eWxlU2hlZXQ6
OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBib29sIHN0cmljdCkKK2Jvb2wgQ1NT
U3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJpbmcsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKIHsKLSAgICByZXR1cm4gcGFyc2VTdHJpbmdBdExpbmUoc3RyaW5n
LCBzdHJpY3QsIDApOworICAgIHJldHVybiBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcsIGNzc1Bh
cnNlck1vZGUsIDApOwogfQogCi1ib29sIENTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nQXRMaW5l
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCwgaW50IHN0YXJ0TGluZU51bWJlcikK
K2Jvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgaW50IHN0YXJ0TGluZU51bWJlcikKIHsK
LSAgICBzZXRTdHJpY3RQYXJzaW5nKHN0cmljdCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0KTsK
KyAgICBzZXRDU1NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpOworICAgIENTU1BhcnNlciBwKGNz
c1BhcnNlck1vZGUpOwogICAgIHAucGFyc2VTaGVldCh0aGlzLCBzdHJpbmcsIHN0YXJ0TGluZU51
bWJlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApp
bmRleCA3MDJiOTI2MzgxZGU4NGUzYTM4OTkyMjk4MDQxZjBmN2M4Y2U0YTBkLi42NTI0ZDEyYWUx
OGNkNmI5YWUyNzBhZWMzNzkzZGM0MDg3OGQwZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgQ1NTU3R5bGVTaGVldF9oCiAjZGVmaW5l
IENTU1N0eWxlU2hlZXRfaAogCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUg
IlN0eWxlU2hlZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODQsOSArODUsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSA9IENT
U1N0cmljdE1vZGUpOwogCi0gICAgYm9vbCBwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcm
LCBib29sIHN0cmljdCwgaW50IHN0YXJ0TGluZU51bWJlcik7CisgICAgYm9vbCBwYXJzZVN0cmlu
Z0F0TGluZShjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlLCBpbnQgc3RhcnRMaW5lTnVtYmVy
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKTsKIApAQCAtMTAzLDggKzEwNCw4IEBA
IHB1YmxpYzoKICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsK
ICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jik7CiAK
LSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFyc2luZyA9IGI7
IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdFBh
cnNpbmc7IH0KKyAgICB2b2lkIHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAgICBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNlck1vZGU7IH0K
IAogICAgIHZvaWQgc2V0SXNVc2VyU3R5bGVTaGVldChib29sIGIpIHsgbV9pc1VzZXJTdHlsZVNo
ZWV0ID0gYjsgfQogICAgIGJvb2wgaXNVc2VyU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNVc2VyU3R5bGVTaGVldDsgfQpAQCAtMTQ4LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPE1lZGlhUXVlcnlTZXQ+IG1fbWVkaWFRdWVyaWVzOwogCiAgICAgYm9vbCBtX2xvYWRDb21w
bGV0ZWQgOiAxOwotICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKKyAgICBDU1NQYXJzZXJN
b2RlIG1fY3NzUGFyc2VyTW9kZTsKICAgICBib29sIG1faXNVc2VyU3R5bGVTaGVldCA6IDE7CiAg
ICAgYm9vbCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlciA6IDE7CiAgICAgYm9vbCBt
X2RpZExvYWRFcnJvck9jY3VyIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYjcz
NWU3Y2I3MzVjYmVhZWQ4ZGIwZDVlYjgwOGJjYmMyODMzNjY1ZC4uNmJiN2I5NDhlNzFjZWE4YTQz
OWJhZWU2ZDQ0YTNkZWJjZjAzOGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgU3RyaW5nIHBhcnNlTWVkaWFEZXNjcmlwdG9yKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0cmluZyYg
bWVkaWFTdHJpbmcpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJz
ZXIgcGFyc2VyOwogICAgIAogICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeT4gPiByZXN1bHQ7
CiAgICAgVmVjdG9yPFN0cmluZz4gbGlzdDsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIE1lZGlh
UXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJpbmcpCiAKIGJvb2wgTWVkaWFR
dWVyeVNldDo6YWRkKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCiB7Ci0gICAgQ1NTUGFyc2Vy
IHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyOwogCiAgICAgT3duUHRyPE1lZGlh
UXVlcnk+IHBhcnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZyk7
CiAgICAgaWYgKCFwYXJzZWRRdWVyeSAmJiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CkBAIC0x
NTksNyArMTU5LDcgQEAgYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29uc3QgU3RyaW5nJiBxdWVy
eVN0cmluZykKIAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBxdWVy
eVN0cmluZ1RvUmVtb3ZlKQogewotICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NT
UGFyc2VyIHBhcnNlcjsKIAogICAgIE93blB0cjxNZWRpYVF1ZXJ5PiBwYXJzZWRRdWVyeSA9IHBh
cnNlci5wYXJzZU1lZGlhUXVlcnkocXVlcnlTdHJpbmdUb1JlbW92ZSk7CiAgICAgaWYgKCFwYXJz
ZWRRdWVyeSAmJiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggNjc3OGI1YzQwZDg3NDkyYjQ1MjEzOWE1NjJiMGQ0MmRl
NzRkNDY5My4uMjY2NzY3NzhkZmU0OTU0YjA2ODFmMDE5ZjIxM2QwZmM2MDRkZTMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNDQsMjIgKzQ0LDIyIEBAIHN0
YXRpYyBQcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcCYgcHJvcGVydHlTZXRDU1NPTVdyYXBwZXJN
YXAoKQogICAgIHJldHVybiBwcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcEluc3RhbmNlOwogfQog
Ci1TdHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KCkKLSAgICA6IG1fc3RyaWN0UGFy
c2luZyhmYWxzZSkKK1N0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQorICAgIDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUp
CiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKIH0KIAogU3R5bGVQcm9wZXJ0eVNl
dDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVz
KQogICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCi0gICAgLCBtX3N0cmljdFBhcnNpbmco
dHJ1ZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NTdHJpY3RNb2RlKQogICAgICwgbV9oYXND
U1NPTVdyYXBwZXIoZmFsc2UpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLnNocmlua1RvRml0KCk7CiB9
CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkq
IHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcpCi0g
ICAgOiBtX3N0cmljdFBhcnNpbmcodXNlU3RyaWN0UGFyc2luZykKK1N0eWxlUHJvcGVydHlTZXQ6
OlN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIGludCBudW1Q
cm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNl
ck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGJlbG9uZ3MgaW4gQ1NTUGFyc2VyLgpAQCAtNDkyLDcg
KzQ5Miw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wCiAKICAgICAvLyBXaGVuIHJlcGxhY2lu
ZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8g
dGhlIGVuZCBvZiB0aGUgbGlzdC4KICAgICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRp
b24sIGFuZCBNU0lFIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgotICAgIHJl
dHVybiBDU1NQYXJzZXI6OnBhcnNlVmFsdWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9y
dGFudCwgdXNlU3RyaWN0UGFyc2luZygpLCBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgcmV0dXJu
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50
LCBjc3NQYXJzZXJNb2RlKCksIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIAogdm9pZCBTdHlsZVBy
b3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgU3R5
bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVy
LCBib29sIGltcG9ydGFuCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnBhcnNlRGVjbGFyYXRpb24o
Y29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5
bGVTaGVldCkKIHsKICAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKLSAgICBDU1NQYXJzZXIgcGFy
c2VyKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcihjc3NQYXJzZXJN
b2RlKCkpOwogICAgIHBhcnNlci5wYXJzZURlY2xhcmF0aW9uKHRoaXMsIHN0eWxlRGVjbGFyYXRp
b24sIDAsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmgKaW5kZXggOTg4Y2U2MjI1NDRhYjFhNDY1ZjBlN2U3MzgxNjliNmI4Y2I1ZDllNS4u
OTM0MzQ4OTRjM2IxNDk1OTMxN2UzNGZjNzlkNmQwNGY4OGVmZWU5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFN0eWxlUHJv
cGVydHlTZXRfaAogI2RlZmluZSBTdHlsZVByb3BlcnR5U2V0X2gKIAorI2luY2x1ZGUgIkNTU1Bh
cnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC00MCwxMyArNDEs
MTMgQEAgY2xhc3MgU3R5bGVQcm9wZXJ0eVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUHJv
cGVydHlTZXQ+IHsKIHB1YmxpYzoKICAgICB+U3R5bGVQcm9wZXJ0eVNldCgpOwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlID0gQ1NTUXVpcmtzTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3R5bGVQcm9wZXJ0eVNldCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9w
ZXJ0eVNldChjc3NQYXJzZXJNb2RlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50
IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFyc2luZykKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRp
ZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQocHJvcGVydGll
cywgbnVtUHJvcGVydGllcywgdXNlU3RyaWN0UGFyc2luZykpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQocHJvcGVydGllcywgbnVtUHJvcGVydGllcywgY3Nz
UGFyc2VyTW9kZSkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBjcmVhdGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7
CkBAIC04Niw4ICs4Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWVyZ2UoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNldCosIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGljdCA9IHRydWUpOwogCi0gICAg
dm9pZCBzZXRTdHJpY3RQYXJzaW5nKGJvb2wgYikgeyBtX3N0cmljdFBhcnNpbmcgPSBiOyB9Ci0g
ICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5n
OyB9CisgICAgdm9pZCBzZXRDU1NQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkgeyBtX2Nzc1BhcnNlck1vZGUgPSBjc3NQYXJzZXJNb2RlOyB9CisgICAgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jc3NQYXJzZXJNb2RlOyB9CiAKICAg
ICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgQ1NTU3R5
bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpOwogCkBAIC0xMTIsOSArMTEzLDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzQ1NTT01XcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDU1NPTVdy
YXBwZXI7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVByb3BlcnR5U2V0KCk7CisgICAgU3R5bGVQ
cm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZl
Y3RvcjxDU1NQcm9wZXJ0eT4mKTsKLSAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3Bl
cnR5KiwgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFyc2luZyk7CisgICAgU3R5
bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSosIGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQ
YXJzZXJNb2RlKTsKIAogICAgIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCkBAIC0xMzQs
NyArMTM1LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9w
ZXJ0aWVzOwogCi0gICAgYm9vbCBtX3N0cmljdFBhcnNpbmcgOiAxOworICAgIENTU1BhcnNlck1v
ZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIG11dGFibGUgYm9vbCBtX2hhc0NTU09NV3JhcHBlciA6
IDE7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCmluZGV4IDA3OTg3OWNiZDhkZDZjNWY5MmI3NjI0OWVl
YzRmMDRmNDlhOTYwMGYuLjVlYjVmYzQzZGYwMDEyOTY5NDRhYjAxNDllYjFiMDNlZGExYzI4NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBTdHls
ZVNoZWV0X2gKICNkZWZpbmUgU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2Rl
LmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNM
b2FkaW5nKCkgPSAwOwogCi0gICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIGJvb2wgc3RyaWN0ID0gdHJ1ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSkgPSAwOwogCiAg
ICAgdmlydHVhbCBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5k
ZXggZTM5OTg2ZTVkYzVlZDRiM2NjOGFjMDg1OTYxYWZiZmNjNjg3MDVkMS4uODQzODQ3OWM4N2Ji
YmM5ZDY2ODI4ZWVjMmVmODA2MjE1YTQyYjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYktpdENT
U0tleWZyYW1lc1J1bGU6OmFwcGVuZChXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIHJ1bGUpCiAKIHZv
aWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUp
CiB7Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIg
cChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IG5l
d1J1bGUgPSBwLnBhcnNlS2V5ZnJhbWVSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAg
ICAgaWYgKG5ld1J1bGUpCiAgICAgICAgIGFwcGVuZChuZXdSdWxlLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggOWFlZWE3NzE1OGJiY2JiNmU3YmI1NzEw
ZmE4ZTFiNjE1NjIzOWE2YS4uYWZlYmE3MWY4OWU5OTI4YjhmNGU1ZmE1MDQxYTYxMmM5ZmRmNGRl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgV2ViS2l0Q1NTTWF0cml4Ojp+V2ViS2l0Q1NTTWF0cml4KCkKIHZvaWQgV2ViS2l0Q1NTTWF0
cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFyYXRpb24gPSBT
dHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzdHJp
bmcsIHRydWUsIHRydWUsIDApKSB7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHls
ZURlY2xhcmF0aW9uLmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc3RyaW5nLCB0
cnVlLCBDU1NTdHJpY3RNb2RlLCAwKSkgewogICAgICAgICAvLyBDb252ZXJ0IHRvIFRyYW5zZm9y
bU9wZXJhdGlvbnMuIFRoaXMgY2FuIGZhaWwgaWYgYSBwcm9wZXJ0eQogICAgICAgICAvLyByZXF1
aXJlcyBzdHlsZSAoaS5lLiwgcGFyYW0gdXNlcyAnZW1zJyBvciAnZXhzJykKICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggOTZmOWNjOTlmYzYxYmZhNjY4ZGIzNDU2YTY1YjZkYmQ3OThkMzI4Yy4uMzFhMDNhMzZjMWJk
YTlhMGNhMzczYjc2MzZlMWFjOTJkYTBlZTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xMDY4LDggKzEwNjgsOCBAQCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gRG9jdW1lbnQ6
OndlYmtpdEdldEZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIC8vIE1ha2UgYSBzbG93ZXIgY2hlY2sgZm9yIGludmFsaWQgZmxvdyBuYW1l
Ci0gICAgQ1NTUGFyc2VyIHAodHJ1ZSk7Ci0gICAgaWYgKCFwLnBhcnNlRmxvd1RocmVhZChmbG93
TmFtZSwgdGhpcykpCisgICAgQ1NTUGFyc2VyIHBhcnNlcjsKKyAgICBpZiAoIXBhcnNlci5wYXJz
ZUZsb3dUaHJlYWQoZmxvd05hbWUsIHRoaXMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlm
IChSZW5kZXJWaWV3KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpKQpAQCAtMjY4Niw3ICsyNjg2
LDcgQEAgQ1NTU3R5bGVTaGVldCogRG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQoKQogICAgIC8vIFBh
cnNlIHRoZSBzaGVldCBhbmQgY2FjaGUgaXQuCiAgICAgbV9wYWdlVXNlclNoZWV0ID0gQ1NTU3R5
bGVTaGVldDo6Y3JlYXRlSW5saW5lKHRoaXMsIHNldHRpbmdzKCktPnVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oKSk7CiAgICAgbV9wYWdlVXNlclNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUp
OwotICAgIG1fcGFnZVVzZXJTaGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCwgIWluUXVp
cmtzTW9kZSgpKTsKKyAgICBtX3BhZ2VVc2VyU2hlZXQtPnBhcnNlU3RyaW5nKHVzZXJTaGVldFRl
eHQsIHRvQ1NTUGFyc2VyTW9kZSghaW5RdWlya3NNb2RlKCkpKTsKICAgICByZXR1cm4gbV9wYWdl
VXNlclNoZWV0LmdldCgpOwogfQogCkBAIC0yNzMyLDcgKzI3MzIsNyBAQCBjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIERvY3VtZW50OjpwYWdlR3JvdXBVc2VyU2hlZXRzKCkg
Y29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiBwYXJzZWRTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShjb25z
dF9jYXN0PERvY3VtZW50Kj4odGhpcyksIHNoZWV0LT51cmwoKSk7CiAgICAgICAgICAgICBwYXJz
ZWRTaGVldC0+c2V0SXNVc2VyU3R5bGVTaGVldChzaGVldC0+bGV2ZWwoKSA9PSBVc2VyU3R5bGVV
c2VyTGV2ZWwpOwotICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5z
b3VyY2UoKSwgIWluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5wYXJz
ZVN0cmluZyhzaGVldC0+c291cmNlKCksIHRvQ1NTUGFyc2VyTW9kZSghaW5RdWlya3NNb2RlKCkp
KTsKICAgICAgICAgICAgIGlmICghbV9wYWdlR3JvdXBVc2VyU2hlZXRzKQogICAgICAgICAgICAg
ICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4pOwogICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5hcHBl
bmQocGFyc2VkU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiMjli
ZmI0YTVlMjMwNWM1YTFjNmU4ZWIxZDI0YTliZGI4ZGRjYTA5Li5lMmYxYmU5MjE4NzMyMGJjOTNj
ZTc4NjJmMDQ2Mjc0YjcwMDk5OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzUxLDcg
KzE3NTEsNyBAQCBib29sIEVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcihjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAKICAgICBib29sIHN0cmlj
dFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Ci0gICAgQ1NTUGFyc2VyIHAo
c3RyaWN0UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAodG9DU1NQYXJzZXJNb2RlKHN0cmljdFBh
cnNpbmcpKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJz
ZVNlbGVjdG9yKHNlbGVjdG9yLCBkb2N1bWVudCgpLCBzZWxlY3Rvckxpc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKaW5kZXggZDMyOTgxZjljMWY3MmMx
NDkyNTgyNGI0ODY4Yzg2YzBhZjVkOTNlYS4uZjFlYTQ3NDM1ODBkZWI0NjI0MmZjZGIzOGYwZDMy
NTU3ZDFkNzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFN0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVE
YXRhOjplbnN1cmVJbmxpbmVTdHlsZShTdHlsZWRFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFt
X2lubGluZVN0eWxlRGVjbCkgewogICAgICAgICBBU1NFUlQoZWxlbWVudC0+aXNTdHlsZWRFbGVt
ZW50KCkpOwogICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IFN0eWxlUHJvcGVydHlTZXQ6OmNy
ZWF0ZSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhlbGVt
ZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9k
ZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1BhcnNlck1vZGUoZWxlbWVu
dC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUo
KSA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
aW5saW5lU3R5bGVEZWNsLmdldCgpOwogfQpAQCAtNjYsNyArNjYsNyBAQCBTdHlsZVByb3BlcnR5
U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKFN0eWxl
ZEVsZW1lbnQqCiB7CiAgICAgaWYgKG1faW5saW5lU3R5bGVEZWNsICYmICFtX2lubGluZVN0eWxl
RGVjbC0+aGFzQ1NTT01XcmFwcGVyKCkpIHsKICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBt
X2lubGluZVN0eWxlRGVjbC0+Y29weSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0
U3RyaWN0UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3Vt
ZW50KCktPmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENT
U1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKTsKICAg
ICAgICAgcmV0dXJuIG1faW5saW5lU3R5bGVEZWNsLmdldCgpOwogICAgIH0KICAgICByZXR1cm4g
ZW5zdXJlSW5saW5lU3R5bGUoZWxlbWVudCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgRWxlbWVu
dEF0dHJpYnV0ZURhdGE6OnVwZGF0ZUlubGluZVN0eWxlQXZvaWRpbmdNdXRhdGlvbihTdHlsZWRF
bGVtZW50KiBlbGVtCiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsLmNsZWFyKCk7CiAgICAgaWYg
KCFtX2lubGluZVN0eWxlRGVjbCkgewogICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IFN0eWxl
UHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3Ry
aWN0UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1Bh
cnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgp
LT5pblF1aXJrc01vZGUoKSA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKTsKICAgICB9
CiAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnBhcnNlRGVjbGFyYXRpb24odGV4dCwgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUzNDBj
YjRlMjQ2MmI4NmI1MGEyZTVmNjgxNjk5NDIyYTNkZTJhM2YuLjY4MzE5MTQ5Y2Y3MmI2OGViYzk5
OGY1Y2NhZTRmMzA2NjJlNTE2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE2NjMsNyArMTY2Myw3
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcm
IHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKTsKLSAgICBD
U1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIgcCh0b0NTU1BhcnNlck1v
ZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JM
aXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3VtZW50KCksIHF1ZXJ5U2Vs
ZWN0b3JMaXN0KTsKQEAgLTE2OTAsNyArMTY5MCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5v
ZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNv
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9j
dW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7
CisgICAgQ1NTUGFyc2VyIHAodG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAg
IENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Io
c2VsZWN0b3JzLCBkb2N1bWVudCgpLCBxdWVyeVNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDhjYmQyYTJmYzVkYjYwMTcw
YmI4Njc5Y2U3ZGYyYjJlZGM2MjQ1OWIuLjAxODAwNGJmNWQxY2NjM2IzYjJlNmQ0NjQ5ZmVmNGI3
ZWZjODE4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhT
TFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXMKIAogdm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNoZWV0
KQogewotICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LCB0cnVlKTsKKyAgICBtX3NoZWV0
LT5wYXJzZVN0cmluZyhzaGVldCwgQ1NTU3RyaWN0TW9kZSk7CiAgICAgaWYgKG1fY2FjaGVkU2hl
ZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICBtX2Nh
Y2hlZFNoZWV0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKaW5kZXggYzEyOTRl
NzQzZjRiYWIyYmFhNDBjYWZiNGIyMTFlM2MwNDVhNWQ3Yy4uZWMyMDM5ZDAzMWY0NTA2MGZhNWE5
MTY0NGJkNTZkMzQwZmI4NzZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKQEAg
LTE2NSw3ICsxNjUsNyBAQCB2b2lkIFN0eWxlRWxlbWVudDo6Y3JlYXRlU2hlZXQoRWxlbWVudCog
ZSwgaW50IHN0YXJ0TGluZU51bWJlciwgY29uc3QgU3RyaW5nJiB0ZQogICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZFBlbmRpbmdTaGVldCgpOwogICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsK
ICAgICAgICAgICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoZSwgU3RyaW5nKCks
IEtVUkwoKSwgZG9jdW1lbnQtPmlucHV0RW5jb2RpbmcoKSk7Ci0gICAgICAgICAgICBtX3NoZWV0
LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCAhZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpLCBzdGFy
dExpbmVOdW1iZXIpOworICAgICAgICAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmdBdExpbmUodGV4
dCwgZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpID8gQ1NTUXVpcmtzTW9kZSA6IENTU1N0cmljdE1v
ZGUsIHN0YXJ0TGluZU51bWJlcik7CiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJp
ZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRs
ZShlLT50aXRsZSgpKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkYjU3ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2
Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZmZDY0YTY3Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBT
dHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBz
b3VyY2VFbGVtZW50KQogCiAgICAgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1
cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBp
bmxpbmVTdHlsZS0+Y29weVByb3BlcnRpZXNGcm9tKCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwot
ICAgIGlubGluZVN0eWxlLT5zZXRTdHJpY3RQYXJzaW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+
dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBpbmxpbmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShz
b3VyY2UtPmlubGluZVN0eWxlKCktPmNzc1BhcnNlck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxl
QXR0cmlidXRlVmFsaWQoc291cmNlLT5pc1N0eWxlQXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQw
MTcwN2JlYjlkODQ3YjlkNWYzODY3Li4yODMyZTIyYzhlNDY3NDM5MWRkMTFiOTEyZjNkNmMzOTE2
MTdkMzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKQEAgLTMwNSw3ICsz
MDYsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsCiAjZW5kaWYKIAogICAgIFN0cmluZyBzaGVl
dFRleHQgPSBzaGVldC0+c2hlZXRUZXh0KGVuZm9yY2VNSU1FVHlwZSwgJnZhbGlkTUlNRVR5cGUp
OwotICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwgc3RyaWN0UGFyc2luZyk7Cisg
ICAgbV9zaGVldC0+cGFyc2VTdHJpbmcoc2hlZXRUZXh0LCB0b0NTU1BhcnNlck1vZGUoc3RyaWN0
UGFyc2luZykpOwogCiAgICAgLy8gSWYgd2UncmUgbG9hZGluZyBhIHN0eWxlc2hlZXQgY3Jvc3Mt
b3JpZ2luLCBhbmQgdGhlIE1JTUUgdHlwZSBpcyBub3QKICAgICAvLyBzdGFuZGFyZCwgcmVxdWly
ZSB0aGUgQ1NTIHRvIGF0IGxlYXN0IHN0YXJ0IHdpdGggYSBzeW50YWN0aWNhbGx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAppbmRleCA4YjI2NTc0NzQ5YTc3NTcxNjY5YmZmYmMxMDdmNjA4MTljYTY5OTgxLi5lYjRh
OTlkYmVlMDBhN2VmNjRlMzg1Nzg1ZjU0N2VlN2YwYTJiMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTE4OTYsNyArMTg5Niw3IEBAIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQo
KSBjb25zdAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3Ry
aW5nJiBuZXdGb250KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiB0ZW1wRGVjbCA9
IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIENTU1BhcnNlciBwYXJzZXIoIW1fdXNl
c0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpOworICAgIENTU1BhcnNlciBwYXJzZXIodG9DU1NQ
YXJzZXJNb2RlKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKSk7CiAKICAgICBTdHJp
bmcgZGVjbGFyYXRpb25UZXh0KCJmb250OiAiKTsKICAgICBkZWNsYXJhdGlvblRleHQgKz0gbmV3
Rm9udDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcAppbmRleCAwNDI0YTVmYTg2ZGY0YzE4ZGNhMWRkYTM3MjA3OGM1OGViZTM1MWU2
Li45MmMxOThjOTVhZTRjZWJlMjVkNTNjZjM2NTQwMGNjZWRiOGRlNzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCkBAIC00
NCw3ICs0NCw3IEBAIENvbnRlbnRTZWxlY3RvclF1ZXJ5OjpDb250ZW50U2VsZWN0b3JRdWVyeShj
b25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXI7
CiAgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3IoaW5zZXJ0aW9uUG9pbnQtPnNlbGVjdCgpLCBpbnNl
cnRpb25Qb2ludC0+ZG9jdW1lbnQoKSwgbV9zZWxlY3Rvckxpc3QpOwogCiAgICAgbV9pc1ZhbGlk
U2VsZWN0b3IgPSBDb250ZW50U2VsZWN0b3JRdWVyeTo6dmFsaWRhdGVTZWxlY3Rvckxpc3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCBjYmQzMTAwYjJmNWYyOTdjMmM4ODRlMjM3NTRmMTlhMmQwNDg1ODkzLi4zYjllNGVlYmVh
ZWYyZTc5NDVjNDA3MThlZTQ5ZjIzZWJjNWI5ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC03MTksNyArNzE5LDcgQEAgU3Ry
aW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OmZpbmFsVVJMKCkgY29uc3QKIHZvaWQgSW5zcGVjdG9y
U3R5bGVTaGVldDo6cmVwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAg
IG1fcGFnZVN0eWxlU2hlZXQtPmNsZWFyUnVsZXMoKTsKLSAgICBtX3BhZ2VTdHlsZVNoZWV0LT5w
YXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJzaW5nKCkpOwor
ICAgIG1fcGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1fcGFnZVN0eWxlU2hlZXQt
PmNzc1BhcnNlck1vZGUoKSk7CiAgICAgbV9wYWdlU3R5bGVTaGVldC0+c3R5bGVTaGVldENoYW5n
ZWQoKTsKICAgICBtX2luc3BlY3RvclN0eWxlcy5jbGVhcigpOwogICAgIGZpcmVTdHlsZVNoZWV0
Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGNl
ZWMwMWNjOWY5YmU0MzYwZDE1NGU2OTY0YWZkZjEzMmVmNzYyMGQuLjVlMDNkNzJkNzE5ZmJlNjE1
YTY2ZDdmODU0MDA5M2U5ZTViNDg5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJh
cmVEYXRhLmgKQEAgLTIwLDYgKzIwLDcgQEAKICNpZm5kZWYgU1ZHRWxlbWVudFJhcmVEYXRhX2gK
ICNkZWZpbmUgU1ZHRWxlbWVudFJhcmVEYXRhX2gKIAorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTc5LDcgKzgwLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgaWYgKCFtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcykgewog
ICAgICAgICAgICAgbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMgPSBTdHlsZVByb3BlcnR5
U2V0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVz
LT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsKKyAgICAgICAgICAgIG1fYW5pbWF0ZWRTTUlMU3R5
bGVQcm9wZXJ0aWVzLT5zZXRDU1NQYXJzZXJNb2RlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy5nZXQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCmluZGV4IDBj
NjdhYzg5OWI0YjAwOThlMzgwZmEyYTE5ZmRjOTczZjU0MGIyZjUuLmM3NGM5MTVjMDM4YzM4Yzdl
Y2VmZDA1OWZlOTM3NGMwNTc2MmQ4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIGlubGluZSBTVkdGb250RmFjZUVsZW1lbnQ6
OlNWR0ZvbnRGYWNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1CiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSk7CiAgICAgUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFyYXRpb24gPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
KTsKLSAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRTdHJpY3RQYXJzaW5nKHRydWUpOworICAgIHN0
eWxlRGVjbGFyYXRpb24tPnNldENTU1BhcnNlck1vZGUoQ1NTU3RyaWN0TW9kZSk7CiAgICAgbV9m
b250RmFjZVJ1bGUtPnNldERlY2xhcmF0aW9uKHN0eWxlRGVjbGFyYXRpb24ucmVsZWFzZSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDljNDI3ZDFl
ZDZkM2U0NWM4Mzc1MGUzNzVkNGZhODhlMGM5YWQyZmYuLmJhMWMzZmUyN2IzM2U4MmE3OGM3OGRj
YzM2NWVjNTg2NGE5ZjE2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKQEAgLTQyMSw3ICs0MjEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTVkdTdHlsZWRFbGVt
ZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJv
cGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsK
KyAgICBzdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICBpbnQg
cHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1
dGVOYW1lKGF0dHItPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQs
IGF0dHItPnZhbHVlKCkpOwogICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShw
cm9wZXJ0eUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCmluZGV4IDE3YzBlY2JlOTY3
MzJlNjc4ZGU4Y2RhYzM3MTEwNjUyMmJkZWRkZjUuLjNmNzAxY2UyZmRhNjhiMmQ5OGMwN2NlZGQx
YmUwYTAyMjdhMjRmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgeyByZXR1
cm4gInRleHQveG1sIjsgfQogCi0gICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0
cmluZyAmc3RyaW5nLCBib29sIHN0cmljdCA9IHRydWUpOworICAgIHZpcnR1YWwgYm9vbCBwYXJz
ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlTW9kZSA9IENTU1N0
cmljdE1vZGUpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKTsKICAgICB2b2lk
IGNoZWNrTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVT
aGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcAppbmRleCA3NTIxYjZkNGQzYjc3NjczZTM3MDQ3MGQyOWU2OGM3MWUzMjViMGNjLi40OTM2
ZGUxYTUzNjMwZWFmNjlkMzU1NzRjNmM4YTNjNzc2NDVjNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogWFNMU3R5bGVTaGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAg
IHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotYm9vbCBYU0xT
dHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkKK2Jvb2wg
WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNl
ck1vZGUpCiB7CiAgICAgLy8gUGFyc2UgaW4gYSBzaW5nbGUgY2h1bmsgaW50byBhbiB4bWxEb2NQ
dHIKICAgICBjb25zdCBVQ2hhciBCT00gPSAweEZFRkY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHls
ZVNoZWV0UXQuY3BwCmluZGV4IDhhMTBmZDkwYjQ2MjBhYWZkMDY5ZWE0OGE3YWFmNGE3ZjAwZDhh
OTguLmE4ZTY2NzI0ZTBmZjViMzRlY2IxNDYzNmM5NjIyNTcyYTlkMjYyZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0UXQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIENhY2hlZFJlc291
cmNlTG9hZGVyKiBYU0xTdHlsZVNoZWV0OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0
dXJuIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogfQogCi1ib29sIFhTTFN0eWxl
U2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sKQorYm9vbCBYU0xT
dHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VNb2Rl
KQogewogICAgIC8vIEZJWE1FOiBGaXggUVhtbFF1ZXJ5IHNvIHRoYXQgaXQgYWxsb3dzIGNvbXBp
bGluZyB0aGUgc3R5bGVzaGVldCBiZWZvcmUgc2V0dGluZyB0aGUgZG9jdW1lbnQKICAgICAvLyB0
byBiZSB0cmFuc2Zvcm1lZC4gVGhpcyB3YXkgd2UgY291bGQgbm90IG9ubHkgY2hlY2sgaWYgdGhl
IHN0eWxlc2hlZXQgaXMgY29ycmVjdCBiZWZvcmUgdXNpbmcgaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134217</attachid>
            <date>2012-03-27 21:52:50 -0700</date>
            <delta_ts>2012-03-28 07:46:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120327215249.patch</filename>
            <type>text/plain</type>
            <size>45476</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwY2UwNTM5MTE1MTJj
NTg4OGIyZDdkMTdhOTVhNDA3YTUwOGIyMS4uYjhjMDJhNDEzMmM3NmYwZDRjNmQwZmZhYWQ2ODlk
YWY3Nzc0Y2M4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wMy0yNyAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSB0aGUgbmV3IENTU1BhcnNlck1vZGUgZW51bSB0byBtb3Jl
IGNsYXNzZXMuIFNWRyBjbGFzc2VzIG1ha2UgdXNlIG9mIFNWR0F0dHJpYnV0ZU1vZGUgZm9yIENT
UyBwYXJzaW5nIGFscmVhZHkuCisgICAgICAgIEJ1dCBTVkdBdHRyaWJ1dGVNb2RlIGRvZXMgbm90
IGRpZmZlciBmcm9tIENTU1F1aXJrc01vZGUgYXQgdGhlIG1vbWVudC4gVGhpcyB3aWxsIGNhaG5n
ZSB3aXRoIGEgZm9sbG93dXAgcGF0Y2ggb24gYnVnIDQ2MTEyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIEV2ZXJ5dGhpbmcgZ2V0cyBjb3ZlcmVk
IGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFS
dWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzU3RyaWN0UGFyc2VyTW9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNp
bXBsZUxlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250
RmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpj
cmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUtleWZy
YW1lUnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2Vy
KTogUmVtb3ZlZCBjb25zdHJ1Y3RvciB3aXRoIGJvb2xlYW4gYXJndW1lbnQuIFdlIGp1c3QgdXNl
IHRoZSBDU1NQYXJzZXJNb2RlIGVudW0gbm93LgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2Rl
Lmg6CisgICAgICAgICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlOjpjc3NQYXJzZXJNb2RlKTogUmVuYW1lZCB1c2VT
dHJpY3RQYXJzaW5nIHRvIGNzc1BhcnNlck1vZGUgc2luY2UgaXQgcmV0dXJucyBDU1NQYXJzZXJN
b2RlIGluc3RlYWQgb2YgYSBib29sZWFuLiAKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2hlZXQ6OnNldENTU1BhcnNlck1vZGUpOiBSZW5hbWVkIHNldFN0cmljdFBhcnNpbmcgdG8g
c2V0Q1NTUGFyc2VyTW9kZSBzaW5jZSB3ZSBzZXQgYW4gZW51bSBub3cuCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNoZWV0Ojpjc3NQYXJzZXJNb2RlKToKKyAgICAgICAgKiBjc3MvTWVkaWFM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5U2V0OjpyZW1vdmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAg
ICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpzZXRD
U1NQYXJzZXJNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmNzc1Bh
cnNlck1vZGUpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKFN0eWxlU2hlZXQpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0tleWZyYW1l
c1J1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJr
aXRHZXRGbG93QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlVXNlclNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlR3JvdXBVc2VyU2hlZXRzKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3
ZWJraXRNYXRjaGVzU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlSW5s
aW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3Vy
ZU11dGFibGVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKToKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpwYXJzZVN0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldCk6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50
Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHls
ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcyk6CisgICAgICAg
ICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250
RmFjZUVsZW1lbnQ6OlNWR0ZvbnRGYWNlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJl
c2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5oOgorICAg
ICAgICAoWFNMU3R5bGVTaGVldCk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAg
ICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0
eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKwogMjAxMi0wMy0yNyAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBXZWJLaXQgcHJvcGVybHkgbG9hZCBh
IHN0YWdlZCBmcmFtZXdvcmsgd2hlbiBzb2Z0IGxpbmtpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAKaW5kZXggZjE3YTE0MWU0YTMwZWY2NTgzZjkwNmNiMzc4YmE3YTllM2FlODFi
Zi4uMDE2YjdjYmU1NzY1MTgyZGI0Nzg5MmZhMDFjNGNmYzYwNTA3MzM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNjgsNyArNjgsOCBAQCB2b2lkIENTU0ltcG9ydFJ1
bGU6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjbwogICAgIGJvb2wgY3Jvc3NPcmlnaW5DU1MgPSBmYWxzZTsKICAgICBib29sIHZhbGlk
TUlNRVR5cGUgPSBmYWxzZTsKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHls
ZVNoZWV0KCk7Ci0gICAgYm9vbCBzdHJpY3QgPSAhcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0
UGFyc2luZygpOworICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSA9IHBhcmVudCA/IHBh
cmVudC0+Y3NzUGFyc2VyTW9kZSgpIDogQ1NTU3RyaWN0TW9kZTsKKyAgICBib29sIHN0cmljdCA9
IGNzc1BhcnNlck1vZGUgPT0gQ1NTU3RyaWN0TW9kZTsKICAgICBib29sIGVuZm9yY2VNSU1FVHlw
ZSA9IHN0cmljdDsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJlbnQgPyBwYXJlbnQtPmZp
bmREb2N1bWVudCgpIDogMDsKICAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gZG9j
dW1lbnQgJiYgZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQtPnNldHRpbmdzKCktPm5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CkBAIC04Miw3ICs4Myw3IEBAIHZvaWQgQ1NTSW1wb3J0
UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJh
c2VVUkwsIGNvCiAjZW5kaWYKIAogICAgIFN0cmluZyBzaGVldFRleHQgPSBzaGVldC0+c2hlZXRU
ZXh0KGVuZm9yY2VNSU1FVHlwZSwgJnZhbGlkTUlNRVR5cGUpOwotICAgIG1fc3R5bGVTaGVldC0+
cGFyc2VTdHJpbmcoc2hlZXRUZXh0LCBzdHJpY3QpOworICAgIG1fc3R5bGVTaGVldC0+cGFyc2VT
dHJpbmcoc2hlZXRUZXh0LCBjc3NQYXJzZXJNb2RlKTsKIAogICAgIGlmICghZG9jdW1lbnQgfHwg
IWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGJhc2VVUkwpKQogICAgICAg
ICBjcm9zc09yaWdpbkNTUyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTWVkaWFSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCmlu
ZGV4IGZlNzY1MGZhMzQ0ZGViZTBhMGQ5YTVmYWI0NTIxZTJiMzk1YjMxY2QuLjVlZDVlZmMyMjVm
Y2RlNmQwOGVjZjRkZTE4NzhjNjY2NzRhMDNmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1
bGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHVuc2lnbmVkIENTU01lZGlhUnVsZTo6aW5zZXJ0UnVs
ZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25DCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7
CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBSZWZQdHI8Q1NTUnVsZT4g
bmV3UnVsZSA9IHAucGFyc2VSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAgICAgaWYg
KCFuZXdSdWxlKSB7CiAgICAgICAgIC8vIFNZTlRBWF9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lm
aWVkIHJ1bGUgaGFzIGEgc3ludGF4IGVycm9yIGFuZCBpcyB1bnBhcnNhYmxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAppbmRleCA1MTdhODVhYWNiYmJiZTY2MjIyMDgwNjJkYzkyMzhmZmMzM2Qy
NmEzLi5iOGM2MjRiMWVjYmQwOWYzYTdkYzk4YTAzZGU5MDk1ZDM4MDJkZTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTgxLDM4ICsxODEsNiBAQCBpbmxpbmUgdm9pZCBDU1NQYXJz
ZXI6OmVuc3VyZUNTU1ZhbHVlUG9vbCgpCiAgICAgICAgIG1fY3NzVmFsdWVQb29sID0gQ1NTVmFs
dWVQb29sOjpjcmVhdGUoKTsKIH0KIAotQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQ
YXJzaW5nKQotICAgIDogbV9jc3NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcgPyBDU1NTdHJpY3RN
b2RlIDogQ1NTUXVpcmtzTW9kZSkKLSAgICAsIG1faW1wb3J0YW50KGZhbHNlKQotICAgICwgbV9p
ZCgwKQotICAgICwgbV9zdHlsZVNoZWV0KDApCi0gICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkK
LSAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQotICAgICwgbV9pbXBsaWNpdFNob3J0aGFuZChm
YWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNlKQotICAgICwgbV9oYWRT
eW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQotICAgICwgbV9kZWZhdWx0TmFtZXNwYWNl
KHN0YXJBdG9tKQotICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRpb24oZmFsc2UpCi0gICAg
LCBtX3NlbGVjdG9yTGlzdFJhbmdlKDAsIDApCi0gICAgLCBtX3J1bGVCb2R5UmFuZ2UoMCwgMCkK
LSAgICAsIG1fcHJvcGVydHlSYW5nZShVSU5UX01BWCwgVUlOVF9NQVgpCi0gICAgLCBtX3J1bGVS
YW5nZU1hcCgwKQotICAgICwgbV9jdXJyZW50UnVsZURhdGEoMCkKLSAgICAsIG1fcGFyc2luZ01v
ZGUoTm9ybWFsTW9kZSkKLSAgICAsIG1fY3VycmVudENoYXJhY3RlcigwKQotICAgICwgbV90b2tl
bigwKQotICAgICwgbV9saW5lTnVtYmVyKDApCi0gICAgLCBtX2xhc3RTZWxlY3RvckxpbmVOdW1i
ZXIoMCkKLSAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVlKQotICAgICwgbV9hbGxvd05hbWVz
cGFjZURlY2xhcmF0aW9ucyh0cnVlKQotewotI2lmIFlZREVCVUcgPiAwCi0gICAgICAgIGNzc3l5
ZGVidWcgPSAxOwotI2VuZGlmCi0gICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YTo6aW5pdCgp
OwotfQotCi0KIENTU1BhcnNlcjo6Q1NTUGFyc2VyKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKICAgICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9pbXBvcnRh
bnQoZmFsc2UpCkBAIC0zNTQsOCArMzIyLDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbG9y
UHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhcnNl
Q29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQorc3RhdGljIGlubGluZSBib29sIGlzU3RyaWN0
UGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgLy8gRklYTUU6
IFNWRyBwcmVzbmV0YXRpb24gYXR0cmlidXRlIHZhbHVlcyBzaG91bGQgYmUgcGFyc2VkIGluIHN0
cmljdCBtb2RlIGFzIHdlbGwuCisgICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gQ1NTU3RyaWN0
TW9kZTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
aW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogeworICAgIGJvb2wgc3RyaWN0ID0gaXNTdHJpY3RQYXJzZXJNb2Rl
KGNzc1BhcnNlck1vZGUpOwogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFpc0NvbG9yUHJvcGVydHlJRChwcm9wZXJ0eUlkKSkKQEAgLTQ0
MCw5ICs0MTUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJ
RChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRp
b24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQs
IGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBi
b29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24s
IGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hl
ZXQpCiB7CiAgICAgYm9vbCBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzOworICAgIGJvb2wgc3RyaWN0
ID0gaXNTdHJpY3RQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpOwogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQpAQCAtOTY2LDIwICs5NDIs
MjAgQEAgc3RhdGljIGJvb2wgcGFyc2VLZXl3b3JkVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVj
bGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb24KIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
U1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZywg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBp
ZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBz
dHJpbmcsIGZhbHNlLCBmYWxzZSwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgIGlmICghcGFyc2VW
YWx1ZShkdW1teVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIHN0cmluZywgZmFs
c2UsIENTU1F1aXJrc01vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTVmFsdWVMaXN0PihkdW1teVN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBz
dHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQorYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlk
LCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7Ci0gICAgaWYg
KHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywg
aW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VTaW1w
bGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQs
IGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5n
LCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgIGlmIChwYXJzZUNv
bG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQ
YXJzZXJNb2RlLCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChwYXJzZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
Q1NTUGFyc2VyIHBhcnNlcihzdHJpY3QpOworICAgIENTU1BhcnNlciBwYXJzZXIoY3NzUGFyc2Vy
TW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0
eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCkBAIC0xMDE2
LDcgKzk5Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoZmFzdFBhcnNlQ29sb3Io
Y29sb3IsIHN0cmluZywgc3RyaWN0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBDU1NQ
YXJzZXIgcGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXI7CiAKICAgICAvLyBJbiBj
YXNlIHRoZSBmYXN0LXBhdGggcGFyc2VyIGRpZG4ndCB1bmRlcnN0YW5kIHRoZSBjb2xvciwgdHJ5
IHRoZSBmdWxsIHBhcnNlci4KICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKHN0cmluZykpCkBA
IC05MDk0LDcgKzkwNzAsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShW
ZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBydWxl
LT5zdHlsZVJ1bGUoKS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsKICAgICAgICAg
aWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICAgICAgZGVsZXRlRm9udEZhY2VP
bmx5VmFsdWVzKCk7Ci0gICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0
eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNl
ZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgICAgICBydWxlLT5zdHls
ZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQ
cm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJN
b2RlKSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkUnVs
ZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7
CkBAIC05MTMyLDcgKzkxMDgsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNl
UnVsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVs
ZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgcnVsZS0+c2V0
RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5k
YXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAg
cnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIENTU0ZvbnRGYWNlUnVsZSogcmVzdWx0
ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7
CkBAIC05MjAzLDcgKzkxNzksNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxl
KFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAg
c2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0
U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJh
dGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwg
bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVs
ZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVy
dGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9kZSkp
OwogICAgICAgICBwYWdlUnVsZSA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMu
YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC05MjgxLDcgKzkyNTcsNyBAQCBXZWJL
aXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNl
clZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtl
eWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKICAg
ICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJpbmcpOwotICAgIGtleWZyYW1lLT5zZXREZWNs
YXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEo
KSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICBrZXlm
cmFtZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRl
eCAxYWU2NzAzNGI0NTQ5MzhlZDIyYTMzNTM4Y2FkMWQ2ODBhOGE1OTM0Li5kOGFlNDI5ZTQ5YTc1
ODVkOTU3YTMwNjFmYjlhZGJiM2E2MTg5Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC02
NSw5ICs2NSw2IEBAIGNsYXNzIFdlYktpdENTU0tleWZyYW1lc1J1bGU7CiAKIGNsYXNzIENTU1Bh
cnNlciB7CiBwdWJsaWM6Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBib29sZWFuIGNvbnN0
cnVjdG9yIG9uY2UgbW92ZWQgdG8gQ1NTUGFyc2VyTW9kZSBjb21wbGV0ZWx5LgotICAgIENTU1Bh
cnNlcihib29sIHN0cmljdFBhcnNpbmcpOwogICAgIENTU1BhcnNlcihDU1NQYXJzZXJNb2RlID0g
Q1NTU3RyaWN0TW9kZSk7CiAKICAgICB+Q1NTUGFyc2VyKCk7CkBAIC03NSw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYs
IGludCBzdGFydExpbmVOdW1iZXIgPSAwLCBTdHlsZVJ1bGVSYW5nZU1hcCogcnVsZVJhbmdlTWFw
ID0gMCk7CiAgICAgUGFzc1JlZlB0cjxDU1NSdWxlPiBwYXJzZVJ1bGUoQ1NTU3R5bGVTaGVldCos
IGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBw
YXJzZUtleWZyYW1lUnVsZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BJZCwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCk7CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiwgaW50IHByb3BJZCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNl
ck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0aWMgYm9v
bCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0g
ZmFsc2UpOwogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaAppbmRl
eCBiNWVmYmQwYjVmYjI3Mjk5MDBjNDI4N2MzNjUwMjc4MjMwOWEyMGM2Li40OTViZDM1NGFiNGFk
ZTZhMGQ2ZTYxNjI3YWI1MDM2N2E1NGUwZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2Rl
LmgKQEAgLTMwLDExICszMCwxNyBAQAogI2lmbmRlZiBDU1NQYXJzZXJNb2RlX2gKICNkZWZpbmUg
Q1NTUGFyc2VyTW9kZV9oCiAKLWVudW0gQ1NTUGFyc2VyTW9kZSB7Ci0gICAgQ1NTUXVpcmtzTW9k
ZSwKK2VudW0geworICAgIENTU1F1aXJrc01vZGUgPSAxLAogICAgIENTU1N0cmljdE1vZGUsCiAg
ICAgLy8gU1ZHIHNob3VsZCBhbHdheXMgYmUgaW4gc3RyaWN0IG1vZGUuIEZvciBTVkcgYXR0cmli
dXRlcywgdGhlIHJ1bGVzIGRpZmZlciB0byBzdHJpY3Qgc29tZXRpbWVzLgogICAgIFNWR0F0dHJp
YnV0ZU1vZGUKIH07Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQ1NTUGFyc2VyTW9kZTsKKworaW5s
aW5lIENTU1BhcnNlck1vZGUgdG9DU1NQYXJzZXJNb2RlKGJvb2wgaW5TdHJpY3RNb2RlKQorewor
ICAgIHJldHVybiBpblN0cmljdE1vZGUgPyBDU1NTdHJpY3RNb2RlIDogQ1NTUXVpcmtzTW9kZTsK
K30KIAogI2VuZGlmIC8vIENTU1BhcnNlck1vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKaW5kZXggNmY5
ZWU0MTBiYThiOTc1NzhiNGViMjc2NzU0YTBiNjE2YzlkYWM4Ny4uMWZiMjA2YjYyYTQ0NzEzOWMx
NWZkMDlkNjRkNmI4OWE4ODc5YjM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCkBAIC02OSwxMyArNjks
MTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWdpb25SdWxlKCkgY29uc3QgeyByZXR1cm4gdHlw
ZSgpID09IFdFQktJVF9SRUdJT05fUlVMRTsgfQogICAgIGJvb2wgaXNJbXBvcnRSdWxlKCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IElNUE9SVF9SVUxFOyB9CiAKLSAgICBib29sIHVzZVN0cmlj
dFBhcnNpbmcoKSBjb25zdAorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAocGFyZW50UnVsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHBh
cmVudFJ1bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpOworICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dFJ1bGUoKS0+Y3NzUGFyc2VyTW9kZSgpOwogICAgICAgICBpZiAocGFyZW50U3R5bGVTaGVldCgp
KQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+dXNlU3RyaWN0UGFyc2lu
ZygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRTdHls
ZVNoZWV0KCktPmNzc1BhcnNlck1vZGUoKTsKKyAgICAgICAgcmV0dXJuIENTU1N0cmljdE1vZGU7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMjIwYjIwNjI2
MWY0NjUzOGZkZThlZTJkYzRmYzhlNjk5MjlhYzk3My4uZjU1MDczZmIzNjg0M2JjMjczNjM0OTdl
MTEyNTI0MzUwNTJlNmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5v
ZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYgogICAgIDogU3R5bGVTaGVldChw
YXJlbnROb2RlLCBocmVmLCBiYXNlVVJMKQogICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCiAgICAg
LCBtX2xvYWRDb21wbGV0ZWQoZmFsc2UpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoZmFsc2UpCisg
ICAgLCBtX2Nzc1BhcnNlck1vZGUoQ1NTUXVpcmtzTW9kZSkKICAgICAsIG1faXNVc2VyU3R5bGVT
aGVldChmYWxzZSkKICAgICAsIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKHRydWUp
CiAgICAgLCBtX2RpZExvYWRFcnJvck9jY3VyKGZhbHNlKQpAQCAtODksNyArODksNyBAQCBDU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSwgY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdAogICAgIDogU3R5bGVTaGVldChvd25lclJ1bGUsIGhyZWYsIGJh
c2VVUkwpCiAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChm
YWxzZSkKLSAgICAsIG1fc3RyaWN0UGFyc2luZyghb3duZXJSdWxlIHx8IG93bmVyUnVsZS0+dXNl
U3RyaWN0UGFyc2luZygpKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKG93bmVyUnVsZSA/IG93bmVy
UnVsZS0+Y3NzUGFyc2VyTW9kZSgpIDogQ1NTU3RyaWN0TW9kZSkKICAgICAsIG1faGFzU3ludGFj
dGljYWxseVZhbGlkQ1NTSGVhZGVyKHRydWUpCiAgICAgLCBtX2RpZExvYWRFcnJvck9jY3VyKGZh
bHNlKQogewpAQCAtMTg2LDcgKzE4Niw3IEBAIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2Vy
dFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uCiAgICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBD
U1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBwKGNzc1BhcnNl
ck1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IHIgPSBwLnBhcnNlUnVsZSh0aGlzLCBydWxl
KTsKIAogICAgIGlmICghcikgewpAQCAtMzAyLDE1ICszMDIsMTUgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBDU1NTdHlsZVNoZWV0OjpkZXRlcm1pbmVOYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5n
JiBwcmVmaXgKICAgICByZXR1cm4gbnVsbEF0b207IC8vIEFzc3VtZSB3ZSB3b24ndCBtYXRjaCBh
bnkgbmFtZXNwYWNlcy4KIH0KIAotYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25z
dCBTdHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QpCitib29sIENTU1N0eWxlU2hlZXQ6OnBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
CiB7Ci0gICAgcmV0dXJuIHBhcnNlU3RyaW5nQXRMaW5lKHN0cmluZywgc3RyaWN0LCAwKTsKKyAg
ICByZXR1cm4gcGFyc2VTdHJpbmdBdExpbmUoc3RyaW5nLCBjc3NQYXJzZXJNb2RlLCAwKTsKIH0K
IAotYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBzdHJpY3QsIGludCBzdGFydExpbmVOdW1iZXIpCitib29sIENTU1N0eWxlU2hl
ZXQ6OnBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIGludCBzdGFydExpbmVOdW1iZXIpCiB7Ci0gICAgc2V0U3RyaWN0UGFy
c2luZyhzdHJpY3QpOwotICAgIENTU1BhcnNlciBwKHN0cmljdCk7CisgICAgc2V0Q1NTUGFyc2Vy
TW9kZShjc3NQYXJzZXJNb2RlKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKTsKICAg
ICBwLnBhcnNlU2hlZXQodGhpcywgc3RyaW5nLCBzdGFydExpbmVOdW1iZXIpOwogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggNzAyYjkyNjM4MWRl
ODRlM2EzODk5MjI5ODA0MWYwZjdjOGNlNGEwZC4uNjUyNGQxMmFlMThjZDZiOWFlMjcwYWVjMzc5
M2RjNDA4NzhkMGQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC0yMSw2ICsy
MSw3IEBACiAjaWZuZGVmIENTU1N0eWxlU2hlZXRfaAogI2RlZmluZSBDU1NTdHlsZVNoZWV0X2gK
IAorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDkgKzg1LDkgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdHlsZVNoZWV0Q2hhbmdlZCgpOwogCi0gICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNv
bnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBib29sIHBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKIAot
ICAgIGJvb2wgcGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QsIGlu
dCBzdGFydExpbmVOdW1iZXIpOworICAgIGJvb2wgcGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3Ry
aW5nJiwgQ1NTUGFyc2VyTW9kZSwgaW50IHN0YXJ0TGluZU51bWJlcik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkaW5nKCk7CiAKQEAgLTEwMyw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgS1VS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CiAgICAgdm9pZCBhZGRTdWJy
ZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpOwogCi0gICAgdm9pZCBzZXRTdHJp
Y3RQYXJzaW5nKGJvb2wgYikgeyBtX3N0cmljdFBhcnNpbmcgPSBiOyB9Ci0gICAgYm9vbCB1c2VT
dHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9CisgICAgdm9p
ZCBzZXRDU1NQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkgeyBtX2Nzc1Bh
cnNlck1vZGUgPSBjc3NQYXJzZXJNb2RlOyB9CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jc3NQYXJzZXJNb2RlOyB9CiAKICAgICB2b2lkIHNldElz
VXNlclN0eWxlU2hlZXQoYm9vbCBiKSB7IG1faXNVc2VyU3R5bGVTaGVldCA9IGI7IH0KICAgICBi
b29sIGlzVXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX2lzVXNlclN0eWxlU2hlZXQ7
IH0KQEAgLTE0OCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBtX21lZGlhUXVlcmllczsKIAogICAgIGJvb2wgbV9sb2FkQ29tcGxldGVkIDogMTsKLSAgICBi
b29sIG1fc3RyaWN0UGFyc2luZyA6IDE7CisgICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNlck1v
ZGU7CiAgICAgYm9vbCBtX2lzVXNlclN0eWxlU2hlZXQgOiAxOwogICAgIGJvb2wgbV9oYXNTeW50
YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIgOiAxOwogICAgIGJvb2wgbV9kaWRMb2FkRXJyb3JPY2N1
ciA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCmluZGV4IGI3MzVlN2NiNzM1Y2JlYWVkOGRi
MGQ1ZWI4MDhiY2JjMjgzMzY2NWQuLjZiYjdiOTQ4ZTcxY2VhOGE0MzliYWVlNmQ0NGEzZGViY2Yw
MzhmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3Rh
dGljIFN0cmluZyBwYXJzZU1lZGlhRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHN0cmluZykKIAog
Ym9vbCBNZWRpYVF1ZXJ5U2V0OjpwYXJzZShjb25zdCBTdHJpbmcmIG1lZGlhU3RyaW5nKQogewot
ICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcjsKICAgICAK
ICAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+ID4gcmVzdWx0OwogICAgIFZlY3RvcjxTdHJp
bmc+IGxpc3Q7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBNZWRpYVF1ZXJ5U2V0OjpwYXJzZShj
b25zdCBTdHJpbmcmIG1lZGlhU3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25z
dCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQogewotICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7Cisg
ICAgQ1NTUGFyc2VyIHBhcnNlcjsKIAogICAgIE93blB0cjxNZWRpYVF1ZXJ5PiBwYXJzZWRRdWVy
eSA9IHBhcnNlci5wYXJzZU1lZGlhUXVlcnkocXVlcnlTdHJpbmcpOwogICAgIGlmICghcGFyc2Vk
UXVlcnkgJiYgbV9mYWxsYmFja1RvRGVzY3JpcHRvcikgewpAQCAtMTU5LDcgKzE1OSw3IEBAIGJv
b2wgTWVkaWFRdWVyeVNldDo6YWRkKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCiAKIGJvb2wg
TWVkaWFRdWVyeVNldDo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmdUb1JlbW92ZSkK
IHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXI7CiAK
ICAgICBPd25QdHI8TWVkaWFRdWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1
ZXJ5KHF1ZXJ5U3RyaW5nVG9SZW1vdmUpOwogICAgIGlmICghcGFyc2VkUXVlcnkgJiYgbV9mYWxs
YmFja1RvRGVzY3JpcHRvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
CmluZGV4IDY3NzhiNWM0MGQ4NzQ5MmI0NTIxMzlhNTYyYjBkNDJkZTc0ZDQ2OTMuLjI2Njc2Nzc4
ZGZlNDk1NGIwNjgxZjAxOWYyMTNkMGZjNjA0ZGUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTQ0LDIyICs0NCwyMiBAQCBzdGF0aWMgUHJvcGVydHlTZXRD
U1NPTVdyYXBwZXJNYXAmIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwKCkKICAgICByZXR1cm4g
cHJvcGVydHlTZXRDU1NPTVdyYXBwZXJNYXBJbnN0YW5jZTsKIH0KIAotU3R5bGVQcm9wZXJ0eVNl
dDo6U3R5bGVQcm9wZXJ0eVNldCgpCi0gICAgOiBtX3N0cmljdFBhcnNpbmcoZmFsc2UpCitTdHls
ZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKKyAgICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9oYXNDU1NP
TVdyYXBwZXIoZmFsc2UpCiB7CiB9CiAKIFN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlT
ZXQoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICA6IG1fcHJvcGVy
dGllcyhwcm9wZXJ0aWVzKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKHRydWUpCisgICAgLCBtX2Nz
c1BhcnNlck1vZGUoQ1NTU3RyaWN0TW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNl
KQogewogICAgIG1fcHJvcGVydGllcy5zaHJpbmtUb0ZpdCgpOwogfQogCi1TdHlsZVByb3BlcnR5
U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQg
bnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQotICAgIDogbV9zdHJpY3RQYXJz
aW5nKHVzZVN0cmljdFBhcnNpbmcpCitTdHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0
KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorICAgIDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNlck1v
ZGUpCiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBsb2dpYyBiZWxvbmdzIGluIENTU1BhcnNlci4KQEAgLTQ5Miw3ICs0OTIsNyBAQCBib29sIFN0
eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBib29sIGltcAogCiAgICAgLy8gV2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJv
cGVydHkgdmFsdWUsIHRoaXMgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxp
c3QuCiAgICAgLy8gRmlyZWZveCBwcmVzZXJ2ZXMgdGhlIHBvc2l0aW9uLCBhbmQgTVNJRSBtb3Zl
cyB0aGUgcHJvcGVydHkgdG8gdGhlIGJlZ2lubmluZy4KLSAgICByZXR1cm4gQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHVzZVN0cmljdFBh
cnNpbmcoKSwgY29udGV4dFN0eWxlU2hlZXQpOworICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSgp
LCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAKIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29s
IGltcG9ydGFudCkKQEAgLTUzNyw3ICs1MzcsNyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnNl
dFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbgog
dm9pZCBTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5
bGVEZWNsYXJhdGlvbiwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAg
bV9wcm9wZXJ0aWVzLmNsZWFyKCk7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih1c2VTdHJpY3RQYXJz
aW5nKCkpOworICAgIENTU1BhcnNlciBwYXJzZXIoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBwYXJz
ZXIucGFyc2VEZWNsYXJhdGlvbih0aGlzLCBzdHlsZURlY2xhcmF0aW9uLCAwLCBjb250ZXh0U3R5
bGVTaGVldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IDk4
OGNlNjIyNTQ0YWIxYTQ2NWYwZTdlNzM4MTY5YjZiOGNiNWQ5ZTUuLjkzNDM0ODk0YzNiMTQ5NTkz
MTdlMzRmYzc5ZDZkMDRmODhlZmVlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBTdHlsZVByb3BlcnR5U2V0X2gKICNkZWZp
bmUgU3R5bGVQcm9wZXJ0eVNldF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNDAsMTMgKzQxLDEzIEBAIGNsYXNzIFN0eWxl
UHJvcGVydHlTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVByb3BlcnR5U2V0PiB7CiBwdWJs
aWM6CiAgICAgflN0eWxlUHJvcGVydHlTZXQoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gY3JlYXRlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSA9IENTU1F1aXJrc01v
ZGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQoY3NzUGFyc2Vy
TW9kZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBj
cmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBi
b29sIHVzZVN0cmljdFBhcnNpbmcpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0
eVNldD4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVy
dGllcywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMs
IHVzZVN0cmljdFBhcnNpbmcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBy
b3BlcnR5U2V0KHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMsIGNzc1BhcnNlck1vZGUpKTsKICAg
ICB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0
IFZlY3RvcjxDU1NQcm9wZXJ0eT4mIHByb3BlcnRpZXMpCiAgICAgewpAQCAtODYsOCArODcsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIG1lcmdlKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqLCBib29s
IGFyZ092ZXJyaWRlc09uQ29uZmxpY3QgPSB0cnVlKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFy
c2luZyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0
UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0
Q1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJN
b2RlID0gY3NzUGFyc2VyTW9kZTsgfQorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3NzUGFyc2VyTW9kZTsgfQogCiAgICAgdm9pZCBhZGRTdWJyZXNv
dXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRT
dHlsZVNoZWV0KTsKIApAQCAtMTEyLDkgKzExMyw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NT
U09NV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ1NTT01XcmFwcGVyOyB9CiAKIHByaXZh
dGU6Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCgpOworICAgIFN0eWxlUHJvcGVydHlTZXQoQ1NTUGFy
c2VyTW9kZSk7CiAgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+
Jik7Ci0gICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSosIGludCBudW1Qcm9w
ZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcpOworICAgIFN0eWxlUHJvcGVydHlTZXQoY29u
c3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVtUHJvcGVydGllcywgQ1NTUGFyc2VyTW9kZSk7CiAKICAg
ICB2b2lkIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIApAQCAtMTM0LDcgKzEzNSw3IEBAIHByaXZh
dGU6CiAKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydGllczsKIAotICAgIGJv
b2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKKyAgICBDU1NQYXJzZXJNb2RlIG1fY3NzUGFyc2VyTW9k
ZTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXNDU1NPTVdyYXBwZXIgOiAxOwogICAgIAogICAgIGZy
aWVuZCBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXQuaAppbmRleCAwNzk4NzljYmQ4ZGQ2YzVmOTJiNzYyNDllZWM0ZjA0ZjQ5YTk2MDBmLi41
ZWI1ZmM0M2RmMDAxMjk2OTQ0YWIwMTQ5ZWIxYjAzZWRhMWMyODY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU3R5bGVTaGVldF9oCiAjZGVmaW5l
IFN0eWxlU2hlZXRfaAogCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIktV
UkxIYXNoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpID0gMDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9
IHRydWUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwg
Q1NTUGFyc2VyTW9kZSA9IENTU1N0cmljdE1vZGUpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0NTU1N0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1hTTFN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IGUzOTk4NmU1ZGM1ZWQ0
YjNjYzhhYzA4NTk2MWFmYmZjYzY4NzA1ZDEuLjg0Mzg0NzljODdiYmJjOWQ2NjgyOGVlYzJlZjgw
NjIxNWE0MmI0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlm
cmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjph
cHBlbmQoV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBydWxlKQogCiB2b2lkIFdlYktpdENTU0tleWZy
YW1lc1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlKQogewotICAgIENTU1BhcnNl
ciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSgp
KTsKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBuZXdSdWxlID0gcC5wYXJzZUtl
eWZyYW1lUnVsZShwYXJlbnRTdHlsZVNoZWV0KCksIHJ1bGUpOwogICAgIGlmIChuZXdSdWxlKQog
ICAgICAgICBhcHBlbmQobmV3UnVsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
YXRyaXguY3BwCmluZGV4IDlhZWVhNzcxNThiYmNiYjZlN2JiNTcxMGZhOGUxYjYxNTYyMzlhNmEu
LmFmZWJhNzFmODllOTkyOGI4ZjRlNWZhNTA0MWE2MTJjOWZkZjRkZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdlYktpdENTU01hdHJp
eDo6fldlYktpdENTU01hdHJpeCgpCiB2b2lkIFdlYktpdENTU01hdHJpeDo6c2V0TWF0cml4VmFs
dWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6
Y3JlYXRlKCk7Ci0gICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZURlY2xhcmF0aW9u
LmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc3RyaW5nLCB0cnVlLCB0cnVlLCAw
KSkgeworICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlvbi5nZXQo
KSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSwgQ1NTU3RyaWN0TW9k
ZSwgMCkpIHsKICAgICAgICAgLy8gQ29udmVydCB0byBUcmFuc2Zvcm1PcGVyYXRpb25zLiBUaGlz
IGNhbiBmYWlsIGlmIGEgcHJvcGVydHkKICAgICAgICAgLy8gcmVxdWlyZXMgc3R5bGUgKGkuZS4s
IHBhcmFtIHVzZXMgJ2Vtcycgb3IgJ2V4cycpCiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWUgPSBzdHlsZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk2ZjljYzk5ZmM2MWJm
YTY2OGRiMzQ1NmE2NWI2ZGJkNzk4ZDMyOGMuLjMxYTAzYTM2YzFiZGE5YTBjYTM3M2I3NjM2ZTFh
YzkyZGEwZWUwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA2OCw4ICsxMDY4LDgg
QEAgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IERvY3VtZW50Ojp3ZWJraXRHZXRGbG93QnlO
YW1lKGNvbnN0IFN0cmluZyYgZmxvd05hbWUKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBN
YWtlIGEgc2xvd2VyIGNoZWNrIGZvciBpbnZhbGlkIGZsb3cgbmFtZQotICAgIENTU1BhcnNlciBw
KHRydWUpOwotICAgIGlmICghcC5wYXJzZUZsb3dUaHJlYWQoZmxvd05hbWUsIHRoaXMpKQorICAg
IENTU1BhcnNlciBwYXJzZXI7CisgICAgaWYgKCFwYXJzZXIucGFyc2VGbG93VGhyZWFkKGZsb3dO
YW1lLCB0aGlzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoUmVuZGVyVmlldyogdmll
dyA9IHJlbmRlcmVyKCktPnZpZXcoKSkKQEAgLTI2ODYsNyArMjY4Niw3IEBAIENTU1N0eWxlU2hl
ZXQqIERvY3VtZW50OjpwYWdlVXNlclNoZWV0KCkKICAgICAvLyBQYXJzZSB0aGUgc2hlZXQgYW5k
IGNhY2hlIGl0LgogICAgIG1fcGFnZVVzZXJTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlu
bGluZSh0aGlzLCBzZXR0aW5ncygpLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCkpOwogICAgIG1f
cGFnZVVzZXJTaGVldC0+c2V0SXNVc2VyU3R5bGVTaGVldCh0cnVlKTsKLSAgICBtX3BhZ2VVc2Vy
U2hlZXQtPnBhcnNlU3RyaW5nKHVzZXJTaGVldFRleHQsICFpblF1aXJrc01vZGUoKSk7CisgICAg
bV9wYWdlVXNlclNoZWV0LT5wYXJzZVN0cmluZyh1c2VyU2hlZXRUZXh0LCB0b0NTU1BhcnNlck1v
ZGUoIWluUXVpcmtzTW9kZSgpKSk7CiAgICAgcmV0dXJuIG1fcGFnZVVzZXJTaGVldC5nZXQoKTsK
IH0KIApAQCAtMjczMiw3ICsyNzMyLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+KiBEb2N1bWVudDo6cGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFyc2Vk
U2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoY29uc3RfY2FzdDxEb2N1bWVudCo+
KHRoaXMpLCBzaGVldC0+dXJsKCkpOwogICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnNldElzVXNl
clN0eWxlU2hlZXQoc2hlZXQtPmxldmVsKCkgPT0gVXNlclN0eWxlVXNlckxldmVsKTsKLSAgICAg
ICAgICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzaGVldC0+c291cmNlKCksICFpblF1aXJr
c01vZGUoKSk7CisgICAgICAgICAgICBwYXJzZWRTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQtPnNv
dXJjZSgpLCB0b0NTU1BhcnNlck1vZGUoIWluUXVpcmtzTW9kZSgpKSk7CiAgICAgICAgICAgICBp
ZiAoIW1fcGFnZUdyb3VwVXNlclNoZWV0cykKICAgICAgICAgICAgICAgICBtX3BhZ2VHcm91cFVz
ZXJTaGVldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KTsK
ICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0cy0+YXBwZW5kKHBhcnNlZFNoZWV0LnJl
bGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjI5YmZiNGE1ZTIzMDVjNWExYzZl
OGViMWQyNGE5YmRiOGRkY2EwOS4uZTJmMWJlOTIxODczMjBiYzkzY2U3ODYyZjA0NjI3NGI3MDA5
OTk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTc1MSw3ICsxNzUxLDcgQEAgYm9vbCBF
bGVtZW50Ojp3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogCiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3Vt
ZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcpOwor
ICAgIENTU1BhcnNlciBwKHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nKSk7CiAKICAgICBD
U1NTZWxlY3Rvckxpc3Qgc2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3Rv
ciwgZG9jdW1lbnQoKSwgc2VsZWN0b3JMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IGQzMjk4MWY5YzFmNzJjMTQ5MjU4MjRiNDg2OGM4NmMw
YWY1ZDkzZWEuLmYxZWE0NzQzNTgwZGViNDYyNDJmY2RiMzhmMGQzMjU1N2QxZDcwODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcApAQCAtNTcsNyArNTcs
NyBAQCBTdHlsZVByb3BlcnR5U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlSW5saW5l
U3R5bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudAogICAgIGlmICghbV9pbmxpbmVTdHlsZURlY2wp
IHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKTsKICAgICAgICAg
bV9pbmxpbmVTdHlsZURlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICAgICAg
bV9pbmxpbmVTdHlsZURlY2wtPnNldFN0cmljdFBhcnNpbmcoZWxlbWVudC0+aXNIVE1MRWxlbWVu
dCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSk7CisgICAgICAgIG1f
aW5saW5lU3R5bGVEZWNsLT5zZXRDU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQo
KSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkgPyBDU1NTdHJpY3RNb2Rl
IDogQ1NTUXVpcmtzTW9kZSk7CiAgICAgfQogICAgIHJldHVybiBtX2lubGluZVN0eWxlRGVjbC5n
ZXQoKTsKIH0KQEAgLTY2LDcgKzY2LDcgQEAgU3R5bGVQcm9wZXJ0eVNldCogRWxlbWVudEF0dHJp
YnV0ZURhdGE6OmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZShTdHlsZWRFbGVtZW50KgogewogICAg
IGlmIChtX2lubGluZVN0eWxlRGVjbCAmJiAhbV9pbmxpbmVTdHlsZURlY2wtPmhhc0NTU09NV3Jh
cHBlcigpKSB7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gbV9pbmxpbmVTdHlsZURlY2wt
PmNvcHkoKTsKLSAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldFN0cmljdFBhcnNpbmcoZWxl
bWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01v
ZGUoKSk7CisgICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRDU1NQYXJzZXJNb2RlKGVsZW1l
bnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2Rl
KCkgPyBDU1NTdHJpY3RNb2RlIDogQ1NTUXVpcmtzTW9kZSk7CiAgICAgICAgIHJldHVybiBtX2lu
bGluZVN0eWxlRGVjbC5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIGVuc3VyZUlubGluZVN0eWxl
KGVsZW1lbnQpOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1
cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRpb24oU3R5bGVkRWxlbWVudCogZWxlbQogICAg
ICAgICBtX2lubGluZVN0eWxlRGVjbC5jbGVhcigpOwogICAgIGlmICghbV9pbmxpbmVTdHlsZURl
Y2wpIHsKICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVh
dGUoKTsKLSAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldFN0cmljdFBhcnNpbmcoZWxlbWVu
dC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUo
KSk7CisgICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRDU1NQYXJzZXJNb2RlKGVsZW1lbnQt
PmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkg
PyBDU1NTdHJpY3RNb2RlIDogQ1NTUXVpcmtzTW9kZSk7CiAgICAgfQogICAgIG1faW5saW5lU3R5
bGVEZWNsLT5wYXJzZURlY2xhcmF0aW9uKHRleHQsIGVsZW1lbnQtPmRvY3VtZW50KCktPmVsZW1l
bnRTaGVldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1MzQwY2I0ZTI0NjJiODZiNTBhMmU1
ZjY4MTY5OTQyMmEzZGUyYTNmLi42ODMxOTE0OWNmNzJiNjhlYmM5OThmNWNjYWU0ZjMwNjYyZTUx
Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNjYzLDcgKzE2NjMsNyBAQCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2Vw
dGlvbkNvZGUmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBib29sIHN0cmljdFBhcnNp
bmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0
UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAodG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcp
KTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNl
U2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgpLCBxdWVyeVNlbGVjdG9yTGlzdCk7CkBAIC0x
NjkwLDcgKzE2OTAsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNlbGVjdG9y
QWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25DbwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtz
TW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcpOworICAgIENTU1BhcnNlciBw
KHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nKSk7CiAKICAgICBDU1NTZWxlY3Rvckxpc3Qg
cXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVjdG9ycywgZG9jdW1l
bnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcAppbmRleCA4Y2JkMmEyZmM1ZGI2MDE3MGJiODY3OWNlN2RmMmIyZWRj
NjI0NTliLi4wMTgwMDRiZjVkMWNjYzNiM2IyZTZkNDY0OWZlZjRiN2VmYzgxODIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMjMzLDcgKzIz
Myw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzCiAKIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzaGVldCkKIHsKLSAgICBtX3NoZWV0
LT5wYXJzZVN0cmluZyhzaGVldCwgdHJ1ZSk7CisgICAgbV9zaGVldC0+cGFyc2VTdHJpbmcoc2hl
ZXQsIENTU1N0cmljdE1vZGUpOwogICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICBtX2Nh
Y2hlZFNoZWV0LT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgbV9jYWNoZWRTaGVldCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCmluZGV4IGMxMjk0ZTc0M2Y0YmFiMmJhYTQwY2Fm
YjRiMjExZTNjMDQ1YTVkN2MuLmVjMjAzOWQwMzFmNDUwNjBmYTVhOTE2NDRiZDU2ZDM0MGZiODc2
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBTdHlsZUVsZW1lbnQ6OmNyZWF0ZVNoZWV0KEVsZW1lbnQqIGUsIGludCBzdGFydExpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgdGUKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRQZW5kaW5n
U2hlZXQoKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICBtX3No
ZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGUsIFN0cmluZygpLCBLVVJMKCksIGRvY3VtZW50
LT5pbnB1dEVuY29kaW5nKCkpOwotICAgICAgICAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmdBdExp
bmUodGV4dCwgIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSwgc3RhcnRMaW5lTnVtYmVyKTsKKyAg
ICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nQXRMaW5lKHRleHQsIGRvY3VtZW50LT5pblF1
aXJrc01vZGUoKSA/IENTU1F1aXJrc01vZGUgOiBDU1NTdHJpY3RNb2RlLCBzdGFydExpbmVOdW1i
ZXIpOwogICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5y
ZWxlYXNlKCkpOwogICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoZS0+dGl0bGUoKSk7CiAg
ICAgICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKaW5kZXggZGI1N2U0MDM5YzIxODBhYjgyODFmNTFjMGE3ZmE5NmNjZTYyZDViYS4uOWQ3OTU1
MTIxNWVmZmQ2NGE2N2M4NTBkYThiNmM5YjRlYzczYjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKQEAgLTExMjEsNyArMTEyMSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6Y29w
eU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlRWxlbWVudCkKIAog
ICAgIFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlID0gZW5zdXJlQXR0cmlidXRlRGF0YSgp
LT5lbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhpcyk7CiAgICAgaW5saW5lU3R5bGUtPmNvcHlQ
cm9wZXJ0aWVzRnJvbSgqc291cmNlLT5pbmxpbmVTdHlsZSgpKTsKLSAgICBpbmxpbmVTdHlsZS0+
c2V0U3RyaWN0UGFyc2luZyhzb3VyY2UtPmlubGluZVN0eWxlKCktPnVzZVN0cmljdFBhcnNpbmco
KSk7CisgICAgaW5saW5lU3R5bGUtPnNldENTU1BhcnNlck1vZGUoc291cmNlLT5pbmxpbmVTdHls
ZSgpLT5jc3NQYXJzZXJNb2RlKCkpOwogCiAgICAgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKHNv
dXJjZS0+aXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKaW5kZXggZDNlZjhhZjU3Nzk0ZDU1OGZkMDE3MDdiZWI5ZDg0N2I5ZDVm
Mzg2Ny4uNWE0NWRhYzliMjEzMWUzY2JkODJmOGQxOWIwZmM3NjZhMTllZWUwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMjYsMTAgKzI2LDExIEBACiAjaW5j
bHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5o
IgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiQ1NTU3R5bGVT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzA1LDcgKzMwNiw3IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYg
YmFzZVVSTCwKICNlbmRpZgogCiAgICAgU3RyaW5nIHNoZWV0VGV4dCA9IHNoZWV0LT5zaGVldFRl
eHQoZW5mb3JjZU1JTUVUeXBlLCAmdmFsaWRNSU1FVHlwZSk7Ci0gICAgbV9zaGVldC0+cGFyc2VT
dHJpbmcoc2hlZXRUZXh0LCBzdHJpY3RQYXJzaW5nKTsKKyAgICBtX3NoZWV0LT5wYXJzZVN0cmlu
ZyhzaGVldFRleHQsIHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nKSk7CiAKICAgICAvLyBJ
ZiB3ZSdyZSBsb2FkaW5nIGEgc3R5bGVzaGVldCBjcm9zcy1vcmlnaW4sIGFuZCB0aGUgTUlNRSB0
eXBlIGlzIG5vdAogICAgIC8vIHN0YW5kYXJkLCByZXF1aXJlIHRoZSBDU1MgdG8gYXQgbGVhc3Qg
c3RhcnQgd2l0aCBhIHN5bnRhY3RpY2FsbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDhiMjY1NzQ3NDlh
Nzc1NzE2NjliZmZiYzEwN2Y2MDgxOWNhNjk5ODEuLmViNGE5OWRiZWUwMGE3ZWY2NGUzODU3ODVm
NTQ3ZWU3ZjBhMmIyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTg5Niw3ICsxODk2LDcgQEAgU3Ry
aW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udCgpIGNvbnN0CiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiB7CiAgICAg
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHRlbXBEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcighbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNl
TW9kZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcih0b0NTU1BhcnNlck1vZGUoIW1fdXNlc0NTU0Nv
bXBhdGliaWxpdHlQYXJzZU1vZGUpKTsKIAogICAgIFN0cmluZyBkZWNsYXJhdGlvblRleHQoImZv
bnQ6ICIpOwogICAgIGRlY2xhcmF0aW9uVGV4dCArPSBuZXdGb250OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDA0MjRh
NWZhODZkZjRjMThkY2ExZGRhMzcyMDc4YzU4ZWJlMzUxZTYuLjkyYzE5OGM5NWFlNGNlYmUyNWQ1
M2NmMzY1NDAwY2NlZGI4ZGU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgQ29udGVudFNl
bGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5KGNvbnN0IEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENTU1BhcnNlciBw
YXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcjsKICAgICBwYXJzZXIucGFyc2VTZWxl
Y3RvcihpbnNlcnRpb25Qb2ludC0+c2VsZWN0KCksIGluc2VydGlvblBvaW50LT5kb2N1bWVudCgp
LCBtX3NlbGVjdG9yTGlzdCk7CiAKICAgICBtX2lzVmFsaWRTZWxlY3RvciA9IENvbnRlbnRTZWxl
Y3RvclF1ZXJ5Ojp2YWxpZGF0ZVNlbGVjdG9yTGlzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGNiZDMxMDBiMmY1ZjI5N2My
Yzg4NGUyMzc1NGYxOWEyZDA0ODU4OTMuLjNiOWU0ZWViZWFlZjJlNzk0NWM0MDcxOGVlNDlmMjNl
YmM1YjlkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKQEAgLTcxOSw3ICs3MTksNyBAQCBTdHJpbmcgSW5zcGVjdG9yU3R5bGVTaGVl
dDo6ZmluYWxVUkwoKSBjb25zdAogdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXBhcnNlU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgbV9wYWdlU3R5bGVTaGVldC0+Y2xl
YXJSdWxlcygpOwotICAgIG1fcGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1fcGFn
ZVN0eWxlU2hlZXQtPnVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgbV9wYWdlU3R5bGVTaGVldC0+
cGFyc2VTdHJpbmcodGV4dCwgbV9wYWdlU3R5bGVTaGVldC0+Y3NzUGFyc2VyTW9kZSgpKTsKICAg
ICBtX3BhZ2VTdHlsZVNoZWV0LT5zdHlsZVNoZWV0Q2hhbmdlZCgpOwogICAgIG1faW5zcGVjdG9y
U3R5bGVzLmNsZWFyKCk7CiAgICAgZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggY2VlYzAxY2M5ZjliZTQzNjBkMTU0ZTY5
NjRhZmRmMTMyZWY3NjIwZC4uNWUwM2Q3MmQ3MTlmYmU2MTVhNjZkN2Y4NTQwMDkzZTllNWI0ODlm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaApAQCAtMjAsNiArMjAs
NyBAQAogI2lmbmRlZiBTVkdFbGVtZW50UmFyZURhdGFfaAogI2RlZmluZSBTVkdFbGVtZW50UmFy
ZURhdGFfaAogCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpAQCAtNzksNyArODAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAo
IW1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICBtX2FuaW1hdGVk
U01JTFN0eWxlUHJvcGVydGllcyA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgICAg
ICAgICAgbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMtPnNldFN0cmljdFBhcnNpbmcoZmFs
c2UpOworICAgICAgICAgICAgbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMtPnNldENTU1Bh
cnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
YW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXggMGM2N2FjODk5YjRiMDA5OGUzODBmYTJh
MTlmZGM5NzNmNTQwYjJmNS4uYzc0YzkxNWMwMzhjMzhjN2VjZWZkMDU5ZmU5Mzc0YzA1NzYyZDgx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgaW5saW5lIFNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3UKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShmb250X2ZhY2VUYWcpKTsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVEZWNs
YXJhdGlvbiA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIHN0eWxlRGVjbGFyYXRp
b24tPnNldFN0cmljdFBhcnNpbmcodHJ1ZSk7CisgICAgc3R5bGVEZWNsYXJhdGlvbi0+c2V0Q1NT
UGFyc2VyTW9kZShDU1NTdHJpY3RNb2RlKTsKICAgICBtX2ZvbnRGYWNlUnVsZS0+c2V0RGVjbGFy
YXRpb24oc3R5bGVEZWNsYXJhdGlvbi5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggOWM0MjdkMWVkNmQzZTQ1YzgzNzUwZTM3NWQ0ZmE4
OGUwYzlhZDJmZi4uYmExYzNmZTI3YjMzZTgyYTc4Yzc4ZGNjMzY1ZWM1ODY0YTlmMTYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtNDIxLDcgKzQyMSw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFNWR1N0eWxlZEVsZW1lbnQ6OmdldFByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0g
ICAgc3R5bGUtPnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOworICAgIHN0eWxlLT5zZXRDU1NQYXJz
ZXJNb2RlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIGludCBwcm9wZXJ0eUlEID0gU1ZHU3R5bGVk
RWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0ci0+dmFsdWUoKSk7CiAgICAg
cmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0LmgKaW5kZXggMTdjMGVjYmU5NjczMmU2NzhkZThjZGFjMzcxMTA2NTIy
YmRlZGRmNS4uM2Y3MDFjZTJmZGE2OGIyZDk4YzA3Y2VkZDFiZTBhMDIyN2EyNGZlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCB7IHJldHVybiAidGV4dC94bWwiOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJpbmcsIGJvb2wgc3Ry
aWN0ID0gdHJ1ZSk7CisgICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYs
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VNb2RlID0gQ1NTU3RyaWN0TW9kZSk7CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGlzTG9hZGluZygpOwogICAgIHZvaWQgY2hlY2tMb2FkZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IDc1MjFiNmQ0ZDNi
Nzc2NzNlMzcwNDcwZDI5ZTY4YzcxZTMyNWIwY2MuLjQ5MzZkZTFhNTM2MzBlYWY2OWQzNTU3NGM2
YzhhM2M3NzY0NWM0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4
c2x0LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBYU0xTdHls
ZVNoZWV0OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpOwogfQogCi1ib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sKQorYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSkKIHsKICAgICAvLyBQYXJz
ZSBpbiBhIHNpbmdsZSBjaHVuayBpbnRvIGFuIHhtbERvY1B0cgogICAgIGNvbnN0IFVDaGFyIEJP
TSA9IDB4RkVGRjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAKaW5kZXggOGEx
MGZkOTBiNDYyMGFhZmQwNjllYTQ4YTdhYWY0YTdmMDBkOGE5OC4uYThlNjY3MjRlMGZmNWIzNGVj
YjE0NjM2Yzk2MjI1NzJhOWQyNjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TFN0eWxlU2hlZXRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRR
dC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0eWxlU2hl
ZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZU1vZGUpCiB7CiAgICAgLy8gRklYTUU6IEZp
eCBRWG1sUXVlcnkgc28gdGhhdCBpdCBhbGxvd3MgY29tcGlsaW5nIHRoZSBzdHlsZXNoZWV0IGJl
Zm9yZSBzZXR0aW5nIHRoZSBkb2N1bWVudAogICAgIC8vIHRvIGJlIHRyYW5zZm9ybWVkLiBUaGlz
IHdheSB3ZSBjb3VsZCBub3Qgb25seSBjaGVjayBpZiB0aGUgc3R5bGVzaGVldCBpcyBjb3JyZWN0
IGJlZm9yZSB1c2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQu
Y3BwCmluZGV4IDgwZmJkZjFkOWVlOTZmM2I0MzVjYTJlMTg1NzJlNDNjMjFiNjQwZWIuLmIxYjAy
MzM3ZDE1NWM3NmUyY2FlMzJkMWI0ZmM3Zjk3ZjU1NjMyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJX
ZWJEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkNT
U1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMTc5LDcgKzE4MCw3IEBA
IHZvaWQgV2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KGNvbnN0IFdlYlN0cmluZyYg
c291cmNlQ29kZSwgVXNlclN0eWxlTGV2CiAKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFy
c2VkU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgIHBh
cnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KGxldmVsID09IFVzZXJTdHlsZVVzZXJMZXZl
bCk7Ci0gICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNvdXJjZUNvZGUsICFkb2N1bWVudC0+
aW5RdWlya3NNb2RlKCkpOworICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzb3VyY2VDb2Rl
LCB0b0NTU1BhcnNlck1vZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSkpOwogICAgIGRvY3Vt
ZW50LT5hZGRVc2VyU2hlZXQocGFyc2VkU2hlZXQucmVsZWFzZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134294</attachid>
            <date>2012-03-28 07:46:43 -0700</date>
            <delta_ts>2012-03-28 09:22:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328074641.patch</filename>
            <type>text/plain</type>
            <size>45640</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwY2UwNTM5MTE1MTJj
NTg4OGIyZDdkMTdhOTVhNDA3YTUwOGIyMS4uYjhjMDJhNDEzMmM3NmYwZDRjNmQwZmZhYWQ2ODlk
YWY3Nzc0Y2M4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wMy0yNyAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSB0aGUgbmV3IENTU1BhcnNlck1vZGUgZW51bSB0byBtb3Jl
IGNsYXNzZXMuIFNWRyBjbGFzc2VzIG1ha2UgdXNlIG9mIFNWR0F0dHJpYnV0ZU1vZGUgZm9yIENT
UyBwYXJzaW5nIGFscmVhZHkuCisgICAgICAgIEJ1dCBTVkdBdHRyaWJ1dGVNb2RlIGRvZXMgbm90
IGRpZmZlciBmcm9tIENTU1F1aXJrc01vZGUgYXQgdGhlIG1vbWVudC4gVGhpcyB3aWxsIGNhaG5n
ZSB3aXRoIGEgZm9sbG93dXAgcGF0Y2ggb24gYnVnIDQ2MTEyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIEV2ZXJ5dGhpbmcgZ2V0cyBjb3ZlcmVk
IGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFS
dWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzU3RyaWN0UGFyc2VyTW9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNp
bXBsZUxlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250
RmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpj
cmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUtleWZy
YW1lUnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2Vy
KTogUmVtb3ZlZCBjb25zdHJ1Y3RvciB3aXRoIGJvb2xlYW4gYXJndW1lbnQuIFdlIGp1c3QgdXNl
IHRoZSBDU1NQYXJzZXJNb2RlIGVudW0gbm93LgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2Rl
Lmg6CisgICAgICAgICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlOjpjc3NQYXJzZXJNb2RlKTogUmVuYW1lZCB1c2VT
dHJpY3RQYXJzaW5nIHRvIGNzc1BhcnNlck1vZGUgc2luY2UgaXQgcmV0dXJucyBDU1NQYXJzZXJN
b2RlIGluc3RlYWQgb2YgYSBib29sZWFuLiAKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2hlZXQ6OnNldENTU1BhcnNlck1vZGUpOiBSZW5hbWVkIHNldFN0cmljdFBhcnNpbmcgdG8g
c2V0Q1NTUGFyc2VyTW9kZSBzaW5jZSB3ZSBzZXQgYW4gZW51bSBub3cuCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNoZWV0Ojpjc3NQYXJzZXJNb2RlKToKKyAgICAgICAgKiBjc3MvTWVkaWFM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5U2V0OjpyZW1vdmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAg
ICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpzZXRD
U1NQYXJzZXJNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmNzc1Bh
cnNlck1vZGUpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKFN0eWxlU2hlZXQpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0tleWZyYW1l
c1J1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJr
aXRHZXRGbG93QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlVXNlclNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlR3JvdXBVc2VyU2hlZXRzKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3
ZWJraXRNYXRjaGVzU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlSW5s
aW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3Vy
ZU11dGFibGVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKToKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpwYXJzZVN0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldCk6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50
Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHls
ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcyk6CisgICAgICAg
ICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250
RmFjZUVsZW1lbnQ6OlNWR0ZvbnRGYWNlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJl
c2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5oOgorICAg
ICAgICAoWFNMU3R5bGVTaGVldCk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAg
ICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0
eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKwogMjAxMi0wMy0yNyAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBXZWJLaXQgcHJvcGVybHkgbG9hZCBh
IHN0YWdlZCBmcmFtZXdvcmsgd2hlbiBzb2Z0IGxpbmtpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAKaW5kZXggZjE3YTE0MWU0YTMwZWY2NTgzZjkwNmNiMzc4YmE3YTllM2FlODFi
Zi4uYmU5OWMxNDEwYjRlOWI0ZTBjZDdlYjc4MDE0MzFlZDZmY2FjMjdiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNjgsNyArNjgsOCBAQCB2b2lkIENTU0ltcG9ydFJ1
bGU6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjbwogICAgIGJvb2wgY3Jvc3NPcmlnaW5DU1MgPSBmYWxzZTsKICAgICBib29sIHZhbGlk
TUlNRVR5cGUgPSBmYWxzZTsKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHls
ZVNoZWV0KCk7Ci0gICAgYm9vbCBzdHJpY3QgPSAhcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0
UGFyc2luZygpOworICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSA9IHBhcmVudCA/IHBh
cmVudC0+Y3NzUGFyc2VyTW9kZSgpIDogaW5DU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwor
ICAgIGJvb2wgc3RyaWN0ID0gY3NzUGFyc2VyTW9kZSA9PSBDU1NTdHJpY3RNb2RlOwogICAgIGJv
b2wgZW5mb3JjZU1JTUVUeXBlID0gc3RyaWN0OwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBh
cmVudCA/IHBhcmVudC0+ZmluZERvY3VtZW50KCkgOiAwOwogICAgIGJvb2wgbmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+c2V0dGluZ3MoKSAmJiBkb2N1bWVu
dC0+c2V0dGluZ3MoKS0+bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKTsKQEAgLTgyLDcgKzgzLDcg
QEAgdm9pZCBDU1NJbXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY28KICNlbmRpZgogCiAgICAgU3RyaW5nIHNoZWV0VGV4
dCA9IHNoZWV0LT5zaGVldFRleHQoZW5mb3JjZU1JTUVUeXBlLCAmdmFsaWRNSU1FVHlwZSk7Ci0g
ICAgbV9zdHlsZVNoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRleHQsIHN0cmljdCk7CisgICAgbV9z
dHlsZVNoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRleHQsIGNzc1BhcnNlck1vZGUpOwogCiAgICAg
aWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qo
YmFzZVVSTCkpCiAgICAgICAgIGNyb3NzT3JpZ2luQ1NTID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U01lZGlhUnVsZS5jcHAKaW5kZXggZmU3NjUwZmEzNDRkZWJlMGEwZDlhNWZhYjQ1MjFlMmIzOTVi
MzFjZC4uNWVkNWVmYzIyNWZjZGU2ZDA4ZWNmNGRlMTg3OGM2NjY3NGEwM2ZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdW5zaWduZWQgQ1NTTWVk
aWFSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4
Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHAodXNl
U3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAg
IFJlZlB0cjxDU1NSdWxlPiBuZXdSdWxlID0gcC5wYXJzZVJ1bGUocGFyZW50U3R5bGVTaGVldCgp
LCBydWxlKTsKICAgICBpZiAoIW5ld1J1bGUpIHsKICAgICAgICAgLy8gU1lOVEFYX0VSUjogUmFp
c2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlzIHVucGFy
c2FibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDUxN2E4NWFhY2JiYmJlNjYyMjIw
ODA2MmRjOTIzOGZmYzMzZDI2YTMuLmI4YzYyNGIxZWNiZDA5ZjNhN2RjOThhMDNkZTkwOTVkMzgw
MmRlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xODEsMzggKzE4MSw2IEBAIGlu
bGluZSB2b2lkIENTU1BhcnNlcjo6ZW5zdXJlQ1NTVmFsdWVQb29sKCkKICAgICAgICAgbV9jc3NW
YWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OmNyZWF0ZSgpOwogfQogCi1DU1NQYXJzZXI6OkNTU1Bh
cnNlcihib29sIHN0cmljdFBhcnNpbmcpCi0gICAgOiBtX2Nzc1BhcnNlck1vZGUoc3RyaWN0UGFy
c2luZyA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKQotICAgICwgbV9pbXBvcnRhbnQo
ZmFsc2UpCi0gICAgLCBtX2lkKDApCi0gICAgLCBtX3N0eWxlU2hlZXQoMCkKLSAgICAsIG1faW5Q
YXJzZVNob3J0aGFuZCgwKQotICAgICwgbV9jdXJyZW50U2hvcnRoYW5kKDApCi0gICAgLCBtX2lt
cGxpY2l0U2hvcnRoYW5kKGZhbHNlKQotICAgICwgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMoZmFs
c2UpCi0gICAgLCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUoZmFsc2UpCi0gICAgLCBt
X2RlZmF1bHROYW1lc3BhY2Uoc3RhckF0b20pCi0gICAgLCBtX2luU3R5bGVSdWxlT3JEZWNsYXJh
dGlvbihmYWxzZSkKLSAgICAsIG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKLSAgICAsIG1fcnVs
ZUJvZHlSYW5nZSgwLCAwKQotICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01B
WCkKLSAgICAsIG1fcnVsZVJhbmdlTWFwKDApCi0gICAgLCBtX2N1cnJlbnRSdWxlRGF0YSgwKQot
ICAgICwgbV9wYXJzaW5nTW9kZShOb3JtYWxNb2RlKQotICAgICwgbV9jdXJyZW50Q2hhcmFjdGVy
KDApCi0gICAgLCBtX3Rva2VuKDApCi0gICAgLCBtX2xpbmVOdW1iZXIoMCkKLSAgICAsIG1fbGFz
dFNlbGVjdG9yTGluZU51bWJlcigwKQotICAgICwgbV9hbGxvd0ltcG9ydFJ1bGVzKHRydWUpCi0g
ICAgLCBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zKHRydWUpCi17Ci0jaWYgWVlERUJVRyA+
IDAKLSAgICAgICAgY3NzeXlkZWJ1ZyA9IDE7Ci0jZW5kaWYKLSAgICAgICAgQ1NTUHJvcGVydHlT
b3VyY2VEYXRhOjppbml0KCk7Ci19Ci0KLQogQ1NTUGFyc2VyOjpDU1NQYXJzZXIoQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQogICAgIDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUp
CiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKQEAgLTM1NCw4ICszMjIsMTUgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzQ29sb3JQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQogICAgIH0KIH0KIAot
c3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9u
LCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBi
b29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTdHJpY3RQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3sKKyAgICAvLyBGSVhNRTogU1ZHIHByZXNuZXRhdGlvbiBhdHRyaWJ1dGUgdmFsdWVzIHNob3Vs
ZCBiZSBwYXJzZWQgaW4gc3RyaWN0IG1vZGUgYXMgd2VsbC4KKyAgICByZXR1cm4gY3NzUGFyc2Vy
TW9kZSA9PSBDU1NTdHJpY3RNb2RlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUo
U3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CisgICAgYm9vbCBzdHJpY3QgPSBp
c1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWlzQ29sb3JQcm9wZXJ0eUlEKHBy
b3BlcnR5SWQpKQpAQCAtNDQwLDkgKzQxNSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1w
bGVMZW5ndGhQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVnYXRpdgog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3Bl
cnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHls
ZVNoZWV0KQorc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0
KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnM7
CisgICAgYm9vbCBzdHJpY3QgPSBpc1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgp
CkBAIC05NjYsMjAgKzk0MiwyMCBAQCBzdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1ZShTdHls
ZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbgogUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyaW5nLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAg
ICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZHVtbXlTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZSgpOwotICAgIGlmICghcGFyc2VWYWx1ZShkdW1teVN0eWxlLmdldCgpLCBDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHksIHN0cmluZywgZmFsc2UsIGZhbHNlLCBjb250ZXh0U3R5bGVTaGVldCkp
CisgICAgaWYgKCFwYXJzZVZhbHVlKGR1bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rm9udEZh
bWlseSwgc3RyaW5nLCBmYWxzZSwgQ1NTUXVpcmtzTW9kZSwgY29udGV4dFN0eWxlU2hlZXQpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NWYWx1
ZUxpc3Q+KGR1bW15U3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFt
aWx5KSk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
aW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQp
Citib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlv
biwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCkKIHsKLSAgICBpZiAocGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlvbiwgcHJv
cGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQor
ICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBz
dHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4dFN0eWxlU2hlZXQpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBw
cm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVTaGVldCkp
CisgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5n
LCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9w
ZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CisgICAgQ1NTUGFyc2Vy
IHBhcnNlcihjc3NQYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWUoZGVj
bGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVl
dCk7CiB9CiAKQEAgLTEwMTYsNyArOTkyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
UkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlm
IChmYXN0UGFyc2VDb2xvcihjb2xvciwgc3RyaW5nLCBzdHJpY3QpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNl
cjsKIAogICAgIC8vIEluIGNhc2UgdGhlIGZhc3QtcGF0aCBwYXJzZXIgZGlkbid0IHVuZGVyc3Rh
bmQgdGhlIGNvbG9yLCB0cnkgdGhlIGZ1bGwgcGFyc2VyLgogICAgIGlmICghcGFyc2VyLnBhcnNl
Q29sb3Ioc3RyaW5nKSkKQEAgLTkwOTQsNyArOTA3MCw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6
Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVj
dG9yCiAgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxl
Y3RvcnMpOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgICAg
ICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICAgICAgcnVsZS0+c3R5bGVSdWxlKCkt
PnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGll
cy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7Cisg
ICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6
ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsKICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAg
ICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgICAgICBpZiAo
bV9ydWxlUmFuZ2VNYXApIHsKQEAgLTkxMzIsNyArOTEwOCw3IEBAIENTU1J1bGUqIENTU1BhcnNl
cjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgfQogICAgIH0KICAgICBSZWZQdHI8Q1NT
Rm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0
KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9w
YXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJp
Y3RNb2RlKCkpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUo
KSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9u
dEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5k
KHJ1bGUucmVsZWFzZSgpKTsKQEAgLTkyMDMsNyArOTE3OSw3IEBAIENTU1J1bGUqIENTU1BhcnNl
cjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVj
dG9yKQogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IHNlbGVjdG9y
VmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsKICAg
ICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0gICAgICAg
IHJ1bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFBy
b3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUo
KSkpOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVh
dGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwg
bV9jc3NQYXJzZXJNb2RlKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAg
ICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTkyODEs
NyArOTI1Nyw3IEBAIFdlYktpdENTU0tleWZyYW1lUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVLZXlm
cmFtZVJ1bGUoQ1NTUGFyc2VyVmFsdWVMaXN0KiBrZXlzKQogCiAgICAgUmVmUHRyPFdlYktpdENT
U0tleWZyYW1lUnVsZT4ga2V5ZnJhbWUgPSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGU6OmNyZWF0ZSht
X3N0eWxlU2hlZXQpOwogICAgIGtleWZyYW1lLT5zZXRLZXlUZXh0KGtleVN0cmluZyk7Ci0gICAg
a2V5ZnJhbWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNl
ZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1v
ZGUoKSkpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUo
KSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAKICAgICBjbGVhclByb3BlcnRpZXMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCmluZGV4IDFhZTY3MDM0YjQ1NDkzOGVkMjJhMzM1MzhjYWQxZDY4MGE4YTU5
MzQuLmQ4YWU0MjllNDlhNzU4NWQ5NTdhMzA2MWZiOWFkYmIzYTYxODliNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgKQEAgLTY1LDkgKzY1LDYgQEAgY2xhc3MgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZTsKIAogY2xhc3MgQ1NTUGFyc2VyIHsKIHB1YmxpYzoKLQotICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhlIGJvb2xlYW4gY29uc3RydWN0b3Igb25jZSBtb3ZlZCB0byBDU1NQYXJzZXJNb2RlIGNvbXBs
ZXRlbHkuCi0gICAgQ1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZyk7CiAgICAgQ1NTUGFyc2Vy
KENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKIAogICAgIH5DU1NQYXJzZXIoKTsKQEAg
LTc1LDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VTaGVldChDU1NTdHlsZVNoZWV0
KiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciA9IDAsIFN0eWxlUnVsZVJhbmdl
TWFwKiBydWxlUmFuZ2VNYXAgPSAwKTsKICAgICBQYXNzUmVmUHRyPENTU1J1bGU+IHBhcnNlUnVs
ZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0cjxXZWJLaXRD
U1NLZXlmcmFtZVJ1bGU+IHBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqLCBp
bnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENT
U1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZh
bHVlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGlt
cG9ydGFudCwgQ1NTUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQp
OwogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5n
JiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VTeXN0ZW1Db2xv
cihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCopOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0
cmluZyYsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyTW9kZS5oCmluZGV4IGI1ZWZiZDBiNWZiMjcyOTkwMGM0Mjg3YzM2NTAyNzgyMzA5YTIw
YzYuLjcxZjQyMGFhZDliNmQzYTY4MjhmYmZjNmZlZjA0Y2Q4MGQyY2E5MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlck1vZGUuaApAQCAtMzAsMTEgKzMwLDIyIEBACiAjaWZuZGVmIENTU1BhcnNl
ck1vZGVfaAogI2RlZmluZSBDU1NQYXJzZXJNb2RlX2gKIAotZW51bSBDU1NQYXJzZXJNb2RlIHsK
LSAgICBDU1NRdWlya3NNb2RlLAorZW51bSB7CisgICAgQ1NTUXVpcmtzTW9kZSA9IDEsCiAgICAg
Q1NTU3RyaWN0TW9kZSwKICAgICAvLyBTVkcgc2hvdWxkIGFsd2F5cyBiZSBpbiBzdHJpY3QgbW9k
ZS4gRm9yIFNWRyBhdHRyaWJ1dGVzLCB0aGUgcnVsZXMgZGlmZmVyIHRvIHN0cmljdCBzb21ldGlt
ZXMuCiAgICAgU1ZHQXR0cmlidXRlTW9kZQogfTsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBDU1NQ
YXJzZXJNb2RlOworCitpbmxpbmUgQ1NTUGFyc2VyTW9kZSB0b0NTU1BhcnNlck1vZGUoYm9vbCBp
blN0cmljdE1vZGUpCit7CisgICAgcmV0dXJuIGluU3RyaWN0TW9kZSA/IENTU1N0cmljdE1vZGUg
OiBDU1NRdWlya3NNb2RlOworfQorCitpbmxpbmUgQ1NTUGFyc2VyTW9kZSBpbkNTU1BhcnNlck1v
ZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXJNb2RlPihjc3NQYXJzZXJNb2RlKTsKK30KIAogI2VuZGlmIC8vIENTU1BhcnNl
ck1vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKaW5kZXggNmY5ZWU0MTBiYThiOTc1NzhiNGViMjc2NzU0
YTBiNjE2YzlkYWM4Ny4uMWZiMjA2YjYyYTQ0NzEzOWMxNWZkMDlkNjRkNmI4OWE4ODc5YjM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUnVsZS5oCkBAIC02OSwxMyArNjksMTMgQEAgcHVibGljOgogICAgIGJvb2wg
aXNSZWdpb25SdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFdFQktJVF9SRUdJT05fUlVM
RTsgfQogICAgIGJvb2wgaXNJbXBvcnRSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IElN
UE9SVF9SVUxFOyB9CiAKLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdAorICAgIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAocGFy
ZW50UnVsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudFJ1bGUoKS0+dXNlU3RyaWN0UGFy
c2luZygpOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudFJ1bGUoKS0+Y3NzUGFyc2VyTW9kZSgp
OwogICAgICAgICBpZiAocGFyZW50U3R5bGVTaGVldCgpKQotICAgICAgICAgICAgcmV0dXJuIHBh
cmVudFN0eWxlU2hlZXQoKS0+dXNlU3RyaWN0UGFyc2luZygpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZVNoZWV0KCktPmNzc1BhcnNlck1vZGUo
KTsKKyAgICAgICAgcmV0dXJuIENTU1N0cmljdE1vZGU7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQ
YXJlbnRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMjIwYjIwNjI2MWY0NjUzOGZkZThlZTJkYzRmYzhlNjk5
MjlhYzk3My4uZDY4NTJkYTU4NjYyN2QzYjM2ODFlNjI3NDUzN2JjMjI3NDBkNWE1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtNzcsNyArNzcsNyBAQCBDU1NTdHlsZVNo
ZWV0OjpDU1NTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwg
Y29uc3QgS1VSTCYgYgogICAgIDogU3R5bGVTaGVldChwYXJlbnROb2RlLCBocmVmLCBiYXNlVVJM
KQogICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCiAgICAgLCBtX2xvYWRDb21wbGV0ZWQoZmFsc2Up
Ci0gICAgLCBtX3N0cmljdFBhcnNpbmcoZmFsc2UpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUoQ1NT
UXVpcmtzTW9kZSkKICAgICAsIG1faXNVc2VyU3R5bGVTaGVldChmYWxzZSkKICAgICAsIG1faGFz
U3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKHRydWUpCiAgICAgLCBtX2RpZExvYWRFcnJvck9j
Y3VyKGZhbHNlKQpAQCAtODksNyArODksNyBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0
KENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdAogICAg
IDogU3R5bGVTaGVldChvd25lclJ1bGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJzZXQo
Y2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFy
c2luZyghb3duZXJSdWxlIHx8IG93bmVyUnVsZS0+dXNlU3RyaWN0UGFyc2luZygpKQorICAgICwg
bV9jc3NQYXJzZXJNb2RlKG93bmVyUnVsZSA/IG93bmVyUnVsZS0+Y3NzUGFyc2VyTW9kZSgpIDog
aW5DU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5
VmFsaWRDU1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCiB7
CkBAIC0xODYsNyArMTg2LDcgQEAgdW5zaWduZWQgQ1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZShj
b25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb24KICAgICAgICAgZWMg
PSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIENTU1BhcnNl
ciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSgp
KTsKICAgICBSZWZQdHI8Q1NTUnVsZT4gciA9IHAucGFyc2VSdWxlKHRoaXMsIHJ1bGUpOwogCiAg
ICAgaWYgKCFyKSB7CkBAIC0zMDIsMTUgKzMwMiwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIENT
U1N0eWxlU2hlZXQ6OmRldGVybWluZU5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eAogICAgIHJldHVybiBudWxsQXRvbTsgLy8gQXNzdW1lIHdlIHdvbid0IG1hdGNoIGFueSBuYW1l
c3BhY2VzLgogfQogCi1ib29sIENTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmlu
ZyAmc3RyaW5nLCBib29sIHN0cmljdCkKK2Jvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmco
Y29uc3QgU3RyaW5nICZzdHJpbmcsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKLSAg
ICByZXR1cm4gcGFyc2VTdHJpbmdBdExpbmUoc3RyaW5nLCBzdHJpY3QsIDApOworICAgIHJldHVy
biBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcsIGNzc1BhcnNlck1vZGUsIDApOwogfQogCi1ib29s
IENTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIHN0cmljdCwgaW50IHN0YXJ0TGluZU51bWJlcikKK2Jvb2wgQ1NTU3R5bGVTaGVldDo6cGFy
c2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgaW50IHN0YXJ0TGluZU51bWJlcikKIHsKLSAgICBzZXRTdHJpY3RQYXJzaW5nKHN0
cmljdCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0KTsKKyAgICBzZXRDU1NQYXJzZXJNb2RlKGNz
c1BhcnNlck1vZGUpOworICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1vZGUpOwogICAgIHAucGFy
c2VTaGVldCh0aGlzLCBzdHJpbmcsIHN0YXJ0TGluZU51bWJlcik7CiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCA3MDJiOTI2MzgxZGU4NGUzYTM4
OTkyMjk4MDQxZjBmN2M4Y2U0YTBkLi42NTI0ZDEyYWUxOGNkNmI5YWUyNzBhZWMzNzkzZGM0MDg3
OGQwZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAK
ICNpZm5kZWYgQ1NTU3R5bGVTaGVldF9oCiAjZGVmaW5lIENTU1N0eWxlU2hlZXRfaAogCisjaW5j
bHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODQsOSArODUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0eWxl
U2hlZXRDaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmco
Y29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSA9IENTU1N0cmljdE1vZGUpOwogCi0gICAgYm9v
bCBwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCwgaW50IHN0YXJ0
TGluZU51bWJlcik7CisgICAgYm9vbCBwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmLCBD
U1NQYXJzZXJNb2RlLCBpbnQgc3RhcnRMaW5lTnVtYmVyKTsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0xvYWRpbmcoKTsKIApAQCAtMTAzLDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBLVVJMIGNvbXBs
ZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKICAgICB2b2lkIGFkZFN1YnJlc291cmNl
U3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jik7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNp
bmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFyc2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBh
cnNpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldENT
U1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9k
ZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAgICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2Nzc1BhcnNlck1vZGU7IH0KIAogICAgIHZvaWQgc2V0SXNVc2VyU3R5
bGVTaGVldChib29sIGIpIHsgbV9pc1VzZXJTdHlsZVNoZWV0ID0gYjsgfQogICAgIGJvb2wgaXNV
c2VyU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNVc2VyU3R5bGVTaGVldDsgfQpAQCAt
MTQ4LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fbWVk
aWFRdWVyaWVzOwogCiAgICAgYm9vbCBtX2xvYWRDb21wbGV0ZWQgOiAxOwotICAgIGJvb2wgbV9z
dHJpY3RQYXJzaW5nIDogMTsKKyAgICBDU1NQYXJzZXJNb2RlIG1fY3NzUGFyc2VyTW9kZTsKICAg
ICBib29sIG1faXNVc2VyU3R5bGVTaGVldCA6IDE7CiAgICAgYm9vbCBtX2hhc1N5bnRhY3RpY2Fs
bHlWYWxpZENTU0hlYWRlciA6IDE7CiAgICAgYm9vbCBtX2RpZExvYWRFcnJvck9jY3VyIDogMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYjczNWU3Y2I3MzVjYmVhZWQ4ZGIwZDVlYjgw
OGJjYmMyODMzNjY1ZC4uNmJiN2I5NDhlNzFjZWE4YTQzOWJhZWU2ZDQ0YTNkZWJjZjAzOGZlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgU3Ry
aW5nIHBhcnNlTWVkaWFEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBib29sIE1l
ZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJpbmcpCiB7Ci0gICAgQ1NT
UGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyOwogICAgIAogICAgIFZl
Y3RvcjxPd25QdHI8TWVkaWFRdWVyeT4gPiByZXN1bHQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbGlz
dDsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0
cmluZyYgbWVkaWFTdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVyeVNldDo6YWRkKGNvbnN0IFN0cmlu
ZyYgcXVlcnlTdHJpbmcpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQ
YXJzZXIgcGFyc2VyOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBhcnNlZFF1ZXJ5ID0gcGFy
c2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZyk7CiAgICAgaWYgKCFwYXJzZWRRdWVyeSAm
JiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBNZWRp
YVF1ZXJ5U2V0OjphZGQoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIAogYm9vbCBNZWRpYVF1
ZXJ5U2V0OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZ1RvUmVtb3ZlKQogewotICAg
IENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcjsKIAogICAgIE93
blB0cjxNZWRpYVF1ZXJ5PiBwYXJzZWRRdWVyeSA9IHBhcnNlci5wYXJzZU1lZGlhUXVlcnkocXVl
cnlTdHJpbmdUb1JlbW92ZSk7CiAgICAgaWYgKCFwYXJzZWRRdWVyeSAmJiBtX2ZhbGxiYWNrVG9E
ZXNjcmlwdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXgg
Njc3OGI1YzQwZDg3NDkyYjQ1MjEzOWE1NjJiMGQ0MmRlNzRkNDY5My4uMjY2NzY3NzhkZmU0OTU0
YjA2ODFmMDE5ZjIxM2QwZmM2MDRkZTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmNwcApAQCAtNDQsMjIgKzQ0LDIyIEBAIHN0YXRpYyBQcm9wZXJ0eVNldENTU09NV3Jh
cHBlck1hcCYgcHJvcGVydHlTZXRDU1NPTVdyYXBwZXJNYXAoKQogICAgIHJldHVybiBwcm9wZXJ0
eVNldENTU09NV3JhcHBlck1hcEluc3RhbmNlOwogfQogCi1TdHlsZVByb3BlcnR5U2V0OjpTdHls
ZVByb3BlcnR5U2V0KCkKLSAgICA6IG1fc3RyaWN0UGFyc2luZyhmYWxzZSkKK1N0eWxlUHJvcGVy
dHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorICAg
IDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpCiAgICAgLCBtX2hhc0NTU09NV3JhcHBl
cihmYWxzZSkKIHsKIH0KIAogU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25z
dCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQogICAgIDogbV9wcm9wZXJ0aWVzKHBy
b3BlcnRpZXMpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcodHJ1ZSkKKyAgICAsIG1fY3NzUGFyc2Vy
TW9kZShDU1NTdHJpY3RNb2RlKQogICAgICwgbV9oYXNDU1NPTVdyYXBwZXIoZmFsc2UpCiB7CiAg
ICAgbV9wcm9wZXJ0aWVzLnNocmlua1RvRml0KCk7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0
eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIGludCBudW1Qcm9w
ZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcpCi0gICAgOiBtX3N0cmljdFBhcnNpbmcodXNl
U3RyaWN0UGFyc2luZykKK1N0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoY29uc3Qg
Q1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAg
ICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2lj
IGJlbG9uZ3MgaW4gQ1NTUGFyc2VyLgpAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgU3R5bGVQcm9w
ZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGJvb2wgaW1wCiAKICAgICAvLyBXaGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2
YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAg
ICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVzIHRoZSBw
cm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgotICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgdXNlU3RyaWN0UGFyc2luZygp
LCBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0
aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlKCksIGNvbnRl
eHRTdHlsZVNoZWV0KTsKIH0KIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0
YW50KQpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVy
dHkoaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFuCiB2b2lkIFN0
eWxlUHJvcGVydHlTZXQ6OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xh
cmF0aW9uLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBtX3Byb3Bl
cnRpZXMuY2xlYXIoKTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHVzZVN0cmljdFBhcnNpbmcoKSk7
CisgICAgQ1NTUGFyc2VyIHBhcnNlcihjc3NQYXJzZXJNb2RlKCkpOwogICAgIHBhcnNlci5wYXJz
ZURlY2xhcmF0aW9uKHRoaXMsIHN0eWxlRGVjbGFyYXRpb24sIDAsIGNvbnRleHRTdHlsZVNoZWV0
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggOTg4Y2U2MjI1
NDRhYjFhNDY1ZjBlN2U3MzgxNjliNmI4Y2I1ZDllNS4uOTM0MzQ4OTRjM2IxNDk1OTMxN2UzNGZj
NzlkNmQwNGY4OGVmZWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBA
IC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFN0eWxlUHJvcGVydHlTZXRfaAogI2RlZmluZSBTdHls
ZVByb3BlcnR5U2V0X2gKIAorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC00MCwxMyArNDEsMTMgQEAgY2xhc3MgU3R5bGVQcm9wZXJ0
eVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUHJvcGVydHlTZXQ+IHsKIHB1YmxpYzoKICAg
ICB+U3R5bGVQcm9wZXJ0eVNldCgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBjcmVhdGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlID0gQ1NTUXVpcmtzTW9kZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldCk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChjc3NQYXJzZXJNb2RlKSk7
CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShj
b25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNl
U3RyaWN0UGFyc2luZykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBj
cmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlUHJvcGVydHlTZXQocHJvcGVydGllcywgbnVtUHJvcGVydGllcywgdXNlU3Ry
aWN0UGFyc2luZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlT
ZXQocHJvcGVydGllcywgbnVtUHJvcGVydGllcywgY3NzUGFyc2VyTW9kZSkpOwogICAgIH0KICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoY29uc3QgVmVjdG9y
PENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC04Niw4ICs4Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbWVyZ2UoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIGJvb2wgYXJnT3Zl
cnJpZGVzT25Db25mbGljdCA9IHRydWUpOwogCi0gICAgdm9pZCBzZXRTdHJpY3RQYXJzaW5nKGJv
b2wgYikgeyBtX3N0cmljdFBhcnNpbmcgPSBiOyB9Ci0gICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9CisgICAgdm9pZCBzZXRDU1NQYXJz
ZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkgeyBtX2Nzc1BhcnNlck1vZGUgPSBj
c3NQYXJzZXJNb2RlOyB9CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jc3NQYXJzZXJNb2RlOyB9CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hl
ZXQpOwogCkBAIC0xMTIsOSArMTEzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ1NTT01XcmFw
cGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDU1NPTVdyYXBwZXI7IH0KIAogcHJpdmF0ZToKLSAg
ICBTdHlsZVByb3BlcnR5U2V0KCk7CisgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2Rl
KTsKICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mKTsKLSAg
ICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVByb3BlcnRpZXMs
IGJvb2wgdXNlU3RyaWN0UGFyc2luZyk7CisgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQ
cm9wZXJ0eSosIGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2RlKTsKIAogICAgIHZvaWQg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCkBAIC0xMzQsNyArMTM1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0aWVzOwogCi0gICAgYm9vbCBtX3N0
cmljdFBhcnNpbmcgOiAxOworICAgIENTU1BhcnNlck1vZGUgbV9jc3NQYXJzZXJNb2RlOwogICAg
IG11dGFibGUgYm9vbCBtX2hhc0NTU09NV3JhcHBlciA6IDE7CiAgICAgCiAgICAgZnJpZW5kIGNs
YXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5o
CmluZGV4IDA3OTg3OWNiZDhkZDZjNWY5MmI3NjI0OWVlYzRmMDRmNDlhOTYwMGYuLjVlYjVmYzQz
ZGYwMDEyOTY5NDRhYjAxNDllYjFiMDNlZGExYzI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBTdHlsZVNoZWV0X2gKICNkZWZpbmUgU3R5bGVT
aGVldF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2gu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgPSAwOwogCi0gICAgdmly
dHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gdHJ1ZSkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBDU1NQYXJz
ZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQ1NTU3R5
bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzWFNM
U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggZTM5OTg2ZTVkYzVlZDRiM2NjOGFj
MDg1OTYxYWZiZmNjNjg3MDVkMS4uODQzODQ3OWM4N2JiYmM5ZDY2ODI4ZWVjMmVmODA2MjE1YTQy
YjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNw
cApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYktpdENTU0tleWZyYW1lc1J1bGU6OmFwcGVuZChX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIHJ1bGUpCiAKIHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUpCiB7Ci0gICAgQ1NTUGFyc2VyIHAodXNl
U3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAg
IFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IG5ld1J1bGUgPSBwLnBhcnNlS2V5ZnJhbWVS
dWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAgICAgaWYgKG5ld1J1bGUpCiAgICAgICAg
IGFwcGVuZChuZXdSdWxlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5j
cHAKaW5kZXggOWFlZWE3NzE1OGJiY2JiNmU3YmI1NzEwZmE4ZTFiNjE1NjIzOWE2YS4uYWZlYmE3
MWY4OWU5OTI4YjhmNGU1ZmE1MDQxYTYxMmM5ZmRmNGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViS2l0Q1NTTWF0cml4Ojp+V2Vi
S2l0Q1NTTWF0cml4KCkKIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25z
dCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFyYXRpb24gPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
KTsKLSAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCks
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzdHJpbmcsIHRydWUsIHRydWUsIDApKSB7Cisg
ICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZURlY2xhcmF0aW9uLmdldCgpLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc3RyaW5nLCB0cnVlLCBDU1NTdHJpY3RNb2RlLCAwKSkg
ewogICAgICAgICAvLyBDb252ZXJ0IHRvIFRyYW5zZm9ybU9wZXJhdGlvbnMuIFRoaXMgY2FuIGZh
aWwgaWYgYSBwcm9wZXJ0eQogICAgICAgICAvLyByZXF1aXJlcyBzdHlsZSAoaS5lLiwgcGFyYW0g
dXNlcyAnZW1zJyBvciAnZXhzJykKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHN0
eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTZmOWNjOTlmYzYxYmZhNjY4ZGIz
NDU2YTY1YjZkYmQ3OThkMzI4Yy4uMzFhMDNhMzZjMWJkYTlhMGNhMzczYjc2MzZlMWFjOTJkYTBl
ZTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDY4LDggKzEwNjgsOCBAQCBQYXNz
UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gRG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUoY29u
c3QgU3RyaW5nJiBmbG93TmFtZQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIE1ha2UgYSBz
bG93ZXIgY2hlY2sgZm9yIGludmFsaWQgZmxvdyBuYW1lCi0gICAgQ1NTUGFyc2VyIHAodHJ1ZSk7
Ci0gICAgaWYgKCFwLnBhcnNlRmxvd1RocmVhZChmbG93TmFtZSwgdGhpcykpCisgICAgQ1NTUGFy
c2VyIHBhcnNlcjsKKyAgICBpZiAoIXBhcnNlci5wYXJzZUZsb3dUaHJlYWQoZmxvd05hbWUsIHRo
aXMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0gcmVu
ZGVyZXIoKS0+dmlldygpKQpAQCAtMjY4Niw3ICsyNjg2LDcgQEAgQ1NTU3R5bGVTaGVldCogRG9j
dW1lbnQ6OnBhZ2VVc2VyU2hlZXQoKQogICAgIC8vIFBhcnNlIHRoZSBzaGVldCBhbmQgY2FjaGUg
aXQuCiAgICAgbV9wYWdlVXNlclNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKHRo
aXMsIHNldHRpbmdzKCktPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSk7CiAgICAgbV9wYWdlVXNl
clNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUpOwotICAgIG1fcGFnZVVzZXJTaGVldC0+
cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCwgIWluUXVpcmtzTW9kZSgpKTsKKyAgICBtX3BhZ2VV
c2VyU2hlZXQtPnBhcnNlU3RyaW5nKHVzZXJTaGVldFRleHQsIHRvQ1NTUGFyc2VyTW9kZSghaW5R
dWlya3NNb2RlKCkpKTsKICAgICByZXR1cm4gbV9wYWdlVXNlclNoZWV0LmdldCgpOwogfQogCkBA
IC0yNzMyLDcgKzI3MzIsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4q
IERvY3VtZW50OjpwYWdlR3JvdXBVc2VyU2hlZXRzKCkgY29uc3QKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYXJzZWRTaGVldCA9
IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShjb25zdF9jYXN0PERvY3VtZW50Kj4odGhpcyks
IHNoZWV0LT51cmwoKSk7CiAgICAgICAgICAgICBwYXJzZWRTaGVldC0+c2V0SXNVc2VyU3R5bGVT
aGVldChzaGVldC0+bGV2ZWwoKSA9PSBVc2VyU3R5bGVVc2VyTGV2ZWwpOwotICAgICAgICAgICAg
cGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgIWluUXVpcmtzTW9kZSgp
KTsKKyAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzaGVldC0+c291cmNlKCks
IHRvQ1NTUGFyc2VyTW9kZSghaW5RdWlya3NNb2RlKCkpKTsKICAgICAgICAgICAgIGlmICghbV9w
YWdlR3JvdXBVc2VyU2hlZXRzKQogICAgICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4pOwogICAgICAg
ICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5hcHBlbmQocGFyc2VkU2hlZXQucmVsZWFzZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiMjliZmI0YTVlMjMwNWM1YTFjNmU4ZWIxZDI0
YTliZGI4ZGRjYTA5Li5lMmYxYmU5MjE4NzMyMGJjOTNjZTc4NjJmMDQ2Mjc0YjcwMDk5OTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBib29sIEVsZW1lbnQ6
OndlYmtpdE1hdGNoZXNTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICB9CiAKICAgICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+
aW5RdWlya3NNb2RlKCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7CisgICAgQ1NT
UGFyc2VyIHAodG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIENTU1NlbGVj
dG9yTGlzdCBzZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yLCBkb2N1
bWVudCgpLCBzZWxlY3Rvckxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5jcHAKaW5kZXggZDMyOTgxZjljMWY3MmMxNDkyNTgyNGI0ODY4Yzg2YzBhZjVkOTNl
YS4uZjFlYTQ3NDM1ODBkZWI0NjI0MmZjZGIzOGYwZDMyNTU3ZDFkNzA4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFN0
eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZShT
dHlsZWRFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFtX2lubGluZVN0eWxlRGVjbCkgewogICAg
ICAgICBBU1NFUlQoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpOwogICAgICAgICBtX2lubGlu
ZVN0eWxlRGVjbCA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2lubGlu
ZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYg
IWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVT
dHlsZURlY2wtPnNldENTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFl
bGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSA/IENTU1N0cmljdE1vZGUgOiBDU1NR
dWlya3NNb2RlKTsKICAgICB9CiAgICAgcmV0dXJuIG1faW5saW5lU3R5bGVEZWNsLmdldCgpOwog
fQpAQCAtNjYsNyArNjYsNyBAQCBTdHlsZVByb3BlcnR5U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0
YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqCiB7CiAgICAgaWYgKG1f
aW5saW5lU3R5bGVEZWNsICYmICFtX2lubGluZVN0eWxlRGVjbC0+aGFzQ1NTT01XcmFwcGVyKCkp
IHsKICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBtX2lubGluZVN0eWxlRGVjbC0+Y29weSgp
OwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhlbGVtZW50LT5p
c0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKTsK
KyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNI
VE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSA/IENT
U1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKTsKICAgICAgICAgcmV0dXJuIG1faW5saW5lU3R5
bGVEZWNsLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gZW5zdXJlSW5saW5lU3R5bGUoZWxlbWVu
dCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgRWxlbWVudEF0dHJpYnV0ZURhdGE6OnVwZGF0ZUlu
bGluZVN0eWxlQXZvaWRpbmdNdXRhdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtCiAgICAgICAgIG1f
aW5saW5lU3R5bGVEZWNsLmNsZWFyKCk7CiAgICAgaWYgKCFtX2lubGluZVN0eWxlRGVjbCkgewog
ICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwot
ICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhlbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKTsKKyAg
ICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSA/IENTU1N0
cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKTsKICAgICB9CiAgICAgbV9pbmxpbmVTdHlsZURlY2wt
PnBhcnNlRGVjbGFyYXRpb24odGV4dCwgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUzNDBjYjRlMjQ2MmI4NmI1MGEyZTVmNjgxNjk5
NDIyYTNkZTJhM2YuLjY4MzE5MTQ5Y2Y3MmI2OGViYzk5OGY1Y2NhZTRmMzA2NjJlNTE2ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTE2NjMsNyArMTY2Myw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4g
Tm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29k
ZSYKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFk
b2N1bWVudCgpLT5pblF1aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5n
KTsKKyAgICBDU1NQYXJzZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAg
ICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3Rv
cihzZWxlY3RvcnMsIGRvY3VtZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKQEAgLTE2OTAsNyAr
MTY5MCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoY29u
c3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7
Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAodG9DU1NQ
YXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNl
bGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgpLCBx
dWVyeVNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCmluZGV4IDhjYmQyYTJmYzVkYjYwMTcwYmI4Njc5Y2U3ZGYyYjJlZGM2MjQ1OWIu
LjAxODAwNGJmNWQxY2NjM2IzYjJlNmQ0NjQ5ZmVmNGI3ZWZjODE4MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
dm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXMKIAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBh
cnNlU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNoZWV0KQogewotICAgIG1fc2hlZXQtPnBhcnNl
U3RyaW5nKHNoZWV0LCB0cnVlKTsKKyAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldCwgQ1NT
U3RyaWN0TW9kZSk7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hl
ZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlRWxlbWVudC5jcHAKaW5kZXggYzEyOTRlNzQzZjRiYWIyYmFhNDBjYWZiNGIyMTFl
M2MwNDVhNWQ3Yy4uZWMyMDM5ZDAzMWY0NTA2MGZhNWE5MTY0NGJkNTZkMzQwZmI4NzZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFN0
eWxlRWxlbWVudDo6Y3JlYXRlU2hlZXQoRWxlbWVudCogZSwgaW50IHN0YXJ0TGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiB0ZQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZFBlbmRpbmdTaGVldCgp
OwogICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIG1fc2hlZXQgPSBD
U1NTdHlsZVNoZWV0OjpjcmVhdGUoZSwgU3RyaW5nKCksIEtVUkwoKSwgZG9jdW1lbnQtPmlucHV0
RW5jb2RpbmcoKSk7Ci0gICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0
LCAhZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpLCBzdGFydExpbmVOdW1iZXIpOworICAgICAgICAg
ICAgbV9zaGVldC0+cGFyc2VTdHJpbmdBdExpbmUodGV4dCwgZG9jdW1lbnQtPmluUXVpcmtzTW9k
ZSgpID8gQ1NTUXVpcmtzTW9kZSA6IENTU1N0cmljdE1vZGUsIHN0YXJ0TGluZU51bWJlcik7CiAg
ICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2Uo
KSk7CiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlLT50aXRsZSgpKTsKICAgICAgICAg
ICAgIG1fbG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRl
eCBkYjU3ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZm
ZDY0YTY3Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0
cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2VFbGVtZW50KQogCiAgICAgU3R5
bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3Vy
ZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBpbmxpbmVTdHlsZS0+Y29weVByb3BlcnRp
ZXNGcm9tKCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwotICAgIGlubGluZVN0eWxlLT5zZXRTdHJp
Y3RQYXJzaW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAg
ICBpbmxpbmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShzb3VyY2UtPmlubGluZVN0eWxlKCktPmNz
c1BhcnNlck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoc291cmNlLT5p
c1N0eWxlQXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQwMTcwN2JlYjlkODQ3YjlkNWYzODY3Li41
YTQ1ZGFjOWIyMTMxZTNjYmQ4MmY4ZDE5YjBmYzc2NmExOWVlZTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJI
VE1MTGlua0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNT
U1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9y
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJM
LAogI2VuZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZv
cmNlTUlNRVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhz
aGVldFRleHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0
VGV4dCwgdG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIC8vIElmIHdlJ3Jl
IGxvYWRpbmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1FIHR5cGUgaXMg
bm90CiAgICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0byBhdCBsZWFzdCBzdGFydCB3
aXRoIGEgc3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOGIyNjU3NDc0OWE3NzU3MTY2
OWJmZmJjMTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdlZjY0ZTM4NTc4NWY1NDdlZTdm
MGEyYjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBTdHJpbmcgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
LSAgICBDU1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKTsK
KyAgICBDU1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSghbV91c2VzQ1NTQ29tcGF0aWJp
bGl0eVBhcnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7
CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDQyNGE1ZmE4NmRm
NGMxOGRjYTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTJjMTk4Yzk1YWU0Y2ViZTI1ZDUzY2YzNjU0
MDBjY2VkYjhkZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBDb250ZW50U2VsZWN0b3JR
dWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0
cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyOwogICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKGlu
c2VydGlvblBvaW50LT5zZWxlY3QoKSwgaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50KCksIG1fc2Vs
ZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVudFNlbGVjdG9yUXVl
cnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3YzJjODg0ZTIz
NzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRlZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYyM2ViYzViOWRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaW5h
bFVSTCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5jbGVhclJ1bGVz
KCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgbV9wYWdlU3R5bGVT
aGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0LT5wYXJzZVN0
cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwogICAgIG1fcGFn
ZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZXMu
Y2xlYXIoKTsKICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRlNjk2NGFmZGYx
MzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4OWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsyMCw3IEBACiAj
aWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRSYXJlRGF0YV9o
CiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV9hbmlt
YXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIG1fYW5pbWF0ZWRTTUlMU3R5
bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBt
X2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7Cisg
ICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0Q1NTUGFyc2VyTW9k
ZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hbmltYXRl
ZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcAppbmRleCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZhMmExOWZkYzk3
M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMzOGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJkODFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBA
QCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50OjpTVkdGb250RmFjZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRf
ZmFjZVRhZykpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9u
ID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJhdGlvbi0+c2V0
U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRDU1NQYXJzZXJN
b2RlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNsYXJhdGlvbihz
dHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAppbmRleCA5YzQyN2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRmYTg4ZTBjOWFk
MmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBzdHls
ZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgc3R5bGUtPnNldENTU1BhcnNlck1vZGUo
U1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHlsZWRFbGVtZW50
Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOwogICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKICAgICByZXR1cm4g
c3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXQuaAppbmRleCAxN2MwZWNiZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1MjJiZGVkZGY1
Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdjZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QgPSB0
cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkaW5nKCk7CiAgICAgdm9pZCBjaGVja0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRkM2I3NzY3M2Uz
NzA0NzBkMjllNjhjNzFlMzI1YjBjYy4uNDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0YzZjOGEzYzc3
NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4
c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3Bw
CkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0eWxlU2hlZXQ6
OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291
cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlKQogewogICAgIC8vIFBhcnNlIGluIGEg
c2luZ2xlIGNodW5rIGludG8gYW4geG1sRG9jUHRyCiAgICAgY29uc3QgVUNoYXIgQk9NID0gMHhG
RUZGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAppbmRleCA4YTEwZmQ5MGI0
NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2YwMGQ4YTk4Li5hOGU2NjcyNGUwZmY1YjM0ZWNiMTQ2MzZj
OTYyMjU3MmE5ZDI2MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVT
aGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogWFNMU3R5bGVTaGVldDo6Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKIH0KIAotYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgYm9vbCkKK2Jvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlTW9kZSkKIHsKICAgICAvLyBGSVhNRTogRml4IFFYbWxR
dWVyeSBzbyB0aGF0IGl0IGFsbG93cyBjb21waWxpbmcgdGhlIHN0eWxlc2hlZXQgYmVmb3JlIHNl
dHRpbmcgdGhlIGRvY3VtZW50CiAgICAgLy8gdG8gYmUgdHJhbnNmb3JtZWQuIFRoaXMgd2F5IHdl
IGNvdWxkIG5vdCBvbmx5IGNoZWNrIGlmIHRoZSBzdHlsZXNoZWV0IGlzIGNvcnJlY3QgYmVmb3Jl
IHVzaW5nIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKaW5k
ZXggODBmYmRmMWQ5ZWU5NmYzYjQzNWNhMmUxODU3MmU0M2MyMWI2NDBlYi4uYjFiMDIzMzdkMTU1
Yzc2ZTJjYWUzMmQxYjRmYzdmOTdmNTU2MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRvY3VtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkRvY3Vt
ZW50LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
TW9kZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBX
ZWJEb2N1bWVudDo6aW5zZXJ0VXNlclN0eWxlU2hlZXQoY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VD
b2RlLCBVc2VyU3R5bGVMZXYKIAogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYXJzZWRTaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgcGFyc2VkU2hl
ZXQtPnNldElzVXNlclN0eWxlU2hlZXQobGV2ZWwgPT0gVXNlclN0eWxlVXNlckxldmVsKTsKLSAg
ICBwYXJzZWRTaGVldC0+cGFyc2VTdHJpbmcoc291cmNlQ29kZSwgIWRvY3VtZW50LT5pblF1aXJr
c01vZGUoKSk7CisgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNvdXJjZUNvZGUsIHRvQ1NT
UGFyc2VyTW9kZSghZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKSk7CiAgICAgZG9jdW1lbnQtPmFk
ZFVzZXJTaGVldChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134312</attachid>
            <date>2012-03-28 09:22:35 -0700</date>
            <delta_ts>2012-03-28 09:45:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328092233.patch</filename>
            <type>text/plain</type>
            <size>45793</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwY2UwNTM5MTE1MTJj
NTg4OGIyZDdkMTdhOTVhNDA3YTUwOGIyMS4uNzFkNWMzZGExOGRjYzRkNTZhOWY0OTkxZjRmOWFi
MmM0MjI3OWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5
bGVTaGVldCk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2RlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChDU1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2RlLmg6CisgICAgICAg
ICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAoaW5DU1NQYXJzZXJNb2RlKToKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3NzUGFyc2VyTW9k
ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBh
cnNlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
QXRMaW5lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoQ1NTU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpzZXRDU1NQYXJzZXJN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1BhcnNlck1vZGUpOgor
ICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eVNldDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnJlbW92ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
U3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OnNldENTU1BhcnNlck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0
KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVldCk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBh
Z2VHcm91cFVzZXJTaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICogZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1
ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjpD
b250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVwYXJz
ZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9Y
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEyLTAzLTI3
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdl
YktpdCBwcm9wZXJseSBsb2FkIGEgc3RhZ2VkIGZyYW1ld29yayB3aGVuIHNvZnQgbGlua2luZy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWI0Y2Y5NmFiMmRmOWJkMWY1YmRkZThiZDg0
NTlkZDg5OWY3NzE5ZS4uNmZmZmE5NDQ2NGRmOTE2ZDJhM2UxYWIzMTM0N2ZkOGE0MDNkMzIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMy0yOCAg
RGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQ
YXJzZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL1dlYkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KToKKwogMjAxMi0wMy0yNyAgU2FtaSBL
eW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFk
ZCBUZXh0dXJlQ29waWVyIGZvciBjb3B5aW5nIHRleHR1cmUgY29udGVudHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbXBvcnRSdWxlLmNwcAppbmRleCBmMTdhMTQxZTRhMzBlZjY1ODNmOTA2Y2IzNzhiYTdh
OWUzYWU4MWJmLi5iZTk5YzE0MTBiNGU5YjRlMGNkN2ViNzgwMTQzMWVkNmZjYWMyN2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCkBAIC02OCw3ICs2OCw4IEBAIHZvaWQgQ1NT
SW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtV
UkwmIGJhc2VVUkwsIGNvCiAgICAgYm9vbCBjcm9zc09yaWdpbkNTUyA9IGZhbHNlOwogICAgIGJv
b2wgdmFsaWRNSU1FVHlwZSA9IGZhbHNlOwogICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudCA9IHBh
cmVudFN0eWxlU2hlZXQoKTsKLSAgICBib29sIHN0cmljdCA9ICFwYXJlbnQgfHwgcGFyZW50LT51
c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlID0gcGFy
ZW50ID8gcGFyZW50LT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNlck1vZGUoQ1NTU3RyaWN0
TW9kZSk7CisgICAgYm9vbCBzdHJpY3QgPSBjc3NQYXJzZXJNb2RlID09IENTU1N0cmljdE1vZGU7
CiAgICAgYm9vbCBlbmZvcmNlTUlNRVR5cGUgPSBzdHJpY3Q7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gcGFyZW50ID8gcGFyZW50LT5maW5kRG9jdW1lbnQoKSA6IDA7CiAgICAgYm9vbCBuZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5zZXR0aW5ncygpICYm
IGRvY3VtZW50LT5zZXR0aW5ncygpLT5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpOwpAQCAtODIs
NyArODMsNyBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjbwogI2VuZGlmCiAKICAgICBTdHJpbmcg
c2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5cGUsICZ2YWxpZE1JTUVU
eXBlKTsKLSAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwgc3RyaWN0KTsK
KyAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwgY3NzUGFyc2VyTW9kZSk7
CiAKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
UmVxdWVzdChiYXNlVVJMKSkKICAgICAgICAgY3Jvc3NPcmlnaW5DU1MgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmZTc2NTBmYTM0NGRlYmUwYTBkOWE1ZmFiNDUy
MWUyYjM5NWIzMWNkLi41ZWQ1ZWZjMjI1ZmNkZTZkMDhlY2Y0ZGUxODc4YzY2Njc0YTAzZmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtNjYsNyArNjYsNyBAQCB1bnNpZ25l
ZCBDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBp
bmRleCwgRXhjZXB0aW9uQwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBDU1NQYXJz
ZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1vZGUo
KSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNlUnVsZShwYXJlbnRTdHls
ZVNoZWV0KCksIHJ1bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAgICAgICAvLyBTWU5UQVhf
RVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5bnRheCBlcnJvciBhbmQg
aXMgdW5wYXJzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNTE3YTg1YWFjYmJi
YmU2NjIyMjA4MDYyZGM5MjM4ZmZjMzNkMjZhMy4uMWIxZWFmZjJkMDAyY2M4M2E1YTBhZTE3MzI2
ODNlZWFjZWMyYzg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE4MSwzOCArMTgx
LDYgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjplbnN1cmVDU1NWYWx1ZVBvb2woKQogICAgICAg
ICBtX2Nzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6Y3JlYXRlKCk7CiB9CiAKLUNTU1BhcnNl
cjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKLSAgICA6IG1fY3NzUGFyc2VyTW9kZShz
dHJpY3RQYXJzaW5nID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01vZGUpCi0gICAgLCBtX2lt
cG9ydGFudChmYWxzZSkKLSAgICAsIG1faWQoMCkKLSAgICAsIG1fc3R5bGVTaGVldCgwKQotICAg
ICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCi0gICAgLCBtX2N1cnJlbnRTaG9ydGhhbmQoMCkKLSAg
ICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hhc0ZvbnRGYWNlT25seVZh
bHVlcyhmYWxzZSkKLSAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxzZSkK
LSAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1faW5TdHlsZVJ1bGVP
ckRlY2xhcmF0aW9uKGZhbHNlKQotICAgICwgbV9zZWxlY3Rvckxpc3RSYW5nZSgwLCAwKQotICAg
ICwgbV9ydWxlQm9keVJhbmdlKDAsIDApCi0gICAgLCBtX3Byb3BlcnR5UmFuZ2UoVUlOVF9NQVgs
IFVJTlRfTUFYKQotICAgICwgbV9ydWxlUmFuZ2VNYXAoMCkKLSAgICAsIG1fY3VycmVudFJ1bGVE
YXRhKDApCi0gICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUpCi0gICAgLCBtX2N1cnJlbnRD
aGFyYWN0ZXIoMCkKLSAgICAsIG1fdG9rZW4oMCkKLSAgICAsIG1fbGluZU51bWJlcigwKQotICAg
ICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCi0gICAgLCBtX2FsbG93SW1wb3J0UnVsZXMo
dHJ1ZSkKLSAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnModHJ1ZSkKLXsKLSNpZiBZ
WURFQlVHID4gMAotICAgICAgICBjc3N5eWRlYnVnID0gMTsKLSNlbmRpZgotICAgICAgICBDU1NQ
cm9wZXJ0eVNvdXJjZURhdGE6OmluaXQoKTsKLX0KLQotCiBDU1NQYXJzZXI6OkNTU1BhcnNlcihD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgOiBtX2Nzc1BhcnNlck1vZGUoY3NzUGFy
c2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQpAQCAtMzU0LDggKzMyMiwxNSBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQpCiAgICAg
fQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVj
bGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBv
cnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTVkcgcHJlc25ldGF0aW9uIGF0dHJpYnV0ZSB2YWx1
ZXMgc2hvdWxkIGJlIHBhcnNlZCBpbiBzdHJpY3QgbW9kZSBhcyB3ZWxsLgorICAgIHJldHVybiBj
c3NQYXJzZXJNb2RlID09IENTU1N0cmljdE1vZGU7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlQ29s
b3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKKyAgICBib29sIHN0
cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKTsKICAgICBpZiAoIXN0cmlu
Zy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNDb2xvclByb3Bl
cnR5SUQocHJvcGVydHlJZCkpCkBAIC00NDAsOSArNDE1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQsIGJvb2wmIGFjY2VwdHNO
ZWdhdGl2CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0
eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29u
dGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wgYWNjZXB0c05lZ2F0aXZl
TnVtYmVyczsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJN
b2RlKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAKICAgICBpZiAo
IWxlbmd0aCkKQEAgLTk2NiwyMCArOTQyLDIwIEBAIHN0YXRpYyBib29sIHBhcnNlS2V5d29yZFZh
bHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uCiBQ
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0
KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0eWxlID0gU3R5bGVQcm9w
ZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFwYXJzZVZhbHVlKGR1bW15U3R5bGUuZ2V0KCks
IENTU1Byb3BlcnR5Rm9udEZhbWlseSwgc3RyaW5nLCBmYWxzZSwgZmFsc2UsIGNvbnRleHRTdHls
ZVNoZWV0KSkKKyAgICBpZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlGb250RmFtaWx5LCBzdHJpbmcsIGZhbHNlLCBDU1NRdWlya3NNb2RlLCBjb250ZXh0U3R5bGVT
aGVldCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0
PENTU1ZhbHVlTGlzdD4oZHVtbXlTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5bGVQcm9w
ZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5
bGVTaGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRl
Y2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1w
b3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRl
eHRTdHlsZVNoZWV0KQogewotICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVT
aGVldCkpCisgICAgaWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVjbGFyYXRpb24sIHByb3Bl
cnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBjb250ZXh0U3R5bGVTaGVl
dCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwYXJzZUNvbG9yVmFsdWUoZGVjbGFy
YXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHls
ZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlk
LCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4dFN0eWxlU2hlZXQpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VLZXl3b3JkVmFsdWUoZGVjbGFyYXRp
b24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIENTU1BhcnNlciBwYXJzZXIoc3RyaWN0KTsKKyAgICBD
U1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVybiBwYXJzZXIucGFyc2VW
YWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRleHRT
dHlsZVNoZWV0KTsKIH0KIApAQCAtMTAxNiw3ICs5OTIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3Qp
CiAgICAgaWYgKGZhc3RQYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0cmljdCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJz
ZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgLy8gSW4gY2FzZSB0aGUgZmFzdC1wYXRo
IHBhcnNlciBkaWRuJ3QgdW5kZXJzdGFuZCB0aGUgY29sb3IsIHRyeSB0aGUgZnVsbCBwYXJzZXIu
CiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihzdHJpbmcpKQpAQCAtOTA5NCw3ICs5MDcwLDcg
QEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAgICAgICAgcnVsZS0+c3R5bGVSdWxlKCktPmFk
b3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CiAgICAgICAgIGlmIChtX2hhc0ZvbnRGYWNl
T25seVZhbHVlcykKICAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAg
ICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUo
KSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVsZS0+c3R5bGVSdWxlKCktPnNldFByb3Bl
cnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCks
IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9kZSkpOwogICAgICAgICBy
ZXN1bHQgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChydWxlLnJl
bGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewpAQCAtOTEzMiw3ICs5MTA4
LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogICAgICAgICB9
CiAgICAgfQogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUgPSBDU1NGb250RmFjZVJ1
bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKFN0eWxl
UHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFBy
b3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIHJ1bGUtPnNldERlY2xhcmF0
aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBt
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsKICAgICBjbGVhclBy
b3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAg
ICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpAQCAtOTIwMyw3ICs5MTc5
LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1Bh
cnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFw
cGVuZChwYWdlU2VsZWN0b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNl
bGVjdG9yVmVjdG9yKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0
eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGll
cy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9u
KFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3Bh
cnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsKICAgICAgICAgcGFnZVJ1
bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChydWxlLnJlbGVh
c2UoKSk7CiAgICAgfQpAQCAtOTI4MSw3ICs5MjU3LDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxl
KiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMp
CiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENT
U0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtl
eVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9w
ZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVy
dGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAga2V5ZnJhbWUtPnNldERlY2xhcmF0
aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBt
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsKIAogICAgIGNsZWFy
UHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggMWFlNjcwMzRiNDU0OTM4
ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4uZDhhZTQyOWU0OWE3NTg1ZDk1N2EzMDYxZmI5YWRi
YjNhNjE4OWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNjUsOSArNjUsNiBAQCBjbGFz
cyBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOwogCiBjbGFzcyBDU1NQYXJzZXIgewogcHVibGljOgot
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgYm9vbGVhbiBjb25zdHJ1Y3RvciBvbmNlIG1vdmVk
IHRvIENTU1BhcnNlck1vZGUgY29tcGxldGVseS4KLSAgICBDU1NQYXJzZXIoYm9vbCBzdHJpY3RQ
YXJzaW5nKTsKICAgICBDU1NQYXJzZXIoQ1NTUGFyc2VyTW9kZSA9IENTU1N0cmljdE1vZGUpOwog
CiAgICAgfkNTU1BhcnNlcigpOwpAQCAtNzUsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
YXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRMaW5lTnVt
YmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VNYXAqIHJ1bGVSYW5nZU1hcCA9IDApOwogICAgIFBhc3NS
ZWZQdHI8Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmKTsK
ICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4gcGFyc2VLZXlmcmFtZVJ1bGUo
Q1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHBhcnNlVmFs
dWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1w
b3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpOwor
ICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQs
IGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlLCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VDb2xvcihSR0JB
MzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0
aWMgYm9vbCBwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIERv
Y3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRG
YWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxl
U2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXggYjVlZmJkMGI1ZmIyNzI5
OTAwYzQyODdjMzY1MDI3ODIzMDlhMjBjNi4uNzFmNDIwYWFkOWI2ZDNhNjgyOGZiZmM2ZmVmMDRj
ZDgwZDJjYTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCkBAIC0zMCwxMSArMzAs
MjIgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAjZGVmaW5lIENTU1BhcnNlck1vZGVfaAog
Ci1lbnVtIENTU1BhcnNlck1vZGUgewotICAgIENTU1F1aXJrc01vZGUsCitlbnVtIHsKKyAgICBD
U1NRdWlya3NNb2RlID0gMSwKICAgICBDU1NTdHJpY3RNb2RlLAogICAgIC8vIFNWRyBzaG91bGQg
YWx3YXlzIGJlIGluIHN0cmljdCBtb2RlLiBGb3IgU1ZHIGF0dHJpYnV0ZXMsIHRoZSBydWxlcyBk
aWZmZXIgdG8gc3RyaWN0IHNvbWV0aW1lcy4KICAgICBTVkdBdHRyaWJ1dGVNb2RlCiB9OwordHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIENTU1BhcnNlck1vZGU7CisKK2lubGluZSBDU1NQYXJzZXJNb2Rl
IHRvQ1NTUGFyc2VyTW9kZShib29sIGluU3RyaWN0TW9kZSkKK3sKKyAgICByZXR1cm4gaW5TdHJp
Y3RNb2RlID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01vZGU7Cit9CisKK2lubGluZSBDU1NQ
YXJzZXJNb2RlIGluQ1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KGNzc1BhcnNlck1vZGUpOwor
fQogCiAjZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaAppbmRleCA2Zjll
ZTQxMGJhOGI5NzU3OGI0ZWIyNzY3NTRhMGI2MTZjOWRhYzg3Li4xZmIyMDZiNjJhNDQ3MTM5YzE1
ZmQwOWQ2NGQ2Yjg5YTg4NzliMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKQEAgLTY5LDEzICs2OSwx
MyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gV0VCS0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgYm9vbCBpc0ltcG9ydFJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gSU1QT1JUX1JVTEU7IH0KIAotICAgIGJvb2wgdXNlU3RyaWN0
UGFyc2luZygpIGNvbnN0CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFy
ZW50UnVsZSgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gcGFyZW50
UnVsZSgpLT5jc3NQYXJzZXJNb2RlKCk7CiAgICAgICAgIGlmIChwYXJlbnRTdHlsZVNoZWV0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgpLT51c2VTdHJpY3RQYXJzaW5n
KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxl
U2hlZXQoKS0+Y3NzUGFyc2VyTW9kZSgpOworICAgICAgICByZXR1cm4gQ1NTU3RyaWN0TW9kZTsK
ICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5
bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAyMjBiMjA2MjYx
ZjQ2NTM4ZmRlOGVlMmRjNGZjOGU2OTkyOWFjOTczLi5kNjg1MmRhNTg2NjI3ZDNiMzY4MWU2Mjc0
NTM3YmMyMjc0MGQ1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9k
ZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAgICAgOiBTdHlsZVNoZWV0KHBh
cmVudE5vZGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKICAgICAs
IG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFyc2luZyhmYWxzZSkKKyAg
ICAsIG1fY3NzUGFyc2VyTW9kZShDU1NRdWlya3NNb2RlKQogICAgICwgbV9pc1VzZXJTdHlsZVNo
ZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkK
ICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCkBAIC04OSw3ICs4OSw3IEBAIENTU1N0
eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlLCBjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0CiAgICAgOiBTdHlsZVNoZWV0KG93bmVyUnVsZSwgaHJlZiwgYmFz
ZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9sb2FkQ29tcGxldGVkKGZh
bHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFvd25lclJ1bGUgfHwgb3duZXJSdWxlLT51c2VT
dHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUob3duZXJSdWxlID8gb3duZXJS
dWxlLT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNlck1vZGUoQ1NTU3RyaWN0TW9kZSkpCiAg
ICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVlKQogICAgICwgbV9kaWRM
b2FkRXJyb3JPY2N1cihmYWxzZSkKIHsKQEAgLTE4Niw3ICsxODYsNyBAQCB1bnNpZ25lZCBDU1NT
dHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgs
IEV4Y2VwdGlvbgogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQ
YXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NSdWxlPiByID0gcC5wYXJz
ZVJ1bGUodGhpcywgcnVsZSk7CiAKICAgICBpZiAoIXIpIHsKQEAgLTMwMiwxNSArMzAyLDE1IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU3R5bGVTaGVldDo6ZGV0ZXJtaW5lTmFtZXNwYWNlKGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlZml4CiAgICAgcmV0dXJuIG51bGxBdG9tOyAvLyBBc3N1bWUg
d2Ugd29uJ3QgbWF0Y2ggYW55IG5hbWVzcGFjZXMuCiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVldDo6
cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJpbmcsIGJvb2wgc3RyaWN0KQorYm9vbCBDU1NT
dHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQogewotICAgIHJldHVybiBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcs
IHN0cmljdCwgMCk7CisgICAgcmV0dXJuIHBhcnNlU3RyaW5nQXRMaW5lKHN0cmluZywgY3NzUGFy
c2VyTW9kZSwgMCk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQor
Ym9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBpbnQgc3RhcnRMaW5lTnVtYmVyKQogewot
ICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3QpOwor
ICAgIHNldENTU1BhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CisgICAgQ1NTUGFyc2VyIHAoY3Nz
UGFyc2VyTW9kZSk7CiAgICAgcC5wYXJzZVNoZWV0KHRoaXMsIHN0cmluZywgc3RhcnRMaW5lTnVt
YmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmlu
ZGV4IDcwMmI5MjYzODFkZTg0ZTNhMzg5OTIyOTgwNDFmMGY3YzhjZTRhMGQuLjY1MjRkMTJhZTE4
Y2Q2YjlhZTI3MGFlYzM3OTNkYzQwODc4ZDBkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBDU1NTdHlsZVNoZWV0X2gKICNkZWZpbmUg
Q1NTU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAi
U3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCw5ICs4NSw5IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3R5bGVTaGVldENoYW5nZWQoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IHRydWUpOworICAgIHZp
cnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NT
U3RyaWN0TW9kZSk7CiAKLSAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYs
IGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKTsKKyAgICBib29sIHBhcnNlU3RyaW5n
QXRMaW5lKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUsIGludCBzdGFydExpbmVOdW1iZXIp
OwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpOwogCkBAIC0xMDMsOCArMTA0LDggQEAg
cHVibGljOgogICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Owog
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKIAot
ICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsg
fQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFy
c2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gY3NzUGFyc2VyTW9kZTsgfQorICAgIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzUGFyc2VyTW9kZTsgfQog
CiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hl
ZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9p
c1VzZXJTdHlsZVNoZWV0OyB9CkBAIC0xNDgsNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJpZXM7CiAKICAgICBib29sIG1fbG9hZENvbXBs
ZXRlZCA6IDE7Ci0gICAgYm9vbCBtX3N0cmljdFBhcnNpbmcgOiAxOworICAgIENTU1BhcnNlck1v
ZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wgbV9pc1VzZXJTdHlsZVNoZWV0IDogMTsKICAg
ICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyIDogMTsKICAgICBib29sIG1f
ZGlkTG9hZEVycm9yT2NjdXIgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAppbmRleCBiNzM1
ZTdjYjczNWNiZWFlZDhkYjBkNWViODA4YmNiYzI4MzM2NjVkLi43NTk1M2Q1YzM0NjBjNjJkMDVk
MGU1Y2NkNWQ3OWYzY2I4OWU2YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VNZWRpYURlc2NyaXB0b3IoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBt
ZWRpYVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOworICAgIENTU1BhcnNl
ciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAgICAgCiAgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1
ZXJ5PiA+IHJlc3VsdDsKICAgICBWZWN0b3I8U3RyaW5nPiBsaXN0OwpAQCAtMTQyLDcgKzE0Miw3
IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykK
IAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsK
LSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3Ry
aWN0TW9kZSk7CiAKICAgICBPd25QdHI8TWVkaWFRdWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIu
cGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nKTsKICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1f
ZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIE1lZGlhUXVl
cnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlT
ZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nVG9SZW1vdmUpCiB7Ci0gICAgQ1NT
UGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUp
OwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBhcnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVk
aWFRdWVyeShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsKICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1f
ZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmNwcAppbmRleCA2Nzc4YjVjNDBkODc0OTJiNDUyMTM5YTU2MmIwZDQyZGU3NGQ0NjkzLi4yNjY3
Njc3OGRmZTQ5NTRiMDY4MWYwMTlmMjEzZDBmYzYwNGRlMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00NCwyMiArNDQsMjIgQEAgc3RhdGljIFByb3BlcnR5
U2V0Q1NTT01XcmFwcGVyTWFwJiBwcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcCgpCiAgICAgcmV0
dXJuIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwSW5zdGFuY2U7CiB9CiAKLVN0eWxlUHJvcGVy
dHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoKQotICAgIDogbV9zdHJpY3RQYXJzaW5nKGZhbHNlKQor
U3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFz
Q1NTT01XcmFwcGVyKGZhbHNlKQogewogfQogCiBTdHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3Bl
cnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mIHByb3BlcnRpZXMpCiAgICAgOiBtX3By
b3BlcnRpZXMocHJvcGVydGllcykKLSAgICAsIG1fc3RyaWN0UGFyc2luZyh0cnVlKQorICAgICwg
bV9jc3NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpCiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihm
YWxzZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuc2hyaW5rVG9GaXQoKTsKIH0KIAotU3R5bGVQcm9w
ZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywg
aW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFyc2luZykKLSAgICA6IG1fc3RyaWN0
UGFyc2luZyh1c2VTdHJpY3RQYXJzaW5nKQorU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0
eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKKyAgICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJz
ZXJNb2RlKQogICAgICwgbV9oYXNDU1NPTVdyYXBwZXIoZmFsc2UpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgbG9naWMgYmVsb25ncyBpbiBDU1NQYXJzZXIuCkBAIC00OTIsNyArNDkyLDcgQEAgYm9v
bCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogICAgIC8vIFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5n
IHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRo
ZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2VydmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUg
bW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdpbm5pbmcuCi0gICAgcmV0dXJuIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCB1c2VTdHJp
Y3RQYXJzaW5nKCksIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1v
ZGUoKSwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNl
dFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwg
Ym9vbCBpbXBvcnRhbnQpCkBAIC01MzcsNyArNTM3LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0
OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0
YW4KIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcm
IHN0eWxlRGVjbGFyYXRpb24sIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewog
ICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAgIENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0
UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUoKSk7CiAgICAg
cGFyc2VyLnBhcnNlRGVjbGFyYXRpb24odGhpcywgc3R5bGVEZWNsYXJhdGlvbiwgMCwgY29udGV4
dFN0eWxlU2hlZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRl
eCA5ODhjZTYyMjU0NGFiMWE0NjVmMGU3ZTczODE2OWI2YjhjYjVkOWU1Li45MzQzNDg5NGMzYjE0
OTU5MzE3ZTM0ZmM3OWQ2ZDA0Zjg4ZWZlZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU3R5bGVQcm9wZXJ0eVNldF9oCiAj
ZGVmaW5lIFN0eWxlUHJvcGVydHlTZXRfaAogCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgog
I2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIK
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTQwLDEzICs0MSwxMyBAQCBjbGFzcyBT
dHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewog
cHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5U2V0KCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUgPSBDU1NRdWly
a3NNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5
U2V0KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KGNzc1Bh
cnNlck1vZGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGll
cywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVBy
b3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0
aWVzLCB1c2VTdHJpY3RQYXJzaW5nKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5
bGVQcm9wZXJ0eVNldChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzLCBjc3NQYXJzZXJNb2RlKSk7
CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShj
b25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQogICAgIHsKQEAgLTg2LDggKzg3
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZXJnZShjb25zdCBTdHlsZVByb3BlcnR5U2V0Kiwg
Ym9vbCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0ID0gdHJ1ZSk7CiAKLSAgICB2b2lkIHNldFN0cmlj
dFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFyc2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0
cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lk
IHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFy
c2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAgICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNlck1vZGU7IH0KIAogICAgIHZvaWQgYWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTExMiw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNDU1NPTVdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0NTU09NV3JhcHBlcjsgfQogCiBw
cml2YXRlOgotICAgIFN0eWxlUHJvcGVydHlTZXQoKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KENT
U1BhcnNlck1vZGUpOwogICAgIFN0eWxlUHJvcGVydHlTZXQoY29uc3QgVmVjdG9yPENTU1Byb3Bl
cnR5PiYpOwotICAgIFN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVt
UHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0
KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUpOwog
CiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBtX3Byb3BlcnRpZXM7CiAKLSAg
ICBib29sIG1fc3RyaWN0UGFyc2luZyA6IDE7CisgICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNl
ck1vZGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFzQ1NTT01XcmFwcGVyIDogMTsKICAgICAKICAg
ICBmcmllbmQgY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0LmgKaW5kZXggMDc5ODc5Y2JkOGRkNmM1ZjkyYjc2MjQ5ZWVjNGYwNGY0OWE5NjAw
Zi4uNWViNWZjNDNkZjAwMTI5Njk0NGFiMDE0OWViMWIwM2VkYTFjMjg2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFN0eWxlU2hlZXRfaAogI2Rl
ZmluZSBTdHlsZVNoZWV0X2gKIAorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRl
ICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJp
Y3QgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RNb2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCBlMzk5ODZlNWRj
NWVkNGIzY2M4YWMwODU5NjFhZmJmY2M2ODcwNWQxLi44NDM4NDc5Yzg3YmJiYzlkNjY4MjhlZWMy
ZWY4MDYyMTVhNDJiNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZy
YW1lc1J1bGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZTo6YXBwZW5kKFdlYktpdENTU0tleWZyYW1lUnVsZSogcnVsZSkKIAogdm9pZCBXZWJLaXRDU1NL
ZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSkKIHsKLSAgICBDU1NQ
YXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1v
ZGUoKSk7CiAgICAgUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4gbmV3UnVsZSA9IHAucGFy
c2VLZXlmcmFtZVJ1bGUocGFyZW50U3R5bGVTaGVldCgpLCBydWxlKTsKICAgICBpZiAobmV3UnVs
ZSkKICAgICAgICAgYXBwZW5kKG5ld1J1bGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWF0cml4LmNwcAppbmRleCA5YWVlYTc3MTU4YmJjYmI2ZTdiYjU3MTBmYThlMWI2MTU2MjM5
YTZhLi5hZmViYTcxZjg5ZTk5MjhiOGY0ZTVmYTUwNDFhNjEyYzlmZGY0ZGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJLaXRDU1NN
YXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogdm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJp
eFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVEZWNsYXJhdGlvbiA9IFN0eWxlUHJvcGVydHlT
ZXQ6OmNyZWF0ZSgpOwotICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJh
dGlvbi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSwgdHJ1
ZSwgMCkpIHsKKyAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24u
Z2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzdHJpbmcsIHRydWUsIENTU1N0cmlj
dE1vZGUsIDApKSB7CiAgICAgICAgIC8vIENvbnZlcnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4g
VGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5CiAgICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChp
LmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMnKQogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5NmY5Y2M5OWZj
NjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhjLi45Y2FmMzAzOGQ2Njk0ZTkzM2I4NjAxMGMw
YjgyN2JlY2JiOWIxNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNjgsOCArMTA2
OCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBEb2N1bWVudDo6d2Via2l0R2V0Rmxv
d0J5TmFtZShjb25zdCBTdHJpbmcmIGZsb3dOYW1lCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
Ly8gTWFrZSBhIHNsb3dlciBjaGVjayBmb3IgaW52YWxpZCBmbG93IG5hbWUKLSAgICBDU1NQYXJz
ZXIgcCh0cnVlKTsKLSAgICBpZiAoIXAucGFyc2VGbG93VGhyZWFkKGZsb3dOYW1lLCB0aGlzKSkK
KyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOworICAgIGlmICghcGFyc2VyLnBh
cnNlRmxvd1RocmVhZChmbG93TmFtZSwgdGhpcykpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
aWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCkpCkBAIC0yNjg2LDcgKzI2
ODYsNyBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVudDo6cGFnZVVzZXJTaGVldCgpCiAgICAgLy8g
UGFyc2UgdGhlIHNoZWV0IGFuZCBjYWNoZSBpdC4KICAgICBtX3BhZ2VVc2VyU2hlZXQgPSBDU1NT
dHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUodGhpcywgc2V0dGluZ3MoKS0+dXNlclN0eWxlU2hlZXRM
b2NhdGlvbigpKTsKICAgICBtX3BhZ2VVc2VyU2hlZXQtPnNldElzVXNlclN0eWxlU2hlZXQodHJ1
ZSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5wYXJzZVN0cmluZyh1c2VyU2hlZXRUZXh0LCAhaW5R
dWlya3NNb2RlKCkpOworICAgIG1fcGFnZVVzZXJTaGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0
VGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFpblF1aXJrc01vZGUoKSkpOwogICAgIHJldHVybiBtX3Bh
Z2VVc2VyU2hlZXQuZ2V0KCk7CiB9CiAKQEAgLTI3MzIsNyArMjczMiw3IEBAIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogRG9jdW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMo
KSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgUmVmUHRyPENT
U1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNv
bnN0X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKSwgc2hlZXQtPnVybCgpKTsKICAgICAgICAgICAgIHBh
cnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHls
ZVVzZXJMZXZlbCk7Ci0gICAgICAgICAgICBwYXJzZWRTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQt
PnNvdXJjZSgpLCAhaW5RdWlya3NNb2RlKCkpOworICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBh
cnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgdG9DU1NQYXJzZXJNb2RlKCFpblF1aXJrc01vZGUo
KSkpOwogICAgICAgICAgICAgaWYgKCFtX3BhZ2VHcm91cFVzZXJTaGVldHMpCiAgICAgICAgICAg
ICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPik7CiAgICAgICAgICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFw
cGVuZChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIy
OWJmYjRhNWUyMzA1YzVhMWM2ZThlYjFkMjRhOWJkYjhkZGNhMDkuLmUyZjFiZTkyMTg3MzIwYmM5
M2NlNzg2MmYwNDYyNzRiNzAwOTk5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3NTEs
NyArMTc1MSw3IEBAIGJvb2wgRWxlbWVudDo6d2Via2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIGJvb2wgc3Ry
aWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIg
cChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0
UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0IHNlbGVjdG9yTGlzdDsKICAgICBwLnBh
cnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRvY3VtZW50KCksIHNlbGVjdG9yTGlzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAppbmRleCBkMzI5ODFmOWMxZjcy
YzE0OTI1ODI0YjQ4NjhjODZjMGFmNWQ5M2VhLi41ODRjNmNmMWZjNmJjYzcwYTZjNWI1MTBkNDQy
N2M5MzJhOWZlNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJp
YnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgU3R5bGVQcm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0
ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAo
IW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVs
ZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6
Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVs
ZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NN
b2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NT
U1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0KICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURl
Y2wuZ2V0KCk7CiB9CkBAIC02Niw3ICs2Niw3IEBAIFN0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoU3R5bGVkRWxlbWVudCoKIHsK
ICAgICBpZiAobV9pbmxpbmVTdHlsZURlY2wgJiYgIW1faW5saW5lU3R5bGVEZWNsLT5oYXNDU1NP
TVdyYXBwZXIoKSkgewogICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IG1faW5saW5lU3R5bGVE
ZWNsLT5jb3B5KCk7Ci0gICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5n
KGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWly
a3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0
b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1
bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURl
Y2wuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBlbnN1cmVJbmxpbmVTdHlsZShlbGVtZW50KTsK
QEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6dXBkYXRlSW5saW5l
U3R5bGVBdm9pZGluZ011dGF0aW9uKFN0eWxlZEVsZW1lbnQqIGVsZW0KICAgICAgICAgbV9pbmxp
bmVTdHlsZURlY2wuY2xlYXIoKTsKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAg
ICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAg
ICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVs
ZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAg
ICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxl
bWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01v
ZGUoKSkpOwogICAgIH0KICAgICBtX2lubGluZVN0eWxlRGVjbC0+cGFyc2VEZWNsYXJhdGlvbih0
ZXh0LCBlbGVtZW50LT5kb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggNTM0MGNiNGUyNDYyYjg2YjUwYTJlNWY2ODE2OTk0MjJhM2RlMmEzZi4uNjgzMTkx
NDljZjcyYjY4ZWJjOTk4ZjVjY2FlNGYzMDY2MmU1MTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MTY2Myw3ICsxNjYzLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9y
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJgogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtz
TW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcpOworICAgIENTU1BhcnNlciBw
KHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nKSk7CiAKICAgICBDU1NTZWxlY3Rvckxpc3Qg
cXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVjdG9ycywgZG9jdW1l
bnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gTm9kZTo6cXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9y
cywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0
UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChz
dHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFy
c2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAu
cGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3VtZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggOGNi
ZDJhMmZjNWRiNjAxNzBiYjg2NzljZTdkZjJiMmVkYzYyNDU5Yi4uMDE4MDA0YmY1ZDFjY2MzYjNi
MmU2ZDQ2NDlmZWY0YjdlZmM4MTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwm
IGJhcwogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgc2hlZXQpCiB7Ci0gICAgbV9zaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQsIHRydWUp
OworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LCBDU1NTdHJpY3RNb2RlKTsKICAgICBp
ZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRo
aXMpOwogICAgIG1fY2FjaGVkU2hlZXQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNw
cAppbmRleCBjMTI5NGU3NDNmNGJhYjJiYWE0MGNhZmI0YjIxMWUzYzA0NWE1ZDdjLi4zNzNjMDM5
ZTlhNGY4MDYzOGJlMGY4OTBhNjVjYzlkNTVmYmM3MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVF
bGVtZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgU3R5bGVFbGVtZW50OjpjcmVhdGVT
aGVldChFbGVtZW50KiBlLCBpbnQgc3RhcnRMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHRlCiAg
ICAgICAgICAgICBkb2N1bWVudC0+YWRkUGVuZGluZ1NoZWV0KCk7CiAgICAgICAgICAgICBtX2xv
YWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZShlLCBTdHJpbmcoKSwgS1VSTCgpLCBkb2N1bWVudC0+aW5wdXRFbmNvZGluZygpKTsKLSAgICAg
ICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nQXRMaW5lKHRleHQsICFkb2N1bWVudC0+aW5RdWly
a3NNb2RlKCksIHN0YXJ0TGluZU51bWJlcik7CisgICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0
cmluZ0F0TGluZSh0ZXh0LCB0b0NTU1BhcnNlck1vZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUo
KSksIHN0YXJ0TGluZU51bWJlcik7CiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJp
ZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRs
ZShlLT50aXRsZSgpKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkYjU3ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2
Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZmZDY0YTY3Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBT
dHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBz
b3VyY2VFbGVtZW50KQogCiAgICAgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1
cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBp
bmxpbmVTdHlsZS0+Y29weVByb3BlcnRpZXNGcm9tKCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwot
ICAgIGlubGluZVN0eWxlLT5zZXRTdHJpY3RQYXJzaW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+
dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBpbmxpbmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShz
b3VyY2UtPmlubGluZVN0eWxlKCktPmNzc1BhcnNlck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxl
QXR0cmlidXRlVmFsaWQoc291cmNlLT5pc1N0eWxlQXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQw
MTcwN2JlYjlkODQ3YjlkNWYzODY3Li41YTQ1ZGFjOWIyMTMxZTNjYmQ4MmY4ZDE5YjBmYzc2NmEx
OWVlZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNiwx
MCArMjYsMTEgQEAKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NTdHls
ZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNp
bmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zMDUsNyArMzA2LDcg
QEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBo
cmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLAogI2VuZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0
ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAg
ICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRleHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1f
c2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNp
bmcpKTsKIAogICAgIC8vIElmIHdlJ3JlIGxvYWRpbmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdp
biwgYW5kIHRoZSBNSU1FIHR5cGUgaXMgbm90CiAgICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhl
IENTUyB0byBhdCBsZWFzdCBzdGFydCB3aXRoIGEgc3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggOGIyNjU3NDc0OWE3NzU3MTY2OWJmZmJjMTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJl
ZTAwYTdlZjY0ZTM4NTc4NWY1NDdlZTdmMGEyYjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2
LDcgKzE4OTYsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29u
c3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYg
bmV3Rm9udCkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1ND
b21wYXRpYmlsaXR5UGFyc2VNb2RlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2Vy
TW9kZSghbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRl
Y2xhcmF0aW9uVGV4dCgiZm9udDogIik7CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JR
dWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVy
eS5jcHAKaW5kZXggMDQyNGE1ZmE4NmRmNGMxOGRjYTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFl
YThlNTdkMTg0MDE0ZmU3YjczYWQ1ZDFkMjE4NWIzZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyAr
NDQsNyBAQCBDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3Qg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0
cmljdE1vZGUpOwogICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxl
Y3QoKSwgaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAg
IG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVudFNlbGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0
b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4u
M2I5ZTRlZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYyM2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcx
OSw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lk
IEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5jbGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5
bGVTaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgbV9wYWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFy
c2luZygpKTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VT
dHlsZVNoZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwogICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxl
U2hlZXRDaGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJl
U3R5bGVTaGVldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEu
aAppbmRleCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRlNjk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcy
ZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRS
YXJlRGF0YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQ
YXJzZXJNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3Bl
cnRpZXMpIHsKICAgICAgICAgICAgIG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5
bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxl
UHJvcGVydGllcy0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgICAgICAgICBtX2FuaW1h
dGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0Q1NTUGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRp
ZXMuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAppbmRleCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZhMmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1
YzAzOGMzOGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJkODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZh
Y2VFbGVtZW50OjpTVkdGb250RmFjZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNl
dDo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJhdGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVl
KTsKKyAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRDU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUp
OwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJl
bGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRl
eCA5YzQyN2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRmYTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNl
ODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZH
U3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUg
PSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2lu
ZyhmYWxzZSk7CisgICAgc3R5bGUtPnNldENTU1BhcnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7
CiAgICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9y
U1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShw
cm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAx
N2MwZWNiZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJk
OThjMDdjZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmlu
Zyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1v
ZGUgPSBDU1NTdHJpY3RNb2RlKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7
CiAgICAgdm9pZCBjaGVja0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0TGlieHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRkM2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1
YjBjYy4uNDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcg
QEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAK
LWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJv
b2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBDU1NQYXJzZXJNb2RlKQogewogICAgIC8vIFBhcnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8g
YW4geG1sRG9jUHRyCiAgICAgY29uc3QgVUNoYXIgQk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMU3R5bGVTaGVldFF0LmNwcAppbmRleCA4YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2Fh
ZjRhN2YwMGQ4YTk4Li5hOGU2NjcyNGUwZmY1YjM0ZWNiMTQ2MzZjOTYyMjU3MmE5ZDI2MmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBD
YWNoZWRSZXNvdXJjZUxvYWRlciogWFNMU3R5bGVTaGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotYm9v
bCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkK
K2Jvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENT
U1BhcnNlTW9kZSkKIHsKICAgICAvLyBGSVhNRTogRml4IFFYbWxRdWVyeSBzbyB0aGF0IGl0IGFs
bG93cyBjb21waWxpbmcgdGhlIHN0eWxlc2hlZXQgYmVmb3JlIHNldHRpbmcgdGhlIGRvY3VtZW50
CiAgICAgLy8gdG8gYmUgdHJhbnNmb3JtZWQuIFRoaXMgd2F5IHdlIGNvdWxkIG5vdCBvbmx5IGNo
ZWNrIGlmIHRoZSBzdHlsZXNoZWV0IGlzIGNvcnJlY3QgYmVmb3JlIHVzaW5nIGl0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKaW5kZXggODBmYmRmMWQ5ZWU5NmYz
YjQzNWNhMmUxODU3MmU0M2MyMWI2NDBlYi4uYjFiMDIzMzdkMTU1Yzc2ZTJjYWUzMmQxYjRmYzdm
OTdmNTU2MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCiAKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUg
IkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBXZWJEb2N1bWVudDo6aW5zZXJ0
VXNlclN0eWxlU2hlZXQoY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VDb2RlLCBVc2VyU3R5bGVMZXYK
IAogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYXJzZWRTaGVldCA9IENTU1N0eWxlU2hlZXQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgcGFyc2VkU2hlZXQtPnNldElzVXNlclN0eWxl
U2hlZXQobGV2ZWwgPT0gVXNlclN0eWxlVXNlckxldmVsKTsKLSAgICBwYXJzZWRTaGVldC0+cGFy
c2VTdHJpbmcoc291cmNlQ29kZSwgIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSk7CisgICAgcGFy
c2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNvdXJjZUNvZGUsIHRvQ1NTUGFyc2VyTW9kZSghZG9jdW1l
bnQtPmluUXVpcmtzTW9kZSgpKSk7CiAgICAgZG9jdW1lbnQtPmFkZFVzZXJTaGVldChwYXJzZWRT
aGVldC5yZWxlYXNlKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134317</attachid>
            <date>2012-03-28 09:46:04 -0700</date>
            <delta_ts>2012-03-28 10:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328094602.patch</filename>
            <type>text/plain</type>
            <size>45820</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZmYxMGY4NzA0M2Q2
MzliMjA5NWJiNDBkN2Y4YTZiODVkMmIwOC4uOTcwNzFlNTM1YjRkMmJhMTgyYmZiZmZjOTBmYTRh
NzQ4MWUwOGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5
bGVTaGVldCk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2RlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChDU1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2RlLmg6CisgICAgICAg
ICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAoaW5DU1NQYXJzZXJNb2RlKToKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3NzUGFyc2VyTW9k
ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBh
cnNlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
QXRMaW5lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoQ1NTU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpzZXRDU1NQYXJzZXJN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1BhcnNlck1vZGUpOgor
ICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eVNldDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnJlbW92ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
U3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OnNldENTU1BhcnNlck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0
KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVldCk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBh
Z2VHcm91cFVzZXJTaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICogZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1
ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjpD
b250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVwYXJz
ZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9Y
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEyLTAzLTI4
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gUGx1bWIgdGhyb3VnaCBHcmFwaGljc0xheWVyOjpjb250ZW50c09wYXF1ZSgpIHRvIExheWVy
VGlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWYwYWNiYzk0YTViODQwOTBiYmQ4
Mjc3ZTgwYzI2NjVhOGI2ZTEwOC4uMTVkMjZjZjAzODA4NmQyNWJmZDk2ZmUwYzEzYmI4NTY2NzBm
ZmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
My0yOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
ZSBDU1NQYXJzZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KToKKwogMjAxMi0wMy0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmcgdmlhIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAppbmRleCBmMTdhMTQxZTRhMzBlZjY1
ODNmOTA2Y2IzNzhiYTdhOWUzYWU4MWJmLi5iZTk5YzE0MTBiNGU5YjRlMGNkN2ViNzgwMTQzMWVk
NmZjYWMyN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCkBAIC02OCw3ICs2
OCw4IEBAIHZvaWQgQ1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvCiAgICAgYm9vbCBjcm9zc09yaWdpbkNTUyA9
IGZhbHNlOwogICAgIGJvb2wgdmFsaWRNSU1FVHlwZSA9IGZhbHNlOwogICAgIENTU1N0eWxlU2hl
ZXQqIHBhcmVudCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKLSAgICBib29sIHN0cmljdCA9ICFwYXJl
bnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlID0gcGFyZW50ID8gcGFyZW50LT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNl
ck1vZGUoQ1NTU3RyaWN0TW9kZSk7CisgICAgYm9vbCBzdHJpY3QgPSBjc3NQYXJzZXJNb2RlID09
IENTU1N0cmljdE1vZGU7CiAgICAgYm9vbCBlbmZvcmNlTUlNRVR5cGUgPSBzdHJpY3Q7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gcGFyZW50ID8gcGFyZW50LT5maW5kRG9jdW1lbnQoKSA6IDA7
CiAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50ICYmIGRvY3VtZW50
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLT5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpOwpAQCAtODIsNyArODMsNyBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjbwogI2VuZGlm
CiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5
cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0
VGV4dCwgc3RyaWN0KTsKKyAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
Y3NzUGFyc2VyTW9kZSk7CiAKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKSkKICAgICAgICAgY3Jvc3NPcmlnaW5DU1Mg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmZTc2NTBmYTM0NGRl
YmUwYTBkOWE1ZmFiNDUyMWUyYjM5NWIzMWNkLi41ZWQ1ZWZjMjI1ZmNkZTZkMDhlY2Y0ZGUxODc4
YzY2Njc0YTAzZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB1bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBy
dWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBw
KGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNl
UnVsZShwYXJlbnRTdHlsZVNoZWV0KCksIHJ1bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAg
ICAgICAvLyBTWU5UQVhfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5
bnRheCBlcnJvciBhbmQgaXMgdW5wYXJzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMzE3ZWUwOGQ5ZjM0ODZiY2IzZWNkOTczMjYzNGQ0ZDdlZmFkMzlkMS4uNTVhYmMyZTk2NTY3
MjcxNDA0MTFiMjM4YTAzM2QyNWFmZjY4Y2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE4MSwzOCArMTgxLDYgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjplbnN1cmVDU1NWYWx1
ZVBvb2woKQogICAgICAgICBtX2Nzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6Y3JlYXRlKCk7
CiB9CiAKLUNTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKLSAgICA6IG1f
Y3NzUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01v
ZGUpCi0gICAgLCBtX2ltcG9ydGFudChmYWxzZSkKLSAgICAsIG1faWQoMCkKLSAgICAsIG1fc3R5
bGVTaGVldCgwKQotICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCi0gICAgLCBtX2N1cnJlbnRT
aG9ydGhhbmQoMCkKLSAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hh
c0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKLSAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlk
Q1NTUnVsZShmYWxzZSkKLSAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAs
IG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQotICAgICwgbV9zZWxlY3Rvckxpc3RS
YW5nZSgwLCAwKQotICAgICwgbV9ydWxlQm9keVJhbmdlKDAsIDApCi0gICAgLCBtX3Byb3BlcnR5
UmFuZ2UoVUlOVF9NQVgsIFVJTlRfTUFYKQotICAgICwgbV9ydWxlUmFuZ2VNYXAoMCkKLSAgICAs
IG1fY3VycmVudFJ1bGVEYXRhKDApCi0gICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUpCi0g
ICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKLSAgICAsIG1fdG9rZW4oMCkKLSAgICAsIG1fbGlu
ZU51bWJlcigwKQotICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCi0gICAgLCBtX2Fs
bG93SW1wb3J0UnVsZXModHJ1ZSkKLSAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMo
dHJ1ZSkKLXsKLSNpZiBZWURFQlVHID4gMAotICAgICAgICBjc3N5eWRlYnVnID0gMTsKLSNlbmRp
ZgotICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OmluaXQoKTsKLX0KLQotCiBDU1NQYXJz
ZXI6OkNTU1BhcnNlcihDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgOiBtX2Nzc1Bh
cnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQpAQCAtMzU0
LDggKzMyMiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoaW50IHBy
b3BlcnR5SWQpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUoU3R5bGVQ
cm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTVkcgcHJlc25ldGF0aW9u
IGF0dHJpYnV0ZSB2YWx1ZXMgc2hvdWxkIGJlIHBhcnNlZCBpbiBzdHJpY3QgbW9kZSBhcyB3ZWxs
LgorICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09IENTU1N0cmljdE1vZGU7Cit9CisKK3N0YXRp
YyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
IHsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKTsK
ICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghaXNDb2xvclByb3BlcnR5SUQocHJvcGVydHlJZCkpCkBAIC00NDAsOSArNDE1LDEwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQs
IGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZVNpbXBs
ZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJ
ZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wg
YWNjZXB0c05lZ2F0aXZlTnVtYmVyczsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2Vy
TW9kZShjc3NQYXJzZXJNb2RlKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CiAKICAgICBpZiAoIWxlbmd0aCkKQEAgLTk2NiwyMCArOTQyLDIwIEBAIHN0YXRpYyBib29s
IHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJv
cGVydHlJZCwgY29uCiBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZv
bnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0
eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFwYXJzZVZhbHVlKGR1
bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rm9udEZhbWlseSwgc3RyaW5nLCBmYWxzZSwgZmFs
c2UsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5n
ZXQoKSwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBzdHJpbmcsIGZhbHNlLCBDU1NRdWlya3NNb2Rl
LCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PENTU1ZhbHVlTGlzdD4oZHVtbXlTdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewotICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0
aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0
LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgaWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVj
bGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBj
b250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwYXJzZUNv
bG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJp
Y3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4
dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VLZXl3b3Jk
VmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0
U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENTU1BhcnNlciBwYXJzZXIo
c3RyaWN0KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVy
biBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBv
cnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIApAQCAtMTAxNiw3ICs5OTIsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKGZhc3RQYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0
cmljdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVl
KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgLy8gSW4gY2Fz
ZSB0aGUgZmFzdC1wYXRoIHBhcnNlciBkaWRuJ3QgdW5kZXJzdGFuZCB0aGUgY29sb3IsIHRyeSB0
aGUgZnVsbCBwYXJzZXIuCiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihzdHJpbmcpKQpAQCAt
OTA5Miw3ICs5MDY4LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAgICAgICAgcnVsZS0+
c3R5bGVSdWxlKCktPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CiAgICAgICAgIGlm
IChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKICAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25s
eVZhbHVlcygpOwotICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVsZS0+c3R5bGVS
dWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVz
LmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewpA
QCAtOTEzMCw3ICs5MTA2LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1
bGUoKQogICAgICAgICB9CiAgICAgfQogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUg
PSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0
YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9
IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpA
QCAtOTIwMSw3ICs5MTc3LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQ
YXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3Rv
cjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNl
bGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRp
b24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1f
cGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUt
PnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRp
ZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsK
ICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFw
cGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtOTI3OSw3ICs5MjU1LDcgQEAgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJW
YWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlm
cmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCks
IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAga2V5ZnJh
bWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
MWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4uZDhhZTQyOWU0OWE3NTg1
ZDk1N2EzMDYxZmI5YWRiYjNhNjE4OWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNjUs
OSArNjUsNiBAQCBjbGFzcyBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOwogCiBjbGFzcyBDU1NQYXJz
ZXIgewogcHVibGljOgotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgYm9vbGVhbiBjb25zdHJ1
Y3RvciBvbmNlIG1vdmVkIHRvIENTU1BhcnNlck1vZGUgY29tcGxldGVseS4KLSAgICBDU1NQYXJz
ZXIoYm9vbCBzdHJpY3RQYXJzaW5nKTsKICAgICBDU1NQYXJzZXIoQ1NTUGFyc2VyTW9kZSA9IENT
U1N0cmljdE1vZGUpOwogCiAgICAgfkNTU1BhcnNlcigpOwpAQCAtNzUsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBp
bnQgc3RhcnRMaW5lTnVtYmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VNYXAqIHJ1bGVSYW5nZU1hcCA9
IDApOwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBj
b25zdCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4gcGFy
c2VLZXlmcmFtZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0
cmluZyYsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4
dFN0eWxlU2hlZXQpOworICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNl
dCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJN
b2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZh
bHNlKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlck1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXgg
YjVlZmJkMGI1ZmIyNzI5OTAwYzQyODdjMzY1MDI3ODIzMDlhMjBjNi4uNzFmNDIwYWFkOWI2ZDNh
NjgyOGZiZmM2ZmVmMDRjZDgwZDJjYTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlck1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5o
CkBAIC0zMCwxMSArMzAsMjIgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAjZGVmaW5lIENT
U1BhcnNlck1vZGVfaAogCi1lbnVtIENTU1BhcnNlck1vZGUgewotICAgIENTU1F1aXJrc01vZGUs
CitlbnVtIHsKKyAgICBDU1NRdWlya3NNb2RlID0gMSwKICAgICBDU1NTdHJpY3RNb2RlLAogICAg
IC8vIFNWRyBzaG91bGQgYWx3YXlzIGJlIGluIHN0cmljdCBtb2RlLiBGb3IgU1ZHIGF0dHJpYnV0
ZXMsIHRoZSBydWxlcyBkaWZmZXIgdG8gc3RyaWN0IHNvbWV0aW1lcy4KICAgICBTVkdBdHRyaWJ1
dGVNb2RlCiB9OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIENTU1BhcnNlck1vZGU7CisKK2lubGlu
ZSBDU1NQYXJzZXJNb2RlIHRvQ1NTUGFyc2VyTW9kZShib29sIGluU3RyaWN0TW9kZSkKK3sKKyAg
ICByZXR1cm4gaW5TdHJpY3RNb2RlID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01vZGU7Cit9
CisKK2lubGluZSBDU1NQYXJzZXJNb2RlIGluQ1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KGNz
c1BhcnNlck1vZGUpOworfQogCiAjZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAppbmRleCA2ZjllZTQxMGJhOGI5NzU3OGI0ZWIyNzY3NTRhMGI2MTZjOWRhYzg3Li4xZmIy
MDZiNjJhNDQ3MTM5YzE1ZmQwOWQ2NGQ2Yjg5YTg4NzliMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgK
QEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gV0VCS0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgYm9vbCBpc0lt
cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSU1QT1JUX1JVTEU7IH0KIAotICAg
IGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gcGFyZW50UnVsZSgpLT5jc3NQYXJzZXJNb2RlKCk7CiAgICAgICAgIGlmIChwYXJl
bnRTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgpLT51
c2VTdHJpY3RQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+Y3NzUGFyc2VyTW9kZSgpOworICAgICAgICByZXR1cm4g
Q1NTU3RyaWN0TW9kZTsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCAwZmY2MmY5NmEwMGZmNWYwNjRmNmM3MzQwYTBkYjczYWM4NmMwOGVhLi40ZGMzMmUyOTA3
MDFiNDJmNGE1Y2I2NGVjNmQ5OTIzMzMzNjE2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQo
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAgICAg
OiBTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJzZXQo
Y2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFy
c2luZyhmYWxzZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NRdWlya3NNb2RlKQogICAgICwg
bV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRD
U1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCkBAIC04OSw3
ICs4OSw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0UnVsZSogb3du
ZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0CiAgICAgOiBTdHlsZVNoZWV0KG93bmVy
UnVsZSwgaHJlZiwgYmFzZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9s
b2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFvd25lclJ1bGUgfHwg
b3duZXJSdWxlLT51c2VTdHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUob3du
ZXJSdWxlID8gb3duZXJSdWxlLT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNlck1vZGUoQ1NT
U3RyaWN0TW9kZSkpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVl
KQogICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxzZSkKIHsKQEAgLTIwNCw3ICsyMDQsNyBA
QCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0
cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2lu
ZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NS
dWxlPiBydWxlID0gcC5wYXJzZVJ1bGUodGhpcywgcnVsZVN0cmluZyk7CiAKICAgICBpZiAoIXJ1
bGUpIHsKQEAgLTMzMSwxNSArMzMxLDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU3R5bGVT
aGVldDo6ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4CiAgICAg
cmV0dXJuIG51bGxBdG9tOyAvLyBBc3N1bWUgd2Ugd29uJ3QgbWF0Y2ggYW55IG5hbWVzcGFjZXMu
CiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJp
bmcsIGJvb2wgc3RyaWN0KQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcgJnN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewotICAgIHJldHVy
biBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcsIHN0cmljdCwgMCk7CisgICAgcmV0dXJuIHBhcnNl
U3RyaW5nQXRMaW5lKHN0cmluZywgY3NzUGFyc2VyTW9kZSwgMCk7CiB9CiAKLWJvb2wgQ1NTU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3Ry
aWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmlu
Z0F0TGluZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQogewotICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsK
LSAgICBDU1NQYXJzZXIgcChzdHJpY3QpOworICAgIHNldENTU1BhcnNlck1vZGUoY3NzUGFyc2Vy
TW9kZSk7CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSk7CiAgICAgcC5wYXJzZVNoZWV0
KHRoaXMsIHN0cmluZywgc3RhcnRMaW5lTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDliOTI0NmE0OWQ4YjVkNGE1YjQzMjhlY2Mz
YTdhZTQyNTg5NGYzMWUuLjY0NDViZmZmNTJjMGIxOTQzNDU0MzExODI5MWFjNmRiMjI0OWY2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBDU1NTdHlsZVNoZWV0X2gKICNkZWZpbmUgQ1NTU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3R5bGVTaGVldENo
YW5nZWQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBi
b29sIHN0cmljdCA9IHRydWUpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSk7CiAKLSAgICBib29sIHBhcnNl
U3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVt
YmVyKTsKKyAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIENTU1BhcnNl
ck1vZGUsIGludCBzdGFydExpbmVOdW1iZXIpOwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGlu
ZygpOwogCkBAIC0xMDQsOCArMTA1LDggQEAgcHVibGljOgogICAgIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29s
IGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2Vy
TW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gY3Nz
UGFyc2VyTW9kZTsgfQorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3NzUGFyc2VyTW9kZTsgfQogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0
KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHls
ZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0OyB9CkBAIC0xNTEsNyAr
MTUyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJp
ZXM7CiAKICAgICBib29sIG1fbG9hZENvbXBsZXRlZCA6IDE7Ci0gICAgYm9vbCBtX3N0cmljdFBh
cnNpbmcgOiAxOworICAgIENTU1BhcnNlck1vZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wg
bV9pc1VzZXJTdHlsZVNoZWV0IDogMTsKICAgICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlk
Q1NTSGVhZGVyIDogMTsKICAgICBib29sIG1fZGlkTG9hZEVycm9yT2NjdXIgOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAppbmRleCBiNzM1ZTdjYjczNWNiZWFlZDhkYjBkNWViODA4YmNiYzI4
MzM2NjVkLi43NTk1M2Q1YzM0NjBjNjJkMDVkMGU1Y2NkNWQ3OWYzY2I4OWU2YTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgcGFy
c2VNZWRpYURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVy
eVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIg
cGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAgICAg
CiAgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5PiA+IHJlc3VsdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBsaXN0OwpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOwor
ICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAKICAgICBPd25QdHI8TWVkaWFR
dWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKQEAgLTE1
OSw3ICsxNTksNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nVG9SZW1vdmUpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQ
YXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBh
cnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBmNTAyNmUwMDgzZjgzNDY3NDRm
NmNjYmNiMzkxMWM4MzFjOGQwYzRiLi45NmVmYTgyMTUzYWI4NTg5ODc3YWMwYjYwNDcyZmFmYzgx
OTI3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00NCwy
MiArNDQsMjIgQEAgc3RhdGljIFByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwJiBwcm9wZXJ0eVNl
dENTU09NV3JhcHBlck1hcCgpCiAgICAgcmV0dXJuIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFw
SW5zdGFuY2U7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoKQotICAg
IDogbV9zdHJpY3RQYXJzaW5nKGZhbHNlKQorU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0
eVNldChDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1vZGUo
Y3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewogfQogCiBT
dHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0
eT4mIHByb3BlcnRpZXMpCiAgICAgOiBtX3Byb3BlcnRpZXMocHJvcGVydGllcykKLSAgICAsIG1f
c3RyaWN0UGFyc2luZyh0cnVlKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUp
CiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuc2hy
aW5rVG9GaXQoKTsKIH0KIAotU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25z
dCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3Ry
aWN0UGFyc2luZykKLSAgICA6IG1fc3RyaWN0UGFyc2luZyh1c2VTdHJpY3RQYXJzaW5nKQorU3R5
bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKKyAg
ICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9oYXNDU1NPTVdyYXBw
ZXIoZmFsc2UpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgYmVsb25ncyBpbiBDU1NQYXJz
ZXIuCkBAIC00OTMsNyArNDkzLDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogICAgIC8v
IFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRo
ZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2Vy
dmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdp
bm5pbmcuCi0gICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlE
LCB2YWx1ZSwgaW1wb3J0YW50LCB1c2VTdHJpY3RQYXJzaW5nKCksIGNvbnRleHRTdHlsZVNoZWV0
KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZh
bHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29udGV4dFN0eWxlU2hlZXQpOwogfQog
CiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCkBAIC01MzgsNyArNTM4
LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
aW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW4KIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cGFy
c2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24sIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAg
IENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFy
c2VyKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgcGFyc2VyLnBhcnNlRGVjbGFyYXRpb24odGhpcywg
c3R5bGVEZWNsYXJhdGlvbiwgMCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhjZTYyMjU0NGFiMWE0NjVmMGU3ZTczODE2
OWI2YjhjYjVkOWU1Li45MzQzNDg5NGMzYjE0OTU5MzE3ZTM0ZmM3OWQ2ZDA0Zjg4ZWZlZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNp
Zm5kZWYgU3R5bGVQcm9wZXJ0eVNldF9oCiAjZGVmaW5lIFN0eWxlUHJvcGVydHlTZXRfaAogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTQwLDEzICs0MSwxMyBAQCBjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5U2V0
KCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUgPSBDU1NRdWlya3NNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVByb3BlcnR5U2V0KGNzc1BhcnNlck1vZGUpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9w
ZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0
eVNldChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzLCB1c2VTdHJpY3RQYXJzaW5nKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChwcm9wZXJ0aWVzLCBudW1Q
cm9wZXJ0aWVzLCBjc3NQYXJzZXJNb2RlKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9w
ZXJ0aWVzKQogICAgIHsKQEAgLTg2LDggKzg3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZXJn
ZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0ID0g
dHJ1ZSk7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFy
c2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAg
ICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNl
ck1vZGU7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTExMiw5ICsx
MTMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDU1NPTVdyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX2hhc0NTU09NV3JhcHBlcjsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUHJvcGVydHlTZXQo
KTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwogICAgIFN0eWxlUHJvcGVy
dHlTZXQoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwotICAgIFN0eWxlUHJvcGVydHlTZXQo
Y29uc3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJz
aW5nKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVBy
b3BlcnRpZXMsIENTU1BhcnNlck1vZGUpOwogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPENTU1Byb3Bl
cnR5LCA0PiBtX3Byb3BlcnRpZXM7CiAKLSAgICBib29sIG1fc3RyaWN0UGFyc2luZyA6IDE7Cisg
ICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNlck1vZGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFz
Q1NTT01XcmFwcGVyIDogMTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggMDc5ODc5Y2JkOGRk
NmM1ZjkyYjc2MjQ5ZWVjNGYwNGY0OWE5NjAwZi4uNWViNWZjNDNkZjAwMTI5Njk0NGFiMDE0OWVi
MWIwM2VkYTFjMjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIFN0eWxlU2hlZXRfaAogI2RlZmluZSBTdHlsZVNoZWV0X2gKIAorI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC02Miw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RN
b2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlLmNwcAppbmRleCBlMzk5ODZlNWRjNWVkNGIzY2M4YWMwODU5NjFhZmJmY2M2ODcwNWQx
Li44NDM4NDc5Yzg3YmJiYzlkNjY4MjhlZWMyZWY4MDYyMTVhNDJiNGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6YXBwZW5kKFdlYktpdENTU0tleWZyYW1lUnVs
ZSogcnVsZSkKIAogdm9pZCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKGNvbnN0
IFN0cmluZyYgcnVsZSkKIHsKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOwor
ICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPFdlYktpdENTU0tl
eWZyYW1lUnVsZT4gbmV3UnVsZSA9IHAucGFyc2VLZXlmcmFtZVJ1bGUocGFyZW50U3R5bGVTaGVl
dCgpLCBydWxlKTsKICAgICBpZiAobmV3UnVsZSkKICAgICAgICAgYXBwZW5kKG5ld1J1bGUuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCA5YWVlYTc3MTU4
YmJjYmI2ZTdiYjU3MTBmYThlMWI2MTU2MjM5YTZhLi5hZmViYTcxZjg5ZTk5MjhiOGY0ZTVmYTUw
NDFhNjEyYzlmZGY0ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBXZWJLaXRDU1NNYXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogdm9p
ZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVE
ZWNsYXJhdGlvbiA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSwgdHJ1ZSwgMCkpIHsKKyAgICBpZiAoQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBzdHJpbmcsIHRydWUsIENTU1N0cmljdE1vZGUsIDApKSB7CiAgICAgICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5CiAg
ICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMn
KQogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5NmY5Y2M5OWZjNjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhj
Li45Y2FmMzAzOGQ2Njk0ZTkzM2I4NjAxMGMwYjgyN2JlY2JiOWIxNGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTEwNjgsOCArMTA2OCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRG
bG93PiBEb2N1bWVudDo6d2Via2l0R2V0Rmxvd0J5TmFtZShjb25zdCBTdHJpbmcmIGZsb3dOYW1l
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gTWFrZSBhIHNsb3dlciBjaGVjayBmb3IgaW52
YWxpZCBmbG93IG5hbWUKLSAgICBDU1NQYXJzZXIgcCh0cnVlKTsKLSAgICBpZiAoIXAucGFyc2VG
bG93VGhyZWFkKGZsb3dOYW1lLCB0aGlzKSkKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmlj
dE1vZGUpOworICAgIGlmICghcGFyc2VyLnBhcnNlRmxvd1RocmVhZChmbG93TmFtZSwgdGhpcykp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJl
cigpLT52aWV3KCkpCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVu
dDo6cGFnZVVzZXJTaGVldCgpCiAgICAgLy8gUGFyc2UgdGhlIHNoZWV0IGFuZCBjYWNoZSBpdC4K
ICAgICBtX3BhZ2VVc2VyU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUodGhpcywg
c2V0dGluZ3MoKS0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpKTsKICAgICBtX3BhZ2VVc2VyU2hl
ZXQtPnNldElzVXNlclN0eWxlU2hlZXQodHJ1ZSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5wYXJz
ZVN0cmluZyh1c2VyU2hlZXRUZXh0LCAhaW5RdWlya3NNb2RlKCkpOworICAgIG1fcGFnZVVzZXJT
aGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFpblF1aXJr
c01vZGUoKSkpOwogICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CiB9CiAKQEAgLTI3
MzIsNyArMjczMiw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogRG9j
dW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMoKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKSwgc2hl
ZXQtPnVybCgpKTsKICAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0
KHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgICAgICAgICBwYXJz
ZWRTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQtPnNvdXJjZSgpLCAhaW5RdWlya3NNb2RlKCkpOwor
ICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgdG9D
U1NQYXJzZXJNb2RlKCFpblF1aXJrc01vZGUoKSkpOwogICAgICAgICAgICAgaWYgKCFtX3BhZ2VH
cm91cFVzZXJTaGVldHMpCiAgICAgICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPik7CiAgICAgICAgICAg
ICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFwcGVuZChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIyOWJmYjRhNWUyMzA1YzVhMWM2ZThlYjFkMjRhOWJk
YjhkZGNhMDkuLmUyZjFiZTkyMTg3MzIwYmM5M2NlNzg2MmYwNDYyNzRiNzAwOTk5ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3NTEsNyArMTc1MSw3IEBAIGJvb2wgRWxlbWVudDo6d2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KIAogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJz
ZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JM
aXN0IHNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRvY3VtZW50
KCksIHNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcAppbmRleCBkMzI5ODFmOWMxZjcyYzE0OTI1ODI0YjQ4NjhjODZjMGFmNWQ5M2VhLi41
ODRjNmNmMWZjNmJjYzcwYTZjNWI1MTBkNDQyN2M5MzJhOWZlNzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgU3R5bGVQ
cm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKFN0eWxl
ZEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5
bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5
bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxl
RGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxl
bWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0K
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiB9CkBAIC02Niw3ICs2Niw3IEBA
IFN0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5s
aW5lU3R5bGUoU3R5bGVkRWxlbWVudCoKIHsKICAgICBpZiAobV9pbmxpbmVTdHlsZURlY2wgJiYg
IW1faW5saW5lU3R5bGVEZWNsLT5oYXNDU1NPTVdyYXBwZXIoKSkgewogICAgICAgICBtX2lubGlu
ZVN0eWxlRGVjbCA9IG1faW5saW5lU3R5bGVEZWNsLT5jb3B5KCk7Ci0gICAgICAgIG1faW5saW5l
U3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAh
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0
eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAg
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBl
bnN1cmVJbmxpbmVTdHlsZShlbGVtZW50KTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBFbGVtZW50
QXR0cmlidXRlRGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKFN0eWxlZEVs
ZW1lbnQqIGVsZW0KICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wuY2xlYXIoKTsKICAgICBpZiAo
IW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQ
cm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJp
Y3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFy
c2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVt
ZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0KICAgICBtX2lubGluZVN0
eWxlRGVjbC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBlbGVtZW50LT5kb2N1bWVudCgpLT5lbGVt
ZW50U2hlZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTM0MGNiNGUyNDYyYjg2YjUwYTJl
NWY2ODE2OTk0MjJhM2RlMmEzZi4uNjgzMTkxNDljZjcyYjY4ZWJjOTk4ZjVjY2FlNGYzMDY2MmU1
MTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTY2Myw3ICsxNjYzLDcgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNl
cHRpb25Db2RlJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJz
aW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmlj
dFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5n
KSk7CiAKICAgICBDU1NTZWxlY3Rvckxpc3QgcXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJz
ZVNlbGVjdG9yKHNlbGVjdG9ycywgZG9jdW1lbnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwpAQCAt
MTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVlcnlTZWxlY3Rv
ckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJr
c01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIg
cCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0
IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3Vt
ZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggOGNiZDJhMmZjNWRiNjAxNzBiYjg2NzljZTdkZjJiMmVk
YzYyNDU5Yi4uMDE4MDA0YmY1ZDFjY2MzYjNiMmU2ZDQ2NDlmZWY0YjdlZmM4MTgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhcwogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7Ci0gICAgbV9zaGVl
dC0+cGFyc2VTdHJpbmcoc2hlZXQsIHRydWUpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNo
ZWV0LCBDU1NTdHJpY3RNb2RlKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgbV9j
YWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIG1fY2FjaGVkU2hlZXQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCBjMTI5NGU3NDNmNGJhYjJiYWE0MGNh
ZmI0YjIxMWUzYzA0NWE1ZDdjLi4zNzNjMDM5ZTlhNGY4MDYzOGJlMGY4OTBhNjVjYzlkNTVmYmM3
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgU3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldChFbGVtZW50KiBlLCBpbnQgc3RhcnRMaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHRlCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkUGVuZGlu
Z1NoZWV0KCk7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgbV9z
aGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShlLCBTdHJpbmcoKSwgS1VSTCgpLCBkb2N1bWVu
dC0+aW5wdXRFbmNvZGluZygpKTsKLSAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nQXRM
aW5lKHRleHQsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCksIHN0YXJ0TGluZU51bWJlcik7Cisg
ICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCB0b0NTU1BhcnNlck1v
ZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSksIHN0YXJ0TGluZU51bWJlcik7CiAgICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlLT50aXRsZSgpKTsKICAgICAgICAgICAgIG1f
bG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkYjU3
ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZmZDY0YTY3
Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRl
UHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2VFbGVtZW50KQogCiAgICAgU3R5bGVQcm9w
ZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFi
bGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBpbmxpbmVTdHlsZS0+Y29weVByb3BlcnRpZXNGcm9t
KCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwotICAgIGlubGluZVN0eWxlLT5zZXRTdHJpY3RQYXJz
aW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBpbmxp
bmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShzb3VyY2UtPmlubGluZVN0eWxlKCktPmNzc1BhcnNl
ck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoc291cmNlLT5pc1N0eWxl
QXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQwMTcwN2JlYjlkODQ3YjlkNWYzODY3Li41YTQ1ZGFj
OWIyMTMxZTNjYmQ4MmY4ZDE5YjBmYzc2NmExOWVlZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJIVE1MTGlu
a0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLAogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlN
RVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRl
eHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
dG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIC8vIElmIHdlJ3JlIGxvYWRp
bmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1FIHR5cGUgaXMgbm90CiAg
ICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0byBhdCBsZWFzdCBzdGFydCB3aXRoIGEg
c3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOGIyNjU3NDc0OWE3NzU3MTY2OWJmZmJj
MTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdlZjY0ZTM4NTc4NWY1NDdlZTdmMGEyYjJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBTdHJpbmcgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBD
U1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKTsKKyAgICBD
U1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSghbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBh
cnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7CiAgICAg
ZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDQyNGE1ZmE4NmRmNGMxOGRj
YTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFlYThlNTdkMTg0MDE0ZmU3YjczYWQ1ZDFkMjE4NWIz
ZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBDb250ZW50U2VsZWN0b3JRdWVyeTo6
Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsK
KyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogICAgIHBhcnNlci5wYXJzZVNl
bGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwgaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50
KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVudFNl
bGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3
YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRlZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYy
M2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5j
bGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgbV9w
YWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0
LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwog
ICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0
b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRl
Njk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsy
MCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRS
YXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIG1fYW5pbWF0
ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0U3RyaWN0UGFyc2luZyhm
YWxzZSk7CisgICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0Q1NT
UGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZh
MmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMzOGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJk
ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50OjpTVkdGb250RmFjZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURl
Y2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJh
dGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRD
U1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNs
YXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YzQyN2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRm
YTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
LSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgc3R5bGUtPnNldENTU1Bh
cnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHls
ZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKICAg
ICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAxN2MwZWNiZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1
MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdjZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5n
JiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7CiAgICAgdm9pZCBjaGVja0xvYWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRk
M2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1YjBjYy4uNDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0
YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0
eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlKQogewogICAgIC8vIFBh
cnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8gYW4geG1sRG9jUHRyCiAgICAgY29uc3QgVUNoYXIg
Qk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAppbmRleCA4
YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2YwMGQ4YTk4Li5hOGU2NjcyNGUwZmY1YjM0
ZWNiMTQ2MzZjOTYyMjU3MmE5ZDI2MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dFF0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogWFNMU3R5bGVT
aGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkKK2Jvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlTW9kZSkKIHsKICAgICAvLyBGSVhNRTog
Rml4IFFYbWxRdWVyeSBzbyB0aGF0IGl0IGFsbG93cyBjb21waWxpbmcgdGhlIHN0eWxlc2hlZXQg
YmVmb3JlIHNldHRpbmcgdGhlIGRvY3VtZW50CiAgICAgLy8gdG8gYmUgdHJhbnNmb3JtZWQuIFRo
aXMgd2F5IHdlIGNvdWxkIG5vdCBvbmx5IGNoZWNrIGlmIHRoZSBzdHlsZXNoZWV0IGlzIGNvcnJl
Y3QgYmVmb3JlIHVzaW5nIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVu
dC5jcHAKaW5kZXggODBmYmRmMWQ5ZWU5NmYzYjQzNWNhMmUxODU3MmU0M2MyMWI2NDBlYi4uYjFi
MDIzMzdkMTU1Yzc2ZTJjYWUzMmQxYjRmYzdmOTdmNTU2MzJmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IldlYkRvY3VtZW50LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAi
Q1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xNzksNyArMTgwLDcg
QEAgdm9pZCBXZWJEb2N1bWVudDo6aW5zZXJ0VXNlclN0eWxlU2hlZXQoY29uc3QgV2ViU3RyaW5n
JiBzb3VyY2VDb2RlLCBVc2VyU3R5bGVMZXYKIAogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBw
YXJzZWRTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAg
cGFyc2VkU2hlZXQtPnNldElzVXNlclN0eWxlU2hlZXQobGV2ZWwgPT0gVXNlclN0eWxlVXNlckxl
dmVsKTsKLSAgICBwYXJzZWRTaGVldC0+cGFyc2VTdHJpbmcoc291cmNlQ29kZSwgIWRvY3VtZW50
LT5pblF1aXJrc01vZGUoKSk7CisgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNvdXJjZUNv
ZGUsIHRvQ1NTUGFyc2VyTW9kZSghZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKSk7CiAgICAgZG9j
dW1lbnQtPmFkZFVzZXJTaGVldChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134321</attachid>
            <date>2012-03-28 10:04:58 -0700</date>
            <delta_ts>2012-03-28 10:43:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328100457.patch</filename>
            <type>text/plain</type>
            <size>45953</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZmYxMGY4NzA0M2Q2
MzliMjA5NWJiNDBkN2Y4YTZiODVkMmIwOC4uOTcwNzFlNTM1YjRkMmJhMTgyYmZiZmZjOTBmYTRh
NzQ4MWUwOGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5
bGVTaGVldCk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2RlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChDU1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2RlLmg6CisgICAgICAg
ICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAoaW5DU1NQYXJzZXJNb2RlKToKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3NzUGFyc2VyTW9k
ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBh
cnNlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
QXRMaW5lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoQ1NTU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpzZXRDU1NQYXJzZXJN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1BhcnNlck1vZGUpOgor
ICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eVNldDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnJlbW92ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
U3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OnNldENTU1BhcnNlck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0
KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVldCk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBh
Z2VHcm91cFVzZXJTaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICogZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1
ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjpD
b250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVwYXJz
ZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9Y
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEyLTAzLTI4
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gUGx1bWIgdGhyb3VnaCBHcmFwaGljc0xheWVyOjpjb250ZW50c09wYXF1ZSgpIHRvIExheWVy
VGlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWYwYWNiYzk0YTViODQwOTBiYmQ4
Mjc3ZTgwYzI2NjVhOGI2ZTEwOC4uMTVkMjZjZjAzODA4NmQyNWJmZDk2ZmUwYzEzYmI4NTY2NzBm
ZmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
My0yOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
ZSBDU1NQYXJzZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KToKKwogMjAxMi0wMy0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmcgdmlhIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAppbmRleCBmMTdhMTQxZTRhMzBlZjY1
ODNmOTA2Y2IzNzhiYTdhOWUzYWU4MWJmLi5iZTk5YzE0MTBiNGU5YjRlMGNkN2ViNzgwMTQzMWVk
NmZjYWMyN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCkBAIC02OCw3ICs2
OCw4IEBAIHZvaWQgQ1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvCiAgICAgYm9vbCBjcm9zc09yaWdpbkNTUyA9
IGZhbHNlOwogICAgIGJvb2wgdmFsaWRNSU1FVHlwZSA9IGZhbHNlOwogICAgIENTU1N0eWxlU2hl
ZXQqIHBhcmVudCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKLSAgICBib29sIHN0cmljdCA9ICFwYXJl
bnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlID0gcGFyZW50ID8gcGFyZW50LT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNl
ck1vZGUoQ1NTU3RyaWN0TW9kZSk7CisgICAgYm9vbCBzdHJpY3QgPSBjc3NQYXJzZXJNb2RlID09
IENTU1N0cmljdE1vZGU7CiAgICAgYm9vbCBlbmZvcmNlTUlNRVR5cGUgPSBzdHJpY3Q7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gcGFyZW50ID8gcGFyZW50LT5maW5kRG9jdW1lbnQoKSA6IDA7
CiAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50ICYmIGRvY3VtZW50
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLT5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpOwpAQCAtODIsNyArODMsNyBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjbwogI2VuZGlm
CiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5
cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0
VGV4dCwgc3RyaWN0KTsKKyAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
Y3NzUGFyc2VyTW9kZSk7CiAKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKSkKICAgICAgICAgY3Jvc3NPcmlnaW5DU1Mg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmZTc2NTBmYTM0NGRl
YmUwYTBkOWE1ZmFiNDUyMWUyYjM5NWIzMWNkLi41ZWQ1ZWZjMjI1ZmNkZTZkMDhlY2Y0ZGUxODc4
YzY2Njc0YTAzZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB1bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBy
dWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBw
KGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNl
UnVsZShwYXJlbnRTdHlsZVNoZWV0KCksIHJ1bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAg
ICAgICAvLyBTWU5UQVhfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5
bnRheCBlcnJvciBhbmQgaXMgdW5wYXJzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMzE3ZWUwOGQ5ZjM0ODZiY2IzZWNkOTczMjYzNGQ0ZDdlZmFkMzlkMS4uNTVhYmMyZTk2NTY3
MjcxNDA0MTFiMjM4YTAzM2QyNWFmZjY4Y2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE4MSwzOCArMTgxLDYgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjplbnN1cmVDU1NWYWx1
ZVBvb2woKQogICAgICAgICBtX2Nzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6Y3JlYXRlKCk7
CiB9CiAKLUNTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKLSAgICA6IG1f
Y3NzUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01v
ZGUpCi0gICAgLCBtX2ltcG9ydGFudChmYWxzZSkKLSAgICAsIG1faWQoMCkKLSAgICAsIG1fc3R5
bGVTaGVldCgwKQotICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCi0gICAgLCBtX2N1cnJlbnRT
aG9ydGhhbmQoMCkKLSAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hh
c0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKLSAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlk
Q1NTUnVsZShmYWxzZSkKLSAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAs
IG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQotICAgICwgbV9zZWxlY3Rvckxpc3RS
YW5nZSgwLCAwKQotICAgICwgbV9ydWxlQm9keVJhbmdlKDAsIDApCi0gICAgLCBtX3Byb3BlcnR5
UmFuZ2UoVUlOVF9NQVgsIFVJTlRfTUFYKQotICAgICwgbV9ydWxlUmFuZ2VNYXAoMCkKLSAgICAs
IG1fY3VycmVudFJ1bGVEYXRhKDApCi0gICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUpCi0g
ICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKLSAgICAsIG1fdG9rZW4oMCkKLSAgICAsIG1fbGlu
ZU51bWJlcigwKQotICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCi0gICAgLCBtX2Fs
bG93SW1wb3J0UnVsZXModHJ1ZSkKLSAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMo
dHJ1ZSkKLXsKLSNpZiBZWURFQlVHID4gMAotICAgICAgICBjc3N5eWRlYnVnID0gMTsKLSNlbmRp
ZgotICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OmluaXQoKTsKLX0KLQotCiBDU1NQYXJz
ZXI6OkNTU1BhcnNlcihDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgOiBtX2Nzc1Bh
cnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQpAQCAtMzU0
LDggKzMyMiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoaW50IHBy
b3BlcnR5SWQpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUoU3R5bGVQ
cm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTVkcgcHJlc25ldGF0aW9u
IGF0dHJpYnV0ZSB2YWx1ZXMgc2hvdWxkIGJlIHBhcnNlZCBpbiBzdHJpY3QgbW9kZSBhcyB3ZWxs
LgorICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09IENTU1N0cmljdE1vZGU7Cit9CisKK3N0YXRp
YyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
IHsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKTsK
ICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghaXNDb2xvclByb3BlcnR5SUQocHJvcGVydHlJZCkpCkBAIC00NDAsOSArNDE1LDEwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQs
IGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZVNpbXBs
ZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJ
ZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wg
YWNjZXB0c05lZ2F0aXZlTnVtYmVyczsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2Vy
TW9kZShjc3NQYXJzZXJNb2RlKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CiAKICAgICBpZiAoIWxlbmd0aCkKQEAgLTk2NiwyMCArOTQyLDIwIEBAIHN0YXRpYyBib29s
IHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJv
cGVydHlJZCwgY29uCiBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZv
bnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0
eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFwYXJzZVZhbHVlKGR1
bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rm9udEZhbWlseSwgc3RyaW5nLCBmYWxzZSwgZmFs
c2UsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5n
ZXQoKSwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBzdHJpbmcsIGZhbHNlLCBDU1NRdWlya3NNb2Rl
LCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PENTU1ZhbHVlTGlzdD4oZHVtbXlTdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewotICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0
aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0
LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgaWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVj
bGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBj
b250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwYXJzZUNv
bG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJp
Y3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4
dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VLZXl3b3Jk
VmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0
U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENTU1BhcnNlciBwYXJzZXIo
c3RyaWN0KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVy
biBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBv
cnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIApAQCAtMTAxNiw3ICs5OTIsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKGZhc3RQYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0
cmljdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVl
KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgLy8gSW4gY2Fz
ZSB0aGUgZmFzdC1wYXRoIHBhcnNlciBkaWRuJ3QgdW5kZXJzdGFuZCB0aGUgY29sb3IsIHRyeSB0
aGUgZnVsbCBwYXJzZXIuCiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihzdHJpbmcpKQpAQCAt
OTA5Miw3ICs5MDY4LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAgICAgICAgcnVsZS0+
c3R5bGVSdWxlKCktPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CiAgICAgICAgIGlm
IChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKICAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25s
eVZhbHVlcygpOwotICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVsZS0+c3R5bGVS
dWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVz
LmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewpA
QCAtOTEzMCw3ICs5MTA2LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1
bGUoKQogICAgICAgICB9CiAgICAgfQogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUg
PSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0
YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9
IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpA
QCAtOTIwMSw3ICs5MTc3LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQ
YXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3Rv
cjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNl
bGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRp
b24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1f
cGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUt
PnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRp
ZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsK
ICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFw
cGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtOTI3OSw3ICs5MjU1LDcgQEAgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJW
YWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlm
cmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCks
IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAga2V5ZnJh
bWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
MWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4uZDhhZTQyOWU0OWE3NTg1
ZDk1N2EzMDYxZmI5YWRiYjNhNjE4OWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNjUs
OSArNjUsNiBAQCBjbGFzcyBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOwogCiBjbGFzcyBDU1NQYXJz
ZXIgewogcHVibGljOgotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgYm9vbGVhbiBjb25zdHJ1
Y3RvciBvbmNlIG1vdmVkIHRvIENTU1BhcnNlck1vZGUgY29tcGxldGVseS4KLSAgICBDU1NQYXJz
ZXIoYm9vbCBzdHJpY3RQYXJzaW5nKTsKICAgICBDU1NQYXJzZXIoQ1NTUGFyc2VyTW9kZSA9IENT
U1N0cmljdE1vZGUpOwogCiAgICAgfkNTU1BhcnNlcigpOwpAQCAtNzUsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBp
bnQgc3RhcnRMaW5lTnVtYmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VNYXAqIHJ1bGVSYW5nZU1hcCA9
IDApOwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBj
b25zdCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4gcGFy
c2VLZXlmcmFtZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0
cmluZyYsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4
dFN0eWxlU2hlZXQpOworICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNl
dCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJN
b2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZh
bHNlKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlck1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXgg
YjVlZmJkMGI1ZmIyNzI5OTAwYzQyODdjMzY1MDI3ODIzMDlhMjBjNi4uNzFmNDIwYWFkOWI2ZDNh
NjgyOGZiZmM2ZmVmMDRjZDgwZDJjYTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlck1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5o
CkBAIC0zMCwxMSArMzAsMjIgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAjZGVmaW5lIENT
U1BhcnNlck1vZGVfaAogCi1lbnVtIENTU1BhcnNlck1vZGUgewotICAgIENTU1F1aXJrc01vZGUs
CitlbnVtIHsKKyAgICBDU1NRdWlya3NNb2RlID0gMSwKICAgICBDU1NTdHJpY3RNb2RlLAogICAg
IC8vIFNWRyBzaG91bGQgYWx3YXlzIGJlIGluIHN0cmljdCBtb2RlLiBGb3IgU1ZHIGF0dHJpYnV0
ZXMsIHRoZSBydWxlcyBkaWZmZXIgdG8gc3RyaWN0IHNvbWV0aW1lcy4KICAgICBTVkdBdHRyaWJ1
dGVNb2RlCiB9OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIENTU1BhcnNlck1vZGU7CisKK2lubGlu
ZSBDU1NQYXJzZXJNb2RlIHRvQ1NTUGFyc2VyTW9kZShib29sIGluU3RyaWN0TW9kZSkKK3sKKyAg
ICByZXR1cm4gaW5TdHJpY3RNb2RlID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01vZGU7Cit9
CisKK2lubGluZSBDU1NQYXJzZXJNb2RlIGluQ1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KGNz
c1BhcnNlck1vZGUpOworfQogCiAjZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAppbmRleCA2ZjllZTQxMGJhOGI5NzU3OGI0ZWIyNzY3NTRhMGI2MTZjOWRhYzg3Li4xZmIy
MDZiNjJhNDQ3MTM5YzE1ZmQwOWQ2NGQ2Yjg5YTg4NzliMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgK
QEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gV0VCS0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgYm9vbCBpc0lt
cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSU1QT1JUX1JVTEU7IH0KIAotICAg
IGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gcGFyZW50UnVsZSgpLT5jc3NQYXJzZXJNb2RlKCk7CiAgICAgICAgIGlmIChwYXJl
bnRTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgpLT51
c2VTdHJpY3RQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+Y3NzUGFyc2VyTW9kZSgpOworICAgICAgICByZXR1cm4g
Q1NTU3RyaWN0TW9kZTsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCAwZmY2MmY5NmEwMGZmNWYwNjRmNmM3MzQwYTBkYjczYWM4NmMwOGVhLi40ZGMzMmUyOTA3
MDFiNDJmNGE1Y2I2NGVjNmQ5OTIzMzMzNjE2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQo
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAgICAg
OiBTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJzZXQo
Y2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFy
c2luZyhmYWxzZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NRdWlya3NNb2RlKQogICAgICwg
bV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRD
U1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCkBAIC04OSw3
ICs4OSw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0UnVsZSogb3du
ZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0CiAgICAgOiBTdHlsZVNoZWV0KG93bmVy
UnVsZSwgaHJlZiwgYmFzZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9s
b2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFvd25lclJ1bGUgfHwg
b3duZXJSdWxlLT51c2VTdHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUob3du
ZXJSdWxlID8gb3duZXJSdWxlLT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNlck1vZGUoQ1NT
U3RyaWN0TW9kZSkpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVl
KQogICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxzZSkKIHsKQEAgLTIwNCw3ICsyMDQsNyBA
QCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0
cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2lu
ZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NS
dWxlPiBydWxlID0gcC5wYXJzZVJ1bGUodGhpcywgcnVsZVN0cmluZyk7CiAKICAgICBpZiAoIXJ1
bGUpIHsKQEAgLTMzMSwxNSArMzMxLDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU3R5bGVT
aGVldDo6ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4CiAgICAg
cmV0dXJuIG51bGxBdG9tOyAvLyBBc3N1bWUgd2Ugd29uJ3QgbWF0Y2ggYW55IG5hbWVzcGFjZXMu
CiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJp
bmcsIGJvb2wgc3RyaWN0KQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcgJnN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewotICAgIHJldHVy
biBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcsIHN0cmljdCwgMCk7CisgICAgcmV0dXJuIHBhcnNl
U3RyaW5nQXRMaW5lKHN0cmluZywgY3NzUGFyc2VyTW9kZSwgMCk7CiB9CiAKLWJvb2wgQ1NTU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3Ry
aWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmlu
Z0F0TGluZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQogewotICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsK
LSAgICBDU1NQYXJzZXIgcChzdHJpY3QpOworICAgIHNldENTU1BhcnNlck1vZGUoY3NzUGFyc2Vy
TW9kZSk7CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSk7CiAgICAgcC5wYXJzZVNoZWV0
KHRoaXMsIHN0cmluZywgc3RhcnRMaW5lTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDliOTI0NmE0OWQ4YjVkNGE1YjQzMjhlY2Mz
YTdhZTQyNTg5NGYzMWUuLjY0NDViZmZmNTJjMGIxOTQzNDU0MzExODI5MWFjNmRiMjI0OWY2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBDU1NTdHlsZVNoZWV0X2gKICNkZWZpbmUgQ1NTU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3R5bGVTaGVldENo
YW5nZWQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBi
b29sIHN0cmljdCA9IHRydWUpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSk7CiAKLSAgICBib29sIHBhcnNl
U3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVt
YmVyKTsKKyAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIENTU1BhcnNl
ck1vZGUsIGludCBzdGFydExpbmVOdW1iZXIpOwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGlu
ZygpOwogCkBAIC0xMDQsOCArMTA1LDggQEAgcHVibGljOgogICAgIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29s
IGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2Vy
TW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gY3Nz
UGFyc2VyTW9kZTsgfQorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3NzUGFyc2VyTW9kZTsgfQogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0
KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHls
ZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0OyB9CkBAIC0xNTEsNyAr
MTUyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJp
ZXM7CiAKICAgICBib29sIG1fbG9hZENvbXBsZXRlZCA6IDE7Ci0gICAgYm9vbCBtX3N0cmljdFBh
cnNpbmcgOiAxOworICAgIENTU1BhcnNlck1vZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wg
bV9pc1VzZXJTdHlsZVNoZWV0IDogMTsKICAgICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlk
Q1NTSGVhZGVyIDogMTsKICAgICBib29sIG1fZGlkTG9hZEVycm9yT2NjdXIgOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAppbmRleCBiNzM1ZTdjYjczNWNiZWFlZDhkYjBkNWViODA4YmNiYzI4
MzM2NjVkLi43NTk1M2Q1YzM0NjBjNjJkMDVkMGU1Y2NkNWQ3OWYzY2I4OWU2YTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgcGFy
c2VNZWRpYURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVy
eVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIg
cGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAgICAg
CiAgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5PiA+IHJlc3VsdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBsaXN0OwpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOwor
ICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAKICAgICBPd25QdHI8TWVkaWFR
dWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKQEAgLTE1
OSw3ICsxNTksNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nVG9SZW1vdmUpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQ
YXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBh
cnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBmNTAyNmUwMDgzZjgzNDY3NDRm
NmNjYmNiMzkxMWM4MzFjOGQwYzRiLi45NmVmYTgyMTUzYWI4NTg5ODc3YWMwYjYwNDcyZmFmYzgx
OTI3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00NCwy
MiArNDQsMjIgQEAgc3RhdGljIFByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwJiBwcm9wZXJ0eVNl
dENTU09NV3JhcHBlck1hcCgpCiAgICAgcmV0dXJuIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFw
SW5zdGFuY2U7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoKQotICAg
IDogbV9zdHJpY3RQYXJzaW5nKGZhbHNlKQorU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0
eVNldChDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1vZGUo
Y3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewogfQogCiBT
dHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0
eT4mIHByb3BlcnRpZXMpCiAgICAgOiBtX3Byb3BlcnRpZXMocHJvcGVydGllcykKLSAgICAsIG1f
c3RyaWN0UGFyc2luZyh0cnVlKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUp
CiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuc2hy
aW5rVG9GaXQoKTsKIH0KIAotU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25z
dCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3Ry
aWN0UGFyc2luZykKLSAgICA6IG1fc3RyaWN0UGFyc2luZyh1c2VTdHJpY3RQYXJzaW5nKQorU3R5
bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKKyAg
ICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9oYXNDU1NPTVdyYXBw
ZXIoZmFsc2UpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgYmVsb25ncyBpbiBDU1NQYXJz
ZXIuCkBAIC00OTMsNyArNDkzLDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogICAgIC8v
IFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRo
ZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2Vy
dmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdp
bm5pbmcuCi0gICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlE
LCB2YWx1ZSwgaW1wb3J0YW50LCB1c2VTdHJpY3RQYXJzaW5nKCksIGNvbnRleHRTdHlsZVNoZWV0
KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZh
bHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29udGV4dFN0eWxlU2hlZXQpOwogfQog
CiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCkBAIC01MzgsNyArNTM4
LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
aW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW4KIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cGFy
c2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24sIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAg
IENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFy
c2VyKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgcGFyc2VyLnBhcnNlRGVjbGFyYXRpb24odGhpcywg
c3R5bGVEZWNsYXJhdGlvbiwgMCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhjZTYyMjU0NGFiMWE0NjVmMGU3ZTczODE2
OWI2YjhjYjVkOWU1Li45MzQzNDg5NGMzYjE0OTU5MzE3ZTM0ZmM3OWQ2ZDA0Zjg4ZWZlZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNp
Zm5kZWYgU3R5bGVQcm9wZXJ0eVNldF9oCiAjZGVmaW5lIFN0eWxlUHJvcGVydHlTZXRfaAogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTQwLDEzICs0MSwxMyBAQCBjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5U2V0
KCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUgPSBDU1NRdWlya3NNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVByb3BlcnR5U2V0KGNzc1BhcnNlck1vZGUpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9w
ZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0
eVNldChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzLCB1c2VTdHJpY3RQYXJzaW5nKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChwcm9wZXJ0aWVzLCBudW1Q
cm9wZXJ0aWVzLCBjc3NQYXJzZXJNb2RlKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9w
ZXJ0aWVzKQogICAgIHsKQEAgLTg2LDggKzg3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZXJn
ZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0ID0g
dHJ1ZSk7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFy
c2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAg
ICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNl
ck1vZGU7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTExMiw5ICsx
MTMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDU1NPTVdyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX2hhc0NTU09NV3JhcHBlcjsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUHJvcGVydHlTZXQo
KTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwogICAgIFN0eWxlUHJvcGVy
dHlTZXQoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwotICAgIFN0eWxlUHJvcGVydHlTZXQo
Y29uc3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJz
aW5nKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVBy
b3BlcnRpZXMsIENTU1BhcnNlck1vZGUpOwogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPENTU1Byb3Bl
cnR5LCA0PiBtX3Byb3BlcnRpZXM7CiAKLSAgICBib29sIG1fc3RyaWN0UGFyc2luZyA6IDE7Cisg
ICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNlck1vZGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFz
Q1NTT01XcmFwcGVyIDogMTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggMDc5ODc5Y2JkOGRk
NmM1ZjkyYjc2MjQ5ZWVjNGYwNGY0OWE5NjAwZi4uNWViNWZjNDNkZjAwMTI5Njk0NGFiMDE0OWVi
MWIwM2VkYTFjMjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIFN0eWxlU2hlZXRfaAogI2RlZmluZSBTdHlsZVNoZWV0X2gKIAorI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC02Miw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RN
b2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlLmNwcAppbmRleCBlMzk5ODZlNWRjNWVkNGIzY2M4YWMwODU5NjFhZmJmY2M2ODcwNWQx
Li44NDM4NDc5Yzg3YmJiYzlkNjY4MjhlZWMyZWY4MDYyMTVhNDJiNGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6YXBwZW5kKFdlYktpdENTU0tleWZyYW1lUnVs
ZSogcnVsZSkKIAogdm9pZCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKGNvbnN0
IFN0cmluZyYgcnVsZSkKIHsKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOwor
ICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPFdlYktpdENTU0tl
eWZyYW1lUnVsZT4gbmV3UnVsZSA9IHAucGFyc2VLZXlmcmFtZVJ1bGUocGFyZW50U3R5bGVTaGVl
dCgpLCBydWxlKTsKICAgICBpZiAobmV3UnVsZSkKICAgICAgICAgYXBwZW5kKG5ld1J1bGUuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCA5YWVlYTc3MTU4
YmJjYmI2ZTdiYjU3MTBmYThlMWI2MTU2MjM5YTZhLi5hZmViYTcxZjg5ZTk5MjhiOGY0ZTVmYTUw
NDFhNjEyYzlmZGY0ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBXZWJLaXRDU1NNYXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogdm9p
ZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVE
ZWNsYXJhdGlvbiA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSwgdHJ1ZSwgMCkpIHsKKyAgICBpZiAoQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBzdHJpbmcsIHRydWUsIENTU1N0cmljdE1vZGUsIDApKSB7CiAgICAgICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5CiAg
ICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMn
KQogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5NmY5Y2M5OWZjNjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhj
Li45Y2FmMzAzOGQ2Njk0ZTkzM2I4NjAxMGMwYjgyN2JlY2JiOWIxNGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTEwNjgsOCArMTA2OCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRG
bG93PiBEb2N1bWVudDo6d2Via2l0R2V0Rmxvd0J5TmFtZShjb25zdCBTdHJpbmcmIGZsb3dOYW1l
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gTWFrZSBhIHNsb3dlciBjaGVjayBmb3IgaW52
YWxpZCBmbG93IG5hbWUKLSAgICBDU1NQYXJzZXIgcCh0cnVlKTsKLSAgICBpZiAoIXAucGFyc2VG
bG93VGhyZWFkKGZsb3dOYW1lLCB0aGlzKSkKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmlj
dE1vZGUpOworICAgIGlmICghcGFyc2VyLnBhcnNlRmxvd1RocmVhZChmbG93TmFtZSwgdGhpcykp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJl
cigpLT52aWV3KCkpCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVu
dDo6cGFnZVVzZXJTaGVldCgpCiAgICAgLy8gUGFyc2UgdGhlIHNoZWV0IGFuZCBjYWNoZSBpdC4K
ICAgICBtX3BhZ2VVc2VyU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUodGhpcywg
c2V0dGluZ3MoKS0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpKTsKICAgICBtX3BhZ2VVc2VyU2hl
ZXQtPnNldElzVXNlclN0eWxlU2hlZXQodHJ1ZSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5wYXJz
ZVN0cmluZyh1c2VyU2hlZXRUZXh0LCAhaW5RdWlya3NNb2RlKCkpOworICAgIG1fcGFnZVVzZXJT
aGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFpblF1aXJr
c01vZGUoKSkpOwogICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CiB9CiAKQEAgLTI3
MzIsNyArMjczMiw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogRG9j
dW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMoKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKSwgc2hl
ZXQtPnVybCgpKTsKICAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0
KHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgICAgICAgICBwYXJz
ZWRTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQtPnNvdXJjZSgpLCAhaW5RdWlya3NNb2RlKCkpOwor
ICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgdG9D
U1NQYXJzZXJNb2RlKCFpblF1aXJrc01vZGUoKSkpOwogICAgICAgICAgICAgaWYgKCFtX3BhZ2VH
cm91cFVzZXJTaGVldHMpCiAgICAgICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPik7CiAgICAgICAgICAg
ICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFwcGVuZChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIyOWJmYjRhNWUyMzA1YzVhMWM2ZThlYjFkMjRhOWJk
YjhkZGNhMDkuLmUyZjFiZTkyMTg3MzIwYmM5M2NlNzg2MmYwNDYyNzRiNzAwOTk5ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3NTEsNyArMTc1MSw3IEBAIGJvb2wgRWxlbWVudDo6d2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KIAogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJz
ZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JM
aXN0IHNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRvY3VtZW50
KCksIHNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcAppbmRleCBkMzI5ODFmOWMxZjcyYzE0OTI1ODI0YjQ4NjhjODZjMGFmNWQ5M2VhLi41
ODRjNmNmMWZjNmJjYzcwYTZjNWI1MTBkNDQyN2M5MzJhOWZlNzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgU3R5bGVQ
cm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKFN0eWxl
ZEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5
bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5
bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxl
RGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxl
bWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0K
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiB9CkBAIC02Niw3ICs2Niw3IEBA
IFN0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5s
aW5lU3R5bGUoU3R5bGVkRWxlbWVudCoKIHsKICAgICBpZiAobV9pbmxpbmVTdHlsZURlY2wgJiYg
IW1faW5saW5lU3R5bGVEZWNsLT5oYXNDU1NPTVdyYXBwZXIoKSkgewogICAgICAgICBtX2lubGlu
ZVN0eWxlRGVjbCA9IG1faW5saW5lU3R5bGVEZWNsLT5jb3B5KCk7Ci0gICAgICAgIG1faW5saW5l
U3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAh
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0
eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAg
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBl
bnN1cmVJbmxpbmVTdHlsZShlbGVtZW50KTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBFbGVtZW50
QXR0cmlidXRlRGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKFN0eWxlZEVs
ZW1lbnQqIGVsZW0KICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wuY2xlYXIoKTsKICAgICBpZiAo
IW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQ
cm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJp
Y3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFy
c2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVt
ZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0KICAgICBtX2lubGluZVN0
eWxlRGVjbC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBlbGVtZW50LT5kb2N1bWVudCgpLT5lbGVt
ZW50U2hlZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTM0MGNiNGUyNDYyYjg2YjUwYTJl
NWY2ODE2OTk0MjJhM2RlMmEzZi4uNjgzMTkxNDljZjcyYjY4ZWJjOTk4ZjVjY2FlNGYzMDY2MmU1
MTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTY2Myw3ICsxNjYzLDcgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNl
cHRpb25Db2RlJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJz
aW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmlj
dFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5n
KSk7CiAKICAgICBDU1NTZWxlY3Rvckxpc3QgcXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJz
ZVNlbGVjdG9yKHNlbGVjdG9ycywgZG9jdW1lbnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwpAQCAt
MTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVlcnlTZWxlY3Rv
ckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJr
c01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIg
cCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0
IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3Vt
ZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggOGNiZDJhMmZjNWRiNjAxNzBiYjg2NzljZTdkZjJiMmVk
YzYyNDU5Yi4uMDE4MDA0YmY1ZDFjY2MzYjNiMmU2ZDQ2NDlmZWY0YjdlZmM4MTgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhcwogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7Ci0gICAgbV9zaGVl
dC0+cGFyc2VTdHJpbmcoc2hlZXQsIHRydWUpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNo
ZWV0LCBDU1NTdHJpY3RNb2RlKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgbV9j
YWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIG1fY2FjaGVkU2hlZXQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCBjMTI5NGU3NDNmNGJhYjJiYWE0MGNh
ZmI0YjIxMWUzYzA0NWE1ZDdjLi4zNzNjMDM5ZTlhNGY4MDYzOGJlMGY4OTBhNjVjYzlkNTVmYmM3
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgU3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldChFbGVtZW50KiBlLCBpbnQgc3RhcnRMaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHRlCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkUGVuZGlu
Z1NoZWV0KCk7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgbV9z
aGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShlLCBTdHJpbmcoKSwgS1VSTCgpLCBkb2N1bWVu
dC0+aW5wdXRFbmNvZGluZygpKTsKLSAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nQXRM
aW5lKHRleHQsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCksIHN0YXJ0TGluZU51bWJlcik7Cisg
ICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCB0b0NTU1BhcnNlck1v
ZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSksIHN0YXJ0TGluZU51bWJlcik7CiAgICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlLT50aXRsZSgpKTsKICAgICAgICAgICAgIG1f
bG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkYjU3
ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZmZDY0YTY3
Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRl
UHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2VFbGVtZW50KQogCiAgICAgU3R5bGVQcm9w
ZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFi
bGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBpbmxpbmVTdHlsZS0+Y29weVByb3BlcnRpZXNGcm9t
KCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwotICAgIGlubGluZVN0eWxlLT5zZXRTdHJpY3RQYXJz
aW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBpbmxp
bmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShzb3VyY2UtPmlubGluZVN0eWxlKCktPmNzc1BhcnNl
ck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoc291cmNlLT5pc1N0eWxl
QXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQwMTcwN2JlYjlkODQ3YjlkNWYzODY3Li41YTQ1ZGFj
OWIyMTMxZTNjYmQ4MmY4ZDE5YjBmYzc2NmExOWVlZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJIVE1MTGlu
a0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLAogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlN
RVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRl
eHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
dG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIC8vIElmIHdlJ3JlIGxvYWRp
bmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1FIHR5cGUgaXMgbm90CiAg
ICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0byBhdCBsZWFzdCBzdGFydCB3aXRoIGEg
c3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOGIyNjU3NDc0OWE3NzU3MTY2OWJmZmJj
MTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdlZjY0ZTM4NTc4NWY1NDdlZTdmMGEyYjJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBTdHJpbmcgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBD
U1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKTsKKyAgICBD
U1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSghbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBh
cnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7CiAgICAg
ZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDQyNGE1ZmE4NmRmNGMxOGRj
YTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFlYThlNTdkMTg0MDE0ZmU3YjczYWQ1ZDFkMjE4NWIz
ZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBDb250ZW50U2VsZWN0b3JRdWVyeTo6
Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsK
KyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogICAgIHBhcnNlci5wYXJzZVNl
bGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwgaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50
KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVudFNl
bGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3
YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRlZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYy
M2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5j
bGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgbV9w
YWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0
LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwog
ICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0
b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRl
Njk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsy
MCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRS
YXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIG1fYW5pbWF0
ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0U3RyaWN0UGFyc2luZyhm
YWxzZSk7CisgICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0Q1NT
UGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZh
MmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMzOGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJk
ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50OjpTVkdGb250RmFjZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURl
Y2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJh
dGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRD
U1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNs
YXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YzQyN2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRm
YTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
LSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgc3R5bGUtPnNldENTU1Bh
cnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHls
ZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKICAg
ICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAxN2MwZWNiZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1
MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdjZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5n
JiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7CiAgICAgdm9pZCBjaGVja0xvYWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRk
M2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1YjBjYy4uNDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0
YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0
eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlKQogewogICAgIC8vIFBh
cnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8gYW4geG1sRG9jUHRyCiAgICAgY29uc3QgVUNoYXIg
Qk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAppbmRleCA4
YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2YwMGQ4YTk4Li43ZDAyMzMyNjA1NzdmOTJm
NGZjZjRmMmUwZDJmZDJmZDgxNGI3YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dFF0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFhTTFQpCiAKKyNpbmNsdWRl
ICJDU1NQYXJzZU1vZGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTcyLDcgKzczLDcgQEAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIFhTTFN0eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1
cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVT
aGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0
eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZU1vZGUp
CiB7CiAgICAgLy8gRklYTUU6IEZpeCBRWG1sUXVlcnkgc28gdGhhdCBpdCBhbGxvd3MgY29tcGls
aW5nIHRoZSBzdHlsZXNoZWV0IGJlZm9yZSBzZXR0aW5nIHRoZSBkb2N1bWVudAogICAgIC8vIHRv
IGJlIHRyYW5zZm9ybWVkLiBUaGlzIHdheSB3ZSBjb3VsZCBub3Qgb25seSBjaGVjayBpZiB0aGUg
c3R5bGVzaGVldCBpcyBjb3JyZWN0IGJlZm9yZSB1c2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDgwZmJkZjFkOWVlOTZmM2I0MzVjYTJlMTg1
NzJlNDNjMjFiNjQwZWIuLmIxYjAyMzM3ZDE1NWM3NmUyY2FlMzJkMWI0ZmM3Zjk3ZjU1NjMyZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RD
YWNoZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNo
ZWV0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5o
IgpAQCAtMTc5LDcgKzE4MCw3IEBAIHZvaWQgV2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNo
ZWV0KGNvbnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSwgVXNlclN0eWxlTGV2CiAKICAgICBSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gcGFyc2VkU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoZG9j
dW1lbnQuZ2V0KCkpOwogICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KGxldmVs
ID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNv
dXJjZUNvZGUsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworICAgIHBhcnNlZFNoZWV0LT5w
YXJzZVN0cmluZyhzb3VyY2VDb2RlLCB0b0NTU1BhcnNlck1vZGUoIWRvY3VtZW50LT5pblF1aXJr
c01vZGUoKSkpOwogICAgIGRvY3VtZW50LT5hZGRVc2VyU2hlZXQocGFyc2VkU2hlZXQucmVsZWFz
ZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134333</attachid>
            <date>2012-03-28 10:43:08 -0700</date>
            <delta_ts>2012-03-28 10:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328104307.patch</filename>
            <type>text/plain</type>
            <size>45954</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZmYxMGY4NzA0M2Q2
MzliMjA5NWJiNDBkN2Y4YTZiODVkMmIwOC4uOTcwNzFlNTM1YjRkMmJhMTgyYmZiZmZjOTBmYTRh
NzQ4MWUwOGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5
bGVTaGVldCk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2RlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChDU1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2RlLmg6CisgICAgICAg
ICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAoaW5DU1NQYXJzZXJNb2RlKToKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3NzUGFyc2VyTW9k
ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBh
cnNlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
QXRMaW5lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoQ1NTU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpzZXRDU1NQYXJzZXJN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1BhcnNlck1vZGUpOgor
ICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eVNldDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnJlbW92ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
U3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OnNldENTU1BhcnNlck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0
KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVldCk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBh
Z2VHcm91cFVzZXJTaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICogZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1
ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjpD
b250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVwYXJz
ZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9Y
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEyLTAzLTI4
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gUGx1bWIgdGhyb3VnaCBHcmFwaGljc0xheWVyOjpjb250ZW50c09wYXF1ZSgpIHRvIExheWVy
VGlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWYwYWNiYzk0YTViODQwOTBiYmQ4
Mjc3ZTgwYzI2NjVhOGI2ZTEwOC4uMTVkMjZjZjAzODA4NmQyNWJmZDk2ZmUwYzEzYmI4NTY2NzBm
ZmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
My0yOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
ZSBDU1NQYXJzZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KToKKwogMjAxMi0wMy0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmcgdmlhIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAppbmRleCBmMTdhMTQxZTRhMzBlZjY1
ODNmOTA2Y2IzNzhiYTdhOWUzYWU4MWJmLi5iZTk5YzE0MTBiNGU5YjRlMGNkN2ViNzgwMTQzMWVk
NmZjYWMyN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCkBAIC02OCw3ICs2
OCw4IEBAIHZvaWQgQ1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvCiAgICAgYm9vbCBjcm9zc09yaWdpbkNTUyA9
IGZhbHNlOwogICAgIGJvb2wgdmFsaWRNSU1FVHlwZSA9IGZhbHNlOwogICAgIENTU1N0eWxlU2hl
ZXQqIHBhcmVudCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKLSAgICBib29sIHN0cmljdCA9ICFwYXJl
bnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlID0gcGFyZW50ID8gcGFyZW50LT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNl
ck1vZGUoQ1NTU3RyaWN0TW9kZSk7CisgICAgYm9vbCBzdHJpY3QgPSBjc3NQYXJzZXJNb2RlID09
IENTU1N0cmljdE1vZGU7CiAgICAgYm9vbCBlbmZvcmNlTUlNRVR5cGUgPSBzdHJpY3Q7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gcGFyZW50ID8gcGFyZW50LT5maW5kRG9jdW1lbnQoKSA6IDA7
CiAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50ICYmIGRvY3VtZW50
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLT5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpOwpAQCAtODIsNyArODMsNyBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjbwogI2VuZGlm
CiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5
cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0
VGV4dCwgc3RyaWN0KTsKKyAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
Y3NzUGFyc2VyTW9kZSk7CiAKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKSkKICAgICAgICAgY3Jvc3NPcmlnaW5DU1Mg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmZTc2NTBmYTM0NGRl
YmUwYTBkOWE1ZmFiNDUyMWUyYjM5NWIzMWNkLi41ZWQ1ZWZjMjI1ZmNkZTZkMDhlY2Y0ZGUxODc4
YzY2Njc0YTAzZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB1bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBy
dWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBw
KGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNl
UnVsZShwYXJlbnRTdHlsZVNoZWV0KCksIHJ1bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAg
ICAgICAvLyBTWU5UQVhfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5
bnRheCBlcnJvciBhbmQgaXMgdW5wYXJzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMzE3ZWUwOGQ5ZjM0ODZiY2IzZWNkOTczMjYzNGQ0ZDdlZmFkMzlkMS4uNTVhYmMyZTk2NTY3
MjcxNDA0MTFiMjM4YTAzM2QyNWFmZjY4Y2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE4MSwzOCArMTgxLDYgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjplbnN1cmVDU1NWYWx1
ZVBvb2woKQogICAgICAgICBtX2Nzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6Y3JlYXRlKCk7
CiB9CiAKLUNTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKLSAgICA6IG1f
Y3NzUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01v
ZGUpCi0gICAgLCBtX2ltcG9ydGFudChmYWxzZSkKLSAgICAsIG1faWQoMCkKLSAgICAsIG1fc3R5
bGVTaGVldCgwKQotICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCi0gICAgLCBtX2N1cnJlbnRT
aG9ydGhhbmQoMCkKLSAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hh
c0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKLSAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlk
Q1NTUnVsZShmYWxzZSkKLSAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAs
IG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQotICAgICwgbV9zZWxlY3Rvckxpc3RS
YW5nZSgwLCAwKQotICAgICwgbV9ydWxlQm9keVJhbmdlKDAsIDApCi0gICAgLCBtX3Byb3BlcnR5
UmFuZ2UoVUlOVF9NQVgsIFVJTlRfTUFYKQotICAgICwgbV9ydWxlUmFuZ2VNYXAoMCkKLSAgICAs
IG1fY3VycmVudFJ1bGVEYXRhKDApCi0gICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUpCi0g
ICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKLSAgICAsIG1fdG9rZW4oMCkKLSAgICAsIG1fbGlu
ZU51bWJlcigwKQotICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCi0gICAgLCBtX2Fs
bG93SW1wb3J0UnVsZXModHJ1ZSkKLSAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMo
dHJ1ZSkKLXsKLSNpZiBZWURFQlVHID4gMAotICAgICAgICBjc3N5eWRlYnVnID0gMTsKLSNlbmRp
ZgotICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OmluaXQoKTsKLX0KLQotCiBDU1NQYXJz
ZXI6OkNTU1BhcnNlcihDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgOiBtX2Nzc1Bh
cnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQpAQCAtMzU0
LDggKzMyMiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoaW50IHBy
b3BlcnR5SWQpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUoU3R5bGVQ
cm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTVkcgcHJlc25ldGF0aW9u
IGF0dHJpYnV0ZSB2YWx1ZXMgc2hvdWxkIGJlIHBhcnNlZCBpbiBzdHJpY3QgbW9kZSBhcyB3ZWxs
LgorICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09IENTU1N0cmljdE1vZGU7Cit9CisKK3N0YXRp
YyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
IHsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKTsK
ICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghaXNDb2xvclByb3BlcnR5SUQocHJvcGVydHlJZCkpCkBAIC00NDAsOSArNDE1LDEwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQs
IGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZVNpbXBs
ZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJ
ZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wg
YWNjZXB0c05lZ2F0aXZlTnVtYmVyczsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2Vy
TW9kZShjc3NQYXJzZXJNb2RlKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CiAKICAgICBpZiAoIWxlbmd0aCkKQEAgLTk2NiwyMCArOTQyLDIwIEBAIHN0YXRpYyBib29s
IHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJv
cGVydHlJZCwgY29uCiBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZv
bnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0
eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFwYXJzZVZhbHVlKGR1
bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rm9udEZhbWlseSwgc3RyaW5nLCBmYWxzZSwgZmFs
c2UsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5n
ZXQoKSwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBzdHJpbmcsIGZhbHNlLCBDU1NRdWlya3NNb2Rl
LCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PENTU1ZhbHVlTGlzdD4oZHVtbXlTdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewotICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0
aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0
LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgaWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVj
bGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBj
b250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwYXJzZUNv
bG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJp
Y3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4
dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VLZXl3b3Jk
VmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0
U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENTU1BhcnNlciBwYXJzZXIo
c3RyaWN0KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVy
biBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBv
cnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIApAQCAtMTAxNiw3ICs5OTIsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKGZhc3RQYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0
cmljdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVl
KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgLy8gSW4gY2Fz
ZSB0aGUgZmFzdC1wYXRoIHBhcnNlciBkaWRuJ3QgdW5kZXJzdGFuZCB0aGUgY29sb3IsIHRyeSB0
aGUgZnVsbCBwYXJzZXIuCiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihzdHJpbmcpKQpAQCAt
OTA5Miw3ICs5MDY4LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAgICAgICAgcnVsZS0+
c3R5bGVSdWxlKCktPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CiAgICAgICAgIGlm
IChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKICAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25s
eVZhbHVlcygpOwotICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVsZS0+c3R5bGVS
dWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVz
LmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewpA
QCAtOTEzMCw3ICs5MTA2LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1
bGUoKQogICAgICAgICB9CiAgICAgfQogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUg
PSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0
YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9
IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpA
QCAtOTIwMSw3ICs5MTc3LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQ
YXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3Rv
cjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNl
bGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRp
b24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1f
cGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUt
PnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRp
ZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsK
ICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFw
cGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtOTI3OSw3ICs5MjU1LDcgQEAgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJW
YWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlm
cmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCks
IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAga2V5ZnJh
bWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
MWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4uZDhhZTQyOWU0OWE3NTg1
ZDk1N2EzMDYxZmI5YWRiYjNhNjE4OWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNjUs
OSArNjUsNiBAQCBjbGFzcyBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOwogCiBjbGFzcyBDU1NQYXJz
ZXIgewogcHVibGljOgotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgYm9vbGVhbiBjb25zdHJ1
Y3RvciBvbmNlIG1vdmVkIHRvIENTU1BhcnNlck1vZGUgY29tcGxldGVseS4KLSAgICBDU1NQYXJz
ZXIoYm9vbCBzdHJpY3RQYXJzaW5nKTsKICAgICBDU1NQYXJzZXIoQ1NTUGFyc2VyTW9kZSA9IENT
U1N0cmljdE1vZGUpOwogCiAgICAgfkNTU1BhcnNlcigpOwpAQCAtNzUsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBp
bnQgc3RhcnRMaW5lTnVtYmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VNYXAqIHJ1bGVSYW5nZU1hcCA9
IDApOwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBj
b25zdCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4gcGFy
c2VLZXlmcmFtZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0
cmluZyYsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4
dFN0eWxlU2hlZXQpOworICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNl
dCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJN
b2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZh
bHNlKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlck1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXgg
YjVlZmJkMGI1ZmIyNzI5OTAwYzQyODdjMzY1MDI3ODIzMDlhMjBjNi4uNzFmNDIwYWFkOWI2ZDNh
NjgyOGZiZmM2ZmVmMDRjZDgwZDJjYTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlck1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5o
CkBAIC0zMCwxMSArMzAsMjIgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAjZGVmaW5lIENT
U1BhcnNlck1vZGVfaAogCi1lbnVtIENTU1BhcnNlck1vZGUgewotICAgIENTU1F1aXJrc01vZGUs
CitlbnVtIHsKKyAgICBDU1NRdWlya3NNb2RlID0gMSwKICAgICBDU1NTdHJpY3RNb2RlLAogICAg
IC8vIFNWRyBzaG91bGQgYWx3YXlzIGJlIGluIHN0cmljdCBtb2RlLiBGb3IgU1ZHIGF0dHJpYnV0
ZXMsIHRoZSBydWxlcyBkaWZmZXIgdG8gc3RyaWN0IHNvbWV0aW1lcy4KICAgICBTVkdBdHRyaWJ1
dGVNb2RlCiB9OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIENTU1BhcnNlck1vZGU7CisKK2lubGlu
ZSBDU1NQYXJzZXJNb2RlIHRvQ1NTUGFyc2VyTW9kZShib29sIGluU3RyaWN0TW9kZSkKK3sKKyAg
ICByZXR1cm4gaW5TdHJpY3RNb2RlID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01vZGU7Cit9
CisKK2lubGluZSBDU1NQYXJzZXJNb2RlIGluQ1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KGNz
c1BhcnNlck1vZGUpOworfQogCiAjZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAppbmRleCA2ZjllZTQxMGJhOGI5NzU3OGI0ZWIyNzY3NTRhMGI2MTZjOWRhYzg3Li4xZmIy
MDZiNjJhNDQ3MTM5YzE1ZmQwOWQ2NGQ2Yjg5YTg4NzliMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgK
QEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gV0VCS0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgYm9vbCBpc0lt
cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSU1QT1JUX1JVTEU7IH0KIAotICAg
IGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gcGFyZW50UnVsZSgpLT5jc3NQYXJzZXJNb2RlKCk7CiAgICAgICAgIGlmIChwYXJl
bnRTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgpLT51
c2VTdHJpY3RQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+Y3NzUGFyc2VyTW9kZSgpOworICAgICAgICByZXR1cm4g
Q1NTU3RyaWN0TW9kZTsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCAwZmY2MmY5NmEwMGZmNWYwNjRmNmM3MzQwYTBkYjczYWM4NmMwOGVhLi40ZGMzMmUyOTA3
MDFiNDJmNGE1Y2I2NGVjNmQ5OTIzMzMzNjE2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQo
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAgICAg
OiBTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJzZXQo
Y2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFy
c2luZyhmYWxzZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NRdWlya3NNb2RlKQogICAgICwg
bV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRD
U1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCkBAIC04OSw3
ICs4OSw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0UnVsZSogb3du
ZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0CiAgICAgOiBTdHlsZVNoZWV0KG93bmVy
UnVsZSwgaHJlZiwgYmFzZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9s
b2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFvd25lclJ1bGUgfHwg
b3duZXJSdWxlLT51c2VTdHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUob3du
ZXJSdWxlID8gb3duZXJSdWxlLT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNlck1vZGUoQ1NT
U3RyaWN0TW9kZSkpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVl
KQogICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxzZSkKIHsKQEAgLTIwNCw3ICsyMDQsNyBA
QCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0
cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2lu
ZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NS
dWxlPiBydWxlID0gcC5wYXJzZVJ1bGUodGhpcywgcnVsZVN0cmluZyk7CiAKICAgICBpZiAoIXJ1
bGUpIHsKQEAgLTMzMSwxNSArMzMxLDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU3R5bGVT
aGVldDo6ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4CiAgICAg
cmV0dXJuIG51bGxBdG9tOyAvLyBBc3N1bWUgd2Ugd29uJ3QgbWF0Y2ggYW55IG5hbWVzcGFjZXMu
CiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJp
bmcsIGJvb2wgc3RyaWN0KQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcgJnN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewotICAgIHJldHVy
biBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcsIHN0cmljdCwgMCk7CisgICAgcmV0dXJuIHBhcnNl
U3RyaW5nQXRMaW5lKHN0cmluZywgY3NzUGFyc2VyTW9kZSwgMCk7CiB9CiAKLWJvb2wgQ1NTU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3Ry
aWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmlu
Z0F0TGluZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQogewotICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsK
LSAgICBDU1NQYXJzZXIgcChzdHJpY3QpOworICAgIHNldENTU1BhcnNlck1vZGUoY3NzUGFyc2Vy
TW9kZSk7CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSk7CiAgICAgcC5wYXJzZVNoZWV0
KHRoaXMsIHN0cmluZywgc3RhcnRMaW5lTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDliOTI0NmE0OWQ4YjVkNGE1YjQzMjhlY2Mz
YTdhZTQyNTg5NGYzMWUuLjY0NDViZmZmNTJjMGIxOTQzNDU0MzExODI5MWFjNmRiMjI0OWY2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBDU1NTdHlsZVNoZWV0X2gKICNkZWZpbmUgQ1NTU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3R5bGVTaGVldENo
YW5nZWQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBi
b29sIHN0cmljdCA9IHRydWUpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSk7CiAKLSAgICBib29sIHBhcnNl
U3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVt
YmVyKTsKKyAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIENTU1BhcnNl
ck1vZGUsIGludCBzdGFydExpbmVOdW1iZXIpOwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGlu
ZygpOwogCkBAIC0xMDQsOCArMTA1LDggQEAgcHVibGljOgogICAgIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29s
IGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2Vy
TW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gY3Nz
UGFyc2VyTW9kZTsgfQorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3NzUGFyc2VyTW9kZTsgfQogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0
KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHls
ZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0OyB9CkBAIC0xNTEsNyAr
MTUyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJp
ZXM7CiAKICAgICBib29sIG1fbG9hZENvbXBsZXRlZCA6IDE7Ci0gICAgYm9vbCBtX3N0cmljdFBh
cnNpbmcgOiAxOworICAgIENTU1BhcnNlck1vZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wg
bV9pc1VzZXJTdHlsZVNoZWV0IDogMTsKICAgICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlk
Q1NTSGVhZGVyIDogMTsKICAgICBib29sIG1fZGlkTG9hZEVycm9yT2NjdXIgOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAppbmRleCBiNzM1ZTdjYjczNWNiZWFlZDhkYjBkNWViODA4YmNiYzI4
MzM2NjVkLi43NTk1M2Q1YzM0NjBjNjJkMDVkMGU1Y2NkNWQ3OWYzY2I4OWU2YTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgcGFy
c2VNZWRpYURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVy
eVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIg
cGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAgICAg
CiAgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5PiA+IHJlc3VsdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBsaXN0OwpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOwor
ICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAKICAgICBPd25QdHI8TWVkaWFR
dWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKQEAgLTE1
OSw3ICsxNTksNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nVG9SZW1vdmUpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQ
YXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBh
cnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBmNTAyNmUwMDgzZjgzNDY3NDRm
NmNjYmNiMzkxMWM4MzFjOGQwYzRiLi45NmVmYTgyMTUzYWI4NTg5ODc3YWMwYjYwNDcyZmFmYzgx
OTI3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00NCwy
MiArNDQsMjIgQEAgc3RhdGljIFByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwJiBwcm9wZXJ0eVNl
dENTU09NV3JhcHBlck1hcCgpCiAgICAgcmV0dXJuIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFw
SW5zdGFuY2U7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoKQotICAg
IDogbV9zdHJpY3RQYXJzaW5nKGZhbHNlKQorU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0
eVNldChDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1vZGUo
Y3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewogfQogCiBT
dHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0
eT4mIHByb3BlcnRpZXMpCiAgICAgOiBtX3Byb3BlcnRpZXMocHJvcGVydGllcykKLSAgICAsIG1f
c3RyaWN0UGFyc2luZyh0cnVlKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUp
CiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuc2hy
aW5rVG9GaXQoKTsKIH0KIAotU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25z
dCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3Ry
aWN0UGFyc2luZykKLSAgICA6IG1fc3RyaWN0UGFyc2luZyh1c2VTdHJpY3RQYXJzaW5nKQorU3R5
bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKKyAg
ICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9oYXNDU1NPTVdyYXBw
ZXIoZmFsc2UpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgYmVsb25ncyBpbiBDU1NQYXJz
ZXIuCkBAIC00OTMsNyArNDkzLDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogICAgIC8v
IFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRo
ZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2Vy
dmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdp
bm5pbmcuCi0gICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlE
LCB2YWx1ZSwgaW1wb3J0YW50LCB1c2VTdHJpY3RQYXJzaW5nKCksIGNvbnRleHRTdHlsZVNoZWV0
KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZh
bHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29udGV4dFN0eWxlU2hlZXQpOwogfQog
CiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCkBAIC01MzgsNyArNTM4
LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
aW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW4KIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cGFy
c2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24sIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAg
IENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFy
c2VyKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgcGFyc2VyLnBhcnNlRGVjbGFyYXRpb24odGhpcywg
c3R5bGVEZWNsYXJhdGlvbiwgMCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhjZTYyMjU0NGFiMWE0NjVmMGU3ZTczODE2
OWI2YjhjYjVkOWU1Li45MzQzNDg5NGMzYjE0OTU5MzE3ZTM0ZmM3OWQ2ZDA0Zjg4ZWZlZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNp
Zm5kZWYgU3R5bGVQcm9wZXJ0eVNldF9oCiAjZGVmaW5lIFN0eWxlUHJvcGVydHlTZXRfaAogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTQwLDEzICs0MSwxMyBAQCBjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5U2V0
KCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUgPSBDU1NRdWlya3NNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVByb3BlcnR5U2V0KGNzc1BhcnNlck1vZGUpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9w
ZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0
eVNldChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzLCB1c2VTdHJpY3RQYXJzaW5nKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChwcm9wZXJ0aWVzLCBudW1Q
cm9wZXJ0aWVzLCBjc3NQYXJzZXJNb2RlKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9w
ZXJ0aWVzKQogICAgIHsKQEAgLTg2LDggKzg3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZXJn
ZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0ID0g
dHJ1ZSk7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFy
c2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAg
ICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNl
ck1vZGU7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTExMiw5ICsx
MTMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDU1NPTVdyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX2hhc0NTU09NV3JhcHBlcjsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUHJvcGVydHlTZXQo
KTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwogICAgIFN0eWxlUHJvcGVy
dHlTZXQoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwotICAgIFN0eWxlUHJvcGVydHlTZXQo
Y29uc3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJz
aW5nKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVBy
b3BlcnRpZXMsIENTU1BhcnNlck1vZGUpOwogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPENTU1Byb3Bl
cnR5LCA0PiBtX3Byb3BlcnRpZXM7CiAKLSAgICBib29sIG1fc3RyaWN0UGFyc2luZyA6IDE7Cisg
ICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNlck1vZGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFz
Q1NTT01XcmFwcGVyIDogMTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggMDc5ODc5Y2JkOGRk
NmM1ZjkyYjc2MjQ5ZWVjNGYwNGY0OWE5NjAwZi4uNWViNWZjNDNkZjAwMTI5Njk0NGFiMDE0OWVi
MWIwM2VkYTFjMjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIFN0eWxlU2hlZXRfaAogI2RlZmluZSBTdHlsZVNoZWV0X2gKIAorI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC02Miw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RN
b2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlLmNwcAppbmRleCBlMzk5ODZlNWRjNWVkNGIzY2M4YWMwODU5NjFhZmJmY2M2ODcwNWQx
Li44NDM4NDc5Yzg3YmJiYzlkNjY4MjhlZWMyZWY4MDYyMTVhNDJiNGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6YXBwZW5kKFdlYktpdENTU0tleWZyYW1lUnVs
ZSogcnVsZSkKIAogdm9pZCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKGNvbnN0
IFN0cmluZyYgcnVsZSkKIHsKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOwor
ICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPFdlYktpdENTU0tl
eWZyYW1lUnVsZT4gbmV3UnVsZSA9IHAucGFyc2VLZXlmcmFtZVJ1bGUocGFyZW50U3R5bGVTaGVl
dCgpLCBydWxlKTsKICAgICBpZiAobmV3UnVsZSkKICAgICAgICAgYXBwZW5kKG5ld1J1bGUuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCA5YWVlYTc3MTU4
YmJjYmI2ZTdiYjU3MTBmYThlMWI2MTU2MjM5YTZhLi5hZmViYTcxZjg5ZTk5MjhiOGY0ZTVmYTUw
NDFhNjEyYzlmZGY0ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBXZWJLaXRDU1NNYXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogdm9p
ZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVE
ZWNsYXJhdGlvbiA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSwgdHJ1ZSwgMCkpIHsKKyAgICBpZiAoQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBzdHJpbmcsIHRydWUsIENTU1N0cmljdE1vZGUsIDApKSB7CiAgICAgICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5CiAg
ICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMn
KQogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5NmY5Y2M5OWZjNjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhj
Li45Y2FmMzAzOGQ2Njk0ZTkzM2I4NjAxMGMwYjgyN2JlY2JiOWIxNGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTEwNjgsOCArMTA2OCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRG
bG93PiBEb2N1bWVudDo6d2Via2l0R2V0Rmxvd0J5TmFtZShjb25zdCBTdHJpbmcmIGZsb3dOYW1l
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gTWFrZSBhIHNsb3dlciBjaGVjayBmb3IgaW52
YWxpZCBmbG93IG5hbWUKLSAgICBDU1NQYXJzZXIgcCh0cnVlKTsKLSAgICBpZiAoIXAucGFyc2VG
bG93VGhyZWFkKGZsb3dOYW1lLCB0aGlzKSkKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmlj
dE1vZGUpOworICAgIGlmICghcGFyc2VyLnBhcnNlRmxvd1RocmVhZChmbG93TmFtZSwgdGhpcykp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJl
cigpLT52aWV3KCkpCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVu
dDo6cGFnZVVzZXJTaGVldCgpCiAgICAgLy8gUGFyc2UgdGhlIHNoZWV0IGFuZCBjYWNoZSBpdC4K
ICAgICBtX3BhZ2VVc2VyU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUodGhpcywg
c2V0dGluZ3MoKS0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpKTsKICAgICBtX3BhZ2VVc2VyU2hl
ZXQtPnNldElzVXNlclN0eWxlU2hlZXQodHJ1ZSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5wYXJz
ZVN0cmluZyh1c2VyU2hlZXRUZXh0LCAhaW5RdWlya3NNb2RlKCkpOworICAgIG1fcGFnZVVzZXJT
aGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFpblF1aXJr
c01vZGUoKSkpOwogICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CiB9CiAKQEAgLTI3
MzIsNyArMjczMiw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogRG9j
dW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMoKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKSwgc2hl
ZXQtPnVybCgpKTsKICAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0
KHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgICAgICAgICBwYXJz
ZWRTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQtPnNvdXJjZSgpLCAhaW5RdWlya3NNb2RlKCkpOwor
ICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgdG9D
U1NQYXJzZXJNb2RlKCFpblF1aXJrc01vZGUoKSkpOwogICAgICAgICAgICAgaWYgKCFtX3BhZ2VH
cm91cFVzZXJTaGVldHMpCiAgICAgICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPik7CiAgICAgICAgICAg
ICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFwcGVuZChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIyOWJmYjRhNWUyMzA1YzVhMWM2ZThlYjFkMjRhOWJk
YjhkZGNhMDkuLmUyZjFiZTkyMTg3MzIwYmM5M2NlNzg2MmYwNDYyNzRiNzAwOTk5ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3NTEsNyArMTc1MSw3IEBAIGJvb2wgRWxlbWVudDo6d2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KIAogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJz
ZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JM
aXN0IHNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRvY3VtZW50
KCksIHNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcAppbmRleCBkMzI5ODFmOWMxZjcyYzE0OTI1ODI0YjQ4NjhjODZjMGFmNWQ5M2VhLi41
ODRjNmNmMWZjNmJjYzcwYTZjNWI1MTBkNDQyN2M5MzJhOWZlNzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgU3R5bGVQ
cm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKFN0eWxl
ZEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5
bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5
bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxl
RGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxl
bWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0K
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiB9CkBAIC02Niw3ICs2Niw3IEBA
IFN0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5s
aW5lU3R5bGUoU3R5bGVkRWxlbWVudCoKIHsKICAgICBpZiAobV9pbmxpbmVTdHlsZURlY2wgJiYg
IW1faW5saW5lU3R5bGVEZWNsLT5oYXNDU1NPTVdyYXBwZXIoKSkgewogICAgICAgICBtX2lubGlu
ZVN0eWxlRGVjbCA9IG1faW5saW5lU3R5bGVEZWNsLT5jb3B5KCk7Ci0gICAgICAgIG1faW5saW5l
U3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAh
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0
eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAg
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBl
bnN1cmVJbmxpbmVTdHlsZShlbGVtZW50KTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBFbGVtZW50
QXR0cmlidXRlRGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKFN0eWxlZEVs
ZW1lbnQqIGVsZW0KICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wuY2xlYXIoKTsKICAgICBpZiAo
IW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQ
cm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJp
Y3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFy
c2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVt
ZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0KICAgICBtX2lubGluZVN0
eWxlRGVjbC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBlbGVtZW50LT5kb2N1bWVudCgpLT5lbGVt
ZW50U2hlZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTM0MGNiNGUyNDYyYjg2YjUwYTJl
NWY2ODE2OTk0MjJhM2RlMmEzZi4uNjgzMTkxNDljZjcyYjY4ZWJjOTk4ZjVjY2FlNGYzMDY2MmU1
MTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTY2Myw3ICsxNjYzLDcgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNl
cHRpb25Db2RlJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJz
aW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmlj
dFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5n
KSk7CiAKICAgICBDU1NTZWxlY3Rvckxpc3QgcXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJz
ZVNlbGVjdG9yKHNlbGVjdG9ycywgZG9jdW1lbnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwpAQCAt
MTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVlcnlTZWxlY3Rv
ckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJr
c01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIg
cCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0
IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3Vt
ZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggOGNiZDJhMmZjNWRiNjAxNzBiYjg2NzljZTdkZjJiMmVk
YzYyNDU5Yi4uMDE4MDA0YmY1ZDFjY2MzYjNiMmU2ZDQ2NDlmZWY0YjdlZmM4MTgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhcwogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7Ci0gICAgbV9zaGVl
dC0+cGFyc2VTdHJpbmcoc2hlZXQsIHRydWUpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNo
ZWV0LCBDU1NTdHJpY3RNb2RlKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgbV9j
YWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIG1fY2FjaGVkU2hlZXQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCBjMTI5NGU3NDNmNGJhYjJiYWE0MGNh
ZmI0YjIxMWUzYzA0NWE1ZDdjLi4zNzNjMDM5ZTlhNGY4MDYzOGJlMGY4OTBhNjVjYzlkNTVmYmM3
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgU3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldChFbGVtZW50KiBlLCBpbnQgc3RhcnRMaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHRlCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkUGVuZGlu
Z1NoZWV0KCk7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgbV9z
aGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShlLCBTdHJpbmcoKSwgS1VSTCgpLCBkb2N1bWVu
dC0+aW5wdXRFbmNvZGluZygpKTsKLSAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nQXRM
aW5lKHRleHQsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCksIHN0YXJ0TGluZU51bWJlcik7Cisg
ICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCB0b0NTU1BhcnNlck1v
ZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSksIHN0YXJ0TGluZU51bWJlcik7CiAgICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlLT50aXRsZSgpKTsKICAgICAgICAgICAgIG1f
bG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkYjU3
ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZmZDY0YTY3
Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRl
UHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2VFbGVtZW50KQogCiAgICAgU3R5bGVQcm9w
ZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFi
bGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBpbmxpbmVTdHlsZS0+Y29weVByb3BlcnRpZXNGcm9t
KCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwotICAgIGlubGluZVN0eWxlLT5zZXRTdHJpY3RQYXJz
aW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBpbmxp
bmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShzb3VyY2UtPmlubGluZVN0eWxlKCktPmNzc1BhcnNl
ck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoc291cmNlLT5pc1N0eWxl
QXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQwMTcwN2JlYjlkODQ3YjlkNWYzODY3Li41YTQ1ZGFj
OWIyMTMxZTNjYmQ4MmY4ZDE5YjBmYzc2NmExOWVlZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJIVE1MTGlu
a0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLAogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlN
RVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRl
eHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
dG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIC8vIElmIHdlJ3JlIGxvYWRp
bmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1FIHR5cGUgaXMgbm90CiAg
ICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0byBhdCBsZWFzdCBzdGFydCB3aXRoIGEg
c3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOGIyNjU3NDc0OWE3NzU3MTY2OWJmZmJj
MTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdlZjY0ZTM4NTc4NWY1NDdlZTdmMGEyYjJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBTdHJpbmcgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBD
U1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKTsKKyAgICBD
U1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSghbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBh
cnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7CiAgICAg
ZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDQyNGE1ZmE4NmRmNGMxOGRj
YTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFlYThlNTdkMTg0MDE0ZmU3YjczYWQ1ZDFkMjE4NWIz
ZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBDb250ZW50U2VsZWN0b3JRdWVyeTo6
Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsK
KyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogICAgIHBhcnNlci5wYXJzZVNl
bGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwgaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50
KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVudFNl
bGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3
YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRlZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYy
M2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5j
bGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgbV9w
YWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0
LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwog
ICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0
b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRl
Njk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsy
MCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRS
YXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIG1fYW5pbWF0
ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0U3RyaWN0UGFyc2luZyhm
YWxzZSk7CisgICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0Q1NT
UGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZh
MmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMzOGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJk
ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50OjpTVkdGb250RmFjZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURl
Y2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJh
dGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRD
U1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNs
YXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YzQyN2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRm
YTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
LSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgc3R5bGUtPnNldENTU1Bh
cnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHls
ZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKICAg
ICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAxN2MwZWNiZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1
MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdjZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5n
JiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7CiAgICAgdm9pZCBjaGVja0xvYWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRk
M2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1YjBjYy4uNDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0
YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0
eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlKQogewogICAgIC8vIFBh
cnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8gYW4geG1sRG9jUHRyCiAgICAgY29uc3QgVUNoYXIg
Qk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAppbmRleCA4
YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2YwMGQ4YTk4Li44MzViMDQ4ODRlNmYxMDAz
ZGUyMzE0ZGNiZTgyOTlkMmEzMzIzOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dFF0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFhTTFQpCiAKKyNpbmNsdWRl
ICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC03Miw3ICs3Myw3IEBAIENhY2hlZFJlc291
cmNlTG9hZGVyKiBYU0xTdHlsZVNoZWV0OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0
dXJuIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogfQogCi1ib29sIFhTTFN0eWxl
U2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sKQorYm9vbCBYU0xT
dHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VNb2Rl
KQogewogICAgIC8vIEZJWE1FOiBGaXggUVhtbFF1ZXJ5IHNvIHRoYXQgaXQgYWxsb3dzIGNvbXBp
bGluZyB0aGUgc3R5bGVzaGVldCBiZWZvcmUgc2V0dGluZyB0aGUgZG9jdW1lbnQKICAgICAvLyB0
byBiZSB0cmFuc2Zvcm1lZC4gVGhpcyB3YXkgd2UgY291bGQgbm90IG9ubHkgY2hlY2sgaWYgdGhl
IHN0eWxlc2hlZXQgaXMgY29ycmVjdCBiZWZvcmUgdXNpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcAppbmRleCA4MGZiZGYxZDllZTk2ZjNiNDM1Y2EyZTE4
NTcyZTQzYzIxYjY0MGViLi5iMWIwMjMzN2QxNTVjNzZlMmNhZTMyZDFiNGZjN2Y5N2Y1NTYzMmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVT
aGVldC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKQEAgLTE3OSw3ICsxODAsNyBAQCB2b2lkIFdlYkRvY3VtZW50OjppbnNlcnRVc2VyU3R5bGVT
aGVldChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsIFVzZXJTdHlsZUxldgogCiAgICAgUmVm
UHRyPENTU1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGRv
Y3VtZW50LmdldCgpKTsKICAgICBwYXJzZWRTaGVldC0+c2V0SXNVc2VyU3R5bGVTaGVldChsZXZl
bCA9PSBVc2VyU3R5bGVVc2VyTGV2ZWwpOwotICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhz
b3VyY2VDb2RlLCAhZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKTsKKyAgICBwYXJzZWRTaGVldC0+
cGFyc2VTdHJpbmcoc291cmNlQ29kZSwgdG9DU1NQYXJzZXJNb2RlKCFkb2N1bWVudC0+aW5RdWly
a3NNb2RlKCkpKTsKICAgICBkb2N1bWVudC0+YWRkVXNlclNoZWV0KHBhcnNlZFNoZWV0LnJlbGVh
c2UoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134334</attachid>
            <date>2012-03-28 10:44:31 -0700</date>
            <delta_ts>2012-03-28 11:39:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328104430.patch</filename>
            <type>text/plain</type>
            <size>45821</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZmYxMGY4NzA0M2Q2
MzliMjA5NWJiNDBkN2Y4YTZiODVkMmIwOC4uOTcwNzFlNTM1YjRkMmJhMTgyYmZiZmZjOTBmYTRh
NzQ4MWUwOGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5
bGVTaGVldCk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2RlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChDU1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJNb2RlLmg6CisgICAgICAg
ICh0b0NTU1BhcnNlck1vZGUpOgorICAgICAgICAoaW5DU1NQYXJzZXJNb2RlKToKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3NzUGFyc2VyTW9k
ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBh
cnNlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
QXRMaW5lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoQ1NTU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpzZXRDU1NQYXJzZXJN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1BhcnNlck1vZGUpOgor
ICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eVNldDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnJlbW92ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
U3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OnNldENTU1BhcnNlck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0
KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVldCk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBh
Z2VHcm91cFVzZXJTaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICogZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1
ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjpD
b250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVwYXJz
ZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9Y
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEyLTAzLTI4
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gUGx1bWIgdGhyb3VnaCBHcmFwaGljc0xheWVyOjpjb250ZW50c09wYXF1ZSgpIHRvIExheWVy
VGlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWYwYWNiYzk0YTViODQwOTBiYmQ4
Mjc3ZTgwYzI2NjVhOGI2ZTEwOC4uMTVkMjZjZjAzODA4NmQyNWJmZDk2ZmUwYzEzYmI4NTY2NzBm
ZmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
My0yOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
ZSBDU1NQYXJzZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KToKKwogMjAxMi0wMy0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmcgdmlhIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAppbmRleCBmMTdhMTQxZTRhMzBlZjY1
ODNmOTA2Y2IzNzhiYTdhOWUzYWU4MWJmLi5iZTk5YzE0MTBiNGU5YjRlMGNkN2ViNzgwMTQzMWVk
NmZjYWMyN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCkBAIC02OCw3ICs2
OCw4IEBAIHZvaWQgQ1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvCiAgICAgYm9vbCBjcm9zc09yaWdpbkNTUyA9
IGZhbHNlOwogICAgIGJvb2wgdmFsaWRNSU1FVHlwZSA9IGZhbHNlOwogICAgIENTU1N0eWxlU2hl
ZXQqIHBhcmVudCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKLSAgICBib29sIHN0cmljdCA9ICFwYXJl
bnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlID0gcGFyZW50ID8gcGFyZW50LT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNl
ck1vZGUoQ1NTU3RyaWN0TW9kZSk7CisgICAgYm9vbCBzdHJpY3QgPSBjc3NQYXJzZXJNb2RlID09
IENTU1N0cmljdE1vZGU7CiAgICAgYm9vbCBlbmZvcmNlTUlNRVR5cGUgPSBzdHJpY3Q7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gcGFyZW50ID8gcGFyZW50LT5maW5kRG9jdW1lbnQoKSA6IDA7
CiAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IGRvY3VtZW50ICYmIGRvY3VtZW50
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLT5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpOwpAQCAtODIsNyArODMsNyBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjbwogI2VuZGlm
CiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5
cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0
VGV4dCwgc3RyaWN0KTsKKyAgICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
Y3NzUGFyc2VyTW9kZSk7CiAKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChiYXNlVVJMKSkKICAgICAgICAgY3Jvc3NPcmlnaW5DU1Mg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBmZTc2NTBmYTM0NGRl
YmUwYTBkOWE1ZmFiNDUyMWUyYjM5NWIzMWNkLi41ZWQ1ZWZjMjI1ZmNkZTZkMDhlY2Y0ZGUxODc4
YzY2Njc0YTAzZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB1bnNpZ25lZCBDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBy
dWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBw
KGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNl
UnVsZShwYXJlbnRTdHlsZVNoZWV0KCksIHJ1bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAg
ICAgICAvLyBTWU5UQVhfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5
bnRheCBlcnJvciBhbmQgaXMgdW5wYXJzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMzE3ZWUwOGQ5ZjM0ODZiY2IzZWNkOTczMjYzNGQ0ZDdlZmFkMzlkMS4uNTVhYmMyZTk2NTY3
MjcxNDA0MTFiMjM4YTAzM2QyNWFmZjY4Y2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE4MSwzOCArMTgxLDYgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjplbnN1cmVDU1NWYWx1
ZVBvb2woKQogICAgICAgICBtX2Nzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6Y3JlYXRlKCk7
CiB9CiAKLUNTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKLSAgICA6IG1f
Y3NzUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5nID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01v
ZGUpCi0gICAgLCBtX2ltcG9ydGFudChmYWxzZSkKLSAgICAsIG1faWQoMCkKLSAgICAsIG1fc3R5
bGVTaGVldCgwKQotICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCi0gICAgLCBtX2N1cnJlbnRT
aG9ydGhhbmQoMCkKLSAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hh
c0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKLSAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlk
Q1NTUnVsZShmYWxzZSkKLSAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAs
IG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQotICAgICwgbV9zZWxlY3Rvckxpc3RS
YW5nZSgwLCAwKQotICAgICwgbV9ydWxlQm9keVJhbmdlKDAsIDApCi0gICAgLCBtX3Byb3BlcnR5
UmFuZ2UoVUlOVF9NQVgsIFVJTlRfTUFYKQotICAgICwgbV9ydWxlUmFuZ2VNYXAoMCkKLSAgICAs
IG1fY3VycmVudFJ1bGVEYXRhKDApCi0gICAgLCBtX3BhcnNpbmdNb2RlKE5vcm1hbE1vZGUpCi0g
ICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKLSAgICAsIG1fdG9rZW4oMCkKLSAgICAsIG1fbGlu
ZU51bWJlcigwKQotICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCi0gICAgLCBtX2Fs
bG93SW1wb3J0UnVsZXModHJ1ZSkKLSAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMo
dHJ1ZSkKLXsKLSNpZiBZWURFQlVHID4gMAotICAgICAgICBjc3N5eWRlYnVnID0gMTsKLSNlbmRp
ZgotICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OmluaXQoKTsKLX0KLQotCiBDU1NQYXJz
ZXI6OkNTU1BhcnNlcihDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgOiBtX2Nzc1Bh
cnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQpAQCAtMzU0
LDggKzMyMiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoaW50IHBy
b3BlcnR5SWQpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUoU3R5bGVQ
cm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTVkcgcHJlc25ldGF0aW9u
IGF0dHJpYnV0ZSB2YWx1ZXMgc2hvdWxkIGJlIHBhcnNlZCBpbiBzdHJpY3QgbW9kZSBhcyB3ZWxs
LgorICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09IENTU1N0cmljdE1vZGU7Cit9CisKK3N0YXRp
YyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
IHsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKTsK
ICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghaXNDb2xvclByb3BlcnR5SUQocHJvcGVydHlJZCkpCkBAIC00NDAsOSArNDE1LDEwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQs
IGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZVNpbXBs
ZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJ
ZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wg
YWNjZXB0c05lZ2F0aXZlTnVtYmVyczsKKyAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2Vy
TW9kZShjc3NQYXJzZXJNb2RlKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CiAKICAgICBpZiAoIWxlbmd0aCkKQEAgLTk2NiwyMCArOTQyLDIwIEBAIHN0YXRpYyBib29s
IHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJv
cGVydHlJZCwgY29uCiBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZv
bnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0
eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFwYXJzZVZhbHVlKGR1
bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rm9udEZhbWlseSwgc3RyaW5nLCBmYWxzZSwgZmFs
c2UsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5n
ZXQoKSwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBzdHJpbmcsIGZhbHNlLCBDU1NRdWlya3NNb2Rl
LCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PENTU1ZhbHVlTGlzdD4oZHVtbXlTdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0LCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewotICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0
aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0
LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgaWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVj
bGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBj
b250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwYXJzZUNv
bG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJp
Y3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4
dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VLZXl3b3Jk
VmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0
U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENTU1BhcnNlciBwYXJzZXIo
c3RyaWN0KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUpOwogICAgIHJldHVy
biBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBv
cnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIApAQCAtMTAxNiw3ICs5OTIsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKGZhc3RQYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0
cmljdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVl
KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgLy8gSW4gY2Fz
ZSB0aGUgZmFzdC1wYXRoIHBhcnNlciBkaWRuJ3QgdW5kZXJzdGFuZCB0aGUgY29sb3IsIHRyeSB0
aGUgZnVsbCBwYXJzZXIuCiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihzdHJpbmcpKQpAQCAt
OTA5Miw3ICs5MDY4LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVj
dG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAgICAgICAgcnVsZS0+
c3R5bGVSdWxlKCktPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CiAgICAgICAgIGlm
IChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKICAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25s
eVZhbHVlcygpOwotICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICAgICAgcnVsZS0+c3R5bGVS
dWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJv
cGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fY3NzUGFyc2VyTW9k
ZSkpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVz
LmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewpA
QCAtOTEzMCw3ICs5MTA2LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1
bGUoKQogICAgICAgICB9CiAgICAgfQogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUg
PSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0
YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9
IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpA
QCAtOTIwMSw3ICs5MTc3LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQ
YXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3Rv
cjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNl
bGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRp
b24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1f
cGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUt
PnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRp
ZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsK
ICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1bGVzLmFw
cGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtOTI3OSw3ICs5MjU1LDcgQEAgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJW
YWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlm
cmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCks
IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3RyaWN0TW9kZSgpKSk7CisgICAga2V5ZnJh
bWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3Bl
cnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUp
KTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
MWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4uZDhhZTQyOWU0OWE3NTg1
ZDk1N2EzMDYxZmI5YWRiYjNhNjE4OWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNjUs
OSArNjUsNiBAQCBjbGFzcyBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOwogCiBjbGFzcyBDU1NQYXJz
ZXIgewogcHVibGljOgotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgYm9vbGVhbiBjb25zdHJ1
Y3RvciBvbmNlIG1vdmVkIHRvIENTU1BhcnNlck1vZGUgY29tcGxldGVseS4KLSAgICBDU1NQYXJz
ZXIoYm9vbCBzdHJpY3RQYXJzaW5nKTsKICAgICBDU1NQYXJzZXIoQ1NTUGFyc2VyTW9kZSA9IENT
U1N0cmljdE1vZGUpOwogCiAgICAgfkNTU1BhcnNlcigpOwpAQCAtNzUsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBp
bnQgc3RhcnRMaW5lTnVtYmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VNYXAqIHJ1bGVSYW5nZU1hcCA9
IDApOwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBj
b25zdCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4gcGFy
c2VLZXlmcmFtZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0
cmluZyYsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4
dFN0eWxlU2hlZXQpOworICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNl
dCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJN
b2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZh
bHNlKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlck1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXgg
YjVlZmJkMGI1ZmIyNzI5OTAwYzQyODdjMzY1MDI3ODIzMDlhMjBjNi4uNzFmNDIwYWFkOWI2ZDNh
NjgyOGZiZmM2ZmVmMDRjZDgwZDJjYTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlck1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5o
CkBAIC0zMCwxMSArMzAsMjIgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAjZGVmaW5lIENT
U1BhcnNlck1vZGVfaAogCi1lbnVtIENTU1BhcnNlck1vZGUgewotICAgIENTU1F1aXJrc01vZGUs
CitlbnVtIHsKKyAgICBDU1NRdWlya3NNb2RlID0gMSwKICAgICBDU1NTdHJpY3RNb2RlLAogICAg
IC8vIFNWRyBzaG91bGQgYWx3YXlzIGJlIGluIHN0cmljdCBtb2RlLiBGb3IgU1ZHIGF0dHJpYnV0
ZXMsIHRoZSBydWxlcyBkaWZmZXIgdG8gc3RyaWN0IHNvbWV0aW1lcy4KICAgICBTVkdBdHRyaWJ1
dGVNb2RlCiB9OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIENTU1BhcnNlck1vZGU7CisKK2lubGlu
ZSBDU1NQYXJzZXJNb2RlIHRvQ1NTUGFyc2VyTW9kZShib29sIGluU3RyaWN0TW9kZSkKK3sKKyAg
ICByZXR1cm4gaW5TdHJpY3RNb2RlID8gQ1NTU3RyaWN0TW9kZSA6IENTU1F1aXJrc01vZGU7Cit9
CisKK2lubGluZSBDU1NQYXJzZXJNb2RlIGluQ1NTUGFyc2VyTW9kZShDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KGNz
c1BhcnNlck1vZGUpOworfQogCiAjZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAppbmRleCA2ZjllZTQxMGJhOGI5NzU3OGI0ZWIyNzY3NTRhMGI2MTZjOWRhYzg3Li4xZmIy
MDZiNjJhNDQ3MTM5YzE1ZmQwOWQ2NGQ2Yjg5YTg4NzliMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgK
QEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gV0VCS0lUX1JFR0lPTl9SVUxFOyB9CiAgICAgYm9vbCBpc0lt
cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSU1QT1JUX1JVTEU7IH0KIAotICAg
IGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0CisgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChwYXJlbnRSdWxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gcGFyZW50UnVsZSgpLT5jc3NQYXJzZXJNb2RlKCk7CiAgICAgICAgIGlmIChwYXJl
bnRTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgpLT51
c2VTdHJpY3RQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+Y3NzUGFyc2VyTW9kZSgpOworICAgICAgICByZXR1cm4g
Q1NTU3RyaWN0TW9kZTsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCAwZmY2MmY5NmEwMGZmNWYwNjRmNmM3MzQwYTBkYjczYWM4NmMwOGVhLi40ZGMzMmUyOTA3
MDFiNDJmNGE1Y2I2NGVjNmQ5OTIzMzMzNjE2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQo
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAgICAg
OiBTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGhyZWYsIGJhc2VVUkwpCiAgICAgLCBtX2NoYXJzZXQo
Y2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFy
c2luZyhmYWxzZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NRdWlya3NNb2RlKQogICAgICwg
bV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRD
U1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCkBAIC04OSw3
ICs4OSw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0UnVsZSogb3du
ZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0CiAgICAgOiBTdHlsZVNoZWV0KG93bmVy
UnVsZSwgaHJlZiwgYmFzZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9s
b2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFvd25lclJ1bGUgfHwg
b3duZXJSdWxlLT51c2VTdHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX2Nzc1BhcnNlck1vZGUob3du
ZXJSdWxlID8gb3duZXJSdWxlLT5jc3NQYXJzZXJNb2RlKCkgOiBpbkNTU1BhcnNlck1vZGUoQ1NT
U3RyaWN0TW9kZSkpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVl
KQogICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxzZSkKIHsKQEAgLTIwNCw3ICsyMDQsNyBA
QCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0
cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2lu
ZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NS
dWxlPiBydWxlID0gcC5wYXJzZVJ1bGUodGhpcywgcnVsZVN0cmluZyk7CiAKICAgICBpZiAoIXJ1
bGUpIHsKQEAgLTMzMSwxNSArMzMxLDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU3R5bGVT
aGVldDo6ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4CiAgICAg
cmV0dXJuIG51bGxBdG9tOyAvLyBBc3N1bWUgd2Ugd29uJ3QgbWF0Y2ggYW55IG5hbWVzcGFjZXMu
CiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJp
bmcsIGJvb2wgc3RyaWN0KQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcgJnN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewotICAgIHJldHVy
biBwYXJzZVN0cmluZ0F0TGluZShzdHJpbmcsIHN0cmljdCwgMCk7CisgICAgcmV0dXJuIHBhcnNl
U3RyaW5nQXRMaW5lKHN0cmluZywgY3NzUGFyc2VyTW9kZSwgMCk7CiB9CiAKLWJvb2wgQ1NTU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3Ry
aWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmlu
Z0F0TGluZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBpbnQgc3RhcnRMaW5lTnVtYmVyKQogewotICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsK
LSAgICBDU1NQYXJzZXIgcChzdHJpY3QpOworICAgIHNldENTU1BhcnNlck1vZGUoY3NzUGFyc2Vy
TW9kZSk7CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSk7CiAgICAgcC5wYXJzZVNoZWV0
KHRoaXMsIHN0cmluZywgc3RhcnRMaW5lTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDliOTI0NmE0OWQ4YjVkNGE1YjQzMjhlY2Mz
YTdhZTQyNTg5NGYzMWUuLjY0NDViZmZmNTJjMGIxOTQzNDU0MzExODI5MWFjNmRiMjI0OWY2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBDU1NTdHlsZVNoZWV0X2gKICNkZWZpbmUgQ1NTU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3R5bGVTaGVldENo
YW5nZWQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBi
b29sIHN0cmljdCA9IHRydWUpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSk7CiAKLSAgICBib29sIHBhcnNl
U3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVt
YmVyKTsKKyAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIENTU1BhcnNl
ck1vZGUsIGludCBzdGFydExpbmVOdW1iZXIpOwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGlu
ZygpOwogCkBAIC0xMDQsOCArMTA1LDggQEAgcHVibGljOgogICAgIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29s
IGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2Vy
TW9kZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gY3Nz
UGFyc2VyTW9kZTsgfQorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3NzUGFyc2VyTW9kZTsgfQogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0
KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHls
ZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0OyB9CkBAIC0xNTEsNyAr
MTUyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJp
ZXM7CiAKICAgICBib29sIG1fbG9hZENvbXBsZXRlZCA6IDE7Ci0gICAgYm9vbCBtX3N0cmljdFBh
cnNpbmcgOiAxOworICAgIENTU1BhcnNlck1vZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wg
bV9pc1VzZXJTdHlsZVNoZWV0IDogMTsKICAgICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlk
Q1NTSGVhZGVyIDogMTsKICAgICBib29sIG1fZGlkTG9hZEVycm9yT2NjdXIgOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAppbmRleCBiNzM1ZTdjYjczNWNiZWFlZDhkYjBkNWViODA4YmNiYzI4
MzM2NjVkLi43NTk1M2Q1YzM0NjBjNjJkMDVkMGU1Y2NkNWQ3OWYzY2I4OWU2YTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgcGFy
c2VNZWRpYURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVy
eVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIg
cGFyc2VyKHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAgICAg
CiAgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5PiA+IHJlc3VsdDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBsaXN0OwpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOwor
ICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAKICAgICBPd25QdHI8TWVkaWFR
dWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKQEAgLTE1
OSw3ICsxNTksNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nVG9SZW1vdmUpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQ
YXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBh
cnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsK
ICAgICBpZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBmNTAyNmUwMDgzZjgzNDY3NDRm
NmNjYmNiMzkxMWM4MzFjOGQwYzRiLi45NmVmYTgyMTUzYWI4NTg5ODc3YWMwYjYwNDcyZmFmYzgx
OTI3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00NCwy
MiArNDQsMjIgQEAgc3RhdGljIFByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwJiBwcm9wZXJ0eVNl
dENTU09NV3JhcHBlck1hcCgpCiAgICAgcmV0dXJuIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFw
SW5zdGFuY2U7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoKQotICAg
IDogbV9zdHJpY3RQYXJzaW5nKGZhbHNlKQorU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0
eVNldChDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1vZGUo
Y3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewogfQogCiBT
dHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0
eT4mIHByb3BlcnRpZXMpCiAgICAgOiBtX3Byb3BlcnRpZXMocHJvcGVydGllcykKLSAgICAsIG1f
c3RyaWN0UGFyc2luZyh0cnVlKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUp
CiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuc2hy
aW5rVG9GaXQoKTsKIH0KIAotU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25z
dCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3Ry
aWN0UGFyc2luZykKLSAgICA6IG1fc3RyaWN0UGFyc2luZyh1c2VTdHJpY3RQYXJzaW5nKQorU3R5
bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKKyAg
ICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9oYXNDU1NPTVdyYXBw
ZXIoZmFsc2UpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgYmVsb25ncyBpbiBDU1NQYXJz
ZXIuCkBAIC00OTMsNyArNDkzLDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogICAgIC8v
IFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRo
ZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2Vy
dmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdp
bm5pbmcuCi0gICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlE
LCB2YWx1ZSwgaW1wb3J0YW50LCB1c2VTdHJpY3RQYXJzaW5nKCksIGNvbnRleHRTdHlsZVNoZWV0
KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZh
bHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29udGV4dFN0eWxlU2hlZXQpOwogfQog
CiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCkBAIC01MzgsNyArNTM4
LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
aW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW4KIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cGFy
c2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24sIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAg
IENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFy
c2VyKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgcGFyc2VyLnBhcnNlRGVjbGFyYXRpb24odGhpcywg
c3R5bGVEZWNsYXJhdGlvbiwgMCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhjZTYyMjU0NGFiMWE0NjVmMGU3ZTczODE2
OWI2YjhjYjVkOWU1Li45MzQzNDg5NGMzYjE0OTU5MzE3ZTM0ZmM3OWQ2ZDA0Zjg4ZWZlZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNp
Zm5kZWYgU3R5bGVQcm9wZXJ0eVNldF9oCiAjZGVmaW5lIFN0eWxlUHJvcGVydHlTZXRfaAogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTQwLDEzICs0MSwxMyBAQCBjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5U2V0
KCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUgPSBDU1NRdWlya3NNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVByb3BlcnR5U2V0KGNzc1BhcnNlck1vZGUpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9w
ZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0
eVNldChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzLCB1c2VTdHJpY3RQYXJzaW5nKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChwcm9wZXJ0aWVzLCBudW1Q
cm9wZXJ0aWVzLCBjc3NQYXJzZXJNb2RlKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9w
ZXJ0aWVzKQogICAgIHsKQEAgLTg2LDggKzg3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZXJn
ZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0ID0g
dHJ1ZSk7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFy
c2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAg
ICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNl
ck1vZGU7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTExMiw5ICsx
MTMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDU1NPTVdyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX2hhc0NTU09NV3JhcHBlcjsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUHJvcGVydHlTZXQo
KTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwogICAgIFN0eWxlUHJvcGVy
dHlTZXQoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwotICAgIFN0eWxlUHJvcGVydHlTZXQo
Y29uc3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJz
aW5nKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVBy
b3BlcnRpZXMsIENTU1BhcnNlck1vZGUpOwogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPENTU1Byb3Bl
cnR5LCA0PiBtX3Byb3BlcnRpZXM7CiAKLSAgICBib29sIG1fc3RyaWN0UGFyc2luZyA6IDE7Cisg
ICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNlck1vZGU7CiAgICAgbXV0YWJsZSBib29sIG1faGFz
Q1NTT01XcmFwcGVyIDogMTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggMDc5ODc5Y2JkOGRk
NmM1ZjkyYjc2MjQ5ZWVjNGYwNGY0OWE5NjAwZi4uNWViNWZjNDNkZjAwMTI5Njk0NGFiMDE0OWVi
MWIwM2VkYTFjMjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIFN0eWxlU2hlZXRfaAogI2RlZmluZSBTdHlsZVNoZWV0X2gKIAorI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC02Miw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RN
b2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlLmNwcAppbmRleCBlMzk5ODZlNWRjNWVkNGIzY2M4YWMwODU5NjFhZmJmY2M2ODcwNWQx
Li44NDM4NDc5Yzg3YmJiYzlkNjY4MjhlZWMyZWY4MDYyMTVhNDJiNGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6YXBwZW5kKFdlYktpdENTU0tleWZyYW1lUnVs
ZSogcnVsZSkKIAogdm9pZCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKGNvbnN0
IFN0cmluZyYgcnVsZSkKIHsKLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJpY3RQYXJzaW5nKCkpOwor
ICAgIENTU1BhcnNlciBwKGNzc1BhcnNlck1vZGUoKSk7CiAgICAgUmVmUHRyPFdlYktpdENTU0tl
eWZyYW1lUnVsZT4gbmV3UnVsZSA9IHAucGFyc2VLZXlmcmFtZVJ1bGUocGFyZW50U3R5bGVTaGVl
dCgpLCBydWxlKTsKICAgICBpZiAobmV3UnVsZSkKICAgICAgICAgYXBwZW5kKG5ld1J1bGUuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCA5YWVlYTc3MTU4
YmJjYmI2ZTdiYjU3MTBmYThlMWI2MTU2MjM5YTZhLi5hZmViYTcxZjg5ZTk5MjhiOGY0ZTVmYTUw
NDFhNjEyYzlmZGY0ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBXZWJLaXRDU1NNYXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogdm9p
ZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVE
ZWNsYXJhdGlvbiA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSwgdHJ1ZSwgMCkpIHsKKyAgICBpZiAoQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBzdHJpbmcsIHRydWUsIENTU1N0cmljdE1vZGUsIDApKSB7CiAgICAgICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5CiAg
ICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMn
KQogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5NmY5Y2M5OWZjNjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhj
Li45Y2FmMzAzOGQ2Njk0ZTkzM2I4NjAxMGMwYjgyN2JlY2JiOWIxNGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTEwNjgsOCArMTA2OCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRG
bG93PiBEb2N1bWVudDo6d2Via2l0R2V0Rmxvd0J5TmFtZShjb25zdCBTdHJpbmcmIGZsb3dOYW1l
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gTWFrZSBhIHNsb3dlciBjaGVjayBmb3IgaW52
YWxpZCBmbG93IG5hbWUKLSAgICBDU1NQYXJzZXIgcCh0cnVlKTsKLSAgICBpZiAoIXAucGFyc2VG
bG93VGhyZWFkKGZsb3dOYW1lLCB0aGlzKSkKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmlj
dE1vZGUpOworICAgIGlmICghcGFyc2VyLnBhcnNlRmxvd1RocmVhZChmbG93TmFtZSwgdGhpcykp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJl
cigpLT52aWV3KCkpCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVu
dDo6cGFnZVVzZXJTaGVldCgpCiAgICAgLy8gUGFyc2UgdGhlIHNoZWV0IGFuZCBjYWNoZSBpdC4K
ICAgICBtX3BhZ2VVc2VyU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUodGhpcywg
c2V0dGluZ3MoKS0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpKTsKICAgICBtX3BhZ2VVc2VyU2hl
ZXQtPnNldElzVXNlclN0eWxlU2hlZXQodHJ1ZSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5wYXJz
ZVN0cmluZyh1c2VyU2hlZXRUZXh0LCAhaW5RdWlya3NNb2RlKCkpOworICAgIG1fcGFnZVVzZXJT
aGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFpblF1aXJr
c01vZGUoKSkpOwogICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CiB9CiAKQEAgLTI3
MzIsNyArMjczMiw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogRG9j
dW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMoKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKSwgc2hl
ZXQtPnVybCgpKTsKICAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0
KHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgICAgICAgICBwYXJz
ZWRTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQtPnNvdXJjZSgpLCAhaW5RdWlya3NNb2RlKCkpOwor
ICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgdG9D
U1NQYXJzZXJNb2RlKCFpblF1aXJrc01vZGUoKSkpOwogICAgICAgICAgICAgaWYgKCFtX3BhZ2VH
cm91cFVzZXJTaGVldHMpCiAgICAgICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPik7CiAgICAgICAgICAg
ICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFwcGVuZChwYXJzZWRTaGVldC5yZWxlYXNlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIyOWJmYjRhNWUyMzA1YzVhMWM2ZThlYjFkMjRhOWJk
YjhkZGNhMDkuLmUyZjFiZTkyMTg3MzIwYmM5M2NlNzg2MmYwNDYyNzRiNzAwOTk5ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3NTEsNyArMTc1MSw3IEBAIGJvb2wgRWxlbWVudDo6d2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KIAogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJz
ZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JM
aXN0IHNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3IsIGRvY3VtZW50
KCksIHNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcAppbmRleCBkMzI5ODFmOWMxZjcyYzE0OTI1ODI0YjQ4NjhjODZjMGFmNWQ5M2VhLi41
ODRjNmNmMWZjNmJjYzcwYTZjNWI1MTBkNDQyN2M5MzJhOWZlNzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgU3R5bGVQ
cm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKFN0eWxl
ZEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5
bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5
bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxl
RGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxl
bWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0K
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiB9CkBAIC02Niw3ICs2Niw3IEBA
IFN0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5s
aW5lU3R5bGUoU3R5bGVkRWxlbWVudCoKIHsKICAgICBpZiAobV9pbmxpbmVTdHlsZURlY2wgJiYg
IW1faW5saW5lU3R5bGVEZWNsLT5oYXNDU1NPTVdyYXBwZXIoKSkgewogICAgICAgICBtX2lubGlu
ZVN0eWxlRGVjbCA9IG1faW5saW5lU3R5bGVEZWNsLT5jb3B5KCk7Ci0gICAgICAgIG1faW5saW5l
U3R5bGVEZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAh
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0
eWxlRGVjbC0+c2V0Q1NTUGFyc2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAg
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBl
bnN1cmVJbmxpbmVTdHlsZShlbGVtZW50KTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBFbGVtZW50
QXR0cmlidXRlRGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKFN0eWxlZEVs
ZW1lbnQqIGVsZW0KICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wuY2xlYXIoKTsKICAgICBpZiAo
IW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQ
cm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1faW5saW5lU3R5bGVEZWNsLT5zZXRTdHJp
Y3RQYXJzaW5nKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Q1NTUGFy
c2VyTW9kZSh0b0NTU1BhcnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVt
ZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogICAgIH0KICAgICBtX2lubGluZVN0
eWxlRGVjbC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBlbGVtZW50LT5kb2N1bWVudCgpLT5lbGVt
ZW50U2hlZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTM0MGNiNGUyNDYyYjg2YjUwYTJl
NWY2ODE2OTk0MjJhM2RlMmEzZi4uNjgzMTkxNDljZjcyYjY4ZWJjOTk4ZjVjY2FlNGYzMDY2MmU1
MTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTY2Myw3ICsxNjYzLDcgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNl
cHRpb25Db2RlJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJz
aW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmlj
dFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHRvQ1NTUGFyc2VyTW9kZShzdHJpY3RQYXJzaW5n
KSk7CiAKICAgICBDU1NTZWxlY3Rvckxpc3QgcXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJz
ZVNlbGVjdG9yKHNlbGVjdG9ycywgZG9jdW1lbnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwpAQCAt
MTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVlcnlTZWxlY3Rv
ckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgpLT5pblF1aXJr
c01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBDU1NQYXJzZXIg
cCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0
IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3Vt
ZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggOGNiZDJhMmZjNWRiNjAxNzBiYjg2NzljZTdkZjJiMmVk
YzYyNDU5Yi4uMDE4MDA0YmY1ZDFjY2MzYjNiMmU2ZDQ2NDlmZWY0YjdlZmM4MTgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhcwogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6cGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7Ci0gICAgbV9zaGVl
dC0+cGFyc2VTdHJpbmcoc2hlZXQsIHRydWUpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNo
ZWV0LCBDU1NTdHJpY3RNb2RlKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgbV9j
YWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIG1fY2FjaGVkU2hlZXQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCBjMTI5NGU3NDNmNGJhYjJiYWE0MGNh
ZmI0YjIxMWUzYzA0NWE1ZDdjLi4zNzNjMDM5ZTlhNGY4MDYzOGJlMGY4OTBhNjVjYzlkNTVmYmM3
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgU3R5bGVFbGVtZW50OjpjcmVhdGVTaGVldChFbGVtZW50KiBlLCBpbnQgc3RhcnRMaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHRlCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkUGVuZGlu
Z1NoZWV0KCk7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgbV9z
aGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShlLCBTdHJpbmcoKSwgS1VSTCgpLCBkb2N1bWVu
dC0+aW5wdXRFbmNvZGluZygpKTsKLSAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nQXRM
aW5lKHRleHQsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCksIHN0YXJ0TGluZU51bWJlcik7Cisg
ICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCB0b0NTU1BhcnNlck1v
ZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSksIHN0YXJ0TGluZU51bWJlcik7CiAgICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlLT50aXRsZSgpKTsKICAgICAgICAgICAgIG1f
bG9hZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkYjU3
ZTQwMzljMjE4MGFiODI4MWY1MWMwYTdmYTk2Y2NlNjJkNWJhLi45ZDc5NTUxMjE1ZWZmZDY0YTY3
Yzg1MGRhOGI2YzliNGVjNzNiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRl
UHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2VFbGVtZW50KQogCiAgICAgU3R5bGVQcm9w
ZXJ0eVNldCogaW5saW5lU3R5bGUgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFi
bGVJbmxpbmVTdHlsZSh0aGlzKTsKICAgICBpbmxpbmVTdHlsZS0+Y29weVByb3BlcnRpZXNGcm9t
KCpzb3VyY2UtPmlubGluZVN0eWxlKCkpOwotICAgIGlubGluZVN0eWxlLT5zZXRTdHJpY3RQYXJz
aW5nKHNvdXJjZS0+aW5saW5lU3R5bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBpbmxp
bmVTdHlsZS0+c2V0Q1NTUGFyc2VyTW9kZShzb3VyY2UtPmlubGluZVN0eWxlKCktPmNzc1BhcnNl
ck1vZGUoKSk7CiAKICAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoc291cmNlLT5pc1N0eWxl
QXR0cmlidXRlVmFsaWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAppbmRleCBkM2VmOGFmNTc3OTRkNTU4ZmQwMTcwN2JlYjlkODQ3YjlkNWYzODY3Li41YTQ1ZGFj
OWIyMTMxZTNjYmQ4MmY4ZDE5YjBmYzc2NmExOWVlZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJIVE1MTGlu
a0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLAogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlN
RVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRl
eHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwg
dG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIC8vIElmIHdlJ3JlIGxvYWRp
bmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1FIHR5cGUgaXMgbm90CiAg
ICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0byBhdCBsZWFzdCBzdGFydCB3aXRoIGEg
c3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOGIyNjU3NDc0OWE3NzU3MTY2OWJmZmJj
MTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdlZjY0ZTM4NTc4NWY1NDdlZTdmMGEyYjJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBTdHJpbmcgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBD
U1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKTsKKyAgICBD
U1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSghbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBh
cnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7CiAgICAg
ZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDQyNGE1ZmE4NmRmNGMxOGRj
YTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFlYThlNTdkMTg0MDE0ZmU3YjczYWQ1ZDFkMjE4NWIz
ZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBDb250ZW50U2VsZWN0b3JRdWVyeTo6
Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsK
KyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogICAgIHBhcnNlci5wYXJzZVNl
bGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwgaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50
KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9yID0gQ29udGVudFNl
bGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3
YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRlZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYy
M2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5j
bGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgbV9w
YWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0
LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwog
ICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0
b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRl
Njk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsy
MCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRS
YXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIG1fYW5pbWF0
ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0U3RyaWN0UGFyc2luZyhm
YWxzZSk7CisgICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0Q1NT
UGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZh
MmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMzOGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJk
ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50OjpTVkdGb250RmFjZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURl
Y2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJh
dGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRD
U1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNs
YXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YzQyN2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRm
YTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
LSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgc3R5bGUtPnNldENTU1Bh
cnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHls
ZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKICAg
ICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAxN2MwZWNiZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1
MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdjZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5n
JiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7CiAgICAgdm9pZCBjaGVja0xvYWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRk
M2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1YjBjYy4uNDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0
YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0
eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlKQogewogICAgIC8vIFBh
cnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8gYW4geG1sRG9jUHRyCiAgICAgY29uc3QgVUNoYXIg
Qk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAppbmRleCA4
YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2YwMGQ4YTk4Li42YmFmMTc1ODFhNzcxNzJk
MDYyNTM5M2I5M2ViZWQxNWU3ODdkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dFF0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogWFNMU3R5bGVT
aGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkKK2Jvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUpCiB7CiAgICAgLy8gRklYTUU6
IEZpeCBRWG1sUXVlcnkgc28gdGhhdCBpdCBhbGxvd3MgY29tcGlsaW5nIHRoZSBzdHlsZXNoZWV0
IGJlZm9yZSBzZXR0aW5nIHRoZSBkb2N1bWVudAogICAgIC8vIHRvIGJlIHRyYW5zZm9ybWVkLiBU
aGlzIHdheSB3ZSBjb3VsZCBub3Qgb25seSBjaGVjayBpZiB0aGUgc3R5bGVzaGVldCBpcyBjb3Jy
ZWN0IGJlZm9yZSB1c2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1l
bnQuY3BwCmluZGV4IDgwZmJkZjFkOWVlOTZmM2I0MzVjYTJlMTg1NzJlNDNjMjFiNjQwZWIuLmIx
YjAyMzM3ZDE1NWM3NmUyY2FlMzJkMWI0ZmM3Zjk3ZjU1NjMyZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJXZWJEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMTc5LDcgKzE4MCw3
IEBAIHZvaWQgV2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KGNvbnN0IFdlYlN0cmlu
ZyYgc291cmNlQ29kZSwgVXNlclN0eWxlTGV2CiAKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
cGFyc2VkU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAg
IHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KGxldmVsID09IFVzZXJTdHlsZVVzZXJM
ZXZlbCk7Ci0gICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNvdXJjZUNvZGUsICFkb2N1bWVu
dC0+aW5RdWlya3NNb2RlKCkpOworICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzb3VyY2VD
b2RlLCB0b0NTU1BhcnNlck1vZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSkpOwogICAgIGRv
Y3VtZW50LT5hZGRVc2VyU2hlZXQocGFyc2VkU2hlZXQucmVsZWFzZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134353</attachid>
            <date>2012-03-28 11:39:26 -0700</date>
            <delta_ts>2012-03-28 17:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328113925.patch</filename>
            <type>text/plain</type>
            <size>47030</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZmYxMGY4NzA0M2Q2
MzliMjA5NWJiNDBkN2Y4YTZiODVkMmIwOC4uNDYzMWJhNzFhN2NiZjVkMzI4MTE3MDRjNmNiMzMw
MDhjOTdjMzQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSB0aGUgbmV3IENTU1BhcnNlck1vZGUgZW51bSB0byBtb3Jl
IGNsYXNzZXMuIFNWRyBjbGFzc2VzIG1ha2UgdXNlIG9mIFNWR0F0dHJpYnV0ZU1vZGUgZm9yIENT
UyBwYXJzaW5nIGFscmVhZHkuCisgICAgICAgIEJ1dCBTVkdBdHRyaWJ1dGVNb2RlIGRvZXMgbm90
IGRpZmZlciBmcm9tIENTU1F1aXJrc01vZGUgYXQgdGhlIG1vbWVudC4gVGhpcyB3aWxsIGNoYW5n
ZSB3aXRoIGEgZm9sbG93dXAgcGF0Y2ggb24gYnVnIDQ2MTEyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIEV2ZXJ5dGhpbmcgZ2V0cyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAg
ICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1
bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOiBNb3ZlIHByaXZh
dGUgZnVuY3Rpb25zIGF3YXkgZnJvbSBzdHJpY3QgYm9vbGVhbiBhbmQgbWFrZSB1c2Ugb2YgQ1NT
UGFyc2VyTW9kZSBpbnN0ZWFkLgorICAgICAgICAoV2ViQ29yZTo6aXNTdHJpY3RQYXJzZXJNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvclZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmg6IFJlbW92ZWQgY29uc3RydWN0b3Igd2l0aCBib29sZWFuIGFyZ3VtZW50LiBXZSBq
dXN0IHVzZSB0aGUgQ1NTUGFyc2VyTW9kZSBlbnVtIG5vdy4KKyAgICAgICAgKENTU1BhcnNlcik6
CisgICAgICAgICogY3NzL0NTU1BhcnNlck1vZGUuaDogQ1NTUGFyc2VyTW9kZSBnZXRzIHRvIGEg
dW5zaWduZWQgY2hhciB0byBhdm9pZCBpbmNyZWFzaW5nIHRoZSBjbGFzcyBzaXplIG9mIFN0eWxl
UHJvcGVydHlTZXQgd2hlcmUgaXQgcmVwbGFjZXMgYSBib29sZWFuLgorICAgICAgICAodG9DU1NQ
YXJzZXJNb2RlKTogTmV3IGhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGJvb2xlYW4gdG8gQ1NT
UGFyc2VyTW9kZS4KKyAgICAgICAgKGluQ1NTUGFyc2VyTW9kZSk6IE5ldyBoZWxwZXIgZnVuY3Rp
b24gdG8gYXZvaWQgZW51bWVyYWwgYW5kIG5vbi1lbnVtZXJhbCB0eXBlIGluIGNvbmRpdGlvbmFs
IGV4cHJlc3Npb25zLgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSdWxlOjpjc3NQYXJzZXJNb2RlKTogUmVuYW1lZCB1c2VTdHJpY3RQYXJzaW5nIHRvIGNz
c1BhcnNlck1vZGUgc2luY2UgaXQgcmV0dXJucyBDU1NQYXJzZXJNb2RlIGluc3RlYWQgb2YgYSBi
b29sZWFuIG5vdy4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
aGVldDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cGFy
c2VTdHJpbmdBdExpbmUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAg
IChDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnNldENT
U1BhcnNlck1vZGUpOiBSZW5hbWVkIHNldFN0cmljdFBhcnNpbmcgdG8gc2V0Q1NTUGFyc2VyTW9k
ZSBzaW5jZSB3ZSBzZXQgYW4gZW51bSBub3cuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNo
ZWV0Ojpjc3NQYXJzZXJNb2RlKTogUmVuYW1lZCB1c2VTdHJpY3RQYXJzaW5nIHRvIGNzc1BhcnNl
ck1vZGUgc2luY2UgaXQgcmV0dXJucyBDU1NQYXJzZXJNb2RlIGluc3RlYWQgb2YgYSBib29sZWFu
IG5vdy4KKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUXVlcnlTZXQ6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpyZW1vdmUpOgorICAgICAgICAq
IGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0
eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVByb3BlcnR5U2V0OjpzZXRDU1NQYXJzZXJNb2RlKTogUmVuYW1lZCBzZXRTdHJp
Y3RQYXJzaW5nIHRvIHNldENTU1BhcnNlck1vZGUgc2luY2Ugd2Ugc2V0IGFuIGVudW0gbm93Lgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6IFJlbmFt
ZWQgdXNlU3RyaWN0UGFyc2luZyB0byBjc3NQYXJzZXJNb2RlIHNpbmNlIGl0IHJldHVybnMgQ1NT
UGFyc2VyTW9kZSBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBub3cuCisgICAgICAgIChTdHlsZVByb3Bl
cnR5U2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVl
dCk6CisgICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICog
Y3NzL1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRy
aXg6OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5n
TXV0YXRpb24pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnF1ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3Rv
ckFsbCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAg
ICAgICogZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1l
bnQ6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1
ZXJ5OjpDb250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6
cmVwYXJzZVN0eWxlU2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlM
U3R5bGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAq
IHhtbC9YU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAg
KiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEy
LTAzLTI4ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxh
Y2tCZXJyeV0gUGx1bWIgdGhyb3VnaCBHcmFwaGljc0xheWVyOjpjb250ZW50c09wYXF1ZSgpIHRv
IExheWVyVGlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWYwYWNiYzk0YTViODQw
OTBiYmQ4Mjc3ZTgwYzI2NjVhOGI2ZTEwOC4uMjJlMzllNTAxZWViMTAzYjJkNTdhZjI0NmFmNDRi
ZDA4N2U1YTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMi0wMy0yOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIElu
dHJvZHVjZSBDU1NQYXJzZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFVzZSBDU1NQYXJz
ZXJNb2RlIGZvciBzZXR0aW5nIHRoZSBwYXJzaW5nIG1vZGUgb24gcGFyc2VWYWx1ZS4KKworICAg
ICAgICAqIHNyYy9XZWJEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50
OjppbnNlcnRVc2VyU3R5bGVTaGVldCk6CisKIDIwMTItMDMtMjcgIEphbWVzIFJvYmluc29uICA8
amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVs
IGZsaW5nIHZpYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1wb3J0UnVsZS5jcHAKaW5kZXggZjE3YTE0MWU0YTMwZWY2NTgzZjkwNmNiMzc4YmE3YTll
M2FlODFiZi4uYmU5OWMxNDEwYjRlOWI0ZTBjZDdlYjc4MDE0MzFlZDZmY2FjMjdiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNjgsNyArNjgsOCBAQCB2b2lkIENTU0lt
cG9ydFJ1bGU6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBjbwogICAgIGJvb2wgY3Jvc3NPcmlnaW5DU1MgPSBmYWxzZTsKICAgICBib29s
IHZhbGlkTUlNRVR5cGUgPSBmYWxzZTsKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJl
bnRTdHlsZVNoZWV0KCk7Ci0gICAgYm9vbCBzdHJpY3QgPSAhcGFyZW50IHx8IHBhcmVudC0+dXNl
U3RyaWN0UGFyc2luZygpOworICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSA9IHBhcmVu
dCA/IHBhcmVudC0+Y3NzUGFyc2VyTW9kZSgpIDogaW5DU1NQYXJzZXJNb2RlKENTU1N0cmljdE1v
ZGUpOworICAgIGJvb2wgc3RyaWN0ID0gY3NzUGFyc2VyTW9kZSA9PSBDU1NTdHJpY3RNb2RlOwog
ICAgIGJvb2wgZW5mb3JjZU1JTUVUeXBlID0gc3RyaWN0OwogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHBhcmVudCA/IHBhcmVudC0+ZmluZERvY3VtZW50KCkgOiAwOwogICAgIGJvb2wgbmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+c2V0dGluZ3MoKSAmJiBk
b2N1bWVudC0+c2V0dGluZ3MoKS0+bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKTsKQEAgLTgyLDcg
KzgzLDcgQEAgdm9pZCBDU1NJbXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY28KICNlbmRpZgogCiAgICAgU3RyaW5nIHNo
ZWV0VGV4dCA9IHNoZWV0LT5zaGVldFRleHQoZW5mb3JjZU1JTUVUeXBlLCAmdmFsaWRNSU1FVHlw
ZSk7Ci0gICAgbV9zdHlsZVNoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRleHQsIHN0cmljdCk7Cisg
ICAgbV9zdHlsZVNoZWV0LT5wYXJzZVN0cmluZyhzaGVldFRleHQsIGNzc1BhcnNlck1vZGUpOwog
CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJl
cXVlc3QoYmFzZVVSTCkpCiAgICAgICAgIGNyb3NzT3JpZ2luQ1NTID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU01lZGlhUnVsZS5jcHAKaW5kZXggZmU3NjUwZmEzNDRkZWJlMGEwZDlhNWZhYjQ1MjFl
MmIzOTViMzFjZC4uNWVkNWVmYzIyNWZjZGU2ZDA4ZWNmNGRlMTg3OGM2NjY3NGEwM2ZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdW5zaWduZWQg
Q1NTTWVkaWFSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQ1NTUGFyc2Vy
IHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkp
OwogICAgIFJlZlB0cjxDU1NSdWxlPiBuZXdSdWxlID0gcC5wYXJzZVJ1bGUocGFyZW50U3R5bGVT
aGVldCgpLCBydWxlKTsKICAgICBpZiAoIW5ld1J1bGUpIHsKICAgICAgICAgLy8gU1lOVEFYX0VS
UjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlz
IHVucGFyc2FibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDMxN2VlMDhkOWYzNDg2
YmNiM2VjZDk3MzI2MzRkNGQ3ZWZhZDM5ZDEuLjU1YWJjMmU5NjU2NzI3MTQwNDExYjIzOGEwMzNk
MjVhZmY2OGNiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xODEsMzggKzE4MSw2
IEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZW5zdXJlQ1NTVmFsdWVQb29sKCkKICAgICAgICAg
bV9jc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OmNyZWF0ZSgpOwogfQogCi1DU1NQYXJzZXI6
OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCi0gICAgOiBtX2Nzc1BhcnNlck1vZGUoc3Ry
aWN0UGFyc2luZyA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlKQotICAgICwgbV9pbXBv
cnRhbnQoZmFsc2UpCi0gICAgLCBtX2lkKDApCi0gICAgLCBtX3N0eWxlU2hlZXQoMCkKLSAgICAs
IG1faW5QYXJzZVNob3J0aGFuZCgwKQotICAgICwgbV9jdXJyZW50U2hvcnRoYW5kKDApCi0gICAg
LCBtX2ltcGxpY2l0U2hvcnRoYW5kKGZhbHNlKQotICAgICwgbV9oYXNGb250RmFjZU9ubHlWYWx1
ZXMoZmFsc2UpCi0gICAgLCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUoZmFsc2UpCi0g
ICAgLCBtX2RlZmF1bHROYW1lc3BhY2Uoc3RhckF0b20pCi0gICAgLCBtX2luU3R5bGVSdWxlT3JE
ZWNsYXJhdGlvbihmYWxzZSkKLSAgICAsIG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKLSAgICAs
IG1fcnVsZUJvZHlSYW5nZSgwLCAwKQotICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBV
SU5UX01BWCkKLSAgICAsIG1fcnVsZVJhbmdlTWFwKDApCi0gICAgLCBtX2N1cnJlbnRSdWxlRGF0
YSgwKQotICAgICwgbV9wYXJzaW5nTW9kZShOb3JtYWxNb2RlKQotICAgICwgbV9jdXJyZW50Q2hh
cmFjdGVyKDApCi0gICAgLCBtX3Rva2VuKDApCi0gICAgLCBtX2xpbmVOdW1iZXIoMCkKLSAgICAs
IG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcigwKQotICAgICwgbV9hbGxvd0ltcG9ydFJ1bGVzKHRy
dWUpCi0gICAgLCBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zKHRydWUpCi17Ci0jaWYgWVlE
RUJVRyA+IDAKLSAgICAgICAgY3NzeXlkZWJ1ZyA9IDE7Ci0jZW5kaWYKLSAgICAgICAgQ1NTUHJv
cGVydHlTb3VyY2VEYXRhOjppbml0KCk7Ci19Ci0KLQogQ1NTUGFyc2VyOjpDU1NQYXJzZXIoQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogICAgIDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNl
ck1vZGUpCiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKQEAgLTM1NCw4ICszMjIsMTUgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzQ29sb3JQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQogICAgIH0K
IH0KIAotc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0
YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0
aWMgaW5saW5lIGJvb2wgaXNTdHJpY3RQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKK3sKKyAgICAvLyBGSVhNRTogU1ZHIHByZXNuZXRhdGlvbiBhdHRyaWJ1dGUgdmFsdWVz
IHNob3VsZCBiZSBwYXJzZWQgaW4gc3RyaWN0IG1vZGUgYXMgd2VsbC4KKyAgICByZXR1cm4gY3Nz
UGFyc2VyTW9kZSA9PSBDU1NTdHJpY3RNb2RlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUNvbG9y
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CisgICAgYm9vbCBzdHJp
Y3QgPSBpc1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCFzdHJpbmcu
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWlzQ29sb3JQcm9wZXJ0
eUlEKHByb3BlcnR5SWQpKQpAQCAtNDQwLDkgKzQxNSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVn
YXRpdgogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHls
ZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRl
eHRTdHlsZVNoZWV0KQorc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHls
ZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51
bWJlcnM7CisgICAgYm9vbCBzdHJpY3QgPSBpc1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9k
ZSk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCiAgICAgaWYgKCFs
ZW5ndGgpCkBAIC05NjYsMjAgKzk0MiwyMCBAQCBzdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1
ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbgogUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyaW5nLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
IHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZHVtbXlTdHlsZSA9IFN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSgpOwotICAgIGlmICghcGFyc2VWYWx1ZShkdW1teVN0eWxlLmdldCgpLCBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHksIHN0cmluZywgZmFsc2UsIGZhbHNlLCBjb250ZXh0U3R5bGVT
aGVldCkpCisgICAgaWYgKCFwYXJzZVZhbHVlKGR1bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5
Rm9udEZhbWlseSwgc3RyaW5nLCBmYWxzZSwgQ1NTUXVpcmtzTW9kZSwgY29udGV4dFN0eWxlU2hl
ZXQpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxD
U1NWYWx1ZUxpc3Q+KGR1bW15U3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlG
b250RmFtaWx5KSk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVy
dHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxl
U2hlZXQpCitib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNs
YXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9y
dGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCkKIHsKLSAgICBpZiAocGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlv
biwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hl
ZXQpKQorICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0
eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4dFN0eWxlU2hlZXQp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVT
aGVldCkpCisgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwg
c3RyaW5nLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9u
LCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CisgICAgQ1NT
UGFyc2VyIHBhcnNlcihjc3NQYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFs
dWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5
bGVTaGVldCk7CiB9CiAKQEAgLTEwMTYsNyArOTkyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
Q29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQog
ICAgIGlmIChmYXN0UGFyc2VDb2xvcihjb2xvciwgc3RyaW5nLCBzdHJpY3QpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2Vy
IHBhcnNlcihDU1NTdHJpY3RNb2RlKTsKIAogICAgIC8vIEluIGNhc2UgdGhlIGZhc3QtcGF0aCBw
YXJzZXIgZGlkbid0IHVuZGVyc3RhbmQgdGhlIGNvbG9yLCB0cnkgdGhlIGZ1bGwgcGFyc2VyLgog
ICAgIGlmICghcGFyc2VyLnBhcnNlQ29sb3Ioc3RyaW5nKSkKQEAgLTkwOTIsNyArOTA2OCw3IEBA
IENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiAgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5hZG9w
dFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9u
bHlWYWx1ZXMpCiAgICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICAg
ICAgcnVsZS0+c3R5bGVSdWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCks
IGluU3RyaWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0
aWVzKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBt
X3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsKICAgICAgICAgcmVz
dWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxl
YXNlKCkpOwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKQEAgLTkxMzAsNyArOTEwNiw3
IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgfQog
ICAgIH0KICAgICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxl
OjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVBy
b3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlv
bihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAg
IG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTkyMDEsNyArOTE3Nyw3
IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBl
bmQocGFnZVNlbGVjdG9yKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxl
Y3RvclZlY3Rvcik7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlT
ZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMu
c2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihT
dHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJz
ZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAgICAgICAgIHBhZ2VSdWxl
ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNl
KCkpOwogICAgIH0KQEAgLTkyNzksNyArOTI1NSw3IEBAIFdlYktpdENTU0tleWZyYW1lUnVsZSog
Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUoQ1NTUGFyc2VyVmFsdWVMaXN0KiBrZXlzKQog
CiAgICAgUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4ga2V5ZnJhbWUgPSBXZWJLaXRDU1NL
ZXlmcmFtZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwogICAgIGtleWZyYW1lLT5zZXRLZXlU
ZXh0KGtleVN0cmluZyk7Ci0gICAga2V5ZnJhbWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRp
ZXMuc2l6ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlv
bihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAKICAgICBjbGVhclBy
b3BlcnRpZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDFhZTY3MDM0YjQ1NDkzOGVk
MjJhMzM1MzhjYWQxZDY4MGE4YTU5MzQuLmQ4YWU0MjllNDlhNzU4NWQ5NTdhMzA2MWZiOWFkYmIz
YTYxODliNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTY1LDkgKzY1LDYgQEAgY2xhc3Mg
V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTsKIAogY2xhc3MgQ1NTUGFyc2VyIHsKIHB1YmxpYzoKLQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGJvb2xlYW4gY29uc3RydWN0b3Igb25jZSBtb3ZlZCB0
byBDU1NQYXJzZXJNb2RlIGNvbXBsZXRlbHkuCi0gICAgQ1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFy
c2luZyk7CiAgICAgQ1NTUGFyc2VyKENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKIAog
ICAgIH5DU1NQYXJzZXIoKTsKQEAgLTc1LDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFy
c2VTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJl
ciA9IDAsIFN0eWxlUnVsZVJhbmdlTWFwKiBydWxlUmFuZ2VNYXAgPSAwKTsKICAgICBQYXNzUmVm
UHRyPENTU1J1bGU+IHBhcnNlUnVsZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IHBhcnNlS2V5ZnJhbWVSdWxlKENT
U1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVl
KFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9y
dGFudCwgYm9vbCBzdHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAg
ICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBj
b25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMy
JiBjb2xvciwgY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGlj
IGJvb2wgcGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1
bWVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFj
ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNo
ZWV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCmluZGV4IGI1ZWZiZDBiNWZiMjcyOTkw
MGM0Mjg3YzM2NTAyNzgyMzA5YTIwYzYuLjcxZjQyMGFhZDliNmQzYTY4MjhmYmZjNmZlZjA0Y2Q4
MGQyY2E5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaApAQCAtMzAsMTEgKzMwLDIy
IEBACiAjaWZuZGVmIENTU1BhcnNlck1vZGVfaAogI2RlZmluZSBDU1NQYXJzZXJNb2RlX2gKIAot
ZW51bSBDU1NQYXJzZXJNb2RlIHsKLSAgICBDU1NRdWlya3NNb2RlLAorZW51bSB7CisgICAgQ1NT
UXVpcmtzTW9kZSA9IDEsCiAgICAgQ1NTU3RyaWN0TW9kZSwKICAgICAvLyBTVkcgc2hvdWxkIGFs
d2F5cyBiZSBpbiBzdHJpY3QgbW9kZS4gRm9yIFNWRyBhdHRyaWJ1dGVzLCB0aGUgcnVsZXMgZGlm
ZmVyIHRvIHN0cmljdCBzb21ldGltZXMuCiAgICAgU1ZHQXR0cmlidXRlTW9kZQogfTsKK3R5cGVk
ZWYgdW5zaWduZWQgY2hhciBDU1NQYXJzZXJNb2RlOworCitpbmxpbmUgQ1NTUGFyc2VyTW9kZSB0
b0NTU1BhcnNlck1vZGUoYm9vbCBpblN0cmljdE1vZGUpCit7CisgICAgcmV0dXJuIGluU3RyaWN0
TW9kZSA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlOworfQorCitpbmxpbmUgQ1NTUGFy
c2VyTW9kZSBpbkNTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQYXJzZXJNb2RlPihjc3NQYXJzZXJNb2RlKTsKK30K
IAogI2VuZGlmIC8vIENTU1BhcnNlck1vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKaW5kZXggNmY5ZWU0
MTBiYThiOTc1NzhiNGViMjc2NzU0YTBiNjE2YzlkYWM4Ny4uMWZiMjA2YjYyYTQ0NzEzOWMxNWZk
MDlkNjRkNmI4OWE4ODc5YjM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCkBAIC02OSwxMyArNjksMTMg
QEAgcHVibGljOgogICAgIGJvb2wgaXNSZWdpb25SdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IFdFQktJVF9SRUdJT05fUlVMRTsgfQogICAgIGJvb2wgaXNJbXBvcnRSdWxlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IElNUE9SVF9SVUxFOyB9CiAKLSAgICBib29sIHVzZVN0cmljdFBh
cnNpbmcoKSBjb25zdAorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAocGFyZW50UnVsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dFJ1bGUoKS0+dXNlU3RyaWN0UGFyc2luZygpOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudFJ1
bGUoKS0+Y3NzUGFyc2VyTW9kZSgpOwogICAgICAgICBpZiAocGFyZW50U3R5bGVTaGVldCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxlU2hlZXQoKS0+dXNlU3RyaWN0UGFyc2luZygp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZVNo
ZWV0KCktPmNzc1BhcnNlck1vZGUoKTsKKyAgICAgICAgcmV0dXJuIENTU1N0cmljdE1vZGU7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMGZmNjJmOTZhMDBm
ZjVmMDY0ZjZjNzM0MGEwZGI3M2FjODZjMDhlYS4uNGRjMzJlMjkwNzAxYjQyZjRhNWNiNjRlYzZk
OTkyMzMzMzYxNjRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtNzcs
NyArNzcsNyBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUs
IGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYgogICAgIDogU3R5bGVTaGVldChwYXJl
bnROb2RlLCBocmVmLCBiYXNlVVJMKQogICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCiAgICAgLCBt
X2xvYWRDb21wbGV0ZWQoZmFsc2UpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoZmFsc2UpCisgICAg
LCBtX2Nzc1BhcnNlck1vZGUoQ1NTUXVpcmtzTW9kZSkKICAgICAsIG1faXNVc2VyU3R5bGVTaGVl
dChmYWxzZSkKICAgICAsIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKHRydWUpCiAg
ICAgLCBtX2RpZExvYWRFcnJvck9jY3VyKGZhbHNlKQpAQCAtODksNyArODksNyBAQCBDU1NTdHls
ZVNoZWV0OjpDU1NTdHlsZVNoZWV0KENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSwgY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdAogICAgIDogU3R5bGVTaGVldChvd25lclJ1bGUsIGhyZWYsIGJhc2VV
UkwpCiAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxz
ZSkKLSAgICAsIG1fc3RyaWN0UGFyc2luZyghb3duZXJSdWxlIHx8IG93bmVyUnVsZS0+dXNlU3Ry
aWN0UGFyc2luZygpKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKG93bmVyUnVsZSA/IG93bmVyUnVs
ZS0+Y3NzUGFyc2VyTW9kZSgpIDogaW5DU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpKQogICAg
ICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkKICAgICAsIG1fZGlkTG9h
ZEVycm9yT2NjdXIoZmFsc2UpCiB7CkBAIC0yMDQsNyArMjA0LDcgQEAgdW5zaWduZWQgQ1NTU3R5
bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGlu
ZGV4LCBFeGMKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQotICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NTUGFy
c2VyIHAoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZSA9IHAucGFy
c2VSdWxlKHRoaXMsIHJ1bGVTdHJpbmcpOwogCiAgICAgaWYgKCFydWxlKSB7CkBAIC0zMzEsMTUg
KzMzMSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIENTU1N0eWxlU2hlZXQ6OmRldGVybWluZU5h
bWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeAogICAgIHJldHVybiBudWxsQXRvbTsg
Ly8gQXNzdW1lIHdlIHdvbid0IG1hdGNoIGFueSBuYW1lc3BhY2VzLgogfQogCi1ib29sIENTU1N0
eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBib29sIHN0cmljdCkK
K2Jvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJpbmcsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKLSAgICByZXR1cm4gcGFyc2VTdHJpbmdBdExp
bmUoc3RyaW5nLCBzdHJpY3QsIDApOworICAgIHJldHVybiBwYXJzZVN0cmluZ0F0TGluZShzdHJp
bmcsIGNzc1BhcnNlck1vZGUsIDApOwogfQogCi1ib29sIENTU1N0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nQXRMaW5lKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCwgaW50IHN0YXJ0TGlu
ZU51bWJlcikKK2Jvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgaW50IHN0YXJ0TGluZU51
bWJlcikKIHsKLSAgICBzZXRTdHJpY3RQYXJzaW5nKHN0cmljdCk7Ci0gICAgQ1NTUGFyc2VyIHAo
c3RyaWN0KTsKKyAgICBzZXRDU1NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpOworICAgIENTU1Bh
cnNlciBwKGNzc1BhcnNlck1vZGUpOwogICAgIHAucGFyc2VTaGVldCh0aGlzLCBzdHJpbmcsIHN0
YXJ0TGluZU51bWJlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaAppbmRleCA5YjkyNDZhNDlkOGI1ZDRhNWI0MzI4ZWNjM2E3YWU0MjU4OTRmMzFlLi42
NDQ1YmZmZjUyYzBiMTk0MzQ1NDMxMTgyOTFhYzZkYjIyNDlmNjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgQ1NTU3R5bGVTaGVldF9o
CiAjZGVmaW5lIENTU1N0eWxlU2hlZXRfaAogCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgog
I2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsOSAr
ODYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVl
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2Vy
TW9kZSA9IENTU1N0cmljdE1vZGUpOwogCi0gICAgYm9vbCBwYXJzZVN0cmluZ0F0TGluZShjb25z
dCBTdHJpbmcmLCBib29sIHN0cmljdCwgaW50IHN0YXJ0TGluZU51bWJlcik7CisgICAgYm9vbCBw
YXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlLCBpbnQgc3RhcnRM
aW5lTnVtYmVyKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKTsKIApAQCAtMTA0LDgg
KzEwNSw4IEBAIHB1YmxpYzoKICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdDsKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+Jik7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3RyaWN0UGFy
c2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldENTU1BhcnNlck1vZGUoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKSB7IG1fY3NzUGFyc2VyTW9kZSA9IGNzc1BhcnNlck1vZGU7IH0KKyAg
ICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nzc1BhcnNl
ck1vZGU7IH0KIAogICAgIHZvaWQgc2V0SXNVc2VyU3R5bGVTaGVldChib29sIGIpIHsgbV9pc1Vz
ZXJTdHlsZVNoZWV0ID0gYjsgfQogICAgIGJvb2wgaXNVc2VyU3R5bGVTaGVldCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNVc2VyU3R5bGVTaGVldDsgfQpAQCAtMTUxLDcgKzE1Miw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fbWVkaWFRdWVyaWVzOwogCiAgICAgYm9vbCBt
X2xvYWRDb21wbGV0ZWQgOiAxOwotICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKKyAgICBD
U1NQYXJzZXJNb2RlIG1fY3NzUGFyc2VyTW9kZTsKICAgICBib29sIG1faXNVc2VyU3R5bGVTaGVl
dCA6IDE7CiAgICAgYm9vbCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlciA6IDE7CiAg
ICAgYm9vbCBtX2RpZExvYWRFcnJvck9jY3VyIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAK
aW5kZXggYjczNWU3Y2I3MzVjYmVhZWQ4ZGIwZDVlYjgwOGJjYmMyODMzNjY1ZC4uNzU5NTNkNWMz
NDYwYzYyZDA1ZDBlNWNjZDVkNzlmM2NiODllNmE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgU3RyaW5nIHBhcnNlTWVkaWFEZXNjcmlwdG9y
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0
IFN0cmluZyYgbWVkaWFTdHJpbmcpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAg
ICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogICAgIAogICAgIFZlY3RvcjxPd25Q
dHI8TWVkaWFRdWVyeT4gPiByZXN1bHQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbGlzdDsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0cmluZyYgbWVk
aWFTdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVyeVNldDo6YWRkKGNvbnN0IFN0cmluZyYgcXVlcnlT
dHJpbmcpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFy
c2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBhcnNlZFF1ZXJ5
ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZyk7CiAgICAgaWYgKCFwYXJzZWRR
dWVyeSAmJiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CkBAIC0xNTksNyArMTU5LDcgQEAgYm9v
bCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIAogYm9vbCBN
ZWRpYVF1ZXJ5U2V0OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZ1RvUmVtb3ZlKQog
ewotICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcihDU1NT
dHJpY3RNb2RlKTsKIAogICAgIE93blB0cjxNZWRpYVF1ZXJ5PiBwYXJzZWRRdWVyeSA9IHBhcnNl
ci5wYXJzZU1lZGlhUXVlcnkocXVlcnlTdHJpbmdUb1JlbW92ZSk7CiAgICAgaWYgKCFwYXJzZWRR
dWVyeSAmJiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAKaW5kZXggZjUwMjZlMDA4M2Y4MzQ2NzQ0ZjZjY2JjYjM5MTFjODMxYzhk
MGM0Yi4uOTZlZmE4MjE1M2FiODU4OTg3N2FjMGI2MDQ3MmZhZmM4MTkyNzRhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNDQsMjIgKzQ0LDIyIEBAIHN0YXRp
YyBQcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcCYgcHJvcGVydHlTZXRDU1NPTVdyYXBwZXJNYXAo
KQogICAgIHJldHVybiBwcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcEluc3RhbmNlOwogfQogCi1T
dHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KCkKLSAgICA6IG1fc3RyaWN0UGFyc2lu
ZyhmYWxzZSkKK1N0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQorICAgIDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpCiAg
ICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKIH0KIAogU3R5bGVQcm9wZXJ0eVNldDo6
U3R5bGVQcm9wZXJ0eVNldChjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQog
ICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcodHJ1
ZSkKKyAgICAsIG1fY3NzUGFyc2VyTW9kZShDU1NTdHJpY3RNb2RlKQogICAgICwgbV9oYXNDU1NP
TVdyYXBwZXIoZmFsc2UpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLnNocmlua1RvRml0KCk7CiB9CiAK
LVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHBy
b3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcpCi0gICAg
OiBtX3N0cmljdFBhcnNpbmcodXNlU3RyaWN0UGFyc2luZykKK1N0eWxlUHJvcGVydHlTZXQ6OlN0
eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIGludCBudW1Qcm9w
ZXJ0aWVzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisgICAgOiBtX2Nzc1BhcnNlck1v
ZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGJlbG9uZ3MgaW4gQ1NTUGFyc2VyLgpAQCAtNDkzLDcgKzQ5
Myw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wCiAKICAgICAvLyBXaGVuIHJlcGxhY2luZyBh
biBleGlzdGluZyBwcm9wZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhl
IGVuZCBvZiB0aGUgbGlzdC4KICAgICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRpb24s
IGFuZCBNU0lFIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgotICAgIHJldHVy
biBDU1NQYXJzZXI6OnBhcnNlVmFsdWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFu
dCwgdXNlU3RyaWN0UGFyc2luZygpLCBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgcmV0dXJuIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBj
c3NQYXJzZXJNb2RlKCksIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIAogdm9pZCBTdHlsZVByb3Bl
cnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
cHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQpAQCAtNTM4LDcgKzUzOCw3IEBAIGJvb2wgU3R5bGVQ
cm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBi
b29sIGltcG9ydGFuCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnBhcnNlRGVjbGFyYXRpb24oY29u
c3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCkKIHsKICAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKLSAgICBDU1NQYXJzZXIgcGFyc2Vy
KHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcihjc3NQYXJzZXJNb2Rl
KCkpOwogICAgIHBhcnNlci5wYXJzZURlY2xhcmF0aW9uKHRoaXMsIHN0eWxlRGVjbGFyYXRpb24s
IDAsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmgKaW5kZXggOTg4Y2U2MjI1NDRhYjFhNDY1ZjBlN2U3MzgxNjliNmI4Y2I1ZDllNS4uOTM0
MzQ4OTRjM2IxNDk1OTMxN2UzNGZjNzlkNmQwNGY4OGVmZWU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFN0eWxlUHJvcGVy
dHlTZXRfaAogI2RlZmluZSBTdHlsZVByb3BlcnR5U2V0X2gKIAorI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC00MCwxMyArNDEsMTMg
QEAgY2xhc3MgU3R5bGVQcm9wZXJ0eVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUHJvcGVy
dHlTZXQ+IHsKIHB1YmxpYzoKICAgICB+U3R5bGVQcm9wZXJ0eVNldCgpOwogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
ID0gQ1NTUXVpcmtzTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5
bGVQcm9wZXJ0eVNldCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0
eVNldChjc3NQYXJzZXJNb2RlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51
bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFyc2luZykKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQocHJvcGVydGllcywg
bnVtUHJvcGVydGllcywgdXNlU3RyaWN0UGFyc2luZykpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlUHJvcGVydHlTZXQocHJvcGVydGllcywgbnVtUHJvcGVydGllcywgY3NzUGFy
c2VyTW9kZSkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBjcmVhdGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBA
IC04Niw4ICs4Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWVyZ2UoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCosIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGljdCA9IHRydWUpOwogCi0gICAgdm9p
ZCBzZXRTdHJpY3RQYXJzaW5nKGJvb2wgYikgeyBtX3N0cmljdFBhcnNpbmcgPSBiOyB9Ci0gICAg
Ym9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9
CisgICAgdm9pZCBzZXRDU1NQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkg
eyBtX2Nzc1BhcnNlck1vZGUgPSBjc3NQYXJzZXJNb2RlOyB9CisgICAgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jc3NQYXJzZXJNb2RlOyB9CiAKICAgICB2
b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgQ1NTU3R5bGVT
aGVldCogY29udGV4dFN0eWxlU2hlZXQpOwogCkBAIC0xMTIsOSArMTEzLDkgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzQ1NTT01XcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDU1NPTVdyYXBw
ZXI7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVByb3BlcnR5U2V0KCk7CisgICAgU3R5bGVQcm9w
ZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IFZlY3Rv
cjxDU1NQcm9wZXJ0eT4mKTsKLSAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5
KiwgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFyc2luZyk7CisgICAgU3R5bGVQ
cm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSosIGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQYXJz
ZXJNb2RlKTsKIAogICAgIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCkBAIC0xMzQsNyAr
MTM1LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0
aWVzOwogCi0gICAgYm9vbCBtX3N0cmljdFBhcnNpbmcgOiAxOworICAgIENTU1BhcnNlck1vZGUg
bV9jc3NQYXJzZXJNb2RlOwogICAgIG11dGFibGUgYm9vbCBtX2hhc0NTU09NV3JhcHBlciA6IDE7
CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldC5oCmluZGV4IDA3OTg3OWNiZDhkZDZjNWY5MmI3NjI0OWVlYzRm
MDRmNDlhOTYwMGYuLjVlYjVmYzQzZGYwMDEyOTY5NDRhYjAxNDllYjFiMDNlZGExYzI4NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBTdHlsZVNo
ZWV0X2gKICNkZWZpbmUgU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2Fk
aW5nKCkgPSAwOwogCi0gICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYs
IGJvb2wgc3RyaWN0ID0gdHJ1ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhj
b25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSkgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXgg
ZTM5OTg2ZTVkYzVlZDRiM2NjOGFjMDg1OTYxYWZiZmNjNjg3MDVkMS4uODQzODQ3OWM4N2JiYmM5
ZDY2ODI4ZWVjMmVmODA2MjE1YTQyYjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYktpdENTU0tl
eWZyYW1lc1J1bGU6OmFwcGVuZChXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIHJ1bGUpCiAKIHZvaWQg
V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUpCiB7
Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChj
c3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IG5ld1J1
bGUgPSBwLnBhcnNlS2V5ZnJhbWVSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAgICAg
aWYgKG5ld1J1bGUpCiAgICAgICAgIGFwcGVuZChuZXdSdWxlLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggOWFlZWE3NzE1OGJiY2JiNmU3YmI1NzEwZmE4
ZTFiNjE1NjIzOWE2YS4uYWZlYmE3MWY4OWU5OTI4YjhmNGU1ZmE1MDQxYTYxMmM5ZmRmNGRlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
V2ViS2l0Q1NTTWF0cml4Ojp+V2ViS2l0Q1NTTWF0cml4KCkKIHZvaWQgV2ViS2l0Q1NTTWF0cml4
OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFyYXRpb24gPSBTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0
eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzdHJpbmcs
IHRydWUsIHRydWUsIDApKSB7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZURl
Y2xhcmF0aW9uLmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc3RyaW5nLCB0cnVl
LCBDU1NTdHJpY3RNb2RlLCAwKSkgewogICAgICAgICAvLyBDb252ZXJ0IHRvIFRyYW5zZm9ybU9w
ZXJhdGlvbnMuIFRoaXMgY2FuIGZhaWwgaWYgYSBwcm9wZXJ0eQogICAgICAgICAvLyByZXF1aXJl
cyBzdHlsZSAoaS5lLiwgcGFyYW0gdXNlcyAnZW1zJyBvciAnZXhzJykKICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
OTZmOWNjOTlmYzYxYmZhNjY4ZGIzNDU2YTY1YjZkYmQ3OThkMzI4Yy4uOWNhZjMwMzhkNjY5NGU5
MzNiODYwMTBjMGI4MjdiZWNiYjliMTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0x
MDY4LDggKzEwNjgsOCBAQCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gRG9jdW1lbnQ6Ondl
YmtpdEdldEZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIE1ha2UgYSBzbG93ZXIgY2hlY2sgZm9yIGludmFsaWQgZmxvdyBuYW1lCi0g
ICAgQ1NTUGFyc2VyIHAodHJ1ZSk7Ci0gICAgaWYgKCFwLnBhcnNlRmxvd1RocmVhZChmbG93TmFt
ZSwgdGhpcykpCisgICAgQ1NTUGFyc2VyIHBhcnNlcihDU1NTdHJpY3RNb2RlKTsKKyAgICBpZiAo
IXBhcnNlci5wYXJzZUZsb3dUaHJlYWQoZmxvd05hbWUsIHRoaXMpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpKQpAQCAt
MjY4Niw3ICsyNjg2LDcgQEAgQ1NTU3R5bGVTaGVldCogRG9jdW1lbnQ6OnBhZ2VVc2VyU2hlZXQo
KQogICAgIC8vIFBhcnNlIHRoZSBzaGVldCBhbmQgY2FjaGUgaXQuCiAgICAgbV9wYWdlVXNlclNo
ZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKHRoaXMsIHNldHRpbmdzKCktPnVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oKSk7CiAgICAgbV9wYWdlVXNlclNoZWV0LT5zZXRJc1VzZXJTdHls
ZVNoZWV0KHRydWUpOwotICAgIG1fcGFnZVVzZXJTaGVldC0+cGFyc2VTdHJpbmcodXNlclNoZWV0
VGV4dCwgIWluUXVpcmtzTW9kZSgpKTsKKyAgICBtX3BhZ2VVc2VyU2hlZXQtPnBhcnNlU3RyaW5n
KHVzZXJTaGVldFRleHQsIHRvQ1NTUGFyc2VyTW9kZSghaW5RdWlya3NNb2RlKCkpKTsKICAgICBy
ZXR1cm4gbV9wYWdlVXNlclNoZWV0LmdldCgpOwogfQogCkBAIC0yNzMyLDcgKzI3MzIsNyBAQCBj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIERvY3VtZW50OjpwYWdlR3JvdXBV
c2VyU2hlZXRzKCkgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYXJzZWRTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZUlubGluZShjb25zdF9jYXN0PERvY3VtZW50Kj4odGhpcyksIHNoZWV0LT51cmwoKSk7CiAgICAg
ICAgICAgICBwYXJzZWRTaGVldC0+c2V0SXNVc2VyU3R5bGVTaGVldChzaGVldC0+bGV2ZWwoKSA9
PSBVc2VyU3R5bGVVc2VyTGV2ZWwpOwotICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnBhcnNlU3Ry
aW5nKHNoZWV0LT5zb3VyY2UoKSwgIWluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgICAgIHBhcnNl
ZFNoZWV0LT5wYXJzZVN0cmluZyhzaGVldC0+c291cmNlKCksIHRvQ1NTUGFyc2VyTW9kZSghaW5R
dWlya3NNb2RlKCkpKTsKICAgICAgICAgICAgIGlmICghbV9wYWdlR3JvdXBVc2VyU2hlZXRzKQog
ICAgICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0cyA9IGFkb3B0UHRyKG5ldyBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4pOwogICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2Vy
U2hlZXRzLT5hcHBlbmQocGFyc2VkU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBiMjliZmI0YTVlMjMwNWM1YTFjNmU4ZWIxZDI0YTliZGI4ZGRjYTA5Li5lMmYxYmU5
MjE4NzMyMGJjOTNjZTc4NjJmMDQ2Mjc0YjcwMDk5OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBib29sIEVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rv
cihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAKICAg
ICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Ci0gICAg
Q1NTUGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAodG9DU1NQYXJzZXJN
b2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3Q7
CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yLCBkb2N1bWVudCgpLCBzZWxlY3Rvckxpc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKaW5kZXggZDMy
OTgxZjljMWY3MmMxNDkyNTgyNGI0ODY4Yzg2YzBhZjVkOTNlYS4uNTg0YzZjZjFmYzZiY2M3MGE2
YzViNTEwZDQ0MjdjOTMyYTlmZTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFN0eWxlUHJvcGVydHlTZXQqIEVsZW1l
bnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZShTdHlsZWRFbGVtZW50KiBlbGVtZW50
CiAgICAgaWYgKCFtX2lubGluZVN0eWxlRGVjbCkgewogICAgICAgICBBU1NFUlQoZWxlbWVudC0+
aXNTdHlsZWRFbGVtZW50KCkpOwogICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IFN0eWxlUHJv
cGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0
UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCkt
PmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1BhcnNl
ck1vZGUodG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIG1faW5s
aW5lU3R5bGVEZWNsLmdldCgpOwogfQpAQCAtNjYsNyArNjYsNyBAQCBTdHlsZVByb3BlcnR5U2V0
KiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKFN0eWxlZEVs
ZW1lbnQqCiB7CiAgICAgaWYgKG1faW5saW5lU3R5bGVEZWNsICYmICFtX2lubGluZVN0eWxlRGVj
bC0+aGFzQ1NTT01XcmFwcGVyKCkpIHsKICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBtX2lu
bGluZVN0eWxlRGVjbC0+Y29weSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3Ry
aWN0UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1Bh
cnNlck1vZGUodG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG1faW5s
aW5lU3R5bGVEZWNsLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gZW5zdXJlSW5saW5lU3R5bGUo
ZWxlbWVudCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgRWxlbWVudEF0dHJpYnV0ZURhdGE6OnVw
ZGF0ZUlubGluZVN0eWxlQXZvaWRpbmdNdXRhdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtCiAgICAg
ICAgIG1faW5saW5lU3R5bGVEZWNsLmNsZWFyKCk7CiAgICAgaWYgKCFtX2lubGluZVN0eWxlRGVj
bCkgewogICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0
ZSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhlbGVtZW50
LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgp
KTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1BhcnNlck1vZGUodG9DU1NQYXJz
ZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+
aW5RdWlya3NNb2RlKCkpKTsKICAgICB9CiAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnBhcnNlRGVj
bGFyYXRpb24odGV4dCwgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IDUzNDBjYjRlMjQ2MmI4NmI1MGEyZTVmNjgxNjk5NDIyYTNkZTJh
M2YuLjY4MzE5MTQ5Y2Y3MmI2OGViYzk5OGY1Y2NhZTRmMzA2NjJlNTE2ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTE2NjMsNyArMTY2Myw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gTm9kZTo6cXVl
cnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudCgp
LT5pblF1aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJzaW5nKTsKKyAgICBD
U1NQYXJzZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwogCiAgICAgQ1NTU2Vs
ZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3Rv
cnMsIGRvY3VtZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKQEAgLTE2OTAsNyArMTY5MCw3IEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBi
b29sIHN0cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Ci0gICAgQ1NT
UGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAodG9DU1NQYXJzZXJNb2Rl
KHN0cmljdFBhcnNpbmcpKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlz
dDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgpLCBxdWVyeVNlbGVj
dG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
CmluZGV4IDhjYmQyYTJmYzVkYjYwMTcwYmI4Njc5Y2U3ZGYyYjJlZGM2MjQ1OWIuLjAxODAwNGJm
NWQxY2NjM2IzYjJlNmQ0NjQ5ZmVmNGI3ZWZjODE4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBLVVJMJiBiYXMKIAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIHNoZWV0KQogewotICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNo
ZWV0LCB0cnVlKTsKKyAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldCwgQ1NTU3RyaWN0TW9k
ZSk7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92
ZUNsaWVudCh0aGlzKTsKICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
RWxlbWVudC5jcHAKaW5kZXggYzEyOTRlNzQzZjRiYWIyYmFhNDBjYWZiNGIyMTFlM2MwNDVhNWQ3
Yy4uMzczYzAzOWU5YTRmODA2MzhiZTBmODkwYTY1Y2M5ZDU1ZmJjNzA1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlRWxlbWVudC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFN0eWxlRWxlbWVu
dDo6Y3JlYXRlU2hlZXQoRWxlbWVudCogZSwgaW50IHN0YXJ0TGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiB0ZQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZFBlbmRpbmdTaGVldCgpOwogICAgICAg
ICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoZSwgU3RyaW5nKCksIEtVUkwoKSwgZG9jdW1lbnQtPmlucHV0RW5jb2Rpbmco
KSk7Ci0gICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCAhZG9jdW1l
bnQtPmluUXVpcmtzTW9kZSgpLCBzdGFydExpbmVOdW1iZXIpOworICAgICAgICAgICAgbV9zaGVl
dC0+cGFyc2VTdHJpbmdBdExpbmUodGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFkb2N1bWVudC0+aW5R
dWlya3NNb2RlKCkpLCBzdGFydExpbmVOdW1iZXIpOwogICAgICAgICAgICAgbV9zaGVldC0+c2V0
TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dC0+c2V0VGl0bGUoZS0+dGl0bGUoKSk7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZGI1N2U0MDM5YzIxODBhYjgyODFm
NTFjMGE3ZmE5NmNjZTYyZDViYS4uOWQ3OTU1MTIxNWVmZmQ2NGE2N2M4NTBkYThiNmM5YjRlYzcz
YjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTExMjEsNyArMTEyMSw3
IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3Qg
RWxlbWVudCogc291cmNlRWxlbWVudCkKIAogICAgIFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0
eWxlID0gZW5zdXJlQXR0cmlidXRlRGF0YSgpLT5lbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhp
cyk7CiAgICAgaW5saW5lU3R5bGUtPmNvcHlQcm9wZXJ0aWVzRnJvbSgqc291cmNlLT5pbmxpbmVT
dHlsZSgpKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhzb3VyY2UtPmlubGlu
ZVN0eWxlKCktPnVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgaW5saW5lU3R5bGUtPnNldENTU1Bh
cnNlck1vZGUoc291cmNlLT5pbmxpbmVTdHlsZSgpLT5jc3NQYXJzZXJNb2RlKCkpOwogCiAgICAg
c2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKHNvdXJjZS0+aXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggZDNlZjhhZjU3
Nzk0ZDU1OGZkMDE3MDdiZWI5ZDg0N2I5ZDVmMzg2Ny4uMjcyYTYwOTUzOThhZTRjM2UzYTA0MzJl
NjJhNWQ0MDRhYjliNGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCiAKICNp
bmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBi
YXNlVVJMLAogI2VuZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hlZXQtPnNoZWV0VGV4
dChlbmZvcmNlTUlNRVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3NoZWV0LT5wYXJzZVN0
cmluZyhzaGVldFRleHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5n
KHNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIC8vIElm
IHdlJ3JlIGxvYWRpbmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1FIHR5
cGUgaXMgbm90CiAgICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0byBhdCBsZWFzdCBz
dGFydCB3aXRoIGEgc3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOGIyNjU3NDc0OWE3
NzU3MTY2OWJmZmJjMTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdlZjY0ZTM4NTc4NWY1
NDdlZTdmMGEyYjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4OTYsNyBAQCBTdHJp
bmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVh
dGUoKTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VN
b2RlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSghbV91c2VzQ1NTQ29t
cGF0aWJpbGl0eVBhcnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9u
dDogIik7CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDQyNGE1
ZmE4NmRmNGMxOGRjYTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFlYThlNTdkMTg0MDE0ZmU3Yjcz
YWQ1ZDFkMjE4NWIzZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBDb250ZW50U2Vs
ZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGlvblBvaW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHBh
cnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwogICAgIHBh
cnNlci5wYXJzZVNlbGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwgaW5zZXJ0aW9uUG9p
bnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNWYWxpZFNlbGVjdG9y
ID0gQ29udGVudFNlbGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2Jk
MzEwMGIyZjVmMjk3YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRlZWJlYWVmMmU3OTQ1
YzQwNzE4ZWU0OWYyM2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIFN0cmluZyBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lkIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBtX3BhZ2VT
dHlsZVNoZWV0LT5jbGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VTdHJp
bmcodGV4dCwgbV9wYWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBtX3Bh
Z2VTdHlsZVNoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT5jc3NQYXJz
ZXJNb2RlKCkpOwogICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CiAg
ICAgbV9pbnNwZWN0b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBjZWVjMDFjYzlm
OWJlNDM2MGQxNTRlNjk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZiZTYxNWE2NmQ3Zjg1
NDAwOTNlOWU1YjQ4OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5o
CkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAjZGVmaW5l
IFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGlmICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAg
ICAgIG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7Ci0gICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcy0+c2V0U3Ry
aWN0UGFyc2luZyhmYWxzZSk7CisgICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVy
dGllcy0+c2V0Q1NTUGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0KCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCAwYzY3YWM4OTli
NGIwMDk4ZTM4MGZhMmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMzOGM3ZWNlZmQwNTlm
ZTkzNzRjMDU3NjJkODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50OjpTVkdGb250
RmFjZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAg
c3R5bGVEZWNsYXJhdGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAgICBzdHlsZURlY2xh
cmF0aW9uLT5zZXRDU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VS
dWxlLT5zZXREZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YzQyN2QxZWQ2ZDNlNDVj
ODM3NTBlMzc1ZDRmYTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4
NjRhOWYxNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00
MjEsNyArNDIxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0
OjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgc3R5
bGUtPnNldENTU1BhcnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgaW50IHByb3BlcnR5
SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShh
dHRyLT5uYW1lKCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52
YWx1ZSgpKTsKICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAxN2MwZWNiZTk2NzMyZTY3OGRl
OGNkYWMzNzExMDY1MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdjZWRkMWJlMGEwMjI3
YTI0ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0
L3htbCI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcgJnN0
cmluZywgYm9vbCBzdHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmco
Y29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBDU1NTdHJpY3RNb2Rl
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7CiAgICAgdm9pZCBjaGVja0xv
YWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4
c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5k
ZXggNzUyMWI2ZDRkM2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1YjBjYy4uNDkzNmRlMWE1MzYz
MGVhZjY5ZDM1NTc0YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIFhTTFN0eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4g
ZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wgWFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCitib29sIFhTTFN0eWxl
U2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlKQog
ewogICAgIC8vIFBhcnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8gYW4geG1sRG9jUHRyCiAgICAg
Y29uc3QgVUNoYXIgQk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0
LmNwcAppbmRleCA4YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2YwMGQ4YTk4Li42YmFm
MTc1ODFhNzcxNzJkMDYyNTM5M2I5M2ViZWQxNWU3ODdkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldFF0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRl
ciogWFNMU3R5bGVTaGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBkb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotYm9vbCBYU0xTdHlsZVNoZWV0Ojpw
YXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkKK2Jvb2wgWFNMU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUpCiB7CiAg
ICAgLy8gRklYTUU6IEZpeCBRWG1sUXVlcnkgc28gdGhhdCBpdCBhbGxvd3MgY29tcGlsaW5nIHRo
ZSBzdHlsZXNoZWV0IGJlZm9yZSBzZXR0aW5nIHRoZSBkb2N1bWVudAogICAgIC8vIHRvIGJlIHRy
YW5zZm9ybWVkLiBUaGlzIHdheSB3ZSBjb3VsZCBub3Qgb25seSBjaGVjayBpZiB0aGUgc3R5bGVz
aGVldCBpcyBjb3JyZWN0IGJlZm9yZSB1c2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDgwZmJkZjFkOWVlOTZmM2I0MzVjYTJlMTg1NzJlNDNj
MjFiNjQwZWIuLmIxYjAyMzM3ZDE1NWM3NmUyY2FlMzJkMWI0ZmM3Zjk3ZjU1NjMyZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAt
MTc5LDcgKzE4MCw3IEBAIHZvaWQgV2ViRG9jdW1lbnQ6Omluc2VydFVzZXJTdHlsZVNoZWV0KGNv
bnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSwgVXNlclN0eWxlTGV2CiAKICAgICBSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gcGFyc2VkU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoZG9jdW1lbnQu
Z2V0KCkpOwogICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0KGxldmVsID09IFVz
ZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgcGFyc2VkU2hlZXQtPnBhcnNlU3RyaW5nKHNvdXJjZUNv
ZGUsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0
cmluZyhzb3VyY2VDb2RlLCB0b0NTU1BhcnNlck1vZGUoIWRvY3VtZW50LT5pblF1aXJrc01vZGUo
KSkpOwogICAgIGRvY3VtZW50LT5hZGRVc2VyU2hlZXQocGFyc2VkU2hlZXQucmVsZWFzZSgpKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134450</attachid>
            <date>2012-03-28 17:06:17 -0700</date>
            <delta_ts>2012-03-28 21:57:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82335-20120328170616.patch</filename>
            <type>text/plain</type>
            <size>47498</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZmYxMGY4NzA0M2Q2
MzliMjA5NWJiNDBkN2Y4YTZiODVkMmIwOC4uNzBhZjM4NzE5Y2ZiZDMzMzQyOWE2M2NlNDY1Yzkz
NGZkOTU2MTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wMy0yOCAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJz
ZXJNb2RlIGluIGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MjMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSB0aGUgbmV3IENTU1BhcnNlck1vZGUgZW51bSB0byBtb3Jl
IGNsYXNzZXMuIFNWRyBjbGFzc2VzIG1ha2UgdXNlIG9mIFNWR0F0dHJpYnV0ZU1vZGUgZm9yIENT
UyBwYXJzaW5nIGFscmVhZHkuCisgICAgICAgIEJ1dCBTVkdBdHRyaWJ1dGVNb2RlIGRvZXMgbm90
IGRpZmZlciBmcm9tIENTU1F1aXJrc01vZGUgYXQgdGhlIG1vbWVudC4gVGhpcyB3aWxsIGNoYW5n
ZSB3aXRoIGEgZm9sbG93dXAgcGF0Y2ggb24gYnVnIDQ2MTEyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIEV2ZXJ5dGhpbmcgZ2V0cyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAg
ICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1
bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOiBNb3ZlIHByaXZh
dGUgZnVuY3Rpb25zIGF3YXkgZnJvbSBzdHJpY3QgYm9vbGVhbiBhbmQgbWFrZSB1c2Ugb2YgQ1NT
UGFyc2VyTW9kZSBpbnN0ZWFkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTaW1wbGVMZW5ndGhW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRl
Rm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUpOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDogUmVtb3ZlZCBjb25zdHJ1Y3RvciB3aXRoIGJvb2xl
YW4gYXJndW1lbnQuIFdlIGp1c3QgdXNlIHRoZSBDU1NQYXJzZXJNb2RlIGVudW0gbm93LgorICAg
ICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyTW9kZS5oOgorICAgICAg
ICAodG9DU1NQYXJzZXJNb2RlKTogTmV3IGhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGJvb2xl
YW4gdG8gQ1NTUGFyc2VyTW9kZS4KKyAgICAgICAgKGlzU3RyaWN0UGFyc2VyTW9kZSk6IEhlbHBl
ciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBDU1NTdHJpY3RNb2Rl
LgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlOjpj
c3NQYXJzZXJNb2RlKTogUmVuYW1lZCB1c2VTdHJpY3RQYXJzaW5nIHRvIGNzc1BhcnNlck1vZGUg
c2luY2UgaXQgcmV0dXJucyBDU1NQYXJzZXJNb2RlIGluc3RlYWQgb2YgYSBib29sZWFuIG5vdy4K
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6Omluc2VydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cGFyc2VT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmdBdExp
bmUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgIChDU1NTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnNldENTU1BhcnNlck1vZGUp
OiBSZW5hbWVkIHNldFN0cmljdFBhcnNpbmcgdG8gc2V0Q1NTUGFyc2VyTW9kZSBzaW5jZSB3ZSBz
ZXQgYW4gZW51bSBub3cuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpjc3NQYXJz
ZXJNb2RlKTogUmVuYW1lZCB1c2VTdHJpY3RQYXJzaW5nIHRvIGNzc1BhcnNlck1vZGUgc2luY2Ug
aXQgcmV0dXJucyBDU1NQYXJzZXJNb2RlIGluc3RlYWQgb2YgYSBib29sZWFuIG5vdy4KKyAgICAg
ICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6
OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpyZW1vdmUpOgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OlN0eWxl
UHJvcGVydHlTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cGFyc2VEZWNsYXJh
dGlvbik6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDogVXNlIHVuc2lnbmVkIG1l
bWJlciB2YXJpYWJsZXMgdG8gc3RvcmUgdGhlIHBhcnNlciBtb2RlLiAgCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6c2V0Q1NTUGFyc2VyTW9kZSk6IFJlbmFtZWQgc2V0U3RyaWN0UGFyc2luZyB0
byBzZXRDU1NQYXJzZXJNb2RlIHNpbmNlIHdlIGdldCBhbiBlbnVtIG5vdy4gVGhpcyBnZXRzIGNv
bnZlcnRlZCB0byB1bnNpZ25lZCBpbnRlcm5hbGx5LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6Y3NzUGFyc2VyTW9kZSk6IFJlbmFtZWQgdXNlU3RyaWN0UGFyc2luZyB0byBj
c3NQYXJzZXJNb2RlIHNpbmNlIGl0IHJldHVybnMgQ1NTUGFyc2VyTW9kZSBpbnN0ZWFkIG9mIGEg
Ym9vbGVhbiBub3cuCisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAgKiBjc3Mv
U3R5bGVTaGVldC5oOgorICAgICAgICAoU3R5bGVTaGVldCk6CisgICAgICAgICogY3NzL1dlYktp
dENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdEdldEZsb3dCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VVc2Vy
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVJ
bmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5z
dXJlTXV0YWJsZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1
dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRpb24pOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgICogZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OnBhcnNlU3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL1N0eWxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6OmNyZWF0ZVNoZWV0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1l
bnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5r
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0
eWxlU2hlZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZv
bnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjpDb250ZW50U2VsZWN0b3JRdWVy
eSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVwYXJzZVN0eWxlU2hlZXQpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlRWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3R5
bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQ
cmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0Lmg6Cisg
ICAgICAgIChYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhz
bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgor
ICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNM
U3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorCiAyMDEyLTAzLTI4ICBBcnZpZCBOaWxzc29uICA8
YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUGx1bWIgdGhyb3VnaCBH
cmFwaGljc0xheWVyOjpjb250ZW50c09wYXF1ZSgpIHRvIExheWVyVGlsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNWYwYWNiYzk0YTViODQwOTBiYmQ4Mjc3ZTgwYzI2NjVhOGI2ZTEw
OC4uMjJlMzllNTAxZWViMTAzYjJkNTdhZjI0NmFmNDRiZDA4N2U1YTMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMy0yOCAgRGlyayBTY2h1bHpl
ICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBDU1NQYXJzZXJNb2RlIGlu
IGFsbCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjMzNQorCisgICAgICAgIFVzZSBDU1NQYXJzZXJNb2RlIGZvciBzZXR0aW5nIHRoZSBw
YXJzaW5nIG1vZGUgb24gcGFyc2VWYWx1ZS4KKworICAgICAgICAqIHNyYy9XZWJEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50OjppbnNlcnRVc2VyU3R5bGVTaGVldCk6
CisKIDIwMTItMDMtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5nIHZpYSBXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKaW5kZXgg
ZjE3YTE0MWU0YTMwZWY2NTgzZjkwNmNiMzc4YmE3YTllM2FlODFiZi4uZjZiMzIxODAzMDM3OTVk
YTllNDMyNTE4MDBjYzE3NmE1ZDVlNTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxl
LmNwcApAQCAtNjgsOCArNjgsOCBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjbwogICAgIGJvb2wg
Y3Jvc3NPcmlnaW5DU1MgPSBmYWxzZTsKICAgICBib29sIHZhbGlkTUlNRVR5cGUgPSBmYWxzZTsK
ICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7Ci0gICAgYm9v
bCBzdHJpY3QgPSAhcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpOwotICAgIGJv
b2wgZW5mb3JjZU1JTUVUeXBlID0gc3RyaWN0OworICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSA9IHBhcmVudCA/IHBhcmVudC0+Y3NzUGFyc2VyTW9kZSgpIDogQ1NTU3RyaWN0TW9kZTsK
KyAgICBib29sIGVuZm9yY2VNSU1FVHlwZSA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJN
b2RlKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJlbnQgPyBwYXJlbnQtPmZpbmREb2N1
bWVudCgpIDogMDsKICAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQtPnNldHRpbmdzKCktPm5lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzKCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBDU1NJbXBvcnRSdWxl
OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVS
TCwgY28KICNlbmRpZgogCiAgICAgU3RyaW5nIHNoZWV0VGV4dCA9IHNoZWV0LT5zaGVldFRleHQo
ZW5mb3JjZU1JTUVUeXBlLCAmdmFsaWRNSU1FVHlwZSk7Ci0gICAgbV9zdHlsZVNoZWV0LT5wYXJz
ZVN0cmluZyhzaGVldFRleHQsIHN0cmljdCk7CisgICAgbV9zdHlsZVNoZWV0LT5wYXJzZVN0cmlu
ZyhzaGVldFRleHQsIGNzc1BhcnNlck1vZGUpOwogCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoYmFzZVVSTCkpCiAgICAgICAgIGNy
b3NzT3JpZ2luQ1NTID0gdHJ1ZTsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDU1NJbXBvcnRSdWxl
OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVS
TCwgY28KICAgICBpZiAoY3Jvc3NPcmlnaW5DU1MgJiYgIXZhbGlkTUlNRVR5cGUgJiYgIW1fc3R5
bGVTaGVldC0+aGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKCkpCiAgICAgICAgIG1fc3R5
bGVTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSh0aGlzLCBocmVmLCBiYXNlVVJMLCBjaGFy
c2V0KTsKIAotICAgIGlmIChzdHJpY3QgJiYgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MpIHsKKyAg
ICBpZiAoaXNTdHJpY3RQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUpICYmIG5lZWRzU2l0ZVNwZWNp
ZmljUXVpcmtzKSB7CiAgICAgICAgIC8vIFdvcmsgYXJvdW5kIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzNTA+LgogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgc2xhc2hLSFRNTEZpeGVzRG90Q3NzLCAoIi9LSFRNTEZpeGVzLmNzcyIp
KTsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIG1lZGlhV2lraUtI
VE1MRml4ZXNTdHlsZVNoZWV0LCAoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3Jr
IGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBt
YXJnaW4tbGVmdDogMDsgfVxuXG4iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTWVkaWFSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCmlu
ZGV4IGZlNzY1MGZhMzQ0ZGViZTBhMGQ5YTVmYWI0NTIxZTJiMzk1YjMxY2QuLjVlZDVlZmMyMjVm
Y2RlNmQwOGVjZjRkZTE4NzhjNjY2NzRhMDNmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1
bGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHVuc2lnbmVkIENTU01lZGlhUnVsZTo6aW5zZXJ0UnVs
ZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25DCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7
CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBSZWZQdHI8Q1NTUnVsZT4g
bmV3UnVsZSA9IHAucGFyc2VSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAgICAgaWYg
KCFuZXdSdWxlKSB7CiAgICAgICAgIC8vIFNZTlRBWF9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lm
aWVkIHJ1bGUgaGFzIGEgc3ludGF4IGVycm9yIGFuZCBpcyB1bnBhcnNhYmxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAppbmRleCAzMTdlZTA4ZDlmMzQ4NmJjYjNlY2Q5NzMyNjM0ZDRkN2VmYWQz
OWQxLi5jNGI3NzBjMTA5ZmVkYTRkN2NhMGI4MzE1YmE3OGY5ZDJhZGEzMDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTgxLDM4ICsxODEsNiBAQCBpbmxpbmUgdm9pZCBDU1NQYXJz
ZXI6OmVuc3VyZUNTU1ZhbHVlUG9vbCgpCiAgICAgICAgIG1fY3NzVmFsdWVQb29sID0gQ1NTVmFs
dWVQb29sOjpjcmVhdGUoKTsKIH0KIAotQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQ
YXJzaW5nKQotICAgIDogbV9jc3NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcgPyBDU1NTdHJpY3RN
b2RlIDogQ1NTUXVpcmtzTW9kZSkKLSAgICAsIG1faW1wb3J0YW50KGZhbHNlKQotICAgICwgbV9p
ZCgwKQotICAgICwgbV9zdHlsZVNoZWV0KDApCi0gICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkK
LSAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQotICAgICwgbV9pbXBsaWNpdFNob3J0aGFuZChm
YWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNlKQotICAgICwgbV9oYWRT
eW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQotICAgICwgbV9kZWZhdWx0TmFtZXNwYWNl
KHN0YXJBdG9tKQotICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRpb24oZmFsc2UpCi0gICAg
LCBtX3NlbGVjdG9yTGlzdFJhbmdlKDAsIDApCi0gICAgLCBtX3J1bGVCb2R5UmFuZ2UoMCwgMCkK
LSAgICAsIG1fcHJvcGVydHlSYW5nZShVSU5UX01BWCwgVUlOVF9NQVgpCi0gICAgLCBtX3J1bGVS
YW5nZU1hcCgwKQotICAgICwgbV9jdXJyZW50UnVsZURhdGEoMCkKLSAgICAsIG1fcGFyc2luZ01v
ZGUoTm9ybWFsTW9kZSkKLSAgICAsIG1fY3VycmVudENoYXJhY3RlcigwKQotICAgICwgbV90b2tl
bigwKQotICAgICwgbV9saW5lTnVtYmVyKDApCi0gICAgLCBtX2xhc3RTZWxlY3RvckxpbmVOdW1i
ZXIoMCkKLSAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVlKQotICAgICwgbV9hbGxvd05hbWVz
cGFjZURlY2xhcmF0aW9ucyh0cnVlKQotewotI2lmIFlZREVCVUcgPiAwCi0gICAgICAgIGNzc3l5
ZGVidWcgPSAxOwotI2VuZGlmCi0gICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YTo6aW5pdCgp
OwotfQotCi0KIENTU1BhcnNlcjo6Q1NTUGFyc2VyKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKICAgICA6IG1fY3NzUGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKQogICAgICwgbV9pbXBvcnRh
bnQoZmFsc2UpCkBAIC0zNTQsOCArMzIyLDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ29sb3JQ
cm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFyc2VD
b2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5
bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZUNvbG9yVmFsdWUo
U3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CisgICAgYm9vbCBzdHJpY3QgPSBp
c1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWlzQ29sb3JQcm9wZXJ0eUlEKHBy
b3BlcnR5SWQpKQpAQCAtNDQwLDkgKzQwOSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1w
bGVMZW5ndGhQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVnYXRpdgog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3Bl
cnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHls
ZVNoZWV0KQorc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0
KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnM7
CisgICAgYm9vbCBzdHJpY3QgPSBpc1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgp
CkBAIC05NjYsMjAgKzkzNiwyMCBAQCBzdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1ZShTdHls
ZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbgogUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyaW5nLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAg
ICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZHVtbXlTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZSgpOwotICAgIGlmICghcGFyc2VWYWx1ZShkdW1teVN0eWxlLmdldCgpLCBDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHksIHN0cmluZywgZmFsc2UsIGZhbHNlLCBjb250ZXh0U3R5bGVTaGVldCkp
CisgICAgaWYgKCFwYXJzZVZhbHVlKGR1bW15U3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rm9udEZh
bWlseSwgc3RyaW5nLCBmYWxzZSwgQ1NTUXVpcmtzTW9kZSwgY29udGV4dFN0eWxlU2hlZXQpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NWYWx1
ZUxpc3Q+KGR1bW15U3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFt
aWx5KSk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
aW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQp
Citib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlv
biwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCkKIHsKLSAgICBpZiAocGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlvbiwgcHJv
cGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQor
ICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBz
dHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4dFN0eWxlU2hlZXQpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBw
cm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVTaGVldCkp
CisgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5n
LCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9w
ZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CisgICAgQ1NTUGFyc2Vy
IHBhcnNlcihjc3NQYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWUoZGVj
bGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVl
dCk7CiB9CiAKQEAgLTEwMTYsNyArOTg2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
UkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlm
IChmYXN0UGFyc2VDb2xvcihjb2xvciwgc3RyaW5nLCBzdHJpY3QpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNl
cihDU1NTdHJpY3RNb2RlKTsKIAogICAgIC8vIEluIGNhc2UgdGhlIGZhc3QtcGF0aCBwYXJzZXIg
ZGlkbid0IHVuZGVyc3RhbmQgdGhlIGNvbG9yLCB0cnkgdGhlIGZ1bGwgcGFyc2VyLgogICAgIGlm
ICghcGFyc2VyLnBhcnNlQ29sb3Ioc3RyaW5nKSkKQEAgLTkwOTIsNyArOTA2Miw3IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHNlbGVjdG9yCiAgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5hZG9wdFNlbGVj
dG9yVmVjdG9yKCpzZWxlY3RvcnMpOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1
ZXMpCiAgICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICAgICAgcnVs
ZS0+c3R5bGVSdWxlKCktPnNldFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1f
cGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIGluU3Ry
aWN0TW9kZSgpKSk7CisgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZXRQcm9wZXJ0aWVzKFN0
eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNl
ZFByb3BlcnRpZXMuc2l6ZSgpLCBtX2Nzc1BhcnNlck1vZGUpKTsKICAgICAgICAgcmVzdWx0ID0g
cnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkp
OwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKQEAgLTkxMzAsNyArOTEwMCw3IEBAIENT
U1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgfQogICAgIH0K
ICAgICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVh
dGUobV9zdHlsZVNoZWV0KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5
U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKSwgaW5TdHJpY3RNb2RlKCkpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVz
KCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAgIG1fcGFy
c2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTkyMDEsNyArOTE3MSw3IEBAIENT
U1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFn
ZVNlbGVjdG9yKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZl
Y3Rvcik7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNy
ZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgp
LCBpblN0cmljdE1vZGUoKSkpOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVBy
b3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVs
ZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwog
ICAgIH0KQEAgLTkyNzksNyArOTI0OSw3IEBAIFdlYktpdENTU0tleWZyYW1lUnVsZSogQ1NTUGFy
c2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUoQ1NTUGFyc2VyVmFsdWVMaXN0KiBrZXlzKQogCiAgICAg
UmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4ga2V5ZnJhbWUgPSBXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwogICAgIGtleWZyYW1lLT5zZXRLZXlUZXh0KGtl
eVN0cmluZyk7Ci0gICAga2V5ZnJhbWUtPnNldERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6
ZSgpLCBpblN0cmljdE1vZGUoKSkpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKSwgbV9jc3NQYXJzZXJNb2RlKSk7CiAKICAgICBjbGVhclByb3BlcnRp
ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDFhZTY3MDM0YjQ1NDkzOGVkMjJhMzM1
MzhjYWQxZDY4MGE4YTU5MzQuLmQ4YWU0MjllNDlhNzU4NWQ5NTdhMzA2MWZiOWFkYmIzYTYxODli
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTY1LDkgKzY1LDYgQEAgY2xhc3MgV2ViS2l0
Q1NTS2V5ZnJhbWVzUnVsZTsKIAogY2xhc3MgQ1NTUGFyc2VyIHsKIHB1YmxpYzoKLQotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhlIGJvb2xlYW4gY29uc3RydWN0b3Igb25jZSBtb3ZlZCB0byBDU1NQ
YXJzZXJNb2RlIGNvbXBsZXRlbHkuCi0gICAgQ1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZyk7
CiAgICAgQ1NTUGFyc2VyKENTU1BhcnNlck1vZGUgPSBDU1NTdHJpY3RNb2RlKTsKIAogICAgIH5D
U1NQYXJzZXIoKTsKQEAgLTc1LDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VTaGVl
dChDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciA9IDAs
IFN0eWxlUnVsZVJhbmdlTWFwKiBydWxlUmFuZ2VNYXAgPSAwKTsKICAgICBQYXNzUmVmUHRyPENT
U1J1bGU+IHBhcnNlUnVsZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgUGFz
c1JlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IHBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxl
U2hlZXQqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwg
Ym9vbCBzdHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICBzdGF0
aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBjb25zdCBT
dHJpbmcmLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29u
dGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCop
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCmluZGV4IGI1ZWZiZDBiNWZiMjcyOTkwMGM0Mjg3
YzM2NTAyNzgyMzA5YTIwYzYuLjA2NjRjYWY1ZmRiYzcyMWY0YjU1YjZlMjViZWYxZTFiYWMxZmNi
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaApAQCAtMzcsNCArMzcsMTUgQEAgZW51
bSBDU1NQYXJzZXJNb2RlIHsKICAgICBTVkdBdHRyaWJ1dGVNb2RlCiB9OwogCitpbmxpbmUgQ1NT
UGFyc2VyTW9kZSB0b0NTU1BhcnNlck1vZGUoYm9vbCBpblN0cmljdE1vZGUpCit7CisgICAgcmV0
dXJuIGluU3RyaWN0TW9kZSA/IENTU1N0cmljdE1vZGUgOiBDU1NRdWlya3NNb2RlOworfQorCitp
bmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
KQoreworICAgIC8vIEZJWE1FOiBTVkcgcHJlc25ldGF0aW9uIGF0dHJpYnV0ZSB2YWx1ZXMgc2hv
dWxkIGJlIHBhcnNlZCBpbiBzdHJpY3QgbW9kZSBhcyB3ZWxsLgorICAgIHJldHVybiBjc3NQYXJz
ZXJNb2RlID09IENTU1N0cmljdE1vZGU7Cit9CisKICNlbmRpZiAvLyBDU1NQYXJzZXJNb2RlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUnVsZS5oCmluZGV4IDZmOWVlNDEwYmE4Yjk3NTc4YjRlYjI3Njc1NGEwYjYxNmM5
ZGFjODcuLjFmYjIwNmI2MmE0NDcxMzljMTVmZDA5ZDY0ZDZiODlhODg3OWIzNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1J1bGUuaApAQCAtNjksMTMgKzY5LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVnaW9u
UnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBXRUJLSVRfUkVHSU9OX1JVTEU7IH0KICAg
ICBib29sIGlzSW1wb3J0UnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBJTVBPUlRfUlVM
RTsgfQogCi0gICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QKKyAgICBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHBhcmVudFJ1bGUo
KSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnRSdWxlKCktPnVzZVN0cmljdFBhcnNpbmcoKTsK
KyAgICAgICAgICAgIHJldHVybiBwYXJlbnRSdWxlKCktPmNzc1BhcnNlck1vZGUoKTsKICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnRTdHls
ZVNoZWV0KCktPnVzZVN0cmljdFBhcnNpbmcoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICByZXR1cm4gcGFyZW50U3R5bGVTaGVldCgpLT5jc3NQYXJzZXJNb2RlKCk7CisgICAg
ICAgIHJldHVybiBDU1NTdHJpY3RNb2RlOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGFyZW50U3R5
bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDBmZjYyZjk2YTAwZmY1ZjA2NGY2YzczNDBhMGRiNzNhYzg2YzA4ZWEu
LjQ2ZWViOTk1NmVkY2FiOGVlNGNlMTlmNmIyMmRkODEyZmNmYjJhYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQ1NTU3R5bGVTaGVldDo6Q1NT
U3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtV
UkwmIGIKICAgICA6IFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgaHJlZiwgYmFzZVVSTCkKICAgICAs
IG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9sb2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwg
bV9zdHJpY3RQYXJzaW5nKGZhbHNlKQorICAgICwgbV9jc3NQYXJzZXJNb2RlKENTU1F1aXJrc01v
ZGUpCiAgICAgLCBtX2lzVXNlclN0eWxlU2hlZXQoZmFsc2UpCiAgICAgLCBtX2hhc1N5bnRhY3Rp
Y2FsbHlWYWxpZENTU0hlYWRlcih0cnVlKQogICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxz
ZSkKQEAgLTg5LDcgKzg5LDcgQEAgQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChDU1NJbXBv
cnRSdWxlKiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QKICAgICA6IFN0eWxl
U2hlZXQob3duZXJSdWxlLCBocmVmLCBiYXNlVVJMKQogICAgICwgbV9jaGFyc2V0KGNoYXJzZXQp
CiAgICAgLCBtX2xvYWRDb21wbGV0ZWQoZmFsc2UpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoIW93
bmVyUnVsZSB8fCBvd25lclJ1bGUtPnVzZVN0cmljdFBhcnNpbmcoKSkKKyAgICAsIG1fY3NzUGFy
c2VyTW9kZShvd25lclJ1bGUgPyBvd25lclJ1bGUtPmNzc1BhcnNlck1vZGUoKSA6IENTU1N0cmlj
dE1vZGUpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVlKQogICAg
ICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxzZSkKIHsKQEAgLTIwNCw3ICsyMDQsNyBAQCB1bnNp
Z25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywg
dW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsK
KyAgICBDU1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NSdWxlPiBy
dWxlID0gcC5wYXJzZVJ1bGUodGhpcywgcnVsZVN0cmluZyk7CiAKICAgICBpZiAoIXJ1bGUpIHsK
QEAgLTMzMSwxNSArMzMxLDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU3R5bGVTaGVldDo6
ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4CiAgICAgcmV0dXJu
IG51bGxBdG9tOyAvLyBBc3N1bWUgd2Ugd29uJ3QgbWF0Y2ggYW55IG5hbWVzcGFjZXMuCiB9CiAK
LWJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJpbmcsIGJv
b2wgc3RyaWN0KQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcg
JnN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewotICAgIHJldHVybiBwYXJz
ZVN0cmluZ0F0TGluZShzdHJpbmcsIHN0cmljdCwgMCk7CisgICAgcmV0dXJuIHBhcnNlU3RyaW5n
QXRMaW5lKHN0cmluZywgY3NzUGFyc2VyTW9kZSwgMCk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTaGVl
dDo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0LCBp
bnQgc3RhcnRMaW5lTnVtYmVyKQorYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZ0F0TGlu
ZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBpbnQg
c3RhcnRMaW5lTnVtYmVyKQogewotICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsKLSAgICBD
U1NQYXJzZXIgcChzdHJpY3QpOworICAgIHNldENTU1BhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7
CisgICAgQ1NTUGFyc2VyIHAoY3NzUGFyc2VyTW9kZSk7CiAgICAgcC5wYXJzZVNoZWV0KHRoaXMs
IHN0cmluZywgc3RhcnRMaW5lTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDliOTI0NmE0OWQ4YjVkNGE1YjQzMjhlY2MzYTdhZTQy
NTg5NGYzMWUuLjY0NDViZmZmNTJjMGIxOTQzNDU0MzExODI5MWFjNmRiMjI0OWY2OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBDU1NT
dHlsZVNoZWV0X2gKICNkZWZpbmUgQ1NTU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJDU1NQYXJz
ZXJNb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3R5bGVTaGVldENoYW5nZWQo
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sIHN0
cmljdCA9IHRydWUpOworICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcm
LCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSk7CiAKLSAgICBib29sIHBhcnNlU3RyaW5n
QXRMaW5lKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRMaW5lTnVtYmVyKTsK
KyAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUs
IGludCBzdGFydExpbmVOdW1iZXIpOwogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpOwog
CkBAIC0xMDQsOCArMTA1LDggQEAgcHVibGljOgogICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsg
bV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2VyTW9kZShD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gY3NzUGFyc2Vy
TW9kZTsgfQorICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3NzUGFyc2VyTW9kZTsgfQogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0KGJvb2wg
YikgeyBtX2lzVXNlclN0eWxlU2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHlsZVNoZWV0
KCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0OyB9CkBAIC0xNTEsNyArMTUyLDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJpZXM7CiAK
ICAgICBib29sIG1fbG9hZENvbXBsZXRlZCA6IDE7Ci0gICAgYm9vbCBtX3N0cmljdFBhcnNpbmcg
OiAxOworICAgIENTU1BhcnNlck1vZGUgbV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wgbV9pc1Vz
ZXJTdHlsZVNoZWV0IDogMTsKICAgICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVh
ZGVyIDogMTsKICAgICBib29sIG1fZGlkTG9hZEVycm9yT2NjdXIgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFMaXN0LmNwcAppbmRleCBiNzM1ZTdjYjczNWNiZWFlZDhkYjBkNWViODA4YmNiYzI4MzM2NjVk
Li43NTk1M2Q1YzM0NjBjNjJkMDVkMGU1Y2NkNWQ3OWYzY2I4OWU2YTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFMaXN0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VNZWRp
YURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGJvb2wgTWVkaWFRdWVyeVNldDo6
cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2Vy
KHRydWUpOworICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAgICAgCiAgICAg
VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5PiA+IHJlc3VsdDsKICAgICBWZWN0b3I8U3RyaW5nPiBs
aXN0OwpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2UoY29uc3Qg
U3RyaW5nJiBtZWRpYVN0cmluZykKIAogYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29uc3QgU3Ry
aW5nJiBxdWVyeVN0cmluZykKIHsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOworICAgIENT
U1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAKICAgICBPd25QdHI8TWVkaWFRdWVyeT4g
cGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nKTsKICAgICBp
ZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKQEAgLTE1OSw3ICsx
NTksNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5n
KQogCiBib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5n
VG9SZW1vdmUpCiB7Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIg
cGFyc2VyKENTU1N0cmljdE1vZGUpOwogCiAgICAgT3duUHRyPE1lZGlhUXVlcnk+IHBhcnNlZFF1
ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsKICAgICBp
ZiAoIXBhcnNlZFF1ZXJ5ICYmIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBmNTAyNmUwMDgzZjgzNDY3NDRmNmNjYmNi
MzkxMWM4MzFjOGQwYzRiLi44N2JjZTZhMjhiMDFjMWQ3MDFkNzBkMWMxZDdkNDZlMjliN2UwZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00NCwyNCArNDQs
MjUgQEAgc3RhdGljIFByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwJiBwcm9wZXJ0eVNldENTU09N
V3JhcHBlck1hcCgpCiAgICAgcmV0dXJuIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwSW5zdGFu
Y2U7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoKQotICAgIDogbV9z
dHJpY3RQYXJzaW5nKGZhbHNlKQotICAgICwgbV9oYXNDU1NPTVdyYXBwZXIoZmFsc2UpCitTdHls
ZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKKyAgICA6IG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQogeworICAgIHNldENTU1BhcnNlck1v
ZGUoY3NzUGFyc2VyTW9kZSk7CiB9CiAKIFN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlT
ZXQoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICA6IG1fcHJvcGVy
dGllcyhwcm9wZXJ0aWVzKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKHRydWUpCiAgICAgLCBtX2hh
c0NTU09NV3JhcHBlcihmYWxzZSkKIHsKKyAgICBzZXRDU1NQYXJzZXJNb2RlKENTU1N0cmljdE1v
ZGUpOwogICAgIG1fcHJvcGVydGllcy5zaHJpbmtUb0ZpdCgpOwogfQogCi1TdHlsZVByb3BlcnR5
U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQg
bnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQotICAgIDogbV9zdHJpY3RQYXJz
aW5nKHVzZVN0cmljdFBhcnNpbmcpCi0gICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKK1N0
eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3Bl
cnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCisg
ICAgOiBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsKKyAgICBzZXRDU1NQYXJzZXJNb2RlKGNz
c1BhcnNlck1vZGUpOworCiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgYmVsb25ncyBpbiBDU1NQ
YXJzZXIuCiAKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1Qcm9w
ZXJ0aWVzKTsKQEAgLTQ5Myw3ICs0OTQsNyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnNldFBy
b3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcAogCiAg
ICAgLy8gV2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMgbW92
ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgLy8gRmlyZWZveCBw
cmVzZXJ2ZXMgdGhlIHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhl
IGJlZ2lubmluZy4KLSAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHByb3Bl
cnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHVzZVN0cmljdFBhcnNpbmcoKSwgY29udGV4dFN0eWxl
U2hlZXQpOworICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlVmFsdWUodGhpcywgcHJvcGVydHlJ
RCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSgpLCBjb250ZXh0U3R5bGVTaGVldCk7
CiB9CiAKIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKQEAgLTUzOCw3
ICs1MzksNyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0
eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbgogdm9pZCBTdHlsZVByb3BlcnR5U2V0
OjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgQ1NTU3R5
bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNsZWFyKCk7
Ci0gICAgQ1NTUGFyc2VyIHBhcnNlcih1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNl
ciBwYXJzZXIoY3NzUGFyc2VyTW9kZSgpKTsKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlvbih0
aGlzLCBzdHlsZURlY2xhcmF0aW9uLCAwLCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IDk4OGNlNjIyNTQ0YWIxYTQ2NWYwZTdl
NzM4MTY5YjZiOGNiNWQ5ZTUuLmFiNWVlZmMxZjVjMzBmMTU1ODc2MWQwNzhkZWU0Y2I5MTUwNmE4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjEsNiArMjEsNyBA
QAogI2lmbmRlZiBTdHlsZVByb3BlcnR5U2V0X2gKICNkZWZpbmUgU3R5bGVQcm9wZXJ0eVNldF9o
CiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgpAQCAtNDAsMTMgKzQxLDEzIEBAIGNsYXNzIFN0eWxlUHJvcGVydHlTZXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxTdHlsZVByb3BlcnR5U2V0PiB7CiBwdWJsaWM6CiAgICAgflN0eWxlUHJvcGVy
dHlTZXQoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0
ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSA9IENTU1F1aXJrc01vZGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQoY3NzUGFyc2VyTW9kZSkpOwogICAgIH0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVy
dHkqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0IENT
U1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBy
b3BlcnR5U2V0KHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMsIHVzZVN0cmljdFBhcnNpbmcpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KHByb3BlcnRpZXMs
IG51bVByb3BlcnRpZXMsIGNzc1BhcnNlck1vZGUpKTsKICAgICB9CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY3JlYXRlKGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4m
IHByb3BlcnRpZXMpCiAgICAgewpAQCAtODYsOCArODcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IG1lcmdlKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxp
Y3QgPSB0cnVlKTsKIAotICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsgbV9zdHJp
Y3RQYXJzaW5nID0gYjsgfQotICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaWN0UGFyc2luZzsgfQorICAgIHZvaWQgc2V0Q1NTUGFyc2VyTW9kZShDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpIHsgbV9jc3NQYXJzZXJNb2RlID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oY3NzUGFyc2VyTW9kZSk7IH0KKyAgICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDU1NQYXJzZXJNb2RlPihtX2Nzc1Bh
cnNlck1vZGUpOyB9CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JiwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpOwogCkBAIC0xMTIs
OSArMTEzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ1NTT01XcmFwcGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDU1NPTVdyYXBwZXI7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVByb3BlcnR5
U2V0KCk7CisgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAgICBTdHlsZVBy
b3BlcnR5U2V0KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mKTsKLSAgICBTdHlsZVByb3BlcnR5
U2V0KGNvbnN0IENTU1Byb3BlcnR5KiwgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0
UGFyc2luZyk7CisgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSosIGludCBu
dW1Qcm9wZXJ0aWVzLCBDU1NQYXJzZXJNb2RlKTsKIAogICAgIHZvaWQgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogCkBAIC0xMzQsOCArMTM1LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgND4gbV9wcm9wZXJ0aWVzOwogCi0gICAgYm9vbCBtX3N0cmljdFBhcnNpbmcgOiAx
OwotICAgIG11dGFibGUgYm9vbCBtX2hhc0NTU09NV3JhcHBlciA6IDE7CisgICAgdW5zaWduZWQg
bV9jc3NQYXJzZXJNb2RlIDogMjsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzQ1NTT01XcmFw
cGVyIDogMTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCmluZGV4IDA3OTg3OWNiZDhkZDZjNWY5
MmI3NjI0OWVlYzRmMDRmNDlhOTYwMGYuLjVlYjVmYzQzZGYwMDEyOTY5NDRhYjAxNDllYjFiMDNl
ZGExYzI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI2lm
bmRlZiBTdHlsZVNoZWV0X2gKICNkZWZpbmUgU3R5bGVTaGVldF9oCiAKKyNpbmNsdWRlICJDU1NQ
YXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjIsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkaW5nKCkgPSAwOwogCi0gICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNv
bnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gdHJ1ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
YXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gQ1NTU3RyaWN0TW9kZSkg
PSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5
ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZS5jcHAKaW5kZXggZTM5OTg2ZTVkYzVlZDRiM2NjOGFjMDg1OTYxYWZiZmNjNjg3MDVkMS4uODQz
ODQ3OWM4N2JiYmM5ZDY2ODI4ZWVjMmVmODA2MjE1YTQyYjRkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IFdlYktpdENTU0tleWZyYW1lc1J1bGU6OmFwcGVuZChXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIHJ1
bGUpCiAKIHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJp
bmcmIHJ1bGUpCiB7Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBD
U1NQYXJzZXIgcChjc3NQYXJzZXJNb2RlKCkpOwogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGU+IG5ld1J1bGUgPSBwLnBhcnNlS2V5ZnJhbWVSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwg
cnVsZSk7CiAgICAgaWYgKG5ld1J1bGUpCiAgICAgICAgIGFwcGVuZChuZXdSdWxlLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggOWFlZWE3NzE1OGJiY2Ji
NmU3YmI1NzEwZmE4ZTFiNjE1NjIzOWE2YS4uYWZlYmE3MWY4OWU5OTI4YjhmNGU1ZmE1MDQxYTYx
MmM5ZmRmNGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgV2ViS2l0Q1NTTWF0cml4Ojp+V2ViS2l0Q1NTTWF0cml4KCkKIHZvaWQgV2Vi
S2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFy
YXRpb24gPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBpZiAoQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBzdHJpbmcsIHRydWUsIHRydWUsIDApKSB7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShzdHlsZURlY2xhcmF0aW9uLmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwg
c3RyaW5nLCB0cnVlLCBDU1NTdHJpY3RNb2RlLCAwKSkgewogICAgICAgICAvLyBDb252ZXJ0IHRv
IFRyYW5zZm9ybU9wZXJhdGlvbnMuIFRoaXMgY2FuIGZhaWwgaWYgYSBwcm9wZXJ0eQogICAgICAg
ICAvLyByZXF1aXJlcyBzdHlsZSAoaS5lLiwgcGFyYW0gdXNlcyAnZW1zJyBvciAnZXhzJykKICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggOTZmOWNjOTlmYzYxYmZhNjY4ZGIzNDU2YTY1YjZkYmQ3OThkMzI4Yy4uOWNh
ZjMwMzhkNjY5NGU5MzNiODYwMTBjMGI4MjdiZWNiYjliMTRlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0xMDY4LDggKzEwNjgsOCBAQCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4g
RG9jdW1lbnQ6OndlYmtpdEdldEZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIC8vIE1ha2UgYSBzbG93ZXIgY2hlY2sgZm9yIGludmFsaWQg
ZmxvdyBuYW1lCi0gICAgQ1NTUGFyc2VyIHAodHJ1ZSk7Ci0gICAgaWYgKCFwLnBhcnNlRmxvd1Ro
cmVhZChmbG93TmFtZSwgdGhpcykpCisgICAgQ1NTUGFyc2VyIHBhcnNlcihDU1NTdHJpY3RNb2Rl
KTsKKyAgICBpZiAoIXBhcnNlci5wYXJzZUZsb3dUaHJlYWQoZmxvd05hbWUsIHRoaXMpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0gcmVuZGVyZXIoKS0+
dmlldygpKQpAQCAtMjY4Niw3ICsyNjg2LDcgQEAgQ1NTU3R5bGVTaGVldCogRG9jdW1lbnQ6OnBh
Z2VVc2VyU2hlZXQoKQogICAgIC8vIFBhcnNlIHRoZSBzaGVldCBhbmQgY2FjaGUgaXQuCiAgICAg
bV9wYWdlVXNlclNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKHRoaXMsIHNldHRp
bmdzKCktPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSk7CiAgICAgbV9wYWdlVXNlclNoZWV0LT5z
ZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUpOwotICAgIG1fcGFnZVVzZXJTaGVldC0+cGFyc2VTdHJp
bmcodXNlclNoZWV0VGV4dCwgIWluUXVpcmtzTW9kZSgpKTsKKyAgICBtX3BhZ2VVc2VyU2hlZXQt
PnBhcnNlU3RyaW5nKHVzZXJTaGVldFRleHQsIHRvQ1NTUGFyc2VyTW9kZSghaW5RdWlya3NNb2Rl
KCkpKTsKICAgICByZXR1cm4gbV9wYWdlVXNlclNoZWV0LmdldCgpOwogfQogCkBAIC0yNzMyLDcg
KzI3MzIsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIERvY3VtZW50
OjpwYWdlR3JvdXBVc2VyU2hlZXRzKCkgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYXJzZWRTaGVldCA9IENTU1N0eWxl
U2hlZXQ6OmNyZWF0ZUlubGluZShjb25zdF9jYXN0PERvY3VtZW50Kj4odGhpcyksIHNoZWV0LT51
cmwoKSk7CiAgICAgICAgICAgICBwYXJzZWRTaGVldC0+c2V0SXNVc2VyU3R5bGVTaGVldChzaGVl
dC0+bGV2ZWwoKSA9PSBVc2VyU3R5bGVVc2VyTGV2ZWwpOwotICAgICAgICAgICAgcGFyc2VkU2hl
ZXQtPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSwgIWluUXVpcmtzTW9kZSgpKTsKKyAgICAg
ICAgICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzaGVldC0+c291cmNlKCksIHRvQ1NTUGFy
c2VyTW9kZSghaW5RdWlya3NNb2RlKCkpKTsKICAgICAgICAgICAgIGlmICghbV9wYWdlR3JvdXBV
c2VyU2hlZXRzKQogICAgICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0cyA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4pOwogICAgICAgICAgICAgbV9w
YWdlR3JvdXBVc2VyU2hlZXRzLT5hcHBlbmQocGFyc2VkU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCBiMjliZmI0YTVlMjMwNWM1YTFjNmU4ZWIxZDI0YTliZGI4ZGRj
YTA5Li5lMmYxYmU5MjE4NzMyMGJjOTNjZTc4NjJmMDQ2Mjc0YjcwMDk5OTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBib29sIEVsZW1lbnQ6OndlYmtpdE1h
dGNoZXNTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICB9CiAKICAgICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NN
b2RlKCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAo
dG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBz
ZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yLCBkb2N1bWVudCgpLCBz
ZWxlY3Rvckxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5j
cHAKaW5kZXggZDMyOTgxZjljMWY3MmMxNDkyNTgyNGI0ODY4Yzg2YzBhZjVkOTNlYS4uNTg0YzZj
ZjFmYzZiY2M3MGE2YzViNTEwZDQ0MjdjOTMyYTlmZTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFN0eWxlUHJvcGVy
dHlTZXQqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVJbmxpbmVTdHlsZShTdHlsZWRFbGVt
ZW50KiBlbGVtZW50CiAgICAgaWYgKCFtX2lubGluZVN0eWxlRGVjbCkgewogICAgICAgICBBU1NF
UlQoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpOwogICAgICAgICBtX2lubGluZVN0eWxlRGVj
bCA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVj
bC0+c2V0U3RyaWN0UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQt
PmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wt
PnNldENTU1BhcnNlck1vZGUodG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQo
KSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKICAgICB9CiAgICAg
cmV0dXJuIG1faW5saW5lU3R5bGVEZWNsLmdldCgpOwogfQpAQCAtNjYsNyArNjYsNyBAQCBTdHls
ZVByb3BlcnR5U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlTXV0YWJsZUlubGluZVN0
eWxlKFN0eWxlZEVsZW1lbnQqCiB7CiAgICAgaWYgKG1faW5saW5lU3R5bGVEZWNsICYmICFtX2lu
bGluZVN0eWxlRGVjbC0+aGFzQ1NTT01XcmFwcGVyKCkpIHsKICAgICAgICAgbV9pbmxpbmVTdHls
ZURlY2wgPSBtX2lubGluZVN0eWxlRGVjbC0+Y29weSgpOwotICAgICAgICBtX2lubGluZVN0eWxl
RGVjbC0+c2V0U3RyaWN0UGFyc2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1l
bnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURl
Y2wtPnNldENTU1BhcnNlck1vZGUodG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1l
bnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKICAgICAgICAg
cmV0dXJuIG1faW5saW5lU3R5bGVEZWNsLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gZW5zdXJl
SW5saW5lU3R5bGUoZWxlbWVudCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgRWxlbWVudEF0dHJp
YnV0ZURhdGE6OnVwZGF0ZUlubGluZVN0eWxlQXZvaWRpbmdNdXRhdGlvbihTdHlsZWRFbGVtZW50
KiBlbGVtCiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsLmNsZWFyKCk7CiAgICAgaWYgKCFtX2lu
bGluZVN0eWxlRGVjbCkgewogICAgICAgICBtX2lubGluZVN0eWxlRGVjbCA9IFN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFy
c2luZyhlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmlu
UXVpcmtzTW9kZSgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldENTU1BhcnNlck1v
ZGUodG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+
ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKICAgICB9CiAgICAgbV9pbmxpbmVTdHlsZURl
Y2wtPnBhcnNlRGVjbGFyYXRpb24odGV4dCwgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZWxlbWVudFNo
ZWV0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUzNDBjYjRlMjQ2MmI4NmI1MGEyZTVmNjgx
Njk5NDIyYTNkZTJhM2YuLjY4MzE5MTQ5Y2Y3MmI2OGViYzk5OGY1Y2NhZTRmMzA2NjJlNTE2ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTE2NjMsNyArMTY2Myw3IEBAIFBhc3NSZWZQdHI8RWxlbWVu
dD4gTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9u
Q29kZSYKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9
ICFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKTsKLSAgICBDU1NQYXJzZXIgcChzdHJpY3RQYXJz
aW5nKTsKKyAgICBDU1NQYXJzZXIgcCh0b0NTU1BhcnNlck1vZGUoc3RyaWN0UGFyc2luZykpOwog
CiAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxl
Y3RvcihzZWxlY3RvcnMsIGRvY3VtZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKQEAgLTE2OTAs
NyArMTY5MCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwo
Y29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2Rl
KCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0UGFyc2luZyk7CisgICAgQ1NTUGFyc2VyIHAodG9D
U1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVy
eVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgp
LCBxdWVyeVNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwCmluZGV4IDhjYmQyYTJmYzVkYjYwMTcwYmI4Njc5Y2U3ZGYyYjJlZGM2MjQ1
OWIuLjAxODAwNGJmNWQxY2NjM2IzYjJlNmQ0NjQ5ZmVmNGI3ZWZjODE4MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0yMzMsNyArMjMzLDcg
QEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXMKIAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OnBhcnNlU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNoZWV0KQogewotICAgIG1fc2hlZXQtPnBh
cnNlU3RyaW5nKHNoZWV0LCB0cnVlKTsKKyAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldCwg
Q1NTU3RyaWN0TW9kZSk7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVk
U2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKaW5kZXggYzEyOTRlNzQzZjRiYWIyYmFhNDBjYWZiNGIy
MTFlM2MwNDVhNWQ3Yy4uMzczYzAzOWU5YTRmODA2MzhiZTBmODkwYTY1Y2M5ZDU1ZmJjNzA1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lk
IFN0eWxlRWxlbWVudDo6Y3JlYXRlU2hlZXQoRWxlbWVudCogZSwgaW50IHN0YXJ0TGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiB0ZQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZFBlbmRpbmdTaGVl
dCgpOwogICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIG1fc2hlZXQg
PSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoZSwgU3RyaW5nKCksIEtVUkwoKSwgZG9jdW1lbnQtPmlu
cHV0RW5jb2RpbmcoKSk7Ci0gICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZ0F0TGluZSh0
ZXh0LCAhZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpLCBzdGFydExpbmVOdW1iZXIpOworICAgICAg
ICAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmdBdExpbmUodGV4dCwgdG9DU1NQYXJzZXJNb2RlKCFk
b2N1bWVudC0+aW5RdWlya3NNb2RlKCkpLCBzdGFydExpbmVOdW1iZXIpOwogICAgICAgICAgICAg
bV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlKCkpOwogICAgICAg
ICAgICAgbV9zaGVldC0+c2V0VGl0bGUoZS0+dGl0bGUoKSk7CiAgICAgICAgICAgICBtX2xvYWRp
bmcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZGI1N2U0MDM5
YzIxODBhYjgyODFmNTFjMGE3ZmE5NmNjZTYyZDViYS4uOWQ3OTU1MTIxNWVmZmQ2NGE2N2M4NTBk
YThiNmM5YjRlYzczYjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTEx
MjEsNyArMTEyMSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3Bl
cnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlRWxlbWVudCkKIAogICAgIFN0eWxlUHJvcGVydHlT
ZXQqIGlubGluZVN0eWxlID0gZW5zdXJlQXR0cmlidXRlRGF0YSgpLT5lbnN1cmVNdXRhYmxlSW5s
aW5lU3R5bGUodGhpcyk7CiAgICAgaW5saW5lU3R5bGUtPmNvcHlQcm9wZXJ0aWVzRnJvbSgqc291
cmNlLT5pbmxpbmVTdHlsZSgpKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhz
b3VyY2UtPmlubGluZVN0eWxlKCktPnVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgaW5saW5lU3R5
bGUtPnNldENTU1BhcnNlck1vZGUoc291cmNlLT5pbmxpbmVTdHlsZSgpLT5jc3NQYXJzZXJNb2Rl
KCkpOwogCiAgICAgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKHNvdXJjZS0+aXNTdHlsZUF0dHJp
YnV0ZVZhbGlkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5k
ZXggZDNlZjhhZjU3Nzk0ZDU1OGZkMDE3MDdiZWI5ZDg0N2I5ZDVmMzg2Ny4uMjcyYTYwOTUzOThh
ZTRjM2UzYTA0MzJlNjJhNWQ0MDRhYjliNGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiSFRNTExpbmtFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBLVVJMJiBiYXNlVVJMLAogI2VuZGlmCiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gc2hl
ZXQtPnNoZWV0VGV4dChlbmZvcmNlTUlNRVR5cGUsICZ2YWxpZE1JTUVUeXBlKTsKLSAgICBtX3No
ZWV0LT5wYXJzZVN0cmluZyhzaGVldFRleHQsIHN0cmljdFBhcnNpbmcpOworICAgIG1fc2hlZXQt
PnBhcnNlU3RyaW5nKHNoZWV0VGV4dCwgdG9DU1NQYXJzZXJNb2RlKHN0cmljdFBhcnNpbmcpKTsK
IAogICAgIC8vIElmIHdlJ3JlIGxvYWRpbmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5k
IHRoZSBNSU1FIHR5cGUgaXMgbm90CiAgICAgLy8gc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUyB0
byBhdCBsZWFzdCBzdGFydCB3aXRoIGEgc3ludGFjdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXgg
OGIyNjU3NDc0OWE3NzU3MTY2OWJmZmJjMTA3ZjYwODE5Y2E2OTk4MS4uZWI0YTk5ZGJlZTAwYTdl
ZjY0ZTM4NTc4NWY1NDdlZTdmMGEyYjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODk2LDcgKzE4
OTYsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9u
dCkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gdGVtcERlY2wgPSBTdHlsZVByb3Bl
cnR5U2V0OjpjcmVhdGUoKTsKLSAgICBDU1NQYXJzZXIgcGFyc2VyKCFtX3VzZXNDU1NDb21wYXRp
YmlsaXR5UGFyc2VNb2RlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHRvQ1NTUGFyc2VyTW9kZSgh
bV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSkpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0
aW9uVGV4dCgiZm9udDogIik7CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAK
aW5kZXggMDQyNGE1ZmE4NmRmNGMxOGRjYTFkZGEzNzIwNzhjNThlYmUzNTFlNi4uOTFlYThlNTdk
MTg0MDE0ZmU3YjczYWQ1ZDFkMjE4NWIzZDgxM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtNDQsNyArNDQsNyBA
QCBDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Q1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1v
ZGUpOwogICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKGluc2VydGlvblBvaW50LT5zZWxlY3QoKSwg
aW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0KTsKIAogICAgIG1faXNW
YWxpZFNlbGVjdG9yID0gQ29udGVudFNlbGVjdG9yUXVlcnk6OnZhbGlkYXRlU2VsZWN0b3JMaXN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKaW5kZXggY2JkMzEwMGIyZjVmMjk3YzJjODg0ZTIzNzU0ZjE5YTJkMDQ4NTg5My4uM2I5ZTRl
ZWJlYWVmMmU3OTQ1YzQwNzE4ZWU0OWYyM2ViYzViOWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzE5LDcgKzcxOSw3IEBA
IFN0cmluZyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpmaW5hbFVSTCgpIGNvbnN0CiB2b2lkIEluc3Bl
Y3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsK
ICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5jbGVhclJ1bGVzKCk7Ci0gICAgbV9wYWdlU3R5bGVTaGVl
dC0+cGFyc2VTdHJpbmcodGV4dCwgbV9wYWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygp
KTsKKyAgICBtX3BhZ2VTdHlsZVNoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNo
ZWV0LT5jc3NQYXJzZXJNb2RlKCkpOwogICAgIG1fcGFnZVN0eWxlU2hlZXQtPnN0eWxlU2hlZXRD
aGFuZ2VkKCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZXMuY2xlYXIoKTsKICAgICBmaXJlU3R5bGVT
aGVldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRl
eCBjZWVjMDFjYzlmOWJlNDM2MGQxNTRlNjk2NGFmZGYxMzJlZjc2MjBkLi41ZTAzZDcyZDcxOWZi
ZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRSYXJlRGF0YS5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIFNWR0VsZW1lbnRSYXJlRGF0
YV9oCiAjZGVmaW5lIFNWR0VsZW1lbnRSYXJlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJN
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC03OSw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMp
IHsKICAgICAgICAgICAgIG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzID0gU3R5bGVQcm9w
ZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBtX2FuaW1hdGVkU01JTFN0eWxlUHJvcGVy
dGllcy0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgICAgICAgICBtX2FuaW1hdGVkU01J
TFN0eWxlUHJvcGVydGllcy0+c2V0Q1NTUGFyc2VyTW9kZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMuZ2V0
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRl
eCAwYzY3YWM4OTliNGIwMDk4ZTM4MGZhMmExOWZkYzk3M2Y1NDBiMmY1Li5jNzRjOTE1YzAzOGMz
OGM3ZWNlZmQwNTlmZTkzNzRjMDU3NjJkODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBpbmxpbmUgU1ZHRm9udEZhY2VFbGVt
ZW50OjpTVkdGb250RmFjZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFjZVRhZykpOwogICAgIFJlZlB0cjxT
dHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7Ci0gICAgc3R5bGVEZWNsYXJhdGlvbi0+c2V0U3RyaWN0UGFyc2luZyh0cnVlKTsKKyAg
ICBzdHlsZURlY2xhcmF0aW9uLT5zZXRDU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOwogICAg
IG1fZm9udEZhY2VSdWxlLT5zZXREZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2Uo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA5YzQy
N2QxZWQ2ZDNlNDVjODM3NTBlMzc1ZDRmYTg4ZTBjOWFkMmZmLi5iYTFjM2ZlMjdiMzNlODJhNzhj
NzhkY2MzNjVlYzU4NjRhOWYxNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVk
RWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxz
ZSk7CisgICAgc3R5bGUtPnNldENTU1BhcnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAg
aW50IHByb3BlcnR5SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0
eUlELCBhdHRyLT52YWx1ZSgpKTsKICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCAxN2MwZWNi
ZTk2NzMyZTY3OGRlOGNkYWMzNzExMDY1MjJiZGVkZGY1Li4zZjcwMWNlMmZkYTY4YjJkOThjMDdj
ZWRkMWJlMGEwMjI3YTI0ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuICJ0ZXh0L3htbCI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhjb25z
dCBTdHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZU1vZGUgPSBD
U1NTdHJpY3RNb2RlKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCk7CiAgICAg
dm9pZCBjaGVja0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGli
eHNsdC5jcHAKaW5kZXggNzUyMWI2ZDRkM2I3NzY3M2UzNzA0NzBkMjllNjhjNzFlMzI1YjBjYy4u
NDkzNmRlMWE1MzYzMGVhZjY5ZDM1NTc0YzZjOGEzYzc3NjQ1YzQ0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIFhTTFN0eWxlU2hlZXQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkK
ICAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLWJvb2wg
WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wpCiti
b29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQ
YXJzZXJNb2RlKQogewogICAgIC8vIFBhcnNlIGluIGEgc2luZ2xlIGNodW5rIGludG8gYW4geG1s
RG9jUHRyCiAgICAgY29uc3QgVUNoYXIgQk9NID0gMHhGRUZGOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldFF0LmNwcAppbmRleCA4YTEwZmQ5MGI0NjIwYWFmZDA2OWVhNDhhN2FhZjRhN2Yw
MGQ4YTk4Li42YmFmMTc1ODFhNzcxNzJkMDYyNTM5M2I5M2ViZWQxNWU3ODdkMzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogWFNMU3R5bGVTaGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAg
IHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotYm9vbCBYU0xT
dHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCkKK2Jvb2wg
WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNl
ck1vZGUpCiB7CiAgICAgLy8gRklYTUU6IEZpeCBRWG1sUXVlcnkgc28gdGhhdCBpdCBhbGxvd3Mg
Y29tcGlsaW5nIHRoZSBzdHlsZXNoZWV0IGJlZm9yZSBzZXR0aW5nIHRoZSBkb2N1bWVudAogICAg
IC8vIHRvIGJlIHRyYW5zZm9ybWVkLiBUaGlzIHdheSB3ZSBjb3VsZCBub3Qgb25seSBjaGVjayBp
ZiB0aGUgc3R5bGVzaGVldCBpcyBjb3JyZWN0IGJlZm9yZSB1c2luZyBpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDgwZmJkZjFkOWVlOTZmM2I0MzVj
YTJlMTg1NzJlNDNjMjFiNjQwZWIuLmIxYjAyMzM3ZDE1NWM3NmUyY2FlMzJkMWI0ZmM3Zjk3ZjU1
NjMyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NT
dHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExv
YWRlci5oIgpAQCAtMTc5LDcgKzE4MCw3IEBAIHZvaWQgV2ViRG9jdW1lbnQ6Omluc2VydFVzZXJT
dHlsZVNoZWV0KGNvbnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSwgVXNlclN0eWxlTGV2CiAKICAg
ICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFyc2VkU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgIHBhcnNlZFNoZWV0LT5zZXRJc1VzZXJTdHlsZVNoZWV0
KGxldmVsID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgcGFyc2VkU2hlZXQtPnBhcnNlU3Ry
aW5nKHNvdXJjZUNvZGUsICFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworICAgIHBhcnNlZFNo
ZWV0LT5wYXJzZVN0cmluZyhzb3VyY2VDb2RlLCB0b0NTU1BhcnNlck1vZGUoIWRvY3VtZW50LT5p
blF1aXJrc01vZGUoKSkpOwogICAgIGRvY3VtZW50LT5hZGRVc2VyU2hlZXQocGFyc2VkU2hlZXQu
cmVsZWFzZSgpKTsKIH0KIAo=
</data>
<flag name="review"
          id="138708"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>